As is often the background of those in this industry, I've been developing since grade school (I grew a love of computers via the TVO show Bits and Bytes), starting on an Atari 400, then 800XL, then C64, then Atari ST, then onto the world of PCs. Later adding Macs and mobile.
I'm Canadian — currently living in the Toronto area — often plying my trade working remotely for companies around the globe.
Now I have to go into the fluffy but expected self-promotion bit-
I've published innovative mobile apps, and built large-scale corporate apps, usually as the primary architect of the roots that formed the basis for all future work. I've been published in MSDN Mag, interviewed on NPR Radio, and had an article written about my research on the front page of the Wall Street Journal1. I blogged over the years to a modicum of success (some popular pieces, and a lot of personal enjoyment creating various articles and hearing from a lot of fantastic people).
I've worked for Bell Canada (sr. dev), RBC Financial Group (team lead on insurance and UL platforms, along with AML), and for an innovative mid-sized NYC financial company (Vastardis Capital Services - VP / org-wide lead software architect). I've worked for engineering firms (e.g. ZTR Control Systems) and small businesses, many entirely remotely. I've developed web apps (and was one of the first to use XMLHttpRequest — then in an early beta of a XML toolkit from Microsoft — to enable what became known as AJAX), data warehousing and aggregation/processing apps, power control systems, mobile apps, back-end apps, video and audio processing apps, and most recently some heavy deep-learning implementations. Usually I've worked as a full-stack developer that technically led the team and efforts. Often it was through my own company yafla.
I love software development. I love the intellectual challenge, and the spectrum of potential approaches. I love creating. I've spent my career avoiding moving to any situation that would reduce my hands-on involvement, which is tough given that so many orgs think that we all dream of pure management as a reward. I love changing things up and working in new disciplines. I have always had an unhealthy fear of being typecast as a "[some technology]" guy (e.g. the "Delphi guy" or the "database" guy or the "C#" guy) and will always dodge and weave when that pigeon-holing seems to be occurring.
I've developed significant projects in C, C++, C#, Java, Go, Swift, Python, just about every web tech, SQL, (Object) Pascal, and a wide variety of less commonly used languages. I've built for Windows, .Net, Linux, Android, macOS, iOS, and embedded systems. I've built scaled-out database solutions, and high performance real-time systems. I've built for the cloud, containerization, k8s, serverless, and self-managed data center deployments. My "specialty" is adapting and using heuristics and study to bring the best solution to a problem. A solution that will endure. Often this entails having to adopt new approaches and new technologies, and that's something I do with vigor.
In other words, pretty much a bog-standard career for many in this field. I've never worked for any of the big tech companies as I've never been willing to relocate2, but have always been jealous of the ecosystem and people environment in the Bay area.
Why Not Wordpress? What Happened To The Old Content?
Over the years I authored several thousand entries across a variety of blog engines. Most were facile passing thoughts while others were fairly in-depth technical pieces that took a considerable amount of time to prepare. It was always a wonderfully enjoyable exercise that allowed me to clarify my thoughts, often to the benefit of increased clarity of some professional pursuit at the time.
The medium (traditional blogs) and its intrinsic properties has several failings for what I look to do today-
- Obsolete information perpetuated around in the archives. Search engines and old links would corral users to ancient pieces about, for instance, extracting frames from a video using .NET. Pieces that I'd written a decade ago, and which were far from optimal now (and for which I could no longer vouch).
- Current information would seem obsolete to those accustomed to evaluating info based upon the date header. Significant older pieces that I cared about would be updated regularly, but that original publishing date would mislead some users into believing it is no longer current. Putting a bunch of edit headers atop is suboptimal.
- The traditional blog format wasn't really compatible with my use. Users expect blogs to see frequent entries, and that wasn't tenable with my lifestyle, or with what I was looking to do. As I prepare some large scale pieces, with significant content, graphics, and interactive scripting, posting it as a passing Wordpress entry — which many users perceive as temporal and spurious — just wasn't optimal. Add that even with significant retooling of Wordpress there was always friction integrating rich, dynamic content, and fighting with the engine was just was a waste of time. I also want to build a couple of artistic/interpretive presentations that don't work with the pipeline.
- There was a "blog frequently" movement that pushed the idea that you should blog on a schedule to keep your readers returning regularly. This is antithetical to my needs, and for what it's worth I think that movement was as guilty as the Google Reader shutdown at "killing" blogs: Once people are writing fluff pieces just to fill a schedule, readers end up wading through chaff, eventually yielding exhaustion. Everyone just stops visiting and expects that anything worthwhile will bubble up on social media.
I could customize Wordpress to work the way I want, but my needs are so simple that it was more baggage than was necessary. Add that I just wanted to have fun with a different way to serve content, and wanted to play around with HTTP push and rebuilding with a Go-based server platform. After conquering that I decided to rebuild as "static" HTML using client side templates, allowing me to add and change content piecemeal.
I enjoy fresh starts.
Why Not Medium / GitHub / Facebook / Substack / [hip new thing]
The folly of sharecropping that so many fall prey to is a mistake that has occurred in cycles for decades.
I do this all on my own domain because I have full and absolute control to do whatever I want, without concern that some new engagement banner is going to start pestering users, some middle manager contrives some new pernicious revenue scheme, or that user privacy is being usurped at all.
It isn't egotism or self-boosting that this is on dennisforbes.ca and not thatcodeguy.medium.com or github.com/codethoughts, it's a simple tool we all have available in the modern world: register a domain and do your own thing. Claim your own little island and take full control. It's how it is supposed to work, and the cyclical centralization to a limited set of services runs counter to the fundamental ideals of the net.
Of course there are justifications for using those services; engagement can be higher, there are additional tools available for authoring, surfacing and discovery is vastly improved, etc.; however the compromise is reduced control over your platform and content. If the day comes where your analysis leads you to decide to move to a different host/cloud provider/server/platform/etc.
This site contains zero trackers. There are no Google Analytics and no social media buttons. To the greatest extent possible I will try to keep all content contained here. The metrics that I care about are the relationships I make, the opportunities that appear, and my own personal enrichment and enjoyment authoring pieces.
I've received a couple of queries on why I use a .ca domain. The .ca TLD long had beneficial policies and governance. It has long had automatic whois privacy protection, and it isn't some trendy TLD under some remote nation that has random arbitrary restrictions applied at future dates. Being on a .ca domain, I've noticed, makes Google think that it's only content relevant for Canadians. Thankfully I just don't care that much what Google evaluates it as so that doesn't drive my decisions. Google is the tail wagging the dog of content, and I'm in a lucky position of not caring about their rankings. I'm the flea that jumped off.
Leverage My Experience and Proven Skills
I work through my consulting company and cannot guarantee availability or suitability for an engagement until we've talked through the details.
1 - Okay the front-page of the second section, which was still pretty cool.↩︎
2 - Perhaps a bigger factor is that social anxiety and a strong imposter syndrome have always steered me away from the bigs, often making me abandon a position midway through their process. Several times over my career I ended up in their funnel to discover an extended interview process that was basically like a form of torture. I've always leaned towards positions where I could wow immediately and quickly thereafter get to building solutions.↩︎-->