Keith Foster
I am a software architect, Web 2.0/Java developer living in Melbourne, Australia. This site is a humble start to something bigger in the future -- When I overcome the initial busy hurdle of delivering the first phase of large software product, I hope to actively write some in-depth academic articles on software engineering. In the meantime you can check out my blog titled "the life" and subscribe via RSS and the roughly drafted beginnings of my Web 2.0 skunkworks project.
I believe the next big thing in software engineering is Language Oriented Programming (LOP). I have assembled some links here.
Professional Brief
I have a masters degree in computer science and a professional IT career spanning 21 years mostly in an architectural role, implementing developer tools and middleware technologies (RPC and messaging) for large corporations including State Bank Victoria, the Commonwealth Bank, Telstra, IBM Global Services, MYOB Australia and Mars Corporation / MasterFoods.
- Architecture roles : 14 years elapsed
- Real architecture work : 8 full time years combined
- Hands-on practical software engineering work: 12 full time years combined
- Technical lead roles : 9 years elapsed
- Line management roles : 5 years elapsed
I spent a year working as a computer science lecturer in China to discover adventure, re-discover myself and refresh my passion for software engineering.
I was a NeXT hobbyist/developer at one point and a lecturer at RMIT University specialising in in WebObjects after the ".com" crash. I am inspired by the brilliant design patterns inherent in Apple's Cocoa frameworks (formerly NeXTSTEP) among others because I believe if you want to do the best job you have to learn from the best.
I have spent way too much of my free time over the last 20 years doing research into programming languages (especially formal specification) and playing with bleeding and leading edge technologies. As a middleware tools specialist for IBM and in my own endeavors, I designed languages and developed software engineering tools.
In February 2007 I co-founded a small startup to build business applications for the retail industry using Java and Web 2.0 technologies. I fill multiple roles including project manager, business analyst and lead architect. Due to lack of funding I have also written the entire server side application including advanced reusable frameworks on the Java platform utilising an object-oriented database.
The commercial software is an integrated point of sale, warehousing and head office solution for multi-store retail chains and has been live since December 2008. We are currently in the process of rolling out the solution to more retail chains in Australia.
Want me to work for you?
I'm experienced in taking a software product through every stage from conception all the way to delivery with an unbelievably tight budget (see my article on exponential engineering). I am also adept at setting up management procedures and agile tools for support and development as well as mentoring others in various management roles. I also have lots of ideas for new products and have proven the developer grit to make the "impossible" happen.
To see what I have acheived on my last project visit this page on an agile development platform which elaborates on the frameworks I used as well as some the frameworks I designed and built into the "GSpice" product - a set of frameworks for Web 2.0 applications.
I'll be available early in 2009 and am always on the lookout for my next big challenging project. I like to keep in touch with what other companies are doing in the industry. If you have a project that you think I can help you with drop me a note and I'll get back to you to discuss/advise free of charge.
keith@daringdeveloper.com
Geek History
The junior years
My first computer program was the game of battle ships written in BASIC when I was a 13 year old. In 1979 very few people owned a personal computer so I wrote it on 10 pieces of paper. I never got to test it but it would have worked - I swear!
I taught myself programming in grade 9 high school before computer subjects were introduced and then finally got to run my first program in grade 10 by mailing (physical mail that is) mark sense cards to a University for execution. The debug cycle was 1-2 weeks (compared to a few seconds today) which really encourages diligence in getting it right the first time. But when the card reader misreads the lead pencil marks on the cards (which was frequent) it was a killer!
My first computer was the Hitachi Peach which was the best hobbyist computer in 1980/81 and used an audio tape to store and load programs. Soon after the IBM PC was released in 1981 the industry took a giant leap backwards and innovation was stagnated for a decade while the PC became a commodity.
My second computer was the Amiga 1000 (one of the first to enter Australia in April 1983). I chose the Amiga based on a trade article about its advanced multi-tasking operating system (OS) based on TRIPOS from Cambridge University. The Amiga and its OS was a brilliant system far ahead of its time but was unfortunately a victim of the world-wide compatibility syndrome inadvertently started by IBM and mercilessly hijacked by Microsoft.
The dark ages
The first computer I bought myself was an original Pentium 60Mhz in 1993. I did not use DOS or Windows because this was a workstation designed from the ground up to run NeXTSTEP 3.1 (the predecessor to Apple's MacOS X), not a vanilla "PC". NeXT Computer (founded by Steve Jobs) was responsible for pushing a great deal of innovation in software engineering : Object-oriented programming and many mainstream and leading object-oriented (OO) design patterns were either invented or perfected at NeXT.
At the same time NeXT was innovating with graphical user interfaces, Microsoft was gaining a monopoly in the commodity PC market with the non-graphical DOS due to luck, stupid competitors and illegal activities. When Microsoft started releasing Windows - a poor imitation of (arguably) stolen and copied intellectual property from Apple it suddenly became very hard to compete in the PC market despite Microsoft having far inferior technology. NeXT was one of the many victims including Atari, Commodore, Amiga, SGI and even Apple (in its pre MacOS X form).
NeXT, the company, finally attempted a last ditch effort to survive the Windows depression by creating OPENSTEP, a version of its OO frameworks ported to run on Windows and other operating systems. NeXT even made the technology a free open standard, IBM and Sun bought licences to NeXT's implementation and built it into their operating systems. In 1993 it really looked like the industry was finally going to have a scientifically sound software engineering platform that would save the world billions of dollars due to its inherent reliability and reuse. I was one of the few tech savvy engineers at the time that fell in love with the elegance and brilliant engineering behind the OPENSTEP frameworks and in the mid 90's I became the official NeXT reseller for Victoria, Australia.
At the time the IT world was busy getting married to Microsoft and unfortunately Microsoft's competitors all decided to fight amongst themselves and create their own proprietary competitors to OPENSTEP with the likes of Taligent(IBM/Apple/HP), Cairo (Microsoft) and Copland/Gershwin(Apple). None of these projects succeeded of course which allowed Windows to inherit the graphical user interface crown for itself despite it being a far inferior platform. Sun decided to copy NEXTSTEP and call it their own - in fact they called it Java and failed to copy the most powerful features (e.g. dynamic binding in Objective-C). To this day the world is still suffering unreliability due to poor engineering and huge costs associated with a badly architected development platform because Microsoft's competitors refused to co-operate with each other.
So, without much interest, and not much time on my hands to promote a superior and cheaper to run platform to deaf ears, it went nowhere. The OPENSTEP experiment had failed world-wide so NeXT and I focused on WebObjects instead - with some success.
After Microsoft gained a monopoly in the commodity PC market with Windows, again due to luck, stupid competitors (including Apple during John Scully's tenure) and more illegal activities, they sucked the innovation out of the IT industry and eventually its efficiency as well. Today IT projects have high failure rates, support costs are huge and software is more unstable that it was in the 80s. Even today, lesser operating system vendors are still attempting to match the technologies in NeXTSTEP 3.1 with a 15 year delay!
Renaissance back-fire
In 1996 Steve Jobs returned to Apple and effectively Apple became the victim of an "inverse hostile take-over" because all except one of the Apple execs (the CFO) were kicked out and the NeXT VPs ran things from that point on. The only "Apple" technology that was good enough to survive the transition was Quicktime. NeXTSTEP was going to be reborn as Rhapsody to replace the MacOS and OPENSTEP was to be reborn as Yellow Box for Windows. The future was looking great!
In 2000 I resigned from IBM to start my own ".com" era WebObjects consulting business hoping to move into YellowBox development (OPENSTEP on Windows) and the IT industry responded with ".com, crash, burn!" I did enjoy the WebObjects training at Apple's Cupertino training centre though. I still retained good work during the following down-turn as an enterprise architect for MYOB Australia (who used WebObjects) and later I developed the WebObjects course for RMIT University and lectured various other subjects at undergraduate and post-graduate level related to Java and Web technologies. Lecturing was definitely the most satisfying job I ever did but the pay left something to be desired and WebObjects was neglected by Apple so I rejoined the corporate IT world for another three years.
In 2005 I had become accustomed to corporate politics, no longer shocked by the massive waste of resources and disillusioned by ignorant people ignoring intelligent and cost saving strategies. My response? I took a year long working holiday in China of course! In 2006 I lectured computer science (and English) at two Universities. I rediscovered my passion for software engineering and returned to the driver's seat of my own career matching my strongest talents.
In 2007 I co-founded a startup company to build retail software solutions and am now using some of those "intelligent" and "cost saving" strategies and tools that past employers rejected. And you know what? I'm having great success with it!
Spurred on by success, my future plans include really pushing the enevelope of "cost saving" software engineering through some of the advanced techniques and tools I talk about on "The Daring Developer". I am excited to apply good science to real world problems and to share my successes and valuable learning experiences with the wider software engineering community in the hope of "changing the world". Even if its more of a ripple than a splash I'll be happy to have contributed some positive, albeit small, influence on the IT industry.
© 2008 Keith Foster. "The Daring Developer" was created for people who share an insane excitement about advanced software engineering.