Deleting anonymous users' baskets when their sessions expire

How do you delete baskets belonging to anonymous users when their sessions expires? It wasn't quite as simple as I thought.

read more

Adding custom actions to the Django Admin

Let's add custom actions to Django's admin site - but to the change form, not the list view.

read more

Setting up a Debian 11 server for SvelteKit and Django

I recently had to set up a brand new server for a website running on SvelteKit and its API running on Django. I am a software developer and setting up servers and hosting isn't something I normally do, so I followed a bunch of different tutorials. In this article I want to combine all these tutorials, mostly for future me, but hopefully you'll find it useful as well.

read more

2022 in review

Another year flew by, I can't really believe it's already been a whole year since I wrote 2021 in review. A very busy and somewhat stressful year - although not for all the reasons I predicted a year ago.

read more

SvelteKit session refactor

SvelteKit version 1.0.0-next.415 removed the session object and store. Refactoring my project wasn't very straightforward, let's go over the changes.

read more

SvelteKit Architecture - the solution

Last August I wrote about trying to come up with the architecture for a SvelteKit app I was working on, and failing. I'm happy to say that I have found a solution for all my problems!

read more

2021 in review

Welcome to the end of 2021, a.k.a. the second year of the pandemic. Another year of not going abroad, barely seeing friends, playing Dungeons & Dragons via Zoom instead of at the table. A year of mild depression and feelings of loneliness. But also a year of hope when we all got access to the vaccines and when we didn't hear about Trump every day in the news. And last but not least: it was also a very productive year!

read more

Working around HttpOnly cookie problems in SvelteKit

When HttpOnly cookies didn't work as expected in my SvelteKit project I had to find a workaround.

read more

Saga 1.0.0 has been released

About ten months ago I wrote that I was confident that the API of Saga wasn't going to change a lot anymore, and that I'd release 1.0.0. Well, it's taken a little bit longer than I expected back then, but 1.0.0 has finally been released!

read more

Vapor 4 versus Django REST Framework

Over two years ago I wrote an article where I compared Vapor 3 to Django REST Framework. It's time for a rematch with Vapor 4.

read more

Architecting a SvelteKit app - and failing

I was working to architect a SvelteKit app so that it does as few requests as possible, from a central place, so that all subpages have access to the content. Sadly dealing with SSR makes it very hard to achieve my goals.

read more

My one big complaint working with Vapor 4

I'm trying out Vapor 4 for a side project, and one thing that I am constantly running into is the amount of boilerplate and copy-pasted code. Are there no better solutions for this?

read more

Interview with proglib.io

Recently I was interviewed for the Russian IT website proglib.io. Since it might be interesting for non-Russian speakers, here it is in the original English version.

read more

WWDC21 keynote review

A new year, a new WWDC with once again new iOS, iPadOS, macOS and watchOS releases. If you ask me, I think yearly releases are overkill and really not necessary; I’d rather have Apple split off features like Weather, Maps, Notes and more into...

read more

Mentee Question 5: What's the deal with coordinators?

A few weeks while ago in my how to get started article I mentioned coordinators in the “What architecture should I use?” section, and how they allow you to decouple your view controllers from one another, and improve the way you can test your code....

read more

Mentee Question 4: When to use PassthroughSubject and CurrentValueSubject?

That’s a great question! And actually one I asked myself too, when I just got started with Combine. Let’s first explain what PassthroughSubject and CurrentValueSubject are though. Subjects are a kind of publisher that you can subscribe to, but can...

read more

Mentee Question 3: How to know when multiple publishers completed?

In JavaScript-world, it's really easy to know when multiple promises completed: just use Promise.all. How do you do the same thing in Combine?

read more

Automating your changelog and GitHub releases

In a short time I’ve created 25 releases for my static site generator Saga. For each release I’ve manually updated the CHANGELOG.md file, which is a bit tedious and easy to forget. I really wanted to automate this using GitHub Actions, which I was...

read more

A review of Markdown parsers for Swift

A hugely important part of any static site generator is of course the parsing of Markdown content. The default parser for Saga is Parsley, a custom wrapper around a cmark fork. While I am generally quite happy with it, there are some problems.

read more

Building my own static site generator, part 7: updates & the road to 1.0.0

In the past few days I’ve made some pretty substantial improvements to Saga, to make it work for me and my website, which is now built using Saga.

read more