New
The latest blog posts to take off on Hacker News. 21,834 posts.
Frequent versus infrequent developers, in languages and so on
You're probably reading this page because you've attempted to access some part of my blog (Wandering Thoughts) or CSpace , the wiki thing it's part of. Unfortunately you're using a browser version that my anti-crawler precautions consider suspicious, most often because it's too old (most often this applies to versions…
How to dismantle a compiler bomb
You have heard of “zip bombs” (a tiny ZIP file that decompresses to multiple gigabytes) and “XML bombs” (small XML file abusing the entities to consume lots of memory), and …
OpenPGPjs v3.0
We're happy to announce a major new version of OpenPGPjs, the world's most widely used JavaScript PGP encryption library. Version 3.0 brings many enhancements to the hundreds of applications and millions of users who rely on OpenPGPjs.
Symbolic Execution: Intuition and Implementation
In this article I give a brief tour of a program analysis technique called symbolic execution. As the title indicates, I aim to explain both the intuition behind the technique, and also the details of a simple implementation. My intended audience is professional programmers who have no background in program analysis.
How to Write CSS That Works in Every Browser, Even the Old Ones
Jen Simmons' seven-part mini-series on resilient CSS and how you can create great graphic design on the web, now, and not have to worry about all the old browsers.
Scrcpy – An app to display and control Android devices
I developed an application to display and control Android devices connected on USB. It does not require any root access. It works on GNU/Linux, Windows and Mac OS.
Building bots to mend badges, or how to get your GitHub account suspended
TL;DR: Many badges were broken since they were using the shuttered pypip.in site. I wrote a bot that could fix these and automatically submit pull requests with the changes. And then I had my GitHub account suspended. Do not make automatic unsolicited pull requests. Disclaimer This post discusses the design...
Writing a Microservice in Rust
Musings on navigating the tech bubble with philosophy and self-improvement.
Vulkan 1.1 Released
The Khronos Group announces the release of the Vulkan 1.1 and SPIR-V…
Java call stack – from HTTP upto JDBC as a picture (2006)
Created this by pasting together a few screenshots from a NetBeans profiler session – of a Spring + Hibernate web-app running within JBoss. Quite interesting to see how the business logic is …
Previewing Android P
News and insights on the Android platform, developer tools, and events.
How I Helped Potty-Train My Kid Using Twilio and an AWS IoT Button
Walkthrough of an IoT Potty Button which makes a phone call when a kid has to go. With Python, Twilio, AWS IoT, Lambda and an IoT Button build one-touch alerts to make a phone call. Includes sample code and links to build your own poop button or extend the idea.
Make your own build system
On this page I present a robust, custom build system for a software project written in C, in less than 500 lines of Python code. I think it is about as minimal as a practical dependency-tracking build system can get. Although it adds to the code that must be maintained as part of the project, I think that having a…
Granular Audio Synthesis
If you want to make a sound shorter, you can play it faster. Doing this also makes it higher pitch unfortunately. If you want to make a sound longer, you can play it more slowly. This also makes it…
Create Statistics in PostgreSQL 10
Postgres stores a lot of statistics about your data in order to effectively retrieve results when you query your database. Here we deep dive into some of the statistics PostgreSQL stores and how you can leverage a new feature in Postgres 10 to improve performance when different columns are related.
Progressive Locks: fast, upgradable read/write locks
Context A few years after I created the Elastic Binary Trees (ebtree) , I started to get some feedback from users who needed to use the...
Sin and Cos: The Programmer's Pals
In this article I shall discuss several game programming techniques, all revolving around a central theme: the sine and cosine functions. This article will explain sine, cosine, vectors, atan2, and some useful special effects such as how to make homing missiles and how bitmap rotation works. I shall start with the…
How generics were added to .NET
Before we dive into the technical details, let’s start with a quick history lesson, courtesy of Don Syme who worked on adding generics to .NET and then went on to design and implement F#, which is a pretty impressive set of achievements!!
Measuring the many sizes of a Git repository
Is your Git repository bursting at the seams? git-sizer is a new open source tool that can tell you when your repo is getting too big. git-sizer computes various Git…
Clang Is Now Used to Build Chrome for Windows
As of Chrome 64, Chrome for Windows is compiled with Clang. We now use Clang to build Chrome for all platforms it runs on: macOS, iOS, Linux, Chrome OS, Android, and Windows.
Elm, Elixir, and Phoenix: Reflecting on a Functional Full-Stack Project
DropCatch.com helps you secure expiring domain names.
A whirlwind introduction to dataflow graphs
While in the middle of writing “Reading bits in far too many ways, part 3”, I realized that I had written a lot of background material that had absolutely nothing to do with bit I/O and…
MacPaint and QuickDraw Source Code (2010)
The Apple Macintosh combined brilliant design in hardware and in software. The drawing program MacPaint, which was released with the computer in January of 1984, was an example of that brilliance both in what it did, and in how it was implemented.