I am originally from Sydney, sitting for my HSC at Jannali Boys High (where I worked too hard and gained a uselessly high aggregate), and then completing an Honours degree at the University of Sydney. In another age I would probably have been happy as a scientist, but I loved programming too much and so went into computing (or IT as it is called in Australia, which is really just the new name for Data Processing). I left home at 19 to move into student digs in Newtown, which gave me a rent problem. After a couple of student-type jobs I was lucky to land a part-time programmer role with Intergraph. I worked there from 2nd year to 4th (honours) year, which not only paid the rent but gave me a "second opinion" on what I was being taught at university and put more street cred on my resume. At that time Intergraph had a very successful CAD system, implemented using custom hardware and VAX-11 assembler on VAXes. It was the best CAD system in the world, so it was quite an exciting place to be.
My Honours year was a very intensive work-wise, so for my post-degree "holiday" I decided to go somewhere completely different - Papua New Guinea. I did not have the money to stay in the expat enclaves, so I was living on my wits, relying on the good will and hospitality of the Melanesian locals. As a result I learnt Tok Pisin (New Guinea Pidgin), a language that still fascinates me. Its pidgin origins gives it a symmetry and expressive power very similar to functional programming languages, but the same origins means that many people dismiss it as baby-talk. Take a look.
After returning from PNG I talked to Intergraph in Sydney, and was offered a job in an R&D group in Huntsville Alabama. Intergraph wanted to move to a higher-level language than VAX-11 assembler, even higher than C :-), so in 1985 we started to design an Object-Oriented language (known as OM) implemented as an add-on to C. C++ was still confined to Bell Labs and a few universities in 1985, so we did not know that we were "reinventing" the wheel. The language was much simpler than C++ (a tautological statement), but OM did include persistence, so it was really a persistent OO programming language. It was my first exposure to the incredible productivity gains provided by an object-oriented persistent programming language, an experience that was repeated in C++ and ObjectStore some years later. I still wince every time I have to connect an OO language to a relational database, wondering why we have to mix paradigms and waste so much programmer time and CPU power. The OM project was fun, but like most programming language projects it eventually died. My part in it was to develop a debugger and a scripting language.
Before OM died I moved to Intergraph's research offices in Paris, where a small team were developing a mechanical CAD system using OM. My stay was cut short because I was offered a place at Stanford, which I accepted (I still can't remember exactly why I applied for grad school, although at this point I certainly don't regret it). So in September 1986 I travelled back to Sydney for a short visit, and then on to California and another gold-rush town.
My research was officially in deductive databases with Jeffrey Ullman, although it was really a persistent programming language project (my second). I also studied some French and linguistics along the way, and spent a summer at National Semiconductor in the Raster Graphics Processor chip group.
After Stanford I joined Sun Microsystems Laboratories in Mountain View. I was part of the Clarity group, which was producing a new programming language (my third) and IDE for a C++-like project. Sun Labs had recently written a new operating system called Spring (no relation to the Java framework) in C++, and like many early adopters of C++ they liked the idea of a C-based OO language, but were disillusioned with the difficulties of C++. They wanted something similar, but without the problems. At the same time they wanted to improve programmer productivity through better tooling. Well, after a while Sun realised that they had two programming language projects with similar goals and technologies, Clarity and Java. So they chose Java and I am not famous :-(. The goals of the Clarity project have been realised through Java/NetBeans or Java/Eclipse or C#/VSN.
My part in Clarity was to design a build system (to replace make), and then later to explore the structure of "large" C++ systems so that we could explore the persistence issues. That began my interest in software metrics as a means of lifting ourselves out of the accumulated opinions that constitute "software engineering."
In 1994 my wife and I decided to move back to Australia. I continued to work with the Clarity project as a visiting scholar at the Department of Computer Science and Engineering, University of New South Wales.
After the Clarity project finished I joined Object Oriented Pty Ltd (OOPL, now known as Object Consulting) as a C++ developer. Java started to become widespread during my stay at OOPL, so I left in April 1997 so that I could work in Java. It was during this period that I did my work with PSP, as described here.
I had a variety of contracts before writing Dictus to manage the back office of Dixson Trust, a private investment company. Dictus is written in Java, beginning on jdk 1.1.2, but now on jdk 6.0. J2EE did not exist in 1997, and the few available java Object Relation Mappers were barely past the prototype stage, so I had to write my own ORM and various other infrastructure components that we now take for granted. However, Dictus's classic three-layered architecture has allowed us to upgrade the database three times, replace the report writer, replace the AWT GUI with a swing GUI, and upgrade Java numerous times. Dictus has been running for 10 years now, which is quite gratifying to me professionally. The project emphasised for me the importance of comments, readability and testability - after all these years I certainly don't remember all the code details. Too many developers only work on greenfield projects and leave before the long tail of maintenance starts. There are quite a few "best practise" activities whose value only becomes apparent during maintenance. I still maintain Dictus, and hope to be the one who eventually switches it off.
The Dictus work was the genesis of Spirus, the partnership with Karin Kolbe that founded this domain. Spirus lasted until the work dried up in the tech-wreck. For several years in the later 90's we taught a course in object oriented analysis and design at Sydney Uni. It was an evening course for masters students. We also developed a similar course for The Open University of Hong Kong.
During this period I was also working as an architect for Syscorp, which was attempting to reinvent itself as a dot-com with Telstra money, with all the silliness that went along with that era. It is interesting that many of the goals of that era have now been realised, but about 5 years later than everyone hoped. People really do buy furniture over the Internet now. I remember some early non-technical investors declaring online shopping to be an utter failure in 2001.
Contracts dried up in the tech-wreck period after Syscorp and I was under employed for several months. This period was particularly galling because the rest of the economy was doing fine, and the Australian government claiming that there was no unemployment in the IT sector. The Australian Computer Society had 11% of its members unemployed, and presumably their membership tends to be from the more successful practitioners.
Eventually I joined Distra, starting as software engineer and "rising" to test manager. From there I became Technical Manager in Sydney for RHE, which mostly involved consulting in the insurance industry. The consulting was interesting, but Australian insurance is frustrating for a java technologist because the cobol-mainframe almost always runs the whole show, the Java systems only carry data to and from the web pages.
By this stage the contracting market had come back from the dead so I moved back into contracting and free-lance consulting. I replaced the report writer in Dictus - (out with Crystal Reports due to its lack of Java support, in with Crystal Clear because it is a Java component that executes existing Crystal Report .rpt files). Eventually we converted all the reports to Jasper Reports, but unfortunately the Jasper port was not completely successful. The native Jasper report viewer is quite good, but the excel/CSV exporter and the html renderer both assume that the printed fields do not overlap. If two fields do overlap then they are silently discarded - so we had to abandon the Jasper port.
After working on the Dixson reporting system I picked up a prototype for a proto-startup for Eurofin. It was a knowledge mining/search engine application employing advanced text techniques, built around the Leximancer system. My part was a C#/.NET wrapper, which was my first exposure to that technology stack. Through Eurofin I have had various roles, acting as CTO for Capital Markets Cooperative Research Centre, consulting on software architecture and process to Dyno Dynamics, conducted several Design Recovery and IP related assignments for various clients. The largest project was a Digital Media transcoding and cataloging system for a large media company. The main system was an AJAX-J2EE web application, although there was also a SOAP connection to a C# application that applied Windows DRM to the media files. The system was designed to be very secure and made heavy use of encryption.
In February 2008 I became CTO of the startup Corkscore, a web site you can record your wine tasting notes. Corkscore's main feature is that you can record tasting notes when you actually taste the wine - we accept reviews in SMS, email, through a mobile-friendly site, an iPhone application and the main web site. The web site progressed through a series of betas in late 2008, and became fully operational in March 2009. However, Corkscore lacked a viable business plan and has never really gone anywhere.
The Great Financial Crisis/Great Recession put an end to that dream. I worked Optus (or more properly, for the Singtel Group) for three years, as manager of technical strategy in the software integration team. Eventually it became clear that all technical roles would be off-shored, which I could see happening in almost all companies in Sydney.
I was forced out by three factors;
I worked as a Software Development Manager for Amazon in Seattle, where i learned a lot, both good and bad. I moved to F5 Networks as a Principal Engineer, watching them transform from a load balancer company into a general Internet security company.
In 2016 I decided to leave the private sector and take a chance with research at The Institute for Health Metrics and Evaluation (IHME). This has been very interesting. We have our own high-performance computing cluster of around 15,000 cores, housed in the University of Washington Tower. My major contribution has been creating Jobmon, a scientific workflow manager (similar to Nextflow and Cromwell) that manages distributed applications with up to a million separate jobs. Jobmon enabled IHME to includes results for every year in the the Global Burden Disease study, that than just for every fifth year. The final application had 350,000 jobs, took 30 days, and completed without errors. Jobmon is described in this paper.
During the first six months of 2020 I was heavily involved in IIHME's work on COVID-19. More recently we have nbeen porting Jobmon from Python to R, and also from UGE to Slurm to support IHME's cluster transition. 2022 will see a big push on containerization, cloud bursting, and GPUs.
Text and Images Copyright Geoffrey Phipps 2007-2022. Unauthorised copying or reuse prohibited.