This is extended content from the D Blog post, On Tilix and D: An Interview with Gerald Nunn.
Joakim: Please tell us who you are and where you’re from, and what programming languages you used and knew well before D.
Gerald: I went to elementary and high school in the late ’70s and early ’80s, when personal computers were just starting to go mainstream. I used to walk home from school and would stop by the local Radio Shack in the mall, where they would let me play with the TRS–80 Model 1 and 3 that they had on display. That’s where I was first exposed to computers and programming in Basic.
After much begging and pleading, my parents bought me a TRS–80 Color Computer, which cost almost $1000 at the time so it was a big purchase for them, one I always appreciated. It had a whopping 16 KB of RAM and used a cassette drive for storing programs. I subscribed to a magazine called Chromasette, that would ship you the magazine plus a cassette every month, with new programs on it. I would have loads of fun trying the new programs out, and since many of them were written in Basic, I could go through them to understand how they worked. It wasn’t much of a leap from there to start creating my own programs, mostly small games of various sorts, and learn some basic (lol, see what I did there :-)) programming skills. At some point, I upgraded to a floppy drive and got the 6809 assembler cartridge, so I can dabble a bit in writing low-level code. I quickly realized though that assembler wasn’t for me.
After high school, I went to University and got my degree in Electrical Engineering. While there, I upgraded to a Tandy PC with an 8088 processor, if I remember correctly. I still largely coded in Quick Basic, since it was easy to use and understand. After first year, I joined the Canadian Army to get my education paid for and ended up serving ten years as a Signals Officer. I still programmed as a hobby and while my day job in Signals sometimes involved computers, I wasn’t programming professionally at any point. As time passed, I got newer and newer PCs and moved on to Visual Basic, which made building desktop applications very easy with its drag-and-drop paradigm.
Around 1995 or so, I bought a copy of Borland’s Delphi 1, it was everything Visual Basic was in terms of ease of use but natively compiled. In my opinion, Delphi was the pinnacle platform for building desktop applications in the 90s. All the power of C but the ease of use of VB, with an outrageously fast compiler. Shortly after buying Delphi, I started developing an SQL Editor, to support some work I was doing generating reports against an Oracle database for the Canadian Forces Tactical Command and Control Communications System (TCCCS). At the same time, I was coming to the realization that I was a much better developer than Signals Officer and maybe it was time to get out of the service.
I left the Army in 1996 and joined a small start-up in Toronto that was creating a Time and Attendance system using Delphi. This was my first experience programming professionally and I learned a lot, particularly from one of my colleagues who had a knack for OO design. I left to work in the UK briefly, and then returned to work for a new company that was founded by the same guy who had started the previous company. This time they were building a Time and Attendance application as a web application, but still needed a GUI workflow designer. I did a prototype for them in Delphi and then moved on to Java, first as applets and then developing the whole application in Java using servlets and JSPs. This was the early days of Java when there were few frameworks and performance was less than stellar, but it gave me my first exposure to JEE.
I like Java a lot as a language, and in many ways it’s still my favorite language to work in. While Java gets a lot of bad press, Java isn’t the same as it was 20 years ago, and has evolved a lot with newer capabilities and features like lambdas, the streaming API, etc. I also grew to appreciate garbage collection and how it removes a lot of the tedious bookkeeping I had to do in Delphi to explicitly free memory. Sure there are tasks not suited for Java and/or a GC, however on the whole I firmly believe that GC has been incredibly beneficial to enterprise developers, much more than it is typically given credit for.
I left that time and attendance company in 2003 after three years, as I got tired of working on the same application and problem domain. Like many developers, I tend to like change and suffer from “Ooh, shiny new thing” syndrome. I joined BEA’s consulting organization and really found my niche there, as I loved the inherent change associated with working at different clients every few months but still having the stability of a steady job. As well, it’s hard to beat consulting in terms of getting exposed to a wide variety of problem domains, so the experience was invaluable. I specialized in WebLogic and WebLogic Portal, so still working in Java and JEE development.
BEA was acquired by Oracle in 2008 and unfortunately Oracle decided to put WebLogic Portal on ice, which was a product I knew like the back of my hand. I had the option of either going to WebCenter consulting, Oracle’s portal product, or SOA consulting. After thinking about it, I ended up following my BEA manager into the SOA consulting group and spent the next 7 years or so doing a lot of integration and SOA work, using Oracle Service Bus and Oracle SOA Suite all built on BEA’s WebLogic foundation. Again, still doing a lot of Java and JEE development but now dealing with SOAP, REST and various integration protocols and payloads.
By 2015 or so, it was becoming obvious that the industry was starting to shift away from JEE and moving towards lighter-weight and more loosely coupled integrations. Customers started asking a lot about microservices and containers, areas that Oracle at the time wasn’t very strong in and WebLogic wasn’t well suited for. I decided it was time to make a change and joined Red Hat in 2016 as a Middleware Solution Architect. This is a sales engineering role, where I manage the technical side of the sales process by answering technical questions, giving presentations and doing demos. In my role, I work with the JBoss Middleware portfolio as well as OpenShift Container Platform. Most of Red Hat’s Middleware is Java-based, so that’s the language I work with the most, though I dabble a bit with others as needed. It’s only been a year, with still a lot to learn, but it’s been a very enjoyable experience so far.