New
The latest blog posts to take off on Hacker News. 2,668 posts.
Technical Debt
Technical Debt is a metaphor for the consequences of cruft. You either have to accept a drag on further features (paying interest) or fix the software (paying the principal)
Minimum Viable Phoenix
Let’s walk through the process of building a dead simple Phoenix application from the ground up.
Python built-ins worth learning
Update: You can find a newer version of this article on Python Morsels. In every Intro to Python class I teach, there’s always at least one “how...
Free Wolfram Engine for Developers
Full engine for the Wolfram Language can be deployed on any system--and called from programs, languages, web servers. Available for anyone to download, for free, to use in their software development projects.
Alan Kay and OO Programming
Dr. Alan Kay invented the term "OO Programming", but he states that modern OO programming isn't what he meant. What did he mean?
Containers, microservices, and service meshes
There is a lot of material out there about services meshes, and this is another one. Yay! But why? Because I would like to give you the perspective of someone who wish service meshes did exist 10 years ago, long before the rise of container platforms like Docker and Kubernetes. I’m not claiming that this perspective…
The State of Apple's Developer Documentation
It appears that most of the old iOS conceptual documents have been moved to the documentation archive and are now unsupported.
Building a home NAS on a shoestring budget with the Rock64 SBC (2018)
I’ve gone through many iterations of a Home NAS over the years. It started with an AMD Phenom based system running in a Norco case with about 8 hard SATA hard drives (4 primary, 4 backup via Rsync). The noise and power consumption of that system was overkill for what it was used for, so I sold it and went to a…
Notes on Weight Initialization for Deep Neural Networks
Neural networks involve long sequence of multiplications, usually between a matrix and a vector, say \(a*x\). The result of this sequence of multiplications will either have a huge magnitude or be reduced to 0. We can divide \(a\) by a number ( scaling_factor ) to scale down its magnitude to the right level. Proper…
Mimetic Traps
I’ve been a graduate student in physics for almost three years, but I only recently figured out why. I had to tackle a simple question do so:
The Trouble with “Finding Your People” Online
Create beautiful emails, automate campaigns, and track performance. Try it now and see how our tools can drive your business.
Jumping Back and Forth
The order that our mind imagines is like a net, or like a ladder, built to attain something. But afterward you must throw the ladder away, because you discover that, even if it was useful, it was meaningless.
Leaving Google Fi
I’m sharing the story of a bad situation I had ordering a new phone through Google Fi. It turned into a two month long ordeal where the service got worse and worse. At every turn the Google Fi team was presented with a chance to make things better and every time they blew it. I’m sharing this because I hope a long…
How to do hard things
A fully general system for learning to do things you currently find difficult, only somewhat tongue-in-cheek.
Solid Principles: A Software Developer’s Framework to Robust, Maintainable Code
The SOLID principles are a set of software design principles that teach us how we can structure our functions and classes to be as robust, maintainable and flexible as possible.
A Tale of Query Optimization
Last December, I got an interesting bug report from the VWO support team. It seemed like the loading time of a particular analytics report was ridiculously slow for a big Enterprise customer. Since I am part of the Data platform, a flag was immediately raised and I got involved in debugging the issue.
Modern SAT solvers: fast, neat and underused
In the previous two parts we used a SAT solver as a black box that we feed input into, and it will (usually quickly) spit out an answer. In this part, we will look at how SAT solvers work and what heuristics and other tricks they employ in their quest for performance.
Why Racket? Why Lisp?
Beautiful Racket
The Evolution of Web Design (2016)
The Evolution Of Webdesign is a collection and imitation of Webdesign Trends from 1991 to 2020.
Shell Completions in Rust
If you've ever hit the tab key while typing commands in the shell, you are familiar with the value of shell completions. Bash has some default completion behavior, which is why you can type hel<TAB> and end up with help . It is also possible to add additional completion scripts which define the completion behavior for…
RISC-V from scratch 2: Hardware layouts, linker scripts, and C runtimes
A post describing how C programs get to the main function. Devicetree layouts, linker scripts, minimal C runtimes, GDB and QEMU, basic RISC-V assembly, and other topics are reviewed along the way.