Tools

Developer toolchain, 2014 Edition

I try to pause every so often and record what my toolchain looks like.   Sort of like people posting on Everyday Carry, but for what I use every day in development.

  • Development machine: 13" MacBook Pro Retina, 2.8GHz Core i7, 8GB RAM, 250GB SSD.  I love this machine.  My wife calls it my woobie.  She’s not far from right.

  • OS: Mac OS 10.9.4.  Unix when I want it to be, polished Consumer OS when I just don’t care.   It’s been 3 years since I ran a windows box as a development machine and with virtualization I can’t see running windows as a primary OS ever again.
  • Physical Setup: Thunderbolt Gigabit ethernet, Thunderbolt-to-DVI single 23" monitor, Microsoft Natural Ergonomic Keyboard 4000.   I’ve dabbled in multi-monitors and buckling spring keyboards, but this setup keeps my attention focused and my repetitive strain to a minimum.  I’ll eventually wear out this keyboard and probably buy another one just like it.
  • Note taking tool: Evernote, but honestly I’m dissatisfied everywhere I turn.  Evernote gets closest to what I want amid everything else I’ve tried:  Google Keep, OneNote (which is an abomination on the Mac), paper notebooks, PDAs, Google Drive Documents, emails.  I basically pendulum between over-noting and under-noting everything.  Google Drive wants to be the master, but I resist.  I’m not sure why.
  • Blogging Platform: Blogger, through simple inertia.  Wordpress seems like exchanging one master for another.  I’m taking a hard look at Github:Pages and Jekyll because I like finer-grained creative control and Markdown, but I can’t commit to it.
  • Terminal Program: iTerm.   Tabs are nice.  I spend lots of time here these days in irb or grails shell.
  • Command line shell: zsh + oh-my-zsh.   Tabbing command-line completion and aliases for most things.  (Ex: gc == “Git commit”), with a vibrant community to go with it.
  • Package Manager: Homebrew.   I have no idea how I survived on windows without a decent package manager like apt, yum, or brew.  I’d switch away from Windows to *nix or Mac for this alone.
  • Editor: Sublime Text 3.  I’m an old vi guy.  Sublime has let me forget the envy I always had for not learning emacs.  Like homebrew or oh-my-zsh, has a rabid, vibrant community.
  • IDE:  Honestly, none.  I like command line tools and Sublime, but I acknowledge IntelliJ 13 is peerless in the Java/JVM IDE world.  (Sorry, Eclipse…I’ve been a user since 2.11, but you’re just a hot mess.)
  • Virtualization: VirtualBox.  A colleague turned me on to this a few years ago, and paired with Vagrant for setup/teardown, it’s great.
  •  Scripting Language: Ruby.    This one feels like the old Simpsons plot “So you finally decided to steal cable tv.”  Ruby is NICE.  It’s like PERL grown-up, without the awk acne:    The language just falls away, and you’re dealing with the problem at hand.
  • Backend framework (tie):  Rails 4.x or Grails 2.x.  Yeah, I’m not taking a position here.  If you’re playing with the JVM ecosystem, Grails is the obvious pick.    Rails is (and remains) a breath of fresh air, especially with the tools that go with it:  Bundler, Berkshelf, rbenv.  Moreover, there’s a frenetic vibrancy in the Rails community that’s infectious.   Maddening–sure–but infectious.
  • Browser: Chrome.  Frau Perry croons, “We fight, we breakup, we kiss, we makeup.”  Chrome makes me uneasy the same way IE 5 did back in the day–it’s becoming a monoculture, and Google’s starting to get evil with it.  Still, it’s fast and its fundamental architecture still has Mozilla’s Firefox playing catchup.
  • Source Control: Git, specifically Github and Github:Enterprise.  Pull Requests and social coding have changed how developers work in the last 5 years.
  • Mobile: None.  I was a phandroid, but I’m still on the smartphone wagon for 1 year and 6 days now.  I’m not first in line for a mobile development position, but there’s enough left in server and web development that I think I’ll be okay.
  • Social Media:  Twitter for short-form and Facebook for long-form.   Facebook’s just inescapable if I want to interact with family, friends, and church.  They seem intent on running everyone away, but the simple network effect keeps everyone there.  I much prefer twitter, but understand not everyone can stand it, particularly since they went public and started screwing with everyone’s   Google+ is dead, and has been since 3 months after it launched.  Google should merge it with Youtube (the perfectly good social network they already had) and be done with it.
  • Miscellaneous: Vagrant, Chef, gvm, Github Pages, Jekyll, Markdown, npm, 

/Stream-of-consciousness

Meta: On version-control techniques

I’ve been thinking alot about version control lately, because we’re undertaking a big move from Clear Case and it’s Unified Change Management (UCM) process to Subversion, which is the source-control equivalent of the Wild Wild West–anything goes, wheee!!

Meetings were held, proposals submitted, cost advantages debated, and finally the Big Muckety Muck cowboyed-up and made the call–we’re going to subversion and saving a gagillion dollars.

As with many such decisions, this was communicated to the worldwide distributed sites with the utmost care, forethought, and consideration. That’s right–it was 13th out of 15 slides in a Powerpoint deck. Aforementioned plebians reacted with anything from curiosity to outright rebellion.

Getting up-to-speed in the new reality...

Ah, so two weeks have elapsed of my new job, two weeks that skated between elation, boredom, fear, and frustration. It’s a whole different world over here. Some people like it, some people don’t. Me? I’m withholding judgment for now. I do like my team–they seem like quiet, competent, hardworking folks. They’ve been helpful to a total outsider in all senses of the word–an old unix + java wonk who’s now playing in the world of C/C++ and Windows.