Top posts
Every blog post that took off on Hacker News, ranked by the votes of its best submission. 14,544 posts.
Todo example in Rust
Rust Qt Binding Generator lets you combine Rust code with a Qt 1 graphical application. A previous blog shows how to make a simple clock. It’s a good idea to read that post before reading this more advanced post, because in this post we are getting serious.
Choosing a Web Framework/Language Combo for the Next Decade
You often see the question “What stack should I use to develop my application on?” posed but rarely do you get any insight in the actual process once someone decides to answer it specifically, so both as an analogy to rubber-ducking this and showing you what went on while I made my choice I’ve decided to document the…
I changed my license
In the last 28 years of publishing software, I’ve had three distinct eras of software licensing. All of my recent stuff is available under the European Union Public License 1.2, and I thought to explain why.
All Horses Are the Same Color
Problem: Show that all horses are of the same color. “Solution”: We will show, by induction, that for any set of $ n$ horses, every horse in that set has the same color. Suppose $ n=1$, this is obviously true. Now suppose for all sets of $ n$ horses, every horse in the set has the same color. Consider any set $ H$ of…
Why you might want async in your project
There is a common sentiment I’ve seen over and over in the Rust community that I think is ignorant at best and harmful at worst.
Why Go is elegant and makes my code elegant
This is a enthusiast blog post. I’m not even gonna speak about how concurrency comes easy with Go. Honestly, I’m not good enough to speak about it. I’ll just speak about how using Go in my everyday programming makes me happy.
Response to "Ruby Is Not a Serious Programming Language"
[5 min read] The question Sheon Han poses — “Is Ruby a serious programming language?” — says a lot about what someone thinks programming is supposed to fee...
C++17: I See a Monad in Your Future
[If you prefer, you may watch the video of my talk on this topic (here are the slides).] If you thought you were safe from functional programming in your cozy C++ niche, think again! First the lamb…
Five lines I put in a blank .vimrc
TL;DR To make a default Vim installation more useful, type the following 5 lines into its .vimrc file:
Backend for Front-end
In the good old days, applications were simple. A browser sent a request to a webapp endpoint; the latter fetched data from a database and returned the response. The rise of mobile clients and integrations with other apps upset this simplicity. I want to discuss one solution to handle the complexity in this post. The…
TDD Doesn't Work
Yeah, an in-depth study that repeated another study that was done a few years back. Both showed that TDD doesn’t work. The new one uses a multi-site, blind analysis, approach. It looks conclusive.
A whirlwind tour of object-oriented code in F# (2012)
A whirlwind tour of object-oriented code in F#
Hashing is not encryption
Encryption, encoding, and hashing are three related but distinct concepts. It’s important for you to understand all three.
Gallery of Processor Cache Effects
Most of my readers will understand that cache is a fast but small type of memory that stores recently accessed memory locations. This description is
A small Stripe fraud story
A story post about the time a Stripe account I used years ago had thousands of pounds worth of unexpected payments flood in.
Lifetimes of cryptographic hash functions
Quick summary of my recommendations on compare-by-hash: If you are using compare-by-hash to generate addresses for data that can be supplied by malicious users, you should have a plan to migrate to a new hash every few years. For example, BitTorrent falls into this category, but rsync doesn't. Keep in mind that new…
Fintech engineering mistakes (2022)
Read this list unless you want to build a money disappearing system
Better Dotfiles
I am Dan, full stack software engineer.
A Look at Rust from 2012
Recently I was scrolling through brson’s Rust quote database and stumbled upon a link to the official Rust tutorial from the very beginning of 2013. It says Rust 0.6 in the corner, but it lists many things that were removed in 0.6, so it’s likely closer to 0.5. I heard tales of old Rust before, but not of how the…
Best practices for a new Go developer
This year I had the privilege to organize GopherConIndia 2015 and also interview a number of Gophers.
Best practices in modern web projects
At Oktavilla we regularly start new projects. Over the years we have therefore come up with a few best practices to ensure that it is easy to take part in ou...