|Contents:||Contact Information | Skills | Work Experience|
|Education | Projects|
|Address:||Available upon request.|
|Phone:||Available upon request.|
Founded indie Mac development company. The company's first product, Textcast, was released in December 2008. Textcast is Leopard-only and uses the Mac OS X text-to-speech engine, Core Data, PubSub, and Scripting Bridge.
Provide consulting services for a wide range of technologies, primarily focusing on Apple Mac OS X development using Cocoa and I/O Kit.
Assisted development of a new 10.5-only Cocoa application. Application used Core Data, garbage collection, and NSOperation. Wrote custom UI controls and helped profile Core Data issues.
Ported Cocoa application and kernel extension to a Universal Binary for the transition to Intel and ported to Leopard. Implemented a few new features and fixed various bugs. The port to Intel required fixing endian issues, and the port to Leopard required working around deprecated and unsupported APIs.
Wrote a Cocoa application from scratch to interface with their web site using a REST API for a better user experience than using the web site directly. Used Core Data and libcurl extensively.
Continued to work for CRT on the Variman RETS server and participate in the RETS standard community.
Helped prototype two games, one for a handheld platform and one for the PC. Written using Python and the Torque Game Engine.
Author of The Road to Code, a monthly column in MacTech magazine focusing on the basics of Cocoa programming for Mac OS X.
Reviewed numerous books including Xcode 3 Unleashed, Ant in Action, and Java Persistence with Hibernate.
Provided senior level programming experience on a broad range of technologies from enterprise Java and C++ to embedded systems and device drivers. Also provided Linux and Unix systems administration skills as necessary.
Provided technical guidance for research projects investigating technology to help Realtors and their vendors for the Center for Realtor Technology (CRT).
Added features to AcidImage product. (http://www.red-mercury.com/). AcidImage is written for Palm OS in C++.
Gave a one day seminar on the Ant build tool for Java. The seminar explained how Ant worked and how to write build files.
Principal and Senior Consultant.
Architected, designed, and implemented a contact management system utilizing EJB, JSP, servlets, and JDBC connected to an Oracle database. The EJB system employed container manager persistence (CMP) with custom finder methods. The system was deployed on the Orion application server and prototyped on jBoss. The JSP interface was designed using custom JSP tags to allow for quick addition of new types of interfaces such as those for mobile devices under the Resin application server.
Part-time systems administrator for the more than 10 Linux systems. Job functions included Apache and application server administration for the production and test environments, Oracle installation, Bind administration, and Linux iptables firewall administration.
Worked on a legacy Java servlet based risk management web application. Job functions included refactoring of current object design to provide more extensibility, fixing numerous performance and scalability issues, implementing new customer features, and fixing defects. The platform was JRun and Oracle on Windows NT/2000.
Designed and implemented a content management system in Java using servlets connecting via JDBC to an Oracle back end and a web front end. Designed the communications protocol for a client-server based game and implemented the server side game logic using a JMS implementation and state machine API, which he solely developed. All of the Java development was precluded by a solid design phase using Together/J as a tool for UML class and sequence diagram modeling. Implemented a complete CVS version control system server, and a number of client installations in a heterogeneous development environment. Wrote a white paper on the use of JSP and its advantages.
Senior Software Engineer at Motorola (http://www.motorola.com/).
Designed a C++ subsystem to integrated an off the shelf ATM protocol stack into the UMTS system. The subsystem would be integrated onto a Motorola 860-based E1 network interface card in a Compact PCI environment.
Participated in a 6 month overseas assignment to Motorola's Swindon site in the United Kingdom. Helped bring developers up-to-speed on the current architecture of the proprietary RTOS. Also lead a project to bring a PCMCIA ATA card to the proprietary hardware.
Helped design the port of the proprietary RTOS API to VxWorks so that legacy applications could be ported to the new architecture. Ported a vendor's LAPD device driver to the hardware used by Motorola. He also designed and implemented an interface process in C++ that provides a legacy interface to the COTS LAPD device driver.
Worked on a 6 person prototype team to prove that using Commercial Off The Shelf (COTS) hardware and software components for future generations of the BSS architecture was possible and viable. The system was designed around the Compact PCI bus architecture, hardware based on the Motorola PowerPC 750 and 860 CPUs, the LynxOS RTOS, and a commercial LAPD protocol stack. Helped port the proprietary RTOS API to LynxOS, wrote a LynxOS device driver for the E1 network interface card running LAPD, and wrote a process that interfaces the device driver to the legacy applications. The prototype was a huge success and influenced Motorola projects both inside and outside GSM.
Investigated various code coverage tools and helped incorporate code coverage into the development testing phases of Motorola GSM's software development life cycle. Filed for a patent regarding implementing code coverage in an embedded system. he co-authored a paper regarding code coverage for the Motorola Software Engineering Symposium that won first place for a Best Practice in 1998. Also participated in a Total Customer Satisfaction team regarding code coverage that made it the the Cellular Infrastructure Group finals.
Actively assisted the GSM software development quality team to read Software Engineering Institute's Capability Maturity Model (SEI CMM) Level 5. Worked on a team to help integrate ideas of the Technology Change Management key process are of the CMM. he also participated in the assessment by attending the interview for the development are. The assessment went spectacular and the GSM BSS organization was assessed at Level 5, thus leap-frogging Level 4 completely. GSM is one of only a handful of SEI CMM Level 5 organizations world wide.
Designed and implemented a kernel level debugger for the proprietary RTOS to allow debugging of the kernel, services, and device drivers directly on the target hardware. Previously, debugging of the OS meant adding print statements or using a cumbersome In-Circuit Emulator or Logical Analyzer. This project required intimate knowledge of the 680x0 family of CPUs, especially in the ares of exception handling and the memory management unit (MMU). He also had to find creative methods to debug a debugger and got very familiar with ICEs.
Continuously participated in the proprietary RTOS simulator project. Ported the simulator from a 68030 based SunOS 4.1.3 environment to a SPARC based environment. Rewrote the kernel of the simulator from 68030 assembly language to C using SunOS 4.1.3 lightweight process (thread) library. Investigated and prototyped a redesigned simulator targeted for the POSIX.1a and POSIX.1b compliant Solaris 2.6 environment. This project was taken over by 3 developers and based heavily on the GPRS and COTS prototyping projects.
A member of the development sanity testing team for 9 months. This team performed basic tests on every internal release of the software. Helped transform the team from an overworked group of 3 or 4 people to a well-managed group of 16 people using rotations to avoid over work and burn out. This 16-person structure was still in use at the time of my departure.
Worked at NCSA (http://www.ncsa.uiuc.edu/) as an undergraduate intern during NCSA's Mosaic hey-days. Wrote a Perl script to parse NCSA HTTPD access log files and create graphs based on the information. Helped setup Champaign County's World Wide Web server and marked up documents using Hypertext Markup Language (HTML). Also wrote introductory documents explaining how to use Unix and basic features of the Internet such as Telnet, FTP, mailing lists, GOPHER, and Mosaic.
Final semester spent at the University of New South Wales, in Sydney, Australia as an exchange student.
Participate in on a number of Open Source projects. For a complete list see http://www.dribin.org/dave/software/.
Actively maintain the Mac OS X port of MAME. Technologies include Core Audio, Core Video, OpenGL and Core Data.