quanttype
Compressing floating point data with Gorilla
FP compression family tree
Storing timeseries data
Leader election with S3 and If-Match
New winds
Yearnote 2024
Weeknote 19: ADRs record decisions
Weeknote 18: Code comments
Weeknote 17: Caching Docker builds on GitHub Actions
Weeknote 16: Late code review
Weeknote 15: Technology radar
Weeknote 14: Throwing it away
Weeknote 13: Deterministic Simulation Testing
Weeknote 12: In the weeds
Weeknote 11: Weeknotes
Weeknote 10: Prototyping
Weeknote 9: EuroRust 2024
Weeknote 8: Feedback
Weeknote 7: Memray + k8s
Weeknote 6: Heart of Clojure
Weeknote 5: Broken Input
Weeknote 4: Debugging Tools
Weeknote 3: Object Storage
Weeknote 2: Developer Experience
Weeknote 1: Schema Evolution
paketoi 0.1
A toolbox of methods
GitHub's PRs could be better
Creating AWS Lambda zip files with Pex
Yearnote 2023
Do not use requirements.txt
Recipes for updating poetry.lock
Branchless git workflows
Yearnote 2022
SQL, Clojure, and editor support
What does `identical?` do?
Tasks of a schema migration tool
Schema migrations and avoiding downtime
Clojure and what could've been
Yearnote 2021
Split tokens in Clojure
Enjoying the silence
clojure.xml and untrusted input
clojure.spec and untrusted input
Why take notes, anyway?
The goal is to deliver working software
Winter-posting
When to not use code review
Writing is a core skill for developers
Clojure project automation tool of my dreams
Yearnote 2020
NixOS impressions
Code review in context
New shell prompt with Starship
Early impressions on morning pages
Code review is for collaboration
Why bother with Integrant?
Two albums of sad music
What are DIDs?
Caching HTTP requests in Clojure
Generating random tokens in Clojure
clj-branca: lessons learned
Branca and yak shaving
Solving the diamond problem with shading
Local memoized recursive functions
No blog this week
Is this art?
JWT and its alternatives
Looking good in a suit
The minimalist program
Two things that make logging out hard
Summer reading
Signing .jars is worthless
On paddling
Summer vacation
Building software without hiring anyone
Who is going to use the programming language?
Automating spec-tools releases
Have you seen the swan?
Essential features of data specification libraries
Schema, Spec, and Malli
Elegant knowledge transfer
Ricoh GR III, a year later
Put files where they are expected
Video calls are cool but have you tried writing
Freezing deployments is risky
Working from home: initial impressions
Programming is writing
Making decisions without asking your boss
No need for something to say
Logging request IDs in Tornado
Hello again, Python
Joys of a heavy camera
Yearnote 2019
Standard problems, standard solutions
Just automate syntax formatting
Keeping code review fast
The power of code review
Coercing JSON with malli
Karhunkierros IV
Karhunkierros III
Karhunkierros II
Karhunkierros I
The joys of coverage
The hallway track conference
Interpreting Moriyama
Ricoh GR III - initial impressions
Handbrewing coffee
Revisiting Clojure testing
Yearnote 2018
How I use tap>
Clojure libraries I recommend
Why interceptors?
I made a backpack
Fully automated releases
Migrated to Hugo
Lead Developer London 2018
A night in Nuuksio
Edit clipboard contents in Vim
How to write a talk proposal
Name this conversation pattern
Yearnote 2017
Secure Scuttlebutt: some technical details
A new JSON library appears
Break from blogging
What is first-order logic?
Please publish changelogs
Write more macros
Hiking from Pyhä to Luosto
Summer vacation
Focus on understandble code
What is pair programming like?
Using Beeminder to keep blogging
What are hybrid maps?
ZuriHac 2017
Commit messages are worthless
On sailing
On JSONfeed
clojure.spec for configuration validation
What is functional analysis?
JUnit output for Clojure tests
prog1 in Clojure
Darkroom update
Keskustalaisuus vaalikoneessa
How I use Anki
Configuring Clojure apps
Thinking about gear (acquisition syndrome)
Ice in black and white
The surprises of photography
Reading highlights from 2016
Technical tooling for making better software
Running ClojureScript tests with Karma
Clojure test runner of my dreams
Curry On and ZuriHac
Some questions (June 2016)
On feeling guilty about not being good enough
You'll want locally scoped CSS
Why look beyond JavaScript?
What is descriptive set theory?
How I solved the Orbital Challenge
Mamiya RB67 Pro-S
What's the point of dependent types?
We're in early days of software engineering
Finding that lemma: Coq search commands
How to divide by zero?
Take better photos by looking carefully
defaultdicts all the way down
Runtime exceptions in Elm
Multitenant Flask-SQLAlchemy
What is forcing, anyway?
Elementary algebra in Coq: Trivial group
Please give demanding tech talks
Elementary algebra in Coq: Defining a group
What's in a proof?
Getting started with Coq
Helsinki Haskell User Group
On Infinite Jest
The bare minimum to know about RELAX NG
Yearnote 2015
Math is hard, let's go blogging
Code review requires trust
Color film update
Python is not good enough
Printers now work
Spinning while sleeping
Joylent mini-review
Dabbling in film photography
Webpacking a project
Exercising is like eating
Moral obligations of ad blocking
Commandments for code review
Some questions I can't answer
Everyday carry (August 2015)
Copenhagen highlights
Shell pro-tip: create weekly working directories
Wash your smelly travel towel with vinegar
FRP and self-adjusting computation
Running is great for lazy people
The Moat of Scrumbut
Speech as art
A Mind for Numbers
Spend some time away from computers
ROS: Good, bad and ugly
The Law of Partial Test Coverage
Good math exercises build trust
Quickly jumping between git branches
Emacs: Get the path for current buffer from command-line
Birds and context-free grammars
You should take lecture notes with pen and paper
Tornien taisto is coming soon
New theorem prover: Lean
The value of MOOCs is not in the videos
Are quantum computers faster than classical computers?
This Week in Finnish Politics
Types of JavaScript
Setting up Coq, Ssreflect and Proof General on OS X
Yearnote 2014
Ambronite mini-review
Going to write a bachelor's thesis
Guts of the Golden Pig
Event notes: ClojuTRE 2014
A photo essay: Haronmäki
Customizing Nix packages
Did taking photos teach me anything?
Four scientific ways to hack your learning
NP and non-deterministic Turing machines
Why does everything fall apart so quickly?
Practicing photography
Houkutteleva tutkijanura
In praise of Hiccup
Is being normal anti-establishment?
Electromagnetic Field 2014
Math is programming
When is static typing worthwhile?
Hard things in software engineering
Linux problems, April 2014
Baudrillard on Jogging
Renaming files with zmv
Weak views, strongly held
Flappy Sine
nix-docker and docker volumes
Baana, Helsinki
Compiling assembler files with avr-gcc without C runtime
People Never Change
Peruna, a horse and a medicine
Mental Attitude of the Grid
Silver Streetcar for the Orchestra
ferret.gif
Why do you write commit messages?
Setting up nginx for static content with Pallet
Tomaatti-Sota