Goodbye, Little Printer

FROM: henry@henrystanley.com
TO: info@bergcloud.com
SUBJECT: Little Printer love from a floor down

Hey guys,

I'm currently a student at Makers Academy – we're on the floor below you in Epworth House. One of the students here has a Little Printer; every morning I see a little chit pinned to the reception desk with today's top stories from Hacker News and the latest trending GitHub repo...

I was gutted to hear that you're shutting your doors. How's finding a home for Little Printer and its infrastructure going? I've no doubt if you open-sourced it there would be a hugely active community of hackers to support and build on your great work – us Makers would happily count ourselves among them.

All the best,

Henry


The Twelve-Second Code Year [part 3]

(I’m taking an intensive web development bootcamp. Part 1 and part 2 of the story. Names of students have been changed.)

7.

Makers Academy staggers each intake of students by six weeks, which means every cohort gets a chance to interact with range of would-be software devs at different skill levels. Today is graduation day for the cohort above us. They present their final projects, and Enrique gave a short speech:

“At the end of the day, this is a bunch of people who come here and learn to code in twelve weeks. Which, in itself, is insane. When I first came here, I thought, ‘there’s no way you can learn to code in ten weeks.’ (it was ten weeks back then.) … But I saw people slowly learning to make machines do their bidding. And I think I speak for the whole team when I say that’s what keeps us alive – seeing you all do this incredible thing.”

IMG_6257.JPG

8.

Programming is a really weird industry, and one that doesn’t seem to have any near neighbours.

It’s very democratic – there are no formal qualifications needed. There are plenty of excellent devs who’ve gone on to do great things with software but who never went to university. Courses like the one I’m taking are testament to this: provided you have some code under your belt and can show off your technical chops to employers, you’re hireable.

It’s also very undemocratic for the same reasons. There’s no clear path to becoming a developer. Courses like Makers rely on connections with alumni and local companies to get placements – connections that someone trying to teach themselves to code, the average career changer, couldn’t possibly expect to have.

Without a structured route into the industry, plenty of good people are locked out of it. Makers is doing well to capitalise on this, connecting wannabe devs with talent-starved companies. But for a growth industry with huge and rising demand for coders, it’s surprising there isn’t yet a more established way in, given that there are far fewer Computer Science graduates than there are junior dev positions to fill.

Jim Suchy, a developer at 8th Light, talked about this in a talk he gave at Pivotal Labs. One of the big problems software has is that few people stay in it for thirty years: they either get bored and move on to something else, or get moved to a middle management role and never use their coding skills again. The solution, in part, is emphasising craftsmanship – ensuring your skills improve year after year, mentoring others and learning from mentors, keeping you on the path to mastery.

9.

This course takes grit. Persistence and confidence under uncertainty are vital qualities, particularly as Makers likes to change the curriciulum regularly. You need to be self-directed, and have done the required pre-course material (and more). This is probably a good thing: as a real developer, you’ll frequently encounter things you don’t know or understand and will have to teach yourself, or ask someone for help.

At the same time, there’s a limit to how self-directed you can be. Ultimately, the course is geared towards quickly producing a certain kind of developer, and that’s a good thing. It’s run from custom online material that includes walkthroughs, mini-tutorials and screencasts. Some weeks are better than others in how thorough they are; there were lots of complaints in weeks five and six where the written material seemed half-finished (Makers has since said it will rewrite those sections of the course).

All this goes to show that Makers is as much a social hack as anything else – being on a team with twenty other people all hungry to learn is incredibly motivating just by itself. It’s been a fantastic experience so far.

FizzBuzz in CoffeeScript – a worked example

CoffeeScript is well-documented, succinct language that compiles into JavaScript. If you’re bored of JavaScript’s abstruse syntax, it’s a much more Ruby-like way to approach JavaScript programming – provided you’re comfortable with its caveats.

This assumes you have node.js installed and have installed Mocha, CoffeeScript and Chai with the following commands from the folder you’re working in:

npm install coffee-script
npm install chai
npm install mocha

You can also use the -g flag when running the above commands to install these packages globally, rather than locally.

If you’re using Mocha for tests, you need to ‘register’ a CoffeeScript compiler with Mocha first.

mocha --compilers coffee:coffee-script/register 

You might also have to create a Mocha options file – /test/mocha.opts – and add the following line:

--compilers coffee:coffee-script/register

Set up your folder structure like this:

├── src
│   └── fizzbuzz.coffee
└── test
    ├── fizzbuzz_spec.coffee
    └── mocha.opts

Now, let’s write a test.

test/fizzbuzz_test.coffee:

chai = require 'chai'
expect = chai.expect
Fizzbuzz = require '../src/fizzbuzz'

describe 'Fizzbuzz', -> 
  it '3 is divisible by 3', ->
    fizzbuzz = new Fizzbuzz()
    expect(fizzbuzz.isDivisibleByThree(3)).to.be.true

  it '1 is not divisible by 3', ->
    fizzbuzz = new Fizzbuzz()
    expect(fizzbuzz.isDivisibleByThree(1)).to.be.false

(Note the capital ‘F’ in Fizzbuzz, because we’re declaring a class.)

Be careful of that third line above, though – if you have a fizzbuzz.js file it will use that instead of your fizzbuzz.coffee file!

And now, the code:

src/fizzbuzz.coffee:

class Fizzbuzz
  isDivisibleByThree: (number) ->
    number % 3 == 0

module.exports = Fizzbuzz

And so on… you know how FizzBuzz goes.

Here are our tests after a little bit of refactoring – note the before method:

chai = require 'chai'
expect = chai.expect
Fizzbuzz = require '../src/fizzbuzz'

describe 'Fizzbuzz', -> 
  before ->
    @fizzbuzz = new Fizzbuzz()

  it '3 is divisible by 3', ->
    expect(fizzbuzz.isDivisibleByThree(3)).to.be.true

  it '1 is not divisible by 3', ->
    expect(fizzbuzz.isDivisibleByThree(1)).to.be.false

Note the @ sign in ‘@fizzbuzz’ in the before function. This is like this.fizzbuzz in JavaScript – it creates the variable before assigning it.

Anniversary

Strange to think it’s three years to the day since I graduated from UCL.

I guess that’s not really a long time to have spent in the grown-up world, but they’ve been eventful years. So thanks to all the friends, mentors, acquaintances, lovers and partners-in-crime who’ve made them great. Here’s to many more.

IMG_6247.JPG

The Twelve-Second Code Year [part 2]

(I’m taking an intensive web development bootcamp. Part 1 of the story. Names of students have been changed.)

4.

A great man once told me that learning to code is like learning to cook if you’ve never eaten food before. It’s totally abstract, and without any frame of reference that tells you when you’re on the right lines, when you’ve made something that works. So don’t be too hard on yourself if you’re struggling.

Sometimes we all need to hear that. Roi, now a teacher at Makers, tells me that when he took the course, he felt stupid every day for twelve weeks. Constantly feeling dumb is hard, and it’s easy to let pride stop you from reaching out for help.

K spoke to Enrique, Head of Education, about the course. He’s worried he’s falling behind, and wanted to know if there were any ways to learn more efficiently. “Forget ‘working smarter’,” Enrique told him. “Just work harder. Put the hours in.”

I think it’s advice many of us need to hear – that there’s no secret to getting good at this stuff, and nothing magical separating the top of the class from the bottom. You sit down at your computer and make the clackity noise until you get good. Skill acquisition is more democratic than you think. Sometimes I want to remind people of that.

5.

Just as a cook needs to know about the chemistry of baking to turn ingredients into a meal, a coder needs to know how to turn problems into something a computer can understand.

Jordan, the endlessly charismatic Director of Marketing at Makers, introduced this by comparing object-oriented programming to Platonic forms. Classes are a mould, in whose image objects can be created. These objects inherit properties from their parent class – this tells them who they are, what they know and what they can do – but these objects can themselves be extended and built upon.

Understanding this, and how objects relate to each other in a program, was one of the biggest headfucks our cohort came across. But bending your problem like this, organising it into interdependent classes which do things to each other, is the first step in building sotware.

6.

At school and university, I always thought Chemistry was one of the more testing subjects. It involved real understanding – wrapping your brain around totally foreign ideas. There was a distinct sense of seeing ‘in your peripheral vision’, in a sense; not quite visible head-on, but understandable on some primal level. The moment when those concepts shift into focus is like feeling your brain rewiring itself.

I haven’t had one of those moments for a long time. Much of my degree was memorisation, and the world of work that followed proved to be mostly intellectually uninspiring, a couple of interesting stints excepted. But working on a code problem and, after hours of rumination, having the answer seemingly present itself to you is truly sublime.

And as a beginner, there are few better languages in which to see this happen than Ruby. Powerful, elegant, and expressive – I can see why people fall in love with it.

(To be continued.)

The Twelve-Second Code Year [part 1]

The Twelve-Second Code Year [part 1]

(With apologies to Merlin Mann.)

0.

Not all tech startups are into ping-pong and meditating on beanbags, you know.

Beanbag meditation

This one totally is, though. I wouldn’t have it any other way.

1.

Two-and-a-bit years in pharmaceutical PR had left me jaded. The day-to-day work that could be done by a shell script (or, more likely, just not done at all), endless meetings, useless project management, incompetent clients, Kafkaesque performance reviews, bullying, railroading. Having to use the same piece-of-shit computer every goddamn day. I wanted things to be done better; no-one wanted to hear it, because doing things better would mean less tedious administrative work, and without that, how are you supposed to get your junior employees to ‘pay their dues’?

Going for Makers Academy was a stab in the dark. Was it worth the money? Would I enjoy being a developer? Hobbies often don’t translate well into jobs. Just because I’ve dicked around with the command line in my script kiddie days doesn’t mean I’ll enjoy being a professional dev.

Some of the work was done for me. 80,000 Hours, a spin-off of the Oxford Future of Humanity Institute that tries to get people to take careers that will do the most good in the world, very kindly offered me a career consultation.

We walked through the things I cared about and the options I was considering, did some research, and found that Makers looked like a near-perfect option: it leads to an interesting career that I’d likely stick with, with high earning potential as a software engineer (virtually uncapped if you include tech entrepreneurship), plus possible direct altruism through working on social enterprise.

I described the course to my father. He’s unconvinced that tech is the right endgame – business would be more suited to me, he says. But he called Makers a “must do”; a no-brainer.

Shortly after my entry interview, I signed off the single largest payment I have ever made.

And as is often the case with the big life decisions you deliberate over for months, you suddenly wonder: “why did I wait so long?”

2.

Makers Academy makes big promises. “Learn to code in 12 weeks”, shouts their site’s strapline. Eccentric and brilliant lecturer Enrique quickly pours cold water on our hopes. “Just to check, how many of you think you’re going to be awesome developers after twelve weeks?” No hands go up. “Good! I’m glad you’re all so realistic.”

The course is intense, but the level of effort is normalised by everyone else’s resolve, and by the energy of the place. Students and teachers routinely arrive before nine in the morning and leave after seven at night. No-one’s commitment is in doubt. Everyone is routinely out of their comfort zone. Everyone is here to work hard, and master a new skill. We are told, repeatedly, to expect to feel stupid, every day, for twelve weeks.

That social hack alone – that you get more shit done in a place where you’re shoved together with other smart, determined people than teaching yourself from a book or at a distance – makes the course fee worth it. Add to that the structured learning environment, learning from and teach other students, pair programming and one-on-one support and feedback from seasoned developers, and you have a formula for mass-producing junior devs ready to start their apprenticeships in tech.

Think of it as like getting your driving licence. You’re not nearly done learning to drive when you pass your test – you’re just beginning. But you have the basic skillset, the confidence, and the clout to be able to strike out on your own and guide your own development from then on.

3.

Of course, feeling ‘stupid’ isn’t quite the right description. It’s more like the feeling you get when you start something as a complete beginner. You lose the heaviness and comfort of the thing you know you’re good at, only to have it replaced with the lightness of starting something new, of not knowing what to expect, of the standard that will be expected of you by your teachers and your peers.

The cohort is more diverse than I expected for a tech bootcamp. Ages range from 19 to 40, averaging 27 at a guess. A quarter of the group are women – far higher than the tech average. Backgrounds include business consulting, project management, PR of various sorts, marketing, sales, academia, design, with a handful coming straight from university or high school.

A few are looking to start businesses straight after graduating, but most, like me, have quit unfulfilling jobs to pursue a better life. One of the students comments to me that it seems almost unfair that you could be paid money to do something this fun. I’m inclined to agree.

(To be continued.)

How not to forget your dreams

I recently forgot my email password.

My security question (set many years ago) was “What do you want to be when you grow up?” I’m unable to recollect my original answer…

I wonder how many others lost their way, and whether they ever find their way back to their dream. 1

A friend recently asked for help with a job application. One of the questions asked: what is your greatest achievement? It was a struggle to think of much. Anything would do: good art, or a big project, or teaching myself something substantial. But I didn’t have anything.

For her, I limply suggested she talk about her success as a ‘third culture kid’—integrating herself not only into her parents’ cultures but as a transplant in a new culture (she was schooled partly in England and partly in Belgium). But this hardly feels like a triumph.

Generation Y was the first to have to write their own biographies. Paul Graham flipped the five most common regrets of the dying and turned them into daily commands. Maybe asking probing questions of yourself is a useful tool to help find out what you want, or at least to show you that you don’t yet know what you want.

(Hat tip to Kayla d’Angelo.)

To be happier, talk to strangers

From Let’s make some Metra noise1 in the Chicago Tribune:

Commuters asked to interact with other passengers reported having the most pleasant commute. Commuters asked to enjoy their solitude reported the least pleasant commute. The pleasure of conversation was not just restricted to friendly people; we found the same results among introverts and extroverts.

If connecting with others is more pleasant than sitting alone, why the strong preference for quiet cars, silent cabs and empty rows on airplanes? People have strong beliefs about what will make them happy. Sometimes those beliefs are systematically wrong.

This has a surface similarity with Ben Casnocha’s idea that comfortable and interesting are mutually exclusive. You can ignore that stranger and be comfortable, or you can make a leap into the unknown, talk to them, and have a more satisfying experience (and memory of it).


  1. Metra is a commuter rail service in Chicago. 

The passing of a psychedelic giant

1962784_686338798098756_7696906708965174545_n

Alexander “Sasha” Shulgin died yesterday aged 88.1 2 3

Around 5 pm PST on June 2, 2014, our long-time friend and role model Sasha Shulgin gently died after several years of battling various illnesses. He had recently been diagnosed with terminal liver cancer. Around 6:30 pm we received phone calls from two members of the Shulgin team letting us know the sad news. Much love to his family and those whose lives he touched, from the Erowid Crew. He died surrounded by friends and family.

Gate gate
Para gate
Para sam gate
Bodhi Svaha!

Gone gone,
Gone beyond
Gone way beyond
Hail the goer!

Shulgin was a notable and prolific chemist, and in his decades-long career managed to rediscover and popularise MDMA (both its recreational use and in PTSD therapy) and develop hundreds of new psychedelic drugs, 2C-B, 2C-E and DOM being the most famous and popular of his creations.

Some of his most profound writing can be found in PiHKAL, his memoir-cum-lab notebook that details many of his syntheses and ‘bioassays’. Entry #109, on MDMA, is one of the most moving. It made me realise that we are already equipped for bliss, and that the substrates of superhappiness are already within us, waiting to be unlocked.

 We should be grateful that we are already so rich, and that there is so much inside for us to discover. 4

 


  1.  https://www.facebook.com/photo.php?fbid=686340134765289&set=a.297028843696422.68924.287638407968799&type=1 
  2.  http://www.caringbridge.org/visit/shura 
  3. Erowid Character Vaults: Alexander Shulgin 
  4. Be Grateful for MDMA 

Why it doesn’t matter if people are offended by Live Below the Line

From A Turn of Phrase:

Poverty in the UK is not a fun game or experiment for those who are fortunate enough to never have experienced it to play with. … If the excuse is that it’s to raise money, find something else to do. Something that doesn’t appropriate or make light of other’s [sic] difficult and painful situations.

The ‘cost per life saved’ for the most effective charities in the world is hard to calculate. GiveWell estimates it’s between $31 and $25,000. Let’s take $25,000 (£15,000) as a very, very conservative estimate for the cost of saving one life in the developing world (a few dollars spent on a mosquito net or an improved stove could conceivably save a life).

That means the £330,000 that Live Below the Line has raised so far, if donated in entirety to highly-effective charities working on extreme poverty, and given the most conservative numbers possible, would save the lives of at least 22 people in developing countries (likely many more).

No matter how distasteful the campaign may be (which I don’t think it is), the offence it causes is not morally equivalent to having 22 people needlessly die.

Keep donating!