Software Developer : Mission Critical Systems
- ‘C’ and C++ developer roles which entail design, implementation and testing of a product.
- Symbian O/S C++, C# .NET and Perl, Bash scripting experience amongst others.
- Senior developer with vast experience in the Industrial Control Systems environment, as well as embedded RTOS, in mission-critical environments for 18 years.
- Experienced at interfacing hardware and software to each other in a real-time environment, Linux (Embedded audio switching) and in instrument control (SCADA/HMI) for Windows.
- Accomplished at IP networking and using a range of other interfacing media based on a solid understanding of networking protocols and media types, and using them in various client-server scenarios. Embedded experience covering USB, uC-Linux and System Testing.
- A can-do trouble-shooter good at researching & knowledge transfer.
- Automated Testing system configuration and design documentation.
- Digital Electronics background and interests in hardware and high reliability computing.
The nature of my first job in a control-system environment where people rely on your code to run 24/7/365, has taught me how a solid design, simplicity, coding style and discipline directly affect defect-rate. I’ve developed compact requirements-focused applications for Symbian mobile and micro-Linux, in the resource constrained world. I am a C++ guru, a generalist at Embedded, and a Linux apprentice. I can work well on my own and am completely self-motivated! I enjoy customer interfacing and helping them achieve their goals, but I mostly love working with hardware.
Clear Com (Vitec) June 2008 – present
Clear Com design and market a complete hybrid digital intercom system. Customers include Live Performance, Broadcasters, Military, Aerospace and Government. Role made redundant after 3 seasons of downsizing. clearcom.com
Role
- Maintained applications for the main 8260 PowerPC processor card.
- uC-Linux developer (Blackfin DSP) on digital audio “stations” connected to the main processor using HDLC typically via RS485 and Ethernet (VoIP).
- Designed and developed C# .NET GUI server component to perform configuration, control and monitoring of the processor card and stations.
Projects
- Built a continuous-integration system using open-source projects, with local and remote builds for 3 different hardware platforms, including Subversion and Clear-case integration.
- Built a remote-test client into to emulate human interaction to create a repeatable stress and integration-test environment.
- Designed and implemented an Ethernet LAN auto-discovery and configuration system using TCP and UDP-broadcast communication and a Windows .NET configuration package to configure stations.
- Process owner Unit testing, Coding standards, Wiki and Mantis bugtracker.
- Wrote most of the OLED graphics libraries on prototype hardware for next-generation VoIP product.
Skills
- Accomplished at using Open Source Tools: CPPUnit, N-Unit, and Cruise Control.NET.
- Installed a MediaWiki knowledge base, and Mantis bug-tracker.
- Toolchain: Use of a cross-compiler, bash scripting, Makefiles and CMAKE.
- Languages: ‘C’, C++, C#, BASH, Perl.
- Agile: Scrum and Sprint Burn-downs.
- Working with remote teams in the USA and Canada, has taught me clearer communication and collaboration skills.
Symbian Limited (now Nokia) July 2006 – May2008
Symbian employ >1000 software engineers in the UK alone and are the developers of the high-end smart-phone RTOS that evolved from the Psion portable organizers. developer.symbian.com
Role
- Defect fixer on USB and Bluetooth team.
- Overnight Build-and-Test engineer.
- Test designer to the USB project.
Projects
- Implementing main USB stack testing suite of an on-the-go (OTG) embedded host. This involved pairing with developers coding up a USB Host and Peripheral function for the mobile device, and then specifying, designing and implementing unit and integration tests.
- Maintaining integration test-farm consisting of 14 PCs, and adding overnight project builds, tests and “on-target” integration run downloads and reporting.
Skills
- Tools: ARM tool-chain and GCC, Perforce version-control.
- Used CodeWarrior and Eclipse IDE with Carbide.
- Team-track web-based defect tracking.
- Object Oriented design: Enterprise architect.
- Bulldog (CCover) code coverage test-metric tool.
- Languages: C++, Perl scripting, DOS scripting.
- 18 months experience in USB, and mobile RTOS.
Adroit technologies 1992 – 2006
Adroit Technologies develop an industrial control system on the Windows platform, in Johannesburg, South Africa. I started as a junior developer on their purely ‘C’ coding role of highly optimized drivers and progressed to team lead after 5 years. I left Adroit to relocate to the UK, at the time I had written 2 thirds of their drivers. Adroit Technologies
Roles
- Perform technology presentations for customer functions, trade shows and tech demos.
- Defect fixing on all product areas
- Progressed to lead developer, required to incorporate new techniques and technologies.
- Produce automated test procedures, and documentation.
- Consult on primary company projects.
Key Projects
- Designed and developed the second generation of their Siemens H1-Ethernet (custom packet-driver) to gather event data both asynchronously and synchronously. The project was strategically important, with high safety requirements with the beta being a Platinum extraction plant.
Customer: Anglo Coal and Anglo Platinum
- Designed and developed a Siemens driver to directly access function-blocks in the process controller. I also had to handle over 2000 events per second in real-time, then queue and complete database updates in under 100ms.
Customer: DeBeers Diamond mining
- My most rewarding project was an emergency one to rebuild a mineral extraction plant after a fire. Next generation Mitsubishi controllers had been specified, requiring a rewrite of most of the original code. I got many happy customers in the months that followed, phoning just to tell me how reliable and fast it was.
Customer: Anglo American
- Designed and implemented 2 radio-telemetry drivers, one of them using Open sources. By working closely with the customer during design and debugging debugged in parallel I used my electronics background to my advantage.
- Designed and implemented a complete OO Re-design of all C legacy drivers to allow C++ migration. This required formalizing the internal testing process, and creating a test program.
- Created a code library including a multithreading pool manager for high-speed drivers to easily mitigate worker-thread creation overheads.
Skills
- Tools: Visual Studio, SourceSafe.
- Using Ethereal/ Wire-shark and proprietary sniffers.
- Debugging call stack dumps in assembler.
Network Computer Services: 1991-1992
- My first full-time work involved installing LAN and WAN for a contractor. I ran a 2-3 man team, eventually specialized in troubleshooting networks and tackling difficult installations.
- Installed all kinds of networks ranging from fiber-optic to RS-422 terminals.
Studies
- 1991: I trained in formal software development, with a full-time COBOL and Data-Processing concepts course at van Zyl and Pritchard, Johannesburg. The course ended in an external examination by the CUC (Computer User Council of South Africa).
- 1989-1990: Military service: I initially kept myself with basic radio maintenance working in the signal corps. Soon I decided that computer programming was my forte after using a base admin computer nights to write a ration-order prediction program in Pascal.
- 1988-1989: Studied Light Current at the Cape Town Technicon, where I steered toward the digital subjects and computer programming in Pascal.
- 1987: High school final year, taught myself 8086(Intel) Assembler, and ‘C’. I then helped write parts of a data-capture application.
Hobbies
An electronics hobbyist, I like to build small digital playthings, and maintain an open source project here. I also read Adventure and Sci-Fi books.
My week-ends I like to spend going on outings with my 2 boys, currently 5 and 7 years old.
|
|