New
The latest blog posts to take off on Hacker News. 2,391 posts.
A generalised solution to distributed consensus
A generalised solution to distributed consensus Howard & Mortier, arXiv’19 This is a draft paper that Heidi Howard recently shared with the world via Twitter, and here’s the accompanying …
How random can you be?
Compare top same day payout casinos in Canada with verified withdrawal speeds, bonus offers, and player ratings for 2026.
Viewing Matrices and Probability as Graphs
Today I'd like to share an idea. It's a very simple idea. It's not fancy and it's certainly not new. In fact, I'm sure many of you have thought about it already. But if you haven't—and even if you have!—I hope you'll take a few minutes to enjoy it with me. Here's the idea: Every matrix corresponds to a graph. So…
Understanding Convolutions (2014)
neural networks , convolutional neural networks , convolution , math , probability
Simpson’s Paradox (2016)
A riveting tale of how good data can lead to bad decisions.
Fundamental Algorithms III
Three more fundamental algorithms in the series. Today, recursive permutations, subsets of the given set and variations with repetitions. Th...
How Fair Is My D20? (2015)
An automatic system for rolling a polyhedral die and taking photos of the rolls; extracting the image of just the die from those images; clustering the images of the die by which face is shown; and analyzing the results.
Reed Solomon codes are cool
thoughts
A Brutal Look at Balanced Parentheses, Computing Machines, and Pushdown Automata
As discussed in Pattern Matching and Recursion , a well-known programming puzzle is to write a function that determines whether a string of parentheses is “balanced,” i.e. each opening parenthesis has a corresponding closing parenthesis, and the parentheses are properly nested.
A Fairly Fast Fibonacci Function
A common example of recursion is the function to calculate the $n$-th Fibonacci number: def naive_fib(n): if n < 2: return n else: return naive_fib(n-1) + naive_fib(n-2) This follows the mathematical definition very closely but it’s performance is terrible: roughly $\mathcal{O}(2^n)$. This is commonly patched up with…
Nonnegative matrix factorization
The why and how of nonnegative matrix factorization Gillis, arXiv 2014 from: ‘Regularization, Optimization, Kernels, and Support Vector Machines.’ Last week we looked at the paper ‘Beyond news cont…
Cache Eviction: When Are Randomized Algorithms Better Than LRU? (2014)
Once upon a time, my computer architecture professor mentioned that using a random eviction policy for caches really isn't so bad. That random eviction isn't bad can be surprising — if your cache fills up and you have to get rid of something, choosing the least recently used (LRU) is an obvious choice, since you're…
The Single Rotation rule: simple and rich reversible cellular automaton (2013)
See also other posts tagged Single Rotation . In the previous post I have presented the Reversible Cellular Automata simulator , along ...
Time Travel (2006)
Last time we talked about free will, superintelligent predictors, and Dr. Evil planning to destroy the earth from his moon base. Today I'd like to talk about a more down-to-earth topic: time travel. The first point I have to make is one that Carl Sagan made: we're all time travelers—at the rate of one second per…
A proof that Unix utility sed is Turing complete
Many people are surprised to learn that `sed`, a seemingly simple text filtering program, is actually Turing complete. This realization prompts the question: how can a text processing utility achieve such computational power? The answer lies in sed's fundamental operations. Essentially, sed functions as a miniature...
Fast Perfect Hashing
A perfect hash function is one that is collision-free. By implication, the hash must be at least as many bytes as the key and the function is theoretically reversible, though not always tractably so. In other words, perfect hashing is a special case of encryption. Because the hash is no smaller than the key, the…
Neural Networks Are Essentially Polynomial Regression (2018)
You may be interested in my new arXiv paper, joint work with Xi Cheng, an undergraduate at UC Davis (now heading to Cornell for grad school); Bohdan Khomtchouk, a post doc in biology at Stanford; a…
Cache tables
Hash tables are the most popular probabilistic data structure, by quite a margin. You compute some hash code then compute an array index from that hash code. If you’re using open addressing-c…
Faster remainders when the divisor is a constant: beating compilers & libdivide
Not all instructions on modern processors cost the same. Additions and subtractions are cheaper than multiplications which are themselves cheaper than divisions. For this reason, compilers frequently replace division instructions by multiplications. Roughly speaking, it works in this manner. Suppose that you want to…
The Soviet license plate game and Kolmogorov complexity
Physicist Lev Landau used to play a mental game with Soviet license plates [1]. The plates had the form of two digits, a dash, two more digits, and some letters. Rules of the game His game was to apply high school math operators to the numbers on both side of the dash so that the
Einsum Is All You Need – Einstein Summation in Deep Learning (2018)
Tim Rocktäschel — Co-Founder and Chief Scientist of Recursive; Professor of AI at UCL. Artificial General Intelligence, Open-Endedness, and Recursive Self-Improvement.
Gödel's Theorem
A much-abused result in mathematical logic , supposed by many authors who don't understand it to support their own favored brand of rubbish, and even subjected to surprisingly rough handling by some who really should know better.
Outperforming everything with anything: Python? Sure, why not?
A 100 lines of Python code that substitute the compiler front-end for a specific computation. This shows that you don't need a “fast” compiling language to write efficient code. In fact, a compilation is only one of the multiple ways to achieve speed.
The “Bug-O” Notation
What is the 🐞(n) of your API?
Queueing theory: The science of waiting in line
The math behind how people wait in line
Neural ODE's: Understanding how they model data
In this blogpost I explore how ODE’s can be used to solve data modelling problems. I take a deep dive into the data modelling problem at hand and present ODE...
A Bridge Too Far: E.W. Dijkstra and Logic
1. Introduction Shortly after the death of E.W. Dijkstra (1930-2002), K.R. Apt wrote an obituary under the title Portrait of a Genius [1]. At the time it seemed to me a bit over the top. Now, with …
An Almost-Secret Algorithm Researchers Used to Break Thousands of RSA Keys
RSA encryption allows for anyone to send me messages that only I can decode. To set this up, I select two large random primes $latex p$ and $latex q$ (each of which is hundreds of bits long), and r…