Andrew Eidsness [ resume.pdf ]
I'm based in Ottawa Canada and have experience building embedded software as well as related professional tools. I have worked in several industry verticals including telecom, consumer devices, and avionics and have been involved in the development and maintenance of popular software tools such as Eclipse and Rational RoseRT.

Clients
Selected clients include:
Lumentum Operations LLC
TrueNorth Avionics
QNX Software Systems
JDSU
DRS Technologies
Zeligsoft Inc.
Edgewater Computer Systems
Espial Group Inc.
Presentations and Publications
2010: Models, Generated Code, and Eclipse
A presentation describing a process for integrating generated code UML editors. The code is stored as an attribute within the model, but presented as part of a flat source code file.

2004: Branding your Application
An article that I co-authored with Pascal Rapicault on the process for applying your own branding to an Eclipse-based application.

1999: Generating Java Class Files from Smalltalk Objects
A JVM compiler for running Smalltalk code on a Java virtual machine. I implemented this compiler as the topic of my university honour's project.

Projects
My consulting projects can be broadly categorized as tools development on the Eclipse platform and embedded development using C/C++.

CDT (c. present day)
A significant amount of my development work since January 2013 has been for Eclipse CDT. I have implemented features in client's private forks as well as the upstream repository at eclipse.org. I've generated a list of details for my public contributions.

The largest feature has been changes to the core indexer to support indexing of Qt-related meta data.

Eclipse ChooseWorkspaceDialog
My most popular Eclipse contribution
Platform UI (c. 2004)
As a member of the Eclipse PlatformUI team during the Eclipse 3.0 release I was able to contribute many features and bug fixes. Some highlights:
  • Bug 32147: Workspace Selection Dialog
  • R21-style presentation user preference to make 3.0 workbenches look like 2.1
  • Bug 52213: Extensions points to make RCP applications brandable. Further described in an article that I co-authored with Pascal Rapicault.
sun eclipsed by trees
RCP Application Development
I designed, implemented, and continue to support an Eclipse RCP-based application for editing and packaging content for the client's proprietary content system. The environment provides editing of html and javascript content with some propriatary customizations. It calls external tools to process the created artifacts.
Code Generators
I have implemented multiple production C/C++ code generators for Eclipse-based modeling tools. As part of developing these code generators I implemented a technique for integrating with the Eclipse CDT editor. I presented this technique at an Eclipse Demo Night, the slides are available here.

embedded tunneller
Event Framework
I designed and implemented a publish/subscribe library for use in a linux-based embedded system. Shared memory was used to hold the subscription table and event payloads. Unix domain sockets were used for signaling.
Fault/Alarm Framework
I designed and implemented a fault detection and reporting framework for use on an Analog Devices DSP. The framework applied hysteresis to the raw readings and hold-offs to the detection times.
Embedded State Machine Frameworks
I have implemented multiple state machine frameworks in C for use in embedded devices. The state machines typically support storage for the currently active state and allow a way to associate behaviour with transitions between the states.
Logging Framework
I designed and implemented a logging framework which wrapped syslogd. A unique feature of the framework was the ability to suppress messages in the client application, rather than only in syslogd. This reduced inter-application messaging which improved overall system performance.
Open Source Porting
I have ported a number of open source libraries for inclusion in an embedded middleware platform. In all cases these projects needed to be adapted to the platform’s build environment, the types needed to be mapped, and the middleware’s existing API needed to be implemented. Some of the projects that I’ve ported in this manner include:

OpenSSL MatrixSSL
libPNG libJPEG
zlib LZMA
FreeType Expat (XML parser)

web of lichen
Web Services
I have designed, deployed, and continue to maintain a web service using JSON data and REST-based paths. The service was originally deployed on Google AppEngine, but has since been ported to a cluster of Ubuntu 12.04-based computers (AMI instances on AWS). The application is deployed on Jetty and uses memcached for distribution among the multiple edge servers. PostgreSQL is used as the database.
Web Sites
I have designed, deployed, and continue to maintain a web site for time tracking and invoice generation. The backend uses PostgreSQL as the database, which is accessed from a Jetty-based application that returns JSON data.

The front-end of the application makes heavy use of jQuery and Backbone.js.