Topics /
Software Engineering
The most popular blog posts about software engineering on Hacker News. 679 posts.
JQuery 1.5 promises a better future.
One of the new features of the unreleased JQuery 1.5 is a new $.ajax module. Apart from many bug fixes, the most interesting, and useful par...
Why code review beats testing: evidence from decades of programming research
tl;dr If you want to ship high quality code, you should invest in more than one of formal code review, design inspection, testing, and quality assurance. Testing catches fewer bugs per hour than human inspection of code, but it might be catching different types of bugs.
Setting Up A New Machine for Ruby Development - as used at 37signals these days
It used to be a jarring experience to setup a new machine for development, but progress has paved the dirt road into a silky smooth autobahn. These are the tools we use today: Homebrew: Remember how painful it used to be to get imagemagick installed? Now it takes about a minute. “brew insta…
Faster JavaScript parsing
Over the past year or so I’ve almost doubled the speed of SpiderMonkey’s JavaScript parser. I did this by speeding up both the scanner ( bug 564369 , bug 584595 , bug 588648 , bug 639420 , bug 645598 ) and the parser ( bug 637549 ). I used patch stacks in several of those bugs, and so in those six bugs I actually…
Five bugs in a single line of JavaScript
Today I've been working with a piece of third-party software. I was having big problems getting it working and decided to delve into its ...
Visualizing dynamic programming
I’ve always thought dynamic programming was a pretty crummy name for the practice of storing sub-calculations to be used later. Why not call it table-filling algorithms , because indeed, thinking of a dynamic programming algorithm as one that fills in a table is a quite good way of thinking about it.
Stop hating Java
I noticed that in the Ruby community “Java” is a synonym of pure evilness. It’s often used as an argument against some techniques. “It’s J...
SpiderMonkey is on a diet
One thing I’ve learnt while working for Mozilla is that a web browser can be characterized as a JavaScript execution environment that happens to have some multimedia capabilities. In particular, if you look at Firefox’s about:memory page, the JS engine is very often the component responsible for consuming the most…
Ten Ways to Check if an Integer Is a Power Of Two in C
To write a program to check if an integer is a power of two, you could follow two basic strategies: check the number based on its decimal value, or check it based on its binary representation. The former approach is more human-friendly but generally less efficient; the latter approach is more machine-friendly but…
Compiling to λ-calculus
Though it contains forms only for function applications, variable references and anonymous functions, it is equivalent to a Turing machine.
The myth of the Lisp genius
I'm fascinated by the myth of the Lisp genius, the eccentric programmer who accomplishes super-human feats writing Lisp. I'm not saying that such geniuses don't exist; they do. Here I'm using "myth" in the sense of a story with archetypical characters that fuels the imagination. I'm thinking myth in the sense of…
Don't Forget Your Logged Out Users
I find myself saying this quite often these days to entrepreneurs and their product teams. It's something that I've noticed working with leading social platforms like Etsy, Twitter, Tumblr, and others. Services such as these have a large number of their users accessing the service regularly on a logged out basis. I…
How Google's build system works
This is the second in a four part series describing how we use the cloud to scale building and testing of software at Google. This series el...