My Story

me.png
 

"In fact, I would assert that you do write about psychology and write clearly with a keen critical intellect that questions sacred cows whenever possible to see what kind of grass they have been chewing. And, I perceive you as a trail-blazer, an explorer of the untried, who is an artist with code in very creative ways." - Bill Woodruff

 

I began my career (though little did I know it then) at the ripe old age of 12 when I crashed my school's PDP-11 by typing Ctrl+C .  Since then, my relationship with software development and architecture has undergone numerous transformations.  Programming on an HP-41C is not the same as writing end-of-life design analysis software for communication satellites!    

After high school, I quickly taught myself 6502 assembly language programming and implemented the first 6502 macro assembler for the Commodore PET.  I also enjoyed developing several games (Trash Man, similar to the Pac Man arcade game) and two educational games: Spills and Fills, which taught the concept of volume in different shaped containers, and Turtle Toyland Junior, a 100% graphics-only implementation of the Logo computer language, which was a prototype for teaching young children the basics of computer programming, controlled entirely with a simple joystick to create complex animations, background scenes, and musical scores.

When I moved to San Diego, my skills in assembly language were applied to various Zilog processors and I had the opportunity to write embedded controls for multi-spectral cameras and sophisticated laser-range gating systems.  I worked with customers such as NASA, creating real-time image processing algorithms to detect hydrogen fires and Woods Hole Oceanographic Institute, performing analysis on coastal plankton blooms.  I even worked on the security system for the MX Missile Train at one point!

My foray into Windows 3.1 began with Votec Corporation (San Bernadino CA) where I wrote a real time voter tally system for the City of Los Angeles, as well as developed automated ballot scanning / counting software and optimizing reports written in Oracle.

My interest in databases, automation and high-tech led me to an ongoing 20+ year relationship with Space Systems / Loral, where I originally was team leader, developing an automated satellite design tool.  It was fascinating to learn the intricacies of putting a communication satellite up into orbit!  My relationship with SS/L also encompassed emulating Internet-over-satellite communication, which had the side benefit of discovering exactly why (at the time) Netscape Navigator was a superior browser as compared to Internet Explorer.  I also solved a very complex problem that SS/L was facing -- how to test switch ring networks (on board the satellite) to extend the lifetime of a satellite by switching failed amplifiers (TWTA's) to spares.  I also became involved with the IT department which was tasked to improve the time it takes to generate the wirelist of a satellite -- you may not realize that a modern communication satellite has literally thousands of wires, harnesses, and cables.

About this time, I discovered The Code Project and set for myself the goal that I would become the #1 article author (by article count) within 5 years.  This was an interesting task because, of course, others were writing new articles as well!  The Code Project fed my need for writing, which has always been a passion, and for introducing the developer community to interesting and sometimes radically different ways of looking at software architecture and design.

During this time, I started taking a hard look at the "impedance mismatch" issue between object oriented programming and relational databases.  I had gathered abundant experience with both Oracle and SQL Server and was finding myself dismayed at concept that most Object Relationship Mappers (ORM's) to this day still implement: code generation.  While this was technically a step above hand-writing SQL, it became clear to me that in the vast majority of use cases, ORM's were an unnecessary overhead that merely added complexity to the maintenance of software.  This led me to develop a 3-tier application development environment, which I called Interacx.  Interacx consisted of three client-side tools: a form designer, a schema designer, and a report designer, which interacted in unison with the middle tier, a database agnostic SQL engine.  Borrowing from my work with XML and declarative programming, Interacx became a sophisticated tool for developing ORM-less (and in many cases, code-less) applications.   The client application was served by the middle tier, all SQL was generated from the schema declarations, and only domain-specific behaviors needed to be implemented in an imperative language. 

Interacx essentially represents my other passion in software architecture: automation.  The whole point of the computer is to do things that are describable and repetitive,  to alleviate the developer from having to write the same code over and over again, and alleviate the user from having to perform tasks over and over again.  With the Satellite Design Tool developed for Space Systems / Loral, I was already implementing declarative-based UI's and workflows, and with the advent of C# and reflection, data binding and event-driven modeling became easily expressed in a declarative syntax (XML-based) as well.  The days of my open source project MyXaml were heady indeed, as I was experimenting with different ways of expressing in XML what was once exclusively in the purview of imperative code.   

In the last few years, I have forayed into web development (specifically Ruby on Rails) and am taking some of my previous implementations and slowly migrating them to application development in the wonderful world wide web.  I have also finally (kicking and screaming) fully embraced Git and have created several open source projects, most notably of which is my concept of the next killer application, called HOPE (Higher Order Programming Environment.)

And now, if you've read all the way through this, I congratulate you for your tenacity and thank you for your curiosity, and interest!

Awards

2004 - 2007 Microsoft Most Valuable Professional, C#

2005 - 2010, 2012 - 2013 Code Project MVP

2012: Code Project, Best overall article

2012: Code Project, Best C# article

2004: Code Project article competition winner

2003: Code Project article competition winner

Articles

Over 160 articles on the Code Project

Books

Unit Testing Succinctly

From Imperative to Functional Programming (Q4 2014)