I'm always happy to chat! If you have questions about my writing, want some advice, or want to hire me for training or consulting; just send an email to email@example.com
My newsletter is a weekly-ish set of interesting links and a short essay. The essay may be about programming, design, technical leadership, or anything that strikes my fancy.
About a year ago I got back into freelancing and started building a small, distributed development studio. While I enjoyed the freedom and the people; I couldn't sustain the constant sales cycle and discovered management and operations is a recipe for burnout for me. My constant anxiety over payroll, bookkeeping and cash flow was/is debilitating.
Code review gets a bad rap. People worry that code reviews slow teams down, create conflict between team members, or disempower team members by taking away decision making authority.
Well-facilitated, compassionate retrospectives (the practice of taking time to discuss how to improve the effectiveness of a team) are, in my experience, the core differentiator between a gelling, high-performing team and a team that struggles to get things done.
Tests are use cases. They illustrate how to use the code, how the code behaves, how it works in a given context, highlight pain, and expose complexity.
When they notify us the code does not behave as specified? That's a bonus. Not the goal.
When we don't write tests, we miss out on design feedback.
As bootcamp-esque educational programs train more people on the baseline skills to contribute to a software project, companies are learning how (and how not) to integrate these lower-cost, less experienced developers with their teams. Frequently, these companies hire these less-experienced, single-skilled individuals as "Junior Developers" and throw them at a project. While this has some level of success, savvy companies are turning to apprenticeship.
ZincMade is a recently incorporated business focused on technical team training, end-to-end product development, and technical management consulting. We are investing in a solid foundation for our branding. To do so, we are looking for a designer to provide logo design, typography choices, and color selection services.
It's no secret there is a growing demand for technical and creative skills and that our educational system is struggling to provide the skills to deliver useful, working, modern products and services. This is further exacerbated by our industries unwillingness to look beyond a certain archetype.
When writing gems, we frequently want to verify behavior across a variety of ruby versions. While this is quite easy with travis ci, running microtests before pushing shrinks the likelihood of breaking the build.
Software development is a creative pursuit. It takes intense focus as well as time away from a problem to for subconscious work. Both of these cognitive modes are debilitated by stress and anxiety.
Posted on November 30, 2014 - about devenvironment
Once upon a time there was a Chef. This Chef was sought by all of the rulers in the land to cater their feasts. The Chef was ferried from castle to castle; delighting all for whom they cooked.
I've recently started a Clojure gig, which has a pretty emacs-oriented language ecosystem. Emacs uses Cider and Paredit to make it super easy to:
Plans are worthless, but planning is everything. Dwight D. Eisenhower
Ignorance is a blessing. An opportunity.
Ignorance is where possibilities are boundless.
Don't fear it. Embrace it.
Explore the unknown.
Posted on November 12, 2013 - about mastery
First we shape our buildings, thereafter they shape us.
I've become convinced a life well lived requires a high level of personal agency.
The last 9 months have been some of the most amazing, fullfilling, enjoyable months I've ever had.
As programmers, we split our code along what job those bits of code do for us. We pontificate about whether MVVM or MVC or another pattern is the appropriate way to build an app for the given language, environment, or problem domain.
A long time ago, in an industry far far away, there were two competing production models: the assembly line and the master craftsmen.
Professions are complex. From outside it looks solid.
She chrouches, alert and ready.
Waves crash across the bow.
She clenches the mast tightly
She furrows up her brow.
Winds roar with fury
Waves whip to foam
All other beach-goers
Turn their faces home.
I extracted my jekyll plugin for cache-busting from my blog into a gem,
jekyll-cdn! The main feature is a set
of Liquid filters for getting the right
It's easy when hurt to lash out.
To crush those who caused me pain.
I have a small menagerie I take wherever I go. One who has accompanied me since I was a child is Gertrude. Gertrude is a giraffe with a long, beautiful neck with spots which spell four words: Guess, Google, Grab, Go.
Posted on March 12, 2013 - about makermenagerie
I recently experimented with hosting my blog on CloudFront. While this was great for performance it caused a few issues.
Last year was fantastic. I started my own business, helped three startups get off the ground, learned a ton about working with distributed teams, and fell in love.
I hear your heart beat from all that caffeine
Oh, what a shame there's not more in your bloodstream
So while you're here in my cafe
Let's make the most of the beans that we're gonna grind young
We seem to use
nils in place of a default return value in a function. Say you
wanted to write a function that splits a string on its commas:
Now I know that love is blind
In the dark your smile shines.
My heart is stolen and I feel fine!
Why is organ harvesting a crime?
Two lumps of clay were bought by a potter and set on her windowsill to soften in the sun. The first was terrified of being prodded, poked, and shaped. "I don't want any part of this!" He said, "I'm a good piece of clay! I don't want to be a pot!" and he hardened himself in the noon day sun.
There was a young lad named Rictor
Who gloated he was the Point Victor
But the cards he'd "completed"
Had bugs left untreated
And rejection befell poor young Rictor
Dear Mom, Dad, Gramma, Brothers, Aunts and Uncles
From curiosities, interest.
& is a powerful ruby operator, when you use it as a unary operator it has two main use cases:
Over the past couple years I've done a bit of remote pairing. When I need a GUI everything is pretty straightforward: Join.me for screen/keyboard sharing and iPad with Skype or Google Hangout for video calls. This is pretty bandwidth intensive and can be slow, so I'd rather keep as much as I can in a terminal.
Recently I saw a few highly critical tweets go by my stream about a package written by Heather Arthur. They were by Corey Haines and Steve Klabnik, a couple of my friends.
Recently I sat in on a conversation between two people I respect. One declared empowerment is an individuals choice. We choose how to respond to situations and we can choose to remove ourselves from unacceptable situations.
To ring in the new year, I want to expose some of my ignorance.
Let me start this off by saying I'm furious. I'm furious at my gender, and my 'professional' community.
While at Devbootcamp last week I was introduced to a new phrase by an instructor. I asked how intensely draining his job must be, and he remarked that his wife is amazingly good at "keeping space" for him. I didn't grasp what he meant, so I asked him to clarify.
Excellence is not only about the task at hand.
Occam's Razor applies to your business plan.
I was talking through some of my thoughts on applying visual and interaction design critique principles to code with Enrique Comba. At the time, I was in the middle of analyzing the differences between directly calling the method under test, nested describes and lets, and using a custom assertion.
Once upon a time there was an ant colony. It wasn't a very big colony, but it had the best hunters, builders, and nurses for miles around. For many seasons, the colony prospered.
The difference between an amateur and a professional is their capability to execute consistently in a variety of situations.
Posted on June 20, 2012 - about mastery
TL/DR: BMIF is a thought provoking look at what a business model is and how they impact society. While it's content is exceptional, It has stylistic issues that sometimes detract.
No matter how well you define what should be done you will always wind up with work that isn't quite right. In these situations you have three courses of action: 1. Reject the work and provide feedback. 2. Accept the work and add new work items. 3. Accept the work and ignore its imperfections.
I spent 5 hours practicing visual design.
I am an external thinker.
Once I practiced daily, studied theory, explored composers and genres, and wrote my own music.
Michael Bolton wrote an exceptional article listing three reasons for software testers to learn to write code. Here's three reasons why a tester shouldn't learn to code.
We coders have all kinds of definitions of simple code. To some, simple code is code they understand and read easily. Others believe simple code follows the coolest, most appropriate design pattern. Some say simple code has the fewest characters.
The iron triangle has been redefined several times in the past few years.