Dropping Loot
I got started hacking on my own roguelike after spending several years avidly playing Angband . Like most projects, I had a few itches I wanted to scratch and it kind of took on a life of its own. One thing that annoyed me about Angband was how monsters dropped loot when they died.
Python to OCaml: Retrospective
In 2013, I spent 6 months converting 0install's 29,215 lines of Python to OCaml (learning OCaml along the way). In this post, I'll describe the …
I Don't Know Swift
I know a thing or two about Objective-C. It’s not bragging. If you’re reading my blog, there’s a decent chance that I know more about Objective-C …
Script-injected "async scripts" considered harmful
Script-injected scripts block on CSS and delay script execution. Their era has passed, and we now have a much better, cleaner, and faster solution: add an async attribute to your script tags.
Daala progress update
Daala is a next-next-generation video codec being developed at Mozilla Research and Xiph.Org . The aim is not only to create a better video codec, but to create one that is a royalty-free open standard that can serve as the backbone technology for video on the internet.
A RESTful Micro-Framework in Go
After reading countless articles about the wonders of Go, I wanted to learn more. But, learning a new language— I mean really learning it, not just getting familiar with the general capabilities and syntax—is hard. I'm sure there are tons of books that would purport to teach me all about it, but there is no substitute…
Dijkstra on Haskell and Java (2001)
In 2001, Edsger W. Dijkstra wrote a letter to the Budget Council of The University of Texas. A PDF is available here , I’ve typed it up so that everyone can read it. Sadly, the curriculum was changed to Java . Relatedly, the algorithmic language Scheme was replaced by Python in MIT’s The Structure and Interpretation…
Please grow your buffers exponentially
If you record every heap allocation and re-allocation done by Firefox you find some interesting things. In particular, you find some sub-optimal buffer growth strategies that cause a lot of heap churn.
Rust lifetimes: Getting away with things that would be reckless in C++
Random code snippets, projects and musings about software from Eric Kidd, a developer and occasional entrepreneur.
Generators in Firefox now 22 times faster
wingolog: article: generators in firefox now twenty-two times faster
Don't link to line numbers in GitHub
Today I saw a co-worker take a link from a specific line number in our team’s github repository and place it in the comments section of a user story. This is very helpful for those who need to see a quick reference to the code that could be causing a defect, but it’s wrong . Here’s what you need to do instead.
Python 3 is killing Python
The Python community should fork Python 2.
Meanwhile, at code.org
In Mindstorms I made the claim that children can learn to program and that learning to program can affect the way they learn everything else. I had in mind something like the process of re-empowerment of probability: the ability to program would allow a student to learn and use powerful forms of proba- bilistic ideas…
AngularJS: The Bad Parts
Hey! If you do front end development, you should know about CatchJS. It’s a JavaScript error logging service that doesn’t suck. Below is a graph over the amount of searches for AngularJ…
What's New in Mercurial 3.0
HgLab is a powerful self-hosted Mercurial Server and Repository Management for Windows with Push and Pull server, Active Directory and LDAP integration, built-in Pushlog and other goodies
Why Don’t We Have a General-Purpose Tree Editor?
We have excellent tools to create and edit text (vim, emacs, sublime, etc.). We have pretty good tools to create and edit tabular data (excel, other spreadsheet software). We even have pretty good …
Pipes and Filters
Pipelines are an extremely useful (and surprisingly underused) architectural pattern in modern software engineering. The concept of using pipes and filters) to control the flow of data through...