My girlfriendâs mum has a cottage where thereâs no phone reception or internet. I want to grab four friends, a wireless router and a Linux box and drive up there for the weekend. Weâll create our own little one-off internet, which weâll rm -rf before we drive home. âCybermanâ.
If we want to have a chat room, weâll have to roll our own client and server. Same goes for games. I've always wanted to build a MUD. And I'd have four avid beta testers. Or maybe a multiplayer roguelike.
We can download docs and basic tools beforehand, and the box will have sshd / git / vim / Ruby / Go / Python / C / JVM / etc. We can bring PDFs of guides to UNIX networking.
We canât bring MP3s or physical instruments, but weâll make sure someone learns Overtone before we drive up. We can share code via a local git server.
Weâll reinvent the internet together and burn it all down in the space of a weekend. It will be glorious.
Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
â Live Streamingâ Interactive Chatâ Private Showsâ HD Quality
Anya is LIVE right now
FREE
Free to watch ⢠No registration required ⢠HD streaming
In December I wrote 750 words in a diary every single day. In January I tried vegetarianism. This month I traded my smartphone in for an old Nokia, and locked my MacBook in a drawer at work.
The idea is to keep all other variables (or as many as possible) constant while I tweak one and see the difference it makes. And so I can really know that I've given the habit a real try, a real chance to see if it will stick and if it makes my life better.
This is compared to me six months ago, when I tried to implement polyphasic sleeping, intermittent fasting, intense spaced-repetition training and a grueling weightlifting regime all in one go.
So far I've kept vegetarianism and dropped journalling. The no-internet one is going great. Future experiments will include only eating food cooked in my home kitchen, and meditating for a long time every day.
It's a slower method, but a more scientific one. I'll post results as I have them.
It'd be really nice if I could have measurable outcomes, formulate hypotheses and compare those to the results at the end of the month. But the habits required to track properly might have to be an experiment in its own right.
Worm is a superhero story. It will make you realise how dumb most of the genre is â not by parodying it, but by doing it right for once. Eliezer (author of the incredible HPMOR) recommended it in his most recent chapter notes. Here's what he said:
The characters in Worm use their powers so intelligently I didnât even notice until something like the 10th volume that the alleged geniuses were behaving like actual geniuses and that the flying bricks who would be the primary protagonists and villains of lesser tales were properly playing second fiddle to characters with cognitive, informational, or probability-based powers.
After the first couple of shaky chapters, I wasn't sure. But I stuck with it, and now I totally agree. I also can't put it down. It's dangerous â it's consuming my free time. But I'm very glad it exists. I just wish it was available on my Kindle so I didn't have to read it on my phone / screen.
It was only when I started coding professionally that I encountered complex, messy codebases. I worked at a design studio in London, and they'd want some new piece of functionality quick smart so they could please their clients and make easy money (maintenance is super lucrative, because no one wants to do it).
I'd get pointed at a big ball of mud, and the only five guys who'd ever touched the codebase would be long gone. On top of that, I was fresh out of a computer science degree â from the kind of ivory tower institution that doesn't like to get its hands dirty with real world problems. So I'd complain that I was bored, and no one would listen. They'd say, âHey, everyone has to start somewhere. Just work your way up the ladder until you're working on more interesting things.â
I knew I could never be one of those people who put in time doing drudge work to earn the respect of older people. So I quit and went in search of more interesting work. But wherever I went, I'd find the same messes, the same complexities â even when I was the one who'd built the codebase from scratch!
Flow theory (a widely-used, scientifically-validated model of performance) states that you're bored when you're taking on tasks that are too easy. I know now that when I was a junior developer trying to single-handedly reign in a big, ugly codebase, I wasn't bored. I was anxious, frustrated, and annoyed â but there's no way my ego would let me admit it. âI'm smart! I have a fancy computer science degree! This is work for idiots â that's why I'm not having fun right now.â
But it's actually that the learning curve was too steep, and no one was holding my hand. After all, if the work had been be too easy, I would've automated it. I'm a programmer, right? That's what we do â make the computer do boring things that no one else wants to do.
So it was lucky that I soon after bumped into a master â a guy with decades of experience, degrees from Oxford and Berkeley, and true passion for what he did. It just so happened that he was looking for an apprentice, and we spent every day for the next six months pairing. I absorbed some of his hard-won wisdom, and he was energised by my enthusiasm and optimism (and got to spend more time thinking about architecture and design while I focused on the stuff that wasn't worth his time).
The best thing about it was learning that I still had a lot to learn â that there are established practices and techniques for dealing with the inevitable incidental complexity that makes our lives as software engineers difficult. There are books and blogs, but the best way is to find someone better than you and form a symbiotic relationship.
It takes a lot of humility to admit that you don't already know everything. But it's the only way you're ever going to get better, and the only way you're ever going to enjoy yourself while tackling difficult problems.
âOperations of thought are like cavalry charges in a battle â they are strictly limited in number, they require fresh horses, and must only be made at decisive moments.â Alfred North Whitehead
Modern neuroscience backs up Mr Whitehead's intuitions: we have finite cognitive resources. Every choice we make depletes them. I try to minimise unnecessary decisions, so I can concentrate on what matters.
One way I do this is using pomodoros. I set a timer for twenty-five minutes, blast white noise through my headphones and turn off all notifications. Then I focus on doing one thing (e.g. coding, working through my todo list, answering emails, writing documentation). When the timer goes off, I take a five minute break to chat with coworkers, stretch, check notifications, etc. Then I decide what to do next.
Before I started doing this, I'd have a background process that was constantly asking:
what's the time?
is it time to stop focussing?
am I working on the right thing?
should I check my emails now?
Answering those questions distracted me from the task at hand, and reduced my precious, finite supply of daily willpower. But they were necessary: if I didn't ask them, I could work on one silly thing for a whole day without stopping.
But I don't get asked them anymore. After having its interrupt signals ignored for so long, that noisy background task has learnt to shut down until I pay attention to it in my five minute break. And it only works because I have a system where I can trust that those questions will get answered in a timely fashion.
I've been doing it for years, and I don't want to stop.
Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
â Live Streamingâ Interactive Chatâ Private Showsâ HD Quality
Anya is LIVE right now
FREE
Free to watch ⢠No registration required ⢠HD streaming
Spending more time in flow tends to makes you happier and more productive. But most of us don't attempt to measure the proportion of time we spend in flow, let alone experiment with ways to increase it. So I'm going to start tracking today, with a simple spreadsheet that records:
when my pom started
level of challenge
level of interest
level of "reward"
my flow score from 1 to 10
if I was standing or sitting
any notes or observations
I've pledged $30 to this Beeminder to make it more likely that I'll keep it up.
(The only academic work I could find on this is a paper by Mark Zarb, a PhD student in Scotland. It's behind a paywall, but I've emailed him asking for a copy.)
A service for getting feedback on your programming workflow
One of the best things about pairing is when your partner says âWhy are you doing that? Haven't you heard of X?â where X is:
a Sublime Text plugin
a zsh snippet
some fancy git technique
a more-appropriate method (like Array#each_with_object)
And it's not just micro-optimisations around tooling â I've gotten feedback on how and when I write tests, what to include in commits, when to refactor, and even how I take breaks.
But why are we limiting that advice to the few people who are a) nearby and b) interested enough in your growth to help you for free?
I want to capture an hour-long video of my screen while I code and send it off to someone to tell me how I could be doing things better. I'm going to try it out this week. I'll tell you how it goes (and maybe even post my videoâŚ).
(Got the idea after Kottke linked linked to A.J. Jacobs's article about getting instant advice on everything you do via Google Glass.)
I've got a long way to go, but here are the habits I've managed to form over the last six months:
Spaced repetition
Journalling (using 750words)
Waking up every morning at 6am
Lifting weights thrice a week
Ketogenic, gluten-free diet
Meditation
Intermittent fasting
Vitamin D in the morning, melatonin at night
Tracking macronutrients and calories
Having at least two meaningful conversations a day
Each of these could be its own blog post, but for now I'll just point to the resources I used to decide on and pursue them.
I found Luke's articles on Less Wrong (âHow To Be Happyâ and âHow to Beat Procrastinationâ) to be immensely useful, along with Gwern's record of relentless self-experimentation.
Alicorn's posts on luminosity inspired me to become more self-aware, and Divia's âwalkthroughâ helped me internalise practical ways of doing so.
I use HabitRPG and Beeminder to keep myself motivated.
The initial desire for improved health and fitness came from seeing countless tangible examples on the Something Awful forums.
The people in the Melbourne Less Wrong community have been awesome, and help keep me honest, enthused and on my toes.
I feel like I'm finally starting to build a solid foundation on which I can consistently, effectively do awesome things.
Every employee shares the same purpose, and cares about it deeply. Explicit, company-wide goals stem from that purpose, and anyone can point to their work and say âthis advances X goal because Y.â
Decision-making is scientific. Emails and meetings feature hard numbers, alongside honest appraisals of feelings and intuitions. Everyone asks âwhy?â and âhow?â until they're satisfied.
Despite the common purpose, it's not a monoculture. There are systems that guard against it becoming staffed only by white, affluent, twenty-something males.
Employees are trusted to take appropriate time to discover, experiment with and share new techniques. Managers help their underlings grow.
When someone proposes an idea, they're either empowered to implement it, or shown the missteps in their thinking.
Hiring standards are rigorous, so everyone is passionate, friendly, talented and trustworthy.
The higher-ups take tangible steps to keep the business relevant in five years.
Bethany and her husband âpay each other to put the kids to bed and whatnot.â They keep their finances separate, and have mini-auctions to settle conflicts about chores:
We donât actually care much about the payments, though those are necessary for the auction to work. We care about making sure that he comes to the Buffy sing-along if and only if my value for his company exceeds his value for staying home. The payments are simply what keep us honest in assessing that.
(Bethany and Danny run Beeminder, one of my favourite startups.)
Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
â Live Streamingâ Interactive Chatâ Private Showsâ HD Quality
Anya is LIVE right now
FREE
Free to watch ⢠No registration required ⢠HD streaming
Diploâs and Ultrasaurus can now Auto-Plant trees. And BECAREFUL⌠if you a dinosaur auto-planting meets someone auto-gathering⌠they will get stuck in a plant/gather loop and you will spend ALL your Food and Wood constantly planting trees.
How China brainwashed American POWs using a classic sales technique
Humans will do anything to keep a consistent self-image. Just ask the American POWs held by the Chinese during the Korean war.
On their return to the USA they underwent extensive psychiatric and medical evaluation. The Chinese camps treated them well â much better than the North Korean ones â so they came back healthy.
But compared to the POWs in North Korea, their beliefs had changed massively since they'd left home. Most of them now thought that America had not only been the aggressor, but used germ warfare. Many agreed that the Communists had âdone a fine job in China.â
They also collaborated. âWhen an escape did occur,â wrote one of the investigators, âthe Chinese usually recovered the man easily by offering a bag of rice to anyone offering to turn him in.â This was extremely rare in German and Japanese prison camps.
âPrisoners were frequently asked to make statements so mildly anti-American or pro-Communist as to seem inconsequential (e.g. âThe United States is not perfect.â). But once these minor requests were complied with, the men found themselves pushed to submit to related yet more substantive requests.â
It's called the foot-in-the-door technique. They were asked to be more specific about America's problems, and to write out a list. Slowly but surely they'd be asked to sign their name to the statements, join in a discussion group, and enter an essay competition. And they found it hard to refuse, despite not being threatened.
After we've committed to something, even trivially, we start to support it. We have a need to think of ourselves as being consistent in our thoughts and actions. If our behaviour shows one thing and our beliefs another, one of them has got to change. And it's a lot easier to turn our back on ephemeral thoughts than a signed statement.
Cialdini summarises the contributing factors:
âCommitments are most effective in changing a person's self-image and future behaviour when they are active, public and effortful.â
Active means they felt the decision was theirs. The Chinese didn't threaten violence, but would instead ask nicely, hold essay competitions with very small prizes, and let slightly pro-Communist letters go through censorship. The POWs didn't feel like they could say âthey made me do itâ to explain away their actions.
As for public, the camp guards diligently post signed statements around the camp, or read essays out over the loudspeakers. And writing out full essays is definitely effortful.
According to one of the chief US investigators, âonly a few men were able to avoid collaboration altogether.â Shocking, right? Imagine how the investigators must have felt in the 50s, before we knew the science behind it.
It seems like the only way to resist this is to keep the facts in mind when being asked to do things. You'd be surprised at how often this technique gets used in sales without your realising it.
My advice: read Influence (I'm not taking a cut, I promise).
If You're Not Testing Headlessly You're Pretty Dumb
All the cool kids write tests for their code before it gets shipped. But unless youâve got two PhDs in Category Theory and a love for Haskell, you canât prove that your system is going to play nicely with the real world.
You could ask a friend to poke around on your website and try to break stuff. But this is slow, and I donât have any friends.
I simulate them with computer code instead.
We can make a web browser follow a simple script, like this:
Go to homepage
Sign up
âPokeâ all attractive users
Delete account forever
And along the way ask questions like:
a) is the sign up button even there?!
b) has a new user been created, with the right details?
c) did all the attractive people get poked?
d) why am I so lonely?
e) Are we still sending emails to that user, even after he said âdelete account foreverâ?
Doing this in a real browser helps us feel a little more sure that weâre not breaking everything for everyone ever.
And we can run this same script with myriad variations that better model the chaotic real world: long middle names, users âpokingâ on their Blackberries, San Franciscans typing essays on gender theory into the M / F part of the sign up form, etc.
Well this is joyous news. Except that waiting for a browser to sign up a hundred effing users is boring. And if somethingâs boring, we wonât do it, and if we donât test, then users canât poke, and werenât we put on this planet to create engaging online experiences for the kinds of people who click on ads? Guys?
Scripting Firefox is slow because a) it actually renders all those hundreds of sign up forms and b) Firefox comes with a bunch of inessential gunk like extensions and password managers and what, like, four different virtual machines now?
But thereâs a better way. A way that strips out the gunk and leaves the sweet, sweet goo of JS and the DOM. It runs on the command line, and it runs super-duper fast. Some people call it headless browser testing. I call it the red pill. Wake up, Neo. Just like in the 1999 sci-fi-comedy âMatrixâ.
So if you want to be part of this extremely minor revolution, check out PhantomJS. Then, when you get tired of writing boilerplate, check out CasperJS. Oh, and write your tests in CoffeeScript, you loveable buffoon.
Along with reading the Joy of Clojure and building toy Pedestal apps, I've been working through the exercises on 4Clojure. Each problem builds on the skills gained in the previous one, and you get to see the best solutions after you've submitted yours.
Occasionally I get the most elegant solution right off the bat. Most of the time I'm humbled. Sometimes I'm downright embarrassed:
https://gist.github.com/5647270
This is one of the things I love about Clojure: if your code looks ugly, you're probably looking at the problem wrong.
Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
â Live Streamingâ Interactive Chatâ Private Showsâ HD Quality
Anya is LIVE right now
FREE
Free to watch ⢠No registration required ⢠HD streaming
To learn Chinese faster I've been reading their books, listening to their music and following Kevin Rudd on Weibo.
I've also been watching movies. And up until today, when I watched Blue Kite (the entirety of which is on YouTube, see above), I was disappointed. Crouching Tiger is fun but vapid. Farewell My Concubine (which won at Cannes in 1993) is beautiful, interestingly shot but ultimately a plodding, overwrought melodrama.
Blue Kite is subtle, touching and entirely human. It's about a family living through the cultural revolution, and it hits hard. It gave me the same feeling as when I first read Animal Farm in primary school â you know the part where you realise just how bad things are about to get for everyone except the pigs and the dogs?
If you're going to watch a Chinese movie, watch this.
One of the shots from our trial run of GIF Booth at the Toff in Town. These guys kept coming back and doing static poses, even after we explained how GIFs work. The mind boggles.
It goes from the most boring GIF ever to a pretty decent one in about 50 milliseconds, thanks to Adam.