Posts

Showing posts from September, 2006

Books: Scalable Internet Architectures

Scalable Internet Architectures

I can summarize this book:High availabililty and load balancing are as completely different as peanut butter and jelly.Spread is cool.Look, ma! I can write complex code in multiple languages!Overall, however, I liked the book. It was all new material to me, and I'm glad I read it.

Databases: More Atomic Cluster Commits

I'm currently reading the book Scalable Internet Architectures, and I'm enjoying it.

On page 141, he describes two-phase commits:The basic idea is that the node attempting the transaction will notify its peers that it is about to commit, and they will react by preparing the transaction and notifying the originating node that they are ready to commit. The second phase is noticing any aborts in the process and then possibly following through on the commit (hopefully everywhere)...The two-phase commit is not perfect, but it is considered sufficient for applications such as stock trading and banking...Despite its shortcomings, the only common "correct" multimaster replication technique used today is the 2PC, and, due to its overhead costs, it is not widely used for geographic replications.I didn't catch the phrase "not perfect" the first time I read that section, so I spent the day wondering how the hell they implemented fully atomic transactions across a c…

Python: I Love Genshi!

I’ve totally fallen in love with Genshi! It's an XML templating engine for Python. I learned it between midnight and 2AM one night. By the next day, I was totally productive and totally loving it! I like the fact that template inheritance works so easily, and I love the XPath stuff. It's nice to be free of XSS vulnerabilities to some extent. I really didn't like Tal, so I was surprised to find that Genshi was so nice. It’s weird--Genshi is like a superset of all the templating engines, but in a way that is conceptually simple and elegant.

More about Genshi

Python: Stacked Thread-local Object

This is a cute trick: Registry for handling request-local module globals sanely.

It has all the ease of use of globals but with the thread-safety of shoving everything in a per-request object called ctx.

A Summary of Talks I've Attended Recently

I've been to a lot of talks and a conference recently. These included:The Future of Web AppsWeb 3.0: Mashing Virtual Worlds and the WebI thought I would blog about ideas that were either:New and interesting.Not new, but came up a lot.AttitudeBe passionate or go home.Be a pain killer, not a vitamin.Be pragmatic; working code is better than beautiful code.What's in it for the user?Startups Should Keep in MindBig, bloated companies are good targets.There is lots of room for passion-centric communities.We consistently see the pattern of boom, correction, lasting change.Amateurs are becoming really powerful.Getting StartedKeep talking to real users, not just your techie friends.Don't go beta with something that sucks.Raise less money, spend less money, hire slowly, fire quickly.Developers should be in the same timezone.Use specialists; for instance, don't waste a good engineer fighting XHTML/CSS browser issues.Don't cut corners; take care of the details.Attracting and…

Free Culture: Lawrence Lessig Talk Now Available

Lawrence Lessig's keynote Free Culture: What we need from you is now available. It was the best keynote I've ever seen at LinuxWorld.

Take the time--it'll blow your mind! ;)

Erlang: Toying with Erlang

I'm really interested in distributed computing and concurrency right now. Given that I've been playing with Haskell so much, I thought I'd give Erlang a try since it's all about distributed computing, concurrency, and scalability.

I must admit that it already seems easier for me to read than Haskell. I'm not sure why. As I mentioned before, I do like Erlang-style concurrency, since strangely enough, that's how I had always thought things should work.

I'm fascinated by Mnesia, Erlang's distributed database. Unfortunately, according to this:Mnesia is not perfect, of course, and its biggest downside at the moment is that its disc storage engine isn't suited for storing large volumes of data (Mnesia was designed for soft real-time applications where the data is stored mostly in RAM), but I hope this will be resolved in the not-too-distant future.This is a major downer for me because I'm currently interested in terabyte-sized data sets. Nor is the…

Erlang: Erlang Style Concurrency

I'm lovin' this article: http://www.defmacro.org/ramblings/concurrency.html.

It meshes nicely with my earlier post here. Erlang is like stackless Python with coroutines in that it's a lightweight threading system built on top of asynchronous IO. However, it's different in that there is no data shared between threads (i.e. a shared heap protected by locks). Instead, to share data, you must use message passing. This part matches my earlier post. Of course, the benefit is that it's trivial to do distributed computing with such systems.

Anyway, Erlang has been around a long time and is incredibly robust. I'd love to get a chance to use it.