dasBlog Reloaded

You may have seen a few semi-nonsensical posts and tweets and toots from me in the last few days, of which several have then again disappeared.

Well, I’m having fun coding!

In the summer of 2003, I sat down and wrote a blog engine, dasBlog, based on the then still fairly new .NET Framework. The project was inspired by Dave Winer’s Radio Userland, the original weblog platform, which I was using at the time, and by a very rudimentary .NET blog project BlogX started by Chris Anderson at Microsoft. 

I built a template engine that could handle Radio’s templates, and endpoints for all known blog-to-blog and blog-to-user federation services and APIs known or emerging at the time: Pingback, Trackback, MetaWeblog, Blogger, MovableType,  RSS, Atom. The engine could cross-post and keep in-sync content to several other blogs and thus act as a content hub. I might have pioneered bugging RSS content with invisible 1x1 images to track readers. I kept a lot of usage logs. 

As co-owner of consulting and developer education company „newtelligence“, we made the engine available under a BSD license for everyone. dasBlog was the first substantial FOSS project based on .NET, in a time when open source was a foreign concept (to put it mildly) at Microsoft itself and in the Windows ecosystem overall.

Some early contributors to the project were Omar Shahine, Steve Forte, Phil Haack, and Scott Hanselman. Scott, Microsoft’s megablogger and ultra-influencer, still uses the original dasBlog code base for his hugely successful blog site. 

But like many people, I eventually got sucked into the big social media platforms and largely gave up on blogging. Easy, quick rewards. That also made my further interest in the blog engine wane.

But while I only made very infrequent changes to this site, it has been continuously online since 2003. I never completely gave up on it. However, accepting that the greatest value is probably in the archive, I eventually transformed it into Jekyll site. The conversion was fairly easy since dasBlog stores all content in XML and turning that into markdown largely only required remembering how XSLT worked and then forgetting it again.

Through the magic of open source and because dasBlog has a unique quality in that it is ultra simple to run and has literally no dependencies other than a Webserver that can run .NET apps and no database, no cache and no block store, there were always some folks who maintained and updated the code.

Then comes 2022 and Elon Musk buys Twitter and turns it into his personal toy, playing platform emperor – badly. The real threat that Twitter may collapse completely due to Musk running it into the ground, one way or another, was a wake up call. First, like many others, I created accounts on Mastodon (I already had one that I created a couple of years ago and didn’t use) and I actively use that now. But Mastodon is just another place I don’t own.

A couple of years ago, I had heard that a Microsoft coworker, Mark Downie, had taken it upon himself to port the engine to „modern .NET“ which  was a substantial piece of work. The new project, dasBlog-core, has changed quite a bit from the original, but Mark evolved the engine carefully and while sticking to its principles.

The old template engine has been replaced by Razor and the old macros are now „tag helpers“, but it’s all structurally intact.

Given the Twitter situation, I looked at this site and at Mark’s dasBlog port during this December break and decided that I’m going to fuse the Jekyll site and dasBlog-core into a single site and make it my authoritative source and home for content, long form or short.

I want to make this so good that this is the place where I start and even participate in conversations, but also allow for those conversations to happen wherever people want to engage. That means posts from here will make it to Twitter and Mastodon and elsewhere, and this engine will eventually be able to keep track of them where they havppen and create visibility into conversations right here at the source. 

dasBlog is and was an engine to manage one timeline. I have no aspirations to change that, because that simplicity is a feature. It will scale to one writer and many readers; it will use federation for discussion. That was the idea behind the old Pingback and Trackback features and the „Fediverse“ is a new opportunity to make that work.

I’ve spent the last week of December 2022 on the integration of dasblog with my Jekyll site, and Jekyll now generates the required templates. I’ve added support for raising CloudEvents when posts have been added or changed or deleted and I’m already using these events to drive an Azure Logic App that forwards notifications to LinkedIn, Mastodon, and Twitter and via which you may have found this text.

I’ve also added support for oEmbed and Twitter Card and Open Graph embeddings on the site, so that I can paste plain URLs and the embeddings will be rendered dynamically by the backend. I might eventually push some of that logic to the browser once I remember/learn how to do client stuff in 2023.

I will contribute many of my changes to Mark’s project and already have done that. Some of the more specific stuff might stay in my fork or I will take time to decide what’s right and when it’s ready for sharing. In the code repo, even in my fork, „main“ will be Mark’s branch and Mark decides what’s in that branch.

The site is imperfect. There's glitchy CSS and weird HTML. Hyperlinks that point into empty spaces. It's mine though. Again. Love it.

Share on Twitter, Reddit, Facebook or LinkedIn