NATS 2.0 will provide a multi-tenant security model that uses Accounts, configured by JSON Web Tokens, to configure server access. Rather than forcing administrators to hard code account information in the configuration, the NATS server can load account JWTs from a URL. In April ...
About Me
I consider myself to be a software developer and problem solver. I began my journey as a developer trainer at NeXT Computer where I taught NeXT's Developer Camp and co-founded their Mentorship Program. My friends and I left NeXT to start a training and consulting company called Paradigm Research (PRI) which we grew to over a million dollars in annual revenue before we sold it to a soon to be defunct Internet consulting company. That was the beginning of the Internet bust, and to be honest, we got out just in time. While we lost some money, we learned a lot. My main regret is that the people we hired weren't treated better by their new boss, who, it turns out, was horrible at business.
After leaving PRI, I began working at TIBCO Software, where I lead the development of the Designer platform. Designer is a graphical interface that unified the TIBCO product suites. While at TIBCO I lead development of the user interface for Business Works, their unique and, if I might say so, very powerful visual programming environment for business analysts. I was a member of TIBCO's Horizontal Architecture Committee for many years and pushed the company toward a number of new technologies. During my last few years at TIBCO I worked with the messaging group to build a user friendly configuration interface. The last project I worked on was released under the name eFTL and provided a bridge between web sockets and FTL. I developed the initial version of this bridge including designing the algorithms for optimizing message parsing and message matching.
In July 2013 I joined Fog Creek Software. In the fall of 2014 I took over as the team leader for the Kiln team for a few months during a reorganization. After we streamlined the management structure, I returned to the technical staff to work on Kiln and FogBugz. In April 2015 Fog Creek and I decided to part ways.
In June 2015 I joined Google as an engineer. After a few months, and some discussions with my boss, I took on a management role and managed one and then two teams in the Brand Lift organization. During my time at Google I onboarded several new hires, helped a few of my team members get promotions, helped some others transfer to new teams, and oversaw a lot of great software development. Ultimately I left Google in May 2018 due to the commute. I was spending 3-4 hours a day on the road and just couldn't do it any more.
With a little help from friends I joined Synadia at the end of May, 2018.
Along the way, I earned a Ph.D. in Nuclear Engineering with a dissertation entitled Multi-Grid Genetic Algorithms For Optimal Radiation Shield Design. My dissertation introduced a novel form of genetic algorithms and applied them to shield design. I also earned a fourth degree black belt in Jang Mu Won Hapkido, a challenge and sometimes painful experience. Although it would be hard to say which was more challenging, or painful. I also wrote eight books, if you count second editions, on topics ranging from Perl to Enterprise Java.
Below are descriptions of some of the projects I have worked on over the last twenty years. Projects are listed in reverse chronological order with a context in parenthesis by the title. All work projects are labeled (work). In some cases, the dates are approximate. Click on the title to see more details about the project.
-
2019-04-26
-
2019-02-09
In January of 2019 I wrote a 2 day programming class on NATS. The goal of the class was to teach our customers how to solve problems with NATS. The course is designed for developers who want to write distributed applications. It is structured around a series of common distributed ...
-
2018-07-16
I was the lead developer for the 2.0 version of the Java client library for NATs. This new version provides: Developer control for callback threads High performance with support for millions of messages a second Extensive documentation and examples Extensive test coverage (95+ p ...
-
2017
In February, 2017 I took over the Conversion Lift team in addition to managing the Search Lift team. Conversion lift uses advertiser defined conversions along with A/B tests to determine the effectiveness of an ad campaign. When the team moved to LA it was a single person, the te ...
-
2016
I started at Google in the Search Lift group. Search lift uses search activity to determine organically if advertisements are working. In November 2016 I took over as Engineering Manager for the team and managed it through a number of transitions and onboarding of new members. Un ...
-
2015-2-21
On February 21st, 2015, I took my 4th degree black belt test in Jang Mu Won Hapkido. Luckily I had two great partners in Mr. Castle and Mr. Alva, and passed. I think I made my teacher Mr Kim proud, at least he was willing to take a picture with me. I also grabbed a picture with ...
-
2014
In early 2014 I started on the Kiln team at Fog Creek. One of my first projects was integrating Kiln with Trello, which I ultimately blogged about on the Fog Creek site. Some of my other contributions to the team have been: Documenting the deployment process Starting the Operati ...
-
2014
One of my big tasks at the end of 2013 and the start of 2014 was to implement a redesign of our account management page as part of a project we called Wallstreet. Working with a Tina, a designer at Fog Creek, I implemented a Knockout.js page for updating your FogBugz and Kiln acc ...
-
2013
In July 2013 I started on the FogBugz team at Fog Creek Software. My main focus on the team was implementing new features and replicating features from our old code base into the new one. Some of the key areas I contributed to are: Case event editing - which allows you to edit e ...
-
2013
The last project I worked on at TIBCO was eFTL. eFTL is a bridge between FTL clients and mobile/web clients. The bridge maps FTL messages to web sockets. I designed the initial release of the eFTL as well as the message protocol and Java client library. Perhaps the most interesti ...
-
2012
In January of 2012 I began creating a new version of the Studios application using a single-page application model. This new version uses a Javascript+HTML user interface on top of a number of Python-based web services. The web services are written on top of the flask application ...
-
2011
In 2004 I returned to graduate school at the University of Michigan. My PhD in the nuclear engineering department focused on using genetic algorithms to design radiation shields and a new method of genetic algorithms called multi-grid genetic algorithms which improves the perform ...
-
2010 - 2013
I am the lead architect and primary developer on the realm server, currently in version 3.0. TIBCO FTL is a low latency messaging system. FTL relies on a server called the Realm Server to manage configurations. Administrators edit the realm as a JSON file, or using the Realm Serv ...
-
2010 - 2013
I am the lead developer on the FTL Java API, currently in version 3.0. TIBCO FTL is a low latency messaging system. The primary FTL library is written in C, the Java API uses JNI to access to the C API. Using JNI has allowed FTL to achieve very high performance and very low laten ...
-
2010 - 2013
I am the lead architect and primary developer on the realm server GUI, currently in version 3.0. TIBCO FTL is a low latency messaging system. FTL relies on a server called the Realm Server to manage configurations. As of 2.0 the realm server uses a web-based graphical user interf ...
-
2009
In 2009 I created a Ruby on Rails application to replace the Microsoft Access application I had created earlier. This rails application used the standard server template-based HTML generation model on top of a MySQL database. Simple forms were provided to enter information: and ...
-
2008
In 2008 I started a personal productivity project called Done!. Done! was a simple yet powerful tool for managing your tasks, designed to be configurable and flexible. Ultimately work and graduate school interfered and I shelved Done! before it was ready for release. Regardless, ...
-
2007
TIBCO EMS is an implementation of the Java Messaging Service model in use an numerous Fortune 500 companies. Many companies deploy large groups of EMS server's to support high persistent message volumes. In 2006 I began working with the Messaging group to create a tool for config ...
-
2006
In 2005 TIBCO began investigating moving Designer to Eclipse. I was the main architect and development manager for this investigation under the working name luna. The project culminated in a demonstration at TIBCO's user conference, TUCON to get customer feedback. Luna included a ...
-
2004 - 2011
Genetik is a set of Java libraries I wrote to explore optimization techniques for my dissertation at the University of Michigan. The primary goal of Genetik was to provide an extensible library for exploring optimization routines, especially GA, for nuclear engineering problems. ...
-
2003
In 2003 I was a co-author for the Wiley and Son's book entitled J2EE AntiPatterns. J2EE AntiPatterns focuses on common design mistakes in J2EE solutions. I am writing three chapters for this book the first is on Distribution and Scaling, the second on Message Driven Beans and th ...
-
2003
Prior to 2003, TIBCO had several process engines. A project was started to unify the functionality of these engines. My role was lead user experience architect and user interface development manager. In this role I was responsible for many of the key design decisions in BW's proc ...
-
2003
I originally built a Microsoft Access application for the Hapkido studio that I train at. This database with a VB scripted front end allows the owner of a studio to track student information, their parents and siblings, and the billing information for each family. Student progres ...
-
2001 - 2006
Designer is a Java swing-based application created to provide TIBCO with a platform for deploying all of its application user interfaces (UIs). When I started at TIBCO, I was tasked with two goals: Simplify the user experience Unify the user experience Prior to my arrival, TIBC ...
-
2000
In 2000 I was a co-author for the IDG's book entitled Active Server Pages Developer Guide. ASP Developer Guide is an introduction to Active Server Pages. This book uses both VBScript and JavaScript in a highly example driven format to teach basic concepts and techniques as well ...
-
2000
In 2000 I was the author for the Wiley and Son's book entitled Enterprise Linux At Work. Enterprise Linux At Work covers 10 projects for Linux developers. Projects range from a Perl/CGI on-line catalog, to a messaging server, to a simple CORBA application. The focus of this boo ...
-
1999 and 2001
In 1999 I co-authored the Wiley and Son's book entitled Developing Java Enterprise Applications. Two years later, in 2001, I was lead author on the second edition. Developing Java Enterprise Applications introduces the Java enterprise libraries. Servlets, JNDI, JavaServer Pages, ...
-
1999
Now You Know was the code name for a project at PRI to create an on-line training site. This site would allow teachers to create courses and deploy them on the site. Students could search the site for courses of interest and navigate them with a series of Web pages. Although neve ...
-
1998
In 1998 I was the lead author for the Wiley and Son's book entitled Programming JFC. Programming JFC is an introduction to the Java Foundation Classes. Over 100 examples are provided, including an application for searching HTML files and a Jar file viewer. The title is an exam ...
-
1997
In 1997 I was the editor for the second edition of Waite Group Press's book Perl 5 How-To. Perl 5 How-To uses a recipe-style to provide examples of commonly encountered problems and solutions in Perl. ...
-
1997
Profile was a distributed learning environment. Courses were created as a set of HTML files. An outline is used to generate a description of the course, along with a set of objectives and test questions. The course is loaded into the browser along with a Java applet that can be u ...
-
1996
In 1996 I was the lead author for the Waite Group Press book CGI How-To. CGI How-To introduces the techniques and concepts used to program CGI scripts. Numerous examples are provided in C and Perl including how to get information from the CGI request and respond with dynamically ...
-
1996
One of my first projects at PRI was to create a web-based room management system for one of our customers. This system was built the web was very new so the only option for development web applications was CGI. The room management system kept track of a set of rooms, organized in ...
-
1995
Collagist v2.0 is a NEXTSTEP application for combining several files into a single Postscript document. Text, Postscript, EPS, TIFF and other files can be combined into a single file that includes re-defined margins as well as page numbering. I developed Collagist v2.0 under cont ...
-
1994
In 1994 I was working at a small company I helped found. We had a logo designed by a graphic artist, but I didn't have a copy of that logo. This didn't matter until we ran into a problem at the printer and I was the only person that could solve the problem. So since I didn't have ...
-
1993
Sword is a word processor and page layout application primarily designed for creating training materials. I wrote Sword (short for Stephens' Word Processor) while working at NeXT to use when creating training materials. Users of Sword can: Import Postscript documents, creating ...
-
1993
While working at NEXT one of the other developer trainers motivated the creation of hypertext course materials. The NEXTSTEP text framework allowed the use of hyperlinks, so this concept was a logical outcome of the libraries capabilities. After some discussions, I took this idea ...