|
2010-present
|
Mapleworks
Technology, Gatineau, Quebec
Senior Software
Developer, Smartphone Development
Customer
driven custom design and development of applications for
Blackberry and Android phones.
Work
closely with customers to develop mobile applications which
integrate tightly with their backend servers using xml.
UI
design and implementation.
Key
Technologies: Blackberry, Android, Java.
|
|
2008-2010
|
Xandros
Corporation, Ottawa, Ontario
Senior Software
Developer, Core OS Team
Linux
kernel and system development for x86 and ARM. Configuration,
compilation, patching, as well as bug fixing.
Worked
to integrate Android and Moblin into Xandros products.
Evaluation
of new hardware/initial board bring-up.
Implement
system inactivity monitor daemon for power-saving.
Customize
device drivers (audio, video, network, etc.) for autodetection,
codec selection, etc.
Monitor
kernel development community for new patches/bugfixes,
backporting and adapting as necessary.
Implement
various scripts for such tasks as device auto-detection,
installation and setup, wireless network configuration, laptop
hot-keys, system standby, etc.
Optimize
kernel for battery life.
Customize
uBoot and initramfs to restore factory defaults using
aufs/squashfs.
Fastboot
optimization to boot linux in under 10 seconds using tools such
as bootchart.
'Presto'
linux distro which installs to and boots from a Windows
partition.
General
debugging and fixing of whatever various and sundry problems
arise with any modern operating system.
Wrote
Python build system to automatically download source RPMs,
convert to Debian packaging and build.
Key
Technologies: Linux kernel, C, C++, Scripting, Busybox, uBoot,
Grub.
|
|
2007-2008
|
Trigence
Corporation, Ottawa, Ontario
Software Developer
Sustaining
engineering work on Linux and Solaris application virtualization
software.
Debug, enhance and
improve complex product with components written in C, C++,
assembler, Java and shell script.
Solve problems
with customer deployment of complex systems such as Oracle,
JBoss, Tibco, Clearcase, etc.
Redesign and
improve build configuration (automake, autoconf, etc.)
Re-engineering of
SOAP interface.
Integration
with management tools such as Nagios and Sun Management Center.
Add
instrumentation for performance profiling of syscalls along with
new exit upcall to print gathered information.
Write assembly and
C code to create per-thread execution stacks for kernel to
user-space calls preventing application threads from overwriting
stack boundaries.
Rewrite symbolic
link resolution code to search multiple namespaces and thereby
enhance learn mode to support on-the-fly copying with multiple
sources and targets.
Add support for
per-capsule loopback interfaces. This involved shell scripts to
manage interfaces, additions to user-space utilities to inform
kernel module of capsule status and kernel code to track socket
connections and correctly route binds to correct interface/port.
Key Technologies: C,
C++, assembly, shell scripting, Java, Linux/Solaris kernel,
TCP/IP, SOAP
|
|
2005-2006
|
QNX Software
Systems Limited, Ottawa, Ontario
Technical Account
Manager/Software Developer, Engineering Services Group
Primary support
contact for customers.
Provide technical
support and project guidance.
Software
development/custom engineering as required.
Responsible for
entire life cycle of customer project from board bring-up and
device driver implementation to application development and
maintenance.
Contribute to wide
variety of projects including network routers, vehicle
entertainment and navigation systems, medical imaging devices,
and audio-video systems.
Add
startup and utility support (I2C) for Phillips 8583 clock chip.
Develop image
library to use shared memory to reduce image overhead between
applications.
Write Eclipse
plugin to edit config files of above image lib.
Create routine to
clear YUV video memory layers in Coral video driver.
Key Technologies: C,
shell, device drivers, embedded development, Eclipse, QNX
|
|
2000-2005
|
QNX Software
Systems Limited, Ottawa, Ontario
Programmer, Core
Development Tools, Tools Group
Develop and
maintain development tools targeting QNX Neutrino from Linux,
Solaris, Windows and Neutrino.
Primary GDB
Maintainer.
Primary Utilities
maintainer which includes porting and development of new tools.
Secondary
maintenance and support of compiler, linker and assembler.
Wide range of
tasks ranging from implementing an XML parser to writing network
servers, build configuration management to java IDE development,
system administration to kernel development.
Use and support a
variety of tools and languages such as C, C++, Java, shell
scripting, make, assembly, bison, flex, etc.
Work with several
architectures including Arm, PowerPC, MIPS, SH4 and i386.
Perform security
audit of setuid software.
Supervise co-op
student project.
Maintain, and
enhance Neutrino support in GDB.
Prepare patches
for submission to public FSF branch.
Work with GNU
tools on Linux, Windows, Solaris, and Neutrino.
Develop software
to install Neutrino packages on Solaris, Windows and Linux.
Write caching
daemons for optimization of FlexLM licence lookups on above
hosts.
Wrote tiny, Expat
compatable XML parser for embedded systems using Lex and Yacc to
create non-validating implementation of XML 1.1 specification.
Key Technologies: C,
C++, Java, shell, XML, assembly, embedded, QNX
|
|
Fall 1998-2000
|
Computer
Science Department, Thunder Bay, Ontario
Solaris/Linux System
Administrator
Install, set up
and administer Sun Enterprise 4500 server.
Build, install and
maintain CS department's Linux server.
Install and manage
heterogeneous 50 machine network. (Linux, Windows, Solaris, BeOS)
Standard sysadmin duties from
hardware/software installation, security and tech support.
|
|
Summer 1999
|
Dr. Chinh
Hoang, Lakehead University, Thunder Bay, Ontario
NSERC Grant for
Undergraduate Research
|
|
Summer 1998
|
Center for
Northern Forest Ecosystem Research, Thunder Bay, Ontario
GIS
Technician/Programmer
|
|
Spring
1998
|
Campus
Technology Resource Center, Lakehead University, Thunder Bay,
Ontario
Technician
|