Main content

Portfolio

My portfolio is a small sampling of some of the larger projects I have worked on - it is far from a complete list, and my latest projects are not listed here until they are released. See the About page for more information about my skills and interests.

1 1 1 1 1 Rating 0.00 (0 Votes)

OECL Format and Importer

OECL (open EDA component library) is an XML file format that describes electronic compoents. It is the way to import component component information into Multisim and Ultiboard. The format uses existing standards, including SVG to express symbols, IPC-2371 to express packages, and SPICE to express behaviour, all in an application-independent format. It should be usable by any applciation to express component information.

In addition to authoring the format, I designed the parser and importer for Multisim and Ultiboard, both of which are loosely coupled and highly unit tested. In fact, most of the code is entirely independent of Multisim/Ultiboard so that it could be released as open source. It uses exising open source project such as libxml2 but also includes large amounts of new code, for example I had to write a parser for SVG due to licensing restrictions (the format uses a limited set of SVG).

Languages and Technologies

C++ (MFC, STL, C++11), XML, SVG, libxml2

1 1 1 1 1 Rating 0.00 (0 Votes)

Export Schematic to VHDL

Implemented over several releases, I created features for schematic capture of logic for programmable devices (such as FPGAs), export to VHDL. I designed the initial integrated (automated) programming of Xilinx FPGAs, and extensions to support multiple versions of the Xilinx ISE tool-chain. The Digital Electronics course by Project Lead the Waymakes use of this functionality, but it has also been used in universities and has been presented at the 2014 ASEE Gulf Southwest Section Conference (Krisys Robot: Experimental Learding in Product Development).

There is a good introduction to exporting a Multisim schematic to VHDL on the ni.com website.

In addition to the feature, I also wrote several KBs (including PLD Export Timeout Error 5GN9A2XL).

Languages and Technologies

C/C++(MFC and STL), SQL, VHDL, XML, XML Schema

1 1 1 1 1 Rating 0.00 (0 Votes)

Multisim Component Evaluator

Multisim Component Evaluator was a free limited-functionality version of Multisim for the evaluation of components from component manufacturers. The product was available to evaluate components from the Analog Devices website. I jointly established the initial product definition, and implemented all functionality.

The product is no longer available, but the reusable design has been useful in creating an as-yet unreleased product.

Languages and Technologies

C/C++(MFC and STL), XML

1 1 1 1 1 Rating 0.00 (0 Votes)

Automated Regression System

I created an internal TestStand-based automated regression to perform user-level testing of Multisim and Ultiboard.

Languages and Technologies

C/C++, C#, COM, TestStand, Perl, SQL, VB.NET, VMWare, XML, XSLT

1 1 1 1 1 Rating 0.00 (0 Votes)

LabVIEW-Multisim Co-simulation

LabVIEW-Multisim co-simulation allows full system simulation (from controller algorithm to transistor-level logic) through closed-loop integration. I created all UI, the multi-process multi-threaded communication protocol, and other functionality. There is a good introduction to LabView-Multisim co-simulation on the ni.com website.

Languages and Technologies

C/C++(MFC and STL), XML

1 1 1 1 1 Rating 0.00 (0 Votes)

Multisim Circuit Explorer

Multisim Circuit Explorer is an iPad application for learning about basic electronics that I developed as a moonlighting project for National Instruments.  I designed and implemented all application functionality. The application is available through the iTunes store.

Public Mentions

The product is very new, but at least one person thinks it is cool: AlaudaProjects

Languages and Technologies

XML, Objective-C

1 1 1 1 1 Rating 0.00 (0 Votes)

Hush

Hush is a simple ringer scheduler was my first attempt at an application for mobile devices. The Android application automatically changes the phone ringer into silent mode according to a user-defined schedule. More information about Hush is on the application product page.

Languages and Technologies

Java, JSON, XML

1 1 1 1 1 Rating 0.00 (0 Votes)

Allergy Traveler

Allergy Traveler is a utility for mobile devices that shows and communicates allergies into multiple languages. It is available on the Android and BlackBerry PlayBook platforms, and there is an unreleased version for BlackBerry smart phones. The product solves the problem of displaying text for unsupported languages on the device. More information about Allergy Traveler is on the application product page.

Languages and Technologies

ActionScript, Java, Java Micro Edition, JSON

1 1 1 1 1 Rating 0.00 (0 Votes)

Qlimate

Qlimate is a pipe flow simulator designed soled by myself. The simulation uses a custom-written analog simulator for nonlinear differential algebraic equations (similar to SPICE) and is written in MATLAB using sparse matrices. The user interface is written in Java using the Swing and JGraph Diagram Component libraries.

Languages and Technologies

Java, JGraph, MATLAB, Swing, XML

1 1 1 1 1 Rating 0.00 (0 Votes)

Image Analysis

My first official (read paid) software development jobs was to create an application to calculate a contact angle for a droplet on a surface from an image of the droplet as a part of a research project at the University of Toronto.

Indeed, it is this project in particular that spurred on many future years of creating software.

In case someone finds it useful, I've put the code online (see below). It is certainly not my best work, (I would hope I've learned a few things over the last decade), and it won't run as is due to some data corruption. It might be a good starting point for someone with similar needs (if it is, please let me know).

In addition to this, there was also code for generating graphs from thousands of pictures in Excel, but that is long lost.

Files:
Image Analysis

Droplet angle detection program. Unfortunately, some of the code is corrupted, but it should be possible to determine what the code was intended to do.

License Creative Commons Date 2012-04-13 Language  English Filesize 204.92 KB Download 187

Languages and Technologies

MATLAB, Visual Basic for Applications

1 1 1 1 1 Rating 0.00 (0 Votes)

Master of Applied Science

Although I work with software, I completed a Master of Applied Science in Mechanical Engineering at the University of Toronto. The subject of my research was the lubrication of synovial joints (such as knees), and I developed a model that could explain some of the amazing lubrication properties. For more information, you can read my thesis A New Model Describing the Lubrication of Synovial Joints or view the thesis defense presentation (links below).

Although this was primarily an analytical project, I did write some software to solve one of the integrals for which there does not exist an analytical solution, and did a lot of scripting of Gnuplot to automatically generate plots.

The resulting journal article, A New Mechanism to Explain Physiological Lubrication, was the second most downloaded article from the Journal of Biomechanical Engineering in 2010.

A New Model Describing the Lubrication of Synovial Joints

University of Toronto Master's Thesis

License Creative Commons Date 2012-07-12 Language  English Filesize 1.94 MB Download 582

Thesis Defence Presentation

Thesis defence presentation for "A New Model Describing the Lubrication of Synovial Joints"

License Creative Commons Date 2012-07-12 Language  English Filesize 6.34 MB Download 198

Languages and Technologies

C, Gnuplot

1 1 1 1 1 Rating 0.00 (0 Votes)

ADC Communication Software

The posthumously named ADC (analog-to-digital converter) communication software was an application for communicating with an analog-to-digital converter chip through a computers parallel port. The software for Windows 98 was part of thesis project of high-accuracy voltage measurements.

Languages and Technologies

Visual Basic 6, Windows Forms

1 1 1 1 1 Rating 0.00 (0 Votes)