Log in

No account? Create an account
hacking status - brad's life [entries|archive|friends|userinfo]
Brad Fitzpatrick

[ website | bradfitz.com ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

hacking status [Jun. 24th, 2006|02:59 pm]
Brad Fitzpatrick
[Tags|, ]

I wrote a script to autogenerate this post, which I now plan to post somewhat regularly. It mostly helps me sort out my thoughts/priorities, but I'm sure providing more visibility into my status publicly can't hurt either. Consider any of these posts open invitations to bug me about the status of any project, listed or not, and I'll reply and update my notes.

djabberd [svn]
Hacking level: High Needs release: High
Active development. Need to get incremental connection memory usage down a bit, finish clustering, find some memory leaks, and do more performance testing. And need to do it all pretty soon.


  • finish clustering
  • notable memory leaks
  • get incremental connection memory usage down
mogilefs [svn]
Hacking level: High Needs release: Low
Major refactoring and surge of new development in Jun 2006 for speed/robustness/readability. No protocol level changes. Works with any DAV server for storage nodes now too.
perlbal [svn]
Hacking level: Med Needs release: No
No active development. Mature maintenance mode, only adding new features as needed.


  • parallel gzip
  • concatenation plugin for mischa/hover-over/IM thing
  • monitor more data structures to find glacially slow memory leak
memcached [svn]
Hacking level: Low Needs release: High
Facebook did a bunch of great work on memcached that's currently living in the 'facebook' branch. All of the parallel changes to memcached are in trunk, and trunk has been merged into the facebook branch. There should probably be two releases: 1.1.13 off trunk for the end of the old line, and 1.2.0-beta off the facebook branch for the more brave to shake out any bugs that might've arisen from my merging of the code. Then tag both and facebook should merge into trunk.


  • autoconf/automake warnings or something in 1.1.13-rc1.tar.gz (help!)
  • better tests, perhaps including the perl tests w/ the server, and expanding
brackup [svn]
Hacking level: None Needs release: Low
Never started using it myself. It has a great test suite that includes backing up and restoring, both encrypted and not, but I never implemented the hooks for restoring in the Amazon plugin. I feel guilty about not using it, finishing any usage quirks I find, and releasing it. I'd love somebody to take this over for me if you're excited about it.


  • start using
  • amazon s3 restore support
gearman [svn]
Hacking level: None Needs release: No
Using it in production, but lacks a website/docs/etc.


  • website/docs
openid [svn]
Hacking level: None Needs release: No
David Recordon at Versign, the JanRain crew, and other members of the identity community are largely steering this boat now.

(Deleted comment)
[User Picture]From: brad
2006-06-24 10:23 pm (UTC)
Nothing fancy... just a script to transform a data structure into a bunch of HTML/CSS....

    brackup => {
        url => 'http://search.cpan.org/~bradfitz/Brackup/',
        svn => 'http://code.sixapart.com/svn/brackup/',
        status => "Never started using it myself.  ......",
        todo => [
                 'start using',
                 'amazon s3 restore support',
        needs_release => 1,
        hacking_level => 0,
(Reply) (Parent) (Thread)
From: evan
2006-06-25 01:29 am (UTC)
What generally causes memory leaks in Perl code? Is it circular references?
(Reply) (Thread)
[User Picture]From: brad
2006-06-25 06:00 pm (UTC)
Yeah, circular references. The solution is generally using weakrefs (pointers which don't add to refcount and change to undef when referent goes out of scope), or busting loops during destructors.

There are GC-like tricks you can do, though, keeping a set of weakref pointers to all objects you instantiate, and occasionaly walking that set (of the ones that haven't gone undef), and finding the loops.

In Perlbal's case, though, I have evidence to suggest it's a stats data structure that only grows and I'm never pruning it, or sometimes I'm not pruning it.
(Reply) (Parent) (Thread)
[User Picture]From: mart
2006-06-25 01:34 pm (UTC)

I was looking through the TODO on djabberd the other day and it occured to me that it would probably be much easier to keep track of these things in Trac's ticket system, since djabberd has a Trac install anyway. Trac's ticket system is so simple that it's not as much of a pain to look after as, say, Bugzilla or RequestTracker might be. I guess the main hurdle is making Trac accept logins so that it doesn't get used by random spammers; tracd (you guys are using that, right?) can just work from a standard Apache htdigest file, though, so that shouldn't be too hard. What do you think?

(Reply) (Thread)
[User Picture]From: crucially
2006-06-25 03:24 pm (UTC)
Except I hate tracs ticket system :)
(Reply) (Parent) (Thread)
[User Picture]From: foobarbazbax
2006-06-27 10:46 pm (UTC)
I've been talking so much about Perlbal here at work the guys made a couple of posters for me.

I keep saying I'm going to implement the feature asked for in this post, but I haven't had the *insert excuse here* to do it yet. It's just a hybrid proxy/web server mode. I spent a few hours on it a while back and it only worked 50% of the time. I'll finish it as soon as I get over my new found love affair with Devel::Cover.
(Reply) (Thread)
[User Picture]From: davidphillips
2006-06-28 12:09 am (UTC)
Wow, gearman is exactly what I've been needing to build. You keep pulling me closer to the Perl camp.
(Reply) (Thread)
[User Picture]From: brad
2006-06-28 01:02 am (UTC)
You can use gearman from any language. Just write a library for it in your language of choice.
(Reply) (Parent) (Thread)