. | . | . | . | David McCracken |
Portfolioupdated:2018.09.09 |
This PageExperience
Theory and PracticeExamples
Publications |
VIEWING THIS SITE
AREAS OF EXPERTISELanguagesC++, Assembler (X86, ARM, M68K, ADSP, Z8, Z80, Z8000, 8051) Python, Lisp, Perl, XpBat, Bash, Javascript, HTML, CSS, AWK, Yacc, Lex, Verilog. Application-specific language design. SystemsMS Windows (XP, XPe, W7, Tablet, CE) Linux, and Android drivers and applications. RTOS system and application program design. User interface and touch-based application design. USB, TCP/IP, HTTP, and custom communication protocols. Distributed processing. Medical instruments. Microprocessor development systems. HardwareMicroprocessor and multiprocessor system design. State machines, combinatorial and sequential logic, PLD, and FPGA. RX600, ARM, MIPS, X86. EXPERIENCEThera Institute, Inc. Aptos, CA Nov. 11 - currentPrincipal Software EngineerDeveloped C++ Win32 API interactive enumerated and curve function aspheric lens design programs based on differential calculus and refraction principles. Invented new mathematical proofs for deterministic lens calculations using the interactive program to discover roots of eighth-degree (and higher) polynomials. Developed Windows and Linux utilities. Formalized project history web standards. Improved touch pointer program in embedded ARM C and Win32 C++. Developed specialized laboratory control and data analysis software based on Linux and Posix network and IPC; BASH and Windows WSH scripting; and fundamental algorithms. Integrated Device Technology, Inc. San Jose, CA Dec. 09 - Nov. 11Staff Software Development Engineer, Advanced User InterfaceDeveloped firmware and hardware for capacitive touch devices with ARM and MIPS CPUs and Android/Linux/Windows touchscreen drivers. Developed Windows program (Win32 GUI with USB-HID driver) with NXP LPC1342-based USB, I2C, SPI data acquisition system to support general touch and gesture algorithm development. Developed original DSP algorithms for multi-term acceleration, anti-jitter, touch/untouch position stabilization, and sub-perceptive gesture analysis. Four pending patents related to these algorithms and for low-noise, ultra-high-resolution differential capacitive touch device. Designed Subversion-based version control system integrating legacy and new branches into a unified schema with command-line scripts, Eclipse plugin (Subclipse), and TortoiseSVN interfaces. Tyco Electronics, Elo Touchsystems div. Menlo Park, CA Feb. 06 - March 09Senior Software EngineerDesigned and implemented drivers, interface libraries, and multi-lingual (English, European, Chinese, and Japanese) applications (including installers, co-installers, control panels, and property sheets) for USB (HID, isochronous, and vendor-specific) and serial touchscreens for Windows XP, Vista, XP embedded, Tablet PC, and CE. Invented driver-based means for a USB-HID mouse device touchscreen to mimic a Tablet PC pen device; edge calibration to improve touchscreen linearity and to automate edge acceleration configuration; driver-based multi-touch for resistive and capacitive touchscreens; and touch-specific UI widgets. Wrote XP-batch scripts to automate building release packages for WinCE 4.2, 5.0, and 6.0 for X86, ARM, and MIPS from a single code base. Wrote Perl scripts to manage multi-lingual database. Abbott Laboratories, Diagnostics Division. Santa Clara, CA Oct. 98 - April 05Senior Software Engineer (consultant)Designed and implemented (in C++, x86 asm, 68K asm, lex, and yacc) clinical instrument development system, including self-configuring robot network, distributed multi-processing operating system, robot control language with dynamically configurable compiler, Windows-based (Win32 API) interactive debugging system. Windows 9x/NT/2K/XP universal device driver for high-speed serial and parallel communication with content-based routing and RDMA (Remote Direct Memory Access). Windows-based instrument controller with embedded XML, FCS (Flow Cytometry Standard), and proprietary databases; real-time data plotting; automatic code and dialog generation from declarative instrument definition; interactive help using MS word as document server controlled remotely via DDE. Stepper motor controller for synchronized operation of 20 motors using one CPU (MC68340) and FPGA (EPF10K30). Motor control language and compiler. Abbott Laboratories, Diagnostics Division. Santa Clara, CA Oct. 94 - Oct. 98Software Lead (consultant)Planned and directed software development of the CD3200 hematology analyzer. Developed multi-domain, hierarchical software/firmware version control system using PolyMake as a job control language to automate project rules for programming MC68340, I8051, Pentium, MC6809, and FPGAs in C, Assembler, VHDL, and Palasm. Developed run-time selectable Japanese and European languages user interface under English MSDOS. Designed and wrote robotics control language compiler using BISON and FLEX; embedded HTTP server (on FTP’s PC/TCP stack) with dynamic HTML page creation; MS-Windows-based visual algorithm development program. Led 10 software engineers. Hitachi, Inc, Instrument Division. Hitachinaka Japan April 94 - Sept. 94Senior Software ConsultantAdapted 747 and 917 clinical analyzer software to Phar Lap DOS extender. Developed bimodal drivers using paired real and protected DLLs with mode gates for debugging simultaneously under real and protected versions of Microsoft Codeview. Designed serial comm, GPIB, printer, touch screen, and other drivers. Microgenics Instruments, Inc. subsidiary of Boehringer Mannheim GmbH July 91 - Aug. 93Senior Software/Firmware EngineerDeveloped clinical analyzer firmware in Z80 assembler and C and managed the electrical engineering department, directing five electrical engineers. Designed digital and analog circuitry using Lattice GAL, AMD Mach, and standard components. Designed and programmed (in C++ and x86 asm) clinical instrument simulator and guided probe test apparatus. Wrote x86 asm device drivers for SmallTalk. Designed (HW+SW) ADSP2105-based PID servo controller, stepper motor drivers and controllers. Hitachi Instruments, Inc. and Boehringer Mannheim GmbH Jan. 90 - July 91Senior Software Engineer (consultant)Prepared and led seminars for European and American LIS (clinical Laboratory Information System) developers and programmers. Maintained 747 clinical analyzer software. Hitachi Instruments, Inc. Feb. 88 - Jan. 90Principal Software Engineer (consultant)Designed the Model 747 clinical analyzer software. Developed embedded system concept, architectural design, and implementation in C and 80286 assembly language on PS2 and ISA computers. Implemented real-time multitasking on MSDOS using DMA, interrupt-driven state machines, and threaded task dispatcher. Designed serial laboratory communication protocol (transport and application levels) which became an industry standard. Developed GPIB, RS232, and printer drivers; printer and disk spoolers; multitasking error reporting engine; real-time multi-user database and windowed user interface; keyboard macro processor; mapping mechanism to print an exact image of the screen display; high-speed on-screen graphing system using custom characters; context-sensitive help engine. Developed text formatting language and process that enables a single program to present on-screen text in any European language (initially released with German, Italian, French, and Spanish). Led 15 software engineers. Cabrillo College. Aptos, CA Jan. 84 - Dec. 87Electronics Department InstructorSubjects included digital hardware, logic theory and realization, state machines, microprocessor system design, and assembly languages. ASTEC RF Products, Inc. division of BSR International Dec. 84 - Mar. 86Senior Digital System Engineer (consultant)System, hardware, and software design and implementation of satellite-seeking television receiver (TVRO). Developed hard real-time multitasking operating system to support robotics, DSP and artificial intelligence on (Motorola) MC6803 microcontroller. Designed system, hardware, and software for GPIB-interfaced automated production test system. Three patents granted for satellite seeking and radio receiver control hardware and processes (implemented in firmware). Synertek, Inc. subsidiary of Honeywell Feb. 83 - Jan. 84Senior Engineer (independent contractor)Conceived, designed, and implemented Z8 in-circuit-emulator sold by Synertek as the MDT20. Developed all hardware and software based on original “in-situ emulation” research. Wrote Z8 and 8048 assemblers and disassemblers. Developed distributed multiprocessing operating system; RS232 and IEEE488 communication drivers; debugger user interface; microprocessor-controlled universal EPROM and fused (PAL) device programmer. Wrote programs in Z80, Z8 and 8048 assembly languages and BASIC. PUBLICATIONS
PATENTS
CONTACTDavid McCracken6850 Freedom Blvd. Aptos, CA 95003 P.O. Box 1475 Aptos, CA 95001-1475 831-688-0358 davidm@ixont.com |