Kate's Code Derps

A topnotch WordPress.com site

Toptal Follow Up: How Video Email Converted a Failed Interview Into a Job — October 21, 2015

Toptal Follow Up: How Video Email Converted a Failed Interview Into a Job

As mentioned in the previous post, I had applied to Toptal (a network of high quality freelancers) in the hopes of saving myself from the tepid waters of job hunting via self-promotion.

 

Here’s the follow up on that tale:

 

On 9/17, I flunked their programming test.

 

On 10/21, I accepted an offer from Toptal itself.

 

Wait, I flunked and still got a job? Yep. I got through the initial meeting and was then presented with a set of 3 Codility tests over the span of 90 minutes. I picked php as my language of choice and…completely flunked the test. Perfect 0.

 

The woman I’d done my initial interview with sent me a very polite email, saying that I had failed the coding exam and that they could not proceed with my interview process.

 

(Pro-tip: before you take a programming test, program something in the language you’re about to test in. My most recent language had been python, so I spent stupid amounts of time remembering php’s syntax and native method calls.)

 

I took a day of recovery (I was kind of in shock, to be honest) and then sent her a shaky thank you video via my BombBomb‘s video email.

I sent the video on the 18th. With BombBomb’s email tracking, I would know when the video was watched. Based on their tracking, the email was opened but the video skipped. I called it at that and sulked over my results while ruminating on how to find work appropriate to my coding skillset; timed tests/speed programming aren’t what I’m good at.

On the 30th, I got the surprising notification that my video had been watched. Same day, I got an email from the woman who’d done my intro interview, introducing me to someone else in the company. He wanted to schedule a call with me after having seen the video I’d sent her.

I was flabbergasted. A few days later I talked to him, and he expressed interest in hiring me at Toptal directly, not for the freelance contract programming to which I’d applied. In one of my less intelligent career moves (that I’d do again in a heartbeat), I said, “You..are aware I failed the programming test, right?” He smiled and said yes, he was. He went on to say that he liked the optimism and presentation of my video email and wanted to bring me on board to see how I worked with Toptal and it’s culture, aaand, if both parties were a-ok, move me up, sideways, whatever direction was appropriate for me and my skillset.

 

Oh. My. Goodness.

 

And that’s how the closing ‘thank you’ video to a failed interview landed me a job anyway.

 

So don’t forget to follow up on leads you think you’ve burned. Showing diligence, modesty, and honesty still counts in the work world!

 

Toptal: My Salvation? — September 14, 2015

Toptal: My Salvation?

I have a confession.

I’m a pompous coward.

I’m also above average. I’m used to it. I’m proud of it. I’m pretty much always at the front of the herd in anything I try my hand at, standing out just enough to get noticed, but never so far forward as to get picked off by the circling lions.

One day, I got it into my head that because I’m above average I didn’t need to work crazy hour weeks, even-though-I’m-only-being-paid-for-35-a-week-but-the-servers-went-down-and-I-couldn’t-just-leave-my-coworkers-there. I didn’t have to feel dismissed because my boss didn’t believe in automated testing and my championing for it was disregarded offhand. I could work on my terms, on projects I wanted to. While not wearing pants. I didn’t need crazy money anyway.

So I dove head first into this world of freelance/part time work with rosy star-shaped glasses and criminal optimism.

I know C#, I know php, I can grope my way around Amazon Web Services as a half stack employee (coined by me to mean not-quite-full-stack but getting there)! I’ve given consultations to start ups on what to look for in their web devs! I can learn ANYTHING.

And then I got into the real world, where:

  • Customers think web development is as easy as a screen shot and ‘it’s sort of like ebay, but for lion-shaved chinchilla gear…’
  • I can’t tell the difference between scam customers/companies and really passionate idiots.
  • Where I couldn’t rely on the herd, the pack, for support and guidance when I bit off a bit more than I could chew.

Really, those last two got to me the most.

Alone in the wild of freelance programming, I was hunkered down in the tall grass shivering and helpless: I couldn’t trust any fresh client, and for any job I could trust, I had no one but StackOverflow to turn to if I struggled. I stopped looking for leads– they all felt fishy, and if they weren’t fishy, what if I couldn’t do it because of my inexperience?

I was afraid of my clients.

Really, that’s why I looked into the Toptal Web programmers network. They sounded legit. They had people calling them legit (ha, /r/freelancers). They offered comfort in resources and legitimacy.

I approached it as nervously as a new client, sniffing it out first. How did they vet their developers? Could they guarantee my security as much as my clients’? What if I need a nudge in the right codematical direction?

Hmm, on the web page, their ‘hire a developer’ and their ‘apply as a developer’ buttons are equally prominent. Well, that’s good.

They have legitimate real-sounding people- both developers and clients- for their testimonials. Also good.

Oooh, they acknowledge part time and hourly engineers right off the bat. Yesss.

Toptal has a best practices library!? squeeee

So of course I threw my hat in the ring and discovered something simultaneously heartening and frightening: they put you through a pretty extensive interview process. They mean it when they say they’ve got top-notch devs.

My excitement and nervousness rose in equal value. Imagine what their process is like for their looking-to-hire clients! If it’s even one quarter of the dev app… Can this be my salvation? My answer to creepy check-bouncing clients and pro-bono beggars?

…will I make the cut?

There’s hope, now, for pompous, coward, freelancer me, hope of finding a pack and not being terrified of my own prospective clients. Hope of turning Terrified into Toptal.

‘Til next time on Kate’s Code Derps!

Virtual Harddrive Tip: Storage Tip — June 12, 2015
Setting up Golang on Windows — May 29, 2015
Golang’s ‘imported and not used’ message is a breaking error! —

Golang’s ‘imported and not used’ message is a breaking error!

When running main.go and you get something like this in the output, this ‘warning’ is actually an error and will stop your code from executing:

‘.\main.go:5: imported and not used: “log”‘

Since I was running in Docker, I had no clue that my app wasn’t starting as a result of this. I just assumed that ‘imported and not used’ was a warning and ignored it, and proceeded to skulk around wondering why my simple tutorial wasn’t executing.  A good explanation as to why this behavior is expected in golang is found on StackOverflow by Florent Bayle.

Using javascript’s .replace() for https and https? .Use split()! — March 17, 2015
Jinja2 ‘for’ loop index — January 26, 2015

Jinja2 ‘for’ loop index

For better or worse, I end up doing a lot of piece meal programming on an ‘as needed’ basis. Today I needed to figure out how to get the index of an item inside a jinja for loop.

{% for update in incident.updates %}
    {# I need the index of update in incident.updates! #}
{% endfor %}

Going object oriented in this case was mistaken, as my first guess was ‘update.index’. A quick glance at code snippets seemed to confirm this, but nope! You gotta use the ‘loop’ syntax!

{{ loop.index0 }}

‘Loop’ just says ‘whatever iteration we’re on’. ‘index’ is the current iteration of the loop, but SURPRISE, it’s 1 indexed. ‘Index0’ makes it a 0 indexed loop.

For more info, check this handy dandy sheet at jinja.pocoo.org!

.focus() vs .blur() for JS events — January 15, 2015

.focus() vs .blur() for JS events

I had a problem where every time I .focus()’d on an invisible div (so I could use

textarea.select();

so that I could easily let the user cntrl+C the text within a table, regardless of its makeup), it would bounce to a different part of the screen ’cause the div was technically not in the same spot as where the scrollHeight was.

After a lot of dorking around with trying to change the position of the hidden div, etc, etc, I found one shiny little line on StackOverflow which solved all my problems:

textarea.blur();

Which happily would be followed by

textarea.select();

WALAH. ❤

JQuery’s .hide() vs. CSS’s visibility:hidden — December 23, 2014

JQuery’s .hide() vs. CSS’s visibility:hidden

JQuery’s .hide() removes the element from the page- including the space it takes up by changing the CSS value if display. You manipulate it with inline CSS and with JQuery via:

  • $(‘#div’).show();
  • $(‘#div’).hide();
  • $(‘#div’).toggle();

CSS’s visibility:hidden hides the element, but the space it takes up is still reserved. You manipulate this with inline CSS and with JQuery via:

  • $(‘#div’).css(“visibility”, “visible”);
  • $(‘#div’).css(“visibility”, “hidden”);

There are other methods floating around like .attr(‘visibility’, ‘visible’), but those aren’t actively adding CSS to the drawn style, so it won’t help you here!

Handlebars #each and tables – No go without —

Handlebars #each and tables – No go without

Guess what!

{{#each this}}

Doesn’t work inside a table tag..UNLESS you use a <script> tag for your template. Yeah, that was exciting to find out. It just leaves the uncompiled {{variable}} in the HTML. So this:

    <table><tr><td>Name</td><td>Email</td></tr>
        <div style="display:none" id="salesRepListHTML">
                {{#each this}}
                <td>{{name}}</td><td>{{email}}</td>
                {{/each}}
        </div>
   </table>

Will just output Name, Email, {{name}} and {{email}}.

UNLESSSSsss you tell your browser to keep its ugly mitts off the template HTML. Browsers will mangle handlebars HTML, unless it’s protected inside a <script> tag. So if you want to make handlebars work inside a <table>, define the template like so:

<script id="salesRepListHTML" type="text/template">
<table><tr><td>Name</td><td>Email</td></tr>
        <div style="display:none" id="salesRepListHTML">
                {{#each this}}
                <td>{{name}}</td><td>{{email}}</td>
                {{/each}}
        </div>
   </table>
</script>

And then suddenly everything’s better! Just do it.

Design a site like this with WordPress.com
Get started