MongoDB and Riak, In Context (and an apology)
There has been quite a bit of furor and excitement on the Internet this week regarding some very public criticisms (and defenses) of MongoDB and its creators, 10gen . Unfortunately, a ghost from my recent past also resurfaced as a result. Let me begin by apologizing to 10gen and its engineers for what I said at JSConf…
Introducing the Google Translate app for iPhone
Insights from Googlers into our products, technology, and the Google culture
Arduino Controlled Dishwasher
Explore the rise of retrofication in the automotive industry, blending classic design with modern technology for sustainable solutions and reducing environmental impact.
De-anonymizing Apple UDIDs with OpenFeint
Every iPhone, iPad and iPod touch has an associated Unique Device Identifier (UDID). You can think of the UDID as a serial number burned into the device - one that can't be removed or changed 1 . This number is exposed to app developers through an API, without requiring the device owner's permission or knowledge.
Understanding JavaScript function invocation and "this"
Over the years, I've seen a lot of confusion about JavaScript function invocation. In particular, a lot of people have complained that the semantics of this in function invocations is confusing. In my opinion, a lot of this confusion is cleared up by understanding the core function invocation primitive,
The Netscape Dorm (1994)
If someone has linked you to this page, they're probably trying to con you. Don't fall for it. In fact, stop reading right now. Don't read this page. Go read this page instead.
Business ideas: proving ideas are a dime a dosen
Choose a memorable domain name. Professional, friendly customer support. Start using your domain right away.
SPDY: An experimental protocol for a faster web
As part of the "Let's make the web faster" initiative, we are experimenting with alternative protocols to help reduce the latency of web pages. One of these experiments is SPDY (pronounced "SPeeDY"), an application-layer protocol for transporting content over the web, designed specifically for minimal latency. In…
The Rise of "Worse is Better"
Previous: Lisp's Apparent Failures Up: Lisp's Apparent Failures Next: Good Lisp Programming is Hard
And so I'm giving up the Mozilla project - Jamie Zawinski (1999)
April 1st, 1999 will be my last day as an employee of the Netscape Communications division of America Online, and my last day working for mozilla.org.
Bittorrent over Tor isn't a good idea
An increasing number of people are asking us about the recent paper coming out of Inria in...
Old, but gold - "Strategy Letter I: Ben and Jerry's vs. Amazon"
Building a company? You’ve got one very important decision to make, because it affects everything else you do. No matter what else you do, you absolutely must figure out which camp you’…
Sleep hacks: How to Become an Early Riser
It is well to be up before daybreak, for such habits contribute to health, wealth, and wisdom. – Aristotle
Parallelism is not concurrency
In an earlier post I mentioned that one goal of the new introductory curriculum at Carnegie Mellon is to teach parallelism as the general case of computing, rather than an esoteric, specialized sub…
Public key pinning coming in Chrome 13
Starting with Chrome 13, we'll have HTTPS pins for most Google properties. This means that certificate chains for, say, https://www.google.com , must include a whitelisted public key. It's a fatal error otherwise. Credit goes to my colleague, Chris Evans, for much of this.
The AI-Box Experiment
On the first occasion (in March 2002), Eliezer Yudkowsky simulated the AI and Nathan Russell simulated the gatekeeper. The AI’s handicap (the amount paid by the AI party to the gatekeeper party if not released) was set at $10. On the second occasion (in July 2002), Eliezer Yudkowsky simulated the AI and David…
Every day I learn something new… and stupid.
Hey kids, did you know that JavaScript doesn't have integers? That's right! All JavaScript numbers (either primitive numbers, or the Number object, and don't even get me started on how stupid it is that there is even a distinction between the two) are actually double floats! Now, in any Lisp-derived language, you…
Maze-generation algorithms, with JS demos
Algorithms, circle mazes, hex grids, masking, weaving, braiding, 3D and 4D grids, spheres, and more!
Deaths per TWh for all energy sources: Rooftop solar power relatively dangerous
Update: I have written a fairly comprehensive article about steps to lower deaths per terawatt hour . Primary focus on pollution mitigation. Air pollution causes 3.1 million deaths per year
Dynamic languages are static languages
While reviewing some of the comments on my post about parallelism and concurrency, I noticed that the great fallacy about dynamic and static languages continues to hold people in its thrall. So, i…
Deaths per TWH by energy source
I wrote this back in 2008 and with one new death that is somewhat nuclear energy related (a death at one of the japanese nuclear plants following the 8.9 earthquake) the statistics are not changed. Japan should have had sealed backup diesel generators or updated some of their designs. However, nuclear still compares…
Well, Actually
Miguel de Icaza's Blog
How to Price Software - Economics vs. Pyschology
You’ve just released your latest photo-organizing software. Through some mechanism which will be left as an exercise to the reader, you’ve managed to actually let people know about it. …