Friday, January 25, 2008


Recently had a quick look into General Purpose programming for GPUs. That looks like good fun.
There is one OpenGL example in Haskell's HOpenGL, which sends GLSL scripts to render stuff on the GPU (OpenGL2.0 seems to be required). It would be great to hack this to be able to extract some data again.
There is also a Mandelbrot rendered that pushes all the actual calculation into the GPU. Impressive - but as far as as I can see it doesn't extract any data again.

Some ideas here:
The GPU might be used for the simulation of musical instruments, if enough data could be extracted again.
It might also be used for other Fractal simulations (random landscapes), or physical systems (the Java sand/dust applet, for instance, adapted to run on the GPU...)

If I am to use it, I will have to write in C-like code (not Haskell), but I salivate at the prospect of running NDP or STM where most of the work is sent out to the GPU, and some multicore processes handle the rest.

Vertigo looks cool, but I would prefer something that might run on Linux or a Mac.

Thursday, March 29, 2007

Open Voting

There has been some discussion regarding the software/hardware platform for electronic voting.
How could one go about creating a trustworthy platform for electronic voting based on commodity hardware?

Closed-source solutions create security through obscurity. An open source application (application chain) would be better, allowing security experts to critique and improve the application.

Could one create a LiveCD or installable distro for voting purposes?
Some ideas (all of these can be expanded to several man years):
  • Allow the distro to verify its hardware/Bios, reinstall the Bios
  • Allow the distro to check another CD.
  • Run the computer with the voting software.
  • Send the data to be aggregated.
  • Publish the result.

A fun robotics project

Buy a RoboRaptor or RoboReptile or similar.
Get hold of voltages, signals, etc from brain to limbs.
Get hold of physical characteristics of limbs and motors.
Calculate the relevant characteristics for a RoboRaptor made out of steel, 4 meters tall.
Find way to alter timings in RoboRaptor software: stride timings etc.
(Underclock? Reverse engineer and alter?)
Order parts, forge steel limbs, teeth etc.
Add a separate, remote-controlled off-switch.
Turn it on and retire immediately.

Saturday, February 17, 2007

Meta levels

Recently, in a discussion wth colleagues about models, meta-models, class/instance relations etc, I wanted to use "meta" as descriptive of a direction: "This model is meta this other model"- just like this painting is above the other, this time is later than this other time, this house is to the left of this other house.

The I started wondering: what would the other direction be called?
If X is meta to Y, what is Y to X?
(answer might involve "defines", "generalizes", "exemplifies", "instantiates"....)

On a related note: What do you call a general discussion over meta-levels, when you take one step to the side and see that the relation between level x and level x+1 is the same as between level x-1 and level x?

At 90 degrees to meta, in a sense. (pata? ana? cata? )

Friday, February 9, 2007

Genealogy for everyone

I have been trying out Gramps (Linux genealogy app) for some time.
First I entered my nearest family and all the names they could remember.
Then I entered a number of names, dates etc from a family tree booklet I had.
Then I searched the net for some of these names, and found some of them in other people's family trees.
The I searched the net for GEDCOM files (+filetype:ged) that contains these names.
By this time, I had some people from the Middle Ages that could be found in Wikipedia.
Childish, but cool, to say that I am descended from Charlemagne, William the Conqueror, Alfred the Great and the Norse gods.

This started me thinking:
  • I would never have been able to do this without the net.
  • The further back you go, the more people are descended from them, the more likely they are to be famous, and the more likely you are to be able to find (genealogical) data about them
  • The more data that finds its way onto the net (databases), and the more structure the data has (Semantic net?), the more this holds.
There are already some wiki-like efforts underway.
In the future, I think most people in Europe and America will be able to search from their relatives around 1900 and get a very big family tree, and most people will be able to say that they are descended from kings or other famous people around the year 1000.

Software patterns and physicality

I remember reading that a software pattern isn't a feature, it's a bug - an unrealized potential for abstraction. This is a provocative view.

A pattern is some piece of code, a way of doing things, which a designer repeats wherever it is the right solution for a problem. The concept comes from (physical) architecture, where patterns have been found for a number of challenges up from whether to have niches in walls up to where to locate cities.

I believe that there is a distinction between patterns in the physical world and patterns in the informational world. In the informational world, we can create new copies of everything and reuse with variations. In the physical world, we can't.

If somebody finds a clever method to pour concrete - the concrete still has to be poured in every location.
If somebody finds a clever method to navigate a data structure - this method may be abstracted out and applied everywhere, if the environment allows it.

Patterns progress like this:
  • research material
  • known technique
  • generalized, reusable technique (pattern)
  • language construct
  • infrastructure
  • forgotten
If your language is strong enough, you can move beyond the pattern stage.