Archive for June, 2011

If This Then That, a neat little service

Sunday, June 26th, 2011

Up front disclaimer: I have absolutely no affiliation with these people except as a user. I just like their service.

So I used to have this project called Gourmand. It scraped my interests from various places across the internet and shoved them into delicious. Favourited tweets, google reader shared items, stumbleupon thumbs ups and reddit votes. I’d vaguely intended to get hacker news in there but never got around to doing it.

It bit rotted – various features stopped working as services moved on, and I decided that I didn’t really have much interest in maintaining it. So I just turned it off.

I’ve since moved from delicious to pinboard, which is a rather nice (paid) replacement for it. It’s not as good for discovery, but it’s much better as a bookmarking service. It has a bunch of nice search and integration features, and in particular my tweets and google reader items are now going into my bookmarks again.

This of course caused me to want more, and in particular want my reddit upvotes to go into it. I briefly talked to the author of pinboard on twitter about importing arbitrary feeds. He didn’t want to implement the feature for various reasons but suggested using yahoo pipes to turn the reddit upvote feed into a google reader shared like feed and use that.

I really hate yahoo pipes, so decided to use the API to do it instead. I then promptly proceeded to do bugger all with this intention and there it ended for the time being.

The other day my friend Joanna Geary had some invites going to ifttt (If This Then That), a web automation service. I thought “Hey, that looks neat” so happily took one off her.

I signed in, looked bewildered for a few seconds, clicked some buttons, and about a minute later had my reddit upvotes going into pinboard using the RSS feed channel. Shortly after that I had my metafilter favourites coming in too.

It works well. It handles a somewhat limited range of tasks, but it seems to handle those smoothly and with just enough flexibility to let you do what you want. I’m quite impressed, and definitely recommend checking it out.

The (Programming Language) Hat

Monday, June 20th, 2011

I had a conversation on twitter with Michael Bridgen the other day. It went:

@squaremobius: Time to get my C++ hat on! That C++ hat that I have.
@DRMacIver: @squaremobius is it made of barbed wire and high explosives?
@squaremobius: @DRMacIver No, the C++ hat is made of slightly damp folded newspaper. And high explosives.

Well I was thinking about hats on friday (as one does), and started thinking about what the hats for other languages are like.

And then I thought “You know what we haven’t had in a while? An irritating but catchy meme in which we shallowly compare programming languages based on superficial characteristics. Those are awesome“.

The rest was inevitable.

And so, without further ado, I bring you hats for programming languages.

The C Hat

The C hat is a knight’s helmet. People looking at you think you are a brave warrior who slays dragons. They do however also suspect you might just be a crazy LARPer.

The Java Hat

The Java hat is a bowler hat. It is very prim and proper and worn by responsible businessman. You’re not sure if they know it says “Kick Me” on the back, but you don’t want to ask in case they don’t.

The Scala Hat

The Scala Hat is the Java Hat with an HUD and a propeller beanie attached.

The Haskell Hat

The Haskell hat is a beautiful construction of crystal and silver. It is a wonderful thing to behold. It’s the devil to keep the thing properly balanced on your head.

The Python Hat

The Python Hat is broad brimmed, stylish and proper. There is a correct way to wear it, and any other way will get you judged. The correct way is facing dead straight forward, no angle at all, and with a significant indent in the front.

The Ruby Hat

The Ruby Hat was made by this wonderful little milliner you’ve probably never heard of. Despite that, it looks remarkably like they took the Python Hat and added sequins. It is worn at an angle.

The Perl Hat

 

Dietary rearrangement

Tuesday, June 14th, 2011

It’s funny. I thought I was adjusting my diet to become more normal. I’m actively in the process of trying to acclimatize myself to eating meat again. it’s not going very well, but it is going.

But then the guardian threw me a curve ball when I read this article.

My reaction to it can be pretty accurately summarised in three words:

Holy. Fucking. Shit.

I don’t really have an ethical problem with killing individual fish (Or animals for that matter). I can see the objections, but I just don’t find it that big a deal. Sorry guys, you are unimportant and tasty. Nom nom nom.

But… there’s a big difference between killing individuals and what is basically tantamount to fish genocide. And I don’t really think I can ethically take part in that. So I’m not going to.

I’ve basically decided that from this day forth I will no longer eat non-farmed fish. No special consideration for “ethically caught” fish, because at this point I think the only ethical thing to do is to stop catching the damn fish.

The Other Hammer Principle

Saturday, June 11th, 2011

If you google for “hammer principle” you get two things: The site mike and I created, and a bunch of stuff about martial arts.

Well I’ve been thinking about learning a martial art, so they were on my mind, and it occurred to me that martial arts were pretty ideal for the sort of thing that hammer principle does.
.
So we created a Martial Arts Hammer Principle. It’s pretty incomplete so far – only 14 responses – but already it’s starting to take shape as some quite interesting results.

So if you know any martial arts, or are interested in learning one, I encourage you to head over and check it out! And if you can fill out some of the statements and help us build a picture of different martial arts, that would be even better.

World, whim, etc. Part 2

Monday, June 6th, 2011

As has been observed, my The World As I Would Make It leaves a lot of policy details undefined. That was deliberate – some I haven’t put enough thought into or acquired enough knowledge to define. Some I just didn’t want to include because it would make the post too sprawling.

One issue I care a lot about but have not yet put enough study (and, to a lesser extent, thought) into is the structure of the government itself. I thought I’d sketch something out anyway, but I’m not at all convinced that what I’m describing here is a great idea. I like the overall shape of it and the aims are valid, but a lot of the individual details may be suspect. In particular, any numbers present here are basically made up and should be regarded as complete wild assed guesses.

Basic Government Structure

The structure of the government is similar to the classic two house system as seen in e.g. the UK. You’ve got the House, a body of 100 candidates whose role it is to pass laws (analogous to the house of commons), and you’ve got Oversight (analogous to the house of lords) who are required to approve it.

Additionally you have a prime minister (and maybe deputy prime minister?) who is not a member of either body (and does not get a vote in them) who acts as head of government.

The prime minister is elected during the general election, which is not tied to the appointment of members of either house (more on why later). This may be called for by a majority vote in any one of House, Oversight, or the electorate (or the existing prime minister may call for it. However this doesn’t differ much from explicitly stepping down).

Voting

The system is, strictly speaking, not a democracy. It’s a meritocracy. However the conditions for merit are not a very high bar to meet – they are designed to ensure a basic level of competence and interest.

The reason for this a lot of you will disagree with me on: I don’t regard voting as a right. The role of a government is not to obey the will of the people, it’s to maximize the benefit to the people. Citizen oversight is essential for this, and democracy is currently one of the best ways we have of achieving this. However in order of decreasing importance it goes benefit, oversight, democracy.

It’s currently far too easy to vote. This means that the vote is very manipulable by spin and media campaigning. I’m not in favour of making it very difficult to vote, but I am in favour of dampening this effect.

How to earn the vote:

  1. A school education is required (remember: Part of the curriculum in my desired school system is “critical thinking”, which includes a bullshit detector)
  2. Regular community service (this idea thanks to Dave Stark)

Beyond these criteria there is exactly one crime for which you can have your right to vote permanently (unless you later manage to prove yourself innocent of course) removed from you: Interfering with the democratic process. This includes but is not limited to vote rigging, putting pressure on someone else for how they would vote and bribery.

The way the community service works is this: You don’t have to do a lot. The requirement is probably something like you have to have averaged X hours per month for the last 6 months (which could be done weekly or in one batch or whatever you like). This is assigned to you randomly – it’s not skills tested, it’s not in any way reflective of privilege. One way to do this would be to have it so every 10 hours of work you are given two random options and may choose between them. If you genuinely feel you are unable to perform either of them you may appeal, but this shouldn’t be a straightforward process.

Details need to be worked out in terms of “grace periods” in which you can make up missed community service, etc. It’s important to get right, but for now I’m just going to assume that something sensible can be worked out and then tinkered with when it’s tried out in practice. People who work in the military should probably be automatically counted as performing community service while on duty (but be required to do some while on leave). Additionally people who are required to spend a lot of time out of the country (ambassadors, people who work on oil rigs, etc) may get special exemption to perform extra community service whilst in the country.

As a side note, I think you need to be eligible to vote when the vote is declared, not when the vote is performed. No last minute “oh shit I care about that, I’d better do some community service in a hurry”.

Peoples’ eligibility to vote

So. You’ve earned the vote. How does voting work in practice?

First, how is Oversight elected? It’s not. It’s a jury service. The members of Oversight are randomly selected from the electorate. You are allowed to refuse election. Elections are for (staggered) fixed terms, and you may step down at any time.

For the House the voting is a little more traditional. As we’ve discovered recently, this is quite a controversial subject and I haven’t fully made up my mind on my preferred system, but for the moment I’m going to borrow/paraphrase one I quite like from the Swiss. It’s a modified form of range voting (I don’t actually especially like pure range voting, but do mostly like the following modification).

Every voter gets 10 votes. They are not required to use all of them. These votes may be assigned to candidates. A voter may assign up to two votes to any given candidate. Tally the number of votes each candidate get and select the top N.

This system is used to elect members of the House: You vote for the entire house of representatives (it’s not a constituency system, although one expects that most representatives will target their campaigning at least somewhat geographically) and the top 100 representatives get in. I’m unsure what mechanism is used to elect the prime minister. If there’s also a deputy prime minister then possibly the same system with the top two selected.

Another novelty to the system:

Firstly, the system is electronically counted. This means the votes are not anonymous. I don’t know much about this subject, but the security community at large have basically said they’re unable to come up with an anonymous electronic voting system that isn’t trivially compromised. They are private, but the information exists and is centrally stored to link a vote back to a voter.

Additionally, complete anonymized vote data is published, and subject to random checks for accuracy, so the counts can be replicated by anyone.

Why is such electronic counting necessary? Well, partly because you’re voting for the entire house of representatives, so a physical user interface is somewhat prohibitive and you need electronic mechanisms of voting (this isn’t really true: You could have a ledger mapping each candidate to an ID and write the ID on a piece of paper. If it proves prohibitively difficult to build safe voting mechanisms even if the count is electronic this could be done, but it’s a much larger amount of work for voters, sensitive to handwriting and harder to count).

But more importantly is the innovation I like most about this design (other than the prerequisites for voting): There are no elections. Voting is a continuous process. You cast your vote and it remains in force until you choose to change it or are no longer eligible for the vote. You will be periodically asked to confirm that it is your vote and ask whether you’d like to change it. If a politician behaves in a way you regard as inappropriate you may immediately change your vote. Your vote always matters, because it is always in force and always subject to your control – there is no temptation to rest on your laurels and go “Ok, I’ve voted. I don’t need to do my community service now”.

When a candidate enters the top 100 another one is automatically booted out (by construction). There is a grace period for them to wrap up affairs (and possibly campaign to regain their position during that time) – otherwise there’s far too much volatility in the lower end of the House – and then their replacement comes in.

I also rather like the idea of having league tables which you can see politicians and candidates moving up and down in them according to current popularity.

There are definitely some downsides to this: The biggest one is that a candidate has a really strong incentive to only make popular decisions (which tend to be short-term gains in nature). I don’t know what to do about that. I hope the fact that the populace is better informed and that it requires at least a modicum of work to change your vote will help offset this. Also if you’re already quite high in the ranking then it’s harder to lose the vote so you’ve got more flexibility to make long-term decisions.

Edit: On discussion with Dave, an alternative and less fickle system is to have fixed terms and run annual elections for a fraction of the electorate. e.g. have everyone on a 5 year term and every year hold a vote for 20 of the candidates each year. I am undecided how I feel about this system, but it does retain some of the advantages of the above while being possibly less chaotic.

Representatives and candidates

One of the major problems with current representation is that, well, you have to be fairly rich to do it. I think this needs to be discouraged.

I think the easiest way to fix this is probably to make it easier for people who are not ridiculously wealthy to run. As such I’d like to propose the following program:

Anyone who wishes to may apply for candidacy aid. They must have 1000 signatures supporting their candidacy. They will now be paid a reasonable wage (probably hovering somewhere around population median) to campaign as a candidate. They have one year, during which they must demonstrate they are actively campaigning, to achieve some number of votes (maybe 10k?). If they achieve that they may continue on candidacy aid for as long as their vote remains above that number (possibly with some fixed maximum time period, or requiring demonstrating an annual increase).

It’s probably not enough, but it should be a good start.

Conclusion

Like I said, this is probably poorly thought out, but it contains ideas I think are good and may well be refineable into something actually worthwhile. Thoughts?