Programming Interview Study Guide (iOS, Android, Design Patterns, Algorithms)

This is the study guide I built myself over the course of interviewing for iOS and Android development roles over the years. Being a software developer, I figured “If I have to do this more than once, why not just write the guide once and never bother having to track this junk down ever again?” So I did. If you are actively interviewing, I recommend you create your own guide like this (using your own metaphors and wordings)…it will save you a lot of time over the years. Make sure to have sections on common trivia + sections on your domain + common whiteboard problems to practice.

A huge amount of disparate information about software development interviews is spread across multiple books and websites and that it’s purest form is a simple bulleted list which compresses all the most important information into 1/100th of the space. This is my attempt at arriving at that. When I was in full “interview mode,”  I had 100% of this in my head. Getting to that state takes weeks of preparation.

Studying is the act of compressing disparate information to make it more efficient to consume.

I especially like the code samples for tree traversals which I got from a YouTube video linked at the top. These are the most understandable algorithms and pretty easy to remember. A simple rearrangement of the internal methods switch from per-order to pre-order to post-order.

The most important thing you will ever do is to reword these (and other difficult) concepts in your own language using your own metaphors in your own voice. These are written in mine! No other technique has helped me memorize these concepts quite as effectively.
[Read more…]

How To Travel Like An Evangelist

IMG_6806

Evangelist Lyfe

After joining Intel last April as a Developer Evangelist for the “Internet of Things,” I have done more cool stuff, been to more places and met more people  than I have in the last three years combined.

Mashery-style evangelism (heavy on collegiate hackathons via our product Hacker League) is a physical endeavor. We don’t stand around at tables…we circulate throughout large events, constantly helping students with technical problems. A casual measurement via FitBit indicated that I might average up to 20,000 steps per day when in “action travel mode.” Thus the need for a strategic approach to travel…

First things first: Laptop stickers

10641050_10102285358999132_4433180143057745128_n

For evangelists, laptop stickers are a form of passport stamp e.g. “Oh, you were at MHacks too?”
[Read more…]

Setting up Intel Edison (with Intel XDK)

inteliot

Intel Edison is a tiny computer for building compelling #inteliot hardware hacks. This is a quick intro on how to pair Edison with Intel XDK over a local network.

Getting Started Tips:

  • You will need Intel Edison + some kind of mounting board which allows you to SSH into the device / serial into the device to configure Wi-Fi capability
  • This will not work on many public networks (where Wi-Fi “Isolation Mode” is enabled). If isolation mode is turned on, you will not be able to use Bonjour Browser to detect the Edison once it is on the local network and you will not be able to pair it with XDK or SSH into it!
  • Download the Bonjour Browser, a utility for detecting Edison on the local network
  • Download and install Bloop, a tool I have written to automate many common command-line tasks with Edison

Setting Up XDK

Download Intel XDK IoT Edition. Once you install, register for an account and sign into XDK, you should see the following option available under the “New Projects” templates. Click the template to get started with a new Intel XDK project for IoT applications with Intel Edison.

Unknown

Getting Edison on Wi-Fi

The instructions for getting Intel Edison on Wi-Fi are here. If you are on OSX, skip to these directions.

Pairing XDK with Edison

Assuming you have gotten Edison online we can now proceed to deploy code to XDK.

If you haven’t done so already, download the Bojour Browser, a utility for detecting other devices on your local network.

In your XDK project,  click the drop down and see if there is an “Edison” option listed. If not, open the Bojour Browser and find the IP address and port of your Edison. Then select input “Add Manual Connection” and input the Edison IP Address and Port information from the  Bonjour Browser (see below)

IOT Template

Dealing with Intel XDK Whitelist Warning

new

If you are getting the “Authorization Required(401)” warning from Intel XDK, you will need to perform the following steps:

  • Click the blue underlined text in the below dialog to reveal your current IP address (as below)
  • Open Terminal and type in “screen /dev/cu.usbserial” (Tab) to complete then add “115200 -L”
  • Once you have logged into your Edion via the Terminal, run the command:
    • xdi-whitelist –add 192.168.1.3” (that is two “-” symbols in front of “add”, not one)  (replace the IP address with the one you get from the below dialog)
    • Once you submit, you should get a message “192.168.1.3 added to whitelist!”
  • You should now be able to run Node.js via Intel XDK IoT Edition by clicking the “Hammer” icon

Troubleshooting: If you are getting errors, check this guide.

#inteliot #makesoftware

Final Day of IDF

cropped

Spent the last week back-to-back at MHacks, flew to SF and then did three straight days at Intel’s IDF 14 conference in SF. Met so many people, had so many conversations (sent and received several thousand emails) and took a lot of great pictures. Can’t wait to go home tomorrow and sleep in my own bed.

BxSnd-2IAAA0VLL.jpg-large BxR_w2ZCQAEDh1r.jpg-large BxRwgrNCAAABoTi.jpg-large

Mashquatch Survival Hack @ ToorCamp

squatch Congratulations to Franklin Hu for winning the Mashquatch Survival Hack Challenge for his innovation in frozen chimichanga heating: The Solar Death Ray.

Solar Death Ray

Franklin received an Estimote Developer Preview Kit and the coveted Golden Squatch award for survival hackery.

 

Software Development Is “Over”

34068335

Hipster-driven software development

The Hipster Cycle is not only alive and well in the world of software development, it seems to be the primary mechanism of software development “progress.” The good news is that a lot of ground has been covered, the bad news is everything we know about writing software is wrong. Will we be forever doomed to repeat our mistakes? Probably.

[Read more…]