Archive for February, 2007

Big Nerd Ranch: RoR Camp: Day 4: The Reprieve

Thursday, February 15th, 2007

Day Four: It’s a good day.

The reason day 4 is a good day is because you’re out of “how rich is this language and how many other key concepts must I learn to be functionally literate” phase. You see, you’ve covered the dead basics on the first day. Day two is a real challenge because you’re learning the bits of the language that are advanced and that you will need to know to really be able to work “out of the middle section of the book”: the part where it moves from introductiory to non-trivial.

Day three is the hardest, as I’ve detailed in great detail previously.

But day four is where the new and core material starts giving way to specialized topics: how to handle mail, how to build a test, how to provide web services. All of these build on the hard work you did on the first 2.5 days so you no longer get that feeling of “Oh hell, am I slipping too far behind?”.

Everyone in class seems to be a bit more spirited. The hardest part of our personal / night projects have been dealt with and everyone has that sense of “hey, you know, I might be able to do this on my own.” It’ the beginning of a very hopeful swing that continues into day 5.

Day 5 is the final bit of the “topics” specialized areas ( but not, not core language ), you learn to maximize particular aspects and you’re going home in just a few hours. It’s great to be at the Ranch, and you learn a lot, but just like all journeys it’s so good to go back home.

Once home you’ll reflect on the great experience you had and you’ll shake off the experience and re-integrate yourself into reality. But it’s so much fun, you can’t wait to get back to that mindset again.

Today was beautiful, but still cold. During our travels today we visited Callaway Gardens’ butterfly preserve. After walking through 40-degree weather it was quite a change of pace to enter the balmy 80-degree chamber in which the beautiful leipidopterans inhabit.

I’m still amazed by the versatility of the teacher, Charles B. Quinn. I mean, being able to take 30000.times{‘question after’} without snapping (verbally or mentally ) is really an excellent demonstration of guru-dom. I can only aspire to know some thing as well as the C. knows Rails, or as well as Aaron knows Cocoa (my previous BNR class).

Really I need a few days away from Rails, but I know that within the next week I’m going to start scratching in my notebook, imagining how I can turn BNR education into applications that amuse, entertain, and possibly do Something Great.

Yesterday’s post looks a little incoherent with a day of rest between it and I. Based on the entreaty of Mr. Graitcer in the comments, I thought that perhaps I could try to characterize what it is to be fatigued in this way.

First, let’s just say that it’s not the expectation of the teacher or the class curriculum that you work yourself into fatigue of this type. It’s not necessary or required. Yet in both of the BNR classes I’ve taken, the students worked late into the night on their own projects, or improving the assignments.

Therefore, the motivation to work to this level of fatigue is not extrinsic, it is clearly intrinsic. This is, clearly, the more cruel mistress. In a previous post I spoke of the self-selection implicit in defining the population for BNR classes. I suggested that one of the primary contributing factors in being in the class is having the funds to pay the fee or having a job where the administrators feel that paying such a fee for such a person is a worthy investment. People who have such funds ( if the meritocracy be believed ) or faith of their financial administrators likely get to this position be not being able to simply let it go.

I have worked through weekends at work, on work stuff simply because I could not let it go. I have gone to work early, repeatedly, after a few hours of sleep because the problem stalked me. It wouldn’t let me go, it wouldn’t let me sleep. It was better to be awake, approaching understanding, than to endure fitful sleep under the Damocles sword of the unfound answer’s shadow.[1]

Many people I’ve talked to say: “Go do something else, come back to it.” My sweet girlfriend has shuffled around in the wee hours to find me tapping away and urged me to come back to bed. I hear this, but this is something that I ( and I suspect many others ) simply cannot do. If I were to come back to bed I would imagine my text editor. If I were to go do something else I would be irked that I couldn’t look up on Google possible solutions as I was doing it.

I don’t know it well enough. I don’t understand it well enough, I don’t see how the parts work. Granted this quality among the full rank of attendees, you can see how I would suggest that a startup out of any one of these classes could blow the doors off of any particular problem.[2]

So it’s under this background mentality that you’ll see BNR-class attendees whipping themselves to perform, to create, and realize until deep into the night. Simply put, this is just how we’re wired.

Attendees like to maximize effort. That’s why we’re programmers, we like the force multiplier effect of knowing a programming tool. The reason we’re at this class is because we want help learning something very difficult in the most efficient and deep manner possible. BNR classes deliver this. So much of the work done here can be seen in light of trying to optimize knowledge gained per unit time.

Most of us have attempted to learn the material back in “the real world”, but we couldn’t get the information to ‘etch’ deeply enough. Learning this material against deadlines, users, wives, taxes, other obligations was simply too slow or too confusing. If you are a “can’t let it go” person who knows that shortly he’ll have to be back in the real world where he’ll have to let it go and you won’t have access to immediate peer feedback or a guru, you work hard.

Like summer camp, we come, we know it will be hard, but we know, looking back, we’ll be amazed by how much we learned, how much we changed, and we’ll remember the conversations, the food, the hard nights. We’ll remember that we were part of a special community for a brief flicker of time.

And if, to chase to that next eureka, we have to have bleary eyes and catnaps in the conference room, so be it. Damn the torpedoes, I came to learn rails.

So we slurp down cups of rocket fuel, we dose up on small quick munchies, we talk, we think, we code, we edit, we close our eyes and doze and then turn back to it, we take more fuel[3]. At the end of a multi-hour run your sugar crash comes but you have to keep pushing. And sure, you could go back to your bedroom, but the feedback loop outside of Oz is too slow. You see, we have to be good enough to be independent when we leave because, it all likelihood, we will be.

So what’s it like, in the dark of night as we ply away? Well, to set the scene, we’re in a very large conference room with a large projection screen hanging from the front wall. The churn of the heating provides a constant white noise that is overlain with collective symphony of keyboard tapping[4] and occasional double-click.

For the most part it’s fairly quiet, except that there are ‘flexible duos’ merging and separating. These duos emerge when one party wants to discuss an idea or a problem he is describing to the other party. They conversation is usually pretty quiet, but occasionally precipitates a whiteboard session.

The lighting is dim, but not dark. The eyes of the coders in troglodyte mode is respected.

And, of course the half audible curse of ‘fuck’ or ‘damn’ as an execution fails, or even worse, does something you didn’t know about and or didn’t plan for.

The tablecloths that drape the tables are rumpled. There are big reference books from O’Reilly press and the Pragmatic Programmers stacked up, splayed open, or fallen onto the floor.

IMG_7286.JPG

With the dim lighting and the lack of a clock in the room, Vegas-style, you could easily fall through scheduled reality and forget that time is actually passing. Eventually, the time will turn late and that’s when the real fatigue sets in.

There are enough peers present such that your quorum sensing lets you know “It’s OK to stay a bit longer”. Your eyes are dried out from staring at the screen, the typing fingers are sore and tired. The myriad of files you edit get lost, your new enemies are questions like “Where did I just write that thing a second ago?”

You reach the next item on your “to do” list and you attack that problem…and keep on going. In some ways it’s actually invigorating, working on something you care about this much, something that has this much of your love in it. Few things “outside” can hold your interest like this. In some ways, you feel more alive doing this kind of work in this environment that you may have felt at your day job for the last year.

Eventually the discussions between students achieves a sort of level of conversational shorthand. We’ve all been speaking to one another in these highly specialized terms for days and days. We’re all coming from the same reference and our discussions are short, brief, and truncated.

As the evening wears down more stammers work their way into the dialog. The solutions wear down. The bowl full of ice chips melts and the bottles, coffee mugs, and cans on the desk continue to multiply as the diminishing returns on coffee and sugar is reached, crossed, and run over by a distance of several miles.

IMG_7286.JPG

But eventually you reach your goal and you shuffle back to your hotel room and unwind by watching infomericals or NOVA and then drift off to sleep.

This is the society of the hack, and you’ve done a good day’s work. Sleep is quick and hurried, because the next round of class starts bright and early at nine in the morning.

Footnotes:

  1. Incidentally, the Silicon Valley exacerbates this problem. Most people can’t let it go, and there’s not much else to do besides work anyway, thus so many good ideas and good companies coming from that area.

  2. This is what the early internet adopters must have thought would happen. Global, flexible, talented groups meeting and fluxing, producing brilliance. Regrettably, it seems that this talent needs to be pulled out of their quotidian affairs to achieve this maximal “group flow” dynamic ( see: Cocoa Dev House or Burning Man )

  3. I recall a passage in The Fountainhead where Roark falls asleep at his drafting table and breaks a pot of coffee. I recall Ender Wiggin facing yet another round in the battle room after another brilliant performance around the absurd rules. In these passages I always see the author comme createur writing his experiences into the character’s life.

  4. Not really tapping. Apple laptops don’t have a cheap, plastic, clackity sound, like the PCs, but rather have a very pleasing whisper.

Hi all,

After the lengthy tour of duty yesterday, I’m back in for another lengthy day. I think that Wednesday is really the grinder day.

First, you’ve been lectured to for the last 3 days. There are very few minds that can take 8hr. / day lectures without feeling a bit tapioca-ish on the 24th hour.

Secondly, you’re listening and then working very hard on something that you just were introduced to. You have these head bashing against a wall sessions and then, suddenly, you’re set free ( because you’re doing something that’s old hat, something you learned, say, that morning ) and then you hit the wall with all that built-up acceleration. It takes a certain mental flexibility.

Third, the sugar, the munchies, the food, etc. By this time it’s all having some funky effects on your body.

Homesickness becomes a bit of a factor. You remember how good your bed is, how nice it is to be among your things and your life.

Now, about the work. You see, you can slide on day 1. You learn the material, you review it, you’re probably OK. DON’T BE FOOLED this is your one and only chance to get ahead of the abbatoir days 2 and 3.

Then comes day 2. If you want to keep ahead you’ll be working late on day 2, maybe even thinking that you’re going to catch a break on day 3. But no, my friends, day 3 is the grinder. Day 3 says “OK, you’re determined, but how determined are you?” You’re bleary from day 2, the cokes, the mountain of water bottles, can you do another 18-hour run at things?

At day 4 you’re going to be exhausted. You’re going to reach your limit. You start to feel like your treading water capability is turning into negative progress. Unless you’ve stayed up on the exercises and mentally integrated the concept and become with the ‘way things are done in this language’, you’re going to feel a bit behind.

Fortunately day 5 is the wind-up day. There’s a sense of graduation and possibility. If you can integrate the first 3 days quickly you’re going to be in a good position to re-discover the last two days quickly. I think that may be the optimal take-away from a class like this.

I’m not sure, I’ll be a good empirical guinea pig for the next few months.

I just remembered why I don’t wear a watch

Wednesday, February 14th, 2007

Metal chain-like wristband + powerbook == annoying scratch sound.

Then again, as I ( lamentably ) don’t work on a powerbook day to day, maybe i should start wearing one.

Big Nerd Ranch: RoR Camp: Day 3

Wednesday, February 14th, 2007

Goodmorning.

I had a late morning this morning … because I had a late night last night.

Last night, per BNR tradition ( and I can say this because of me experiences at the Cocoa camp ), post dinner ( and occasionally a drink or two ) many of the students returned to the classroom to review, invent, create, etc. under the tutelage of our teacher.

I basically re-ran all the exercises from Day 2 again, inventing scenarios to make sure that I truly “got it”. In training, it’s very easy to simply nod and do the exercise but, as my math teacher says, when you are working the problem alone, you will get the loneliness. You will say, “Where is my teacher? Where is the format, I’m so lonely, I cannot solve this problem.”

So, to make sure that I could work through the loneliness me and a few other students were here until about 1:30…and I wasn’t the last to leave! We Big Nerds be hard^core.

I moseyed into class about 5 minutes behind and Charles had already begun the lecture on “Data Validation”. It’s a pretty gentle way of starting the morning.

Outside, Georgia has tuned cold and windy, a lot like the Bay actually.

This morning we did a lesson data validation and man, I hit a tough bug. Rails was telling that the error was at some line in some process. With the help of another patient peer we commented out all the lines of my code and methodically worked through and found out that the error message was completely un-helpful, the error was some 6 lines earlier!

BNR classes always leave me with the feeling that working should be more like this: patient people focused on exploration and the delivery of solid products with understanding produced as a natural side-effect (oh yeah, and having an absolute guru around to ask questions to is not a bad part either). I’m pretty sure you could take any BNR class, tell them to attack some market problem, and they would be able to deliver it as a successful startup.

Consider the self-selection principle at play. People pay ( or are in positions where employers are willing to pay ) what, on paper, might seem like a rather steep fee ( in reality, it’s entirely reasonable for the type, depth, and knowledge provided ), this indicates a certain level of success obtained in the world. Further, even people of that level of success are usually rather loath to take one-fifty-second of their life and spend it doing “work” for at least 9 hours a day. Paul Graham said that the magic of a startup wasn’t that it was a small amount of people, it was a small amount of people like you. During these sessions you feel like you’re part of a larger community of people like you.

For 5 days people like you, focused on learning, learn, work and talk together. It’s kinda special. Sorta like camp, but instead of popsicle stick birdhouses you build powerful computer applications. If, in 5 days, we could do something like this, in 90 days what sort of application could we build?

And yet again, Ms. Stefani

Wednesday, February 14th, 2007

Today as I was getting ready for class I heard Gwen Stefani’s “The Sweet Escape”, a synth-y, 80’s reminiscent sugary sweet song that is absolutely indelible once it hits your brain.

And then I remembered today is Valentine’s Day.

And then I remembered that, like it or no, the solo music of La Gwen seems to be the soundtrack of my life with my wonderful, funny, smart and beautiful, Valentine (who, like Mrs. Rossdale, is a product of the sunny county along “the” 405).

And so, to you, my Valentine, whom I shan’t see today, here’s a bit of a song by the artist that we seem to have unwittingly been meant to use as backing music for our life together.

If I could escape And re-create a place as my own world And I could be your favorite girl Forever, perfectly together Tell me boy, now wouldn’t that be sweet?

Sweet indeed.

Big Nerd Ranch RoR Camp: Rain!

Tuesday, February 13th, 2007

We were working this afternoon and there was a horrible rain storm. The kind folks at our facility sent vans to retrieve us from the meeting center and take us to the dining hall. Midway through lunch a transformer down the line blew and plunged the hall into darkness. Fortunately the meeting room is on a different generator and we were able to keep working.

Now, as we finish day 2, a golden burning sun has re-emerged and we’re about to go out for some Mexican food.

I wonder how they do my beloved Tex-Mex ( GA-Mex? ) here-abouts.

The example and exercise scripts during the RoR class centter around receiving requirements for a company that produces widgets. Never content to simply accept the assignment, I have pushed my, uh, unusual sense of humour onto the project.

widgetfabrik.png

Big Nerd Ranch: RoR Camp: Day 2

Tuesday, February 13th, 2007

Per the typical BNR experience, last night, post-dinner, many students returned to the training facility to go over the things that were unclear, try things out, and talk with the the instructor, Charles Quinn, about projects that we dream of undertaking.

I had questions around using the session continuity features in ActiveController, and just needed some examples and some time to let the concepts come together. Ultimately I figured it out and some of us last few left in the center headed down to the bar and had a beer before bed.

I can’t say I slept particularly well. I had the strangest experience. I would wake up through the night thinking of RailsThings. I swear I was dreaming I was back in class. It must be the effects of too much information in one day running around non-integrated.

This prompted me to wake up quite early, so after a leisurely shave and a long shower I headed outdoors to try to see a bit of pastoral Georgia. Here are some photos.

IMG_7265.JPG

The meeting facilities.

IMG_7285.JPG

The Students

IMG_7283.JPG

The start of my walk…

IMG_7282.JPG

A creek.

IMG_7281.JPG

Early Daffodils.

IMG_7272.JPG

Lakeside

After my walk, I met the group for breakfast and then we started up class again.

Big Nerd Ranch: RoR Camp: Day 1

Monday, February 12th, 2007

Last time I was at a BNR class, I meant to keep a blog history so that I could:

  1. Shill for my friends
  2. Have a travelogue

Regrettably, my best intentions fell to lack of discipline and I did not keep my story together. As such, I’m going to try to work day-by-day with sharing my experience. At the end I’ll provide a summary as well as some specifics about “what to do / what not to do if you’re taking the Rails class”.

Last night, after my bitching about ATL, we were picked up by our contacts Emily and Jaye who were holding a great big BNR poster-board to help myself about about 8 other people congregate.

We boarded a shuttle and began heading out to Callaway Gardens. The Gardens facility is about 1.5 hours outside of Atlanta, so for all intents and purposes I’m somewhere in the Georgia hinterlands. I can’t say I saw much of these hinterlands because it was DARK outside, and I mean real country dark ( in the words of my droog, little Alex ).

Eventually, after miles of interstate, there were a bunch of twists and turns and we arrived at main building and were able to check in. I’ve yet to explore much of the facilities because after an initial cleaning out of my suitcase, I headed straight to the bar.

The bar facility was full of a few lively patrons and I had a chance to talk with them as I drained a beer or two. I was joined by my new classmate Hector and we had a chance to talk. Eventually a larger group of students invited us over to chat and assassinate a few more drinks.

Representatives from all over the US tech geography are represented. Hector hails form Puerto Rico, two Montanans, a Bayarean ( prounounced: bay-yair-ən ), Orange county in da house, a Research Trianglian, and a PacNorWester. We talked a bit until the bar closed and we headed off to bed.

I made a quick call to Lauren and then finished unpacking while listening to the “Prime Minister’s Questions” on CSPAN.

I apparently failed to master the alarm and woke up with 20 minutes to spare before class. I made a hurried effort at cleaning up and then headed up the trail to the training center.

The center is set up in 9 tables, with each of us sharing a table with a peer that we can harass. Bo, my table-mate (not to be confused with a Textmate ), is one of the Montanans and has a very slinky black MacBook.

Another fun part about all these Macs is the ability to use Bonjour to chat across the room ( “What did he say” or “Yes why_’s guide is totally irritating”).

The class started out getting everyone up and running with Rails and Ruby. We then proceeded to get a basic application of Rails going on. We took a look at the code and we ran a few executes. We’ve just covered an introduction to Ruby.

As far as I can tell, there’s no real requirement that you understand Ruby to do Rails. It helps if you do, but maybe reading the first 3 chapters of the Pickaxe would be sufficient.

Lunch was some fine Suthun’ Cookin: Friend Chicken, Mashed potatoes, salad, and carrots with brown sugar. With a glass of sweet tea, it was a fine repast.

After a covering MVC, we took a walk around the beautiful grounds. This helped us wander off the post-lunch sleepies. The area around the facility seems to comprise a lake, several bungalows, and many tall pine trees. It’s a really tranquil setting.

After the peripatetic it was back into Rails. We learned ActionView / ActionController and some more of the basic tools of the Rails stack.

I even went a bit further than some of the exercises and tried adding a few tweaks, adding some CSS, adding a few blurbs. It was pretty fun. After dinner, I’m going to review the notes and maybe try putting together an app-ito or two.