As is often the background of those in this industry, I've been developing since grade school, 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, and more recently pursuing my own initiatives and projects.

Now I have to go into the fluffy but de rigueur self-promotion bit-

I've published innovative mobile apps, and built large-scale corporate apps (usually being the primary architect in 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 Journal. I blogged over the years to a medium degree 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. Some of it was through my own consulting company.

I love software development. I love the intellectual challenge, and the enormous palette of potential approaches. I've spent my career avoiding moving to any situation that would reduce my hands-on involvement. 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).

I've developed significant projects in C, C++, C#, Java, Go, 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, OSX, iOS, and others. I've built scaled-out database solutions, and extremely high performance data systems.

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 relocate (though with my children getting older and my boredom of an area growing, I am more open to it than before), though a few of them have started to plant some offices in my area, though it's now that I'm very over the idea of a daily hour each way commute.

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 clarity benefit 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.

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.

So I tossed it out and started mostly anew. I do plan on bringing a tiny amount of the old content over in rewritten, rebuilt form, but have tossed the majority. I enjoy fresh starts.

And as the limited content on here becomes outdated I'll either update it, or purge it. If I no longer feel good about an article, I'll purge it. At any time the published articles should be current and relevant. Articles will not have dates.

I will try not to self-link. This was a bad habit before — a sort of "see, I wrote that before...praise me" — that always felt a bit shameful.

I'm not going to publish an RSS feed for this as the irregular content is not viable with such a scarcity of content. I ask the brilliant, beautiful people who followed me over the years to visit periodically, and apologize for the inconvenience. But I don't want to give new arrivals the notion that I'm going to post my thoughts on WWDC or whatever the current events are.

I'm also not going to publish an AMP version, as many/most pieces will require custom scripts for interactive purposes. Regardless I have gone to lengths to make this as fast and efficient of an experience possible. HTTP push, a custom, client-side templating solution, brotli and zopfli static, highest-possible compression, etc. It doesn't get more efficient. The only thing that I debated over was the use of a professional Adobe font set, but that is an optional dependency.

Why Not Medium / GitHub / Facebook / [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 — just register a domain and do your own thing. Claim your own little island. 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.

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. I don't even log visits as I just don't care that much about those granular metrics. 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 also want to pursue a couple of artistic exercises, and need a blank canvas that I can do anything with .

I've received a couple of queries on why I used a .ca domain. I'm a Canadian, so that's one reason (though not a huge one as I don't tie myself to nationality), and the .ca TLD long had beneficial policies and governance. For instance 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. On the flip side, 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.

I Sometimes Do Freelancing / Consulting

I have my own projects, and my own income sources, so not generally. For the right pay, and for the right project, I can make your initiative a success and enjoy the diversity of tasks in my routine. Email me.

I Don't Want To Be An Employee

As this is a recurring question, I do not want to be an employee. I'm over traditional employment. Lots of people love it, and it works great for most situations, but it simply isn't something I enjoy. Too many shops think that engineering and technical work is something that we all desperately want to "elevate" above, tainting many organizations.