I’ve been feeling like blogging again. I think I will.
Writing
I should do it more
Disable macOS' "Tile by dragging windows to screen edges" from the command line
defaults write com.apple.WindowManager EnableTilingByEdgeDrag -int 0;
To enable it again:
defaults write com.apple.WindowManager EnableTilingByEdgeDrag -int 1;
Pyramid Scheme
From my AMA:
Hi Mikkel. Just finished watching The great crypto scam with James Jani. I have previously (Kortsluttet) heard you talk positively about the possibilities of block chain technology. Are you still optimistic about the potential now or do you share some of his concerns, that it is mostly utilized as a pyramid scheme to make early adopters rich.
I’m quite involved now in the digital collectible scene, AKA NFTs, and I hold some crypto, mainly $ETH that I’ve made from selling and helping others sell NFTs. So take my opinion with that in mind.
I don’t see crypto, Ethereum at least, as a pyramid scheme. There have definitely been folks who’ve been rewarded solely by being first but that is also true in start-up investing or real estate or whatever else people invest in. There’s always risk and then sometimes there’s a reward for taking on that risk.
I like how NFTs allow me to collect art directly from artists. I support them in their creative endeavours and I get to call some pieces mine. Whether you think this form of ownership is even a thing (I CAN JUST RIGHT-CLICK SAVE AS?!) is up to you but it is meaningful to me.
I think the last 10 years have shown us that if we want to live increasingly larger parts of our lives online, we need somewhere to live. Huge corporations and their Social Media products were easy to move into as they had the means to pay thousands of talented people to build very easy to use and welcoming machines. But the rent was paid with attention and privacy and, on Facebook democracy, and recently on Twitter with our dignity.
So we need something else. Public blockchains provide a solution to the problem of where do we put all the stuff?! Just think of them as a database that no one owns. It’s slow and expensive and cumbersome. But no one owns it. So no one can fiddle with the data. No one can decide to sell your data against your will. No one can tell you, you have to use their app, because there’s no moat around the data.
There are a few other decentralisation efforts that don’t include the whole money aspect so prominently, like Holepunch or Scuttlebutt. They’re very interesting as well.
I don’t think Bitcoin will replace the dollar. I’m not sure it’s a good investment to buy any crypto at any point. Well, it would’ve been 6 years ago and wouldn’t 1 year ago. But who knows where prices go from here. I’m not too interested in that aspect (I mean, if the $ETH price goes to a million USD and I become generationally rich, I won’t complain.)
Convert transparent WebP video to HEVC MP4 with alpha channel
Converting the other direction is widely documented but going in the other direction required a little more digging. Here’s how I did it:
$ mkdir frames
$ ffmpeg -vcodec libvpx-vp9 -i INPUT_FILE.webm -pix_fmt rgba frames/%04d.png
$ ffmpeg -r 24 -i frames/%04d.png -c:v prores_ks -pix_fmt yuva444p10le OUTPUT.mov
That’ll give you a ProRes4444 version of it. To convert further, I used a macOS built-in service.
- Right-click on
OUTPUT.mov
- Select
Services > Encode Selected Video Files
- Select
HEVC 1080p
as the setting and checkPreseve Transparency
This should give you a OUTPUT-1.mov
which you can rename to .mp4
.
Using transparent video is easy and widely supported these days. Fun!
Configure a hyper key with VIA configurator
It’s 2021 and you have a mechanical keyboard that’s configurable with VIA and you want one of your keys to be a hyper key. Meaning it should be the same as holding ⌃⌥⌘⇧ all at once.
It’s possible! Set the key to Any and put MT(MOD_HYP, KC_NO)
as the key code.
Fix macOS Big Sur being stuck in Do Not Disturb
For some reason, since upgrading to macOS Big Sur, my Do Not Disturb status seems to get stuck. However many times I turn it off it always mysteriously ends up being on again. Which I of course first realise after missing notification for a few hours, having been unwantingly extra productive. Can’t have that!
Thanks to this Reddit comment the setting is set in one or more plists.
Use this one liner to set it to false:
for f in `ls ~/Library/Preferences/ByHost/com.apple.notificationcenterui.*.plist`; do defaults write $f doNotDisturb 0; done && killall NotificationCenter
Aaah, the overwhelming feeling of drowning in notifications is back.
A Calm Side Project
There’s no way round it– side projects come with some measure of responsibility. As soon as you have users, fans or even customers, you can’t just leave anymore. People will be counting on your thing to work. Having customers means success but if you’re already drowning in one inbox then adding another busy one is not going to feel like success.
If your day job takes up all your waking hours, if it feels like the house is on fire at all times, if you feel bad when leaving the office –or closing the laptop if you’re a remote worker like me – then a side project isn’t a good idea.
If, on the other hand, you’re in the privileged position that your day job leaves you with time for yourself then there’s plenty of room in the week for side projects.
But because work on side projects is mainly (if not only) driven by your own excitement and curiosity, and because you only have so much time left after your regular job, your side project should allow your effort to go up and down without turning into, as they say, a garbage fire.
We don’t want garbage fires. We don’t want to burn out so we can’t keep doing the good work. We’re in this to build quality projects and quality connections to the people who use our thing. And if we’re constantly putting out fires or doing uninspiring, dreadful work, we won’t have the excess energy to do the good work.
Sometimes you will put in 2-3 hours and get loads of shit done. Other times you’ll feel like rewatching Arrested Development instead[1]. This should be alright, mostly always.
If your idea or app requires consistent, daily work, consider this: Can you repurpose or re-shape it into something that doesn’t require your every waking hour? It might feel exciting right now but in 2 years you’ll wish you never started.
-
Don’t build business-critical things.
For example, things that come with multiple nines[2] of guaranteed uptime. As soon as people rely on your service for the critical parts of their service, you’re on the hook. That’s why companies have revolving on-call schedules so one employee can go on a holiday or, well, sleep, because someone else is on the hook. When you’re just you, you are just you. No sleep. -
Automate the right things and at the right level.
Between hand-holding users and fully automating things, there’s a scale of partial automation.
If your signup process is hard to get right, maybe it’s better to do it manually for now. This is a good idea if you have few but large fish. Terrible if you have thousands of small krill.
Charging users (if you are so lucky) is something that often comes with lots of ifs and if it does, it can probably be done manually at first.
I love the idea behind the project Runbook where every step can start as a manual, human task, before gradually becoming automated.
- Use the tools that you know.
Even though I’m always tempted to use something new and flashy, I mostly just use good ol’ Ruby on Rails. Even though I’m curious to learn Figma instead of Sketch, I make myself use the latter. This ensures that the mere 3 hours I have, go towards something constructive.
This is not meant to be an exhaustive list. It’s merely a suggestion of things to look out for before starting your project or how to calm down projects you may already have on your hands.
Season 1-3 only, of course. ↩︎
Service availability is measured in how many nines you can put as decimals after 99%. 5 nines means the service is guaranteed available and functioning 99.99999% of the time. If you’re down for one hour in an entire year, you’re for example already down to 99,9885844749% uptime. A single nine. ↩︎
The Side Project Garden
Along with our house came a rather extensive garden. It’s not acres of rain forest but it’s definitely more than what we were used to; nothing.
It’s big enough to have several sections. There’s the front yard, there’s the back yard with its beginning by the house, its open, grassy middle and then end, which has been seemingly completely neglected by the former owner for years. It is a mess. With a little love and good set of gloves, that end could become almost a little garden in itself.
When we got the house, the Danish November’s harshness had everything stripped of leaves and berries and anything green that could give us, the crude city people, any indication of what any of it was.
Then spring came and it blew up. It turned out we had raspberries, blackcurrants, redcurrants, apples, hazelnuts, a, lonely but giant, rhubarb. Tiny woodland strawberries came up all around the edges of the bushes. The kids ate everything.
How do you handle all that green? You only have one choice: Little by little. You nurture one part. Leave it for a bit. Look at the mess. Then come back and tend to another part. Little by little.
Frank Chimero recently posted something on his blog that resonated with me (and others.) On the topic of how the author of Game Of Thrones, George R. R. Martin, built his intricate world with its complicated relationships and long-running plotlines:
In interviews, [George R. R.] Martin has compared himself to a gardener—forgoing detailed outlines and overly planned plot points to favor ideas and opportunities that spring up in the writing process. You see what grows as you write, then tend to it, nurture it. Each tendrilly digression may turn into the next big branch of your story.
It resonated because it reminded me of how I treat my side projects. (I recommend reading the whole postblog.)
When I look at all of my projects, it’s a mess. Each project deserves nurturing. They hunger for the attention of their master who’s seemingly found new love elsewhere. Nothing is perfect, heck, some parts just barely hold together. Yet, my attention isn’t easily controlled. Forcing myself to throw every spare hour at trimming the edges of every project would make me mayor of Burnout City faster than I could buy a fancy top hat. And even if I did, it wouldn’t be time enough to get everything into perfect shape.
So I pick a part, a plant, and nurture it a bit. Yesterday that was Joof.app which is getting renamed and restyled and has been so for months. That is, I had decided that it was to happen, but I hadn’t found the time or motivation.
Jamming with Marc about names back in November, we’d come up with Sprinkles which, although being a slightly loaded term in the developer world, fit perfectly.
A rough sketch of a logo direction had been living as the only thing on my otherwise completely empty macOS desktop. Then, two days ago, the motivation was there and I bashed together a version of it in Sketch.
I sent it out to a few trusted designer friends on Twitter to get some quick reactions. Everyone agreed it wasn’t quite there yet. The window didn’t look like a browser. The colors were more akin to an editor. Another round and it looked like this.
I’m not sure this is where it ends – but it’s good enough for now.
Good enough is good enough and with side projects that’s what we’ll have to come to terms with. We can look out into the project garden and see how everything is perhaps a bit rough, but a little love here and there and over time we’ll get to eat the berries and and and…, enough with that metaphor.
The first 10 hours
It has always annoyed me when people proclaimed that they always wanted to learn to play the piano or any other skill as if it was ever too late.
I wish I could code. Well, how do you think anyone ever learnt anything? They put in some time. And, if you’re really serious about that wish, this is the only way to do it. But I don’t have the time! you say and you are wrong.
What you don’t have is either the motivation or a clear enough idea of how to start.
This is not to get all #hustle on you but you have time. Exchange one of the TV shows you watch with learning to code a little bit. One season of Game of Thrones is, what, at least 10 hours? I promise you that you can make your own, your very own, home grown website in 10 hours or less. Especially if you call those 10 hours a deadline.
Unsurmountable tasks like “☑️ learn to code” or “☑️ learn to play the piano” are daunting because they’re impossible to ever finish. When is anyone done learning to code? I’m certainly not and I’ve been going for over 15 years. People die having had successful programming careers yet still learning to code.
This is just to say that, you do absolutely have time to learn to code something. Perhaps, start out with the task of creating as much of a personal website as possible in 10 hours. This works if you don’t know anything about coding and it works if you’re a pro.
The deadline makes sure you don’t waste too much time on details or the fact that there are things you don’t know yet. You’re a smart, capable person. You can look things up if you need to.
I promise you, if you do this, you will feel like you can do anything and you’re now at least 10 hours into the life-long task of learning to code.
Using Sorbet in (Neo)Vim via coc.nvim
I for one welcome Stripe’s new typechecker for Ruby. As many of us learnt from Typescript, the added help from the typechecker is a great benefit with little to no cost.
To add Sorbet’s hints and errors to your Neovim, install coc.nvim and add this to your :CocConfig
:
"languageserver": {
"sorbet": {
"command": "srb",
"args": ["tc", "--lsp", "--enable-all-experimental-lsp-features"],
"filetypes": ["ruby"],
"rootPatterns": ["sorbet/config"],
"initializationOptions": {},
"settings": {}
}
}
Restart vim and load up a type checked Ruby file. What a time to be alive 🍦