Software I actually like

Every time I say something complimentary about a piece of software people are surprised. Doesn’t David hate everything?

This is… I won’t say it’s entirely unfair. I certainly hate most software. However there is software I like! It’s even in the double digits! I think. So here is a list of some things I like.

Web based software

Gmail

Honestly… I like Gmail a lot. I don’t particularly want to, but that’s mostly for political reasons. I keep using it because genuinely every other email client seems awful in comparison.

IRCCloud

Ask Me About The Time I Used Irssi From My Phone.

What drove me to using IRCCloud in the first place was basically that: I was a long time irssi + tmux user but I was increasingly wanting to be able to IRC from my phone and the irssi phone experience is… not good. Frankly it’s surprising that it works at all. On the other hand the IRCCloud mobile experience is excellent.

But it turns out the rest of IRCCloud is also pretty excellent. There are a few missing features I’d like, and it’s kinda annoying how they have stability issues because of how some asshat regularly decides to hit them with a DDoS (asshats on the internet are why we can’t have nice things), but it’s a really pleasant experience to use when compared to anything else I’ve tried.

Disclaimer: Friends of mine work at IRCCloud and I’ve at least met most of the rest of them.

Feedbin

When Google Reader died I was sad. Then feedbin came along and was basically Google reader but better and with a great API and I was happy. That’s more or less all I have to say about it.

I also use Press for mobile support (though the mobile web app is OK). Press doesn’t quite clear the bar of software I actually like though. It’s mostly in the category of “Software which I think the world is strictly better with than without but regularly wish was about 50% better than it is”.

todoist

Todoist is however an incredibly solid piece of software. It’s got a great interface, great mobile apps and a solid API that basically did everything that I need. I mostly don’t use it very actively these days, but that’s mostly because I’m really bad at todo lists and todoist is unable to magically fix that.

Ruby libraries

Bundler

Bundler is… remarkably good at making rubygems not terrible. I mean you’re still installing the software that’s on rubygems and using ruby, so it can only go so far, but it’s impossible to remember how bad things really were before Bundler. Bundler then brings things up to honestly probably the best piece of software I’ve used for solving the problem of language and project specific dependencies.

Sequel

Given that I like SQL and hate Ruby and ORMs, it should mean something that I think Sequel is basically the most pleasant way around to interact with a database. Its ORM is probably fine – I haven’t used it much – but its query library is excellent. It’s basically a thinly disguised version of SQL in ruby, but it composes in a way that real SQL doesn’t and normalises a lot of the annoying eccentricities. Sequel is probably the top thing I miss from ruby writing Python.

Python Libraries

py.test

One of the aggravations of writing tests is finding a good middle ground between writing simple tests and writing tests with comprehensible errors. On the one extreme of the common approaches for this you have writing bare asserts and letting the programmer figure it out if it fails, on the other hand you have complicated rspec style butchery of the language.

py.test then goes “Why can’t we have both?”. Write asserts, add enough introspection to the runtime that it prints those asserts nicely for you with all the intermediate values.

On top of that, it has a really straightforward API (for most use cases it has no API at all, though the reality of it is that you still end up creating tests that are kinda annoying to use without it) and is sufficiently extensible that it has about a million plugins.

numpy

Python without numpy is a perfectly pleasant dynamic language that is really quite good for the job of futzing around with a bit of data from a database and sticking it on a web page.

Python with numpy is a credible scientific computing environment on which a vast array of other things have been built.

I mean, numpy itself is pretty great – it makes doing calculations with large arrays of data in python both a lot nicer and also a lot faster – but it’s also great because it enabled a wide array of other things.

Libraries for other languages

Databases

As far as I’m concerned there are three databases:

  1. PostgreSQL
  2. SQLite
  3. Intense suffering

All three have use cases and there’s very little overlap between them. Both of the first two are very nice, solid, pieces of software that are extremely well suited for their problem domain. Most of the instances of the third are not, but sometimes you need something that you can’t get the others to do.

(Note: If you are trying to decide which of the three to use in any circumstance you are probably doing something wrong. There is almost no overlap between the use cases for SQLite and PostgreSQL. If there’s any ambiguity as to whether you should choose intense suffering you probably shouldn’t).

Misc

SSH

The world is tied together with SSH. I’m not saying it doesn’t have its problems, but somehow I basically don’t run into them. Given that I’m a bug magnet and the amount of hours I’ve spent using it, this is surprising.

Mosh

It’s SSH, but with slightly questionable but probably sound security properties! And working astonishingly well in high latency environments.

When I’m doing a significant amount of development in a remote VM I really want to be doing it in Mosh. The combination of it and tmux basically makes unreliable laggy connections just not a problem (Ask Me About The Time When I Did All My Development In A Remote VM And My Laptop Wifi Broke When People Used The Microwave) I tend not to unless it’s over a VPN / internal network because I’m a little suspicious of it but honestly it’s probably fine.

i3

It’s no secret that I live in what a friend has described as “a very 70s vision of the future”. I like my tiling window managers. i3 is the latest in a long line that I’ve used and it’s really very nice – it has a pleasant to use config system, a good RPC interface (I was using wmii before and please don’t make me use plan 9 file systems again) and generally feels like a nice baby step in the direction of a modern desktop and programming environment from wmii.

jq

jq bills itself as sed for JSON. That’s pretty accurate. It’s an interesting little single serving language that centers around operating on streams of JSON objects. It’s a little weird in places, but that’s mostly because it’s so single focus.

I do wish it had bignum support though. There’s a decent chance that one of these days I’m just going to sit down with a coffee IV and not stop coding until I’ve added it.

GNU sort

The most specific item on this list. GNU sort is really nice. It does a bit too much, but even if all it did was take lines and sort them in C locale order it would be pretty great: When you want to process data that’s larger than you can fit in memory but small enough you can feasibly fit it in under half a single disk, you might want to consider using GNU sort plus a little bit of awk instead of your complicated Hadoop based data processing pipeline.

Quickcheck, Scalacheck and family

This should come as no surprise.

Actually I’ve used Quickcheck itself relatively rarely. I’ve used Scalacheck a lot more, which is in the rare category of being an actually good port of Quickcheck. Even if you’re not using Scala, if you’re writing code for the JVM you should strongly consider testing it in Scalacheck.

VLC

VLC is the one true video player. All others are pale imitations.

VLC is the sort of software that has slightly more buttons than you really wanted, but you can imagine that there are probably some good use cases for them and tolerate because all the buttons you do want are there. It’s also just really solid in terms of range of formats supported (though I’ve recently struggled to get it to work with 3D).

It also probably ties with SSH as the item on this list I’ve been using for the longest. It might even be longer – I think I even used VLC back in the days when I was running Windows and hadn’t heard of this SSH thing.

Others

There’s a general concept that sysadmins are people who you only notice them doing their jobs if they’re not doing it well.

I think there’s probably a lot of software like that. Software that I use all the time that I just don’t notice because it never breaks, but if it did I would be noticing all the time.

As a result, this list is probably intrinsically biased to software which is atypically good for its problem domain – software where I have tried alternatives and found them painful.

This suggests that my main criterion for liking software might be “It makes this terrible thing less terrible”. Perhaps this post hasn’t been as good at refuting the image of my hating everything as I intended it to be.

This entry was posted in Uncategorized on by .

Commodity futures trading! In space!

Advance warning: Once again I tease you with ideas that I will never implement.

I basically don’t allow myself to write computer games. It’s in the category of things I could probably do well but don’t consider would be a good return on the effort it would require me to invest in it (obviously your priorities and skills may be different than mine so this will be different for different people). This doesn’t stop me occasionally pondering ideas for them though.

One off the ideas that I keep coming back to which I find really tempting as a concept is a 4X game in a realistic gravity simulation of a solar system.

To be clear: I think this is actually a terrible idea. It’s really hard to implement, and I think most of the things that make it hard to implement would also make it annoying to play (pathfinding in a gravity well is a super hard problem).

But recently this concept butted into a few other concepts that had been bouncing around in my head and I’ve come up with a game concept I actually quite like. I’m not sure if it’s good, but it’s fairly elegant and it sounds like it might be fun.


The inner system is a place of wonder! A civilization of light and splendour! Trillions of people living in the lap of luxury. The secret of immortality is theirs, all the space they could ever want on the orbital habitats! Endless bounty and machines which serve their every whim!

Unfortunately, you’re not in the inner system. You’re stuck out here in the dark. On this rock.

The thing about that wondrous inner system civilization is that it takes a lot of raw materials to fuel. Most of those are mined from asteroids, like the one you and your team have set up a mining camp on. You’ve been planted here with an autofab, a basic mass driver and catcher setup, and a honking pile of debt. You need to pay off that debt and earn the extra million solar credits required to buy yourselves citizenship before you get too old for the rejuve process to work.

It’s cool though. This asteroid you’re on is resource rich.

Of course, with your current gear it will take you approximately three thousand years to mine enough of it to pay off your citizenship. I guess you’ll just have to buy some more mining gear.

I’m sorry, it costs how much?


The concept of the game is simple: You have an asteroid full of resources which you can mine at a certain rate. You can sell these resources to the inner system by firing them out of your mass driver. They will pay you money. Once you make enough money you win.

But there’s a catch: Your infrastructure is horribly underpowered to make enough money in the time frame you need, and if you buy the new fancy infrastructure that you need to mine at a sensible rate you’ll be so far in debt that you’ll never pay it off. It’s almost like it’s an exploitative system designed to keep you constantly working for the benefit of others.

Fortunately you have this autofactory you can use to improve your infrastructure.

Unfortunately that new mining drill you need requires tungsten, and you’re flat out of tungsten. The inner system will of course sell you tungsten for a, uh, modest fee.

But that other asteroid mining colony over there turns out to have a surplus of tungsten. They’d probably sell it to you for a lot less…


 

The mechanics of the game are as follows:

There are a large number of different resources (energy, iron, water, carbon, tungsten, etc). All of these are available to buy from or sell to the inner systems. Generally speaking they will sell to you at about ten times the price they will buy it for (with energy being the only exception. They’ve got a sun right there. Energy is the one thing they’re not short of).

Your asteroid will produce a variety of these depending on its composition and your infrastructure. Some will be produced straight from the asteroid, some require other things – e.g. you might produce oxygen and hydrogen from water, or processed silicon from sand.

You can sell them directly to the inner systems, but you can also put quantities of them up as being available at a certain price. Other asteroid mines can them buy them from you.

So far so basic commodities trading. The difficulty comes from the fact that moving things between orbits isn’t free, or fast.

Each asteroid has two important pieces of cargo transfer infrastructure: A mass driver and a mass catcher.

A mass driver lets you transfer cargo at a certain relative velocity. A mass catcher lets you catch any packets that come sufficiently close to you. Naturally both can be upgraded to increase speed and range.

So in order to send cargo to another asteroid you need to fire it in a way that gets it sufficiently close to that asteroid. The computer will work out all the details for you, but you still have to consider the transit time. Sometimes it will be faster to go via other asteroids, though they will of course charge you a fee.

This is the first part of why this is basically a futures trading game: At any given point the commodities you’re purchasing are really commodities being delivered to you at some significantly later point in time.

Importantly, because you’re all on different orbits with different periods and eccentricities, the distances between asteroids is changing constantly. That asteroid that is currently your neighbour might not be your neighbour again for another three years. Better pick up on that surplus while you’re here because it will become harder and harder to find.

Getting things to and from the inner system is a lot easier. You just have to get them inside the 1 AU orbit. Similarly things sold to you from the inner system will be fired at high speed from the nearest convenient point on that orbit, so will generally arrive quite soon. You may be getting ripped off this way, but at least you’re getting conveniently ripped off.


The original conception of this game was much more complicated (there was all sorts of stuff about population dynamics, research, etc) but I find the pared down version quite appealing.

One of the things I like about it is that there are a bunch of different available strategies: You can do the industry power house thing, but you can also just pump a lot of resources into your mass driver and catcher and act as a clearing house for the rest of the system – if it will cut half of the travel time off shipping their cargo, people will generally be willing to pay your fee. Even without that you can still play the trading game – if your orbit crosses two other asteroids with mutually beneficial surpluses then you can assist them by buying from each and selling to the other at only a modest markup.

You’re very much all in this together against the exploitative inner system, so you might as well help each other out as you trade. At least, you are as long as you ignore the fact that the peak economic output of a single asteroid is still not enough to afford citizenship in any reasonable amount of time.

Maybe you don’t want to be too generous to your neighbours after all.

 

 

This entry was posted in Uncategorized on by .

The beginning of a novel that I’ll doubtless never write

Advance warning: This post is fiction. I had a fun idea and I needed to make word count, so I thought I’d write it up. However it’s not short fiction. It’s just a fragment of a larger story that will probably never get finished.

Other advance warning: Note that I’m not actually very good at writing fiction. In particular dialogue is not a skill I’ve ever been good at and some of the conversation in this piece really shows that. This is somewhere between an exposition dump and a first draft level of quality.


I’ve always wanted to be a wizard.

I think part of it is that I grew up in a library. My parents are scholars, and it always felt like this was basically like being wizards but worse. They had the silly robes, the books, the slightly distracted look, they just didn’t have the power.

I really wanted the power. I wanted to make a difference.

Which is why every year since I turned twelve I turned up for the testing.

If you’ve never been to a testing: They sit you down in front of a crystal ball, you have about a minute to stare at it and try to make it glow. If you’re wizard material it looks like staring at a bright flame. Most people can barely manage a glimmer.

I thought I managed a glimmer once, but it was just reflected sunlight. The rest of the time the crystal just sat there completely dead, taunting me.

Every time I hoped it would be different. Maybe it was just taking a long time to manifest? It does with some people. It was never different.

And then it was.

It was the last chance I had – after you’re 18 they won’t test you – but for once I wasn’t nervous. Some time, about six months ago, I woke up and the world looked different – sharper, brighter, and as if everything was suffused with a gentle glow. Since then the struggle has been to not cast spells. Kettles have boiled before I put them on the stove, the object I was searching for came flying to my hands, and countless other small incidents. I wanted something to happen, and then it happened.

When I sat down in front of the crystal I did feel a little nervous. I knew this time would be different, but what if it wasn’t?

I needn’t have worried. The crystal blazed like the sun. I was going to be a wizard.


The testing is only the beginning of course. After that they whisk you away to the college and put you through the wringer. They invade your mind – making sure you’re not a spy, that your intentions are good, and that you have a personality they think they can trust with magic. Most people make it through this stage, but a good quarter of people who pass testing just quietly disappear.

This stage had me rather more nervous. With good reason as it turned out, though in the end I made it through without a problem.

At the end of the day I had a set of apprentice robes, a room of my own (hardly more than space for a bed and a cupboard, but it sufficed) and the most complete sense of exhaustion I had ever experienced in my life.

I lay down on the bed and passed out almost immediately. But first, a single thought crossed my mind: Well that went about as well as we could possibly have hoped for.

And then I slept, and I remembered.


 

Six months ago I’d woken up to find a strange man in my room. Naturally, I shrieked. Who wouldn’t?

Then I noticed the robes and the rings. The man was obviously a wizard. My concern immediately turned to excitement. Was he here to tell me it had all been a mistake? That I had some sort of secret power the testing couldn’t have picked up and that he wanted to take me as his apprentice?

Then it turned back to concern. A lot of wizards are… not nice people, and the fact that the strange man who appeared in your bedroom in the middle of the night has power beyond your imagining and is basically untouchable by all earthly recourse is not actually a reassuring thought when you think about it.

“Don’t worry, Asha, I’m not here to hurt you”. He smiled in a way that someone who didn’t really know how to give a reassuring smile might do when they wanted to do so anyway. It did not entirely achieve its aims.

“I am Kelmir, and I’m here to offer you a deal. First I must know: Do you know how to accept a wizard’s oath?”

I nodded wordlessly. My parent had made sure of it – between my interest in magic and our proximity to the college they thought it was important I learned all the arcane etiquette.

“Very well”.

He took a ring off his finger, placed it in the palm of his hand and reached it out to me. I clasped his hand and felt the magic take hold.

“I am Kelmir, a mage of the collegium. As witnessed here, I swear by my life, my soul and my magic that all words I shall speak no lies to Asha, either by commission or omission. I shall tell him everything I think he needs to know and answer all his questions without reserve. If he does not agree to the terms I offer I shall wipe his memory of this entire event, but I shall not otherwise cast any spells upon him or offer harm to those he cares about without his complete and uncoerced consent. I am bound by these words”.

There was a glow around him as he said the final words, the ring grew hot in between our hands, and I felt a complete certainty that all of this was true.

If I was concerned before, now I was terrified. I’m sure a binding oath to cause no harm should be reassuring but I couldn’t imagine any circumstances which required something of that magnitude. I probably looked like I was about to pass out. Kelmir either didn’t notice or decided the best cure was to press on.

“First I must tell you one important thing: The wizard oath when offered to a non wizard may as well be a lie. If you had training and power it would be impossible to fake, but to someone such as yourself it would if anything be easier for me to create an illusion of the oath than to offer a true one. However I have actually offered you a true oath, which compels me to say this.”

I blinked.

“Uh. Is that supposed to make me trust you more or less?”

He grimaced. “To be honest I wasn’t planning to tell you that at all, but once the oath took hold I realised it would be a lie of omission not to tell you”.

That actually helped.

“The second thing I must tell you is that I believe you to be completely without magic and your dream of becoming a wizard is a futile one without my assistance. May I cast a spell on you to find out?”

Being told that felt like being punched in the gut. I had already known it was probably true, but I hadn’t wanted to admit it and resented being told. I nodded.

“I’m afraid you’re going to have to be more explicit than that”

I swallowed. “I give you my explicit consent to cast a spell on me to determine if I have the potential to be a wizard”.

He put his hand on my head and I briefly saw double. He withdrew it, and the world returned to normal.

“It’s as I thought. No magic at all. As things stand, you can never be a wizard”

“As… as things stand?”

“I’m here to offer you a way, but it comes at a price”
“I accept”

He grimaced.

“No you don’t. I need you to understand the way the world works first. You have to understand what it is I’m trying to do here, and you have to agree to my goals with that full understanding. This can’t work any other way”

“I don’t care what you’re asking for. I’ve always wanted to be a Wizard. I’ll do anything”

He gave me a searching look and nodded decisively.

“Alright then”.

My heart leapt.

“The first thing we have to do is kill your parents”

I froze.

“I… uh. I guess I was wrong. I don’t want to be a wizard that much”.

“Good. This would have been a very short conversation if you had. Now stop being an idiot and listen to what I have to say before you agree to anything.”

I put on my best contrite expression.

“Now. How many wizards do you think there are in the college?”

“I don’t know. Maybe a few hundred?”

“Yes, that’s about right. Now, why are there so few?”

“Well, hardly anyone has magic. Less than one in a hundred I guess? And there aren’t more than twenty thousand people near here, so that sounds about right?”

“And why are there only twenty thousand people near here?”

“Well, how could we feed much more than that? We get famines occasionally as it is! Also the last plague killed a lot of us. I think maybe there were more like 30,000 back then?”

“And why are there plagues and famines?”

I was getting increasingly confused by this line of questioning.

“I don’t really know? The priests say the gods send them to punish us, my parents say it’s just the natural order of things”

“And do you know of anyone who is able to change the natural order of things?”

That gave me pause. Of course I’d fantasised about making things better when I was a wizard, but somehow I’d never made the connection that there were all these wizards already and they weren’t actually doing anything to make things better.

“OK. I get it. So, tell me. Why don’t wizards prevent the famines and the plagues?”

“It’s really very simple: We don’t prevent the famines and the plagues because we want there to be famines and plagues”.

I’m not sure how long I sat there completely poleaxed, but eventually he figured I wasn’t going to be able to ask an intelligible question and continued.

“As far as the college is concerned, the status quo is pretty near perfect. We have a stable world in which we’re at the top. Why should we try to change that? If there were more people, the balance of power might shift, and if there were more wizards then each individual wizard would be less powerful because there would be more of us to split the power amongst. So we keep the world as it is: Every generation we get more powerful and the rest of you stay the same.”

“That’s… that’s monstrous”

“I quite agree. Which is why I want to you to help me change it”

“What can I do? You just said I have no magic”

“A wizard can pass on their magic before they die. Normally this is spread amongst a small number of their successors, which is how we accumulate power. I propose to pass it on to you instead.”

“Why me? What’s the catch?”

“Why you is because you are idealistic enough that I believe you will share my goals, and desperate enough that I believe you will accept the, as you put it, catch. My power will come alone: I will also be giving you my mind. At first I will be there as a voice in your head, but over time I think it likely that we will start to share thoughts and memories, and eventually we will become one person.”

“So I won’t be me any more?”

“Think of it as just a more extreme form of how you’ll change over time anyway. I think we are compatible enough that you won’t find the changes too objectionable”.

We talked for a lot longer than that, but the outcome was never in doubt. I accepted his life, and his magic, and then he showed me how to bury the memories so deeply that the tests at the school would never find them.


I woke up the morning after the tests feeling refreshed. The memory blocks were gone, and I knew exactly where we were and who we were.

Do you remember the plan? Kelmir asked me.

Oh yes. I remembered the plan rather well. Play the part of a powerful, intelligent, but very inexperienced student. Make alliances with anyone who could be persuaded that change was essential, or at least persuaded to acquiesce to it. Deal with the rest. If necessarily, permanently.


 

So that’s it for now. As mentioned I will probably never actually write more on this. We’ll see.

As you can probably tell this is a thinly veiled analogue about entrenched capital, and it doesn’t even attempt to veil that it’s about how shit being in a feudal society is, it’s just that there are wizards instead of lords.

Essentially this is mostly a reaction to the fact that I enjoy wizard school books but find their politics almost uniformly terrible.

 

This entry was posted in Fiction on by .

How to stop Hipchat beeping at you.

Due to reasons, I’ve been hanging out in a Hipchat channel as a guest recently.

It’s not the greatest of software in the world, but it’s mostly not terrible. Except for in one respect.

Someone suggested two years ago that maybe us guests would like to be able to turn off the intensely annoying beep that you get on every message (I really really hate software that makes noises at me). So far Hipchat have not bothered to implement this.

I’d previously been using the following javascript in the console to pick up the slack:

util.prefs.set_pref('disable_sounds',true)
util.prefs.save_preferences()

For some reason this has stopped working today. I don’t know why. Some further poking around in the internals has given me the following better invocation:

soundManager.muteAll()

This seems to still work.

I’d make some disparaging comment about having to work around other developers’ mistakes at this point, but with UX this bad it feels practically redundant.

This entry was posted in Uncategorized on by .

Triangular Beeminding; Or, Drink Less, Using the Power of Triangles

This is a crosspost of a guest post I’ve written for the Beeminder blog.

One of my vices is that I drink a bit too much. Not to the level where I have a problem, but it would be strictly better if I cut out about 2 or 3 of the drinks I have in a typical week. This seems like an obvious use case for Beeminder.

I’ve previously beeminded units of alcohol consumption and concluded that, measured as a total number of units per week, I’m completely fine. The recommended maximum intake for an adult male is somewhere in the region of 20 – 25 units per week depending on who you ask. When I was beeminding this regularly I never had trouble keeping under 12 units. I drink a bit more than that now, but nowhere close to twice as much.

So if I’m that far under the recommended guideline why do I think I drink too much?

Well, the low average is because I actually have a lot of nights of any given week where I don’t drink at all. The problem is that on nights that I do drink I often have a drink or two more than I should. I make tasty cocktails, and if I’ve just had a cocktail I really liked then making another one sounds like an excellent idea. By the third drink of the evening I will usually discover the next day that it wasn’t such an excellent idea.

So what I need is a Beeminder goal that matches the structure of the behaviour I want to change: I need a way to beemind the peaks as well as the averages. A week with two three-drink nights should “cost” more than a week with a single drink every night.

I’ve come up with what seems like a good structure for this.

The idea is to assign each drink [1] a number of points. The first drink in a day costs one point, the second two, the third three, and so on. Because these add up, this means that a day with one drink costs one point, a day with two drinks costs three, a day with three drinks costs six. It mounts up pretty quickly. These running totals are called triangle numbers, hence the title of this post.

To start with I’ve capped the total number of points at 15/week. This is a deliberately lax starting rate which equates to a maximum of 11 drinks in a week (3 days with 1 drink and 4 with 2). Since the drinks I tend to have are two units this is about at the recommended maximum. Note that I can hit the limit while drinking less than that: If I have more than two drinks on any night, the extra points mean I’m forced [2] to reduce the total for the rest of the week to compensate.

Example permitted maximum drinking patterns:

  1. 4 days with 2 drinks and 3 days with 1 (11 drinks)
  2. 1 day with 3 drinks, 1 day with 2 drinks, 5 with 1 (10 drinks)
  3. 2 days with 3 drinks, 3 days with 1 drink, 2 days alcohol free (9 drinks)
  4. 1 day with 4 drinks, 1 day with 2 drinks, 2 days with 1 drink (9 drinks)
  5. 1 day with 5 drinks (!) and no drinking the rest of the week (5 drinks)

Note that 3 days with 3 drinks is not permitted even with the remaining rest of the week free: That would be 18 points which would take me over the threshold [3].

I was originally planning to track this manually, but then Danny got so excited by the concept that he added a feature for it, so it’s easy to give this a try yourself:

  1. Go to “Terrifyingly advanced settings”
  2. Convert your goal to a custom goal (this requires a premium plan).
  3. Switch the aggregation mode to “Triangle”

Best to apply this to a fresh goal. This stuff can easily screw up your goal if you’re not careful, so don’t do it to one with data you care about. [4]

If you want to track it manually instead, just enter the numbers yourself: 1 for the first drink, 2 for the second, and so on [5]. A standard Do Less goal will sum those up, yielding the triangular numbers.

So far this is experimental. I’ve only been running this for a few days, so it may turn out to be a silly idea in the long run. I don’t think it will though. I’m quite pleased with the incentive structure it sets up, and the effect so far has definitely been to make me think more carefully about the later drinks. I’ll add a follow up comment to this post in a month or so when I’ve had time to see how it works.

 

Footnotes

[1] Drinks, not units of alcohol. I try to keep my Beeminder goals based on things I don’t need to estimate or measure. Especially if I have to estimate them after a few drinks. Most of my drinks are approximately two units as I tend to drink cocktails or spirits.

[2] Well, “forced”. I have this goal set up so that it’s OK to fail occasionally. I’ve got a pledge cap of $10 set, so the worst case scenario is that my drinks suddenly become a bit more expensive. This is coupled with a no-mercy recommit: If I decided last night that I was OK derailing, I’m not off the hook today. This is based on a concept from Bethany Griswold about using Beeminder to make free things not free. The Bethany better known in these parts makes a related point in “Be Nice To Yourself”.

[3] Normally this wouldn’t be quite true because I could build up buffer from week to week if I wasn’t drinking much, but I’ve got this goal set to auto-ratchet so I can’t actually do that. If I build up more than a week of buffer it cuts back down to a week. Another terrifyingly advanced premium feature, available with Plan Bee.

[4] Danny here: But we’re excited about people trying this so actually please do feel free to experiment and holler at [email protected] if you break something and we’ll fix it!

[5] Danny doesn’t like this because it breaks the “Quantified Self First” principle. The numbers that you enter this way don’t correspond directly to something you want to measure. [6] Personally I’m much more interested in behaviour change than QS, so I don’t have a problem with it.

[6] Danny again: Actually, QS is more about measuring real-world things. With the triangle aggregation, we’ve got the best of both worlds. We get a true count of the number of drinks (real-world measure) and we get a goal-friendly aggregation for beeminding. You can export the data and do something else with it or change the aggregation function back to normal summing if you want to go back to beeminding total amount of alcohol consumed.

This entry was posted in Uncategorized on by .