Archive for August, 2009

Step backwards

Saturday, August 22nd, 2009

Since memory and CPU are very nearly free, why don’t programs compiled in debug mode keep a copy of the entire stack & state so that it’s possible to step *backwards* from a breakpoint as well as forwards? It seems like this would be extremely useful especially in failed assertions..

Primefinder, Part 2?

Monday, August 17th, 2009

So, I’m tempted to revisit my brute-force primefinder, now that I’ve discovered that I can buy time on a supercomputer* for next to nothing. I looked into Amazon’s EC2 cloud a couple of years ago for a project I was doing for a client, found it wasn’t a good fit, and then never really thought about it any more. However, recently I started a project for another client that *is* a good fit, and as a result I’ve been putting EC2 through it’s paces – and I can see that doing things like brute-force testing a large problem space for potential solutions to the p/q problem is something EC2 would be *very* good at. (Any problem that can be broken into small chunks and would therefore run well on a cluster). And, CPU on EC2 is relatively cheap. Storage and bandwidth cost money, but we don’t really need either of those.

I know – just what I needed, another pet project. 😉 [actually, revisiting an old one]

* = well, very large cluster anyway

My hi-res wishlist

Sunday, August 16th, 2009

So, here’s a list of movies that I *wish* were encoded on high res formats. Incidentally, this may also be a pretty good list of my favorite

1) Pump Up The Volume

2) Hackers

3) Who Framed Roger Rabbit

4) the Animatrix

5) Pink Floyd: Delicate sound of thunder

6) U2: Rattle & Hum

7) The mind’s eye series. (I know, this would be a major undertaking since they were originally rendered for NTSC and would have to be rerendered)

8) Groove

Problems with Money (may not be well thought out)

Sunday, August 16th, 2009

So, as most of you have noticed, money is broken. Various people have different theories on how it’s broken, why it’s broken, or what we should do to fix it, but only a few billionares actually think what we’ve got works well.

From time to time, I post posts about particularly broken things (like margin accounts). Today, I’m going to point out a set of ratios – the money : human time available, money : physical resources available, money : information available, and money : energy available ratios.

The one I’m going to focus on first is the money : information available ratio, because it is the one that is the most demonstratably broken. When people create new intellectial property, they are presumably creating value for humanity. When a artist records a new album or a programmer writes a new application, they get paid for it. What’s interesting about this is that it seems like a lot of our prized monetary systems – like inflation – are based on the idea that there should really be a fixed amount of money in the world, and it should be tied to physical resources. i.e. your $1 buys you 0.0001 ounces of gold. The problem with this is that when people create things that are all, or even mostly, ideas, it *breaks*. They’ve just created a new resource. It’s like they synthesized that 0.0001 ounce of gold out of nothing! In order for it to work out okay, you really need to inject more money into the system, *without* inflation, to line up with the more stuff (information, movies, albums, whatever) that now exists.

Next, the money : energy available ratio. This one goes several ways. We’re spending money to buy stored energy (i.e. gasoline, NG, etc) and to buy energy converted from the sun, wind, falling water, etc. But whenever someone insists on generating energy via some direct-from-the-sun conversion method, they again mess with the whole system.  Again, it’s like they’re synthesizing more gold. We’re supposed to have a certain amount of energy for sale, all stored as oil here and there, and there they go demonstrating the ability to produce unlimited amounts of energy with just a little bit of technology.

Next, the money : human time available ratio. This is where things get *really* broken. The assumption in america seems to be that every one who wants to be able to buy things and eat and live indoors and the like should either A: work, B: have rich parents, or C: be disabled. In general, it seems like people think there’s something immoral about not wanting to work. This would make sense if we didn’t have a *shortage* of real jobs. But the reality is, a lot of our jobs are makework – shuffling papers around, system overhead caused by the monetary system itself – or work that a really simple robot could do, and probably will do soon. Part of what we need is to embrace that in a world with 6 billion people, *not everyone needs to work*. Many hands make light work, say the Chinese, and by all indications they’re right. Especially when those many hands are connected to many minds that can program computers to do the work for them. 😉 However, the current system makes it very difficult for those who don’t work to continue, for example, living indoors. This is, in fact, dumb.

Next, the money : physical resources available. You can make a good case that right now, there is a finite amount of stuff – raw resources, metals, oil for plastics, whatever – in the world. Also a finite amount of land. However, space exploration and nanotechnology could both change that, if we wanted them to. If we put the kind of energy into discovering new ways of generating wealth that we put into blowing each other up over the existing wealth, we could all be wealthy beyond our wildest dreams. What we’ve got now is a system for resource allocation that has the government paying farmers to not grow food while people dig through trash cans in order to feed themselves. It’s broken, and it really needs stripped out and replaced.

Java Tip: setting a header on a http request

Wednesday, August 5th, 2009

This didn’t actually take me that long to figure out, but I can easily see how it could take someone a while, so I thought I’d include a code snippet for the benefit of our Googling friends:

URL url = new URL(“http://whatever”);
URLConnection urc = url.openConnection();

urc.setRequestProperty(“header”,”header-value”);
urc.connect();

InputStream in = urc.getInputStream();