July 19, 2008

Using Facebook’s Thrift with Python and HBase


Today I’m going to show you how to interface Python to Apache HBase using Facebook’s Thrift package. Hbase is a documented oriented database which is very similar to Google’s BigTable (in fact its more or less a clone of BigTable as seen in the BigTable paper). HBase has two primary interfaces - a REST API which is relatively slow, and a Thrift interface, which is recommended for high speed communication. For speed and other reasons, we’re going to be using the Thrift API. Note that I am going to be touching on some Hbase jargon (such as column families). Its not essential to understand what those are if you are just trying to build a Python Thrift client. But if you’re trying to use HBase, I would consider that knowledge essential. Read more

May 7, 2007

About the EVE-Central.com Interface


I get the occasional question about someone’s browser being seemingly stuck in “IGB” mode. Usually, its not actually stuck, the user was simply expecting some more graphical pizzaz out of EVE-Central.com. So, why is the interface so bland? Maintainability is the primary reason. The EVE-Online in game browser is a rather buggy, slow, and temperamental beast. CSS support is worse than Netscape 4, and performance is akin to a Pentium 66 rendering a huge table - it just can’t do it without a week long crunch. Hence all of the market information is limited (only 10 entries or so per table, etc) and no stylesheets or other fun stuff is used. So why is the main, non-IGB interface so bland too? Primarily for not having to maintain two sets of templates and remembering to update both to fix something or enhance something. Read more

April 12, 2007

Tapestry 5: Rendering a Block in a page


This one took awhile to figure out. In Tapestry, if a component is passed to another component (such as your main page layout component), you need to pass it as a Block parameter. The problem with blocks, there is no quick way to render them. You can use the @AfterRenderBody rendering stage annotation, but this gives you very limited flexibility in where the object will end up (or you make kludgy hacks to put this together). This quick little component can solve all those problems. I present you Render.java. This incredible class is appearing in IRM 2. Update: You can also use the builtin Tapestry component named Delegate. <t:delegate to=“block:foo”/> But if you still prefer, you can use this Component: Read more

© 2025 Yann Ramin