New
The latest blog posts to take off on Hacker News. 14,543 posts.
Are unsound type systems wrong?
This is an essay I wrote early-2016. After battling with soundness vs. usability in Typed Clojure for many years, I was starting to reconsider the “obviously wrong” approach of baking unsoundness into the type system from the get-go. I look at some historical examples of intentional unsoundness in type systems, and…
Mill: Better Scala Builds
Mill is a new build tool for Scala: it compiles your Scala code, packages it, runs it, and caches things to avoid doing unnecessary work. Mill aims to be better than Scala's venerable old SBT build tool , learning from it's mistakes and building upon ideas from functional programming to come up with a build tool that…
A Virtual Machine
Magicians protect their secrets not because the secrets are large and important, but because they are so small and trivial. The wonderful effects created on stage are often the result of a secret so absurd that the magician would be embarrassed to admit that that was how it was done.
C++17 Compiler Bug Hunt
Hey, if all I have is lemons – I have no choice but to make lemonade out of them! if reproducible serious bugs are ignored for many months, it indicates one ...
The secret life of NaN
The floating point standard defines a special value called Not-a-Number (NaN) which is used to represent, well, values that aren’t numbers. Double precision ...
Common Lisp Standard Draft
Add more credibility to your site - get a premium domain today. Straight-forward shopping experience.
Why I Moved Back from Gradle to Maven
My experiences with Gradle and why I finally moved back to Maven
Parallel tasks in Python: concurrent.futures
concurrent.futures is well suited to Embarrassingly Parallel tasks. You could write concurrent code with a simple for loop.
History of Spring Framework and Spring Boot
Spring framework is arguably one of the most popular application development frameworks used by java developers. It currently consists of a large number of modules providing a range of services. These include a component container, aspect oriented programming support for building cross cutting concerns, security…
Deprecating Raw Pointers in C++20
The C++ Standard moves at a fast pace. Probably, not all developers caught up with C++11/14 yet and recently we got C++17. Now it’ time to prepare C++20! A few weeks ago The C++ Committee had an official ISO meeting in Jacksonville, FL (12-17 March 2018) where they worked hard on the new specification.
Gradual Programming
Programming is a fundamentally incremental (or gradual) process, and our programming languages should reflect that. I show several ways in which program models transition over time and discuss how future research can further a human-centric vision for programming languages.
Modern PHP without a framework
I’ve got a challenge for you. The next time you start a new project, try not using a PHP framework.
You can't Rust that
Some tips for how to be more productive in Rust by avoiding situations you cannot solve in Rust.
Go on Very Small Hardware
How low we can Go and still do something useful? I recently bought this ridiculously cheap board: I bought it for three reasons. First, I have never dealt (as a programmer) with STM32F0 series. Second, the STM32F10x series is getting old. MCUs belonging to the STM32F0 family are just as cheap if not cheaper and has…
Python Idioms in Rust
I’ve been going through a period of programming language wanderlust over the past couple months. Recently, I’ve been quite interested in Rust. Coming from Python, I’ve found a lot of Rust’s language features to be quite powerful.
Sl: a mirror version of ls
Ever heard of the Steam Locomotive ? It is supposed to cure your bad habit of mistyping [ ls ] by running an ASCII rendition of a steam locomotive through your terminal.
Probabilistic Filters By Example
Probablistic filters are high-speed, space-efficient data structures that support set-membership tests with a one-sided error. These filters can claim that a given entry is definitely not represented in a set of entries, or might be represented in the set. That is, negative responses are conclusive, whereas positive…
Fast, Safe, and Complete(ish) Web Service in Rust
A detailed look at the frameworks, concurrency model, error handling, middleware constructs, and testing strategies of a web service written in Rust.
Announcing the Second Edition of “Refactoring”
I'm finishing a new edition of my Refactoring book. Here's details and periodic memos about my work.