Archive for the ‘Technology and Computers’ Category

Practical Metaprogramming Video Now Available

Thursday, November 3rd, 2011

As mentioned previously, I gave a talk at Rubyconf XI in New Orleans a few months back. The video is now available. If you want to see me talking about some of the finer details of the Ruby programming language while wearing a shirt from Saturday Morning Breakfast Cereal, here’s your chance.

“Practical Metaprogramming” hosted by Confreaks

It may be a bit of a “no duh” observation to point out that joining a consulting firm has a very different work flow versus working in corporate. A few numbers:

  • Number of days when pairing occurred: 5
  • Number of hours spent pairing: ~37
  • Number of stand-ups: 5
  • Time spent in stand ups (week): ~ 50 minutes
  • Brown Bag Lunch: 90 minutes
  • Emails received within project team: 3
  • Emails received from client: 1
  • Skills Worked On: HTML5, CSS3, Rails, Backbone.JS
  • Times astounded by my pair’s refactoring skills: 2
  • Times astounded by my peer teams’ approaches to managing complexity elegantly: 2

Hipchat!

Tuesday, October 25th, 2011

Earlier this year when driving back to the City from San Jose, I saw this billboard featuring “Y U NO Guy” advertising a service called Hipchat.

Today on my first day at Carbon Five, I got registered for my accounts: email, tracker, etc. And of course:

I USE HIPCHAT, Y U NO GUY.

Hipchat’s founder, Pete, tells the story of Hipchat aweseomeness here.

A Season of New Beginnings: Joining Carbon Five

Wednesday, October 12th, 2011

Probably the most significant constant in the entire history of this blog has been where I have spent several hours of my day each work-day. For a great many years, I have been an employee of Cisco Inc. As of the 19th of this month, that will end.


I will commence employment at Carbon Five, a consulting and application development firm in San Francisco, on the 24th of this month. I am elated about joining Carbon Five’s team of energetic and innnovative developers. I will be doing Ruby and Rails development and I hope to learn more about mobile development, async server technologies, and sexy Javascript front-ends.

Since last Winter Carbon Five has hosted a fortnightly “hack night.” Through the winter and spring they saw me struggle and batter my way through the rewrite of my LatinVerb library and my metaprogramming presentation. Ultimately this co-working session facilitated a relationship which is about to turn into a working relationship. Here are the things I like about them:

  1. Team
    1. Management: Friendly but clearly with a sense of standards and high expectations but with great trust in the developers to do what’s right, well
    2. Staff: Excited, energetic, motivated, funny on Twitter
    3. Size: Forty-ish or souls with whom I can have actual relationships
  2. Culture
    1. Standardized hours (exceptions allowed)
    2. Fancy coffee machine that scares me
    3. Developer-sensitive culture: don’t burn out, do good work on good equipment in a nice place
  3. Agile Methodologies: Paired programming (flexibly), User Stories
  4. Client Engatement: I’ve never worked whith a money-paying customer, I think that’s an experience to have!
  5. Technology: The team there is trying out new ideas and tools all the time.
  6. Proximity: They’re a 3 block walk from my home. Granted, two of those are SoMa wide north-east/south-west blocks, but it beats the heck out of driving or taking the train anywhere. They’re also surrounded by several gyms so I can get some fitness work in.
  7. Type of Work
    1. Application development (including “heavy lifting” of the back end)
    2. Startup / Idea bootstrapping
    3. Design

When the door opened, I felt that the time was right for me to make a change.

I will miss my friends and contacts from Cisco terribly. The people at Cisco and my experiences there defined many of my friends and many years of great memories. Nevertheless I am so excited about my future with Carbon Five. I find so much peace in Ovid these days that I’ll repeat the quote I gave in my “sign off” email:

“As pliable wax, stamped with new designs, it is no longer what it was; does not keep the same form; but is still one and the same;”

Quoque mutabo

On the 30th of September I presented at Rubyconf XI in New Orleans, LA. My topic was “Practical Metaprogramming.”

This presentation was very special for me. Having spent some of my childhood in New Orleans, speaking there was very special. Further, one year ago, inspried by Chad Fowler’s book The Passionate Programmer, I resolved that “One year from now, I will speak at Rubyconf.” I am filled with joy to say that I attained my dream.

I spoke on one of the more complicated aspects of the Ruby programming language: Metaprogramming. Ruby’s constructs allow you to fundamentally and flexibly re-direct calls at runtime and change the object model. While it is generally believed that this is complicated or a weird bolt-on to Ruby, I contend that all programming in Ruby is metaprogramming — from the get-go! I also present a path for learners so that they can level-up. Lastly I show some examples of heavily, and justifiably heavily used, metaprogramming code courtesy of my library LatinVerb.

Here are resources for those in attendance or for those who could not make it.

Or, here are the slides in-line:

Please, if you were inspired by this talk, please leave a comment. If you would like to provide criticism of the talk, please visit the speaker8 page.

Introduction

On May 14th, I competed at a Hackfest hosted by Podio. Podio is a customizable social networking application delivered as a service (aaS). After 8 hours of coding, I placed first in the competition and won a beautiful Apple Cinema Display. In this post I will cover my hack, how it was done, and lessons learned.

Steven G. Harms with his first prize

Victori pretium it

Or, you can watch my video interview

(more…)

I think Ryan and I must be on a similar wavelength lately as I too was thinking the exact same thing as him: I am thankful to not have come of age in an era where the internet’s depthless hard drives could store my equally depthless teenage narcissism or youthful folly for-ever. You can read Ryan’s take here.

As an early (may I say that?) adopter in the general populace (1994, dial up Unix shell on a SCO-V UNIX) of the Internet, I didn’t get off scot-free. Thanks to BBS’ and Usenet, I managed to write some pretty inane things (e.g. “Are you excited about Mike Modano and the Dallas Stars?”) and various comments of the form “Gillian Anderson is the most beautiful woman in the world!”). Thankfully these comments were widely spread, private (in the case of BBS’), and untraceable (in the case of Usenet).

Unlike what faces modern youth, my revelations of crushes, breakups, or photographs of humiliating pass-outs are not recorded, displayed, and / or, as in the case of particularly recirculation-worthy errors, spread globally with witty, degrading commentary added in sans-serif fonts. It seems that the internet has forgotten the essential truth of being young: as youths we fuck up. For a taste (possibly not-safe for work), consider Late Night Mistakes.

To say “fuck up” may seem a discordant note in an otherwise slightly-more-highly-minded essay, but I think “fucking up” is exactly what youths do. It’s not that the young “err,” implying a sense of understanding cause and the full length of effect and they do the wrong thing. No, rather they fuck up. They leave mowers in the rain, crash cars, text and drive1, and run out of gas.

When you ask them why they did (or did not do) what ought have been done, they often have no answer because, research shows, their brain is not fully wired up yet; in case you missed that, they literally do not know. It’s all the free will of an adult without the experience to see final consequences all while being divorced from the motivation. It’s asking for chess, a game of evaluating predicted long-term outcomes, from a Candy Land player (“I go to the green square now!”).2 This implies to me not that they chose to do the wrong thing, but that they simply fucked up. Incidentally, to me this seems the game of parenting: molding kids by providing rote maxims while hoping your kids don’t fuck up unto death before they can start making sense of the world as an adult.

When young the brain is not fully developed, the risk-evaluation cortices are immature and fucking-up occurs. Surely at the age of 25 everyone wishes the option to have a wipe-out, a quashing on mention of the fuck-ups in the previous 25 years. To remember the moments of burning humiliation, despair, isolation, and cruelty are the moments that forge our characters, but it’s nice to know they live back there away from quotidian existence. To feel that bitter flush in our temples and ears when the memories come back too clearly is our private boon, a spur to the right, or a sword-wielding, flaming angel warning off from the wrong path. Is it fair that my private character-forming experiences may be commandeered for sport, or that my lessons sans context are found later? In my generation that was not possible, for today’s it may be impossible to avoid. You know your errors will be documented by a dozen cell-phones, be spread like spilled quicksilver, and will live forever.

For me there is another concern. Not only does the burn of shame endure from moment of fuck-up unto the end of the electronic society, but knowing of the deathlessness of modern error, there will be a chilling effect on the healthy experimentation befitting to this time of life. To be clear, there are fuck-ups, but there are also experiments. Admittedly, sometimes that line is fuzzy, I grant. But if one is afraid to attempt an experiment for fear of it it being wrong and then having it recorded and disseminated as a fuck-up, then some wonderful people will not realize their full, true identity. It’s a pre-emptive shove to keep your exploration about your identity in the closet against the master paradigm. And note, I’m not strictly talking sexual identity, I’m talking about loving cello, being devout Muslim, being an atheist, struggling to be a poet. There’s a chilling effect as we see how deathless media can haunt you forever.

Imagine:

…High on hormones and ill-gained vodka, in a music-thrumming bedroom where the room spins red as her lips careen into her best friend’s… hours later her friend crushes her heart and her weeks of angst by publicly blabbing about the “lez shit” that her friend pulled….3
…The humiliating break-up from something you might work…hours later you have to endure a grilling via dozens of text messages…
…That Goth phase….

To remember and laugh, to move on, to accept is a blessing of aging, but to have it indelibly etched in so many 1’s and 0’s for eternal sport and to know that this is the case could make anyone run from seeing something as a folly of youth or an experiment and turn it into something, quite possibly, not worth living through and past.

The time is, sadly, inevitably coming (has already come?) where the Internet’s perfect, inhuman, and inhumane memory will drive a beautiful life to end itself. Perhaps I can take a page from Dan Savage in preĆ«mption: “For those who have embarrassed themselves on the Internet, it gets better. No matter how bad it gets, we’re born naked, we die with little control over our bodies, you will do well sometimes and poorly others, you will rue and relish alike, and everyone is a fool in love. Try to be honest, nice, and respectful to others, especially those you share your secrets and bodies with. And lastly cut yourself and everyone else a little slack. Be that voice of conscience that doesn’t relish the safe, mean blanket of schadenfreude over the beautiful quilt of friendship.”

Whatever evidence is left, you are more than the sum of your experiences and their record.

Notes:

  1. I’d almost rather give a teen a beer than a phone before putting him/her on the road
  2. Obviously this varies by individual, so yes, there will be some teens who know more about electrical engineering by 16 than I ever will.
  3. Times being what they are, this situation may now be a bragging point.

tmux: A Screen Multiplexer

Friday, March 25th, 2011

I’ve used GNU screen since 1994 to keep multiple terminals open and active on remote servers.

Whew. That’s a lot of my life to be mucking about terminal windows. The longevity of that run should say good things about the people behind screen.

Screenshot of a tmux session

But about 6 months ago at RubyConf i was convinced to try out tmux (terminal multiplexer). It’s a more flexible, more scriptable cousin of screen. You have the ability to divide space into multiple tiled panes so that you can have a code and result window on the same screen, you can attach multiple clients without the fragility screen has in this area, etc. I recommend you check it out.

I’m also going to add some of the tips I rediscover on this post below.


Tips

  1. If you have multiple terminals attached to the same session, the smaller sized client can “lock” the dimensions of the session. You need to detach those other terminal. Use prefix+D to get a menu of the attached terminals and hit enter to disconnect them. When only the current terminal is left, the size will adjust to fill your space. The area that’s available in the larger, but unavailable in the smaller is marked as a pane full of ‘……..’ characters.

New Bag

Monday, March 21st, 2011

I have decided to move away from a stylish Timbuk 2 computer bag.

Steven's Pic for "Whatsinyourbag"

Fully encumbered and with my walk from the train station / around town it seems to be contributing to weakness and irritation in my right outer oblique muscles. Therefore I have moved back to a backpack. If it’s good enough for Dora née Explorer, it should be good enough for me.

Looking at the choices I was struck by how unbelievably dorky they all looked. I tried to buy the most stylish of the available choices and wound up with the Brenthaven Slimline.

Judge for yourself:

Changing the rhetoric: post-PC Era

Monday, March 21st, 2011

Two weeks ago I noted that at the Apple Keynote Jobs had put forth an interesting display of rhetorical jiujitsu: repeatedly referring to now, i.e. the current moment for a sale, as “the post-PC era.” Thus far I hadn’t seen a lot of commentary about the injection of this meme, but I see it now in the incipient stages of taking hold.

Time magazine’s Harry McCracken’s article of March 10th bears the titile: The Post-PC Era Is Already Here. McCracken’s article is more a “mention” than a “use” insofar as refers repreatedly to the introduction of this term by Jobs, but I believe Time’s editorial board is positioning and helping introduce this meme into a wider circle.

I’m not particularly sure that the term needed to be introduced outside of the marketing and messaging departments of Apple, but as the Caltrain rolls out of San Francisco this morning, I count ~70 individuals doing email, web browsing, and word processing — the classic low bar activities of computing demand — on iPads or iPhones.

Verily, a paradigm has changed. It is not in the 90’s paradigm of machine at desk, machine at home, and / or machine in laptop bag that these efforts of my neighbors occur, but much like “cloud” the fact that some other locus for effort is underway is notable.