Posts tagged with personal

My own Delphi story - celebrating 25 years

Setting the scene…

It’s 1995 and a wiry looking engineer in need of a haircut is working at a tech services company in the Channel Islands. The island is Jersey (you can the French coastline on a clear day) and he’s over here for a week or two for training from his nearby home of Guernsey.

This company does everything from IBM AS/400 maintenance to custom PC software development - the developer involved was brought in and trained to work on a banking package on those AS/400s but has ended up on the PC development side through a series of improbable events.

Visual Basic 3 has been the company tool of choice for these tasks - supplemented with Microsoft Access for the data-driven projects (normally backed by Microsoft’s brand-new SQL Server which is taking over from Sybase installs). He’s been helping work on the in-house “In/Out” software the company uses to track who is the office vs who is out on calls (it is 18 months before the first mainstream instant-messenger product - ICQ - will appear and offer similar functionality).

He’s also been working on a document imaging and indexing solution (iStation) for two local government organizations (they love to make a solution for one company then tweak it for others like many ISVs) and that is the limit of his VB experience. He’s faced the insurmountable wall of Borland C++ and OWL enough times to feel that when it comes to VB… “This is the way”.

Arrival

I’m kicking around in the narrow row of desks - unlike the sales team we’re not important enough to get dividers between our desks to turn them into semi-cubes.

Screenshot of Delphi 1 IDE in action A colleague named Mike strolls in, drops his bag and announces ambiguously “I got it” and proceeds to power on his PC. “It” is a copy of Delphi - and a bootleg pre-release version at that (if I recall correctly).

I watch and ask questions as he and a few other developers crowd round his giant 17” CRT to check it out. At first glance it looks like Visual Basic with a few more included controls, a slicker IDE, but a more confusing language. Over the week that follows he keeps showing us new discoveries and interest increases.

Before the week is up I have a copy of the ZIP on my person to fly back home with.

Back home I get past the confusion of unit dependencies and Pascal idiosyncrasies like := for assignment and dig deeper discovering the beauty of the VCL - Visual Component Library.

My journey is aided by a curious programming book the likes of which I have never come across before or since. It is a humorous tale of a private detective also writing Delphi apps on the side. It is called the Delphi Programming Explorer and helps me get over the hump.

The VCL is hard to describe if you’ve never used it but I’ll give it a shot. It was basically like the VB controls but they gave you the source code and there was a proper hierarchy to it. Up to this point in my life I thought Object Oriented meant you had classes and instances of classes. I had no idea about interfaces, inheritance or good OO design but Delphi and the VCL introduced it to me.

I was hooked and when Delphi 2 came out it was time to dig very deep and buy my own copy.

Using it

Icons for controls in the Envy Delphi Development packIn time I pumped out an About95 control then a Delphi Control Pack that included a font combo box, a gradient control, an improved list view, a button that popped out a menu control, a splitter control, a color combo box. Useful functionality that was otherwise missing but often seen in other non-Delphi apps.

I was shocked years later when I picked up the book Developing Custom Delphi 3 Components that my controls and source were included on the CD.

It got so many downloads that my local ISP got in contact and asked me very nicely, in the absence of any formal limits on bandwidth down back then, to host the ZIP elsewhere as that and a few other tools I’d uploaded to my personal site were now responsible for a significant % of their bandwidth. Double digits if my memory serves me correctly and so the site shifted to Demon Internet.

Hot off the heels of that “success” I tried my hand at shareware again with the Envy Delphi Development pack. It included polished and extended versions of everything in the previous pack but now also an image view control, a database-bound label, a progress bar, shading control (like Borland C++), a tip-of-the-day control that needed nothing more than a text file of tips, a frame control to allow inset/outset and a bitmap tiling control for more texturing. At this point icons are sufficiently basic in the world that I can mostly get away with designing my own. I am a team of one.

I also put out my first proper shareware tool that actually provided a trickle of income for a while in the form of my Windows monitoring tool for “Remote Access BBS” called Monitor/RA. At one point Diamond Multimedia purchased a commercial license to monitor their European support BBS.

Later on I’d even make some controls that drew themselves looking like MacOS Platinum and NextStep.

My site back then had a heavy Delphi focus and is in love with small fonts, tiny icons, pastel shades and almost-invisibMore tle watermark textures.

Alternatives

I never managed to really get into Java desktop development despite many attempts at getting behind the JWT and the later Swing libraries. The screenshots looked good but it never felt properly native like Delphi did. Having to install a non-trivial runtime was also off-putting especially for these small side-projects.

Borland C++ still felt like a large mountain to climb and I had no reason and so those books stayed on my shelf for many years in the “I should get to this”. Of course OWL died as Microsoft Visual C++ came up - a product that has never really delivered on the Visual unless you were prepared to commit to another mountain in the form of the MFC.. a mountain that might have been climbable with a Visual designer but that never materialized.

Visual Basic was hard to go back to. It immediately felt limiting and having to learn COM to develop controls was a show-stopper. After I had picked up Delphi 2 in fact I never touched VB again as far as I can recall. I instead spent a lot of time in Microsoft Access connected to SQL Server, then onto ASP and then finally ASP.NET.

I remember being extremely excited when WinForms was announced. C# is a language I came to love more than Pascal and WinForms was a definite improvement over VB - you could now write your own controls much more easily but .NET Framework eschewed nice object-orientated design and patterns and instead just went with some inheritance and helper methods - ironically something Java did a much better job of. Comparing IO in .NET vs IO in Java really highlights this - the latter more than happy to provide wrappers and layers for great composition vs .NET lumping tons of stuff into static methods on File and providing a bunch of Readers you can never remember.

During my degree we were also exposed to Borland C++ builder which took the VCL and provided you with the ability to use C++ instead of Pascal. I quite enjoyed using that and just this year I’ve found myself wanting to create a single-executable solution but C++ was again something nobody in my circles at that point was asking for.

Legacy

Screenshot of Disk Image Managers sector overviewI kept buying copies of Delphi (at every alternate release, it’s my own money) and found myself creating a tool for working with disk images of 3” floppy disks (yes, not 3.5”) used by Sinclair, Amstrad and Tatung machines. This was really for the archiving community and Delphi was the tool I fell back to - I had zero interest in telling people to install big run-time packages. It’s still maintained today although has been subsequently ported to the free-software Lazarus alternative.

At one point I was also with development of a Spectrum emulator developed in “Delphi” but the developers dove into x86 assembler too often for me to feel useful which irked me - I would rather work on something maintainable than cater to a small crowd of people that don’t want to upgrade their machines for more power.

Pascal always felt a little awkward to me but the VCL, IDE and those self-contained small executables (200KB in initial versions IIRC) were great and living on a small island meant that programming jobs were scarce and almost exclusively limited to COBOL on AS/400’s or Microsoft tools on Windows.

The draw for me was always this idea of small standalone exes which is hard to achieve on Windows with a decent GUI builder. There are third-party options but every one of them seems to fail to provide the seamless enjoyable experience Delphi and the VCL did and many of them are either poorly maintained or can cost a small fortune.

Interestingly Delphi and C++ Builder and now available in free community editions - confusingly bundled together into the name RAD Studio. I’ve been wanting to write a very specific Windows native app of late that needs to call a bunch of Windows APIs and so C++ Builder is back on my machine. (I just wish the small binaries of old hadn’t become megabyte monsters… I’m sure I don’t need most of what’s in there)

[)amien

I know some of this is a bit gushing, that’s nostalgia for you I guess. I can at least assure you that I receive no compensation/kickback/affiliate from Embarcadero who currently own Delphi/C++ Builder and RAD Studio (I had to Google their name, seriously).