Interesting Links: January 2017

Links

  • First, See the Circle: Another great article by Scott H Young that challenges one to think more consciously about which of our behaviors are scripts and which are intentional. Plus, it introduced me to Westworld, a TV show I highly recommend watching (and I don’t say that often!).
  • Mental Models I Find Repeatedly Useful: A monster post by the founder of Duck Duck Go on mental models and thinking better. I certainly will be stealing a bunch of these as I build out my own mental models page.
  • The Challenge of Arendtian Action: Breaking Smart is back! Anything written by Venkatesh Rao you should just go ahead and read.
  • Goals Cause Depression: A thought-provoking post from the always-contrarian Wall Street Playboys. This time, they extoll the virtues of time allocation as a framework for achievement instead of goal setting.
  • How to Break into the Tech Industry: An incredibly thorough post about getting a tech job even with an unconventional background. I will surely be revisiting this article often in my own search for a good job.
  • How You Move Defines How You Live: A follow-up post and set of videos to Tim Ferriss’ Tools of Titans in which Peter Attia shows us the best way to prepare to move correctly.
  • Making Badass Developers: An older video from O’Reilly in which Kathy Sierra, the creator of the excellent Head First series, presents on how developers can level-up their skills.

Books:

Recently Finished:

  • Tools of Titans
  • True to Form
  • The Goal

Up Next:

  • Extreme Ownership
  • Zen Habits
  • Mindfulness in Plain English
  • Mindfulness
  • Radical Acceptance

On Starting Brazilian Jiu-Jitsu

In the past month, I listened to every episode of The Jocko Podcast, in which Jocko Wilink, an ex-Navy SEAL speaks on military leadership, self-discipline, and Jiu-Jitsu. I can’t quite articulate how much this podcast has helped me and I highly recommend it to anyone.

One of the things that I was most excited to try out was Brazilian Jiu-Jitsu. BJJ is a martial art, combat sport system that focuses on grappling and especially ground fighting and, according to Jocko, is the best first martial art to learn and has benefits far beyond learning how to fight.

So this semester, I found a BJJ gym close to me and tried it out for my first week.


“BJJ promotes the concept that a smaller, weaker person can successfully defend against a bigger, stronger, heavier assailant by using proper technique, leverage, and most notably, taking the fight to the ground, and then applying joint-locks and chokeholds to defeat the opponent.” – Wikipedia

Before trying it, I was still a little bit skeptical about just how much leverage could make up for a weight/size difference.

Boy, was I wrong about that. On the third day, I rolled with a girl who couldn’t have weighed more than 100 lbs. Before slapping hands, she seemed perfectly aloof and content with rolling with someone at least 60% larger than her.

The clock started and I thought I might simply be able to pass her guard with strength alone. I moved her arms to one side and tried to explode to the other to get side control. This completely backfired.

I still don’t exactly know what happened, but the next thing I know, she’s mounted on me and put me into the hardest armbar I’ve ever experienced.

I tap, she lets go, and I look at the clock. 30 seconds have gone by.

I look back at her with what could only have been a stupid look of astonishment and she gives back a wry smile. Touche.

We slap hands and go again. I last a little bit longer this time, but she still eventually manages to get me into a rear naked choke. 50 more seconds have gone by…

And again we go. Less than 20s in, she’s again in a dominant position. I manage to get anchored around one of her legs and keep a frame with my elbows between us. This was surely the only thing that kept me from not being submitted (again) in the 20s that remained.

When we get up, I’m completely exhausted and volunteer to sit out for the next round. I look over to her again and get nothing back. It was like she never even broke a sweat during that.

Unbelievable.

Later that day, I saw an even smaller women (probably 90lb, definitely less than 5′ tall) submit a much, much larger man (probably 250lb, at least 6′ tall).

Lesson learned: leverage is a powerful thing.

Even though I get completely wrecked by more than one girl and many, many guys, training is very fun and I plan on continuing it for as long as I can. Even though my aim is not (really) to learn how to fight, if that is yours, especially if you expect to be at a size disadvantage, I highly recommend finding a BJJ gym and checking it out.

The Best Books I Read in Fall 2016

During this past semester, I read more interesting books than I previously had in any similar time period. Below are the absolute best ones. Enjoy!

Sapiens by Yuval Noah Harari

Undoubtedly one of the most thought-provoking books that I’ve ever read. Harari argues that the main differentiator between homo sapiens (literally “wise man”) and every other species is that we are able to collectively believe in non-physical ideas. These “myths” like governments, corporations, religions, etc. enabled us to come together and accelerate our own progress.

 

 

Ego is the Enemy by Ryan Holiday

I don’t think any book has ever made me introspect as much as this one did. In Ryan Holiday’s second philosophical book, he draws the experience of both himself and of people like George Marshall, Katharine Graham, and Bill Belichick to explain that our largest impediment to success is not anything in the outside world, it is our own ego.

See my notes here.

How to Get Filthy Rich in Rising Asia by Mohsin Hamid

I don’t read much fiction at all (two this semester, I think), but this one came so highly recommended by so many people, and for good reason. It’s a wonderful reminder that people are the most important things in our lives, not fortune or fame. The impact that it had only could have happened in the unique way that it was told.

 

 

Why Greatness Cannot Be Planned by Kenneth Stanley and Joel Lehman

Another incredibly thought provoking book that turns conventional knowledge on it’s head. Stanley starts off by describing a scientific discovery made in artificial intelligence that concludes that perhaps objective-based thinking is not the way to go. He then goes onto explain the ramifications of this discovery on fields ranging from scientific research funding to education to personal development. It’s a bit too long and not terribly well written, but the content is exceptional.

See my notes here.

Models by Mark Manson

This is the first dating advice book I’ve read that didn’t focus on manipulating or tricking women into liking you. Rather, Manson explains that one should focus on creating an attractive lifestyle and then communicate it effectively. Improving my dating life is going to be one of my major themes in 2017 an I’m sure I’ll be referring to this often.

See my notes here.

 

 

 

Algorithms to Live By by Brian Christian and Tom Griffiths

 

Theoretical computer science has been a topic that I’ve actively avoided for many years. Somehow, this book, by telling the stories behind discoveries as well as connecting theoretical topics to practical problems, was able to be a true page-turner. Extremely fun book, even for non-technical people.

How I Work

My friend Aaron made one of these here, emulating Lifehacker’s famous series, and I thought it would be fun for me to do one as well!

Location

Troy NY when school is in, Kent CT, Chicago IL, Toronto or Montreal when it’s not except for summer, when I am in whatever my city my internship is (Pleasanton CA next summer, DC last summer).

Current Gig

Computer Science Junior at RPI, will be interning next summer at Workday in their Data Science Team as a dev.

Current Mobile Device

Samsung Galaxy S7. I have mixed feelings about Android, but depend on having a back button way too much. Will probably get an iPhone next just to see if I can deal with it.

Current Computer

Apple MacBook 12″. Fucking amazing laptop, the only bad thing about it is that there are no drivers for the trackpad or keyboard on Linux. But I’m sure that’ll be resolved within the next year though and then it’ll be absolutely perfect.

Background

See my about page for my background.

How do you organize your work?

I use my own version of the Bullet Journal along with the Productivity Planner to get everything in my life in order. Might try to switch to purely Evernote though in an attempt to carry less things.

What tools do you use for development?

Vim all the way! Plugins I use are NerdTree, CtrlP, Airline, Flake8, YCM, Surround, and Solarized.

Whenever I try to move away from it to get the admittedly awesome features of a full IDE like PyCharm, my productivity takes a huge hit from having to delete jk and :w everywhere and I end up switching back.

Besides your phone and computer, what gadget can’t you live without?

My Kindle Paperwhite, nothing even comes close. I definitely spend more time on it than my phone and am probably more emotionally attached to it than my laptop.

What do you listen to while working?

Drum & Bass, trying to match the energy to my mood. Currently obsessed with these mixes and this album.

What are you currently reading?

As I’m writing this, the books in front of me are Song of the Dodo, G.E.B., Cashvertising, and Secrets of Closing the Sale. See here for more.

How do you recharge?

Cycling, especially mountain biking, but since the whether turned cold, I’ll either lift or play basketball. If I can’t exercise for whatever reason, I’ll go for a meditative walk or a nap.

What’s your sleep routine like? When do you work best?

Over the summer, I slept from 8:30PM to 4:30AM and it was great! Unfortunately, this is not even close to compatible with a college schedule (gym doesn’t open until 7:30AM and most club meetings and sports are at 9PM or later), so I just try to go to sleep as early as I can, which usually ends up being somewhere between 11 and midnight.

I definitely work best around 1-2 hours after I’ve woken up and have had a chance to drink my first cup of coffee. I try to do some deep work for at least 3 hours every day at this time before I have to go to class. I’ll usually eat lunch around 12 and then try to get the rest of my work done. After 4PM classes, I’ll hit the gym, eat dinner and leave the rest of the day for reading, socializing, and random admin work I have left.

Interesting Links: December 2016

Posting these once a week was too often, these will now be posted monthly.

Links

Book Recommendations:

Books

Recently Finished

  • The Charisma Myth
  • The Score Takes Care of Itself
  • 7 Day Startup
  • Will it Fly?
  • New World Ronin

Up Next

  • Pebbles of Perception
  • How to Get Rich
  • Tiny, Beautiful Things
  • The Song of the Dodo
  • Godel, Escher, Bach

Negotiating Internship Salary

Sources: The Charisma Myth and Never Split the Difference

Why to Negotiate

  • You will almost always get more.
  • If you do it nicely, they’ll still let you take the original offer.
  • Good practice for learning negotiation, a critical life skill.

How to Negotiate

Preparation

Set a clear goal

  • Do your homework:
    • What are they paying other interns?
    • What are comparable companies paying their interns?
    • What are they paying their full times (total comp)?
  • What are the best case scenarios?
    • Not just about hourly salary, think about relocation/starting bonuses
  • What non-cash things can they offer me?
    • Paid vacation days
    • Pick the team you work on
    • Paid/subsidized housing
    • Flexible hours/working from home
    • Anything else you can think of!

Summarize the situation

  • Describe the situation so that they respond with “that’s right.”
  • If they gave you an offer, they already want you!
  • Seller’s market: good CS talent is hard to find
  • But: they want to get the best deal for their company, that’s their entire job.

Prepare labels and accusations

  • List any accusations that they might make in response to your asks
  • List labels with respond with:
    • “It seems like _ is valuable to you.”
    • “It seems like you don’t like _.”
    • “It seems like you value _.”
    • “It seems like _ makes it easier.”
    • “It seems like you’re reluctant to _.

Prepare calibrated questions

  • Want to figure out what is important to them
  •  Examples:
    • “What are we trying to accomplish?”
    • “How is that worthwhile?”
    • “What’s the core issue here?”
    • “How does that affect things?”
    • “What’s the biggest challenge you face?”
    • “How does that fit into what the objective is?”
  • Be ready to respond to these with labels as well

Showtime

Talk on the phone, not on email

On talking: aim to speak like a late night fm dj

  • Speak slowly
  • Pause
  • Drop intonation at end of sentences
  • Breath from your belly
  • Smile

Show appreciation for what they’ve given you already

Actively listen:

  • Mirroring
  • Minimal encouragers
  • Paraphrasing
  • Emotional labeling

Phrases to use:

  • “I’m sorry…”
  • “This is going to sound harsh…”
  • “What would you like me to do?”
  • “How am I supposed to do that?”
  • “Where did that number come from?”

 

Interesting Links: Nov 20, 2016

What is this?

A collection of links from around the web that I found over the past week and are interesting enough to share.

Here goes…

Links

Books

Recently Finished

  • The Charisma Myth by Olivia Fox Cabane
  • Ego is the Enemy by Ryan Holiday
  • Algorithms to Live By by Brian Christian and Tom Griffith

Up Next

  • The Art and Science of Lifting by Greg Nuckols and Omar Isuf
  • Pebbles of Perception by Laurence Enderson
  • The Daily Stoic by Ryan Holiday
  • New World Ronin by Victor Pride
  • The Inevitable by Kevin Kelly

Always Follow Up!

Short post, but an important one:

During last year’s recruiting season, everyone told me the same thing:

If you don’t hear back, they are rejecting you.

Somehow, I never questioned that until now.

Yesterday I spent about an hour looking up every company I applied to this year and following up with them:

[Recruiter’s Name],

Just following up as I never heard back after I (applied/completed coding challenge/whatever)—am I still being considered for this position?

Thank you!

Best,
Charlie

The result? Five replies, three confirmations of rejection, two interviews in the next week.

Not bad. The lesson: ALWAYS follow up!

How I Found a Bug in HackerRank

For those not in the tech space, or for those who are but haven’t had to interview recently, one of the most recent trends in recruiting is to send candidates a coding challenge. The idea is to screen out those who can’t actually write code (apparently surprisingly common, see https://blog.codinghorror.com/why-cant-programmers-program/) so that you don’t have your engineers interviewing someone who is clearly not qualified.

There are a few companies that have developed platforms that make it easier for companies to do this and by far the most popular is HackerRank. They give you a problem description at the top, a text editor to write and run code in below that and then an input to test on as well as the expected output for it.

After you write code that is able to solve the known input, the server then runs the code on inputs that you are not supposed to be able to see. This is to give companies a gauge on how well you are able to write code that is able to deal with edge cases that are not given to you.

HackerRank lets you see how many hidden test cases there are as well as how many hidden test cases that you have passed. This leads to many frustrating moments when you have written code that gives the correct output on every test case except for one.


About a week ago, [company name omitted], one of the largest and most well known tech companies, sent me one of these and I faced this exact situation. After working on the last problem for a bit, I had a solution that worked for eight out of nine test cases. Sigh.

I read the problem description again and identified four areas in which there could possibly be an edge case with one of them requiring a rewrite of the main data structure that I had used.

Being lazy, I obviously did not want to do this. I really wanted to know what hidden input I was failing on so that I didn’t have to add code for all four of these edge cases when they were just testing for one.

I got up to get another cup of coffee and when I was walking back to my desk, I had a really stupid thought: “Since I know what the edge cases look like, can I just raise a runtime error if I see them?”

I really didn’t expect this to work, but added the two lines of code to test it: screenshot-from-2016-11-02-20-07-27

then I scrolled down and I pressed the submit button:

screenshot-from-2016-11-02-20-06-42

Bingo, I knew which edge case the problematic input was and could skip writing the solutions for the other three.

HackerRank does have functionality to mask the error message, so you aren’t able to write a custom exception to dump the exact input, but this is still a massive bug and something that should be addressed urgently. I’ll be sending this to HackerRank and to the company that gave me the challenge.

Thanks for reading!

 Update (2016-11-07)

HackerRank’s CTO, Hari Karunanidhi, reached out to me:

Harishankaran Karunanidhi (HackerRank)
Nov 7, 03:51 MST

Hi Charlie,

Thanks for sharing the feedback. We have a tough job of finding the right balance between having the test secure and also candidate friendly. For example, hiding the type of error would make it really frustrating for a developer to solve a challenge.

In this case, kudos on tracing out the corner case. For example, your idea of “Since I know what the edge cases look like, can I just raise a runtime error if I see them?” is not something all candidates might get during an online assessment.

Once again, thanks for reporting this. But we’ll display the “Runtime Error” to make sure the product is easy for test solvers to solve. We’ll also work towards making better testcases, so that you are forced to take care of all the corner cases.

-Hari.
CTO,
HackerRank.

His reasoning is understandable, but I still feel that they should just mark test cases with errors and incorrect. Still cool that the CTO himself responded.