Resume :: Sample Code


Here is a small selection of code files I have authored in various languages that demonstrate my abilities and preferred style. Links are also provided to the broader packages the files come from. If you feel these files contain any errors or poor style, then by all means let me know so that I can learn and improve them :)


Python

highlighted source file ::

ZyXLiveInstallerGUI.py

project ::

The ZyX Rebootless LiveOS Installer

Browsable Project Source Tree

project summary ::

A GUI OS installer, that supports the installation of fedora and derived 'Live' operating systems (livecd/liveusb). Unlike traditional *nix installers, this one does not require a reboot at the end of installation. Really. The first mainstream distribution to make use of it is the next major release of the SugarOnAStick project. SugarOnAStick grew out of the OneLaptopPerChild project and its Sugar desktop environment.

notes ::

This is the core of the implementation of the pygtk GUI for my Rebootless LiveOS Installer. The user interface design and layout was created with the excellent glade rapid GUI development system. As you can see, the actual non-GUI parts of the installer are abstracted in a seperate referenced python class, which for the moment is actually just a thin wrapper around a thousand line bash script. I intend to pythonify the installer at some point, though being dependent only on bash and not on python is not without its merits for an OS installer.


Bash

highlighted source file ::

zyx-liveinstaller-cli

project ::

The ZyX Rebootless LiveOS Installer

Browsable Project Source Tree

project summary ::

See Python entry above.

notes ::

This is the actual backend/commandline installer script for zyx-liveinstaller. It takes at most 3 arguments, representing the destination target devices to install the running LiveOS to. Root filesystem device, optional boot filesystem device , and optional swap partition. It then uses some rather esoteric, but extremely useful device-mapper commands and configuration to live migrate the running root filesystem from the install media to the destination storage. It is large at a thousand lines or so, with an extremely large 'main' section. However given its nature as a large monolithic non-interactive process, as well as the well-formatted plethora of code comments, it is quite readable. Few people value basic shell scripting more than I. I hope the use here of a wide variety of external programs via command line demonstrates the value of bash for rapid development and integration of other software components. That said there is a high probability that I will rewrite this in 3000+ lines of python someday.


C

highlighted uncommented source files ::

server.h
server.c
mode__intro__main.h
mode__intro__main.c


project ::

Guitar-ZyX::MasterControlProgram

Browsable Project Source Tree

project summary ::

This is my most interesting piece of Nintendo(tm)-DS homebrew code. It allows the portable game console to act as a wireless remote control for the Rakarrack open source realtime guitar-f/x processor. When physically mounted or attached to an electric guitar, it can act as a touch screen 'whammypad'. I.e. it allows you to use the touchscreen to linearly control any two of about a hundred different effects parameters in realtime as you play.

notes ::

These files have had comments stripped from them, due to small probabilistic hope that I can translate their educational value into financial support for myself. Potential employers are encouraged to drop me a line and request an offline sample of the non-GPL commented version of the source code files.

The server.c and associated header file provide most of the implementation of the PC server code. This includes relatively standard use of low level tcp-ip socket code, including the use of the fork system call/function to marshall many potential clients.

The mode__intro__main.c and associated header file provide the implementation of one of several 'modes' of operation of the NDS client. This particular mode simply fades in and out a splash screen and some user instructions. The user may hit any key to preemptively jump out of the intro mode. Because the popular glut framework is not yet available for the NDS homebrew environment, I implemented a similar infrastructure where initialization, input, idle, output, and exit functions can be registered. Each of my modes define these standard functions. In many ways this is akin to virtual function implementations in C++, and this demonstrates my ability to use object oriented programming techniques even in a language that does not strictly enforce them.


Javascript (&CSS, HTML, PHP, MySQL, a.k.a. lamp+ajax)

highlighted source files ::

ccc_login.js
ccc_login.html
ccc_login.css
ccc_login.php(not yet public)


project ::

CloudSession Control Center

project summary ::

CloudSession.com is pure VapourWare. Eventually it may be some really cool web hub for virtually collaborating musicians, but for now, it is definitely a fun project to help me develop the pieces of my skillset that needed filling. I.e. lamp+ajax. Note also, that it was a very conscious decision to build my own minimal system from scratch to learn the tools, before heading down the long term path, of deploying a popular open source content management system.

notes ::

Javascript definitely turned out to not be as bad as I had been slighly prejudiced in believing. And despite the slightly clumsy CSS you'll find on my website, which started as a copy of someone else's creative commons licenced site design, the CSS here represents a deep understanding as it was written from scratch. Not that it, or any of CCC is all that much. It is all very much a first HelloWorld++ level project. But hopefully it demonstrates what I'm capable of at this stage in my carreer, when coming quickly up to speed on 'new' languages. Finally, note that because I am such a beginner, I'm keeping the PHP closed source for a while. Eventually I'll get my security through open source, but now, I'm still learning stuff rapidly day by day. I'd be glad to provide that code to any potential employers. Basically I wrote it from scratch, though using these two login system tutorials as a reference.