Older entries


I'm too lazy to convert these to the new format. :-P

Legalize propranolol now! - 14 November 2003

(please take this with a grain of salt, i am not a doctor, i might be dead wrong about some of this)

Why are some drugs available over the counter, while others need a prescription? Some are dangerous, obviously, but for others it seems to be just chance and history.

while on the other hand

What is this propranolol stuff? Propranolol is a "beta blocker". This means it blocks the fight-or-flight response, in which one becomes agitated, stronger, more awake, more emotive, and possibly unable to keep still. Propranolol also reduces heart rate and bluntens emotional affect.

The cultural effects of making propranolol easily available are likely to be very positive:

In other words, propranolol is potentially empowering for people who currently live in fear of their own reaction to fear. I suspect this to be a common situation. Propranolol should be available from a pharmacy without prescription. Legalize now!

Hard Left - 5 November 2003
Compared to right-wing politics, the left-wing has always seemed very indecisive. The right has a very definite approach: Christian "morality", small government, low taxes, and none of this deviant sexual behaviour thank you very much. The left on the other hand is very splintered: environmental conerns, social policy, do we spend more at home or give more foreign aid?, equal rights for many different groups, religious tolerance. All one big blur.

Surely the left can do better? Here's my ideal left-wing political party:

Policy: Based on two principles:

Basically, do what Peter Singer thinks is right. And prioritize, focus on big stuff, be very visible even if it means sounding radical. And act quickly, different members might have different specialities but for every issue there is one person who makes a decision and then acts (the party is not a democracy).

Membership: Members have to be able to make definite decisions, and follow through with sustained and coordinated action. Membership is therefore strictly limited to people who have proved that they are able to do this. Before you denounce me as an elitist snob, let me tell you my list...

Structure: The party is not a democracy. If people don't agree with the person in charge, they can set up their own party or organize an overwhelming coup. Members of the party may be members of other political parties (eg splinter groups), tolerate your schismatics and keep an eye on the big picture. Everything is very light-weight, and as much as possible is electronic. Look at what Howard Dean is doing, and copy most of it. Also look at the open source methodology. Every detail is out in the open, there is no members-only area on the web-site.

(nb. setting up a party such as this should only be attempted in a democracy with preferential voting, such as Australia. Americans: vote Democrat not Green. If you must do something, do it as an NGO lobby group. Incidentally, Howard Dean fits my membership criterion, since he's a doctor)

Gestural editor - 2 November 2003
Which kind of microwave oven is faster to program?

Like this?      or     Like this?
10m 1m 10s 1s            7 8 9
                         4 5 6
                         1 2 3

The one on the right has more buttons, it must be faster! But wait, with the one on the left, you can go tap-tap-tap on one button very quickly, with less hunting around.

Could we do something similar with user interfaces? For example, I have yet to find an editor that doesn't suck. I don't like key-combinations (hard to touch-type -- the meta keys have to be BIG, like "Shift", or it sucks), but VI's system of modes is also terrible since you tend to forget which mode you're in. I currently use VI, and i've learned various gestures for doing things, as a manual skill, ":wq", "dd", etc.

What if commands were started using a double-tap on a normal key?

While we're designing a new editor (this isn't an original idea btw): lets get rid of this cut and paste nonsense. The selection is independent of the cursor, there are move, copy and delete commands and no invisible clipboard. And no drag-and-drop either: dragging the mouse always creates a selection. Middle-button inserts at current cursor position, not current mouse position.

More on health data mining - 10 October 2003
Have been thinking more about accounting for reporting bias in a health data mining system (see earlier entry on this topic). While chatting with friends, the topic of the bias you get from someone logging in at varying rates came up. On further reflection, it's actually possible to account for this kind of bias! This gives me some hope that other forms of bias may also be modelled.

Hmm, this isn't a perfectly clear explanation, I'm going to need to start working on a formal spec: sparrowfall design notes.

Anyway... suppose someone is logging in about weekly and answering a single question, "are you happy?". Let's represent a yes as "Y", a no as "N" and a did-not-log-in as "-". Then we might get a sequence something like this:


If we were to just average all the Ys and Ns, we would conclude that this is a mostly happy person. I think it's pretty clear this is the wrong thing to do. A better way to go might be to say that their state is a Markov process, ie, their state this week may be predicted somewhat from their state last week. And we might also suppose that whether they log in or not is dependent on their state.

So to model this sequence we estimate the likelyhoods of:

These might be obtained by a Maximum Likelyhood method, or even better, MML.

In the example above, we would probably conclude that the person is much less likely to log in when they are not happy, and that they are actually often unhappy.

Generic Extensible Direct Threading Interpreter - 26 September 2003
A direct threading interpreter is a very fast kind of interpreter, where the byte code is essentially a list of addresses and going to the next instruction is just a matter of jumping to the next address in the list. It can be implemented in GCC in a cross platform way, either by indirect gotos, or by "sibling call" tail recursion.

It occurs to me that the sibling call tail recursion version is actually extensible on the fly. One can dynamically load libraries on the fly, then start including interpreter instructions from them in your bytecode. This provides a significant simplification of the idea of a "Just In Time" compiler, where one compiles (using GCC in order to remain platform independant) and then dynamically loads new interpreter instructions into the interpreter.

Also, one can have thousands and thousands of interpreter instructions. So you might just say, ok, for each possible combination of two instructions that we have now, we are going to combine them to form a new instruction. Repeat as necessary. In the limit this is as fast as compiled code (at the cost of generating a large amount of code, some of which might not be used).

My initial interest in this is for a cache-coherent version of Python Numeric.

Most importantly of all, GEDTI is a nifty acronym, especially if you pronounce the "GE" as in "German".

"Peter Singer" credit card - 19 September 2003
Peter Singer has suggested that rich nations should aim to give 1% of GDP in foreign aid to poor nations (at least as a starting point, up to 50% would be more reasonable, but sadly we can't even seem to manage 1%, current value for Australia is about 0.25%). It's probably equally good if you were to invest some amount of money for a time, then donate the 1% when you spend it (including 1% of the interest).

Given that the government doesn't seem to be pulling it's weight here, it's up to individuals for the moment (though lobbying for increased foreign aid would also be good). One way to make sure you pay your 1% would be to have a credit (or debit) card that automatically donated 1% to UNICEF or Oxfam or similar whenever you made a purchase.

Little Snob initial release - 6 September 2003
Data mining software for the rest of us. Just like the original Snob, only less user hostile. Enjoy :-)

Have I mentioned recently that Python rocks?

Open politicians - 5 September 2003

All this data would be posted on their web site. Even if it wasn't 24/7 it would still give a far better idea of what they were like than our current 10 second sound bites. You could really trust a politician if you knew everything they had ever said. :-)

LED mouse, a la Minority Report - 25 Aug 2003
A LED worn on a finger is tracked by a CCD camera. Not original, i'm sure, but i have a few twists of my own.

Health data mining - 21 Aug 2003
Some illnesses, such as depression (and mental illness in general), are proving hard to treat. Studies on medications and treatments for these are usually fairly small, and last at most a few months. This isn't good enough. What we should be doing is tracking the progress of as many people as possible with these illnesses, noting how they are doing regularly, and what treatments they try. This data could then be analysed to determine what really works in the long term.

Capital ownership
... is, was, and will be the only game in town. So a healthy society should try to keep ownership of capital as uniform as possible.

Gimp Wiki
No, not a wiki about the Gimp (already exists anyway). An image manipulation program that is a wiki. Implement using Python, Python restricted execution, PIL, NumPy, PyGtk, and judicious use of PyInline.

Standing Offers For Foreign Aid

Circle v2
Everything encrypted using SSH. Overnet style network (can't rely on IP, too broken). Subcircles for different usages (file sharing, chat, backup, etc) for fairness. Persistent hashtable storage to reduce traffic.

Bachelor chow
Find the simplest/cheapest mixture of foodstuffs that gives you all your daily nutritional requirements -- get a nutritional database and recommeded daily intakes, define an fitness function and optimize using Newton's method function minimization.

...hmm, Sustagen looks like it was designed for this already... oh well.

...the Glycemic Index is probably an important factor too.

bzip2 spam filter
Use bzip2 to identify spam. Possibly in combination with logistic regression. Related: use spam filtering techniques for censorware. Related 2: use technique on links to pages, in order to determine interesting pages.