The life of a coder in gifs

The life of a coder/developer is both a wonderful and immensely frustrating experience. The scales tip in both directions, usually several times a day. Today was no exception.

The life of a coder/developer is both a wonderful and immensely frustrating experience. The scales tip in both directions, usually several times a day.

Today was no exception. I’ve been stuck on something for the last few days. My code should have been working, but it didn’t. If I had hair to spare, I’d probably have torn some of it out in frustration.

Animated frustration
That feeling, after a few days of trying to find the bug in my code.

Of course, as these things tend to go, I found the reason why my code wasn’t working. It was a typo. A single letter that shouldn’t have been there.

Relief, and annoyance
Oh man, THAT broke my code and left me frustrated and confused for 2 days?

My sense of relief is somewhat moderated by my amazement at how I missed it.

But, on the other hand, I found the bug! Now on to the next new code and the next bug.

Making sense of JavaScript array methods with Array Explorer

Sarah Drasner shared her awesome Array Explorer tool on Twitter the other day. It's design is pretty simple, and yet a powerful way to learn JavaScript arrays.

Sarah Drasner shared her awesome Array Explorer tool on Twitter the other day. It’s design is pretty simple, and yet a powerful way to learn JavaScript arrays. What you do is pick a couple options from drop-down lists to find the right array method you need for a project.

I still find arrays challenging and yet learning how to work with them in JavaScript is so important. If you’re still figuring this stuff out, definitely take a look at Array Explorer, bookmark it, and use it.

Sarah even made the code for Array Explorer available on GitHub so you can see how she put it together too.

An awesome thread about developers’ careers

Stephanie Hurlburt asked for stories from developers about their career paths on Twitter, and it quickly became one of the best threads I've read in a while.

Stephanie Hurlburt asked for stories from developers about their career paths on Twitter, and it quickly became one of the best threads I’ve read in a while. As you can imagine, I have a particular interest in stories about other developers’ careers given my journey this year. This thread didn’t disappoint.

I started reading the thread when I woke up this morning and, boy, what a great way to start a day.

Inspiring developers make Twitter worthwhile

Twitter has become a complicated digital space, to say the least. My "Inspiring developers" Twitter list is one of the highlights of my Twitter experience, and the developers on that list make Twitter worthwhile, despite all the cruft we see there.

Twitter has become a complicated digital space, to say the least. My “Inspiring developers” Twitter list is one of the highlights of my Twitter experience, and the developers on that list make Twitter worthwhile for me, despite all the cruft we see there.

One of the themes that Twitter has helped highlight is how women developers are routinely marginalised, dismissed, devalued. I decided to seek out inspiring women developers and follow them because I was interested in their perspectives on development, life, and other issues.

I’m glad I did. Sure, there are some men on that list (there are plenty of male developers who I admire too) but I wanted to be exposed to different voices.

I am continually inspired by the developers I add to my list, and there are times when I’m tempted to unfollow virtually everyone else and just focus on this growing group of smart, thoughtful, and innovative professionals. See for yourself:

I have learned so much from virtually every person on this list. The fact that this list began as an effort to focus on women developers has become secondary to how much I appreciate being able to subscribe to their shared thoughts.

By the way, if there are developers who aren’t on my list and who inspire you, let me know in the comments or on Twitter?

Photo credit: WOCinTech Chat, licensed CC BY SA 2.0

Why you should learn to program

I just watched Christian Genco's 2012 talk at TEDxSMU titled "You Should Learn to Program". It's a fun 10 minute talk that highlights why it's so awesome to learn to code.

I just watched Christian Genco‘s 2012 talk at TEDxSMU titled “You Should Learn to Program“. It’s a fun 10 minute talk that highlights why it’s so awesome to learn to code.

You should watch this video, regardless of whether you can code or not. As an aside, Genco is a pretty interesting person to follow too.

42

Today is my birthday, I'm 42. This year has been an interesting one, to say the least. I’ve been thinking about what to write about it for a couple months and, as I sit here writing this, I’m not entirely sure what to make of it.

Today is my birthday. I’m 42.

I’ve never been a “well, a birthday is just another number” person. To me, each birthday is a special day, an event to celebrate.

I usually celebrate my birthdays with a “Me Day” if the day falls mid-week. Last year I took the day off, watched one of my favourite movies, and went for a photowalk around my city.

Living in interesting times

This year has been an interesting one, to say the least. I’ve been thinking about what to write about it for a couple months and, as I sit here writing this, I’m not entirely sure what to make of it.

I left my job at InboundJunction in March (it didn’t work out for a couple reasons and my contract was terminated), and I’ve been looking for a job since then. I started doing some freelance marketing work around the same time but my main focus has been on my search for a fulltime position.

As I write this, I’ve applied for 148 positions (I have 67 current applications). Many of the companies I’ve approached and interviewed at, are remarkable companies. One thing that has struck me during my job search is just how many amazing opportunities there are here in Israel.

Granted, not all of those companies are my dream employers but those companies are in the distinct minority. Whatever may be going on in the rest of the world, Israel is buzzing.

Code, the Universe and Everything

One of the benefits of the Israeli social net is about 7 months of unemployment benefits to help get you back on your feet. You can’t retire on the monthly payments but they give you some breathing room.

Rather than spending my time watching Netflix in between job applications, interviews, and occasional freelance work, I started learning to code in earnest. I started with HTML (I knew some HTML but my knowledge was patchy), moved on to CSS, and just kept going.

Although I’ve wanted to learn to code for decades (literally), I never really got around to it (aside from developing a proficiency in MultiMarkdown, and picking up a little Python 2.7.x last year). Being unemployed with time on my hands gave me the perfect opportunity.

A couple factors pushed me off my procrastination ledge. One was seeing our son learning basic JavaScript on Code.org earlier this year. Another was watching a friend of ours spend a few minutes showing us a few simple (yet awesome) command line “tricks”. Then, there is this terrific video from Code.org:

Learning to code has helped me realise that code creates possibilities. Like Karlie Kloss said, “understanding coding is … like a superpower”. It takes from a place where you wish “someone” made that thing you want, to be able to make it yourself.

My journey that started with <!doctype html> has taken me through a fantastic world where, using a text editor and an Internet connection, you can build amazing things. Here are a few of the languages I’ve learned (in varying degrees):

  • HTML;
  • CSS;
  • JavaScript (including Node.js, React and Ember);
  • WordPress-oriented PHP;
  • Shell scripting (I’ve learned to love the command line);
  • Build tools like gulp, npm scripting, and even a little Webpack and grunt; and
  • Git.

I feel like I’m just getting started. There is far more that I don’t know (and want to learn). And yet each time I write code that does something, it’s thrilling!

Along the way I’ve created projects that use what I’ve learned. They include little ones like this birthday site I created for our son when he turned 10, and bigger ones like Modiin Bus (currently being overhauled as I learn).

My coding journey has consumed me. There is always something to learn, code to improve, and projects to build. My personal writing and photography have taken a back seat (as you may have noticed). At the same time, I’ve gained so much in the process.

For one thing, learning to code opens the door to a whole new line of work for me. Rather than being limited to content marketing, I can explore web development roles too[1], and everything in between.

Mostly Househusband

One of the huge perks of my protracted job search is being home for most of the year. It’s almost given my wife and I an opportunity switch traditional roles.

She goes to work (as an awesome account manager at mySupermarket) and I take the kids to school, handle much of the housework[2], manage play-dates and after-school activities.

Being unemployed also made the annual school summer vacation (2 months!) so much easier to handle, logistically, because I was around to take and fetch from holiday camps, and be with the kids when they were just on vacation.

Although the challenges of my job search haven’t always been conducive to recognising the gifts of my current status, the experience of working from home all this time has highlighted what is most important to me.

Rather than never being around due to the demands of an intensive career that keeps me away from home, I’ve been around to watch our kids grow up over the last year.

It’s been a busy period, for sure. I am definitely not the type of person who’ll toss in a load of laundry and veg out till the kids come home. I’m constantly learning more code in between my freelance work, job search, and being here for our kids.

In the meantime, Gina’s career is blooming. She moved into a new account management role a few months ago and is awesome at it. I’m proud of her and of what she’s accomplished. If me being home has given her a little more space to do that, then this is yet another benefit.

So long, and thanks for all the .zsh

Of course, it didn’t escape me that there is something special about this birthday.

While I don’t have all the answers (not even remotely), perhaps being 42 brings a few answers to the questions that I haven’t been able to answer so far.

At the very least, I feel like I have a better grasp on what’s really important, and what isn’t. Regardless of where I may find myself working (hopefully soon), I am grateful for the opportunities I’ve had this year to learn, grow (a little), and be more present (mostly).

Ultimately, living in Israel (and in most of the world) generally means that both of us need to earn an income. So, my search continues. I love coding[3], I’ve had opportunities to interview at some of today’s most exciting companies, and there is still so much more to do.

I don’t know what lies ahead in 2018 but, as I keep reminding myself when I find myself slipping into Regretsville, we only really have the present moment. Sometimes, the moment we are in can be source of boundless opportunities.

It might even hold the answers we seek.


  1. Roughly half of my current job applications are for coding positions.  ↩
  2. Gina still does most of the cooking.  ↩
  3. Even when it frustrates me, when I suddenly can’t remember how to string a function together, or both.  ↩

Parenting moments with shell scripting

I'm both fascinated by and borderline besotted with shell scripting (you know, all that command line stuff). It turns out my son is intrigued by what you can do from the command line, and it opens the door to some pretty cool parenting moments.

I’m both fascinated by and borderline besotted with shell scripting (you know, all that command line stuff). It turns out my son is intrigued by what you can do from the command line, and it opens the door to some pretty cool parenting moments.

This afternoon I showed my son a little script I wrote that opens Firefox Developer Edition, VS Code, Remember the Milk, and displays the weather forecast for my city just by running an aliased script from my command line. The weather service is a very cool command line script that Jessie Frazelle wrote.

My son was astounded when he saw all these apps open after typing a single command in iTerm2. He immediately asked me to create something for him.

So I wrote a similar script for him for his Ubuntu PC. It doesn’t work quite the same as mine does on my Mac (Linux has an interesting way of opening some apps that tethers them to the terminal session) but he now has a little command he can use to open VS Code and give him a weather update from his terminal.

I love that he’s also into these things. He asked me to introduce him to something he can use to learn all these shell commands. He wants to write them down in a sort of cheatsheet. I have a couple of resources (the Linux Documentation Project is an awesome one I only recently came across) I’ll share with him, I think he’ll get a kick out of learning this stuff.

Photo by Lewis Ngugi on Unsplash

My favourite shell command for today – prepend lines of text in seconds

I'm working on a lead generation project for a client this week that, interestingly, led me to a simple, time-saving shell command that enables me to prepend lines of text with a quotation mark. It's more impressive than it sounds.

I’m working on a lead generation project for a client this week that, interestingly, led me to a simple, time-saving shell command that enables me to prepend lines of text with a simple quotation mark. It’s more impressive than it sounds because it saved me considerably more time than it took to write and run it.

One of the methods I’m using to find leads is by running Boolean searches that incorporate multiple search parameters. The search terms are pretty long and look a little like this: "Managing director" OR "sales director" OR "sales manager" OR "procurement manager" OR ...

My starting point is generally a list of search parameters that I need to convert into a Boolean search query. For example:

Managing director

sales director

sales manager

procurement manager

Except the lists are a lot longer. I started off by adding my lists to VS Code because working with this sort of thing in plain text greatly simplifies the process. One of the things I love about VS Code is that you can add a cursor to the end of each line in the text you select. This probably comes from Sublime Text and it’s an awesome feature.

The reason why this comes in handy is because I want to place each of those search terms into quotes so I can string them together with Boolean operators like AND, OR, and NOT.

The challenge I found myself facing is how to move the cursor to the beginning of each like to add the opening quotation mark? Because each line is a different length, I couldn’t just move the cursors from the end of each line to the beginning. I also didn’t want to overwrite the feature that lets me add cursors to the end of each line, either.

I thought that there must be some sort of shell command or script I could run that would parse the text file and add an opening quotation mark to the beginning of each line. It turns out there is (of course). Like many shell commands, it is deceptively simple and does exactly what it says on the box (if there was a box).

There are three options (probably more if you want something different) that I looked at:

sed -e 's/^/prefix/' file

# If you want to edit the file in-place
sed -i -e 's/^/prefix/' file

# If you want to create a new file
sed -e 's/^/prefix/' file > file.new

I went with option 3 and simply replaced the word prefix with my opening quotation mark and ran the command. I output the command to a new file because I didn’t want to destroy my original list. It ran instantly and when I opened the new file, I had quotation marks at the beginning of each line.

From there it was a relatively simple matter to add cursors to the end of each line to add my Boolean operator for my searches.

Using shell commands may seem absurdly geeky when we have GUIs for just about everything, but the more I learn about shell scripting, the more it amazes me. This particular line of code seems innocuous enough but it did something for me in seconds that would otherwise have taken a lot longer.