Probabilistic M2M Relationships Using Bloom Filters

“Using a junction table for a sparse or small data set (where there are not many associations between movies and people) gives acceptable space and time consumption properties. But for denser association matrices (which may grow over time), the upper bound on the size of the junction table is O(n(movies) * n(people)), and the upper bound on the time taken to join all three tables will be the square of that. So what optimizations and trade-offs can be made in such a situation? Well, we can use a bloom filter on each side of the M2M relationship and do away with the junction table altogether…”



Java Oddities

“There’s a famous lightening talk given by Gary Bernhardt about Javascript and Ruby oddities.
I would like to start a series of blog posts documenting some oddities in the Java language for fun! I’ll explain why or where these oddities come from with reference to the Java Language Specification when possible. I hope you learn some new things. Feel free to email or tweet me if you would like to add to the list…”

Condition Handling for Non-Lispers

“One of Common Lisp’s more advanced features is its condition handling system, which is a powerful generalisation of other languages’ exception handling systems. I first became aware of condition handling from Peter Seibel’s Practical Common Lisp, chapter 19. But if I’m honest I’ve only very recently understood what it meant; it seems to assume a higher proficiency with Lisp, and I find the S-expressive examples more of a hindrance than a help. Sorry, Lispers.

So instead I’m going to walk through condition handling, with a more thorough explanation of the rationale, and with pseudo-Python examples. (Though, to be clear, these concepts would work just as well in a static language as a dynamic one, as exceptions do.)…”

How often should we eat?

“There has been some recent interest, even in the mainstream media, in the practice of ‘intermittent fasting’. Essentially, this means going for extended periods of time without food. It comes in many different guises. Skipping of significantly delaying breakfast is one approach. Contracting the ‘window’ available for eating each day to, say, 6 or 8 hours is another approach. Still another is to alternate days of no food or very limited intake with days during which eating is unrestricted…”

Heroku Isn’t for Idiots

“At its core, Heroku is just a simple unix platform; specifically, Ubuntu 10.04 LTS…”

“The entire Heroku platform is really nothing more than small Ubuntu virtual server instances that can be spun up and down on demand. Each instance (Heroku calls them dynos), has:
– 512MB of RAM, 1GB of swap. Total = 1.5GB RAM.
– 4 CPU cores (Intel Xeon X5550 @ 2.67GHz).
– Isolated execution. Anything you store on your dyno will be isolated from all other dynos. A chroot jail environment. This means that you are completely locked down to one directory tree, with no write access to system files…”

What 10gen nailed with MongoDB

“When my co-founders and I first started on our startup a little over a year ago, we asked other startups about what to database they were using. Nine out of ten people all had the same response: “Just go with Mongo.”

Depending on which database you go with, you’ll make trade-offs on different sides of the CAP theorem, query patterns, and architecture. But regardless of whether love or hate MongoDB, it’s the choice that has enjoyed the most “overnight” success.

If you’re looking for lessons in building a developer-focused product, you should look no further than 10gen’s decisions with MongoDB. They demonstrate some of the best ways to build a community around a product and make developers love it…”

Concurrency Internals in MongoDB v2.2

“10gen CEO & Co-Founder Dwight Merriman will look “under the hood” atconcurrency internals in the upcoming version of MongoDB…”

“The Aggregation Framework is available in its first production-ready release as of 2.2. The aggregation framework makes it easier to manipulate and process documents inside of MongoDB, without needing to use Map Reduce, or separate application processes for data manipulation…”

“v2.2 eliminates the global lock in the mongod process.  Locking is now per database.  In addition a new subsystem avoids locks under most page-fault events; thus concurrency improves even on systems with a single database.   Parallelism in application of writes on secondaries is enhanced also…”

20 controversial programming opinions

“One of the very first ideas we had for this blog was to convert some of the wonderful gems of the early era of our site, the undisciplined period, to blog posts. Questions that were once enthusiastically received by the community, but no longer fit Programmer’s scope.

The first deleted question I’ve chosen is Jon Skeet’s “What’s your most controversial programming opinion?” question, a +391 scored question that was originally asked on Stack Overflow on January 2, 2009. What follows are twenty of the highest voted answers, in random order…”