Introducing Hypergenesis

The Missing First Step to an Automated Development Environment

I’m a big fan of devops. Using code to configure servers makes their setup predictable and infinitely repeatable. This makes setting up new servers fast, cheap (time = money) and ultimately results in peace of mind. So like many nerds, I was excited to see that Github released a tool, boxen, that applies these principles to development machines. However, things weren’t as beautiful and care-free as I was hoping. As their website itself says, Boxen is “a dangerously opinionated framework” and I ultimately gave up using it citing a clinically diagnosed case of framework fatigue.

To boxen’s credit, their opinions are related to very specific goals, and the more I tried to use it, the clearer it became that I had fundamentally different goals. Once I had that “A ha!” moment, it was only a matter of asking myself a simple question:

What are my goals for managing a development machine?

That’s easy! I never want to feel any anxiety about how long it will take me to be up and programming productively if my machine blows up. Do I care about each small setting being kept in line over time? No. Dev machines are volatile and for that reason puppet (the software that boxen is built on) is overkill. All I want is a fresh install of OS X to be usable as fast as possible.

Usable means many things to many people. For me, a usable setup involves a couple things: As much configuration as possible is kept in dotfiles. I also develop as much as I can in a vagrant controlled environment. There are many reasons why this a great setup but I won’t dive into that now. Onward!

Shazam! Introducing Hypergenesis

Hypergenesis is my first attempt at solving this problem. It’s a bash script that you can configure and run after you install the XCode command line tools.

Hypergenesis tries to be as simple as possible and only does a couple things. It:

  1. Installs homebrew and a bunch of useful brew apps (like git, etc)
  2. Clones your dotfiles repo and sources it
  3. Installs nvm and RVM and the latest versions of node.js and ruby
  4. (My favorite part) Installs all the mac apps I rely on daily (Chrome, vagrant, virtualbox, 1password, etc)

All of the apps and repos are configurable at the top of the script. It’s my hope that this makes it easy for you to specify your own dotfiles or add/remove apps as you wish. Check out the readme for all the gory details. I’d love feedback! Please send pull requests.

  -  Comments   -   Filed under Work

Greenville Grok 2013

I had the opportunity to spend four days this past week in beautiful Greenville, South Carolina attending Grok. What makes Grok great? Think of it as a SlowTech conference. It’s a “tech” conference that focuses on relationships and doing work with a purpose.

I’ve walked away with many new friends, new ideas and challenging thoughts. This is my attempt to sum a few things up:

1. It’s about the people, dummy

The event is designed from top to bottom around providing opportunities for you to ask hard questions, listen and be challenged by others. It’s not a place where you can checkout and learn random technical facts. It requires you to be engaged, interested and willing to participate. It was the hardest and most challenging conference I’ve ever attended. I wouldn’t have had it any other way.

If you’re interested, I’ve made a twitter list of many of the people I met during my time there. (It is by no means comprehensive.) Also, here are more thoughts about the people focus of the conference.

2. It’s good to be uncomfortable

Much of what was discussed at Grok revolved around taking risks and learning hard lessons. One of the keynotes was by this incredible guy named Bryan Martin. This video is a good summary of what he talked about:

Bryan Martin, Designer & Illustrator from 9/8 Central on Vimeo.

As a risk (and mistake) adverse introvert, this conference was a wake up call and a huge, healthy dose of encouragement. Doing something you care about is worth all the necessary risks and mistakes.

3. There are many paths forward, but you won’t find them in a bubble

Grok provided me so many opportunities to talk to people who have started successful businesses, and all of them have taken different paths. The one thing that was the same was that they all knew what they were capable of and found creative ways to support and sustain what they were passionate about.

Srsly, You should go

Grok was just awesome. I’m inspired and excited about my work and its potential - but that’s normal for right after a conference. Grok is different because it offers information in the context of relationships. I’ve learned real lessons from real people, and these are lessons (and people) I can go back to again and again. That is flipp’n awesome.

  -  Comments   -   Filed under Life

Simple Accessibility

Open Source Collaboration at It’s Best

I was sitting at home friday night feeling pretty beat up. I had spent the entire week trying to find a bug in a large peice of code that I help support at P’unk Ave and made no progress. I was aching to write some code that worked and I was proud of. I then pulled out my phone to check twitter and saw this tweet:

Why not? I was curious and eager to write some code and refresh my A11Y skills. Three days, 33 issues and 18 pull requests and 9 contributors later, there is simpleA11Y.com.

I can honesly say that this is one of most inspiring collaborations I’ve ever worked on. Not simply because of the topic or the fact that I was able to work with people who’s work I’ve long admired. It was the process of how this site was made and how easy github made it. It was incredible to see pull requests coming in for simple bug fixes and new article ideas, discussions on different features and plans for the content. It was a flurry of excited people doing a lot of great work and I’m thankful to have been able to witness it happen and play a small part.

Makre sure to checkout Dave’s post on why he decided to make this.

Now back to that bug…

  -  Comments   -   Filed under Work

Document All the Things! Introducing Dox-foundation

Auto-generate API Documentation for Fun and Profit

I’ve tried, very hard, to read many different types of auto-generated documentation. With the exception of a few tools, I’ve always found them to be very unintuitive and unhelpful. So like any nerd who is slightly dissatisfied with something, I set out to build my own. Spurred on by a rather large software project we’re about to embark on at P’unk Ave, I quickly put together dox-foundation. Not only was it an oppurtunity to scratch my own itch, this seemed to be that one good way we could help ourselves keep tabs on the quality of the code.

At it’s core, it uses visionmedia/dox to parse the source code and generate intelligent data. The final HTML output uses Zurbs’s Foundation for its look and layout and the glorious Prism.js for it’s syntax highlighting.

How it Install

npm install -g dox-foundation

There are two ways you can use the tool. To document a single file or have it go over a generate docs for every file in a folder, like lib.

Generate documentation for a single file

If your library is just a single file, you’re probably better off with a simple readme. Using dox-foundation is easy enough to use though, so who cares!

dox-foundation < myfile.js > myfile.html

Generate documentation for a whole folder

This is were things get fancy. All you need to do is tell dox-foundation where the folder you want it to parse is (--source) and what folder you want all the generated files to go in (--target)

dox-foundation --source lib --target docs

This will generate an html file for each javascript source file in the folder and provide a simple navigation between them all.

Going forward

This is still pretty early code and there is a lot of edge cases left to consider. There is also a lot I would like to see implemented to make the interface as clean and useful as possible. I’ll try to keep the issues as up to date as possible so you can see what I’m thinking. Feel free to send a pull request!

  -  Comments   -   Filed under Work

A New Year Noise Purge

Starting Off the Year Working to Increase the Signal in the Noise

The internet is awesome. However, along with a myriad of problems it introduces, we waste a shocking amount of time following, liking, filtering and subscribing. I’ve become increasingly uncomfortable with this fact and how these companies turn what seems like such a simple act into a commodity that they use to make a lot of money.

So what then? Delete all my accounts? I’m not quite there yet. Deleting my facebook account feels like going to the post office and telling them to remove my address. A more practical first step is to attempt to tame these beasts and their hold on my life.

Following, subscribing, friending, oh my!

As of December 31st, 2012, I follow 206 people on twitter, am friends with 496 people and like 144 pages on facebook, follow 86 people on instagram and subscribe to 140 rss feeds where I filtered through roughly 10,000 posts this last year.

That’s way too much.

That is 1072 distinct voices vying for my attention. Every. Single. Day. The first step, of this whole process of trying to get control back is a tedious, but rather simple one. Try to cut that number by at least a third Ideally in half. Yes, I intend to be ruthless. Sorry, “friends”.

The problem of my phone

The smartphone is really good at many things, one of them being encouraging bad habits. It makes it far too easy for me to check in with those 1072 voices at any moment. How often do I check facebook/instagram when I have a spare minute? Why do I do that? The problem isn’t just the numbers, it’s how often I choose to engage them as well.

Step two will be to remove all social media apps from my home screen and hide them in a folder. The worst offenders, Facebook and Instagram, I’m deleting from my phone outright. Facebook’s app, though beautiful, has become the biggest source of noise in my day to day. Suggested likes every other post? Really?! No thanks.

Being a good internet citizen

I can’t just leave this exercise at reducing the amount of noise coming at me. I need to be intentional about reducing the amount of noise I create as well. Step three is another simple one. Shut up. When there is a good reason to post, I need to make sure I’m casting a smaller net. I’m going to be using Facebook’s lists much more often to make sure my posts go to the people they should. I can see no value in a person I haven’t talked to since high school “liking” a photo of my son.

Another problem with noise on facebook is all those wretched apps and games that deem it appropriate to post on my behalf (eg: Matt is listening to Avril Lavigne on Rdio! Matt posted a pin on pinterest!). Do yourself and everyone who is friends with you a favor and clean up which apps have access to your facebook account

There is a bigger picture

When we use the internet without intentionality, the sad reality is that we become unknowning cogs in the money making machines of internet giants like Facebook. These companies would prefer that we continue to proceed mindlessly - for when we do so, they are able to turn each like or each tweet into something they can sell. So it’s important for us to be careful of not only what and how much we consume but what and how much information, that is often truly personaly, we let be used for purposes other than our own.

  -  Comments   -   Filed under SlowTech, Technology

Reflections on the Shooting in Newtown

Notes and Links on Guns, Violence and Children

When I was in college, I took great pride in what I perceived as a fortress of righteous conviction that I built for myself. I built it to protect myself from what I perceived as moral and mental weakness. I let that pride construct a rigid worldview and I clung to quotes like that of G.K. Chesterton: “Tolerance is the virtue of a man without convictions.” Fast forward 10 years and my heart is humbled to realized that the walls that I had built protected me not from external, societal weakness but from truth, reality and how it would confront my own personal weakness.

The hard part is that I’m still working to tear down those walls and learning to engage reality. A huge part of that struggle is figuring out how to loosen my grip on long held assumptions and beliefs. The shooting in Newtown Connecticut has challenged me to put another set of cards on the table that I have long since packed away and have forgotten how to question. I’ve been encouraged to see that I am not alone in this and have been challenged by a number of pieces of writing on the shooting itself and gun control.

The Loss of the Innocents has been the most challenging and inspiring read for me through all of this. Followed by another more emotional article, Safe from Harm, which has provoked many thoughts and interesting discussion with my wife. I’ve also came across three articles which are more data and politics driven and are all tightly related. They discuss what may be the most appropriate and pragmatic first steps in response to this tragedy. The NRA Protection Racket, Scientific American’s Gun Error, and most eye opening Silencing the Science of Gun Research

For your convenience, here they all are again listed out:

  -  Comments   -   Filed under Life

Learning to Appreciate

Or Learning How Not to Be a Mountain of Overbearing Expectations

Despite my son being only 5 months old, I’ve found my thoughts wondering frequently around a consistent theme recently: ”I hope James appreciates _______ someday.” I hope he appreciates food, like how the right amount of ginger can totally transform a meal. I hope he appreciates the intention behind what people say and do and not just what it seems like on the surface. I hope he appreciates all the flavors of straight up black coffee. I hope he appreciates quality and is not distracted by cheap tricks. I hope he…

Wait a minute. It sounds like what I’m hoping for is disappointment for me as my mountain of expectations will inevitably not be met. It also sounds like a whole lot of frustration for James as I smother him with the aforementioned mountain.

Note to self: It’s not about the specifics of what I want for him. I need to restructure my thoughts. How do I teach James to appreciate? Period. It’s not how do I teach him to appreciate the things I appreciate. It needs to be How do I teach him to appreciate the things his heart will hopefully delight in?

  -  Comments   -   Filed under Life, Note to Self