Projects
Coding projects I've worked on
Why this section?
There are 2 things you can do with your time:
- Produce
- Consume
A good deveoper understands this difference and has a proven background of produced products. A good developer also consumes new information constantly. A good developer has a good balance of both.
Listed below are some of the projects I've worked on in the past years.
Projects I've worked on throughout my career
Firefox
I contribute to Firefox, and as of July 06, 2011 I work full time on Firefox. I work mostly on Windows related code in C++, but also XUL, XBL, Javascript, CSS, Python, and more.
ROBOBAK (Fully released product)
Enterprise level Windows backup software made in C++ which offers remote office branch office (ROBO) backup with features such as deduplication, agentless backup, replication, and more. Offers a WCF HTTP REST based SDK. Was acquired in 2011.
Vision Backup (Fully released product)
Micro business backup of any hard drive, network computer, or FTP/FTPS/SFTP site to another hard drive, FTP/FTPS/SFTP location, CD/DVD/BluRay, or tape drive. Was acquired in 2011.
Cryptex (Fully released product)
Encrypted and hidden hard drives for Windows computers. Was acquired in 2011.
Null FTP (Fully released product)
FTP, FTPS (FTP over SSL), SFTP (FTP over SSH), HTTP server and client software. I still use it today as my primary FTP client and whenever I need an FTP server. Was acquired in 2011.
GlobalDrive (Was a released product, no longer around)
Worked on project via contract work. Windows drive which has a back-end of WebDAV, similar to xdrive. Coded both the Windows C++ source side and the C# ASP .NET web side.
Microsentry (Was a released product, no longer around)
Worked on project via contract work. Certified email service. Worked on Windows only via a TDI filter. On sender side it, would insert and certify that email came from a specific sender. On the receiver side, it would certify that the email came from the specified sender.
Auction Tool (Was a released product, no longer around)
Worked on project via contract work. Used eBay API to insert special visible counters on auctions and kept track of a lot of tracking information. Similar to Google Analytics for eBay items though.
BidGuru (Was a released product, no longer around)
Worked on project via contract work. Used eBay API to make a bid on an item just before the item expired.
NullShare
NullShare is an open source C++ file sharing application. For more information, please visit the NullShare website. I stopped working on this due to legal concerns that other companies were going through.
NullShare Convert
NullShare Convert is an application for converting video file types. It basically ties into ffmpeg command line tools and outputs a GUI and preview. The product is used by my wife but I never actually released it.
Internet Library
Large library built from scratch using C++ that supports FTP, FTPS (FTP over SSL), SFTP (FTP over SSH), SMTP, POP3, HTTP (with support for cookies), HTTPS, TCP, UDP, HTTP Servers, HTTPS Servers, FTP Servers, Proxies, HTML parsers and much more. Runs on windows, but can easily be ported to linux/unix/. This library is the basis of several large scale applications.
TDI Network Filters
SMTP and POP3 low level network TDI filters. Has the ability to modify, block or add to network traffic.
Virtual disk drive implementation
Disk drive that windows can communicate with. Actual data does not exists but windows and other programs think that it does.
Windows Networking (LAN)
Supports functions for easily working with the windows LAN including, searching for files, connection to computers, reading/writing operations and access to administrative shares. Also has the ability to treat an FTP/FTPS server as a computer on your LAN. Library gives you access to these resources in the same way.
True 3D Tetris
Fully customizable Tetris game along the x, y and z axis. You can specify what type of blocks you want to play with and you can specify how big you want the board in the x, y and z axis respectively. Game is played with left and right arrow keys moving left and right, and the up and down arrow keys for moving towards you and away from you. Supports particle explosions when full lines are complete. Supports several other features as well.
Scheduling Library
Easy access and control over all windows schedules. Used in several large scale applications.
Image Flow
An image manipulation library that supports opening/obtaining info and modifying many different image file formats. Also has support for 'layers' in images and many different methods of blending.
Counter HTTP server
Generates images based on current count for given user. Responds to HTTP requests.
Computer Vision
Several basic utilities related to computer vision and A.I. Most of this work was done using Video4Linux and Video4Windows libraries.
Pyroflow MSN
An open source implementation of an Msn Messenger client build from scratch using C++ and Qt3. Portable to Linux/Unix/Mac/Windows/BSD.
Pyroflow Archiving
A library to pack and unpack a set of files into a single archive file. Similar (but more efficient) then tar. Runs on any platform. This is the core of the enterprise software Vision Backup - Enterprise that is sold worldwide.
Call .NET web services without .NET
Some SOAP wrappers and other misc to easily call .NET web services from any c++ application.
Stego Flow
Utilities and a library to encode data into an image and later decode it.
Adaptive Huffman Compression
Utilities to compress and uncompress data using an adaptive Huffman technique. Originally started as a school project but has been significantly improved since then.
Graphical Pipeline
Created an application to perform Modeling, Viewing and Perspective Transformations along with line Clipping and resizable viewport representation within a window. It implements part of OpenGL graphical pipeline and uses a cube representation to test the correctness of the transformations visually. Implemented using Python and C++.
Router Emulator
This program emulates the operations of a router and communicates to other routers in the network to keep track of routes for packets and minimize the time taken for packets to travel. It is a version of OSPF protocol with Dijkstra's algorithm. It was built in Unix using UDP and C++.
Reliable transfer protocol
Implemented the Go Back N protocol for reliable transmission and delivery of packets across a network. It is built on top of UDP. It was tested with both Client and Servers running over a congested network. This was build on Unix using UDP and C++.
Simple Language Compiler
Implemented a compiler that translated programs, made in a c++ like language, into assembly code (MIPS) and executed it in a Unix environment. The compiler makes use of parsing trees, Context Free Grammar (CFG) and bottom up parsing to generate the Assembly code. Used technologies include java, JLex, Cup, and Assembly.
Misc data structures and algorithms
A collection of data structures that I created for my own personal use.
Firefox Extensions
Some experience writting Firefox extensions such as tracking user habbits.
Qt Extensions
Several reusable Qt widgets.
Pyroflow Briefcase
Briefcase used to synchronize files between 2 mounted directories in linux/unix based systems
This web site
The entire site that you are visiting and its previous revisions. The current one is in Django, the last one in ASP .NET (C#), the one before that in Flash and the original one was generated from C++ code. The C++ code was to get around not having a templating system (or master page system if you prefer).
Pyroflow web site
The entire source code for the .NET, XML/XSLT driven web site. Also comes with an app for updating the web site from any remote computer
Waterloo Areal Robotics Group
Fully autonomous flying robots (This project is a group effort and is not undertaken by me alone)
Nachos Operating System
My CS354 Operating systems group project
Various tests
This section holds a variety of tests helpful for getting started on a new project fast and easy.
Hundreds of other libraries, applications and custom software jobs
Lots and lots of various projects.