For a recent hackathon project, I wanted to setup a client/server
configuration, all in Python, so that the server could run shell commands and
stream the output back to the client. The client was a Raspberry Pi and the
server was my laptop, which already had my real project setup.
My first thought was to do this over HTTP, with Requests for the client
and Bottle for the server. I started writing some code, checked the Bottle
docs for sending a streaming response, and was running with a few lines.
This method for selecting an input stood out to me for being so simple: just
a numbered list. Many command line applications make input too complex, making
the user think about what they want to select, making them type it in
again, while many don’t even support tab complete.
It has now been several weeks since my twenty-seventh birthday. A birthday is
generally always a reason to celebrate, but this birthday, my startup was
acquired by Yelp several days beforehand, which makes this birthday extra
special!
Startups are hard work. Finding a market, building a product, growing that
product, figuring out which corners to cut, or not cut; it’s all hard work,
even though some may make it look easy. I was lucky to be one of the early
engineers at SeatMe and am proud of the team and product we helped build, while
learning some new things along the way. Yelp is a great company with a great
culture and I’m looking forward now to continuing to grow the product.
This blog is now being built using Middleman, a well documented and quite
flexible Ruby static site generator. I had a pretty good run with
Blogofile, the previous engine used to build this blog: over three
years. I’m well aware I spend too much time bike-shedding and
re-tooling sometimes, but the Ruby community keeps pushing things forward and
Middleman has some great features worth upgrading for.
The Great Solution
Middleman’s smart idea is to break everything about a website into a mix of
files, folders, and data. Files can be any format and rendered using any of
a dozen different formats, so if you want to use Markdown or any other format
for writing blog articles, you can. But you can use do Coffeescript for JS files
or Less/SASS for CSS files; they are all just files to be rendered.
Several months ago, I had the pleasure of completing a GoRuck Light event. It
involved a seven-ish mile hike through the Presidio area of San Francisco,
getting a little wet, and finding some new limits for what I know I can
accomplish.
What is GoRuck?
For a little backstory, GoRuck is an American company founded by some
ex-special forces folks (the Cadre) that makes pretty durable backpacks and has
started doing a series of military style events that physically and mentally
challenge you, while training you to work together with a random group of
people.
There is definite value to moving where you work and frequently changing your
perspective on your work, when you are looking for ideas. I have gotten some of
my best ideas recently from conferences, traveling to PyCon in Santa Clara and
this past weekend, Write the Docs in Portland.
The What
Write the Docs is a conference organized to talk about documentation, for
those who document, organize, and share information. It originated as a crazy
idea over beers, but the founders kept investigating and figured out how they
could actually make a conference happen. I found out about it via Hacker News
and decided to sign up as a cheap and fun trip to Portland.
This year was my second PyCon and I wanted to share some thoughts from the
experience. Although it is quite a large event running well over a week,
I attended for just a few days and took away a good amount of information. The
two big themes I noticed, maybe just from the selection of talks I attended,
were Python 3 and IPython.
Python 3
Python 3 was originally slated to have something around a five-year
rollout, which would put us in 2013. Last year, I noticed a few talks for Python
3 and focus still on porting, but this year I felt Python 3 was being used as
the default in most talks. Many (most?) major libraries and tools seem to have
switched over to Python 3.3 and it seems like the community is moving on. Jacob
Kaplan-Moss’s talk on Django and Python 3 was pretty straightforward and useful.
With Django 1.5 now having Python 3 support, the work has moved to upgrading Django
libraries. The vibe to me is that most people have accepted and started using it
where possible.
Over the last year, I’ve made the effort to get most of my passwords into
1Password. It’s pretty nice to only have to remember one password, along
with easily with increasing your overall online security. Whenever another bank
or website gets their password list stolen, I’m not concerned because my
password for that site was “0RLrA4GQeGlRZR” or some other gibberish that was
unique to that specific site.
Anyways, I still use a bevy of command line tools that mostly keep their
passwords in .cfg files or $ENV variables in my home directory. It’s frustrating
to have plain text passwords lying around, even if they are just random tokens.
Over the last few years, I’ve integrated and used many different open source
projects, looking at a wide range of code quality, documentation, and project
organization. Code is just one part of a project, first impressions matter, and
especially when deciding to add a dependency to your project, you want to judge
a project on many different metrics.
READMEs are a big first impression. They can summarize your project, show quick
getting started documentation, licensing information, and are a good metric
about the overall state of your project. GitHub has pushed especially hard for
developers to use READMEs, in trying to make open source projects more
digestible to everyone.
Homebrew is pretty sweet. I’ve been very pleased with easily keeping my OSX
system up to date since it was released; no more Fink/MacPorts, it’s
automatable, it just works (well, as long as you keep installing the latest
XCode or OSX Command Line Tools).
You are using Homebrew to install and update all your programs, right? If not,
checkout the homepage now.
However, when just following the Homebrew repo on GitHub, I think keeping
up to date with what is “new” with Homebrew has always been hard. Maybe
I haven’t paid enough attention or read enough of the man pages.