?

Log in

No account? Create an account

Thoughts on CodeCon presentations - Journal of Omnifarious

Apr. 21st, 2009

12:43 am - Thoughts on CodeCon presentations

Previous Entry Share Next Entry

All the DIY BIO (Do It Yourself BIOlogy (synthetic biology in particular))

Wow! This stuff was really impressive. The basic idea being that biology is in the same place now as computing was not long before the MITS Altair came out. Sadly, the demonstrations of working code are a little hard to do when your experiment takes a few hours to run.

BitTorrent DNA

Commercial website thingy. Not interesting or relevant to me. Sadly, I paid attention to a good portion of the talk before realizing this.

Distributed Transaction Layer for Google App Engine

Well, this is mighty interesting. I sort of thought Amazon needed something like this a few years ago when I worked for them. Very relevant to anybody who wants to build reliable applications in a service oriented architecture.

Helios Voting

Secure electronic voting, for real. Probably more secure than paper ballot voting even. Really! The question I meant to ask, but forgot, was how it handles write-in candidates because right now it doesn't seem to have a really good way to do it.

Libevent

You know, I really ought to connect up StreamModule to use this. It would save me a whole lot of work. I didn't remember to ask if they had a good way of treating the release of a mutex as an event.

Pork

I was expecting to see tools for changing class names and all kinds of things. What I saw was a tool that had been painstakingly crafted to automate one change to Firefox's huge code base. Not that that isn't special, but I don't want to make that change, I want to make a different one.

All the people in the audience seemed to care about was how you could possibly trust the code the tool generated. And that's an interesting question, but not half so interesting as asking how easy it is to transform things in ways other than the particular fixup done to the Firefox code base.

It is clear that there is some pretty useful general infrastructure here. Something that can reliably keep track of the lexical structure of code before and after C/C++ macro expansion is pretty impressive.

OneSwarm

I wasn't so interested in what this particular tool did. I'm more interested in their overall research into the topology of Bittorrent networks and their effects on anonymity, performance and ISP friendliness. The tool itself is neat, it uses a few trusted friends to effectively hide your bittorrent downloads from prying eyes, of which there appear to be many right now.

Parallel Web Browser

Fine-grained parallelism in a web browser. And a really good source of ideas for how to accomplish fine-grained parallelism in a lot of other places too. A really interesting talk about how to put multiple cores to good use.

Switzerland

They started by asking what sorts of evil things your ISP is doing to your Internet traffic. They discovered that a possibly more interesting question is what kinds of evil things is your NAT or 'firewall' (note that a firewall's job most emphatically does not typically involve altering traffic, it's just a filtering device) is doing to your Internet traffic. I do not want to be randomly sending out an X-Cool-Jobs header with every web request, thank you very much.

I really wish they would do a survey of consumer NAT hardware and tell people how evil any given piece is.

Anyway, it's a pretty darned interesting research tool that I may have to run on my own network to help them out.

Tahoe, the Least-Authority Filesystem

Oh no! He's got an axe! And he's attacking the computer! Really!

An excellent demonstration of a distributed encrypted filesystem that can handle the random removal of nodes for reasons ranging from the node purposefully reporting invalid results to the node being randomly physically destroyed by someone with an axe.

TorFlow

A lot of interesting analysis of the Tor network to help identify misbehaving and/or malicious nodes as well as make the network a lot more efficient.

I should've asked questions as to whether or not using the data it generates to help you build more efficient circuits would compromise your anonymity. I was feeling very tired that day. :-(

Trend Profiler / trend-prof

A really interesting tool for identifying superlinearities in your code. This is a big help for taking performance profiles for small data sets and making good, educated guesses as to what they will look like for larger data sets. Also a good way to identify where someone used a bubble sort for something they most definitely shouldn't have.

Typhon / Scream

Unfortunately, I almost completely ignored this presentation. Nothing in the name or writeup of the presentation gave me a clue as to why I'd care. The demonstration of Quake 3 running on an Android G1 was pretty eye catching though. If I ever want to do that kind of thing I'll have to come back and look this project up.

Current Location: Seattle, WA (The 18 bus)
Current Mood: [mood icon] exhausted

Comments:

[User Picture]
From:pphaneuf
Date:April 23rd, 2009 03:09 am (UTC)
(Link)
I asked Niels, and he says that they don't have mutex release as an event type, but that he is thinking of rolling together a generic event module.

I'd point out that you could use a pipe (or, on a recent Linux kernel, eventfd) as a semaphore, keeping the reading side in blocking mode, for an equivalent behaviour (if a good chunk more costly). Of course, as usual, getting the event would only be a hint that it probably would not block, someone might beat you to the race...
(Reply) (Thread)
[User Picture]
From:omnifarious
Date:August 24th, 2009 05:33 am (UTC)
(Link)

You know, I'm kinda thinking about this. One relevant piece of information is that in most cases I can think of where I'd want to use a mutex of some kind I think waiting longer than a millisecond for it to become free means something went wrong.

For things like managing message or work queues between threads, I can see using a pipe or some similar kind of thing and just pushing a byte down the pipe for each chunk of data you have in the queue.

I'm thinking that the set of synchronization primitives for efficient multi-threaded programming needs a little bit of rethinking.



Edited at 2009-08-24 05:34 am (UTC)
(Reply) (Parent) (Thread)