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 expected 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 company.
I love software development. I love the intellectual challenge, and the enormous palette 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 big 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 specialization seems to be occurring.
I've developed significant projects in C, C++, C#, Java, Go, Swift, 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 embedded systems. I've built scaled-out database solutions, and extremely high performance real-time 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, 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.
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 and my prescience!" — 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.
While I first moved to a custom-authored Go solution to serve this content (capable of handling enormous loads with prowess, automatic SSL management, HTTP push, pre-compression at the highest level for gzip, deflate and brotli) -- an initiative I undertook mostly as a fun challenge -- I decided to just moved to Netlify given that it mostly fulfills my goals and makes the management of the whole system, and the deployment process, so much easier. I commit to git and bam they're deployed across the world.
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 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, etc -- however at a minimum control your platform. Meaning that if the day comes where your analysis leads you to decide to move to a different host/cloud provider/server/platform/etc, you aren't throwing everything, like your engagement with your readers, away.
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. 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 Seldom Do Freelancing / Consulting
I have my own projects, and my own income sources, so this isn't something I generally pursue unless it's a really interesting, rewarding project.