Ian Ward 2012-02-07 ___ Summary ________ Software developer with interface design, customer relations and operations management skills. Programming experience includes: * Writing device drivers and microcontroller firmware in C and assembly language * Agile test-driven Python script and user/web interface development * Administering and automating tasks on Linux servers. Availability varies from month to month. Currently entertaining requests for 1-2 days per week. ___ Software Development Experience ________ Platforms: Linux (Debian, Ubuntu, Red Hat Enterprise Linux, Fedora, Centos), Windows, Mac OS, Atmel and PIC Microcontrollers Languages: C, C++, Java, Prolog, Scheme, Smalltalk, Visual Basic, Assembly (x86 and PIC) Scripting Languages: Python, Perl, Bash Shell, Ruby Web Languages: Django, PHP, JSP, PSP, CGI, AJAX, HTML, CSS, DHTML, JavaScript User Interface: wxWidgets (wxPython), GTK, Qt, Tcl/Tk, MFC, JFC/Swing, OpenGL Internationalization: Unicode, ISO 2022-*, CJK encodings Databases: SQL, Data Modeling, Query optimization, PostgreSQL, MySQL, Firebird (InterBase), SQLite, Oracle, SQL Server, Access Automation: COM, AppleScript, Shell scripting Typesetting: DocBook, LaTeX, CSS Source Control: Git, Mercurial, SVN, CVS, SourceSafe Packaging: Debian and Ubuntu software packaging and policies, Debian Python Modules Team member ___ Networking Experience ________ Protocols: DNS, HTTP, SMTP, IMAP, SNMP Security: OpenSSL, Certificate management, SSH, PGP, Firewalls, Secure programming practices Configuration: Routing, Tunneling, Traffic Shaping ___ System Administration Experience ________ E-Mail Servers: Exim MTA, Postfix, Cyrus IMAP, Mailman mailing lists Databases: MySQL, PostgreSQL, Firebird (InterBase), Oracle Web Services: Apache with mod_perl, mod_python, Lighttpd, AWStats, Munin, Subversion, Trac Other: Xen, RAID, Samba, Git, CVS, SVN, Mercurial, OpenSSH, BIND, ProFTPd, TwoFTPd ___ Skills by Years of Experience ________ 10 Years: Python, Linux, Debian, Apache, Windows, Samba, Bind (DNS), CGI, HTML, CSS, OpenSSH (SSH), PGP, DNS, HTTP, Routing, Exim (MTA), BASH shell scripting, CVS, Subversion 7 Years: Firebird (Interbase), OpenSSL (SSL) 6 Years: C, C++, PostgreSQL, 5 Years: MySQL, Perl, Java, Xen, LaTeX, OpenSSL, Certificate Management, SNMP, Mailman, RAID, ProFTPd (FTP) 4 Years: Django, JavaScript, AJAX, Prolog, Smalltalk, MFC, Unicode, DocBook, Cyrus (IMAP), Lighttpd 3 Years: PHP, Red Hat Enterprise Linux, Fedora, Centos 2 Years: COM, AppleScript, SourceSafe, Oracle ___ Education ________ * Bachelor of Computer Science (Software), University of Ottawa, 2005 ___ Original Open Source Projects ________ Designed, created and now maintain and support a number of open source projects: Urwid (http://excess.org/urwid/): Console user interface library with fluid interface resizing, Unicode support and a wide array of built-in widgets; Trac-based wiki and bug reporting; Mailman community mailing list; IRC support channel; Comprehensive manual, tutorial and reference documentation; Unit tests and doctests; Written in Python with some C extensions Templayer (http://excess.org/templayer/): Layered HTML template library that helps prevent invalid HTML and cross-site scripting attacks; Supports Django 1.0; Tutorial and reference documentation; Written in Python Mkzip (http://excess.org/mkzip/): Library for creating zip files on the fly with no intermediate storage required; Written in Python Speedometer (http://excess.org/speedometer/): Network bandwidth and file transfer monitor with animated console bar-graph; Written in Python using Urwid library File Tosser (http://excess.org/filetosser/): Safe, verifiable network file transfer program; Shell scripts Printing HOWTO (http://excess.org/writing/): Step by step guide explaining how to configure a Debian GNU/Linux computer for printer sharing; Translated into five languages ___ Work Experience ________ Generic Consulting Inc. (2007-present) * Wrote custom firmware in C and monitoring script in Python for an ATmega32-based embedded device * Designed an implemented interface between a microcontroller and an FPGA * Built multiple websites and services using Django and PostgreSQL and integrated with PHP applications * Enabled internationalization(i18n) of a Health Canada PDF-generating PHP web site * Migrated a Legal Information web site to a PHP content management system * Installed, configured and adminstered multiple Centos and Debian Xen servers * Built a PHP project deployment application with Capistrano/Ruby * Designed a new Django-based web site for the Ottawa Canada Linux Users Group (http://oclug.on.ca/) * Authored technical articles for LWN.net Arevco Lighting (2001-2009) * Managed all business operations * Mentored new employees * Resolved conflicts with customers * Designed advertising and display materials with Inkscape, Corel Draw, GIMP and Photoshop * Incorporated Quasar Accounting and Point of Sale software into the business processes * Built a public web site linked to the new internal PostgreSQL database with GNU make and imagemagick * Added graphic label and bar code printing to the business software with GNU Barcode and LaTeX * Automated remote backups for company data with cron, rsync and SSH Ntegrating Solutions (2002) * Designed a video clipping device that saves MPEG4 video clips based on closed caption text * Created a library to parse video streaming data in Python Dynamic Network Heuristics (1999-2001) * Created a network security device with commodity PC hardware * Designed a remote web browsing add-on module with VNC * Managed an encrypted email network with Exim and SSH Corel Corporation (1997-1998) * Enhanced the automation code in CorelDRAW and Photo-Paint in C++, Visual Basic and AppleScript * Created a legacy script conversion tool that shipped with the final product * Designed the first CASE tool used to reduce maintenance of automation code in CorelDRAW * Extended existing automation code for Mac (Power PC) and Windows cross- platform compatibility Union Logic Software (1994-1995) * Optimized video and sound modules written in assembly language * Created a timing module and keyboard and joystick handling code in C * Play tested and designed levels for a platform side-scrolling video game Canadian Union of Public Employees (1993) * Designed a data entry application for questionnaires in C++ * Worked with end users to refine software feedback and reduce user errors ___ Groups ________ * Ottawa Python Authors Group (http://opag.ca/) * Ottawa Canada Linux Users Group (http://oclug.on.ca/) on board of directors from 2007-2010 ___ Contact Information ________ Ian Ward +1-613-808-7877