|
2010-present
|
AppZero
Software Corporation (formerly Trigence), Ottawa, Ontario
Senior
Software Developer, Virtualization
Develop
lightweight application virtualization solution for Windows.
Redesign
and re-implementation of management layer C++ APIs
Design
and implementation of public C APIs for third party developers.
Language
binding generation for Python, Java, C#, etc. using SWIG.
Migrate
Subversion repositories to Git, implement IT infrastructure for
repository management and train staff.
Fix
bugs and implement features in virtualization runtime layer.
Decompile/disassemble
Windows libraries and services to reverse engineer APIs using IDA
Pro.
Key
Technologies: Windows, C, C++, SWIG, Git, IDA Pro.
|
|
2010
|
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 over SSL.
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, and 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.
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
|