Archive for the ‘Ruby’ Category

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.

Presentation from Lone Star Ruby Conf V

Sunday, August 14th, 2011

On the 12th of this month I presented at Lone Star Ruby Conf V

I have been working on a project for the last few years that conjugates regular Latin verbs into specific, as well as aggregated, results (Code). While coding this library, I had some ideas about the tools and techniques that made it possible for me to handle the complexity of this issue. From these ideas I derived some guidelines about how to decide “when to metaprogram and how.” I presented this.

Here are the slides slides from the presentation.

When involved in the Ruby frequently one hears things about how great the job market for Ruby programmers is. It is great — especially when compared with the stagnation in other markets, regions, and disciplines. Recruiters bombard the Meetup groups, attend the meetups, show up at hackathons, and contact you via LinkedIn. It’s nice.

Matsumoto-san created Ruby, and present with a slide reading “Great Pleasure” — happy runs deep

Given the numbers of Ruby jobs, or, “opportunities,” I frequently see other Rubyists touting happiness in the job as the ne plus ultra of work motivation. The commentary is frequently of the form: “Leave your present situation for a Ruby situation because there is a great quantity of opportunity for Ruby jobs and, let’s face it, if you were to write Ruby all day how could you not be happy?” The happiness-as-virtue-in-extremis is further encouraged since one of the community’s most visible luminaries wrote a wonderful book that described how to have “a remarkable career in software development” and encourages developers to think long and hard about the happiness and peace generated (or not) by their current position.

In sum, Rubyists think it’s pretty darn important to be happy at your work. I’m proud to be part of a community that has “taken the red pill” but some of the commentary promulgated can, betimes, seem a bit insensitive if not naïve. Let me say first, nzkoz is not insensitive or callous, but it’s the example that got my gears turning on this topic.

“If you’re a developer doing a job you hate, you are useless or totally doing it wrong. So many people hiring right now…”

Source @nzkoz

There are many good reasons to not leave something you hate (i.e. that which earns you your daily bread) besides being useless or “doing it wrong.” Furthermore this tweet may just oversimplify between the extremes of “like” and “hate.” Make no doubt, I understand the spirit (yes, it was funny!) of the tweet and the 140-character limitation.

I think it would be a a worthy feature-add to this discussion for the brave Rubyists who have followed their bliss to tell the story of the form:

Yes, I left my job at BigCo as a senior developer after 15 years. It was the scariest thing I had done to leave that comfort and to joing RubyRazzle.com, not least of which because my autistic son Jeb requires private education and my eldest daughter, Jenny, required orthodontics after a freak crocodile wrestling accident. While RubyRazzle seemed likely to succeed, there were no guarantees. Heck, while some people were thinking about “Will I use Redis” I was thinking “How much extra is it to get my wife Suzy medical coverage deriving from that skiing accident she had years ago. Obviously, RubyRazzle didn’t have the cash inflow that BigCo had. Less salary, less generous benefits, risk….but on the other hand I couldn’t see that same faded pine-colored carpet again where my chair had worn grooves in without thinking that I had somehow thrown important years of my life away. So on June 12th, I walked out the door of BigCo to a job that gave me a small house worth of options, and a salary 15K smaller…

I believe this is the mental conversation that keeps our fellow Rubyists locked in positions they don’t leave. It’s easy for Paul Graham to grab college grads and stuff them into a loft with a half-dozen MacBooks and create a startup: there’s no lifestyle to lose. But as a recent thread on Hacker News shows, better developers are out of the Ramen-and-IPA phase of life and need to see how they, too, can follow their happy without feeling unduly irresponsible to their spouse and/or children.

If we in the Ruby community are committed to this as a standard, we need to talk about how to make things work for all those in the tent.

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…)

Creating a Ruby Gem for the Uninitiated

Saturday, December 11th, 2010

Introduction

One of the problems with gem authorship is that the various tools for gem generation all seem to stomp upon one another and seem to have varying states of freshness. Toss into this the questions about whether a given gem-generation framework eases the sharing via Gemcutter (or is it still pointing to Github?) and it’s a confusing start for the uninitiated.

I will detail the process that ultimately got me to re-structure some old code of mine as my first gem.

(more…)

It took a while to find this, but here’s my solution

Add this file: /Library/LaunchDaemons/org.postgres.launchd.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
        "http://www.apple.com/DTDs/PropertyList-1.0.dtd";>
<plist version="1.0">
<dict>
    
    <key>Label</key>
      <string>org.postgres.launchd</string>
    <key>Disabled</key>
      <false/>
    <key>UserName</key>
      <string>_pgsql</string>
    <key>GroupName</key>
      <string>_pgsql</string>
    <key>Program</key>
      <string>/usr/local/pgsql/bin/postmaster</string>
      <key>EnvironmentVariables</key>
      <dict>
              <key>PGDATA</key>
              <string>/usr/local/pgsql/data/</string>
      </dict>
    <key>RunAtLoad</key>
      <true/>
</dict>
</plist>

You can then load it and unload it by issuing:

$ sudo launchctl load /Library/LaunchDaemons/org.postgres.launchd.plist
$ sudo launchctl unload /Library/LaunchDaemons/org.postgres.launchd.plist

Now get to making some great Rails stuff!

Product Announcement

Sunday, January 11th, 2009

My blogging has been light for the last several months because I’ve been focused on trying to get admitted to graduate school. Included in the portfolio of “why Steven is a special snowflake and you should admit him” argumentation is reference to a project which demonstrates the fusion of my interests in Latin, linguistics, Ruby, metaprogramming, and Rails.

To find out more about my project, visit The Verba Latina website. As a warning, the initial load is a bit pokey. I’m going to move to a more robust host later.

LatinIRB

Sunday, October 5th, 2008

As I mentioned previously, I’ve been working on a library in Ruby used to model Latin Verbs.

Here’s a 5 minute demo of what you can do: My Latin::LatinVerb + Ruby’s IRB environment produces this:

It’s easier on the eyes if you watch the full-size version at blip.tv

I’m working on building a site around this code base. I hope to release it within the next month, but for the moment, I can give you a small sample of my recondite study.

Life, not blogging

Sunday, September 21st, 2008

I’ve been taking a bit of a hiatus from blogging thanks to:

  1. Car accident drama
  2. Latin III
  3. postponed GRE from this weekend to the 24th of October
  4. Work
  5. The LatinVerb library.

Most of these don’t produce much in the way of visual artifacts, but here’s a short demonstration of the LatinVerb library ( it’s coherently working, but still needs some refactoring to get it to 0.1 release state… ). Here’s the video:

What’s going on here is that I have a Ruby debugger ( RDebug ) session open where I’ve created an instance of Latin::LatinVerb. I then proceed to execute some of the “vectors” that uniquely identify a single conjugation of a verb or a collection of verb tenses.

It’s not too pretty yet, my main work has been on getting the thinking working. The displaying part comes next.