Stopping by the Training Room on a Snowy Morning

| Comments

With apologies, as usual, to the original author:

What class this is I think I know
The slides are on my laptop though
I did not look at them last night
I can’t be sure I know their flow

My Facebook friends must think it queer
That I am gone nine months a year
My eyes betray I did not sleep
But for this class? Affected cheer!

A student jolts himself awake
To ask if there is some mistake
The only other sound’s the hum
Of laptop fans before the break

These slides are lovely, dark and deep
But I have classes left to teach
And miles to earn before I sleep
And miles to earn before I sleep

Journey Zone 2015: PolarZone

| Comments

The 2015 JavaZone was the same amazing event it always is: world-class speakers, JavaZone’s ground-breaking continuous food concept, and an expo floor that’s actually fun to walk around. Like any great conference, it’s a place to learn and reconnect with friends—some whom I only get to see once a year.

JourneyZone—the long weekend away someplace in Norway that JavaZone provides for its speakers after the conference—is always memorable, but this year was truly a once-in-a-lifetime experience. In commemoration, I present to you Polar Zone 2015:

I Wandered Lonely as a Cloud App

| Comments

I wandered lonely as a cloud app
Late of Heroku purchases
When all at once I saw a crowd,
A host of microservices
Beyond the build, beneath the stats
My code in chunks and bits thereat

Continuous was the app deployed
In all its many-splendored parts
They spread in Dockerfiles alloyed
With CoreOS hosts’ very hearts
Ten thousand saw I when I looked
At Kubernetes’ dashboard hooks

The Mesos cluster’s web display
Showed every resource fully used
Yet the goal at start of day
Was just an app for scraping news
I gazed—and gazed—but little thought
That wealth to me this stack had brought

Now oft, when at my screen I stare,
Commenting on Hacker News,
My only company, despair
And the bill from EC2,
Then filled my heart with sorrow is—
The sorrow of the services.

Inspired by Paul Biggar’s fictional dialog on the same topic. See also the Wordsworth original of which I frankly am not too fond, but for which I am grateful on the occasion of my own fooling about.

DISCLAIMER: since I have friends who work with some of the named technologies, I should make it clear that I am not down on any of them. As I have said elsewhere (shameless plug!), distributed systems are bad in just about every way and should be avoided when possible. Fortunately—since I make my living in distributed systems—sometimes they are the only way to do the awesome thing you want to do.

Goodbye, GitHub; Hello, DataStax

| Comments

I’ve had a great time at GitHub over the past year and a half. I’ve traveled to plenty of interesting places, taught thousands of developers how to do a better job working together, and learned quite a bit myself from GitHub’s unique approach to organizational structure. It’s a tautology to say that the experience has changed me, but I think time will reveal that it has changed me in important ways. Hopefully I can write about some of this in the future.

GitHub is a great place to work, but the landscape of one’s career is constantly shifting, and staying on top of one’s own calling requires constant adaptation and re-evaluation. Managing a career is like climbing a mountain, except it’s a mountain whose elevation constantly shifts in response to your own footsteps. My current path has led me, as of today, to leave GitHub for an exciting new opportunity.

I’ll be joining DataStax as their Director for Technical Enablement. I’ve known the folks at DataStax for years, and even did some contract work for them back when I was on my own. When they offered me an interesting position doing what I love, I jumped at the chance. It doesn’t hurt that they’re a classy bunch of people who seem to have figured out how to combine a startup’s pragmatism and adaptability with the structures and attitudes of a mature business.

Starting a week from today, I’ll be focused on helping DataStax channel partners be better at delivering Cassandra-based solutions to their customers. Apache Cassandra and DataStax Enterprise are complex products that solve difficult problems, and people need help getting that job done. I’ll be doing a lot of the same sorts of things I’ve been doing of the past few years—conference talks, classes, workshops, and videos—but focused on the indirect sales channel instead of the end user. This is a whole new world for me, and I’m really excited to jump into it. I will do my best to keep you posted here with what I learn.

Speaking at DJUG Next Week

| Comments

There’s nothing quite like a home game, so I must say I’m happy to be speaking at DJUG next week on Wednesday, October 10, 2012. The topic will be GitHub Power Tools, including such amazing topics as:

  • Pull Requests
  • Issue Tracking
  • Project Sites
  • Custom domain names
  • Team and organization access controls
  • Wikis
  • OPTIONAL BONUS: Integration with third-party services

It’s like the fun never ends! I’d love to see all my Denver friends there, and join you for drinks afterward.

DJUG meets at the offices of FullContact at 1621 18th Street Suite 40 Denver, CO 80202. Food starts at 5:30pm, and my talk at 6:00pm.

SurvivorZone Documentary

| Comments

I mentioned in my last post that JourneyZone had a few surprises this year—which surprises should perhaps not be all that surprising, given that we were riding mountain bikes in the same part of Norway that served as the location for the Hoth scenes in The Empire Strikes Back. (Thanks to Brendan McAdams for that link.)

Whether we should have seen it coming or not, we had a great time. In fact, JourneyZone wasn’t merely JourneyZone. Witness SurvivorZone 2012:

JavaZone 2012

| Comments

JavaZone 2012 is in the books now. I don’t mind saying I love that show and the city it’s in. Oslo might be an expensive place to visit, but it makes up for it by being beautiful and generally easy to get around.

This was my third JavaZone, but my first as a GitHubber. I actually submitted my proposals to the show before even beginning to consider going to work for GitHub, so there was no Git to be found in my talks as originally planned. Happily, the schedule had some holes open up at the last minute, so I was able to give three talks: a brand new lightning talk on Git internals, my talk on software architecture and form entitled Then Our Buildings Shape Us, and an improvised Advanced Git talk containing some new material I have recently been testing out. The response to the latter on Twitter was especially enthusiastic, with more than a few people saying it was their favorite talk of the show. Thank you, Norway! Honestly, I love you too.

This beer was actually in Flåm, not Myrdal

Next was JourneyZone, rechristened “SurvivorZone” for its 2012 instance. JourneyZone is a three-day weekend trip to some exotic destination in Norway that the conference offers to its speakers. This year, JourneyZone started with a 22-mile mountain bike ride across the mountains of western Norway. This is typical summer fare for active Norwegians (and does not seem at all odd to this active Coloradan), but we just happened to get caught in a nasty bit of weather on Friday afternoon. Five hours of cycling through 35-mph winds and freezing rain will take the fight out of you. Let’s just say I have never tasted beer as good as the beer I had in Myrdal that night, and leave it at that.

Outside our hotel in Aurland

After thawing out and resting up, we took a train to Flåm to rest for the day and tour one of Norway’s largest microbreweries. If Flåm were trying not to be beautiful, it would count as the most spectacular failure known to the sons of men.

When we returned home on Sunday night, I hosted the second annual GitHub Oslo Drinkup. Oslo developers came to talk about what they were doing with Git and with technology in general, joined by not a few JavaZone speakers and staff—Git fans all.

2012 The Octocat makes its appearance in Oslo

Thanks to GitHub for the opportunity to evangelize our technology in places like this, to javaBin and the JavaZone organizers for putting on such a great show. God willing, I will see you next September.

Cassandra MVP Achievement Unlocked

| Comments

I was more than a little bit jazzed a couple of weeks ago when DataStax announced that I had been nominated as a Cassandra MVP for the 2012-2013 term. I wasn’t able to be at the Cassandra Summit to receive the designation in person, but I was no less grateful for it.

As an MVP, I’ll be able to participate in the occasional Cassandra webinar, blog in an official capacity, talk to press like a boss, and generally just enjoy an enhanced reputation in the world of the best scalable non-relational datastore on the planet. Best of all, I’ll continue to speak on Cassandra when I’m able. Be sure to look for me to talk about what my new employer, GitHub, is doing in this space.

It’s one thing for DataStax to recognize members of the C* community who have contributed to its success, but it’s another thing entirely for them to shower generous gifts on them. When I got home early on Saturday morning from a week away, I was delighted to find that they had send me tee shirts, an awesome pint glass (pictured with homebrew), and a new iPad! Thanks, DataStax. This was truly a classy gift for a guy who loves you and your product.

The Maven

| Comments

After I wrote Oh, The Methods You’ll Compose last year, I started casting about for what I’d do next. I had just finished writing Building and Testing With Gradle with Matthew, so JVM build tools were on my mind (and in the case of Gradle, they still are). Standing in my kitchen one spring day, not thinking about anything in particular, it hit me that Maven rhymes with Raven. The rest is, of course, history.

A long and interesting history, as it turns out. One filled with glued-on muttonchops, an awesome sister who knows far too much about period costumes and has more 19th-century-looking artifacts lying around her house than ought to be allowed, and a son who shows no small amount of promise as a composer. It is therefore with great pride that I present to you The Maven:

Full Text of The Maven

Once upon a midnight dreary, while I pondered weak and weary,
Over files from a project which I'd never built before,
While I nodded, nearly napping, suddenly the build was crapping,
As if some build script's code was jacking, jacking up my source code store
"'Tis a little bug," I muttered, "crapping on my source code store—
Only this, and nothing more."

Ah, distinctly I remember I was just a junior member,
Of a staff who counted building code as something to ignore
An open-source solution neatly I had sought to use completely
In vain hope that I deplete the problems in my source code store—
To fix the troubled build that kept a hold on my poor source code store—
My broken build, for evermore.

And the sullen sad surrender of my servers to the end of
Days when code would build had lent me terrors never felt before
So that now, to still the beating of my heart, I stood repeating
"'Tis some little bug entreating entrance to my source code store—
Some little bug entreating entrance to my source code store—
Only this, and nothing more,"

Presently I took to guessing how my build script might be messing
Messing up the build I thought should work as in the days of yore
But the fact is I was coding, not counting on the foul foreboding
Of a Tool now overgrowing the bound'ries of its building chore
It made its mark upon my code beyond its humble building chore
It owned my build, still wanting more

Deep into the POM file peering, long I stood there wondering, fearing,
Doubting, dreaming dreams no coder ever dared to dream before;
But the silence was unbroken (the error message gave no token),
And my greatest fear unspoken was if again I'd have control
Could I again believe myself to be the one who had control?
To own my build, and nothing more?

Back unto my laptop turning, all my soul within me burning,
Soon again the build was crapping somewhat harder than before.
"Surely," said I, "surely that is what happens when a depend'ncy graph is
Stretched until the length of path is b’yond what man has seen before
Let me see what jars are needed, and their dependencies explore—
'Tis just the jars and nothing more!

"Now adopted as our standard to build each project I commanded
Maven be the tool that we would use to ease our building chore
Straight away it took to forcing us to follow, not endorsing
Its coerc’d opinions now divorcing sense from all my source code store
It took control of every build inside my troubled source code store
I built with Maven, evermore

From the enterprise beguiling this tool my fancy into smiling,
By the standard settings and conventions rigid that it bore,
"Though thy brackets angled, Maven, thou," I said, "art sure no craven.
Mayhap you'd ease the maintenance of my builds and their Sis'phean chore
Tell me, can you ease the burden of my Sisyphean chore?"
Quoth the Maven, "Nevermore."

Much I marveled this ungainly tool to hear discourse so plainly,
Though its answer little meaning—little relevancy bore;
For we cannot help agreeing that no living human being
Ever yet was blessed with speaking tools within his source code store—
Tool or script within the central repo of his source code store,
With such name as "Nevermore."

But the Maven chosen boldly as our standard now spoke only
That one word, as if its soul in that one word it did outpour.
No more meaning then it printed—though its output scrolled and dinted—
Till I scarcely more than hinted "Other builds I've built before;
On the morrow it will leave me, as my builds have failed before."
Then the tool said, "Nevermore."

Startled at the stillness broken by reply so aptly spoken,
"Doubtless," said I, "what it utters is its only stock and store,
Written by a tortured coder whose melancholy's only token
Left both code and coder broken till his tool one burden bore—
Till the dirges of his hope that melancholy burden bore
Of 'Never-nevermore.'

"But the Maven still beguiling all my sad soul into smiling,
Straight I wheeled a cushioned seat in front of build and editor;
Then, upon the vinyl sinking, I betook myself to linking
Fancy unto fancy, thinking what this ominous tool of yore—
What this grim, ungainly, ghastly, gaunt, and ominous tool of yore
Meant in croaking "Nevermore."

Thus I sat engaged in guessing, but no syllable expressing
To the tool whose fiery eyes now burned into my coder's core;
This and more I sat divining, with my head at ease reclining
On the Aeron's vinyl lining which the backlight gloated o'er,
But whose charcoal vinyl lining which the backlight gloated o'er,
My code shall see, ah, nevermore!

Then, methought, the air grew denser, perfumed by an unseen censer
And dependencies whose downloads glut my cache, and even more.
"Wretch!" I cried, "VanZyl hath lent you—by these downloads he has sent you
Respite, respite! and some Red Bull from my cursed source code store
Quaff, oh quaff this can of Red Bull, and forget this source code store!"
Quoth the Maven, "Nevermore."

"Prophet!" said I, "thing of evil!—prophet still, build tool or devil!
Whether useful tool, or whether bane of every coder on this floor
Desolate yet all undaunted, on this code base yet enchanted—
On this build by horror haunted—tell me truly, I implore—
Is there a tool that would not own me? Tell me, tell me, I implore!"
Quoth the Maven, "Nevermore."

"Prophet!" said I, "thing of evil! Prophet still, build tool or devil!
By that Heaven that bends above us—by that God we both adore—
Tell this soul with sorrow laden if, by building with the Maven,
Shall I never make the claim that I retain just some control?
Could some little token of my build remain in my control?"
Quoth the Maven, "Nevermore."

"Be that word our sign of parting, building fiend!" I shrieked upstarting—
"Get thee back to Sonatype deep in the night's Plutonian shore!
Leave no jar file as a token of that lie thy soul hath spoken!
Leave my project's build unbroken!—quit my central source code store!
Take thy POM from out my heart, and take thy cache from my code store!
"Quoth the Maven, "Nevermore."

And the Maven, never quitting, still is sitting, still is sitting
In that pallid project's repo deep inside my source code store;
Its POM files' eyes have all the seeming of a demon's that is dreaming,
And the backlight o'er me streaming throws my shadow on the floor;
And my soul from out that shadow that lies floating on the floor
Shall be lifted—nevermore!

Now would probably be a good time to re-read the full text of the original work. It’s truly a brilliant poem, without which this remix would not have been possible.

I Am a GitHubber

| Comments

I started my consulting business five years ago so I could upgrade my computer more often and go to more conferences. Okay, that’s a little bit of an exaggeration; not all of my concerns were so quotidian. I had also run out of opportunities for technical growth at that company, and didn’t want to become obsolete in my mid-30s. So I went into business for myself. I named the company after a Church Father of whom I happen to be a moderate fanboy.

I had several goals when I started. I wanted to become noteworthy, I wanted to work on cool tech, I wanted to build consequential systems, I wanted to make a lot of money, I wanted to build and mentor a team, and so on. I also wanted a new laptop every two years and to go to No Fluff when it came to town. Was that so wrong?

I reached a few of those goals. I successfully bought laptops and attended No Fluff four times before I joined the tour myself. I’m as noteworthy within my circles as I need to be. I’ve established a decent reputation as a conference speaker, with the promise of additional growth in the future. I have aligned myself with some technologies I think are cool. I’ve discovered a passion to teach, which I’ve been able to pursue rather fully. I don’t build a lot of truly consequential things—at least not on a grand cultural scale—but I have done good work that has been a practical means by which I could love my neighbor and produce small islands of order in a world of chaos. And the money has been fine.

I’ve never quite succeeded in building a team, though, and this has been an impediment to me. I really like the ethos of eating only what I kill, but in reality, that ethos is economically inefficient in the extreme. Hunter-gatherers do not accumulate wealth. Worse yet, I am deeply satisfied by mentoring people, which is hard to do alone. If you will forgive me a small shift in the metaphor from the paleolithic to the neolithic: hunter-gatherers may be permanently afraid of being hungry tomorrow, but shepherds without sheep are not even shepherds.

A few months ago, I very rapidly came to a point where I had to decide what it is that I really care about. To what am I called? Is it entrepreneurship or is it building useful things together with other people? If my calling (to coin a Pauline phrase) is to build where no one else has laid a foundation, then I am compelled to stick it out on my own and fix the character defects that have kept me from achieving the goals I had not yet met. If, on the other hand, my calling is to build consequential things, and to shepherd other people in the process of building the same, then whether I work for a company I own or a company owned by someone else suddenly becomes unimportant. It became time for me to know whether I am essentially an engineer or an entrepreneur.

With that question at hand, I found myself with a generous offer of employment from quite possibly the best technology company on the planet. I had already fallen in love with their culture and the deeply humanizing way they build things and organize work internally. I am truly excited about being able to work alongside and learn from some of the best in the business. And I am definitely not above being attracted by the cachet they hold as a beloved member of the development community. An opportunity like this is a very clarifying thing, and has helped me refine my understanding of my calling. I am most certainly an entrepreneur, but only incidentally. Essentially, I am an engineer. And so I go.

This company doesn’t do titles and doesn’t assign you work, so I don’t really know what I’ll end up doing at the end of the day. But if I understand things correctly, my work will really only be limited to my own vision, innovation, and ability to inspire others to cooperate with me. I’m keenly aware of where my weaknesses lie as a person, but on these three counts, I should be just fine.

This is the part where I should say it’s been difficult to say goodbye to five years of independence and the dream of building on my own the kind of company I am joining today. But the fact is, it wasn’t really difficult at all. Once the opportunity was clear to me, it was pretty easy to figure out where I was going, what I would spend the coming years doing, and what a nontrivial portion of my identity was going to become. And today, I am happy to be able to tell you what that is.

As of today, I am a GitHubber.