I got hooked on programming when I got a computer for my 13th birthday. This, of course, was the good old Sinclair ZX81. After that I moved on to the 48k Spectrum, Amstrad CPC 6128 and then my first IBM compatible PC running Windows 3.1 in 1991.
A couple of years later I discovered Visual Basic 3, started writing Windows UI programs and generally figuring out what I could do with the language. I joined a software house that developed airport applications and quickly had to learn the Windows API more in depth to be able to produce the software required at the time. Back then, you couldn't even create tooltips out of the box, so the Windows API was essential to help out in these situations.
Over the next 12+ years I progressed through all the versions of Visual Basic and developed various applications from single user utilities to full blown client/server applications. I also published the odd piece of code here and here. I had gained a lot of experience both in application design and development but also in database design and development. My main database choice these days is SQL Server, but I cut my teeth in Oracle, Ingres, Informix and a little AS400 to spice things up.
Then a spanner in the works happened - yes, it was .NET. My numerous tools, components, modules and general code snippets to help me develop applications really quickly were suddenly redundant. I had to start from scratch, and not only that I was a contract programmer, so I needed to be upto speed quickly. Luckily I landed a contract to develop some internal systems and the day I turned up, found myself looking at the new Visual Studio .NET v1. So, I started learning and developing on the new VB.NET environment. It was not nice, the syntax had changed, you had these new horrible keywords such as OrElse and AndAlso which simply did not sit right with me. So, after a writing an internal intranet system in VB.NET, I decided to switch to C# and allowed my legacy Visual Basic knowledge to remain intact and un corrupted by VBFRED.
Since the switch things went a lot easier, writing front end and back end systems in C# and WinForms - but the years of coding in Visual Basic still has me thinking back to the good times, when you had to learn your craft using chm help files, no tooltips and no intellisense and not just look up a solution on the internet. I still have Dan Appleman's Win32 API and Bruce Mckinny's Hardcore VB on the shelf as they were my tools of choice back then. I learned a lot from the leading developers at the time, which included Steve McMahon, Karl E Peterson, Randy Birch, Bruce Mckinney, Eduardo Morcillo and others.
Back to modern times, I've been using WPF as my main UI framework since it was in beta with my first production release of an application before MS had officially released WPF. To say that was a steep learning curve is an understatement... Although I use it on a daily basis, I still think MS have missed an opportunity with this. The implemention is resource hungry, CPU intensive and has more memory leaks than a well designed sieve. Now projects like SharpDX and Avalonia (all though this is at the early stages) highlight what it could have done.
To keep up the variety, I prefer to develop systems end-to-end, design and develop the client, service layers (if needed) the database, and everything in-between to make it all work.
I've always tried to keep everything simple, especially as the software develops, new requirements often come in that adds complication. Obviously the other reason to keep everything simple, is maintenance and to allow other developers to take on the code without struggling to understand what is going on.
Unfortunately, there are a lot of developers (especially the in-experienced) that don't have that forsight yet, and end up writing unmaintainable code.
These days I specialise in greenfield projects, and can work from basic client ideas, advising, recommending and building end to end solutions.
My past experience covers the following areas:
- Kiosk based applications using WPF and SOA based service layers
- Custom UX design
- Various Smart Client business apps using C#, WinForms and WCF
- RSA SecurID 2FA authentication framework - complete design and development of a secure authentication system in C# using .Net Remoting for a bank's customer facing internet application
- Complex database design and development of a highly normalized SQL Server database, including extensive T-SQL development and supporting data imports/exports to and from Oracle Financials
- Numerous Windows Service based software to monitor systems, perform scheduled operations and perform various background operations
- Banking software that incorporated workflow to manage mortgage applications and office automation
- Software applications using the RightFax API
- Various applications for maintaining database data
- Real-time flight management systems including slot handling, BOM, ATC updates
- Office automation using MS Access and MS Excel