<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Constant Thinking</title><link href="https://constantin.glez.de/" rel="alternate"/><link href="https://constantin.glez.de/atom.xml" rel="self"/><id>https://constantin.glez.de/</id><updated>2022-06-17T05:38:03+02:00</updated><subtitle>Technology Thoughts for the Quality Geek</subtitle><entry><title>Deprecating Feedburner</title><link href="https://constantin.glez.de/2022/06/17/deprecating-feedburner/" rel="alternate"/><published>2022-06-17T05:38:03+02:00</published><updated>2022-06-17T05:38:03+02:00</updated><author><name>Constantin Gonzalez</name></author><id>tag:constantin.glez.de,2022-06-17:/2022/06/17/deprecating-feedburner/</id><summary type="html">&lt;p&gt;When I started blogging in the early 2000s, &lt;a href="https://en.wikipedia.org/wiki/RSS"&gt;&lt;span class="caps"&gt;RSS&lt;/span&gt;&lt;/a&gt; emerged as an open standard for spreading the news. New post? Blam, everybody interested got a notification in their favorite&amp;nbsp;newsreader.&lt;/p&gt;
&lt;p&gt;Back then, building a proper &lt;span class="caps"&gt;RSS&lt;/span&gt; feed was more of an art than an exact science: Crafting proper &lt;span class="caps"&gt;XML&lt;/span&gt; while …&lt;/p&gt;</summary><content type="html">&lt;p&gt;When I started blogging in the early 2000s, &lt;a href="https://en.wikipedia.org/wiki/RSS"&gt;&lt;span class="caps"&gt;RSS&lt;/span&gt;&lt;/a&gt; emerged as an open standard for spreading the news. New post? Blam, everybody interested got a notification in their favorite newsreader.&lt;/p&gt;
&lt;p&gt;Back then, building a proper &lt;span class="caps"&gt;RSS&lt;/span&gt; feed was more of an art than an exact science: Crafting proper &lt;span class="caps"&gt;XML&lt;/span&gt; while taking advantage of all &lt;span class="caps"&gt;RSS&lt;/span&gt; features wasn’t easy for most bloggers, who just wanted to blog.&lt;/p&gt;
&lt;p&gt;So, &lt;a href="https://en.wikipedia.org/wiki/FeedBurner"&gt;Feedburner&lt;/a&gt; was born in 2004. Its value proposition was to clean up and optimize your &lt;span class="caps"&gt;RSS&lt;/span&gt; feed, but of course there was the added option of monetizing your &lt;span class="caps"&gt;RSS&lt;/span&gt; feed by placing ads in it. This made it interesting to Google, which acquired the company in 2007.&lt;/p&gt;
&lt;p&gt;Today, &lt;span class="caps"&gt;RSS&lt;/span&gt; and its alternative, &lt;a href="https://en.wikipedia.org/wiki/Atom_(web_standard)"&gt;&lt;span class="caps"&gt;ATOM&lt;/span&gt;&lt;/a&gt; are much better understood and almost any blogging platform can produce a decent &lt;span class="caps"&gt;RSS&lt;/span&gt; or Atom feed, including &lt;a href="https://dev.glez.me/2022/06/16/blog-renovations-again/"&gt;Pelican, which powers this blog now&lt;/a&gt;. So the need to “sanitize” a feed is not quite pressing anymore.&lt;/p&gt;
&lt;p&gt;But over the years, Feedburner received less and less love from its new maintainers at Google. Today, it feels like Feedburner is on life support only, with occasional announcements about certain features like analytics going away.&lt;/p&gt;
&lt;p&gt;Therefore, I’m switching back from hosting my blog’s feed on Feedburner to self-generating and self-hosting it:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If you’d like to subscribe to this blog’s &lt;span class="caps"&gt;ATOM&lt;/span&gt; feed, &lt;a href="https://constantin.glez.de/atom.xml"&gt;right click here&lt;/a&gt; (or on the Feed icon in the site header) and copy the feed link into your favorite feedreader.&lt;/li&gt;
&lt;li&gt;If you subscribed to the old Feedburner feed, please update your feed &lt;span class="caps"&gt;URL&lt;/span&gt; for this blog to &lt;a href="https://constantin.glez.de/atom.xml"&gt;this new feed &lt;span class="caps"&gt;URL&lt;/span&gt;&lt;/a&gt; (which is the same as above and the one behind the feed icon in the site header).&lt;/li&gt;
&lt;li&gt;I am soon going to feed Feedburner (sic) with a final source feed that includes this article, so existing subscribers are notified of this change, and so they can move on to this site’s original feed.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="reading-news-feeds-in-2022"&gt;Reading news feeds in 2022&lt;/h2&gt;
&lt;p&gt;Remember &lt;a href="https://en.wikipedia.org/wiki/Google_Reader"&gt;Google Reader&lt;/a&gt;? I loved it. It was the easiest way for me to collect my favorite &lt;span class="caps"&gt;RSS&lt;/span&gt;/&lt;span class="caps"&gt;ATOM&lt;/span&gt; news sources, then read my daily news from different blogs and website all at once. Unfortunately, Google discontinued the service in 2013.&lt;/p&gt;
&lt;p&gt;Today, I use &lt;a href="https://feedly.com"&gt;Feedly&lt;/a&gt; instead, which is quite a good replacement. Other people recommend &lt;a href="https://www.inoreader.com/"&gt;Inoreader&lt;/a&gt; or &lt;a href="https://www.newsblur.com/"&gt;Newsblur&lt;/a&gt;, both of which seem to be good, too.&lt;/p&gt;
&lt;p&gt;These sites are under pressure to make money, so they can pay for development and hosting costs. This means they either come up with more or less invasive requests to subscribe to their “Pro” version, or insert ads to pay for their costs. This is ok, but why pay for a service that essentially downloads free information from the web and reformats it for nicer viewing?&lt;/p&gt;
&lt;p&gt;If I want to browse the World Wide Web, I just open my web browser of choice and start browsing for free, and in good quality. Unfortunately, web browsers don’t come with nice feed reader options, so reading your favorite feeds is a bit more of a hassle than it should be. I didn’t find any obvious app for reading feeds yet, that would qualify as the “Firefox of feed reading apps”.&lt;/p&gt;
&lt;p&gt;How important is &lt;span class="caps"&gt;RSS&lt;/span&gt;/&lt;span class="caps"&gt;ATOM&lt;/span&gt; to you today? How do you read your favorite feeds?&lt;/p&gt;</content><category term="General"/><category term="RSS"/><category term="blogging"/></entry><entry><title>Blog renovations (again)</title><link href="https://constantin.glez.de/2022/06/16/blog-renovations-again/" rel="alternate"/><published>2022-06-16T07:56:20+02:00</published><updated>2022-06-16T07:56:20+02:00</updated><author><name>Constantin Gonzalez</name></author><id>tag:constantin.glez.de,2022-06-16:/2022/06/16/blog-renovations-again/</id><summary type="html">&lt;p&gt;A long time ago (2017), I wrote about &lt;a href="/2017/10/10/welcome-back/"&gt;modernizing my blog&amp;#8217;s infrastructure&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Guess, what: Time to modernize&amp;nbsp;again!&lt;/p&gt;
&lt;p&gt;Back then, I migrated from Drupal to a self-written, Jekyll-inspired static site generator written in Python (my current language of choice for most projects). I spent the majority of the time …&lt;/p&gt;</summary><content type="html">&lt;p&gt;A long time ago (2017), I wrote about &lt;a href="/2017/10/10/welcome-back/"&gt;modernizing my blog’s infrastructure&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Guess, what: Time to modernize again!&lt;/p&gt;
&lt;p&gt;Back then, I migrated from Drupal to a self-written, Jekyll-inspired static site generator written in Python (my current language of choice for most projects). I spent the majority of the time figuring out how to export my old blog posts from Drupal’s MySQL database and how to convert them into Markdown with &lt;span class="caps"&gt;YAML&lt;/span&gt; front matter. There was also some work in building Jinja templates, trying to somehow make the design look ok.&lt;/p&gt;
&lt;p&gt;I use the same system for my other blog, &lt;a href="https://blog.paleosophie.de/"&gt;Paleosophie&lt;/a&gt;, which is a German, Paleo-nutrition-themed blog. It worked great, and static sites are an awesome way to host your blog, because there are no operational headaches, no security issues, not even the need to install patches, upgrades, and stuff.&lt;/p&gt;
&lt;p&gt;Well, almost: over time, my homegrown static site generator started showing its age. Python moved on from version 2 to 3, and the mostly hand-crafted build system that funnels Markdown sources through my static site generator, then uploads them to S3 buckets for hosting became hard to maintain, too.&lt;/p&gt;
&lt;p&gt;Simple, on-off solutions and quick fixes started to pile up into some sizeable technical debt.&lt;/p&gt;
&lt;h2 id="a-more-modern-blog-system"&gt;A more modern blog system&lt;/h2&gt;
&lt;p&gt;Time to re-think stuff. Here’s what I wanted:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;An easy way to write blog posts and keep them easy to maintain.&lt;/li&gt;
&lt;li&gt;A modern, state-of-the-art build pipeline for converting blog post sources into final, static websites.&lt;/li&gt;
&lt;li&gt;Less time spent on re-inventing wheels, more time for writing posts and individual features.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;After some research, I settled on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://blog.getpelican.com/"&gt;Pelican&lt;/a&gt; as my static site generator of choice.&lt;/strong&gt; It follows the same idea of a Jekyll-style static site generator, but it’s written in Python, well-designed and well-documented. This is the static site generator I wish I had built, but others are smarter developers than me and can pour more energy into it so, great! The key things for me are to keep 100% control over my content (which remains as plain text Markdown), and the ability to control all aspects of my blog, including theming and any special idea I may come up with. Pelican is written in Python, which I like and am reasonably literate in, and it supports Jinja templates just like my old system, plus it supports writing plugins, so I can tweak it any way I like. In fact, there’s a good selection of &lt;a href="https://github.com/pelican-plugins"&gt;Pelican plugins&lt;/a&gt; and some of them already do exactly what I’d like to do so, bonus.&lt;/li&gt;
&lt;li&gt;For theming, I’m staying with the &lt;strong&gt;&lt;a href="https://jinja.palletsprojects.com/en/3.1.x/"&gt;Jinja&lt;/a&gt; templating language&lt;/strong&gt;. First, it’s the same theming system I used before, second, it’s natively supported by Pelican and third, it’s powerful enough for everything I might want. It’s very Pythonic and extensible, so even when there is anything I might want to do that isn’t supported yet, I can always build a Jinja plugin.&lt;/li&gt;
&lt;li&gt;Similarly, for &lt;strong&gt;&lt;span class="caps"&gt;CSS&lt;/span&gt;, layouting and other frontend stuff, I’m staying with &lt;a href="https://getbootstrap.com/"&gt;Bootstrap&lt;/a&gt;&lt;/strong&gt;, which offers a great selection of layout features and components, as well as ample ways of customizing it. Meanwhile, it moved on to version 5, with even more of that good front-end stuff.&lt;/li&gt;
&lt;li&gt;The biggest change was the back-end that generates it all. My old bunch of scripts and tools became hard to maintain (reminding me all the time to port them to Python 3), and I wanted to learn something new, so I settled on the&lt;strong&gt; &lt;a href="https://aws.amazon.com/de/cdk/"&gt;&lt;span class="caps"&gt;AWS&lt;/span&gt; Cloud Development Kit&lt;/a&gt;&lt;/strong&gt;, or &lt;span class="caps"&gt;CDK&lt;/span&gt;. It’s an open-source software development framework that allows me to define all of my blog infrastructure using “familiar programming languages”, in my case: Python! It comes with a &lt;a href="https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.pipelines-readme.html"&gt;&lt;span class="caps"&gt;CDK&lt;/span&gt; Pipelines&lt;/a&gt; library, which supports painless construction of &lt;span class="caps"&gt;CI&lt;/span&gt;/&lt;span class="caps"&gt;CD&lt;/span&gt; pipelines. Now, my blog has a full &lt;span class="caps"&gt;CI&lt;/span&gt;/&lt;span class="caps"&gt;CD&lt;/span&gt; build system, complete with its own Git repository, dev and prod stages, plus manual approval for bringing new releases live when they look good. No more tinkering on the live thing while readers ask themselves what’s going on.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Overall, most of the heavy lifting is now handled by the &lt;span class="caps"&gt;CDK&lt;/span&gt; &lt;span class="caps"&gt;CI&lt;/span&gt;/&lt;span class="caps"&gt;CD&lt;/span&gt; pipeline, Pelican and their respective plugins and classes. At the press of a button, I can completely bring up, tear down, or update my blog including all of it’s hosting infrastructure. Neat!&lt;/p&gt;
&lt;h2 id="the-migration-process"&gt;The migration process&lt;/h2&gt;
&lt;p&gt;Like all projects, this took longer than expected:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;I started by setting up a basic Pelican blog&lt;/strong&gt;, then dug into its templating documentation. I found a theme called &lt;a href="https://elegant.oncrashreboot.com/"&gt;Elegant&lt;/a&gt;, which is arguably “the best Pelican theme” around. Since its author knows a lot more about Pelican than me, it was a great resource and inspiration for learning to build my own theme and how the innards of Pelican work.&lt;/li&gt;
&lt;li&gt;Next, I needed to &lt;strong&gt;re-learn how Bootstrap does things&lt;/strong&gt; (some have changed) and reflect this in my theme templates. I also had to learn the current way of building things in the &lt;span class="caps"&gt;CSS&lt;/span&gt; world, which included crash courses in nvm, npm, sass and their tool chain in order to add some custom colors and settings and leave out unneeded components for a more streamlined Bootstrap variant.&lt;/li&gt;
&lt;li&gt;Then came the &lt;strong&gt;article migration part&lt;/strong&gt;. This was supposed to be easy, since my previous content was in Markdown already. But the devil is in the details, and I wanted to take the opportunity and fix a number of bugs in the old articles that didn’t quite port well before. I ended up writing a long import script with lots of regular expressions to migrate old entries and pages into the new system and fix things.&lt;/li&gt;
&lt;li&gt;This sent me down an extra learning curve about &lt;strong&gt;&lt;a href="https://pygments.org/"&gt;Pygments&lt;/a&gt;, which can render code nicely in &lt;span class="caps"&gt;HTML5&lt;/span&gt;&lt;/strong&gt; and mostly does the right thing on this blog’s code samples. Mostly. I’ll have to deal with some of its quirks later, though.&lt;/li&gt;
&lt;li&gt;I came up with the idea of &lt;strong&gt;adding a proper &lt;span class="caps"&gt;HTML5&lt;/span&gt; check step&lt;/strong&gt; based on [&lt;span class="caps"&gt;W3C&lt;/span&gt;’s Markup Validation Service] to my &lt;span class="caps"&gt;CI&lt;/span&gt;/&lt;span class="caps"&gt;CD&lt;/span&gt; pipeline, which generated a couple of editing rounds for my templates until all went through with no errors or warnings.&lt;/li&gt;
&lt;li&gt;Then I wondered how many of those old links I included in my old posts were still valid, with Sun having been bought by Oracle, OpenSolaris becoming a lesser priority and lots of old blogs and websites simply fading away. So I &lt;strong&gt;added a link-checker&lt;/strong&gt;, and it turned out that roughly 150 links had to be fixed. Lots of new regular expressions in my migration script later, those stale links have either been replaced by sensible equivalents, or a short message telling readers that these websites are no longer available.&lt;/li&gt;
&lt;li&gt;Drupal, my old system, and Pelican also had &lt;strong&gt;differing opinions on how to generate blog post URLs&lt;/strong&gt;. The easy part was to configure Pelican to use the same year/month/day/slug scheme as before. However, there were subtle and less subtle differences on how to generate the slug part, which added yet another set of regular expressions and redirections to the import script.&lt;/li&gt;
&lt;li&gt;The old banner was, well, old and since then, display technology improved quite a lot. So it didn’t quite look good anymore at the old resolution. This sent me down a side project of &lt;strong&gt;learning how to programmatically build header images&lt;/strong&gt; using &lt;a href="https://p5js.org/"&gt;p5js&lt;/a&gt; (more on that later). I also upgraded my photo with a cartoon rendition of myself, courtesy of &lt;a href="https://www.bitmoji.com/"&gt;Bitmoji&lt;/a&gt;. Now I can generate my banner image at almost any resolution (minus the Bitmoji avatar part, let me know if you know of any better comic avatar service). Actually, thanks to the &lt;a href="https://pypi.org/project/pelican-image-process/"&gt;Pelican image-process plugin&lt;/a&gt;, most images in this blog are now offered in different resolutions based on your display’s capabilities. Yay for quality!&lt;/li&gt;
&lt;li&gt;A lot of the old articles on this blog are, well, old, too. Times have changed and what was cool, shiny, or the best thing since sliced bread before, today simply isn’t anymore. I pondered whether I should simply get rid of the old articles, but that would have been rude to any readers of this blog who might have bookmarked or linked to them. Instead, I &lt;strong&gt;added little “obsolete” tags&lt;/strong&gt; to their headlines and an explainer box to the beginning of these articles. Pelican’s customizability and its use of Jinja for theming are already paying off!&lt;/li&gt;
&lt;li&gt;And of course lots of bugs and little things here and there that needed my attention.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Overall, I started in mid-April and now we’re in mid-June so the total overhaul time was two months. I only worked on this for perhaps an hour a day on average, though.&lt;/p&gt;
&lt;h2 id="plus-some-new-requirements"&gt;Plus some new requirements!&lt;/h2&gt;
&lt;p&gt;A couple of things are new here, and hopefully I’ll find the time to add more in the future:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;No more cookies, no more tracking.&lt;/strong&gt; Seriously. In addition to simply getting rid of Google Analytics plugins, etc., I also removed social Like/Follow buttons that might bring some cookies of their own. Even embedded YouTube or Vimeo videos are now using their “no tracking” versions. I’m verifying my no-cookies-policy with &lt;a href="https://www.ghostery.com/"&gt;Ghostery&lt;/a&gt; which shows me a nice “0” on my own website, which makes me smile.&lt;/li&gt;
&lt;li&gt;No cookies means &lt;strong&gt;no comments, for now.&lt;/strong&gt; I used to use Disqus as a hosted commenting system, but that comes with a lot of baggage in terms of user logins, user tracking, and cookies, of course, so I got rid of it. I can still access an archive of the old comments and have some ideas on how to re-introduce comments in reader-friendly and potentially cookie-less ways. But no promises yet.&lt;/li&gt;
&lt;li&gt;No cookies also means &lt;strong&gt;no pesky cookie-consent banners&lt;/strong&gt;, another win!&lt;/li&gt;
&lt;li&gt;There are still Amazon affiliate links on this blog, but &lt;strong&gt;they don’t use any widgets anymore that might drag in some cookies or tracking pixels&lt;/strong&gt;. Instead, I’m rendering book/product boxes on my own using Bootstrap components. They may look slightly less slick, but I hope to improve on them as I learn more about creating layouts with Bootstrap.&lt;/li&gt;
&lt;li&gt;There’s a &lt;strong&gt;new contact form&lt;/strong&gt; now (in Beta). The back end of it is another &lt;span class="caps"&gt;CDK&lt;/span&gt; Pipelines construct that implements a simple web form service using &lt;a href="https://aws.amazon.com/api-gateway/"&gt;Amazon &lt;span class="caps"&gt;API&lt;/span&gt; Gateway&lt;/a&gt;, &lt;a href="https://aws.amazon.com/lambda/"&gt;&lt;span class="caps"&gt;AWS&lt;/span&gt; Lambda&lt;/a&gt;, and &lt;a href="https://aws.amazon.com/ses/"&gt;Amazon Simple Email Service&lt;/a&gt;. It provides some sanity checking on the submitted content, then sends the form contents via email to me. I might extend it towards a full commenting system, but need to figure out a few things first. For example, how to implement some simple authentication, so commenters can edit/delete their own posts without interfering with other posts, etc. This may require me to introduce cookies again after all (but under my exclusive control) or maybe I’ll use some magic &lt;span class="caps"&gt;URL&lt;/span&gt; based scheme. Let’s see.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That’s it!&lt;/p&gt;
&lt;p&gt;Thank you for reading so far, I hope there was something interesting in the choices I made above, and look forward to hopefully posting more regularly here soon.&lt;/p&gt;
&lt;p&gt;While there’s no commenting feature (yet), I do welcome your comments and opinions, so feel free to &lt;a href="https://constantin.glez.de/contact/"&gt;visit my contact page&lt;/a&gt; and leave a comment there.&lt;/p&gt;</content><category term="General"/><category term="blogging"/><category term="pelican"/><category term="infrastructure"/></entry><entry><title>Welcome Back!</title><link href="https://constantin.glez.de/2017/10/10/welcome-back/" rel="alternate"/><published>2017-10-10T21:08:00+02:00</published><updated>2017-10-10T21:08:00+02:00</updated><author><name>Constantin Gonzalez</name></author><id>tag:constantin.glez.de,2017-10-10:/2017/10/10/welcome-back/</id><summary type="html">&lt;p&gt;A lot has happened since I &lt;a href="https://constantin.glez.de/2012/07/24/getting-started-amazon-web-services/"&gt;changed my job&lt;/a&gt; more than 5 years&amp;nbsp;ago.&lt;/p&gt;
&lt;p&gt;I learned new stuff, met a lot of customers, blogged and podcasted (though on other platforms), and I didn&amp;#8217;t get to give this blog much&amp;nbsp;care.&lt;/p&gt;
&lt;!-- more --&gt;

&lt;p&gt;Until my old hoster told me that they&amp;#8217;re …&lt;/p&gt;</summary><content type="html">&lt;p&gt;A lot has happened since I &lt;a href="https://constantin.glez.de/2012/07/24/getting-started-amazon-web-services/"&gt;changed my job&lt;/a&gt; more than 5 years ago.&lt;/p&gt;
&lt;p&gt;I learned new stuff, met a lot of customers, blogged and podcasted (though on other platforms), and I didn’t get to give this blog much care.&lt;/p&gt;
&lt;!-- more --&gt;
&lt;p&gt;Until my old hoster told me that they’re discontinuing the old &lt;span class="caps"&gt;PHP&lt;/span&gt; version that this blog’s &lt;span class="caps"&gt;CMS&lt;/span&gt; ran on and that I better do something, otherwise bad things may happen&lt;sup&gt;&lt;span class="caps"&gt;TM&lt;/span&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;h2 id="cleaning-up-some-technical-debt"&gt;Cleaning up some technical debt&lt;/h2&gt;
&lt;p&gt;We all have it: Technical debt. No time to fix, clean up or refactor because, you know, &lt;em&gt;oh, look: new and shiny&lt;/em&gt;!&lt;/p&gt;
&lt;p&gt;In fact, I built and re-built my own blogging platform as a static website generator years ago, written in Python with some &lt;a href="https://jinja.palletsprojects.com/en/2.9.x/"&gt;Jinja2&lt;/a&gt;-Fu and &lt;a href="https://getbootstrap.com/"&gt;Bootstrap&lt;/a&gt; scaffoldung, since about half a year using &lt;a href="https://aws.amazon.com/lambda/"&gt;&lt;span class="caps"&gt;AWS&lt;/span&gt; Lambda&lt;/a&gt; as well as &lt;a href="https://aws.amazon.com/step-functions/"&gt;&lt;span class="caps"&gt;AWS&lt;/span&gt; Step Functions&lt;/a&gt; for assembly and hosted on &lt;a href="https://aws.amazon.com/s3/"&gt;Amazon S3&lt;/a&gt;, delivered to you by &lt;a href="https://aws.amazon.com/cloudfront/"&gt;Amazon CloudFront&lt;/a&gt;. Mostly for my German Paleo blog &lt;a href="https://blog.paleosophie.de/"&gt;Paleosophie.de&lt;/a&gt; but, you know, &lt;em&gt;one day, I’ll move my old site onto this new thing&lt;/em&gt; …&lt;/p&gt;
&lt;p&gt;That’t what I did over the last couple of weeks. Which was surprisingly complicated:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Drupal’s data structure turned out to be very distributed across many tables. But eventually I figured out how to pointer-chase posts, images, links and stuff together again.&lt;/li&gt;
&lt;li&gt;I wanted to convert all posts from &lt;span class="caps"&gt;HTML&lt;/span&gt; into &lt;a href="https://daringfireball.net/projects/markdown/"&gt;Markdown&lt;/a&gt;, which led me into multiple rabbit holes of &lt;span class="caps"&gt;HTML&lt;/span&gt; errors and the intricacies of embedding code into special tags.&lt;/li&gt;
&lt;li&gt;And then there are all these details like broken links, generating 301 redirects for old &lt;span class="caps"&gt;URL&lt;/span&gt; schemes into new ones, fixing bugs in my static blog generator code and much more.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;But that’s the fun, isn’t it: Hack, make mistakes, learn, fix, repeat.&lt;/p&gt;
&lt;p&gt;So this blog is alive again, welcome back!&lt;/p&gt;
&lt;h2 id="whats-next"&gt;What’s next?&lt;/h2&gt;
&lt;p&gt;I don’t know.&lt;/p&gt;
&lt;p&gt;If you want to learn about the tech I’m involved in, check out some recent videos on YouTube with presentations I gave, such as &lt;em&gt;&lt;a href="https://www.youtube.com/watch?v=pFpv6FsCVfY"&gt;Running Lean Architectures: How to Optimize for Cost Efficiency&lt;/a&gt;&lt;/em&gt;, with my dear presentation buddy &lt;a href="https://twitter.com/osterjour"&gt;Markus&lt;/a&gt;, or &lt;em&gt;&lt;a href="https://www.youtube.com/watch?v=IHLJVcejDvU"&gt;The Enterprise Fast Lane: What Your Competition Doesn’t Want You to Know About Enterprise Cloud Transformation&lt;/a&gt;&lt;/em&gt; with my other presentation buddy &lt;a href="https://www.deger.eu/"&gt;Christian&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Or check out my guest blog posts on the &lt;span class="caps"&gt;AWS&lt;/span&gt; blog like &lt;em&gt;&lt;a href="https://aws.amazon.com/blogs/compute/better-together-amazon-ecs-and-aws-lambda/"&gt;Better Together: Amazon &lt;span class="caps"&gt;ECS&lt;/span&gt; and &lt;span class="caps"&gt;AWS&lt;/span&gt; Lambda&lt;/a&gt;&lt;/em&gt;, or &lt;em&gt;&lt;a href="https://aws.amazon.com/blogs/compute/synchronizing-amazon-s3-buckets-using-aws-step-functions/"&gt;Synchronizing Amazon S3 Buckets Using &lt;span class="caps"&gt;AWS&lt;/span&gt; Step Functions&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;On this blog, I’ll probably start writing more personal stuff, maybe about some books I’m reading or things I learned that helped me bend reality closer to my will, or fun stuff I found in the internet, or opinions.&lt;/p&gt;
&lt;p&gt;You know, the stuff that blogging was &lt;em&gt;originally&lt;/em&gt; about.&lt;/p&gt;
&lt;p&gt;What would you like me to blog about?&lt;/p&gt;
&lt;hr/&gt;
&lt;p&gt;&lt;small&gt;“&lt;a href="https://unsplash.com/photos/8MMtYM_3xMY"&gt;Hola&lt;/a&gt;” picture by &lt;a href="https://unsplash.com/@jontyson"&gt;Jon Tyson&lt;/a&gt; on &lt;a href="https://unsplash.com/"&gt;Unsplash&lt;/a&gt;, used under the free &lt;a href="https://unsplash.com/license"&gt;Unsplash license&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;</content><category term="General"/><category term="blogging"/><category term="welcome"/></entry>
</feed>