Learn To Code

January 1st, 2012

If learning to program is even a minor goal for you, Code Year (via Brent Simmons) might be just the encouragement you need. They promise to email you on a weekly basis with coding lessons to help you achieve your goal.

I’m one of those computer programmers who downplays the difficulty of the profession, because “if I can do it, anybody can do it!” On the other hand, I have faced challenges that made me question whether I’m vaguely qualified for the job. What it boils down to is that programming is both incredibly simple and impossibly hard, like so many important things in life.

There was a time when nobody knew how to write literary prose. The geniuses who invented it shared their special tool with a few friends, and they relished in their private, elite communications. Eventually monks, politicians, and academics joined the club. Now, we judge a society’s overall level of intellectual advancement by the literacy rate: the percentage of people who have learned to read and write.

Literacy isn’t about becoming a Hemingway or a Chabon. It’s about learning the basic tools to get a job done. I think programming — coding — is much the same. You don’t have to be the world’s best programmer to develop a means of expressing yourself, of solving a problem, of making something happen. If you’re lucky, you’ll be a  genius, but you start out with the basics.

Long ago, it would have been ridiculous to assume a whole society could be judged by its ability to read and write prose. It feels ridiculous now, to assume that we might use computer programming as a similar benchmark. Yet it may happen.

Did you always mean to learn another language, but never did? By all means, learn Spanish, French, or Chinese. But learn to code, too.

You Sense It Or You Don’t

December 15th, 2011

I enjoyed Joshua Topolsky’s rebuttal to the high-fives exchanged between John Gruber and MG Siegler about the Galaxy Nexus allegedly being less polished than iPhones are. I didn’t pick up on some of the cringe that Joshua pointed out, in particular the implication that rich people who have “nicer” stuff will always enjoy some impossible to crack understanding of the finer things in life.

And yet John and MG are totally right. You either see it or you don’t. This is egalitarian, relating to all facets of life, in every nuanced area of preference or priority. For whatever details a given person appreciates and values, far more people will be disinterested and be unlikely to even distinguish differences. How about those Android aficionados? They’ll point to the flexibility afforded by true multitasking, freedom to install unapproved apps, etc. They shake their heads at silly iPhone lovers, hold their phones up high and take pride in these qualities. To them, these are the finer points. This is the “polish.” The rest of us just don’t see it.

For many of us who make, use, or write about software for a living, polish is all about removing from the software as many jarring behaviors as possible. Sweating the small stuff. It’s exactly the details like the persistently stuttering scrolling that MG points out that continue to make Android products appear less polished to us. It’s seriously unnerving. It’s a big freaking deal to us, while other people just don’t see it.

It doesn’t have to relate to expense, and isn’t restricted to a premium class of product. It’s also, of course, not restricted to vision. I can imagine some of my wine-loving friends holding up a $15 bottle of something precious they’d discovered, while expressing disdain for a $200 bottle of swill that somebody else just adores. Nor does it need to be something “high class.” I’m sure a number of hard-working farmworkers could explain to me in agonizing detail why I picked the absolute worst rake and shovel for my garden.

If you’ve got a taste for something, a nose for something, an eye for something, an ear for something, a feel for something, and you find a product that soothes that sense, then you have a special gift: the ability to cast judgement on inferior efforts. Other folks? They’ll either sense it too, or they won’t.

MarsEdit 3.4: Media Enhancements

November 28th, 2011

MarsEdit 3.4 is now available for direct download from the Red Sweater site, and as an update in the Mac App Store.

For a long time I’ve been hoping to improve MarsEdit’s media management capabilities. It already does a great deal to streamline browsing and insertion of images from Flickr, iPhoto, Aperture, Lightroom, etc., but it could do much, much more.

This release takes MarsEdit a step in that direction, giving the media manager window a minor UI overhaul, fixing bugs, and adding some new browser capabilities such as a zoom control for media thumbnails, and ability browse iPhoto pictures by “Faces.”

Lightroom users will be happy to see that MarsEdit now has limited support for Photo Collection Sets. As I’m not a dedicated Lightroom user, I may be missing some nuances of how this should work, so continue to give me your feedback about how MarsEdit hits or misses the mark with regard to Lightroom integration.

The update also includes a few fixes for nagging bugs. Of course, there are many more in the queue, so hold tight and stay tuned if your pet peeves haven’t been addressed this time around.

MarsEdit 3.4

  • Media management improvements
    • New zoom control for browser thumbnail size
    • iPhoto Faces browsing support
    • Lightroom photo collection set support
    • Upload Utility window now resizable
  • Flickr browser improvements
    • Now supports “Medium 640” size
    • Only shows image sizes that are available for the selected image
  • External Editing improvements
    • Now supports Byword in default editor list
    • Now displays a warning panel if the selected app is not installed
  • Bug Fixes
    • Bookmarklet handler now heeds sourceHomeURL, sourceFeedURL, sourceName
    • Prevent a crash when selecting SVG format images
    • Disable width/height fields for non-image files in Upload Utility
    • Fix a bug where post IDs were sometimes not saved for posts and pages

How To Talk Dirty

November 9th, 2011

Today there is much chatter on Twitter about Brittany Tarvin’s A Letter to the Developer Community. In a nutshell: Brittany attended MacTech last week, and was offended by the unprofessional vibe in a few instances, but in particular, with regard to sexual jokes that comprised the content of one. It reads to me less like she was less personally offended than surprised and disappointed by the behavior of her peers. My takeaway after reading her piece is that she feels juvenile humor simply does not have a place at a professional conference.

Judging by the massive response on Twitter in support of her opinion, I think that most people tend to agree. However, I think that the vagueness of her description of the incident leaves much to the imagination, and is causing people to leap to condemnation of the talk, the conference, and the industry. I am not saying the condemnation is unwarranted, but my feelings about this particular event are complicated, and I think yours might be too, if you knew more of the details.

The talk in question was titled The Ten Dirty Words and How To Use Them. The talk was given by my friend Andy Lee, and his synopsis from the conference session descriptions reads:

In 2003, I came up with “The Top Ten Cocoa Words That Sound Dirty But Aren’t.” By finding APIs via this arbitrary way, we talk a random stroll through Cocoa, which can stimulate curiosity and lead to new discoveries and new questions. What would you guess NSInsertionPosition is for? (I incorrectly guessed text editing.) It can also be worthwhile reviewing familiar ground. We all autorelease — some of us every day — but it may still be possible to learn a thing or two about it. I will talk about the proper use of each word in the list.

To give you a more specific idea of the offensiveness of the API method names that Andy discussed, take a look at his blog post listing the API methods under discussion. [Update: MacTech has just posted slides from the talk.]

The genius of this talk is it takes a running gag in the Cocoa community, that occasional API names here and there were unfortunately named, and runs with that gag as a scaffolding for exploring the specific APIs in more detail. As for the sexual jokes, I think they basically write themselves in the individual minds of the audience. As anybody who has sat through an all-too-dry conference talk about the specific technical blah, blah, blah of any subject can attest, it is generally a good idea to inject some humor into a talk’s structure.

So was the humor in this case too much, or too vulgar? I’m sure that Brittany was not the only person in the room who was offended by the talk. On the other hand, as the one “comic relief” talk in a 3 day schedule that contained more than its fair share of professionalism, I think it’s probably fair to say that some members of the audience were relieved to have a chance to laugh about something.

Injecting humor into any talk is dangerous. Especially with a diverse crowd, you are liable to offend somebody. Jokes of a sexual nature are even more dangerous. Even if the joke is not sexist, per se, there is a strong possibility that members of the audience will take offense because of sexual taboos in society. I also imagine the discussion of sex in a strongly gender-imbalanced setting will make members of the minority gender more uncomfortable than the rest of the room.

But neglecting to inject humor is also dangerous. The Mac and iOS communities have a strong tradition of humor in our conferences. Many of us feel annoyed and cheated by a conference if there isn’t a bit of liveliness. So, it goes both ways. It’s important to process this incident carefully to understand how it went wrong. Was the problem that there was a session with a noticeably lower level of “seriousness” than the other sessions? Was it that the session’s jokes were of a sexual nature? Or was it that the sexual nature of the talk’s jokes were not made clear enough to the audience before it took place?

I think what is happening on the web now is many people are seizing onto the angle of Brittany’s complaint that most resonates with their own frustrations about the conduct of our community. This is a valuable reaction and a good opening for further exploration. But what isn’t useful is the large number of people who are condemning the conference and the speaker without significant information about the context of what happened. I hope that I have at least helped to clarify that to some extent. If you still feel that blanket condemnation is the appropriate response, then I’m happier with your opinion now that you’ve read mine.