24
May 13

Fix My Bug

After wrestling with a stupid syntax error for several days, I got sick of staring at the same code for ages and started working on this.

Fix my bug!

Sometimes it’s more fun to help someone else with their code than work on your own. That’s what fixmybug is for. Put your syntax error up, and while you wait for someone to figure it out, knock one out  for someone else.

I’m amazed at how quickly and easily this thing came together. It’s pretty bare bones, but it still required a couple of years to learn the css, html, javascript, php, and mysql that went into it. 2 years ago I wrote my first Hello World in Python, and it took months of half-hearted stabbing at the command line to even get that far. Now I’ve got 98% of a diploma in Computer Systems Technology, I can build stuff like this, I think I’m ready to start working for a living. I look forward to reviewing my source code a year from now and being ashamed of it. But right now, I’m pretty proud.

Go to http://www.rocketships.ca/fixmybug and start squishing.

dasboot

 


19
May 13

How To Sell A Car

cherry blossoms toyota corona

Here’s how you sell a car. Pictures, pictures, pictures. But first, wash it. A clean car is magically worth $200 more than a dirty one, and you have a chance to sell it to people walking past your yard while you’re at it. As soon as the car is clean, you can start hustling to everyone you meet.

Then go somewhere picturesque on a sunny day. Take 10,000 photographs from every angle, distance, and vantage point you can think of. Get three of each shot. Sit in the driver’s seat and think about how much you love it. Shoot like you’re doing nudes of your lover who’s moving to the mainland without you.

apollo prestige road bike mount tolmie

Apollo Prestige at Mt Tolmie.

Favourite places of mine include:

  • The top of Mt Tolmie or Mt Doug
  • The oceanfront in Esquimalt
  • The Navy base also in Esquimalt
  • The lookout at the top of the Malahat
  • The middle of View St when the cherry blossoms are blooming
  • The middle of Blenkinsop road in late summer
  • The top of the mountain behind Interurban Campus
  • Saxe Point, Cattle Point, Beacon Hill Park

If the sun won’t cooperate, try an underground parking garage. Saturate the colours of the car and make the grey background greyer. Note: this only seems to work with Japanese and German vehicles. American cars must be photographed outside.

lexus sc400 interior shot

Lexus SC400 – An example of an informational, rather than a glamour shot.

If you’re lucky there’ll be curious passers-by, and if you’re more outgoing than I am, it’s another chance to hustle, hustle, hustle. But if that doesn’t work out, still make sure you get tons of pictures. The only difference between a photographer and an ordinary jackass with a point-and-shoot is thousands of discarded shots. Get the sexy glamour shots, and also get high-definition informational shots of the engine, interior and any damaged body work. Always shoot with the light behind you when you do informational shots, and make sure your shadow doesn’t fall across the thing you’re shooting.

Then open all your shots in Photoshop (Gimp if you’re poor and honest) and brutally discard the lousy ones. Leave your ego in your other jacket. This isn’t moderne arte, you’re just selling a car. Play with the levels, make the colours pop. Crop everything but the vehicle out of the shot. Narrow it down to 4 shots. More than that and you look like a tryhard.

red toyota corolla ae86 mount tolmie

Toyota Corolla at Mt Tolmie.

Finally, post it. If it’s a motorcycle, bicycle, or convertible, wait until a sunny day. If it’s 4wd and winter, consider waiting for a snowy day, but don’t wait forever.

In the ad, don’t tell your life story. No one likes reading. If the car has a good story behind it, tell it in one sentence or less in the first line of the ad, then get on with business. List the things that are new and good on the car. List the things that are broken. Don’t say why you’re selling – if you’re asked, “I need the money.” That’s the only good reason. Put the price you want, don’t play games like overpricing to leave room for negotiating.

honda silverwing gorge park

Honda Silverwing in Gorge Park.

A note about Craigslist – depending on your area, it’s not always the best option. In Victoria, everyone uses UsedVictoria.com. Ontario uses Kijiji, Australia has Gumtree.

 Look at the other ads in the same category. If someone is selling the exact same car as you at the exact same price, maybe knock 5 bucks off. Then sit back and wait for the emails.

kawasaki KZ305 esquimalt

KZ305 LTD in Esquimalt.

All the vehicles featured in this post are ones I’ve owned, loved, and sold. The better pictures were taken by more skilled photographers than myself. In the case of the Silverwing I actually hired a photographer to shoot the bike for me, since I didn’t have adequate equipment at the time.

dodge dakota victoria bc

My big brother’s Dodge Dakota in downtown Victoria.


11
May 13

I’m secretly a race car driver

The morning I turned 16 I waited by the front door for my dad to take me to the license office.

He was surprised, because I hadn’t told him we were going. It never occurred to me that there could be anything in the world more important than me getting my driving licence on the morning of my 16th birthday.

Anxious years followed as I tried to hide the heat of my desire to take the wheel of every car I encountered. If they knew how badly I wanted it they would look at me oddly, and they already looked at me oddly. No one trusts a teenager who tends to stare into space and leave her wallet in the refrigerator.

I volunteered to haul wood one afternoon for a chance to drive the tractor. A trip to the next town to thrift shop, for a chance to drive on the highway. I can’t express my hatred of thrift shopping without obscenity, so I won’t.

There was a conversation with a coworker – a young man who had ridden his motorcycle from California. He’s an MMA fighter now, then he was a clerk at Safeway. 2 weeks later we took a 90 dollar cab ride to some obscure suburb to pick up my new motorcycle so he could drive it home for me.

   ninja

That first night, he showed me how to work the clutch and shifter, then I drove it straight into the nearest brick wall. Sometimes love hurts. It hurt again a few months later when I laid the bike down at Cattle Point, parked the wreck in my parking spot and didn’t look at it for three more days, when I noticed I had left my gloves on the gas tank.

The thought of not riding didn’t occur to me. I bought a Silverwing. The seller proudly showed off his wife’s baby bump as he handed me the keys. I had no interest in babies. The Silverwing had a stereo. It played Johnny Cash loud enough to make people roll up their windows.

silverwing

I dated a young man long enough to borrow his mother’s car and take the final road test for my license, then took a job at a German auto dealership, where all I had to do was move beautiful cars around the lot all day.

On such a day, I took one car to the glass shop and met another young man, who followed me back to work, then home. He took me on a date to a racetrack, where I rode in his friends car as it moved at high speed, sideways, all around the course. I had to leave early, so he gave me his car keys. No funny looks, just trust. Bring it back tomorrow, he said. I can catch a ride home.

ae86

We drove to Vancouver, Mill Bay, Shawnigan, North Saanich, Campbell River, Nanaimo, Seattle, Hope, Abbotsford, buying horrible cheap wrecks of cars to drive them into the ground. Sometimes none of the cheap wrecks worked, so we took my third motorcycle, an unreliable 300cc Kawasaki. I remember driving two-up over the Malahat in January with snow on the ground, passed by large trucks as my carburetor struggled with the low air pressure, but I don’t remember being cold.

KZ305 CSR
Some weekends we rose at 5:30am to get the race car started and go to the racetrack. He drove; I sometimes drove and rode in every car that would take me.

The young man left the country, but somehow I still get invited to the racetrack. I’m not sure if the racers accept me on my own, or only as the plus-one of their absent friend. But as long as it lasts, I go, and ride in every car I can. Mind the cash box, or volunteer to wrench for a chance to drive a beater in a hill climb.

These boys spend all their money and time on cars. I question my dedication sometimes – I don’t own a car, have not gone into debt for the sake of racing, I’m not even sure what a coilover is. But racing seems to be the focus of my life.

I still have to hide it. If the universe figured out how badly I want to drive in the hill climb, it would find a way to cheat me out of it. Don’t tell anyone.

van


01
May 13

Don Draper doesn’t carry anything

Don Draper carries a wad of cash in his pocket, and that’s it. No wallet, no phone, certainly no laptop case with forty dongles in it.

My shoulders are ruined. Carrying a backpack with my laptop and lunch in it for a few minutes causes me real pain. I specifically buy backpacks with waist straps, even though I prefer messenger bags, so that I can distribute the weight to both shoulders and my hips. I have to carry my laptop every day for school, so there’s not really any way around it.

The total stuff I carry pretty much every time I leave the house is this:

  • Backpack
  • MacBook pro
  • Charger for Mac
  • Book or Kindle
  • Lunch
  • A bunch of pens
  • VGA adapter
  • USB key
  • Spare batteries for my hearing aid
  • Wallet
  • Whatever junk I forgot to take out of my backpack last time
  • A sweater or jacket
  • Headphones
  • Keys

It weighs like 10 lb. and I resent all of it.

Even when I specifically try to travel light, I end up with my phone, wallet, and a book. I dont think I’m a packrat – every single item in my kit is in frequent use throughout the day (except the extra junk I forgot to take out), and I would miss any item I forgot at home.

Don Draper gets by just fine, though. He can do it because he always eats out, isn’t required to carry ID, has people call the restaurant he’s at (or just deal with not being able to find him) and computers don’t exist yet.

How can I do it?

I want to type in the air on a virtual keyboard that’s only visible to me, pay for things and get into my house/car with my private RSA key for authentication, broadcast the images on my device to a larger screen with a gesture, and have my library available by saying “Library”. I want the computer that handles all this stuff to be as small as Don Draper’s wad of cash, and its inputs and output visible only to me unless I specify otherwise.

I am very impatient. Get on with it, please.

 

 


26
Apr 13

Getting People To Read Your Email

James Altucher wrote in an article that he has over 100,000 unread emails in his inbox. I don’t have that many, but then again, I delete half of them unread. I have a feeling this is true for most people who use email in day-to-day business. As an entrepreneur, getting people to read the email I send them is relevant to my interests. So I started thinking about the few companies who send me email that I almost always read. MEC, Saddleback Leather, and Chrome Industries. All three manage to hit me right in my backpack fetish. So, having a product people want is most of the job.

But there’s a little more to it than that. I’m pretty convinced that it’s the pictures. Lots of them, high quality, attractive, colourful, which those three companies are especially good at.

So good

But my email provider (Gmail), by default, doesn’t allow pictures to load.

I just signed up for a fake Gmail account to check that. Yep, it’s true. So how can you get people to click “load pictures”, after getting them to open the email at all? I’m subscribed to a newsletter about web design that Sascha Greif sends out every week or so. At the top, before any content, it says “Dude, there are pictures! Always load pictures!” Oddly enough, I clicked the “Load Pictures” button, and the “Always load pictures from this sender” button, right after that. I’ve been doing that in lots of other emails since then, as well. So, maybe just asking nicely is one way. A few weeks ago I had coffee with Matt Harris, a fellow HN reader and founder of Send With Us. His company makes bulk email templates, and has one very cool feature – A/B testing. If I was going to A/B test email, the first two questions I’d ask are:

  • Do lots of pictures really increase click-throughs?

And, sorted by demographics,

  • What’s the best way to get people to let pictures load?

Getting people to answer personal email is a whole other thing. Stand by for the next article on that topic.


22
Apr 13

Your startup’s video should have closed captions

I can’t believe how many companies make this mistake. Every video impression counts when you’re building your user base, and closed captions help you reach a wider audience.

There are three main segments of the market that are assisted by CC:

People who can’t turn the sound on

There’s plenty of reasons why someone just can’t turn the sound on. Perhaps they’re on a train and forgot their headphones. Maybe they’re at the office or at school. Maybe their favourite song is playing in Spotify and they don’t feel like pausing the music. They might bookmark your video for later, but far more likely they’ll just forget about it.

With captions, the viewer can enjoy the video without sound. If it’s really rad, maybe they’ll even go locate some speakers so they can hear the funny parts, and share it with whoever’s nearby.

The Deaf

Deaf people have more to gain than the average person by being tech savvy. Until the last couple of decades, a deaf person was essentially shut off from society. Unable to communicate with the hearing, they could only associate with people who could sign to them - if they were even allowed to sign.

But with text messaging, email, cochlear implants, and yes, closed captions, deaf people more able than ever to take advantage of the best parts of life on earth in the 21st century. They’re likely to be early adopters, and also likely to adapt your application in ways you never imagined. There are a lot of them on the internet, and having captions on your video is a great way to get them interested in your product.

Non-native English speakers

Surprisingly, the majority of the planet does not speak English as their first language. You’re probably aware, though, that most well educated people learn it as a second language since it’s the language of commerce. That means that non-native English speakers are a potentially huge market, (depending what your product is), and it’s worthwhile to cater to them.

Closed captions are very useful when someone doesn’t quite know what a word means – they can see it in the captions and look it up. It’s a heck of a lot easier than trying to figure out the bizarre English spelling of a word they’re not familiar with, and googling their best guess.

Closed captions are worth the effort – and for the average sub-five-minute demo video, it’s not even a lot of effort. Youtube provides an easy way to generate captions, then you can edit the generated file to make it perfect. If captions aren’t supported, you can always hardcode them and provide a link to the captioned version of the video.

Some companies are getting it right.

Circuit Lab (YC 2013) was the only YCombinator startup I could find that had good captions available. Please let me know if your company has captions in its demo video, I’ll link to you. TED.com also has captions available in almost every video, in dozens of languages.

But in a search of dozens of Ycombinator companies and other internet startups, Kickstarters, and so on, I found very few videos with captions. It’s not hard or expensive to do. Do it.


19
Apr 13

Weekly Report #3

I used to write a blog called Shit Job Tales. After hopping from one low-wage, low-responsibility job to the next for several years, I thought I might as well get some value out of the experience. It certainly wasn’t getting me anywhere in life.

Reading those old posts, I have to laugh at the naivety I was using instead of common sense back then. Well, eventually I stopped writing that blog. Staying in one, decent job for 2 years removed the inspiration for it. Then I went to college, and had a couple more jobs that were considerably more interesting than the menial stuff I did before.

But now, at the end of a two year diploma program, close to the end of my savings, and with an expensive trip approaching, I’m back to doing grunt labor. Afraid of getting distracted from my final project by something more interesting, I went for the one job that anyone can get without trying or thinking. I won’t bother telling you what it is.

But the work is not nearly as bad as I remember. In the last few of years I’ve learned a couple of things:

  • To keep my anger in check.
  • To be patient so that I don’t get angry to start with.
  • To be aware of my surroundings so that I’m always doing something useful, and people don’t get impatient with me.
  • To explain my hearing disability to people who need to know about it, before it becomes a problem.
  • To insist on people treating me politely without in turn being rude to them.
  • To talk to people who are being rude or impatient, and find out what’s going on with them, before defaulting to hate.

And maybe a little humility – I’m not too good for grunt work. A job’s a job, and I can make minimum wage go a hell of a long way.

All this makes the work environment a lot more pleasant. I don’t feel like people hate me, or that they groan when I come on shift or talk behind my back.

That being said, I think my time is worth more than the legal minimum and I don’t like selling it for that price. So I’m looking into a way to make a living on my own terms. I’ve got an idea – well a couple ideas, but I’m working on one. Hope to post about it in the next couple of days.


08
Apr 13

The Lost Art Of Sign Painting

I had the afternoon off, so I wandered down to the bike shop and set up camp on one of the car seat couches out front. Halfway through my copy of “Carry on, Jeeves” on a sunny afternoon, I was not bored.

But Ryan said, “Hey Shannon, can I give you a job?” So far in my life I’ve never said no to that sort of question. “I think we need a new sign for the shop.”

I looked at the current one. It’s mounted on the roof of the building, a red, yellow and blue announcement of “Recyclistas Bike Shop”, brown and mouldy from ten years of weather. “Sure,” I said. “It’ll be fun.”

There's the sign in the top left corner.

There’s the sign in the top left corner.

Ryan pulled a ladder out of somewhere. I scampered up to the roof to measure the sign, taking a few minutes to appreciate the view, the rusty hulks of antique bikes scattered around, and the plastic laundry basket that was caught in chicken wire around the edge of the roof. “The wind blew it up there,” Ryan called. “Toss it down.”

With measurements in hand, I went off to buy paint and canvas. First I went to Cloverdale Paints. “May I have a 6 by 12 piece of canvas, a pint of red One-Shot and a pint of black One-Shot?” I asked.

One-Shot, for the uninitiated, is the stuff professional sign-painters use for lettering. Ryan thought it would be $13 per can, and gave me $60 for it and the canvas.

One-Shot

One-Shot Paint. Illegal in Canada.

I guess canvas is a pretty crazy thing to ask for at a paint shop. They were startled. “But we can get the paint for you, for sure!”, the young lady assured me.

“Okay, red One-Shot first?” I said.

“Oh, we don’t have One-Shot.” About halfway through her list of every other paint shop in town, I said “Thanks, I’ll figure it out,” and ran for the door.

Industrial Paints and Plastics was the next stop. They had no One-Shot, but were able to sell me a massive white tarp for 12 dollars. Cool. On to Michaels, the craft shop. They had never heard of One-Shot.

I’d been tramping around town on foot for over an hour at this point. Time to toddle back to the bike shop and ask Ryan what the hell is up with this One-Shot stuff.

Ryan was busy. I got on the phone and started calling places. Dulux Paint explained the mystery – “One-Shot isn’t sold in Canada anyone, actually.” What. “Yes, I’m afraid so. There was an environmental concern, and it’s illegal now.” What. “Sorry about that!”

As I sat there stunned, Ryan came in and said, “This is the wrong stuff. You need cotton canvas.”

“Did you know One-Shot is illegal in Canada now?”

Ryan didn’t believe me. He’s seen it in a shop, he swears. Lee, the other mechanic, claimed he saw it at Lordco recently. I called Lordco, and O Miracle! they have it. “Don’t sell any, I’ll be right there!” I say.

I hop on my bike this time. Back to IP&P, get rid of the canvas. On to Lordco for the paint. “Put Rocketships on the bill,” I say smoothly. Yeah, I’m so rad I have an account at Lordco. The total is $42.50. Whoa.

On the way back I pass Dulux, and figure I might as well try them for the canvas.

“Canvas?” the young lady stares at me quizzically.

I need to get a job in a paint shop. I’m the master of staring quizzically, and that seems to be the main qualification.

“OHH you mean drop cloths! Sure, we have those!” She sells me one for $25, now Ryan owes me money.

And finally, 3 hours after the silly adventure began, I’m ready to start painting. And stop, 30 minutes later, because the half a pint of primer that Ryan had left over turns out to be enough for only 2 square feet of canvas. I call Dulux again.

This time I have to give the young lady credit, because she kept the shop open after 5 waiting for me. Quite nice. But I didn’t manage to do any more painting that day.

I guess this is why people always want you to have experience when you apply for jobs. Wasting your time running around town looking for paint isn’t something any boss wants to pay for. But then again, professional sign painters are in short supply. Well. Maybe this week at least I’ll be able to finish the sign, and put that on my resume. Hurrah!


02
Apr 13

Never Lock Your Cell Phone

I was walking out of Nautical Nellie’s, a restaurant downtown, and I guess my phone fell out of my pocket.

A passing pedicab driver saw it and picked it up. He saw that the first number on my contacts list was as rival pedicab company across town (where I worked at the time), so he took the phone to the company headquarters and left it on a table. It remained for a week until I noticed it and picked it up.

On BC day the following year, Sarah McLachlan played at the legislative buildings, and afterwards I went for a bike ride in Beacon Hill park with a friend. We stopped for a nap on a sunny patch of grass, and when I got up, my phone again fell out of my pocket.

About half an hour later, my friend’s phone rang. It was my cousin. He was the second contact on my list, and the person who found my phone had called him. The three of them arranged a meeting at the entrance of the park, where my phone was returned to me.

At a bus shelter in Oak Bay, the young man I was with insisted on tango dancing with me while we waited for the bus. Distracted, we left a bag containing his iPod Touch on the shelter bench.

3 months later, he received an email from a woman.

“I found this iPod in my mom’s knickknacks box. She said she tried to return it, but couldn’t figure out how to turn it on. Ha! I’m sorry I accidentally deleted your pictures, but before I did I noticed that there were a lot of car pictures. I took some snaps of my son’s Hot Wheels to make up for it. If you meet me at Tillicum Mall I’ll give it back to you!”

And we did, and she did.

The first year I lived in Victoria, I dropped my wallet on the bus. I called BC Transit to ask after it – they had it. I went and picked it up. Everything was still there.

2 years before that, in Campbell River, I dropped a different wallet on a different bus. When I noticed, 4 hours later, I returned to the bus terminal. The first driver I saw recognized me, and said that my wallet was on the number 3 bus. “She’ll be back in an hour or so, if you don’t mind waiting.”

I waited, but I missed my ride home. When the driver who returned my wallet learned this, she offered to drop me wherever I needed, since she was just coming off shift and on her way back to the depot.

A different phone, different bus, a different city. Someone at my school found it. He emailed me, using the phone, to meet him in the Business building. He refused my offer of a thank-you coffee, as he was in a hurry to get back to class.

People are pretty awesome.

If you lock your phone and lose it, there’s nothing anyone can do with it but wipe the data and keep it. They can turn it in to your phone company, but it’s not satisfying. More likely they’ll put it in a knickknacks box and leave it there forever.

If you make it easy for people to return your stuff, they very often will. Take a chance.

Also, invest in decent pockets.


27
Mar 13

How to Dynamically Add Radio Buttons

Haven’t seen a tutorial for this that isn’t badly spelled and hard to grok, so I’ll try it.

First, include the radio group widget and and declare one. You’ll also need LayoutParams and RadioButton, so include those as well.

//SomeAndroidActivity
import android.widget.RadioGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.RadioButton;

public class SomeAndroidActivity extends Activity () {
    //declare a radio group
    RadioGroup radioGroup;
}

Inside your onCreate method, initialize the radio group.

//SomeAndroidActivity

@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_some_android);
  radioGroup = (RadioGroup) findViewById(R.id.radio_selection_group);
}

R.id.radio_selection_group is referring to a radio group that’s declared in your XML file, so make sure you have that as well.

<!-- activity_some_android.xml -->
<RelativeLayout xmlns:android=
    "http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  tools:context=".SomeAndroidActivity" >

  <RadioGroup
    android:id="@+id/radio_selection_group"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="76dp"
    android:layout_marginTop="135dp" >

  </RadioGroup>
</RelativeLayout>

Back in SomeAndroidActivity, create a method to dynamically add buttons to the radio group.

//SomeAndroidActivity
private void addRadioButtons(int numButtons) {
  for(int i = 0; i < numButtons; i++)
    //instantiate...
    RadioButton radioButton = new RadioButton(this);

    //set the values that you would otherwise hardcode in the xml...
    radioButton.setLayoutParams 
      (new LayoutParams 
      (LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

    //label the button...
    radioButton.setText("Radio Button #" + i);
    radioButton.setId(i);

    //add it to the group.
    radioGroup.addView(radioButton, i);
  }
}

Then call that method in onCreate.

//SomeAndroidActivity
@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_some_android);
  radioGroup = (RadioGroup) findViewById(R.id.radio_selection_group);

  int numberOfRadioButtons = 7;
  addRadioButtons(numberOfRadioButtons);
}

Easy pie.