This is a weblog about computing, culture et cetera, by Miikka Koskinen. Read more.
There’s an annoying conversational anti-pattern for which I’d like to have a name. It goes like this:
- Person A makes an argument.
- Person B disagrees with the argument.
- Person A assumes that person B simply didn’t understand the argument properly and re-states it more elaborately.
The crux is that it does not occur to person A that person B could legitimately disagree with them. This leads to frustrating discussions for both sides. Sometimes this is done deliberately to derail conversations, but I’ve seen people do it in good faith.
I associate this pattern with highly-privileged people arguing with marginalized people, especially if the highly-privileged person is committed to the status quo but at the same time wants to be seen as an ally. You can see this happening on Twitter every now and then.
I can’t believe I’m the only one noticing this pattern. If you know a good name for it, please let me know (e-mail me or tweet at me).
A log in a lake in Nuuksio. Out of my photos in 2017, this is my favorite.
It’s January, so it’s time to look both at the past and at the future! Here’s some good stuff that happened to me in 2017:
- I finally graduated as a BSc in mathematics and made good progress towards graduating as a MSc.
- I had a relaxing summer vacation that included hiking and sailing.
- I attended ICFP. I’ve wanted to go there for ages and finally had the chance. It was the most interesting conference I’ve been to.
- In the fall, I started practicing ashtanga yoga. It turned out te be a good combination of exercise and light meditation.
My thinking about software development evolved in small but important ways:
- Nowadays I’m more concerned about whether our team does good work than whether I do good work personally. Might be a sign of maturing as an engineer.
- I no longer care about Haskell. Being a Haskell programmer used to be a part of my ego, but it’s time to admit that I don’t find Haskell interesting anymore. ICFP made this clear. I’m over being a <programming language X> person.
Here’s what I hope 2018 will bring along:
- More good things: graduating as a MSc, more hiking, sailing, and yoga! More time outdoors!
- I’d like to figure out how to publish writing regularly and sustainably. Blogging every week didn’t work for me, so I stopped it. I did continue to write, but I didn’t publish anything – that wasn’t useful either.
- In general, it’d be cool to ship more things. I’ve always been good at understanding things, but it’s not useful unless you somehow reflect that understanding back to the world.
I enjoyed some things in 2017:
- The best book I read was Anna Karenina by Leo Tolstoy. It covers universal themes like love, marriage, death of a loved one, and birth of a children. I felt that Tolstoy did a good job describing how differently various characters feel about the same events. I recommend it to everyone!
- Good Life Coffee’s Kayon Mountain was excellent, we drank a lot of it at the office.
- Umami, the sushi place in Tampereen kauppahalli, is great! I’m not a sushi connoisseur, but it’s the best sushi I’ve had in Finland.
Finally, I can’t believe it’s 2018 and Juha Sipilä’s cabinet still hasn’t fallen apart.
I’ve poked a bit at Secure Scuttlebutt (SSB). It’s a gossip protocol for syncing append-only cryptographically verified feeds. Its main application is social networking – I recommend giving Patchwork a go if you want to see it in action.
The protocol is mostly defined by the implementation, which is an archipelago of tiny Node.js modules. To make it easier for the next person trying to figure this out, let me give you a rough overview of the outer layers of the protocol:
- All the cryptographic operations are performed with libsodium.
- The connection starts with a Secret Handshake. It is used to authenticate the connecting parties and to agree on session keys. It’s implemented in the secret-handshake module.
- After the handshake, everything is encrypted with the session keys using the framing documented and implemented in the pull-box-streams.
- The encrypted content consists of muxrpc commands and data.
- Concretely it’s a stream of packets encoded with the packet-stream-buffers module.
Edit: For more, check out the Scuttlebot Protocol guide. It looks super-infromative, but I didn’t know about it before writing this post! Thanks to André Staltz for pointing me to it.
I toyed around implementing SSB in Pony and this is how far I got. I suppose it’d be simple to implement a client that connects to a Scuttlebot server to publish a message.
I don’t how much it’d take to implement a full-blown SSB node. At least you’d need the feed synchronization. I think it’s implemented by the ssb-friends module, but I’m not 100% sure.
For more posts, see archive.