New
The latest blog posts to take off on Hacker News. 21,833 posts.
Functional Imperative Programming with Elixir (2018)
Stuff about things
Myths Programmers Believe about CPU Caches (2018)
As a computer engineer who has spent half a decade working with caches at Intel and Sun, I’ve learnt a thing or two about cache-coherency. This was one of the hardest concepts to learn back in coll…
Beating C with 70 lines of Go
Writing a faster wc utility in Go
The Firefox UI Is Now Built with Web Components
Open Source, Web Development, and more
Successfully Merging the Work of 1000 Developers
Collaboration with a large team is challenging, and even more so if it’s on a single codebase, like the Shopify monolith. Shopify changes 40 times a day. We follow a trunk-based development workflow and merge around 400 commits to master daily. There are three rules that govern how we deploy safely, but they were hard…
Build a WhatsApp Chatbot with Python, Flask and Twilio
Create a WhatsApp chatbot using Python & Flask with Twilio's API. Follow our step-by-step guide to build, deploy, & enhance your chatbot. Start building with Twilio.
Code Pages, Character Encoding, Unicode, UTF-8 and the BOM [video]
OK, fine maybe they DID teach you this in class. But, you'd be surprised how ...
Allsorts: font parser and shaping engine implemented in Rust
Today YesLogic is open-sourcing the Allsorts font parser, shaping engine, and subsetter for OpenType, WOFF, and WOFF2 under the Apache 2.0 license. Allsorts was extracted from the Prince HTML to PDF typesetting and layout tool and is implemented in Rust. Prince is a tool that converts HTML and CSS into well laid out…
Clang Format Tanks Performance
Can using clang-format make your code slower? Kind of.
Algebraic Data Types: Things I wish someone had explained about FP
Algebraic data types and algebraic data structures sound similar. It’s like they ought to be the same thing. But they’re not. They both have ‘algebraic’ in the name, so it’s confusing. I got them mixed up at times. Others have too. But, they’re different concepts. Understanding the difference will help if you’re…
Goroutines and APIs
Goroutines are a unusual and powerful programming language feature, so they are a tempting toy to play with, and they get a bit overused.
WebWindow, a cross-platform webview library for .NET Core
Steve Sanderson's Blog
Programmer’s Guide to Performance Analysis and Tuning on Modern CPUs
They say “performance is king’… It was true a decade ago and it certainly is now. With more and more data the world generates each day, we need more and more computing power to process it. It used to be the case that some SW vendors preferred to wait for a new generation of HW to speed up their application and did not…
Understanding Serde
Serde is one of the most popular Rust crates, and deservedly so. If you aren't familiar, Serde describes itself as "a framework for serializing and deserializing Rust data structures efficiently and generically." What is most impressive to me is how robust the Serde data model has proven to be, allowing it to support…
“What Alan Kay Got Wrong About Objects”
One of the anonymous reviewers of my recently published Storage Combinators paper ( pdf ) complained that hiding disk-based, remote, and lo...
Writing userspace USB drivers for abandoned devices
I recently found some USB devices on eBay (Epiphan VGA2USB LR) that could take VGA as input and present the output as a webcam. Given that I was keen on the idea of not needing to lug out a VGA monitor ever again and there was claimed Linux support I took the risk and bought the whole job lot for about £20 (25 USD).
Postmortem of database outage of January 31
Postmortem on the database outage of January 31 2017 with the lessons we learned.
Active Oberon Language Report Update 2019
D-INFK GitLab Service
Using multi-arch Docker images to support apps on any architecture
How Docker 19.03 makes it simple to build images for most hardware platforms.
Building a 64-bit aarch64 kernel and userspace for the Raspberry Pi 4
I’ve recently been tinkering around with using a Raspberry Pi as a desktop computer. The Pi 4 is fairly powerful; very sufficient for web browsing, audio, video, and terminal use for programming.
The Configuration Complexity Curse
Why managing configuration has become so complex and how data configuration languages like CUE offer a path forward.
The Value in Go’s Simplicity
After using Go for a couple years, I’ve really come to appreciate its simplicity. I started writing Go at work a couple months ago, and have found it really easy to iterate on – much more so than Python and Java.
The 80/24 Rule
Write small blocks of code. How small? Here's how small.
Gitea 1.10.0 Released
It's time for another major release We are proud to present Gitea 1.10.0 to the world. In this release, we've merged 322 pull requests https://github.com/go gitea/gitea/pulls?utf8=%E2%9C%93&q=is:pr+milestone:1.10.0+is:merged . The list includes 97 features and enhancements, and m
Build Your Own React
We are going to rewrite React from scratch. Step by step. Following the architecture from the real React code but without all the…
Why Is the Migration to Python 3 Taking So Long?
For some companies who have already made the change years ago, it won’t be an issue. However, there’s a whole range of companies who won’t be making the change anytime soon, for a number of reasons. What does this change mean for companies heavily utilizing the language, particularly those who may not be ready to…