My advice to new programmers looking to start their career

Your resume is probably pretty good, but you need to show you can build stuff beyond school assignments. You don’t need a job to do that though! Here’s my advice:

  1. Prove that you can build and maintain something without being supervised. Build some kind of web project in your free time and host it online on AWS or rackspace or my favorite, Linode. That link has my referral code in it, by the way 🙂

    Start with something as easy as possible. Don’t worry though — you will discover a ton of difficulties as you work through it. Your project can be anything:

    • a really simple recipe database
    • the most popular mens socks on Amazon
    • weather forecast for nearby cities

    At the bottom of every screen in that project, add a link to your github profile and your linkedin page, and put your email in there and say something like “I’m looking for work!”

    Once you’re done, pick a new project. Maybe rewrite the same thing in a different language. The point here is to make real things that regular people can interact with.

    Silly projects are likely to get more attention. For example, the KJV Programming tumblr site is hugely popular and doesn’t really do anything useful for anyone.

  2. Get involved with some volunteer programming work. In Cleveland, there are several groups of programmers that volunteer their time. Look at Cleveland Givecamp, for example, or Open Cleveland.

    Where ever you are, I bet there’s a group like this already. If not, start one!

    Or, just find an organization like a church or a club or a business that you like and offer to work with them to do something like set up a better website, automate some financial reports, or even just help them manage their facebook / instagram / twitter accounts.

    You will learn how to work with non-technical people this way. That is an important skill!

  3. Start a blog.

    Write tutorials for little things you figure out while building your projects. Write tutorials for stuff that you are learning in school, like recursion, or operator overloading in C++, or why you hate or love one language vs another.

    Write about the nonprofits or clubs or small businesses you’re working with.

    Practice writing clearly and succinctly.

    Read William Strunk’s The Elements of Style at least three times. It’s nearly a hundred years old and still the best writing guide out there.

    Publish what you do on twitter and reddit and hacker news and other places so you get more attention. Don’t waste a minute arguing with the haters though. Nobody cares about them.

    Add google analytics to your blog and study what posts attract the most attention.

  4. Go to as many technical meetups as you can and introduce yourself to people and tell them you are looking for work. Talk about what you are working on. Ask them where they work and if they like it and if they know of openings.

    If you’re anywhere near Columbus, Ohio, show up at PyOhio on July 30th and 31st and introduce yourself to as many people as you can. Maybe even do a 5-minute lightning talk on one of your projects — the sillier the project is, the better.

  5. Cold-call recruiters at companies like Robert Half, Oxford, Randstad, etc and tell them you’re looking for work. Ask them what skills are the most sought after.

    Learn those skills, and build projects with them, and then write out about it.

The point with all this stuff is to make yourself a programming celebrity. You don’t want to go looking for jobs — you want jobs to come to you.

Good luck on your quest!

Consider that you are lucky to live at a time where a few of us have vastly more upward economic mobility than ever before. It just takes effort.

Are you an animal or a human?

Review of Sora’s Quest by T. L. Shreffler

Wow. This is a good one.

Here’s a link to the book: http://amzn.to/1UmwKhE

I download several free ebooks every week. I start a lot and bail once I get bored or get angry that the writer is going with some tired-out cliche.

So I started Sora’s Quest in that frame of mind — looking for an excuse to delete this book.

And this book is a fantasy book, which is a genre filled with the worst crap. Especially at the free tier. Honestly, once self-published ebooks became a thing, petabytes of beastmaster erotic fan fiction burst out on the internet.

So, like I said, I wasn’t optimistic.

But the first chapter was pretty good. A guy discovers his brother has just been assassinated moments before. He uses some magic to track down the assassin that is making his escape.

Magic is to fantasy what time travel is to science fiction. It’s hard to pull off well! Skilled fantasy writers bring something novel to the mechanics of magic works. And they explain it just enough so I understand why people do what they do. But they keep the plot moving.

Unskilled writers forget that they’re on borrowed time. They shift from the story line to an exposition of their made-up metaphysics, and it just kills the momentum.

Or even worse, they use something blatantly yanked from elsewhere. That’s usually a sign I’m reading something like a book version of those horrible bar bands that cover currently popular songs.

But this author introduced magic in this world cleverly and succinctly. Blood magic requires sacrificing living things.

The magician catches up with the assassin, but the assassin turns out to be way more difficult to kill than expected, and the magician gets wounded in the fight while the assassin gets away. And the chapter ends with the magician swearing to avenge his brother’s murder.

The story hops in perspective to follow Sora, a 17-year-old noble lady, preparing for something like a society debut. Her mother disappeared when she was an infant and her dad is an aloof jerk, mostly interested in getting her to marry into a family that will improve his status.

Lily is Sora’s maid, and their relationship reminds me of the dynamics between the maids and the ladies in Downton Abbey.

Anyhow, the coming out ball begins, and then Sora performs her “blooming” dance, and then accidentally falls down, which is just an awfully embarrassing thing.

But then the skylight above the ballroom shatters, and her father is gravely injured. Sora realizes that this was no accident when she runs into an assassin in the hallway who is about to kill her, but then decides to take her with him as a hostage.

And that’s the end of the second chapter. I was hooked. And I was surprised by how much I liked this book. Every chapter after that pulled me in more. The story bounces between the magician tracking down his brother’s murderer, and Sora who has been kidnapped by that same assassin. The story starts off following the magician, and we sympathize with him wanting to avenge his brother. But then by switching to the perspective of the people he is hunting down, and by coloring them in enough, the reader ends up empathizing with that crew as well. It becomes clear that they have their own sense of morality that’s not so different after all, especially given their situation.

So it’s not clear who are the heroes and the villains. Everyone is just trying to survive.

And there’s a gorgeous twist at the 80% mark that I really enjoyed.

Here’s the thing I’ve noticed too often about female characters in the fantasy genre. They’re usually damsels in distress or basically Xena Warrior Princess ice cold commando types. They’re paper-thin characters that are completely predictable and unrelatable.

But Sora comes off (to me, at least) as real. And she evolves and adapts plausibly. She’s not a brat and she’s not a robot.

Last thing — the author clearly spent a ton of time daydreaming and constructing this world’s history. There are all sorts of little hints about it all. Humanity won some “war of the five races” thanks to using anti-magic devices, and the other races are now almostly extinct. I really liked how she described the old civilizations (spoiler: author is a girl).

I just bought the sequel to this one. It seems to follow the assassin and for the first time we get to see into his thoughts. He’s an opaque dead-eyed killer for most of Sora’s Quest, and I hoped we’d find out his back story.

Honestly, this is an exciting story in a fantasy world that’s different from the usual Tolkien-inspired elves and dwarves tropes we’ve all read a million bazillion times. And an interesting female character!

Mary Dunbar is the best candidate for Cleveland Heights Council

I’ll vote for Mary Dunbar tomorrow in the Cleveland Heights election.

Here’s why:

  • She actually replies to my emails! And it ain’t just me. You’ll see she engages with people often, online and in person. She’s the only candidate that showed up at Heights chicken coop tour, for example, and she wasn’t even in support of the legislation.
  • She’s passionate about improving our city’s walkability and bike infrastructure. This is one of the last advantages Cleveland Heights has. We need to guard this with our lives. You may not think that bicycling and pedestrian access is that big of a deal, but you are wrong times infinity. Getting people out of their cars and walking around instead has myriad positive effects.
  • She doesn’t promise anything grandiose. It’s so tempting to make grand sweeping statements and wild accusations or big promises or irresponsible rhetoric. You don’t see that coming from her.
  • Last point — this town skews too far into the progressive Democrat direction. We need an intelligent critique to prevent groupthink.

Beware the trap of the local optimum

Lots of problems look a little like this:

1-11. Local and global optima.

The Y-axis measures success at whatever problem you’re trying to solve.

You start at the farthest left point on the curve and you can move left or right a little bit every time you work on the problem.

After you make it to the top of the first hill, the only way to make it to the top of the second hill is by going down first.

In jujitsu, if I’m lucky enough to get to mount, my instinct is to camp out there. Maybe I can submit the other guy by sweating on him. I’m in a relatively safe position now, so I don’t want to take risks. In other words, I’m at the local optimum.

If I go for a submission like an arm bar, given my current skill level, my opponent will probably escape the mount, and I’ll be in a worse position afterward.

So in a self-defense situation, it might be smart to camp. The failure penalty is high!

But in class, because the cost of failure is so low (really, I just don’t get to feel like a badass when I tap out) I am wasting an opportunity to learn (and move to the right along the curve)!

Gassing the glitterati

I wrote this like five years ago. Never posted because the missus didn’t like it.

Went to a fancy benefit dinner last night. A gala to raise money for some hospital. Somebody else bought a table and we went. Frank Jackson and some banker dorks were there, talking about a bunch of nonsense, but they were at table 1 and we were at table 890541 or so.

I’m allergic to places like this. Nobody wants to talk about UFOs and everybody wants to know where I went to college.

My wife knows me well enough and on the way in says “can you just turn down the matthew a little tonight?” I think this was after I told her I would pretend to be “square deal” Sam Beauregarde*.

But I can’t be turned down. The matthew comes out in a different way.

Dreading this all week. So I decided to have some fun. In the late afternoon I gorged on a quart of old brown guacamole and a cold can of refried beans. Then at the event, during the otherwise tedious cocktail hour, I ate as many appetizers as I could. Especially anything with soft cheese or bacon or horseradish. Unfortunately no brassica vegetables were available.

During dinner we sat through some boring speeches by Cleveland’s wealthiest, congratulating themselves on drinking champagne (literally) to help those less fortunate.

But no matter. My GI tract was hard at work. Like that Magician in the Disney film Fantasia. I had set my belt extra loose initially but now I felt like Violet Beauregarde after she chewed that forbidden gum and started swelling up into a blueberry**.

By now I had enough renewable wind energy going to crop dust who’s who in Cleveland last night once the band started playing really loud. Over and over and over.

Check the society pages for photos of rich old folks trying to smile while holding their nose. Now you know the real story.

My greatest regret was failing to meet / fumigate the mayor. He was encircled by too many sycophants. But the good news is that there’s still plenty of poor people that need help and we’re now on all sorts of mailing lists.

So if you ever see me at one of these events, and I’m double-fisting stuffed cabbage canapes, just wink and make sure to sit by a window.

[*] Violet Beauregarde’s dad in Charlie and the Chocolate Factory

[**] that makes two wonka references in the same post! James Joyce*** has nothing on me.

[***] fun James Joyce fact — he got turned on by farts. So that’s why I picked him for that literature dis.

RIP hen #1

For two years now, I’ve been letting my hens free range around in a fenced-in section in my back yard during the day. They love it.

Went out to check for eggs today after work and found one of my girls had been killed in the coop.

Head bitten off. No other signs of predation. Internet forums say this was likely a possum or a raccoon.

Going to set up a live trap tonight. And some wire snares.

I raised these girls since they were a day old. Can’t really remember the last time I was this angry and sad.

What’s good and bad about github issues

Ticketing / workflow / bugtracker systems are always nasty. Github’s is pretty good. Maybe the best of what’s out there. But it ain’t perfect.

Here’s what I like:

  • It’s ready to go immediately once you start your github repo.
  • You can link a commit to an issue by mentioning the issue number in the commit.
  • Labels let you store a TON of metadata.

And what I dislike:

  • No obvious way to tell if somebody is actively working on an issue. More generally, no “status” field exists on an issue.
  • No obvious way to do a query like “label X or label Y”.
  • No command-line interface.
  • Since github doesn’t include a built-in mailing list, github issues often get used for support requests. Then when somebody explains “here’s how to do … “, the issue gets closed, and that helpful expensive-to-write documentation is hidden away. The solution here is for github to host a mailing list for every repository.

I really like my gardening boots

You don’t need many tools to start gardening. You can dig holes with a stick or a sharp rock. You can start seeds in tin cans. You can use all sorts of stuff to carry water. You really only need dirt, sun, and seeds. So don’t run out and buy a bunch of stuff!

But when you realize you’ve got the gardening bug bad, there’s a few tools that really help. First off, you need some rubber boots. Otherwise, you’re going to track mud everywhere. That’s going to make your significant other very annoyed!

I bought these boots in 2006. They’ve held up very well over the last seven years. They’re waterproof, thick enough to block thorns, easy to hose off, and the sole is thick enough that I can push on a shovel with them.

They’re made here in Illinois, USA, by Boss Manufacturing Company. They’ve been around since 1893!

You can order them on Amazon. You can’t order them direct from the company.

Note: I will get some commission if you order the boots from the link below, so if you hate me, you should not click on that link.