SQL Keys in Depth
The internet is full of dogmatic commandments for choosing and using keys in relational databases. At times it verges on a holy war: should you use natural or artificial keys? Auto-incrementing integers, UUIDs?
How Google Code Search Worked: Regex Matching with a Trigram Index (2012)
In the summer of 2006, I was lucky enough to be an intern at Google. At the time, Google had an internal tool called gsearch that acted as if it ran grep over all the files in the Google source tree and printed the results. Of course, that implementation would be fairly slow, so what gsearch actually did was talk to a…
VPN leaks users’ IPs via WebRTC
VPN leaks users’ IPs via WebRTC: I’ve tested hundred VPN and Proxy providers and 19 of them leaks users’ IPs via WebRTC (16%)
Moving efficiently in the CLI
A cheatsheet for moving efficiently in the CLI!
Designing very large JavaScript applications
Originally published on my blog Industrial Empathy.
The Making of Underrun – A WebGL Shooter in 13kb of JavaScript
I participated in this year's js13kGames , a JavaScript game development competition with a file size limit of 13kb, including code, assets and everything else. My entry was Underrun , a twin stick shooter using WebGL.
Linux touchpad like a Macbook: goal worth pursuing?
best seo company australia
Is the Lean Startup Dead?
A version of this article first appeared in the Harvard Business Review Reading the NY Times article “Jeffrey Katzenberg Raises $1 Billion for Short-Form Video Venture,” I realized it was time for …
This blog has moved
As of September 2018, I am moving Probably Overthinking It to a new location . Blogger has been an excellent host; so far, this blog has ...
Do I really need to get out the soldering-iron again?
So I had this idea that it would be nice to listen to music when I get home from work everyday, so I put all my ripped music onto my phone, and I bought some good quality over-ear headphones.
Taskwarrior, where have you been all my life?
I’ve been thinking a lot about task management lately. I’ve actually been thinking about it for years. I’ve always been searching for the optimal way to sort through the bajillion things I have to do and remain productive.
Why things might have taken so long
I asked why humanity took so long to do anything at the start, and the Internet gave me its thoughts. Here is my expanded list of hypotheses, summarizing from comments on the post, here, and here. …
How Google Chrome’s ad blocker works
Get the details on how the built-in ad-blocker in Google Chrome works. The ad-blocker only kicks in on websites in violation of the Better Ad Standards policies.
Brushing up on operating systems and C programming
If you were like me in college, you first learned about the C programming language in an introductory computer science course. Then, perhaps you took a really hard course in operating systems. Then, y
Where Vim Came From
Tracing the long lineage of software that brought us Vim.
Why Entrepreneurs Start Companies Rather Than Join Them
If you asked me why I gravitated to startups rather than work in a large company I would have answered at various times: “I want to be my own boss.” “I love risk.” “I want flexible work hours.” “I …
My experience with Sarah Jeong, Jason Koebler, and Vice Magazine
Translator and proofreader’s note: There are large parts of this document that don’t parse well either from Chinese or from Naomi’s written…
Mark Zuckerberg and his empire of oily rags
Surveillance capitalism sucks: it improves the scattershot, low-performance success-rate of untargeted advertising (well below 1 percent) and doubles or triples it (to well below 1 percent!).
Inheritance Often Doesn't Make Sense
There are three different types of inheritance going on. Ontological inheritance is about specialisation: this thing is a specific variety of that thing (a football is a sphere and it has this radius) Abstract data type inheritance is about substitution: this thing behaves in all the ways that thing does and has this…