“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…”
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…”
“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.)…”
“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…”
“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…”
“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…”