Brian M. Sturk -- Telengard Technologies Inc. 6B Farnum Ct. Hudson, NH 03051 (603)-880-0809 --- firstname.lastname@example.org SKILLS: Over 14 years of progressive experience in designing and writing software using C, C++, Python, Java, Perl, and assembler. Extensive experience interfacing computers with various types of hardware, reverse engineering, kernel development, real-time/embedded systems, firmware, device drivers, data acquisition, electro-mechanical control, protocol development, metrology, and system monitoring. Electrical Engineering degree. Designing and writing software for multiple platforms including kernel device drivers, file system drivers and NAS/SAN technologies, security related applications/drivers, networking protocols/applications, cross platform GUI applications, and scripting. Team player. Fits in very well with large groups, small teams, or even working alone and ramps up quickly. SOFTWARE AND PROGRAMMING: Programming : Kernel, embedded systems, RTOS, device drivers, file system drivers NAS/SAN, data acquisition, network/protocol, reverse engineering, cross platform GUI. Languages: C/C++, ASM, Python, Java, C#, Perl, Visual BASIC. Operating Systems: Linux, Win XP/2K/NT, OS X, FreeBSD, NetBSD, Solaris, QNX RTOS, Win 9x, MS-DOS Tools: gcc, gdb, Windbg, kgdb, kdb, dtrace, Subversion, Windows DDK, VMWare, VC++/.NET, XCode, CVS, Softice, ClearCase, ClearQuest, SWIG, PVCS, BoundsChecker, Installshield. Libraries: Qt, wxWidgets/wxPython, GTK+, SDL, OS X IO Kit, OSR FSDK, Swing/AWT, v2linux, OpenGL, MFC, DirectX, VMIC IoWorks (NT/VME), Objective Grid/Toolkit. HARDWARE AND EQUIPMENT: Electronics: DMMs, A/D oscilloscopes, frequency counters, power supplies, function generators, trackers, logic/serial/protocol/bus analyzers, ICE, JTAG, encoders, breadboarding. Computer/Hardware: x86, PowerPC, ARM9, MIPS, SPARCs, VME/PCI/PCI-X/ISA/PC-104 bus, serial (232,422,485). Motor control, digital I/O, data acquisition (DAQ), and timer/counter boards. Embedded and SBC computers. RELEVANT EXPERIENCE: 9/09-Present Facilis Technologies Consultant [Telengard Tech] Fedora/Suse Linux, OS X/Darwin, Win32 kernel, DDK, filter driver, wxWidgets, Windows 7 Updated Linux filesystem client to work with new PFM file system. Wrote a Windows kernel filter driver to add functionality to existing driver. Revamped their file migration tool to work with directories and files rather than projects. Also added logging, throttling of I/O, Linux support, bugfixes. 1/09-7/09 L3 Security Consultant [Telengard Tech] Embedded Linux, diagnostics, Fedora, Qt, Modbus, motion control, Serial RS-232, XML-RPC Worked on diagnostics for their next gen product MVT2, an x-ray scanning machine. Most work involved writing user-mode code to talk to proprietary hw/boards over RS-232/422 and Ethernet. Wrote diagnostic code for talking w/ MODBUS based Galil controller over Ethernet doing analog/digital I/O. Wrote diagnostic code for talking w/ serial RS-232 based Mforce motion controller. Supported Qt based graphical diagnostics inteface including adding new widgets and bugfixes. Wrote an application in Qt to test sending XML-RPC messages to the diagnostic server application. Wrote an application to verify QtScripts' syntax outside of diagnostics. Also wrote all Qt based scripts used by the diagnostics. In house Linux expert for DOS/Windows programmers transitioning into project. 8/06-11/08 Facilis Technologies Consultant [Telengard Tech] iSCSI, SCSI, Linux, kernel, OpenSUSE, OS X, file systems, FUSE, wxWidgets Modified iSCSI Enterprise Target to interface with their Terrablock storage product. This included extensive application level and driver level changes and ran on SuSE Linux. Ported their graphical client application to Linux using wxWidgets, also consolidated multiple source trees into one for all 3 supported platforms (Win32, OS X, Linux). Wrote an application to remount read-only volumes on OS X utilizing undocumented Darwin/xnu features. Wrote an application to hook arbitrary application binary functions on Windows. Wrote an application to resize Apple Partition Map (APM) partitions on OS X. Implemented a pass-thru file system filter driver on OS X utilizing the FUSE library. 12/07-8/07 Tour Andover Controls Consultant [Telengard Tech] Debian, Embedded Linux, IPSEC, kernel device drivers, Scratchbox, flexbackup, ARM 920t, AT91, JTAG Wrote a suite of applications to test protocol encryption performance under high load on embedded ARM computer. Utilized IPSEC for encryption. Fixed many bugs in the existing u-boot bootloader used on ARM9 target board. Migrated all application developers to Scratchbox for cross-compile builds and target board testing. Implemented a group-wide backup policy utilizing flexbackup. 9/06-12/07 Cylant/Reflex Security Consultant [Telengard Tech] Windows, kernel, DDK, hooking, rootkits, security, IDS/IPS, Linux, Debian, VMWare Ported driver portion of existing Cylant Secure HIDS product to Windows XP from Windows 2000. Driver hooked all kernel APIs and monitored for rootkits/malware in real time. Part of a larger suite of host based intrusion detection tools. Added many features and bug fixes to Reflex Security's intrusion prevention products on Debian. 3/06-9/06 Tour Andover Controls Consultant [Telengard Tech] Debian, Embedded Linux, busybox, u-boot, Scratchbox, kernel device drivers, ARM 920t, AT91, Serial 485, JTAG Ported 2.6.16 kernel and u-boot to custom AT91 SoC based board used for security and automation systems. Wrote a Linux kernel driver to handle 485 communications and utilize on chip DMA for on board USARTs. Implemented use of Debian and Scratchbox for cross compiles for ARM9 and i386 hosts. Added support for AT91RM9200 board to Open WinCE JTAG software. Utilized Laika plug-in and scripts to integrate the Eclipse IDE and Scratchbox for developers. Was in house Linux expert to group consisting of embedded system developers in US and Sweden. 5/06 to 5/06 JK Enterprises/Kobe Steel Consultant [Telengard Tech] Reverse engineering, x86, IDA PRO disassembler, VMWare, FlexLM Removed need for parallel port dongle for abandoned Visual BASIC application by reverse engineering and binary patching external DLL. Moved application platform to VMWare to work around bugs in edit controls on Japanese Windows OS install. No access to source to fix, only Visual BASIC binary. 12/05 to 4/06 Media Matters Consultant [Telengard Tech] FreeBSD, OS X, HW interfacing, python, wxPython Wrote a graphical application using wxPython for their SAMMA platform. This application ran on FreeBSD 6.0 and Apple OS X. Application communicated with a robotic tape archive machine and a separate monitoring application utilizing Twisted. 7/04 to 3/06 Siemens SNC LLC. Consultant [Telengard Tech through Electronic Search] Montavista Linux PRO/CGE, BSP, embedded, kernel device drivers, PowerPC 440GX, u -boot, UML, I2C, pthreads Wrote a Linux kernel mode driver for Siemens‟ MRC FPGA which handled monitoring boards‟ health status, also wrote related APIs and diagnostics. Wrote a Linux I2C kernel mode driver to interface with GPIO circuitry, also wrote related diagnostics. Wrote a Linux kernel mode driver for Siemens‟ ARC chip which handled card redundancy/failover. The driver was responsible for handling interrupts and notifying user mode subscribers of changes using RT signals. Wrote an API layer for the ARC driver. Applications utilized the library to read and write ARC registers and to subscribe for changes. The API utilized the pthreads library. Worked on the port of the u-boot bootloader to Siemens‟ next generation ATCA hardware platform that utilized the IBM PowerPC 440GX processor. Work involved bringing CPU up, POST tests, debugging HW issues, ETC Guardian-SE JTAG ICE issues, networking/PHYs, chip select init, bringing Linux PPC kernel up, startup scripts, diagnostic utilities, building file system images, GPL issues, and customization for Siemens. Debugged and fixed many kernel level bugs in the Montavista PRO kernel patched with UML. All bug fixes were submitted back to Montavista. Setup a simulation environment of Siemens‟ hiG Media Gateway carrier grade products using “User Mode Linux”. The simulation was used to bootstrap porting to Linux from VxWorks until the hardware was finished. Work involved patching Montavista‟s kernel, building and tuning the kernel, building and configuring file system images, writing scripts for running and controlling the simulation, and thoroughly documenting the process for Siemens employees new to Linux and groups overseas also using the simulation. Debugged and fixed bugs in the VxWorks to Linux emulation library (v2linux) including numerous thread and semaphore related bugs and long present race conditions in the application code. Worked on getting Montavista kernel up and running on IBM Ocotea 440GX reference board and their custom 440GX board. Added features to Siemens‟ Clock Control FPGA kernel mode driver. Was in house Linux expert to over 40 VxWorks developers. This included setting up, troubleshooting, and using Linux, developing on Linux, and design direction for applications, device drivers, and the PPC Linux kernel. Wrote scripts to automate building and populating file system images. Wrote applications to test network connectivity between remote boxes and apps running within UML simulation. Utilized iptables and port forwarding to limit the number of IP addresses used by the simulation. 1/05 to 5/05 JK Enterprises Consultant [Telengard Tech] Linux, python, wxWindows, serial RS-232, DAQ, CTB, pyserial Wrote an application using wxWindows to interface with a custom data acquisition system. The application communicated over a serial port and displayed visual representations of probe locations, encoder position, and other indicators. Also used the cross platform CTB serial library. Wrote a python application to interface to a custom data acquisition system. This was used as a prototype and for verifying integrity of acquired data. Utilized pyserial for data communications with unit. 5/04 to 7/04 –1/05 to 7/05 Facilis Technologies Consultant [Telengard Tech] Mac OS X, kernel, wxWindows, Xcode, SCSI, Linux, file systems, cross platform GUI, Win32, performance Wrote an application and library for OS X (implemented as Mach-O bundle) to handle mounting volumes and other operations communicating with Facilis‟ Terrablock device driver. Wrote an application using wxWindows to migrate and import clients‟ media files from other storage systems to a Terrablock system. Program was supported on OS X and Windows. Added features to their Terrablock software on multiple platforms including Mac OS 9, OS X, and Windows. Created a custom bootable recovery CD to restore Terrablock utilities and drive boot sector in the event of system failure. Utilized Linux for boot cd, bash shell scripts for menus, and standard tools like dd for recovery. Also supported full system restore over NFS. Added support for more precise timing and other features to the file system benchmark program IOMeter. Wrote an application using the Win32 API to generate very consistent loads on given file system. Application was made into a larger testing/benchmarking framework for Facilis‟ storage products. 3/04 to 6/04 EqualLogic Inc. Consultant [Telengard Tech through Optimal Eng.] NetBSD, Linux, embedded system, kernel device drivers, UNIX, kgdb, MIPS, SATA, python, cross -compile Coded new features for their iSCSI peer-storage array product. Work involved kernel disk drivers for NetBSD running on MIPS (sibyte) and x86 including user/kernel coding, cross compiling, and kernel debugging. Wrote kernel code to detect and fix specific hard drive issues (*). Debugged and fixed kernel panics and related bugs in pre-existing kernel code using kgdb. Wrote an application that could induce specific hard drive errors (*). Fully automated their drive qualification process using „C‟ programs, shell and python scripts, and an intranet site which allowed for managing entries, storing drive information, history, and searching using HTML/CGI. Wrote an application to search for arbitrary byte patterns on raw disks. Wrote an application to monitor S.M.A.R.T. hard disk counter data. Maintained and added new features to an application that searched for bad blocks on a drive and repaired them if possible. Program also monitored throughput and variance data for the drives. Wrote an application to exercise raw disks simulating a mail server and pseudo file system. 11/02 to 3/04 Axiam Inc. Consultant [Telengard Tech] QNX 4.25/6.X, RTOS, Linux, Java/Swing, DAQ, A/D boards, Digital I/O boards, Port I/O, DMA, Serial 232, ncurses Coded new features and maintained their metrology software, GMS (geometry measurement system), which interfaces with various boards/hardware (LVDT, encoders, motors) to compute the roundness and straightness of multiple precision parts. This included both the GUI and low-level components. Re-wrote their entire system software to work with their new custom ISA data acquisition (“Orchid”) boards. Previous version used several “off the shelf” boards. Also root caused many hardware issues with boards. Wrote software (GUI app and kernel module) to test their proprietary data acquisition boards. Goal was to give field technicians a bootable floppy to test units. Written for Linux and used ncurses. Proposed detailed design for migration from legacy platform to real-time/embedded Linux to allow for interoperating with other technologies customers desired including networking and databases. Built prototype GUI demonstrating these features using Java Swing. 4/03 to 3/04 Pinnacle Systems. Consultant [Telengard Tech] VC++/NET, C#, Qt, MFC, COM/DCOM, Winsock, NT Services, FTP protocol, XML, SQL, VB, WMI, multithreading Designed and wrote an FTP server and client following the FTP RFC. Server was implemented as an NT service. Requirements were high performance, multi-threaded sessions, 64 bit REST support, encryption, and site specific commands for various status and control operations including suspending/aborting/resuming individual sessions. Used by CNN for interfacing with Pinnacle‟s Media Gateway software. Added new features and maintained their broadcast archiving/storage product which was used to handle all file operations with customer's media assets (video/audio) including copying, deleting, import/export, and transcoding from DV25 to MPEG1 format. The software exposed a DCOM interface that allowed 3rd party software from CNN, Time Warner, etc to submit jobs. Fixed many synchronization/threading issues in the code, including race conditions and deadlocks. Also added new features including PAL support, file importing, failover, job re-ordering/priorities, and VB GUI enhancements. Designed and wrote an application to gather information about a system‟s configuration and verify the machine‟s state. Application was written using the Qt toolkit and utilized XML for the “oracles” which held information about what to acquire from the system and the allowable value(s) to find. Machines could be inquired over a network allowing a technician to verify many machines at once and from a single location. Wrote an application to interface with Adrienne time code boards using C# and .NET. Allowed for synching system time with external clock via card. Also wrote configuration GUI/systray applet in C#. 4/00 to 4/03 Avid Technologies Consultant [New Boston Systems/Telengard Tech] Linux/OS X/Solaris Kernel, Win32 DDK/Internals, File Systems, SAN, SCSI, Protocol, OSR, ClearCase, Perl, Python Coded new features and bug fixes/maintenance in kernel mode drivers to support Unity product. Unity is a networked file system that supports large amounts of high-speed storage used for streaming audio and video. The application suite consisted of three parts. 1. The file-manager which was a dedicated computer running Windows NT Server handling requests from clients, storing all file metadata, and containing administration software. The software to handle requests was implemented as an NT service with threads running at „real time‟ priority. 2. The client software that consisted of the kernel mode drivers and ran on WinNT, Win2K, Macintosh, Solaris, and Linux. 3. Hardware – JBOD, SCSI Fibre channel cards, SAN products, Fibre channel switch, Server/Workstations. Primary work was with file system drivers that interfaced with the operating system/Fibre-channel/SCSI driver. Extensive kernel coding, testing, and debugging on multiple platforms, including SMP configurations. Wrote and maintained Linux kernel file system driver (VFS) and associated device drivers. Wrote a Linux char device driver and user mode daemon that allowed file system to work over Ethernet while waiting for Fibre channel drivers to become available. Modified SCSI layer on Linux to support SCSI processor device exposed by Emulex Fibre channel card. Wrote a Linux library for file-manager to get SCSI drive info and other information via SCSI pass-thru. Designed and created an embedded Linux “distribution” from scratch that was built and staged by shell scripts. Requirements were small footprint, CD bootable, and various networking components. Used initrd/ramdisk and busybox. Wrote a kernel file system driver and associated device drivers for Solaris 8.0 (SPARC and x86). Wrote kernel device drivers, a file system driver (VFS), and related user-mode tools for Macintosh OS X. Maintenance coding/bug fixes for kernel file system driver and associated device drivers on Windows. Wrote a Win2k kernel driver to probe PCI bus for configuration info used by system profile application. Designed and wrote a reliable protocol on top of UDP that required running on multiple platforms and in varying environments, including soft real-time, low memory, and kernel/user mode. Designed and wrote a generic, extensible, and distributed testing framework in Python used for smoke testing multiple machines over a network. Currently used by the SQA department for testing many of Avid‟s products. Maintenance coding and test harness for the Unity Windows Network Provider DLL. Debugged and fixed many BSODs found in the field. Also was BSOD/panic “triage” developer and created a kernel debugging intranet site with Apache. Implemented failover support application (redundant servers) for NT product using sockets, Inet Helper API, and MFC. Work involved manipulating routing tables, visualization of status, and calling into failover API. Reverse engineered the 3Ware IDE RAID/SAN JBOD user mode/kernel mode protocol for use with Avid products. Implemented build process (ksh scripts), testing procedures (Driver Verifier), and installations (Installshield) for products. Wrote a test harness and related programs for the Win32 File API and WNet API. Implemented and documented use of Samba for access to Unity product from unsupported clients (SGI/HP- UX). 11/98 to 4/00(+) Speedline Technologies/CAMalot Full Time/Perm [Telengard Tech+] 2K/NT DDK, Kernel, Port I/O, Serial 232/422-USB, Java, MFC, Perl, RPC, Obj Grid, PVCS, Installshield (+9/02) Wrote a Win2K kernel driver to access IO boards on parallel ports. Also install and config utilities. Coding for XYFlex application used to operate a 4 head semi-conductor dispensing machine used by Intel, AMD, etc for chip manufacturing. Program consisted of three separate processes: 1. The Vision process that handled all communications with the Matrox MIL and Cognex vision libraries. 2. The GUI allowed the user to create and run patterns, configure various subsystems, and gave system status of all components of the system. The GUI communicated to the server via RPC/mailslots. 3. The server (implemented as an NT Service) handled interfacing with hardware including motion cards, I/O boards, network, conveyor, temperature controllers, and weight scales. Implemented two major subsystems (both low-level and GUI components): o Temperature controllers: This allowed tracking and setting the temperature of various regions. Server component communicated with controllers via serial port (422) using Modbus protocol. GUI components handled configuration and status/feedback. o Weight scales: Allowed weighing of dispense samples and calibrating the characteristics of the dispensing to meet specified requirements. Server component communicated with scales via USB 4 port serial hub using Satorius xBPI protocol. Also helped debug and fix Edgeport‟s NT kernel serial driver that shipped with their USB serial hub. Also coded on other subsystems including conveyor, digital I/O, and motion control (Delta Tau/PMAC). Wrote an NT Virtual Device Driver to allow running of DOS based GFX product within NT‟s Virtual Dos Machine. Support for I/O ports, interrupts, and DMA transfers for apps running within the command shell. Wrote a configuration/installation utility for Galil motion cards. The program allowed downloading and burning firmware to the on-board EEPROM via port I/O. Wrote a Java applet used by customers that calculated product usage based on pattern calculations. Co-designed and implemented proprietary protocol for communicating with 485 boards on older machines. This allowed older hardware to be retrofitted to work with the Windows NT based software. Created, wrote, and maintained Installshield installations for both NT products (XYFlex and Matrixx). Configuration management admin using PVCS. This included setup, maintenance, and troubleshooting. Wrote all build scripts and managed all builds using PVCS, Configuration Builder, Perl, and NT batch files. Wrote many Perl and batch scripts to support SQA, software department, and customer installations. Many utility programs including: A program that disallowed checking in files with „locked‟ labels. A utility to monitor changes to checked in files and logging changes. 10/97 to 11/98(+) Northern Research and Engineering Consultant [New Boston Systems] MFC, COM, STL, Objective Grid-Toolkit, BoundsChecker, ClearCase, OpenGL, DirectX (+11/99-4/00) Provided new features, bug fixes and an installer for the Ritap product. Win32 rewrite of COMIG, a CAD/mechanical design package for turbo machinery. Consisted of three parts: 1. The „geometry server‟, implemented as a COM in-proc server, which took in data from formatted x- y-z data files and converted the data to the representation (i.e. B-splines) to be displayed in GUI. 2. The „flow solver‟ was a port of Fortran math routines to C. 3. The end-user (GUI) application. The GUI allowed relevant data to be imported and a graph of desired quantities was displayed as well as tabular output via a grid control. The curves could be edited in „real time‟ and relevant data could be exported to an existing in-house OpenGL viewer. Wrote a C++ class library (MFC extension DLL) wrapping the “C” Quinn-Curtis charting software. All NREC software programs use this graphics library. Started porting to DirectX for speed increases in real-time updates. Was ClearCase administrator, implemented TrackRecord usage for entire software group, nightly builds of all projects using Cygwin UNIX tools, and procedures for department-wide style and testing guidelines. Implemented many new features in the Comig GUI. Workspaces, structured storage saving of data, real time editing of curves, classes for registry access, and spreadsheet data viewing using Objective Grid. 1/96-10/97 Henschel, Inc. Programmer / E. E. Tech NT DDK, Kernel, Port I/O, 8051, MFC, Borland C++, BoundsChecker, SourceSafe, IoWorks , Fastgraph Most applications centered on communication and navigational applications for the U.S. Navy for placement on naval vessels. Building and testing various circuits and hardware. Also troubleshooting computers, networking setup and configuration, prototyping, electronics testing, and wiring. NT kernel driver and related code for interfacing/data acquisition with synchro cards and other hardware. Raytheon Combined Navigational Units: Interfaced with Raytheon‟s Ecdus and Arpa computers and the Navy‟s Wren 6. Implemented on several Navy carriers. The application (an NT Service) read various signals (serial, synchro, NTDS, and TCP/IP packets of internal protocol ) converting them to NEMA strings and sending to Raytheon‟s equipment, and driving other hardware. Signals received also sent via network to programs displaying custom GUI controls and displays simulating their analog counterparts. Major considerations were interfacing NT with the VME bus, using threads for I/O, remote configuration, and strict military security issues. Wrote Henschel‟s Alarm Activation Panel used on Navy vessels. Talked over the parallel port using port I/O. Maintained embedded throttle control project running on 8051. Developed using Archimedes environment. Wrote a program to detect lights in building turning on/off via photodiode circuit over parallel port. Wrote dimmer application that controlled a custom ISA/PC-104 card and ran on Windows NT. The card controlled the dimmer of a LCD flat panel display‟s backlight. Also designed protocol to interface w/ card. Built portable PCCU flat panel display/embedded PC. Designed and built security/battery watchdog circuitry. Mock up of DOS based IVUT program used to test touch screen sensitivity using Borland C++ Builder. Database/Front-end/HTML program for use with viewing ISO-9000 documents for entire company. 4/91-1/95 United States Army Reserves Combat Engineer (Rank E-4, 12-C): Demolition, mines, bridge building. Re-classed MOS to 96B Intelligence Analyst. Held Security Clearance. EDUCATION: 5/92 - 6/96 University of Mass Lowell Lowell, MA B.S. in Electrical Engineering NON-WORK/OPEN-SOURCE PROGRAMMING RELATED: Homepage: http://home.comcast.net/~bsturk/ [Many freeware programs, macros, and source code available]. MESS contributor, gp2xmess, vimsh, and other freeware programs, maintainer of the Win32 Hardware-Port I/O FAQ.
Pages to are hidden for
"resume - DOC 1"Please download to view full document