contact us

Use the form on the right to contact us.

You can edit the text in this area, and change where the contact form on the right submits to, by entering edit mode using the modes on the bottom right.

San Francisco, CA, 94160
United States


My Top Ten Favorite Hip-Hop Albums

Jesse Atkinson

I love making lists like this. My friend Don Woods did this so I had to too. If you're older than me you'll scoff at how light this list on older stuff. What can I say? I'm a 29 year old white kid from the suburbs so I have to put the records that turned me on to hip-hop, got me to connect with a world that was much different than the one I lived in, and yet had messages broad enough to resonate with me deeply.

  1. "College Dropout" by Kanye West
  2. "Hell Hath No Fury" by Clipse
  3. "Late Registration" by Kanye West
  4. "Hello Nasty" by Beastie Boys
  5. "The Slim Shady LP" by Eminem
  6. "The Black Album" by Jay-Z
  7. "2001" by Dr. Dre
  8. "Ready To Die" by The Notorious B.I.G.
  9. "Fishscale" by Ghostface Killah
  10. "Good Kid, m.A.A.d City" by Kendrick Lamar

Honorable Mentions

College Dropout

What can I say? I was into hip-hop before I heard this, but so much of the 90s was ganster rap or "money, cash, hoes" rap. This record blew my mind then and continues to. I could talk at length about various things I love about it, but I'll just touch on one. The comedy. This record is hilarious. Kanye does sarcasm and wit so well and it cracks me up every time.

Hell Hath No Fury

I'd heard "Grindin'" but most of what I loved about it was Pharrell's beat. The lyrics and flow didn't strike me. When this record calm out Pitchfork gave it a fantastic review so I checked it out. I remember being so put off by this album at first. It's noisey, Pusha T's snorting is weird, their were no hits, etc. And yet I kept going back to it. Once I got past the initial barriers to this record I fell in love with it. There is probably no rap record I quote as often as this one. It's amazing start to finish.

Late Registration

Yes. Kanye again. This was the first hip-hop album I bought the day it came out. We're talking drive to Best Buy as soon as I got off work to buy it. This album would be perfect if it wasn't for that terrible "Bring Me Down" song with Brandy. Again, Kanye is talking about things that resonated with me. Going to college, struggling to afford the life, and the frustration of realizing how truly useless college can be (for some). And man, if "Hey Mama" doesn't make you cry you're dead inside.

Hello Nasty

"Hello Nasty" by Beastie Boys This was the first hip-hop album I ever got into that wasn't DC Talk or other christian fare. I had to sneak it cause my parents were strict. I thought the Beastie Boys were weird, but I was in 7th grade and I liked weird. Hell, I liked anything. I remember staying up late and begging my dad to let me watch the world premier of the "Intergalactic" music video. He let me. I think he enjoyed the Beastie Boys nods to Japanese monster flicks and camp. The Beastie Boys taught me that hip-hop doesn't need to be about money, cash, hoes, or drugs. Sometimes it's just fun, goofy and smart. I adore everything they've put out, but this was my first and so its my favorite.

The Slim Shady Lp

There are events in our lives that stick with us where you remember exactly where you were when it happened—typically tragedies or deaths. But sometimes they are songs. I will never forget being in 7th grade and Robert Ditzler walking up to me and saying, "Dude! Have you heard this rapper Eminem?" "M&M?" "Yeah, but it's spelled funny. Like written out. You gotta hear it!" "Eh... rap? Really?" "Yeah! But he's not like those other guys!" When I got home from school I turned on MTV and they played the video for "My Name Is...". Holy shit. I could wax poetic about Eminem and what he did for our culture, for rap, and for me, but I don't have the time. So I'll just say this—when you're an angry 7th grader who hates everything seeing someone that looks like you take shots at all the other cultural icons you hate was huge. Unlike a lot of things I liked in 7th grade this record is amazing and holds up.

The Black Album

I'd gotten into my "intelligent rapper" phase. I didn't want to hear anything mainstream. To be honest I hadn't given Jay-Z a fair shot before this, but it didn't matter. I only wanted to hear rap in the vein of Tribe Called Quest, Talib Kweli, and Mos Def. I can't remember how I got my hands on this record, but someone burned it for me. I remember sitting it my car and tearing up the first time I heard "December 4th" (which is still my favorite Jay-Z song to this day). This album had it all and was just solid. But it was (at the time) his farewell album. I knew Jay-Z was big and important. So hearing his last album as my first Jay-Z album made me go back and dig through his whole catalogue. I've been a fan ever since.


I never forgot about Dre because I'd never listened to Dre 1994 to 1999 is only a 5 year span, but that is a huge amount of time for the still young genre of hip-hop. I was 9 in 1994. I remember hearing the older kids sing the chorus of "Nuthin' but a "G" Thang", but I didn't even know who it was at the time. I remember seeing the older kids wear the "Doggystyle" t-shirt with the album art on it. I knew it was something foreign, dangerous, and I wanted to hear it. But I was 9. So when the lead-off single from a guy who the older kids liked featured my favorite (and every white kid's favorite) rapper I had to hear more. It took me a few years before I got my hands on this record (again, strict parents) and heard more than the singles. And they were strict for good reason, this record is filthy. But damn is it ever good. This album is in my opinion the best sounding album I've ever heard. Dre may not be able to write his own rhymes but we forgive him because his flow is excellent and no one makes beats this good.

Ready To Die

I didn't listen to this album until probably 2007. I hated Biggie's voice growing up. But because I'm a student and I hate having gaps in my knowledge at some point I decided it was time I give this a fair listen. Holy hell. It blew me away. I'd never heard "Juicy" (shut up). I heard it for the first time while listening to this album straight through. It genuinely and deeply moved me. That song still sends chills down my spine. The whole album is just so good. So air tight. It also lacked the annoying Puff Daddy with his "Yeah yeah"s through out the whole damn album (god I can't stand... whatever his name is now-a-days). This album is a classic and for a good reason. I don't know if I'd have been open to had it not been for Clipse a year earlier.


I LOVE GHOSTFACE! Seriously though. There is no one more entertaining in hip-hop… scratch that… there is no one more entertaining in music than Ghostface Killah. This album is a blast from beginning to end. The beats are great, but what hooked me is his flow and his lyrics. He's just having a ball and doesn't care if you get it or not. Even the skits on this record make me laugh (which is a rarity). And Ghostface tells stories. He tells tales. He's not just doing the annoying trend of #hashtag rap. He's not just naming expensive brands. He's telling stories. God I wish more rappers would tell stories. I don't care about your watch unless the story of you acquiring it (or the cash to buy it) is somehow interesting. Now I wanna go listen to Ghostface…

Good Kid Maad City

Aw... Look at the baby on the list! Yes, this record is still wet from birth and Kendrick is a youngan, but there is a reason that it's held up alongside "Illmatic" and "Ready To Die" almost overnight. Kendrick is incredibly good. And he has something that you'll see I've praised repeatedly in other records on this list—he tells stories. While Kendrick and I had different childhoods the stories he tells are universal and resonate with me. "The Art of Peer Pressure" is one of those songs that takes me back to my own life situations where things could've gone a different way and make me thankful that they didn't. This album also does something that most albums don't. The songs stand on their own and are almost all hits, but the album also tells and over-arching story. Shyne is wrong, this album is an instant classic.

Tips For New Start-Up CTOs

Jesse Atkinson

I've never founded a start-up. I've never been a CTO. With that said, I have spent a fair amount of time in this industry working at companies that I was not in on the ground floor at. That has resulted in me working in code and with coworkers that were there before me. I suffered and benefitted from those that came before me. Most of the time this meant I spent a lot of time paying for the sins of the past, but I also benefitted from great coders who came before me and established standards.

My best friend is starting a tech company with his brother. This has caused me to really think about what I would do if I was in his shoes. I want him and his new company to succeed. I hope they build an amazing product and make the world a better place.

So here is a completely non-exhaustive numbered list of my advice that I'd give to anyone responsible for writting the initial code at a new start-up. Every single one of these points are intended to be things you're doing or thinking about on day one.

In no particular order:

  1. Establish style guides for all the languages you're using — preferably before the first line of code is written. There's no need to write this style guide from scratch. Many awesome and battle-tested style guides already exist and are easily found. It's much easier to stick to a style guide from the beginning rather than implement after thousands of lines of code are written. When you're in crunch time and angel investors and VCs are asking you when they can see a minimum viable product you will not have time to go and fuss over whitespace or naming conventions.
  2. Establish version control practices. I know git the best so I'll use it in my examples. There are myriad workflows in git. Find one that works for you and stick to it. This will help you plan how you will do releases and handle sticky situations. Ask yourself questions like — will you tag? If so what is the tag naming convention? Do you do rebase when you pull or merge when you pull? When you merge branches back into master do you --squash or not? Do you merge to master with the --no-ff flag? What is your method for handling nasty merge conflicts (they will happen and they will happen at the worst time possible)? If you establish all this at the start things will go much more smoothly as you introduce new people to the team — each with their own version control histories and preferences. You don't want a master log full of squashed commits, merge commit from other branches, and rebasing conflict resolution commits. This is terrible. Enforce consistency.
  3. Write good commit messages. In fact, I recommend against using the -m flag in git unless it's the most small and inconsequential commit. When you use -m you artificially feel constrained to your terminal window and condense your message. Without it git by default opens up VIM (but you can easily have it open your text editor of choice). Seeing a text editor in front of you will encourage you to write better and clearer git messages. Take the time at the start of the company to do this and you'll establish an practice of writing clear and good messages. This will be important when you have 20+ people committing to the same repo.
  4. Don't use trial or stolen software. Seriously. Pony up and buy that Sublime Text or Adobe Creative Cloud license. You're a VC funded start-up.
  5. Use Github and allow as much code and documentation as you can to be public. This will not only help the community, but give interested job seekers a window into how you work. This will help them decide if you're the right fit for them helping you only deal with hiring those who've actually seen and approve of some of your work.
  6. Establish expectations with regard to email. Do you expect your employees to answer emails quickly? Do you expect them to answer emails before 9am or after 5pm? On the weekends? If so will you be paying (partially or in full) their phone bill? Make your expectations known and clear before you hire them so that way there are no surprises and disappointments down the road. Nothing kills a start up in its infancy more than talent leaving. Avoid this by discussing expectations for email upfront.
  7. Take #6 and apply it to any policies or expectations you may have (especially work from home).
  8. Establish culture early. Want a fun office environment? The secret isn't ping pong tables and kegs. It's happy employees who are working on a product they believe in with team members they believe in. Everyone doesn't have to like each other (although it helps) to have good office culture. Having employees who respect one another's skill sets and talents, see their loved ones, and get enough sleep will. Want it quiet? Make it quiet from day one. Want it loud? Get a Jambox and play some music. (Are you noticing a theme yet on establish things on day one?) It's way easier to welcome employee #10 into an already established office culture than to try to implement "culture" after employee #10 arrives. It must be organic. Forced fun sucks.
  9. Back up! These are the early days! Get your employees offsite backup! I recommend Backblaze. Using MacBooks? Buy external drives and have everyone use Time Machine (and encrypt their back ups). This might sound excessive, but this will save you a lot of headache when a key developer (and hopefully everyone at this earliest stage is key) gets his or her MacBook stolen (or more likely gets drunk and leaves it on MUNI at 1am) you'll only be out the cost of a MacBook and not the much more expensive cost of losing all work that's not pushed to the repo yet.
  10. Don't use untested open source software or libraries. Think that new hot JS library is cool? Awesome! Play with it in your free time. But unless its got a 1 or greater in front of the decimal in the version number it's subject to massive changes. Hell — that goes for even after it's 1.0-ed. I know everyone's on Node.js which hasn't 1.0-ed, but it has also been pretty battle tested. Its shortcomings are well documented. Help can easily be found on Stackoverflow. Make sure this is true for whatever third-party code you choose to use. Never forget that you do not own this code. It is a layer of abstraction. That abstraction is (mostly) awesome, but can be very costly especially when they jump to 1.0 and decided to deprecate a core feature you built your entire backend system around.
  11. Stay up to date with what the hell is going in in both the coding world as well as the field your start up is in. This is obvious. I shouldn't have to say it but I am.
  12. Hire unicorns. If you need a Rails dev and you find a Rails dev who is the world's greatest rails dev ask yourself before you hire her if she's good at other things. Sure you need her write really awesome Rails code, but you may need her to jump in and help resolve a javascript issue or fix a database issue. You're a start up. You're young. Every coder you hire needs to fully realize that they are not working at a big mega corporation and can sit safely in the language of their choice all day. Shit happens. They need to be cool with this and have the ability to learn quickly to patch things.
  13. The day you write your first line of code is the day you write your first test. Retroactively testing stuff sucks. Write tests as you go. I'm not going to get religious about TDD, but at least ensure that you're writing tests and application code together. This includes JavaScript. Jasmine is awesome and easy to learn and use. Use it. Save yourself headache. Sleep well at night.
  14. Decide what browsers or OS versions you support right off the bat and then ruthlessly test in those things. Does the website or app need to work the same in all versions? (Hopefully not). Awesome. Read up on progressive enhancement and graceful degradation and do it. If it does need to work identically in all browsers or OSes develop for and test against the least advanced of these.
  15. Abstraction is awesome, but can be expensive. Add layers of abstraction carefully and add them with eyes wide open. (This is a little bit of a regurgitation of #10, but I don't care. I'm saying it again.)
  16. Don't only hire your friends. You're starting a company — not an after school coding club. Sarah may have been your best friend since the fifth grade, but is she really the right fit for the system admin role you need to fill? It's really awesome when the answer to that question is "yes", but you need to be okay with it being "no". And if you're all such good friends they'll understand why you didn't ask them to join your new start up.
  17. Establish code reviews from the beginning. What's the policy on this? Does every commit need to be code reviewed? Can someone commit their own code to master? What tool do you use to code review? Does the commit that corrects the code review need to be reviewed?
  18. Don't QA your own work. You probably don't have the budget for QA, but that still doesn't mean you should QA your own work. Tell your co-worker what business problem you just solved and have them test it from that angle. Don't tell them you made the red button turn green on click. Tell them you added a call to action button for subscribers.

You will be working a lot. You will be worrying a lot. The last thing you need to worry about is if the code base is readable or consistent or well tested. The last thing you need to spend your time on is teaching a new employee about some cryptic poorly-named hurriedly-written method you wrote six months ago. If you establish all of this (admittedly not fun) stuff up front you can enjoy your time away from the keyboard more. Having all of these policies and pracitices established and in place from the beginning allows you to spend your very valuble time on the important stuff. It also allows you to disconnect. You can turn your brain off easier when you know the code base is consistent and well tested.

My Favorite Page

Jesse Atkinson

photo 2.PNG

This is my favorite page in all of comics. This is page 95 in Astonishing X-Men: Gifted. Four panels. No words. Everything said.

Even if you know nothing about the X-Men I think we can at least agree the art here is gorgeous. John Cassaday is one of my favorite artist working today. I think these four panels demonstrate why. The lighting is consistent, his characters extremely realistic and yet some how maintaining a distinct "comic book feel", and there is action.

Obviously, that's not the only reason why this is my favorite page ever. Art alone wouldn't elevate a single page to a level where I felt compelled to blog about it. It's also Joss Whedon's writing. (Yes, I know there are no words on this page.) The writing and the art come together in this insane magical way that happens every now and then in a comic book. Cassaday draws this scene so perfectly that it tells Whedon's story without the need for words.

But there's another factor here. There is the back story which rewards the readers "in the know", yet doesn't alienate the new.

If you do know about the X-Men you'll recognize these two as Kitty Pryde and Piotr Rasputin (better known as Colossus). Kitty can turn herself intangible. She can walk through walls, or as we're seeing here, allow bullets and people to move through her. Piotr, who without his power is an intimidating force. A tall, hulking, strong-jawed Russian that can turn himself into steel.

Kitty and Piotr dated. They fell in love. It was one of the sweeter and better of the comic book romances. Then Piotr died. I won't go into how or why or all that here. I hope you'll trust me when I say his death was very comic book-y (not that that's a bad thing). But for all intents and purposes—to the readers and to Kitty he died.

In the story Gifted that this page is taken from the X-Men invade a base. I don't want to get into the story because that's not why we're here. All you need to know is that they invade a base. Kitty gets separated and gets into real danger. Clearly there are men with guns shooting at her. But right as they get to her she also discovers the prison that's been holding the love of her life whom she thought was dead.

What we see on Piotr's face here is worry and concern. His love is under attack. Kitty's face is full of shock and confusion. She thought this man was dead. And without a single word spoken Piotr chargers forward through her. And that is the thing that makes this so special to me. There is no dialogue spoken. There is no plan of attack. There is no Claremont style expose on what happened, is happening, and will happen. There is only two faces and bullets flying at them. And without a single word spoken there is an understanding. An understanding that only two people who've been deeply in love know. He charges directly at the enemies knowing she will simply let him phase through her. He charges off to defend the woman he loves who is under attack. The irony here is she doesn't need defending at all. She can stand there all day and let the bullets or anything for that matter pass through her. Piotr could stand there and get shot or punched by these guards and they wouldn't do anything. He charges at them to defend her because how dare someone shoot at the woman he loves. How dare someone think they have the right to attempt to harm the love of his life. And as he runs off to save her Kitty stands there with this blank expression of shock on her face and does one single motion.

She covers her heart.

Setting Up A New Mac

Jesse Atkinson

Recently I've had to set up a new Mac three different times. This resulted in me getting a pretty solid process doing this and doing it quick. Well, as quickly as possible. I figured someone out there might find this useful even if they don't end up following it exactly.

This will take at least a solid 5 hours. There's just no way around that unless your internet connection is insanely fast. A few things worth noting before we start this. I keep all of my .dotfiles, notes, and 1Password library on Dropbox.

  1. Run all updates that are possible from the App Store.
  2. Install Dropbox.
  3. Log in to as many accounts as you can in System Preferences > Mail, Contacts, & Calendars.
  4. Once Dropbox's 1Password folder is synced download and install 1Password from the App Store. Once downloaded—launch and make sure app automatically picks up the keys.
  5. Install 1Password extension for Safari.
  6. In System Preferences > Mail, Contacts & Calendars sign into all of the services you use.
  7. Install all other previously purchased apps from App store you'd like to have on this computer.
  8. Install Xcode
  9. Install Command Line Tools
  10. Open
  11. Install Homebrew
  12. Run brew doctor
  13. Run brew update
  14. Run brew tap phinze/homebrew-cask
  15. Run brew install autoconf brew-cask bash-completion cmake doxygen fish freetds freetype gdbm git imagemagick jpeg libevent libpng libtool libyaml memcached mysql phantomjs pkg-config rbenv readline ruby-build ssh-copy-id taglib tmux wget tree;
  16. Make sure to follow the post-installation instructions for Fish to set it as your default shell. Also, read through any other post-installation instructions for the other forumlas.
  17. Install apps. (Note: Using brew cask is faster, but not ideal and requires you storing all of your apps installed via brew cask not in your Applications folder, but instead installs aliases to the apps in the Applications folder.) If you wish to use brew cask simply run brew cask install alfred bettertouchtool firefox geektool google-chrome google-earth instacast iterm2 keyremap4macbook nv-alt opera skype rdio spotify silverlight steam sublime-text transmit things textmate textexpander transmission vlc virtualbox; (Make sure to hang around for various prompts to input password.) If you do not use brew cask manually install all of those from their respective websites.
  18. Create symlink for, .bash_profile, .vim/ folder, .vimrc, .gitconfig, .irbrc and Sublime Text folder.
  19. Check to ensure that that set -g -x PATH /usr/local/bin $PATH is in your ~/.config/fish/ and export PATH=/usr/local/bin:$PATH is in your .bash_profile. Run which git to see the git path. If the path is /usr/bin/git then you are not using Homebrew's git. If it's /usr/local/bin/git then you are. You want the latter.
  20. Install Sublime Text commandline tool.
  21. Set nvAlt to read from ~/Dropbox/notes/.
  22. Activate all licenses stored in 1Password.
  23. Install Inconsolata font
  24. Change Sublime Text's ugly icon to this icon
  25. Set up iTerm 2 preferences
  26. Set up keyboard shortcuts in System Preferences
  27. Set your hostname to something decent with sudo scutil –-set HostName NEW_HOSTNAME. Reference
  28. Unhide your ~/Library/ by running chflags nohidden ~/Library/
  29. Install rbenv.
  30. Install Ruby On Rails gem install rails
  31. Replace your Caps Lock key with a Hyper Key following Brett Terpstra's instructions.
  32. Set up Slogger (Make sure you have Day One installed).
  33. Install Brett Terpstra's Markdown Service Tools
  34. Setup Time Machine backup and perform first backup.
  35. Set Dock icons and other basic OS X preferences.
  36. Set email signatures.
  37. In System Preferences > Users & Groups set your Login Items and account picture if you so desire.
  38. Drink a celebration drink.