Code Review as Line Editing

This morning, I’m reading through a ton of Github comments our VP of Engineering added to the codebase last night. Initially, I was annoyed by his nitpicking – it’s not my code, but I tend to think that niggling comments about using throwaway variables or other things that have negligible impact on performance can kill a coder’s sense of creativity and individuality.

Then I remembered that our engineering team has a style guide for Ruby. When I ran TechKnowMe, I wrote a coding style guide that I expected my freelance developers to follow, but it was fairly minimal. The only other time I had a style guide to enforce was back when I was an editor for a newspaper, line editing the stories my writers turned in.

The line editing process is not intended to kill creativity and individuality, it’s intended to help communicate information as efficiently and consistently as possible in an editorial setting. I always line edited my writers’ work while they looked over my shoulder, just as my editors had done when I was a reporter. I explained my reason for making each change to the writer as I made it, which allowed for some debate. It was an educational process for both of us – they honed their skills and learned how to write articles that required less editing, while it forced me justify whether the changes I was making were genuinely an improvement.

Looking at our VP’s comments in that light, I view the code review process in a whole new way. Coding is functional editorial – you’re communicating not only with the computer to feed it instructions, but with future developers who have to maintain that code. Those future developers include yourself, and I’ve found that code I have written as recently as six months ago can look foreign to me. It’s been a while since I was a trench developer, and I definitely miss the education I got through these code reviews, as even the act of making the comments is educational. I’m learning a lot by reading these comments. It’s not my code, but reading them is going to make me a better programmer.

The Fascinating Newsletter Archive!

Hey, have you signed up to receive the Fascinating Newsletter? That box over there on the right (assuming it’s still there by the time you read this, oh people of the future) will get you on the list. I’ve been sending it out weekly for the past three weeks and it’s been fun to compile for you.

If you missed them, I’ve just archived them for your bemusement. Check out the Fascinating Archive.

Google Reader’s Demise Is Not The End of RSS

Look, I’m as sad as you are about Google shuttering their awesome Reader service for managing RSS feeds. Though it’s been a while since I was actively using it, the idea that it was there for me was comforting.

But, really, RSS feeds are a mess to manage to begin with. Not every story that All Things D produces is worth my limited reading time. And, while having every headline in one location is nice, it gets overwhelming quickly. I never really taught myself how to ignore RSS headlines the way I can ignore tweets.

In my world, the RSS reader has been replaced by email newsletters, Twitter and Facebook. Every morning, I get a solid summary of what’s going on in the tech world by subscribing to a small handful of newsletters that give me the major highlights. If I need more detail, I can always Google for it. Throughout the day, my Twitter feed – which is always open in TweetDeck on a separate screen (the demise of old school TweetDeck is a far more brutal a blow to me right now than Google Reader ever will be) – keeps me abreast of the current zeitgeist across all of the areas I’m interested in. I may not be getting scoops this way, but it’s enough to keep me literally up to the minute on what’s happening where I care.

But even with all this, RSS will not go away, and that’s a good thing. Stop seeing RSS as a way for your reader to deliver you news and start seeing it for what it really is – an API for content. The RSS feed for your blog can be used by email services to automatically serve up an email digest of what’s been posted to your site. It can also be used to syndicate your content to other networks. If you run a podcast, your RSS feed is the best way for non-Apple podcast listeners to keep getting your latest episodes (sorry, but iTunes sucks).

And this is just the beginning. I’ve been compiling quite a bit of information about what I consider to be the next big thing on the web, something I refer to as “Web 4.0”. I’ll soon be posting a ton of content about it because it’s sort of my latest obsession. For a taste of what I’m talking about, though, check out IFTTT.com. This site allows you to connect several of your accounts that have APIs to one another to create new forms of interactivity. For example, I now have several RSS feeds from blogs I care about feed directly into my Pocket account so that, instead of just seeing the headline, I can have the entire article immediately downloaded to my phone so I can read it even when the mobile connection gets spotty on my morning BART ride. The ability to programmatically connect our web app accounts and – eventually – all of our devices and home appliances is something that has been promised for more than a decade. We’re finally on the cusp of seeing it really, truly happen.

So go ahead and mourn the passing of Google Reader, and do continue to hope that you can find an alternative. You should be able to read the news you want in the way that works best for you. But don’t take this as a sign that RSS is dead. I firmly believe that we have yet to see the full potential of RSS, but that will soon change.

Wash Your Damn Hands, People!

I got to spend this past weekend alone in my bedroom, unable to eat or drink for two days, separated from my wife and kid because I was socked by the norovirus. There’s an especially nasty strain of it going around this year and my daily exposure to the public on the BART system is what likely made me a victim. Danielle is still chasing me around the house with a spray bottle of bleach (though, she did very sweetly take care of me as best as she could given the circumstances).

Simply rubbing alcoholic gel on your hands doesn’t completely kill this thing – you need to vigorously wash your hands frequently to avoid transmission, it’s really the only way. It spreads primarily through the fecal matter and vomit of the infected, which means someone out there did something very nasty and did not clean up properly before boarding the train. It only takes about 12 of the little bastards to colonize a host, so a small amount goes a long way.

So, be vigilant and vigorous in your hand washing, people. Seriously – two days of excessive sick combined with two more of extreme dehydration suuuuuuuuuuuucks. I’m still not back to normal.

The Music Around You

My home office has two desktops, one laptop, a router, a printer and a couple of other networking boxes and electronic ephemera all running all the time. Yesterday, Danielle reported a strong electrical burning smell coming out of the room while I was at work. I asked her to just shut it all down and told her I’d look into it when I got home.

Walking into the den with everything shut off was eerie, almost scary. It was so still. For the first time, I could hear the quiet hum of the compact fluorescent lights in my ceiling fan. I never realize how noisy that room is until everything goes silent.

This morning, I listened to an episode of This American Life called “Mapping”. The second act was about hearing, and was a fascinating look at the humming and buzzing that surrounds us daily in our modern, always on world. In it, Toby Lester of the Atlantic Monthly describes how he began considering the actual tones and notes of the droning hums in his office, and how different hums at different tones create chords and intervals. The chords, intervals and scales one plays on an instrument are what create mood in music – a major scale is traditionally perceived as happy, a minor scale sad. For a more visceral idea of this, check out the recently popular “Major Scaled“, which takes popular, moody, minor-key songs and transposes them to major keys, often giving them a more uplifting, pop-like sound.

Lester’s hypothesis is that the chords created by the constant droning may very well contribute to how we feel about the places where we work and live. For example, he discovered that his computer,  the heating system and the dial tone on the phone he frequently uses in his job created an augmented fourth chord. It sounds like an audible train wreck. It’s grating. Hearing it played on his piano caused me to tense up a bit.

Lester had found a book by Deryck Cooke called “The Language of Music”, which updates a list of the tonal properties of chords and intervals categorized by the Catholic church in medieval times. The Church described the augmented fourth as “the Diabolus in musica” – one of the most reviled combinations of tones of its time. Lester was surrounded by this chord constantly, daily.

I know that industrial design takes noise levels and, to some degree, noise quality into consideration when designing products. But what about harmonious environmental noise? It seems such a small thing,  but it’s conceivable that Lester is right, that the music of our daily lives –  as defined by the devices with which we surround ourselves –  may be eliciting emotions subliminally. Consider how you feel after listening to an album by The Monkees versus, say, an album by Morrissey. What if you’re unknowingly listening each day to a constant drone of a minor third, the classic chord for melancholy? Might it not actually make you melancholy?

I hope Lester pursues this further. It’s an interesting thought that the noise of our devices, which we have learned to mostly tune out, may be acting on us at an almost imperceivable level. While I doubt they could be held solely responsible for controlling our moods one way or the other, it wouldn’t surprise me to learn that they can have a dramatic impact. The compact fluorescent lights I added to my den are relative new. Before, I had only some 60 watt incandescents that lit the room well enough, but still kept the lighting moody. The fluorescents, on the other hand, bathe the room on bright white light the equivalent of a 100 watt incandescent. It has actually made me feel more productive and happy when I’m in there. This subtle difference in lighting has had a dramatic impact on how I feel when I’m working in there. If I can just figure out how to tune my devices to sing a happy drone, perhaps I can make that the most inviting room in the house.

Never Let the Sun Go Down on a Cross Word

A few years ago, Dani and I were shopping at the grocery store when my cell phone rang. It was Mom again. Thanksgiving was two weeks away and Mom was coming up the weekend before to help us get ready with the cooking and such since we were planning on hosting it at the house we had bought just that spring.

I say it was her “again” because Mom had this habit of calling daily, then more than once daily, as she got ready to come visit. She was so excited to see us – I’m her only child, whom she raised mostly on her own since my parents divorced when I was seven, and she and my wife were incredibly close – that she would keep thinking of things to call us about as the date of her visit got closer.

This time, she was excited about some recipe she had found and wanted to tell us that she planned on trying it when she got here. She went into the details, talking about what it contained, where she found it, how we might cook it…

Now, let me be clear here – my mother and I have never had anything other than an incredibly close relationship. I would never call her overbearing or demanding. And the beauty of the thing is, neither would Danielle. She was always my Mom, first and foremost, but she was also our friend – a very dear, wonderful friend whose visits were always marked with joy and, often, some amount of adventure. So we were genuinely looking forward to seeing her. Danielle was planning on flying down two days before Mom planned on driving up as Mom had injured her leg and was finding it difficult to drive comfortably. And Mom did not fly well.

But the frequency of the calls were getting to be a bit too much at this point. During this one, I had a hard time focusing both on Mom and the task of grocery shopping. So I politely listened to her, gave pat “Uh huh”s and “sound’s great, Mom”s to her recipe and basically rushed to usher her off the phone. I may have even said, “Mom, we’re shopping right now. I’ll call you later,” terse, but not totally impolite. She reiterated her excitement about seeing us – which I genuinely reciprocated – then we exchanged “I love you”s and hung up.

Two days later, I got another phone call. This time it was from the hospital down the street from where Mom lived. She had called 911 and an ambulance rushed to her door. After attempts to resuscitate her, she was still unresponsive.

Mom died. My world shattered.

I am painfully aware of that last conversation I had with her. I assumed I’d be seeing her soon, so I was not quite as pleasant as I could have been. I regret not telling her how much she meant to me, how much I really loved her and thanking her for everything she ever did for me. I feel fortunate that I had done that at least a couple of times in my life, but I know I didn’t have to – she knew. And I’m at least relieved that my last words to her were, “I love you, too”, even if it was more of an automatic response than a conscious thought. But she knew I loved her, and I know she loved us.

But, these days, I’m especially aware of how I leave the people I love. I saw my Dad this weekend – I brought the boy with me – and I made sure I gave him extra hugs, extra I love yous. I don’t let the phone hang up without at least saying it to him, and genuinely meaning it. I do the same when I leave Danielle and Dustin every morning. I do it especially harder whenever I have to go out of town. Mom was not sick – her death came as a literally unbelievable shock. I try not to, but I can’t help but sometimes wonder how that last conversation would have gone had I known it would be our last. But I didn’t, and I couldn’t. And, all things considered, it certainly didn’t go as bad as it could.

So, now, I’m very aware of how I leave my loved ones, every day. You really never know what will happen, and I’d rather mend wounds and end fights as quickly as I can, resolve differences before I have to leave them than face the possibility that our last interaction will be one of conflict, one of regret.

I have no real reason to share this with you other than I feel it’s one of the most vital pieces of advice I can give to anyone. Never let the sun set or a goodbye slip by on a cross word. Even if you’re disagreeing with one another and must part,  always say your “I love you”s.

Taking Inventory

Not sure why this crossed my mind just now, but I got to thinking about all of the programming languages I have ever learned. The list, at least to my mind, is staggering. Granted, many languages are very similar – Actionscript and Javascript, for example, are practically twins – but each has its own quirks, syntactical weirdness and more.

So, for my amusement, and to put it on the record, here is the list of all of the programming languages I ever have ever used, broken into two categories – “Developed for Production”, which means the code I wrote has actually gone on to support some commercial purpose, such as a website or a script that has seen daily, at least semi-critical use, and “For the Knowledge”, which is why I generally start learning any of these languages to begin with. And, for what it’s worth, I’m leaving out markup languages like XML, HTML or even CSS, though I’ve had to learn my fair share of those as well. Continue reading