I am a high-quality software engineer, with approximately ten years of
employment history in software development, and twenty-two years exposure to
computer programming (as of 2007).
My skills and knowledge cover the entire field of software engineering and
related subjects. I design, implement, and test programs mainly written in C/C++,
Python, and assembly language. Equally, I can solder circuits, read board
schematics, program logic analyzers, and write Verilog RTL. I have provided
24x7 server support to a major US financial institution, and have interacted
with customers for new system/feature definition, through to post-installation
support. I can also function as a highly competent system administrator in a
variety of environments.
|
|
Languages: |
I design and implement clean OS & application code.
C/C++, Python, make, various assembly, Shell, Verilog, Perl, Java, Tcl.
|
Tools: |
Tool/script creation. Source control, build/release, target and test automation.
gcc, gdb, Accurev, Subversion, Perforce, make, MS Visual C++ & debugger,
GHS Multi, Continuus/CM Synergy, expect, StarTeam, and many more.
|
Environments: |
RTOS, CPU/ASIC/FPGA drivers, HW simulation, OS abstraction.
Nucleus PLUS RTOS (MIPS/Xtensa), Linux, Enea OSE (PPC and Win32 SFK),
Win32, Cygwin, Micro-controllers e.g. PIC, Message-passing, Middleware.
|
Networking: |
Knowledge of TCP/IP routing/connectivity/firewalls/proxies/applications.
BSD socket API programming. Message-passing & distributed computing.
|
Multimedia: |
Consumer/PC video signals, MPEG presentation (DVD-Video, DVD-Audio,
VCD/SVCD), CDDA, HTML. Consumer DVD player experience. CSS/CPPM.
|
Hardware: |
Logic analyzers, oscilloscopes, system debug, read schematics, I2C/JTAG bit-banging.
Worked on Verilog simulation for ASIC design verification.
|
Sysadmin: |
CentOS/Fedora/Red Hat/RHEL Linux, openldap/pam_ldap/nss_ldap, Apache,
WebDAV, Unison, rsync, SSH, MediaWiki, MySQL, BugZilla, Accurev, backup scripts,
replication, OpenVPN, single sign-on, Samba, phpmyadmin, phpldapadmin, etc.
|
Databases: |
(Rusty): Generic SQL, Oracle Packages, Interbase SQL & C API, MySQL. |
|
October 2007 - Present: Snr Linux Software Engineer,
NVIDIA, Inc.
Linux graphics driver software development.
March 2006 - October 2007: Software Architect,
Gyanasoft, Inc.
Software IP, products and services mainly in the media and toolchain space.
For a video processing ASIC vendor, enhanced existing code-base to add significant
new features required for highly integrated PC/consumer LCD display.
Complete re-design and re-implementation of the algorithm used to measure properties
of an incoming video signal, and identify which, if any, supported video "mode" the
signal corresponded to.
Architected and implemented portions of a completely new SDK for a video
processing ASIC. Modularity requirements were met by implementing self-contained
components that could be flexibly composed into larger systems.
Researched, built, and packaged a modern gcc/binutils toolchain for an Xtensa CPU.
This involved porting support for optional ISA components from an older version of
binutils to the modern version. Toolchain was packaged using Nullsoft installer and
a non-interfering version of Cygwin.
System administrator for a small, but geographically disjoint network of machines.
August 2004 - February 2006: Software Engineer,
NVIDIA, Inc.
Media presentation software. Linux specialist.
Implemented, maintained, and refactored portions of a cross-platform multimedia playback stack.
Created custom Linux distribution for a consumer electronics device.
Built custom toolchain using uClibc for space saving.
Wrote custom "init" and network configuration scripts.
Implemented and maintained portions of a platform abstraction layer.
First point of contact for porting to new hardware platforms and OSs, such as QNX.
Implemented a cross-OS/CPU/host build system. Managed SDK release packaging.
Co-created a Windows kernel-mode emulation layer to support recompilation of a
Windows kernel streaming driver as a Linux user-space application.
This included a kernel-mode interrupt stub and user-space DMA setup.
Open source: Ported __cxa_atexit support to uClibc from GNU glibc.
Linux kernel ALSA driver support for an Intel HD-Audio codec chip.
September 2001 - July 2004: Software Engineer,
Parama Networks, Inc.
Architect & implement platform software for SONET network nodes.
Architect & implement "Traffic card HAL";
System control middle-ware for service provisioning, restoration and signaling.
Worked on driver framework and implementation for PPC CPU, ASICs and FPGAs.
Software support for ASIC engineering team, including work on RTL verification infra-structure.
Implemented build system for multiple target environments and toolchains.
Co-implemented Continuus source control, including DCM multi-site replication.
"Tinderbox": Automated promotion of checkins from developer to integration branch.
Isolates developers from invalid checkins by co‑workers (build/test failures).
Distribution of builds to a network of test machines for regression testing.
August 1999 - September 2001: Senior Software Engineer,
Mediamatics, Inc.
Architect & implement embedded software for DVD players and similar devices.
Owned major software modules such as presentation (codec co-ordination) and disc interface.
Worked on CPU vectors, core OS code, driver middle-ware, API and application.
Build-management role: SDK build & release process implementation.
August 1997 - July 1999: Senior Systems Engineer,
Technology House, Inc.
Bespoke data-transformation and middleware software for financial industries.
Leading technical position in a software consultancy company.
Architected/developed high-capacity message-based data processing systems
Customer interaction included 24x7 system support, demos, business meetings.
April 1996 - September 1996: Summer Intern,
Global Communications, Ltd.
Telephony Software for single-number services and call-centers.
Win32-API programming including threading, networking, RPC, and ISAPI.
Utilized Perl for build-scripts and cross-language code-generation.
|
|