An English pet peeve

May 14 2013

A pet peeve by anyjazz65

Remember that experiment I wrote about last week? Where I say it’s better to stand up when editing?

It works! Only problem is I get kicked out of the kitchen around 4pm, just about an hour after I really properly get to work.

Today I want to talk about a little pet peeve I’ve developed with English over the past few days.

Since my d3.js book is supposed to be very inclusive and inviting I use the first person plural a lot. It just sounds better when going through examples to say “Here we do X” instead of a preachy “You should do X” or a self-absorbed “I did X” … you know, like this post.

As such there are a lot of instances where I write “Let’s do something or another”. Let’s being a contraction of let us.

Now let is a funny little verb in the English language. It’s got no fewer than eight meanings, adding some verb phrases and idioms the number goes all the way up to nine-teen.

Talk about overloading operators, Scala can hide in shame before the might of English.

Let’s – see how I sneakily used the possessive form and not a contraction of let us – primary meaning is roughly “to allow”, so when you say “Let’s go!” you are pretty much saying “Allow us to go!”. But with slightly less imperative in your voice.

All fine and good.

But in the book I also talk about third parties a lot. It’s not just me and the reader that are having fun, behind the scenes d3.js’s functions are working hard to keep us happy. I often write “This or that function lets us do this or that”

lets us

Using “lets us” feels more appropriate than saying “allows us to” or even “enables us to”, especially when I’m supposed to be shortening my manuscript by 60 pages before publication. And it just feels snappier and better paced than the alternatives.

Here’s the dilemma: “lets us” works in some cases, “let’s” in others and “let’s us” is far out. Laughably wrong.

And one of those appears almost in every other paragraph. Paragraph after paragraph, page after page, for 180 pages.

Every single time I see those six letters I have to stop, take a deep breath, and make sure they are correct. Every. Single. Time.

Enhanced by Zemanta

No responses yet

Write sitting down, edit standing up

May 09 2013

On March 26th I giddily said it takes about two months to write a technical book. Still high from the recent success it seemed like the thing to do.

Hemingway writing

Hemingway writing

It is now May 9th. I am editing.

Well, sort of. I had thought my writing was awesome, that there will be hardly any editing needed and on 9th of April, just two weeks later, there was a reality check in my inbox.

It was the editor: “Hey this is really great, solid writing, I just fixed some spelling and markup for ya.”

And truly, all the fixes were either typos or British English – they want American. Something about markets.

“Oh and shorten the book by 60 pages. We said 100, you wrote 180, we can do 120 tops.”

*gulp*

It is now May 9th. I am editing.

The stickler is that my beta readers said they’d like even more content in the book, definitely not less. Obviously I can’t cut any content out of the book and I can’t make the code examples shorter either. People have already complained the examples are a bit terse and hard to understand at moments.

I could take out some screenshots, but this is a book about creating shiny visualisations for the internet. Screenshots must stay.

Only thing left is the writing. I have to go through the whole book and use less words to say more.

*gulp*

Facing such a monumental task it is therefore not a surprise I’ve only spent about 30 hours editing my book in the last month. That’s averaging just an hour per day – the average for writing was two and a half.

And editing time isn’t even half as efficient as writing time. For every two minutes of staring bleary eyed at the screen, dragging the words through my mind like so much barbed wire, I spend five minutes prancing about on the internet feeling like I’m riding a unicorn in comparison.

Editing really is sheer drudgery. There is no flow. There is no inspiration. Just a constant ruthless cutting and rewording. All those little things you thought added a special flair to the writing, let your personality shine through, entertained the reader.

Waste. Plain old waste. Vomit of a writer who’s been staring at the screen too long.

It all has to go.

And the writing is much better for it. But you’re still sad to see it all go.

Actually, not so much sad, as indifferent. You don’t feel anything but the monotonous drudgery of rewriting something you’ve already written and not coming up with anything new. You can’t, add something new and the word count goes up not down. Can’t have that!

It’s been fairly successful too. I’ve finished the first two chapters. One cut down from 14 to 9 pages, the other from 51 to 40. Just by improving the writing. No loss of content.

But it’s just so … it’s terrible.

This weekend I discovered a trick, though. I was at a friend’s place and as I was editing in the kitchen I realized that the chairs are terrible and the table is the wrong height.

Peeved, I moved to the counter. Editing standing next to the kitchen counter, shoulders slouched to stare at the screen …

… before I knew it, two hours had passed and I edited five pages of text. Amazing! I had fallen into flow. Editing! Flow!

I don’t actually know if this was because of my friend’s kitchen or because I was standing while writing. But I’m going to repeat the experiment today.

Fingers crossed it works!

Enhanced by Zemanta

No responses yet

Mouse movements in a day of coding

May 07 2013

A few weeks ago I bought a fancy new mouse to replace my fancy old mouse. Sure it’s nice and comfy, but how much do I actually use it? When you pay close to a hundred euro for something you want to make sure it’s doing its job.

Yesterday I tried.

For the whole day, when the freelancing clock was running, so was IOGraph – a handy tool for recording mouse movements.

A day of coding

I have dual screens, am running Ubuntu and use Emacs to write code. Certainly the sort of environment that favours using your keyboard over your mouse and yet, the mouse gets used quite a lot.

The image above shows paths my mouse has taken through the day, dots show where the mouse has been standing still for a while – the bigger the dot, the longer the time – and I am honestly not certain what the circles around small black dots are. Clicks perhaps?

Other than the fact I use my mouse more than I thought, three patterns emerge.

  1. There is a blank space roughly down the middle where I never place my mouse – the dividing line between two monitors. You can see the left is wider than the right.
  2. Despite being used a lot, the mouse spends most of its time standing still. Most of the image is taken up by relatively few very large black dots. The largest two are right where I had two terminal windows that I often switched between (one running a server instance, the other used for git). The rest are mostly on the far right where I have my browser. Apparently I like to click around, then leave the mouse there when I go back to coding? Or maybe page loads are slow?
  3. Emacs takes up the left half of the screen. I sometimes put my mouse here, but rarely for long because the cursor gets in the way.

You can also notice I spend a lot of time switching the last few tabs in Chrome, possibly opening and closing them as I browse the interwebs for help with Ruby? That’s all the lines going to the upper right corner.

Here’s a screenshot of the desktop as I left it last night. Most of the tabs already closed because I have to save memory, but you can still see the rough layout of the windows I worked with. Had I some photoshop skill I’d overlay IOgraph output over the screenshot.

Workspace

Workspace

Now I wonder if mouse patterns are different for other languages and technology stacks … I have experimenting to do!

Enhanced by Zemanta

No responses yet

Videos from first Javascript meetup in Ljubljana

May 03 2013

Full house at #jsmeet \o/

Tuesday evening saw the first JavaScript meetup in Ljubljana and I think it was a smashing success, if I do say so myself. Everyone who RSVP’d managed to make it despite the impending holidays next day.

Surprising how difficult it is to count people calmly sitting in place and not moving. I’d make a terrible guardian for children on a fieldtrip, but there were somewhere between 38 and 47 people based on my various counts.

All the speakers did a great job of presenting their topics and I was happy to see next to no smartphone and laptop navel gazing from the audience. Rare sight at these sorts of events.

We learned about writing performant JavaScript, where the biggest challenge is maintaining performance across browsers and devices. Apparently writing performant JavaScript for Chrome on a quad core desktop monster is much easier than a four year old smartphone running an outdated version of Android.

Then it was straight to an overview of using modern MV* libraries and the difference between frameworks and libraries – a library is fairly open-minded and a framework is smarter than you so you have to obey.

The talk about AngularJS deepened the subject by showing a few code examples with AngularJS. Looks like it’s very easy to magically connect things on the screen, but step out of what Angular knows is best and you will have a bad time and likely way too much work.

In the end, the talk about TypeScript explained what it looks like when you port Java to JavaScript. The most interesting part for me was observing the difference in style preferences. I honestly don’t think TypeScript looks better than just using JavaScript …

Either way, the videos are now online. Have a look.

Unfortunately the videos don’t convey the great job beer and cupcakes did of keeping everyone around for a nice geeky chat.

Javascript cupcakes

Javascript cupcakes

Enhanced by Zemanta

No responses yet

Writing a REST client in Haskell

Apr 25 2013

A few days ago I decided to buy some bitcoin. Then I noticed it fluctuates a lot despite a general upwards trend. Hmmm … if I just bought at the right moment and sold at a different right moment, I could make money fall out of the void!

I have since lost $5 by playing and gained $30 by leaving it alone. Obviously I suck at this …

I know! Let’s make a bot that does this! A low frequency trading bot, that sounds like fun. And let’s write it in Haskell, just to keep things interesting. Marrying the strictest of languages with the messiest of resources – the internet … what could possibly go wrong?

First order of business – a REST client.

REST client

Before my bot can do any trading and intricate algorithmic trading, it needs to talk to the marketplace of choice. I picked Bitstamp because they’re the only ones that let me do this without a US bank account.

Writing a REST client in most languages is simple. Reading Bitstamp’s ticker in Python looks like this:

import requests, json
 
r = requests.get("https://www.bitstamp.net/api/ticker")
print json.loads(r.content)
# prints: {u'volume': u'17179.28558844', u'last': u'159.49', u'bid': u'159.49', u'high': u'161.00', u'low': u'139.00', u'ask': u'159.64'}

That’s it. Everything you need for a set of values nicely accessible as a dictionary.

In Haskell, well in Haskell figuring out how to do that took me all night, then a bit of the morning and finally a helpful tweet from a stranger to tell me just how I was misusing monads.

First of all, we are going to need a bunch of imports. The ones we really care about are the http-conduit library and the Aeson parser of JSON strings. Everything else is there because … well I’m not sure actually, but it seems to be necessary, otherwise things don’t work.

{-# LANGUAGE OverloadedStrings #-}
 
import Network.HTTP.Conduit
import Control.Monad.IO.Class
import Data.ByteString.Lazy
import Data.Aeson
import Data.Attoparsec.Number
import Control.Applicative
import Control.Monad.Trans

I am not perfectly certain what the OverloadedStrings bit at the top does. It’s some sort of compiler directive and most haskell libraries I find in the wild tell me I will be a much happier man if I turn it on. Shrug.

All it takes now is making an HTTP request and parsing the response as JSON. Simple, right?

Well, Haskell is strict and you can’t just parse things all willy nilly. We need to tell the parser what we expect, what we want to do with the result and what type it’s going to be. Can’t just have a bag of stuff! Nope, needs to be a well defined bag of things.

data Ticker = Ticker
              { high :: Number,
                last :: Number,
                bid :: Number,
                volume :: Number,
                low :: Number,
                ask :: Number
              } deriving Show

Great. We have a Ticker type that has a bunch of numbers and some names. That Show part seems to say that we’ll be able to print this out to the console. Smashing!

That’s not enough though, it is time for some strange hieroglyphics that tell Aeson how exactly parsing works.

instance FromJSON Ticker where
  parseJSON (Object v) = Ticker 
                         v .: "high" 
                         v .: "last" 
                         v .: "bid" 
                         v .: "volume" 
                         v .: "low" 
                         v .: "ask"

If I understand this correctly, those strange symbols are applicatives. The .: does … something … and the <$> and <*> do something else. The whole bit is about defining how to convert a key in the JSON string into a value in the Ticker type. I think.

Right, let’s make a function that will talk to the server and return a Ticker object. Maybe. If all goes well.

ticker::(MonadIO m) => m (Maybe Ticker)
ticker = get "ticker" >>= return . decode

Fairly simple stuff. Take something from the internet carefully wrapped in MonadIO, unwrap it for a bit, feed it into decode, which magically uses all the stuff we defined earlier, and wrap it back into both a MonadIO and a Maybe. Parsing can fail you know.

get::(MonadIO m) => String -> m ByteString
get url = simpleHttp $ "https://www.bitstamp.net/api/"++url

This is the generalized get function that talks to Bitstamp using the simpleHttp function from http-conduit. It looks simple, but I’m sure a lot of hairy stuff is going on behind the scenes.

To make sure everything works, we run it.

main = do
  ticker >>= print

Nothing.

Yup, the output we get is Nothing. It is at this point you realize someone isn’t using JSON correctly and all those numbers are actually strings. Strings. Now how the hell do you tell Haskell to automagically transform those into Numbers before putting them in the Ticker object?

Messy messy internet.

But hey! Got Haskell to talk to a REST API. How cool is that!?

Enhanced by Zemanta

2 responses so far

I love being a geek

Apr 23 2013

Geek shelf by Aaron Bassett

I have always seen myself as a stereotypical geek. Kind of introverted, not very athletic, infinitely excitable about the strangest of things, spends more time with people on the internet than talking face-to-face, prefers it even.

And I love being that. The infinite freedom that comes with being a geek is intoxicating.

While normal people have to worry about keeping appearances, about maintaining a fine-knit web of social interaction through a series of carefully maintained half truths, I can just be myself. Because I’m a geek.

People pretending they like certain things, pretending they care about this or that issue, just to fit in. Just so they’ll be liked. As a geek I don’t have to do any of that.

As a geek I can shout at the top of my lungs “I don’t understand football” at the height of football fever during a world championship. Nobody minds, nobody laughs, they just explain the game. “Don’t mind him, he’s a geek you see, he doesn’t get normal people stuff”

When I was about ten years old I couldn’t get enough of The Famous Five series by Enid Blyton. Library copies were always tattered to bits and that just made them better. I don’t remember much, but I do remember one character clearly – The Scientist. He was George‘s dad or uncle and his defining characteristic was that he was always kind of grumpy and locked up in his room where he was “doing science”.

Not to be bothered. Not to be disturbed. Not to even be thought about too loudly. Lunch was often taken to his room because he would forget to eat.

Imagine that!

A guy who gets peace and quiet to work. All summer. In a house full of 12 year olds. That’s the power of being a geek.

Geeks – the only people who get to truly be themselves even as adults. I love it! (said with my best Tennant impersonation)

It’s all starting to unravel for me though. People are suggesting I might want to “grow up” … whatever that means.

Just the other day someone mentioned I do a lot of sports. Ironically this happened at boxing practice; she spends 5 days a week there. A person who goes to practice 5 days a week thinks I do a lot of sports … I have never been so confused.

A few days later I had a call with someone looking for “somebody older” to be a technical lead. An old sage to look over the rabble of Stanford grads he’s built a team out of. I’M TWENTY-FIVE!

I hope it’s not too late for me. Save yourselves! Be geeky!

Enhanced by Zemanta

No responses yet

First JavaScript meetup in Ljubljana is right around the corner

Apr 18 2013

Cupcakes by lamantin

A while ago I realized that whenever someone asks me if I know any javascript developers, I always come up empty. Shame on me! Using a technology heavily for many years and not really knowing anyone from the community.

That’s why I decided to organise a meetup! The first purely Javascript event in Ljubljana. Sure there have been barcamps and webcamps and mobilecamps … plenty of occasional Javascript users come to those, but that’s not what we’re on about here. This time we want to focus on people who use Javascript a lot.

Come join us on the 30th of April at 7pm in Kiberpipa! It’s gonna be fun!

People doing full stack Javascript, or writing fancy frontend apps in various MV* frameworks. That sort of stuff. It’s time the community gets to know each other, or at least for me to find the community. :)

I’m happy to announce that after weeks of effort (read: remembering to send an email or tweet a link once in a while) we finally have four presenters, free beer and plenty of people who promised they’d make it. Hooray!

There’s even going to be a lady giving one of those talks! That one did actually take a lot of effort to find … I don’t know what is it with girls, but it sure is difficult to find some willing to give a talk about something cool in front of a bunch of dudes. We’re not that scary, are we?

Here’s the list of talks:

There are also going to be cupcakes!

What do you think a JavaScript Cupcake should look like? I really need your help with this one. Google doesn’t have a single idea. Imagine that, all these years and nobody’s tried to design a javascript cupcake before.

No responses yet

How CamelCase ruined my day and my dev environment

Apr 16 2013

Bitcoin Magazine

Bitcoin Magazine (Photo credit: zcopley)

Yesterday everything went so comically wrong I just have to share. This post might be more a confession than a tale of warning, you be the judge.

My objective, convert prices in USD to prices in bitcoin. Simple. Especially after I discovered someone’s already made a gem that talks to the MtGox exchange and tells me how much a single BTC is worth.

All I had to do was this:

Gemfile:
gem 'mtgox'
 
bundle install
 
Controller:
price/MtGox.ticker.sell

Simple, right?

Because I like to make sure I’m working from a sane state I first ran the test suite. Ruby core dump.

Right, I’ve been having these problems randomly for about a week now and they usually go away if you run the tests twice or thrice. This time, it just did not work. I got a ruby core dump, you have probably encountered a ruby bug every single time.

No wonder! My Ruby interpreter is going to be a year old in a few days! Let’s update. It all went downhill from that. And not in a pleasant adrenaline rush kind of way either.

After about an hour of fiddling with RVM and Ruby versions and aliasing things from ~/.rvm/bin/ to /usr/bin/ the tests are finally running and I can begin.

Mtgox is not defined.

Hmm … okay then. I thought Rails automagically loaded all gems specified in the Gemfile. A quick google later and I discovered that I can list all loaded gems with Gem.loaded_specs.keys.

Sure thing, the gem was loaded.

Right, let’s make a separate ruby file and make sure things are working.

require 'rubygems'
require 'mtgox'
 
puts Mtgox.ticker.sell

No such gem “mtgox”.

Grrrr, okay fine. gem install mtgox … already installed, wtf are you doing Swizec, you have that? Oh right, I did just update my Ruby stuff and maybe broke the environment and require paths are confused.

Let’s try this on my mac, I haven’t done any fiddling there.

The mtgox gem only works with Ruby 1.9.2+, you have 1.8.7 … that’s what you get for using your expensive laptop as a Skype and IRC machine. I can just update this, no problem!

Your Homebrew is out of date. Your XCode does not exist. I have no idea what you’re trying to do!

Grargh.

Fiddle fiddle fiddle and I eventually get Homebrew installed after at least an hour of effort. Let’s try that RVM thing once again.

After several fails with automake and sometimes just simply saying “Hey, an error happened” and the log looking perfectly fine I finally got it to start installing Ruby.

ruby-1.9.3-p392 - #configuring........
ruby-1.9.3-p392 - #compiling.
ruby-1.9.3-p392 - #installing .
ruby-1.9.3-p392 is not installed.
To install do: 'rvm install ruby-1.9.3-p392'

What?

Fine, I give up on you laptop, we will pick this fight another day. Back to the Ubuntu box.

After deleting all Ruby binaries from /usr/bin it finally decided to start using things in ~/.rvm/ and lo and behold, I can require the mtgox gem.

Mtgox is undefined.

God damn it! What now!? What could possibly be wrong now!?

Find the source. Add some puts. Yes, yes the gem is getting loaded. It’s printing to the console and I can … wait a minute. It says module MtGox, not module Mtgox

Oh for fuck’s sake! Capital G … All this time. All this effort. And I never, not once, noticed the module was CamelCase instead of just capital first letter.

Sigh.

Oh, now running bundle says bundler isn’t installed even though I just ran it! What now …

Enhanced by Zemanta

No responses yet

The most pleasant job interview I have ever had

Apr 11 2013

I love job interviews.

It’s a bit of a hobby really. You get this brief chance to dip your toes in a company’s culture, to see what they’re all about and how they work. If you’re lucky, you get to talk to some awesome engineers who are much better than you.

If you’re really lucky, you even get to travel for a few days!

You can never have too many excuses to travel.

I spent last week in Canada interviewing with Shopify.

Shopify

Lounge mural

Lounge mural

It all started a few months ago when I wrote a blogpost ranting about the terrible engineering practices of one of my clients and how I was hired to swoop in and fix their codebase. A few days later I get an email from somebody at Shopify along the lines of “Hey, one of our developers saw your post, then saw your Github. I think we’re doing some stuff you’d find interesting. Wanna talk?”

As always when opportunity strikes, I said “Sure!”

A few days later came the usual first-contact Skype call. Yeah we’re doing this and that, we’re this sort of company, we’re doing so and so. Yes I’m a cool guy, I like making things and you seem interesting, let’s talk some more.

This part is never too interesting. A bit like a first date, both people are sort of kind of interested, but nobody really knows what’s going on so there’s just a lot of gentle probing and poking.

Then comes the fun part.

Just like at Google, there were two technical Skype calls where I got to talk with two different engineers working on extremely different stuff. I think this part was about figuring out whether I’m more of a frontend guy or more of a backend guy.

I did later get to meet with both dudes again. Both called their team The Core Team ™. Friendly rivalries are always a good sign!

Unlike Google last year, both of these Skype calls were extremely relaxed. It was just a casual chat about technology and my approach to coding, testing and solving problems. If there was a pre-prepared list of questions, I couldn’t spot any painstaking adherence to a plot.

One of the interviews devolved into a twenty minute explanation of how batman.js works, that was particularly lovely. Shame I still haven’t had a chance to try it out because it sounds really awesome.

A bit later I was invited to fly over to Ottawa and chat a bit more.

Ottawa

Elevator welcome

Elevator welcome

When a company spends a few K just to talk to you for a few days, you know they mean business. Still, everyone upheld the casual tone throughout.

My interviews were spread over two days.

Casually, the first day started at noon. I was to come into the Shopify HQ have some lunch and a meeting later.

The HQ was just across the street from my hotel, but my room was facing the other way so I couldn’t see it. Because Google Maps doesn’t know you can walk across parking lots, it took me about ten minutes to find the entrance. Silly Maps.

Stepping out of the elevator I immediately fell in love with the place. Walls covered in comic book posters, memes and an assortment of geek stuff everywhere. There was even one of those Halo helmets at the reception.

How cool is that!

It doesn’t matter that I don’t really play videogames or that pretty walls and wonderful beanbags in the lounge area don’t matter much when you’re staring at a computer all day. What matters is that these are signs of a company culture I’d enjoy. None of that endless grey cubicle crap I saw on my tour of IBM two years ago.

The main lounge used to be a club. I’m told Lady Gaga played there once. Nowadays it’s just a huge room swarming in geeks when catering brings in the food. There’s videogames on the balcony and an endless supply of tea and coffee.

There’s an assortment of teas. Very important.

LEGO table

There is also a table devoted to LEGO. Fun.

After lunch I had a conversation with the guy responsible in company culture. He makes sure there are no asshats roaming around the offices. He’s also the person making sure the offices look as great as they do.

He misses the times when he could spend most of his time hacking on the product and doing design. I got the impression everyone at Shopify is a hacker, no matter their role these days.

Always a good sign.

In the evening I had dinner with a bunch of engineers and one other potential recruit. Both the recruit and I were so jetlagged we spent most of our time staring ahead of us with blank faces and trying very hard to follow the conversation.

The big day

The lounge where I spent most of my time

The lounge where I spent most of my time

Then came the big day. Once more it started very casually at half past eleven in the morning. This time with a bit of confusion about who I was supposed to talk to … meetings, changes of schedule, stuff. Hungover from too little sleep I was more confused than anyone and can’t really tell what was going on.

I ended up having a nice chat with a Columbian fellow from the scaling team. They make sure programmers don’t have to worry too much about scalability and can focus on solving problems. Interesting job, but not really for me.

The chat culminated in lunch when the whole of Shopify descended upon the lounge when catering arrived.

All of the six or so interviews I had that day were very pleasant. All happened in the comfort of the lounge couches and I never felt like I was being drilled on the basics of computer science or solving silly problems.

The most technical bit, really, was the two hour pairing session where I implemented some interesting graphs using a library based on d3.js I had never heard of before. NVD3, it makes graphing a bit simpler.

Very unlike Google, where I was cooped up in a small room with a whiteboard all day and forced to produce executable code without a computer. Sure those were fun and awesome, but they were all the same.

At Shopify I was having pleasant conversations. Everyone was more open too. When I asked about their work, they gave me straight answers, explained what they’re doing and we chatted about the problems they are facing and how I’d approach them.

The company culture was out there, wide open for me to figure out. Everyone seemed genuinely interesting and genuinely interested in talking to me.

Finally I had a chat with the CTO. He realized we’ve both been talking to people all day and were getting kind of tired. So he took me out to a coffee shop for a cup of tea.

That was lovely. I really liked the coffee shop too.

Turned out we were both very tired – there were moments where we just looked at each other for a few minutes. Unable to find any words.

His is an interesting story of a guy who used to be the main hacker on the core product and eventually became one of the heads of a company of 170 people. His job these days is talking to people all day. He’s still adjusting.

At dinner later that day I found out that even as the CTO with a bunch of brilliant engineers, he can still spend 2 months hacking away all day with headphones on when there’s an emergency to solve.

After that, Shopify doesn’t crash anymore.

Decisions

I’m not sure I ever got a chance to talk to the engineer who made the initial recommendation based on my blogpost, but I definitely got to talk to a bunch of great people and had massive fun.

A few days after coming home I got a call saying they’re interested. Now I have to make a tough life changing decision between Shopify, freelancing and two other job jobs that have magically landed on my table when I was looking the other way …

Enhanced by Zemanta

2 responses so far

Canada, eh?

Apr 09 2013

Job interviews are fast becoming a bit of a hobby for me. Usually just over Skype and for a shortish-term freelancing gig. Sometimes in person for a job job.

Last week I went to Canada to interview with Shopify. This post is about the traveling bit, next post will be about the interview bit. Without revealing too much too soon, I can say it was one of the best interviewing experiences ever.

Canadian parliament

Canadian parliament

Traveling to Canada

Canadians do say “aboot”, they also say “eh”. But they say eh so much and so often I was unable to figure out what it actually means. It’s not always a question, sometimes it’s more of a “yes, what I am saying did actually happen literally”. It’s a confusing little word.

Canadians are also just as nice as I expected watching american television. The French Canadians are just as nice and friendly as people were in France … which is to say surprisingly little. Luckily I didn’t spend a lot of time in the french parts of Canada. I did take a walk to Quebec though, just to go see the cool Museum of Civilizations.

On Tuesday morning I awoke to a miserably cold and windy Ottawa. Other than the buildings and the odd car here and there Ottawa, the city of one million, looked like a ghost town. I met about one person every five minutes, despite being in the part of town crowded by bars and pubs.

It wasn’t too cold, just -6 really, but my jeans was nothing against the wind. Like I was walking around half naked … thank god for the giant scarf I got from mum for Christmas.

Apparently I visited Ottawa at a rather awkward time. It wasn’t winter and it wasn’t spring.

In winter they have a bunch of stuff going on at the frozen Rideau canal. Turns into a 7 kilometer skating rink! In spring, there’s a bunch of stuff going on at the Bytown market – daily farmer’s market stuff, plenty of events, even a busker’s festival!

Last week … nothing. Completely dead.

Weather turned for the better on Thursday and while still a chilly ~3C it was very sunny and the whole city came alive. Their one pedestrian street was full of people and walking around was an absolute pleasure. Suddenly I could see myself living here. It was no European town like I’m used to, but it was alive. A proper city!

Despite its huge surface area (100×100 km I’m told) and a population about thrice that of Ljubljana, Ottawa feels a lot like Ljubljana really. Minus the ~100,000 students and put on a classic North American grid system … and younger, much much younger. The oldest parts of Ottawa still standing are from the early 1800′s. Just enough to give the city a bit of a flare, a touch of history.

Strange feeling that, a huge city that’s less crowded than my tiny “city”. Their museums were awesome though, at least the two I visited. Museum of Civilizations talking about how Canada evolved from the old peoples to the modern mix of people from France, British loyalists and all the old native peoples. Really loved the huge displays where you basically walk around a colonial town at 1:1 scale, then turn a corner and suddenly it’s a town in the 19th century.

The War Museum had a similar design going where you walk from the early native peoples wars all the way to modern peace keeping stuff, but such museums are usually dark and don’t take pretty pictures, plus they all look alike. There was an awesome assortment of tanks and artillery though. Even a jet fighter!

At the only pedestrian street, there was a bear statue

At the only pedestrian street, there was a bear statue

There's a huge confluence of rivers right on the border of Quebec and Ontario

There’s a huge confluence of rivers right on the border of Quebec and Ontario

Museum of Civilizations reveals that totems are _huge_

Museum of Civilizations reveals that totems are _huge_

There's also exhibitions built up as old towns

There’s also exhibitions built up as old towns

Voodoo exhibition with real human skulls

Voodoo exhibition with real human skulls

On Thursday I went to the War Museum where there was a jetfighter

On Thursday I went to the War Museum where there was a jetfighter

Most displays were too dark to take pics

Most displays were too dark to take pics

On my way back I found a cute housey

On my way back I found a cute housey

Enhanced by Zemanta

No responses yet

Older »

« Why you don’t have a flight... The most pleasant job interview I... »