What I Learned Building Twitter Bootstrap
I didn’t think I’d learn anything building Bootstrap. Actually, I was pretty confident I wouldn’t learn anything. As a technical challenge, Bootstrap just isn’t very interesting. It’s …
Every blog post that took off on Hacker News, ranked by the votes of its best submission. 14,540 posts.
I didn’t think I’d learn anything building Bootstrap. Actually, I was pretty confident I wouldn’t learn anything. As a technical challenge, Bootstrap just isn’t very interesting. It’s …
On November 23, 2011 id Software maintained the tradition and released the source code of their previous engine. This time is was the turn of idTech4 which powered Prey, Quake 4 and of course Doom 3. Within hours the GitHub repository was forked more than 400 times and people started to look at the game internal…
Update (February, 2020): I finally shipped v1.0! Since this post I refactored the engine to support lower-end hardware, finished the macOS…
Aisha’s hands rattle you. They float gently in front of her shoulders, wrists cocked back. One sways cheerfully as she banters with the hiring manager—her lacquered nails a cyan mosaic over ochre palms. They flit, then hover momentarily as the two women arrange lunch. When the door closes, Aisha slaps her fingertips…
Every system has two sets of rules: The rules as they are intended or commonly perceived, and the actual rules ("reality"). In most complex ...
You can’t really know where you are going until you know where you have been. – Maya Angelou CIDER started its life as an effort to replace a hacked version of SLIME1 with a proper environment for Clojure development on Emacs. Many of you probably don’t remember those days, but initially almost everyone was using a…
You're probably reading this page because you've attempted to access some part of my blog (Wandering Thoughts) or CSpace , the wiki thing it's part of. Unfortunately you're using a browser version that my anti-crawler precautions consider suspicious, most often because it's too old (most often this applies to versions…
When programming, we often need to write 'generic' functions where the exact data type is not important. For example, you might want to write a simple function that sums up numbers. Go lacked this notion until recently, but it was recently added (as of version 1.18). So I took it out for a spin. In … Continue reading…
ORM looks great early in a project but breaks down as complexity grows, forcing you to learn SQL anyway. Relations aren't objects. Either use NoSQL for object-like data or write a model layer with real SQL. ORM's abstraction is leaky, its efficiency poor, and the alternatives are better.
People rant about having to learn algorithmic questions for interviews. I get it — interview system is broken, but you ought to learn binary search at least.
A debugging story about a mysterious C# gzip decompression exception and what actually caused it, with investigation steps and lessons learned.
Disclaimer: this article is intended for those familiar with programming languages ( Lua in particular).
Every now and then I get questions on how to work with git in a smooth way when developing, bug-fixing or extending curl - or how I do it. After all, I work on open source full time which means I have very frequent interactions with git (and GitHub). Simply put, I work with git … Continue reading This is how I git →
Why ask this question? It's no secret that I want a Python implementation for WebAssembly [https://webassembly.org/]. It would not only get Python into the browser, but with the fact that both iOS [https://developer.apple.com/documentation/javascriptcore] and Android [https://developer.android.com/guide/webapps]…
I’ve done plenty of these, when I wanted to switch half my brain off but still do something time-consuming and fiddly, but still kind of productive. Very therapeutic!
It is difficult to write software which reliably and safely manages processes on Unix; this is because of flaws in the API. I know of no Unix system which has solved these problems, but in this article I'll be specifically talking about the Linux process API.
I've long had a soft spot for dependently-typed languages like Coq Rocq and Lean. They offer the possibility of a type system capable of encoding and enforcing arbitrarily subtle invariants. The sort of thing that, in regular languages, ends up (at best) as a comment, and which quickly gets lost as the size of the…
Some years ago, I (GLS) was snooping around in the cabinets that housed the MIT AI Lab's PDP-10, and noticed a little switch glued to the frame of one cabinet. It was obviously a homebrew job, added by one of the lab's hardware hackers (no one knows who).
Learning new programming languages will expose you to new ways of thinking; especially if the new language uses a paradigm which you aren’t yet familiar with. Many of the ways of thinking that you will learn can be applied to languages that you already know, and you might even want to start using the new language for…
In this post we will implement a data compression program in about 150 lines of Haskell. It will use Huffman coding and handle arbitrary binary files using constant memory for encoding and decoding.
Just when you thought it couldn't be crazier in Redmond, today they are ...
I work in product growth helping people discover and use great software, currently at SurveyMonkey. In the past I've done it at Prismatic (acq. by LinkedIn), Clara Lending (acq. by Sofi), Right Side Up, Hubstaff. I've also enjoyed consulting with interesting companies like DoorDash, Empower, StitchFix, Calm, Dell…
Last week, while working on new features for our product, I had to find a quick and efficient way to extract the main topics/objects from a sentence. Since I’m using Python, I initially thoug…