Baby Growth Hacking Lessons

Even the little hacks are fun, and they can teach you a lot.

My very first experience with programmatic automation was when I had the goal of generating myself new business for wordpress theme customization. I had been working a few odd jobs off craigslist, and then I thought, “What if I could see all the jobs posted to Craigslist each day, nationwide?”. It didn’t seem too difficult.

Luckily, I have an older brother that is a rubyist. He was particularly excited about data aggregation at the time, so within a day or two we had a crude script put together. It allowed me to copy and paste the urls of my target cities to a txt file, and it would aggregate the new posts to a CSV file each day.

At the time — mind blown.

I Became Enlightened

When we aggregated this data into the CSV file, I learned so much. I realized I had just put together a 30,000 ft view of the web development market nationwide, and I could see which skills were most desirable (around 15,000 job postings). Wordpress, Rails, PHP, and JS topped the list at the time, which was about 5 years ago. I have a feeling some variation of those job types are still highly sought after.

The other thing I realized was, most Craigslist jobs suck. Most of them aren’t even jobs that you can remotely approach. So that was enlightening too. I knew not to get my hopes up for a career here. Instead I could work smart by milking whatever value truly existed on Craigslist. I noticed there was a demand for remote contractors in specific skillsets (frontend/WP/Rails). So I was starting to see some tangible value from this data.

This data changed my confidence

Most importantly, my confidence grew when I saw this data. I felt like I had a special sauce in the job marketplace that no one else had. I didn’t just think I knew what employers wanted, I knew for sure what the employers were looking for and had data to prove it.

What did I do

I developed my web design portfolio around the skills that were in highest demand and then began approaching those jobs systematically (there’s another growth hack hidden in here). I now had much more confidence that the places I was applying, they would actually like my portfolio.

Baby Growth Hack

Now, I don’t advocate data scraping and automating engagements with real people. By automating you lose value and authenticity in your engagement. But sometimes, you can use programming to automate an interpersonal task that requires no creativity. The first step in applying for jobs is one of those tasks you can automate.

So I wanted to know, how can I apply to more jobs faster than 99.9% of applicants in the country. The only answer — automating the submission of my application. I didn’t, however, want to be perceived as spam or automated. So I needed to do something to be perceived as an authentic applicant (which I really was).

In comes the hack :)

At the time everyone using an iPhone had the email signature “Sent from iPhone”. Apple included this because there was still a stigma alive in the corporate world that phone emails were slightly less professional. Do you remember that? When employers/professors actually harped on employees/students for sending emails with less formatting? Go home middle-management… you’re drunk.

Anyways — The default iPhone signature at the time allowed emails to be identified as such, so employees (and anyone else) were held less accountable for typos and minor errors, but could still communicate quickly.

I knew that most people applying for jobs replied with LONG, DRAWN OUT email responses to these jobs. I wanted mine to be simple, real and authentic.

So for all of the jobs I wanted to reply to (about 30-40 at a time, daily), I sent out a boilerplate response like this:

Hi,


I'm interested in this position. You can find my recent 
work and portfolio below.

Please feel free to call/text/email me at your convenience.

http://iangolden.com
123-123-1231


Regards,
Ian

Sent from iPhone

Breakdown

1. The Signature - The simple email signature at the bottom of this email helped to eliminate the idea of automation being associated with my job reply. For anyone that has hired off of CL (I have), you will receive a ton of spam everytime. I was able to stand out thank to the signature.

2. The CTA - In this particular call-to-action, I gave them the option of texting me. Again, this is a more personal form of communication, eliminating the idea that my reply to the job could be ‘Spam’.

3. The Brevity - Short emails work, it’s just that simple. I kept the email short because I was also sending these as an ‘iPhone User’. The longer your emails get, the more clear it is that they are boilerplate. Keeping it short seemed more authentic.

4. My One, Specific URL - Lastly, I only gave the receiver one link to click, and it was clearly associated with my name. That makes them trust the link as a real portfolio. It is my end goal to get them to my website - the area that I control. If I control the environment that the employer is in when evaluating me as a potential hire, I’m able to create an advantage for myself.

Even in a short email, every single thing is thought out.

The Response

The response was great. Even if I didn’t generate interest from the email, many replied back to me to at least tell me I didn’t fit the requirements or I couldn’t work remote. I think the reason they replied was due to the brevity of my email.

I had a job within 2 weeks for 30 hrs/wk paying $25/hr. I ended up working about 1500 hours there and it funded my first web development company.

Not bad for my first two weeks as a college dropout.

Once I had the job — and my immediate needs were fufilled— I stopped digging into this hack. For a freelancer, this could be a fun project/idea to grow your business income. The real power of this experience was understand the fact that because of programming, I was able to be more aggressive and effective in penetrating the job market. I realized that, regardless of whether or not I held a degree, I was going to be forever enabled due to this new skillset I found.

Can you say freedom?

More growth hacks like this will be coming, with statistics and case studies to be more engaging. At the time, I had no intention of documenting my progress with this, just creating income.

Take care my friends.

Why You Should Really Use Markdown (and care about Keystrokes)

Spoiler alert… It’s because your time actually matters.

Let’s get off on a tangent here. It’s summer 2014 - and I’m finally getting some confidence in Vim. I feel like I can build static sites with Jekyll faster than the average dev, and I frequently talked about ‘building websites in a day’. While this was a healthy, competitive attitude toward output, I wasn’t really focused on long term production.

Fast forward a couple months, and I’m worry-free about my coding future. A buddy and I go skateboarding. I decide to try and ‘go big’ and I end up going home with a shattered wrist (got some good video though).

For the first time ever, I was literally unable to code. I could not produce for my clients.

Needless to say, I got through it. But it shook me up to realize that one simple wrist injury could take so much power away from me. Do I need to stop skateboarding? Should I sleep in a wrist brace? All these questions.

Present day — I still get pains in my right wrist up to the base of my middle/ring fingers. And that’s something I have to live with.

Start Caring About Keystrokes

Ben Orenstein has a great talk about using Vim to save time. And in that talk he mention how many keystrokes it takes to save a file in Vim (5) and how many times a developer might save a file in a decade (250,000). That being said each decade, saving files alone, we are using 1,250,000 keystrokes.

Wow, I just gave myself arthritis writing that.

With my wrist problems, I started to appreciate the importance of keystroke management. Go ahead and jump over to Ben’s talk to pick up some speed techniques in Vim, and also a good mindset on looking to the future of many years of healthy programming. I completely agree with Ben and his thoguht process behind finding ways to shorten your typing and increase your output.

So why use Markdown?

Because Markdown ultimately saves you time and keystrokes, making you a faster programmer with more longevity. Stop destroying your hands/wrists with mindless code repetition, ESPECIALLY if you’re using jekyll daily like I do.

How does Markdown save you time?

Markdown is literally designed around the most repetitive tasks in formatting online — text editing. That being said if you are a developer with a blog, you can save yourself so much headache and stay in the terminal heaven while you work.

If you’re a career developer, longevity and speed need to be two of your priorities. As you continue to improve those areas, you’ll be more stable and able to take care of yourself and your family.

Good Programming Headphones

I was in the market for headphones recently, and I started Googling ‘programming headphones’. Surprised I couldn’t find any articles.

What makes headphones good for programming?

Good programming headphones will ultimately enable you to work faster, more comfortably, and to stay focused.

But in the end it really all comes down to preference. For example, I am more concerned about wearing something low-profile and simple that I am about wearing something that cancels all noise out. So for some, noise-canceling may be their top priority. Take a second to make a list of your priorities if you’re looking for new head phones.

Here’s what I felt contributed to my decision

There were a lot of arbitrary factors that weighed in on my decision, like color, brand etc, but I focused on a list of features I felt allowed headphones contribute to the programmer/entrepreneur.

Fit

A very important factor for working headphones is fit. These headphones, either in-ear or over-ear, need to be comfortable when worn for long periods. Some earbuds, like the iPhone earbuds (which is known to be the most worn programming earbud), kill my ears after prolonged used. So when choosing my headphones, I went with something I knew would be comfortable for 3+ hours.

Wired vs. Wireless

This decision boils down to personal preference. For me personally, I wanted something wireless because my last pair of headphones ripped at the wire.

If you’re trying to decide between wired and wireless headphones for programming, ask yourself this — Are you going to keep the headphones charged? That is the ONLY difference between the two. My headphones use a micro usb charger, which I can also use for my phone. But if you have an iPhone you’ll probably need to keep a second charger in your backpack. Other than that, there is no sacrifice to going wireless.

Noise Canceling

Do you want to silence the world around you when you work? If so, you’re going to need some noise canceling headphones. I’m not an expert here, but I’d like to talk about the commitment of noise canceling headphones. Virtually all powerful noise-canceling headphones are over-ear headphones. That being said, if you use an over-ear headphone, you will most likely not have an inline-microphone (over-ears typically don’t). So by committing to noise canceling headphones, you’re virtually commiting to single functionality headphones. I couldn’t do it.

Microphone

My last, and ultimately very important, factor to my decision was the in-line microphone. I wanted to be able to take calls on these headphones, like iPhone earbuds. This allows me to move in and out of programming for calls seamlessly, which means I can make more money by working faster. I also use a Google Watch, so having this really just completed my wireless arsenal. I feel I’m in Tron when I program.

I Chose Wireless Yurbuds

I got something like this here. Overall, they’ve been working fine. Just remember that the programmer should make the earphones look cool, not the other way around.

Work harder.

Three Ideas that Shaped My Views on Growing as a Developer

This website will serve as a platform for me to speak and develop my personal ideas, opinions, and methodologies surrounding business and technology development. Over the next 5 years I’m going to make a very concious effort to grow in all aspects as both an entrepreneur and a web developer.


That being said I invite dialogue and conversation about my ideas, opinions, and methodologies. I belive strongly that ideas need to be evaluated and discussed by multiple minds in order to truly reach a higher level of intelligence.

Below are some of my personal idealogies when looking at technology and the world:

  • Everyone is an artist, learn like one.
  • Time is the most valuable asset to any developer or entrepreneur.
  • Use the right tools, even if you’re less experienced.

A quick overview of these ideas, but more will come.

Learn like an artist - As a developer, all of your skills are infinitely rich. You will never reach a point of infinite knowledge in which you can no longer expand upon. It’s like playing guitar, no one will ever reach a point of total, absolute knowledge of guitar. It’s an artform.

So what does that do to my attitude as I’m learning? It keeps me humble. It’s important to remember you are constantly a life-long learner and you need to find new knowledge in all your conversations about code. Be an artist and use your tools to create new results, that will in turn, teach you more about your toolset.

Time is Incredibly Valuable - The most important thing we can do to grow personally as web developers or entrepreneurs is find ways to become more efficient. This can be easier for some in life, and others in programming. For me personally, Vim is the holy grail of efficiency when programming. You can create aliases to save your time immediately and map common functions to cut your keystrokes in half.

So how do I make choices surrounding my time usage? First, I take my time seriously. You can’t treat your time like a college kid does, otherwise you’ll get amateur results. Create an aggressive schedule. Then start tracking your time and activitites. Identify keystroke combinations you are overusing. Use your text editor to eliminate those tasks. Reciprocate these ideas to your schedule and marketing tasks.

Tools over Tradition - I want people to value the tools in front of them more then they value their current experience. When you begin to use multiple tools and languages, you will become more versatile as a programmer. Not being bound to any particular language will allow you to think creatively and model your objects more accurately, without the constraints of a particular toolset.

The fact is, flip phones were new technology 10 years ago. We have no idea what technology we will be developing 20 years from now. If you’re a young developer like I am, then you need to be concious and accepting of new tools, not critical and closeminded.

So when I am scouring Youtube for content to absorb, I let my mind wander. I watch videos on languages that aren’t a particular focus of mine. I also always evaluate the industry standard tools for a particular job, before I start. I don’t just dive into my favorite toolset to begin a job —which is okay— I think through who I want to work with and understand the specialized tools for the job.

Hope you’re looking forward to hearing more about these ideas.

Thanks!

URL params for logging into gmail/hangouts

I’m basically always logged into 4-8 google accounts at any given time. Bouncing between hangouts, drive, and mail can be confusing and annoying.

Super simple hack to choose your user in mail/hangouts/etc

https://hangouts.google.com/hangouts/_/bowtie.io/brainstorm?authuser=1_
// the param that matters
`?authuser=0`

// auth second account
`?authuser=1`

// auth third account
`?authuser=2`

That’s the money right there. For gmail, it’s just about as easy:

mail.google.com/mail/u/0/inbox

Starting Gem builds with 'bundle init'

I’ve been building a lot of tiny gems lately to script out some basic stuff. It’s super easy, super powerful, and a lot of fun. I thought I’d share a few tips and tricks to get you rolling out your gem init.

The basics:

Building a gem is simple. All your need to do is add a .gemspec file and file to call your methods from. But how do you grow a bundle?

bundle gem <gem_name>

This is going to spit out a nice little dir:

bin/
lib/
test/
your_gem.gemspec
Gemfile
Rakefile
...

Then… get to it. Having a dir structure is super important to me personally, so this gives me a big head start. I’m also a fan of cleaning the entire dir out if the script is only one file. But that’s for another time.

Annoying rails select helper html options

If you’ve built rails apps this should seem familiar to you:

<%= form_for @model do |d| %>
  <%= f.text_field :title, :class => "form-control" %>
<% end %>

but when you try to add the simple html elements to a select tag, you’ll get some bs.

<%= form_for @model do |f| %>
  <%= f.text_field :title, :class => "form-control" %>
  <%= f.select :title, :class => "form-control" %>
<% end %>

That’s because the select tag takes different arguments, and you’ll have to pass in the arguments accordingly.

<%= select(:resource, :method, options: {}, html_options: {}, &block) %>
# resource is assumed
<%= f.select(:method, options: {}, html_options: {}, &block) %>

So in order to get your classes to work you have to pass in blank objects to options, and wrap your html_options in an object.

<%= form_for @model do |f| %>
  <%= f.text_field :title, :class => "form-control" %>
  <%= f.select :title, {}, {:class => "form-control"} %>
<% end %>