Mnesia and S3 07/23/2007
 

Joel Reymont has hacked Mnesia around a bit and added a new storage type.  In addition to 'ram_copies' and 'disc_copies' node types, Mnesia can now have Amazon S3 nodes (s3_copies).

He hacked the Mnesia internals pretty hard, but (from TFA):

I would say it was worth it, though, as I now can
- lock S3 buckets or "records" using {Bucket, Key}
- update several S3 records in a single transaction
- set up additional s3_copies replicas using mnesia:add_table_copy/3

- ensure that data is only written to S3 once

- have a large cluster of Yaws nodes use a small cluster of "master"
Mnesia nodes with s3_copies replicas, thus keeping replication and transaction costs down.

I believe this was contract work, but I think the help he received from Ulf Wiger and others, plus the cruel and unusual punishment of announcing the results to us, is hopefully enough to compel him to release it as open-source at some point.  I am certainly interested.  Although I will admit that for a small- to mid-sized web app, Amazon EC2 and S3 are not too cost-effective just yet. 

 
Why Erlang? 06/19/2007
 

A lot of people are asking me why I'm programming in Erlang these days.  And yes, I'm talking about the ones who are in the tech world, not my mother and grandmother.  Those two are wondering why I don't just use English.

I have read a lot of blog posts and articles recently that led me down this path.  Reddit had been, and may still be, hot on Erlang posts.  But the teaser article on Pragmatic Programmers for Joe Armstrong's book is the one that I think covers the most bases.

The same inquisitive people ask me if Erlang is used in any PROD apps.  Well, does the mobile phone grid for England count?  That's where a 2 million line Erlang program is achieving nine 9's reliability.  For those of you scoring at home, that's 32ms of downtime per year.  Pfft.  hacks...

Making a program just about 32 times faster on a 32-core machine is quite appealing.  Down in the trenches, though...  If Erlang, Yaws (web server), and Mnesia (in-memory and on-disk distributed database) are used to write a Facebook app and the server doesn't melt under all the load, then that's pretty bad-ass.  Just in case, I'll try to put the app in Amazon's EC2 so I can drop another Erlang node into place quickly.  We'll see...

 
First Post! 06/12/2007
 

Um, hi.

So it's mid-2007 and a self-proclaimed geek like me is just getting a blog?  What's up with that?  What the hell have I been doing?  Well, there have been a few things...

At Mirus, and at Sankaty before being acquired, we are building a SaaS Business Intelligence company.  I'm not sure when you stop calling yourself a startup.  I guess you stop when you're making your own money.  We've been doing that (only took 8 years), but maybe you drop the startup tag when you're making enough to pay everyone closer to market value than the sweatshop wages you have been paying.  In any case, the experience has been phenomenal, from technology to corporate structure and finance, I have a wee bit to offer the world now, and hope to share intermittently in this blog.

My sidebars have been investigating new programming languages.  I came from the VB world, and was elated to 'get out.'  We web-enabled the product above with Java, and that was okay for the most part.  I briefly studied K&R to learn C, but then started to hit some languages that I really enjoyed.

 * the D Programming Language - I liked it enough to start the language's version of sourceforge.  See http://www.dsource.org.  I will also be speaking at the first D Conference.  Gotta think of something interesting to say...

 * Lisp - quite the eye-opener.  We attempted to rewrite Mirus' BI query engine in Lisp, but my developer's minds weren't as twisted as mine.  They felt more productive in Java, and I got the usual pressure from the higher-ups that it's easier to bring people off the street with Java skills than Lisp.  Pfft.

 * Python - great language, and I've totally dissected the Trac codebase while learning it.  Dsource uses Trac and a lot of custom plugins to operate all the projects it hosts.  Django is pretty bad-ass as a web framework as well, and I hope to contribute some code (enhanced db backend) to that project real soon.

 * Erlang -wow, this language has just been sitting there, waiting patiently with all its goodness, for someone to come along and do amazing things with it.  That someone will hopefully be me ;)  Concurrent, fault tolerant, distributed, functional...  /me drools.  So far, there's one web server, Yaws, that can kick the crap out of Apache.  I'm wondering if Erlang is as well suited as it appears to be for a cometd server.  That'd help out some people with traffic between their servers and the browser, eh?  All while saving them hardware moolah because of the stupid amount of processes Erlang can run.  Maybe if I do this for someone, they get to pay the developers more?  Maybe if I use it myself, I get to break-even faster?

Finally, and most importantly, the family has been growing over the past few years.  Nora is almost three, and she gets a baby sister in about two weeks.  gulp...

Wow, so I'm new to blogging, and this could have been divided up into 18 different posts.  That's coming...  I just had to braindump to get started.

Cheers