Image for post
Image for post
Photo by Tillmann Hübner on Unsplash

I was a deep and late sleeper until I was well into my thirties. I needed my alarm or I would miss half of the day. And then one day, something weird happened. Well, sadly, not that weird — hormones shifting, I am sure. I started waking up unprovoked at 7 or even 6am.
Though there is something cool and creative about being a night-owl, I have come to love mornings so overall it’s not a bad change. However, the lighter sleep has given me insomnia from time to time which definitely sucks.

I’m a bit of a cerebral type…


Image for post
Image for post
Photo by Uriel Soberanes on Unsplash

I’ve created a tool that extracts the schema of a Postgres database and generates Typescript types out of it. It’s called Kanel.

It is not an ORM. I simply wanted types in my editor so that I could get

  1. autocomplete, and
  2. error messages if I forget a field or try to access a field that doesn’t exist.

There are many ways to achieve this but I had a specific requirement that made me decide on this approach: I wanted my database schema to be the only source of truth. I wanted to write migrations in plain SQL and queries in…


Even if COVID-19 hasn’t impacted you directly, the extreme uncertainty of it all is almost certainly affecting you and perhaps stressing you out more than you realize. Personally, I am addicted to the news and I go off on tangents studying the Spanish Flu and other historical events that seem like they might help me understand the situation. I don’t think it’s good for me.

So I have taken up meditation. Again. Yes yes, we all know about it and I have tried to get into a habit of it many times without any luck. …


Image for post
Image for post
Photo by Sven Mieke on Unsplash

I started writing custom linter rules for Submotion and it’s been a surprisingly rewarding experience. I felt that my database schema was uncomfortably exempt from this scrutiny so I created a linting tool for it:

https://github.com/kristiandupont/schemalint

This tool will extract the schema from a live database and inspect it according to rules just like a code linter does with code. It uses nodejs but it’s just a command line tool so you can use it with whatever, as long as you have a postgres database.

You install it with npm:

$ npm install --save-dev schemalint

You then create a .schemalintrc.js configuration…


Image for post
Image for post
Photo by Liam Shaw on Unsplash

I’ve run into a few problems recently that I felt had a common denominator that I couldn’t quite put my finger on. When it clicked, I thought I’d write something down just to solidify the idea in my head. I call it somersault problems. There may be a more formally (or colloquially) defined term but I am not aware of it, so this is what I’m going with. I also considered uphill bicycle problems, but somersaults seemed more fun.


Image for post
Image for post
Photo by dylan nolte on Unsplash

Recently, I was having a discussion about the lottery with a friend of mine. Like so many times before, the analogy that you are more likely to be struck by lightning than winning came up. This analogy always annoyed me because it feels like there is a meta-level difference. Sure, I don’t imagine I will ever get struck by lightning. I don’t walk outside in thunderstorms with a kite. However, if I do play the lottery..?

And when you look at the winning numbers, they always look like your random numbers. Oh, there’s a 3, a 4 and a 7…


Image for post
Image for post
Morning Planning

I’ve studied procrastination in great detail and tried out many, many systems and techniques. Some I still use, many turned out to offer little help.

I recently purchased a device that has been useful to me. The jury is still out on whether it will last, but I’ve been using it for about two months by now and it’s been great so far. It’s a little $5 stamp, ordered from Ali Express. It forms a circle that represents the day.


Image for post
Image for post
Photo by Max Adulyanukosol on Unsplash

I was on the bus one Copenhagen winter day. We get a lot of those here. The show was so heavy that the bus got stuck at one point. The bus wasn’t full but we were a good 10 people or so. We all got out and helped push the bus. It cleared the snow, we got back in and we drove on.

Another time, summer then, I tried to take out cash from an ATM and it gave me the most peculiar error message, and no money. That doesn’t normally happen so I got a bit uncomfortable as one…


Image for post
Image for post
Photo by Bill Oxford on Unsplash

..in that, there are categories of problems that can’t really be solved without it, but as soon as you introduce it, your whole system becomes just a bit more fragile. You get that whole “I can’t stop it right now, it’s in the middle of something”-concern to worry about.

Additionally, there are a problems that you can solve without it, but where the immutable solution will perform poorly. In that case, it is probably best to start out with the immutable solution and make the switch no sooner than the day you realize that you can’t postpone it any more.


I cannot believe the state of affairs the web is in when it comes to calendar data and events.

Image for post
Image for post
Photo by Estée Janssens on Unsplash

There is the iCalendar format which is old and quirky (seriously quirky), but it works and it pretty much serves all necessary purposes. However, there is no standard way for a website to offer such a file to be added to your calendar. Yes, on a laptop you can download it and double-click on it. This will allow your default calendar to pick it up but it’s still not a good user experience. I want to allow my users to click…

Kristian Dupont

Bit of a geek..

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store