Learning to Code Again

I was a programmer once. It all started for me in 1993 when I conned my way into a job at the UT Austin campus computer store by hanging around answering questions about computers like I worked there and knew what I was doing. Eventually the store manager realized the only way she was going to git rid of me was to give me a job so I’d go home occasionally... and so she did.

The Texas Union Microcenter

My job at the Microcenter was to help students, faculty and staff solve technology problems that I had never heard of. Good times. I and four or five other people of similar mindset and personality type (you can imagine) sat in a room in the back of the store answering the "Hotline" phones to support the many thousands of random tech noobs that arrived on campus each semester. From the first year students who had never seen an Apple Mac to tenured professors who stored optical drives of their books wrapped in aluminum foil in the freezer to PhDs in the advanced mathematics lab who couldn't figure out how to get their SGI Onyx to sound like a drum instead of a frog when they made a mistake; we saw it all.

Over hundreds of hours on the phone plus the tens of thousands of customers that came through the store, I wrestled with an incredible variety of complex technical issues, many of which we were inventing as we went along. At the same time I was exposed a to a huge array of computer, networking and peripheral hardware and software (much of which, like an original Newton and a NextDimension Cube I was able to get for myself at a massive discount). Through this experience I learned pretty much everything there was to know about using the Apple, SGI and NeXT computers of the day including networking, graphics, hardware upgrades and, most interestingly of all, the tools of the then-emerging public internet.

  code-2.webp  

When the first web browser NCSA Mosaic was released that same year, we all immediately recognized the value of posting and browsing content in a visual format. Precursor systems like Archie and Veronica that allowed data searching and file transfers and, of course, USENET for message bases and image sharing, not to mention local dial-up BBS systems, were almost immediately subsumed by the “World Wide Web” and the race to create more and more interactive and visually dynamic websites was on.

Web Development

Fast forward about six years and I was now in San Francisco doing light HTML coding and image processing at Organic Online in the SOMA district. Between pizza parties, raves and the occasional intense office drama you get when you stuff a bunch of brilliant kids into a former sweatshop with little to no adult supervision, we built web sites for the big first mover companies... Sony, Nike, Wells Fargo and Levi’s to name a few... as well as a crop of smaller companies who saw beyond the “brochureware” that the early web had become and were trying to build online tools that actually did something. Server push news services, e-commerce payment processing and customer engagement tools like chat rooms and online support were developing rapidly and the tools and languages used to power the web were evolving with them.

  code-3.webp  

Simultaneously the visual side of web development was progressing as well. Color palettes supported by browsers were growing as 8-bit systems became 16-bit systems and companies like Macromedia were developing vector based graphics tools for online deployment to enable lightweight graphics with incorporated script languages for creating dynamic interactions to be deployed online.

Having long been a user of Macromedia Director, which had a well developed scripting system for incorporating interaction with bitmapped graphics on CD-ROMs and DVD menu systems, I immediately saw the power of scriptable visual objects in Flash being deployed to the web and began experimenting with the tools for my own online portfolio. It wasn’t hard to see that the typical “Skip Intro” animation that people so rightfully hated Flash for was a major underutilization of the tool’s capabilities and I began looking for new ways to incorporate scripted behavior into my interactive pieces. This effort culminated at the time with a fun “3D” sphere that the user could catch and throw around the screen with surprisingly realistic physics and I was privileged to have the opportunity to develop a very successful Flash based “game in a banner ad” that Organic produced for Macromedia themselves to promote their Shockwave tool which allowed Flash to be embedded in the browser. 23% banner click engagement. That banner game won an award and "caught a lot of eyeballs". The life and the money were good.

To Fall (Fail) and Rise Again

And then in 2000 it all fell apart. The “Dot Bomb” hit and most of the early web-focused businesses were wiped out. Think NFTs from their ridiculous highs in 2020 falling to near zero in 2021. All that valuable work went away and I was basically out on my ass with nothing but a laptop and a lot of skill and experience building interactive experiences online.

  code-4.png  

In the weeks and months that followed the crash, I spent every waking moment talking about my vision of creating useful tools online using dynamically scripted visual interfaces from Flash paired with back-end capabilities of web servers to anyone who would sit still long enough to listen... until someone heard me. A nice young woman in a bar, as it happened, had been working for a local Real Estate company whose marketing director was something of a visionary himself. She brought me in to pitch my model and he matched it up with an idea he’d been thinking on... a website that created slideshows of property images for residential home marketing... and away we went.

For the next twenty years I built that idea from a slide show creator with a $1000 a month license to a real estate marketing SaaS tool that served over 30,000 individual real estate agents from DC to Hawaii and generated $350K of profit a year... with just me as the sole employee. The tools were simple... I built a Flash frontend which provided an incredibly lightweight and powerful UI/UX talking to PHP and MySQL on an Apache server. The LAMP stack, plus Flash, gave me the ability to deploy a uniquely appealing and easy to use tool to an otherwise technophobic and sorely underserved market... and get literally a decade or more ahead of the curve for SaaS development. I worked for SAP for a while. Trust me, I know.

In the early days before AJAX (Asynchronous JavaScript and XML) when navigating a website required a full-page reload, I was able to deliver rich interaction using a thin-client model (an idea derived from the old UNIX days) where most of the business logic was handled on the web server while state management and interactive load was handled in the browser... without page refreshes and with a simple and consistent look and feel... going so far as to offer WYSIWYG PDF creation in the browser that would send print-ready files directly to my white label print shop’s RIPper. My clients loved my app and they paid me well for it. But there was a fatal flaw.

The Killing Blow

On January 2020, a year known for some much more unfortunate happenings, my application was single handedly destroyed by none other than Steve Jobs himself. Despite being already long-dead, Jobs' earlier strong stance against Flash and refusal to support it on any iOS device finally bore bitter fruit. Having declared Flash would no longer be developed post 2012, Adobe, who had purchased the product from Macromedia (who had acquired it as FutureSplash, to credit all the turtles at the bottom of the pile) and who was undoubtedly desperate to get ride of this near ubiquitous albatross of an application (alliteration absolutely intended) decided that Flash would be end-of-lifed as of January 1, 2020.

  code-5.webp  

And so it was. Without any fanfare, my 20 year-long source of mostly passive income came to a grinding halt as browsers simply stopped displaying any Flash content at all. Having known for quite some time that Flash was doomed and that the end-of-life was coming, I turned toward other investments I'd made in the previous few years, wound down my business, moved to Las Vegas and took up the nasty habit of working in the entertainment industry.

I stopped coding... partly out of resentment and partly because, well, modern coding tools of 2020 absolutely sucked. That old laptop with the LAMP codebase on it is sitting in my storage locker, clock still set to 2019 as if time would stand still forever. I moved on and forgot all about software development. Until this month, that is.

The Reboot

Now, as a result of my recent experience doing a live theater show I’m starting up with programming again and boy, let me tell you... things are different! Not only are they different, but they’re way better! Shockingly, dramatically better. And the best part? While I sat on the sidelines (really I hadn’t made significant changes to my codebase since about 2012) the rest of the world caught up to the model I had intuited way back in 2000. Modern frontend systems have made web based applications lightweight and visually seamless, components are easily encapsulated, modified, upgraded and replaced, data types are strongly observed, code is properly formatted and backend systems are separated into virtual containers which make runtime failures and scalability issues a thing of the past.

I won’t even get into security and error handling. They’re even using scalable vector graphics (SVG) files instead of bitmapping everything. The only thing you don’t really see in modern coding are discreet graphical elements with inbuilt behaviors and inheritances (at least you don't see them outside of pre-packaged component libraries which just look that way to the developer). Separation of concern seems to be the order of the day, and although object-oriented visual components worked great for me in 2016, I can't be angry about keeping form and function separate. Oh, there is some correlation there, but the frontend rendering model is still basically HTML and CSS, just done with some added-on layers and in a manner such that customization and styling can be abstracted and re-applied across a codebase with ease.

  code-6.webp  

In a word (well, two words), it’s great. And the development environment... well let me save that for the next post. But for now let me just say this: what took me probably three months back in 2000... going form a “cold start” to simply having a running application on a public server that random people could create accounts on... took just three days using modern tools. An experienced coder who’s done it before could probably deploy a “hello world” server with secure logins and account management in under 3 minutes if they really wanted to.

New Dawn, New Day

The app I’m currently developing looks a lot like my first one... I have a particular style. But the speed of modern development tools has enabled me to go from zero to more than half of the functionality the app requires in less than a month... and that’s from knowing almost nothing about modern development processes to buying a new laptop to setting up accounts and downloading tools to coding a fully TypeScript compliant, containerized React / FastAPI / PostgreSQL app in a GitHub connected Integrated Development Environment (IDE) with full AI coordination. AI. That’s foreshadowing.

Come back soon for the rest of the story. Also, fwiw, I've never used an em-dash in my writing and never will. Everything I post is 100% pure authentic human.