A Charming Algorithm for Count-Distinct
tl;dr: "The count-distinct problem is to estimate the number of distinct elements appearing in a stream. That is, given some enumeration of “objects,” which you can think of as any data type you like, we want to know approximately how many unique objects there are."
featured in #385
Diagram Layout Engines: Minimizing Hierarchical Edge Crossings
Júlio César Batista
tl;dr: TALA is a new layout engine designed specifically for software architecture. At its core, it combines many different graph visualization algorithms to produce aesthetic diagrams. This article is a part of a series where we dive into the inner workings of TALA. Today's topic is on minimizing edge crossings in hierarchical layouts.
featured in #385
Twintrees, Baxter Permutations, and Floorplans
tl;dr: Video of Donald Knuth's annual lecture covering "three fascinating concepts, which seem at first to be entirely unrelated to each other, are in fact in one-to-one correspondence, via three beautiful algorithms."
featured in #377
Challenging Algorithms And Data Structures Every Programmer Should Try
tl;dr: "Not only have they come up during job interviews, but learning them changed how I think about problems." Austin's explains the following algorithms and data structures: (1) Topological sort. (2) Recursive descent parsing. (3) Myers string difference. (4) Bloom filter. (5) Piece table. (6) Splay tree.
featured in #376
The Wavefunction Collapse Algorithm Explained Very Clearly
tl;dr: "Wavefunction Collapse is a very independent-minded algorithm, and needs almost no outside help or instruction. You feed it an example of the vibe you’re going for, and it figures everything else out for itself. Despite this self-sufficiency, it is surprisingly simple. It doesn’t use any neural networks, random forests, or anything else that sounds like machine learning. This makes it very clean and intuitive once you get the idea."
featured in #376
Cracking A Compression Algorithm!
tl;dr: "The first thing I did was to create a sort of “assembly simulator” – I ported the assembly steps line-by-line out of the disassembly and into a C# program. Why do this? At the time, I was a beginner with assembly, so this exercise served two purposes: firstly, it helped me become more familiar with the disassembly; secondly, it gave me a program I could run that I knew for a fact would match what the assembly code was doing."
featured in #361
Lessons Learned from Algorithmic Impact Assessments in Practice
tl;dr: "Understanding algorithmic impact is critical to building a platform that serves hundreds of millions of listeners and creators every day. Our approach includes a combination of centralized and distributed efforts, which drives adoption of best practices across the entire organization — from researchers and data scientists to the engineer pushing the code."
featured in #358
How Do One-Time Passwords Work?
tl;dr: "That’s just 16 lines of code! If you call totp() function passing it your secret key – you should get a 6-digit number that matches the one in the Google Authenticator"
featured in #344
The Many Flavors Of Hashing
Ciprian Dorin Craciun
tl;dr: "Very few hashing algorithms are usable in more than a couple of situations. Even worse, using the wrong algorithm will lead in the best case scenario to performance problems, but in the worst case scenario to security issues and even financial loss. Thus, knowing which algorithm to pick for which application is crucial."
featured in #340