Thoughts on the Social Graph (2007)
I've been thinking a lot about the social graph for awhile now: aggregating the graph, decentralization, social network portability, etc.
From math to machine: translating a function to machine code
In this post I'm going to explore how a mathematical concept can be redefined in progressively more computer-oriented terms, all the way from high level languages down to machine code, ready for direct execution by a computer. To that end, I'm going to define the same logic in several different but related formats:
Dynamic Programming in Python: Bayesian Blocks (2012)
Of all the programming styles I have learned, dynamic programming is perhaps the most beautiful. It can take problems that, at first glance, look ugly and intractable, and solve the problem with clean, concise code. Where a simplistic algorithm might accomplish something by brute force, dynamic programming steps back…
Async/Await will make code simpler
Or How I Learned to Stop Writing Callback Functions and Love Javascript ES8.
The privilege of risk
Another of those values that has seeped into everyday life from start up culture is the cherished status of risk. You know the inspirational quotes people like to post on Twitter “the biggest risk is not taking a risk”, “those who will not risk, will not win” etc. And I get it, personally and professionally it’s…
Certified Malice
One unfortunate (albeit entirely predictable) consequence of making HTTPS certificates “fast, open, automated, and free” is that both good guys and bad guys alike will take advantage of the offer a…
A Decade of Dynamo
Today marks the 10-year anniversary of Amazon's Dynamo. Here are some reflections on ten years of NoSQL databases
How both TCP and Ethernet checksums fail (2015)
At Twitter, a team had a unusual failure where corrupt data ended up in memcache. The root cause appears to have been a switch that was corrupting packets. Most packets were being dropped and the throughput was much lower than normal, but some were still making it through. The hypothesis is that occasionally the…
The Upspin manifesto: On the ownership and sharing of data (2014)
Here follows the original "manifesto" from late 2014 proposing the idea for what became Upspin . The text has been lightly edited to remove...
A deep dive into ClojureScript reagent
Programing in Clojure and ClojureScript
GPU Performance for Game Artists
Performance is everybody’s responsibility, no matter what your role. When it comes to the GPU, 3D programmers have a lot of control over performance; we can optimize shaders, trade image quality for performance, use smarter rendering techniques… we have plenty of tricks up our sleeves. But there’s one thing we don’t…
I reverse engineered a motherboard
Wherein I looked into controlling the RGB header on my motherboard without any access to public documentation.
Wikipedia graph mining: dynamic structure of collective memory
Wikipedia graph dynamic pattern discovery. Dynamic graph analysis in GraphX. Collective memory research. Gephi graph visualization.
Maybe we shouldn't skip SHA-3
David Wong writes about cryptography, security, and programming.
Sieve of Eratosthenes in Python (2015)
Sieve of Eratosthenes animation Source: Wikipedia[0] One of the things we need to do when finding Perrin Pseudo-Primes is to recognise prime numbers so we can see if the numbers predicted by the Perrin test to be prime, are. So we need to generate primes. For small primes (for some definition of "small") this can be…
Calculating the Distance Between Points in Wrap Around (Toroidal) Space
Let’s say you are trying to find the distance between two points in 2D, but that these points are in a universe that “wraps around” like old video games – leaving the screen…
Keeping David MacKay's 'Sustainable Energy – without the hot air' up-to-date
As the anniversary of Sir David MacKay’s untimely death approaches, I think we should honour his memory by trying to update Sustainable Energy as a crowd-sourced project. I have made an initial attempt to suggest how we might develop the section on photovoltaics but others will want to suggest other
A very long way from home: early Byzantine finds at the far ends of the world
The following brief post is once again offered largely for the sake of interest, being concerned with the furthest limits of the distributio...
Understanding LSTM Networks (2015)
Humans don’t start their thinking from scratch every second. As you read this essay, you understand each word based on your understanding of previous words. You don’t throw everything away and start thinking from scratch again. Your thoughts have persistence.