Stewart's History with Technology
I would best be described as a technology generalist.
Primary School (1984-1987)
I’ve been interested in and active with computers since about 1984 when my sister gave me an Amstrad CPC464. I spent hours typing in Locomotive BASIC programs to do visualisations, simple games and interesting maths. I used to take the programmer’s manual to school with me and pore over it.
A few years later I graduated to an Amiga 500 after playing with one at a friend’s house, and it totally blew my mind. The graphics demos were absolutely amazing and it was my first introduction to a graphical interface with a mouse. I’ve still got an Amiga 500 in my cupboard and I pull it out occasionally to play a bit of Speedball 2: Brutal Deluxe, Supercars II and SWIV.
High School (1988-1992)
In high school the only computer I got to use in class was an Apple II. It seemed incredibly backwards and clunky compared to the Amiga 500 I was running at home, and the “programming” we did in class was uninspiring compared even to what I’d done on my Amstrad – we mostly just did turtle graphics and basic maths.
University (1993 onwards)
Eventually I became a full-time UNIX/IRIX/Linux guy when I started university in 1993. When working overnight on assignments we used to sleep on an old foam mattress under the bench next to the SGI Onyx, and the warm air from the processors would make for a cozy nap.
My first linux installation was a Slackware install from the CD in the back of a huge Slackware HOWTO tome: full of detailed information on how to configure an X server, format file systems and compile software. I’ve used just about every distro since then, but nowadays I only use Ubuntu linux on the server. I like the idea of linux on the desktop, but there’s not much space for it now I’m using MacOS.
At university I developed mostly in C/C++ and scripted with csh, and I dabbled in tcl/tk, Java and OpenGL. I took a lot of hardware courses (analogue and digital electronics, transistor physics) but I enjoyed the programming topics more. I’m pretty good at breadboarding up analogue circuits, but I’m not that great with a soldering iron.
I got my first email address when I started uni in 1993: I was
email@example.com – stoowert is my phonetic spelling of “Stewart” said with an American accent. My first 6 months on the internet was spent using PINE on a green-screen dumb terminal and FTPing to various servers to poke around looking at interesting programs.
These days I run my own mail server on a VPS hosted by a terrific Melbourne company.
I first got on the web around then too, using NCSA Mosaic on the Classic Macs in the Mathematics lab. I didn’t really understand the web too well back then, and this was in the early days when even Yahoo! had only just started (early 1994). Someone had given me the (long) URL of a Pearl Jam fan-site, so every time I sat down at a browser I would painstakingly enter in the URL of that guy’s web page and then navigate from there to other places (I think he had a link to Yahoo! somewhere on the page). It was a happy day when I realised I could just type
yahoo.com in the address bar! Yahoo was the place to start on the internet back then, it was a few years before Google.
One nascent technology of the time that I completely missed was IRC. I’m not really sure why – I did connect to EFnet and DALnet a few times, but it never really hooked me so I didn’t spend much time there. I had a few friends that completely immersed themselves in IRC (and also MUDs) but it never was interesting enough for me.
I took great pleasure in being one of the UNIX guys at uni: the Windows labs were always crowded, hot and dirty and full of people complaining about how Word had eaten their assignment, but the Solaris lab was mostly empty. I wrote my final thesis in LaTeX using vim on a Solaris machine in peace and quiet on a nearly-new Sun workstation in an air-conditioned lab. I loved writing my thesis in LaTeX, it was a joy.
My personal PC at home dual-booted between some flavour of linux and Windows 95. My first installation of Windows 95 came on a collection of 37 floppy disks that I had to feed in one-by-one in the correct order. I always felt really uncomfortable in Windows after cutting my teeth on linux – I never felt like I could get to the real system because it was layered in dialog boxes and proprietary binaries, and I missed the see-and-change-anything of linux. I studied and modified the MINIX kernel as well at uni which encouraged that mindset.
While I was at uni I wrote my first production application: a Microsoft Access 97 database for the Nippy’s fruit juice distributor in Perth that kept track of all their stock and allowed them to collate orders from different vendors and bulk-order from the manufacturer. I learned a lot writing that database, and not just about Access: requirements constantly change and are hard to agree on, people don’t enter data the way you expect them to, things that you don’t expect to change usually will, and it’s really tough work to change a system that’s already in production. I’d never heard of version control – I created one of those horror systems:
I started creating for the web while at uni too, first on my temporary dial-up based webspace and then especially when I got my own personal and permanent (always-on) space on the web in the lab. The most notable thing I did there was to capture the output for a webcam in the lab every minute, automatically compile it into a video for each day and then automatically post it on my website. Back then it was a huge thrill to see people connect to my website from all over the globe!
When I joined Motorola I was in the hardware division working on chip verification, so there wasn’t much programming (mostly just Makefiles and a bit of shell scripting).
I was getting bored at Motorola with chip verification, and my boss asked me if I knew any perl. “Yes!” I replied enthusiastically, even though I’d never looked at perl before. I spent the weekend going through the camel book and came back on Monday to start writing an assembler in perl. I’m very glad I jumped at that opportunity.
Later I transferred out of Motorola’s hardware division into public-sector services which is very Windows-based. I threw myself into C# and .NET (through to v3.5) before moving out of full-time development into consulting and leadership roles.
Switch to Apple
In 2007 I realised I was bored with the endless configuration, updating, tinkering and compromise I’d been living with both linux and Windows, so I bought a 24” iMac. Since then I’ve pretty much completely switched over to Apple systems, except where work prevents it. OS X allows me to keep flexing my POSIX muscles and it really is great being inside Apple’s ecosystem (we’ve got iPhones, iPads and Apple TV too).
For a while my machine of choice was a 13” MacBook Air. At home I plugged it into a big external monitor and use a Logitech K750 solar bluetooth keyboard and Performance MX mouse to control it. It did a great job with everything I need, though it takes a while to render videos in Final Cut Pro X (I’m not in a great hurry though).
My only wishlist item for the Macbook Air was that it lacks a good docking solution. When I transition from desk to mobile I have to plug in power, headphones, DisplayPort and a USB hub. It’s not the end of the world, but I miss being able to place my laptop on docking station and be up and running right away.
My current machine of choice is a 2019 Mac Mini. I don’t really have much need for portable computing these days that I can’t sufficiently do on my iPhone or iPad. One good thing about switching to the Mini is that it has reduced my desk clutter – the Mini is mounted to the wall next to my monitor arms, so my desk just has keyboard, mouse, and coffee.
I had a love-hate relationship with being a software developer, based on two opposites:
- I love to solve problems in my head, and then build the skeleton of a solution, but sometimes I get bored of the problem and I’m not interested in actually delivering working code.
- On the flip side, when I’m really enjoying a problem I will tend to gold-plate the code and spend far too much time on it.
Working professionally as a developer means I can’t go to either of these extremes: I need to get out the best possible code (feature complete) as quick as possible and then move on. It has to work, but it has to be quick.
I’ve moved out of technology roles at work now, which is a bit of a double-edged sword. On the plus side it’s a differentiator: most of the people around me don’t have the same technology background, so I have an advantage in being able to understand some things better (e.g.: when we’re dealing with IT solutions) and I can quickly automate a lot of things – though now I’m limited to VBA in Excel. Still, being able to write macros in Excel or quickly knock up a pivot table can be treated like a superpower amongst some folks at work.