The Dead Sea

Some coworkers and I went to the Dead Sea while on a team meetup in Israel. My lower body’s too dense to float under normal circumstances (my legs just sink… like… stones), but I was assured I’d float here. And I did! It was such a funny sensation to wade out, squat, and feel my body rotate backwards as my legs sprang involuntarily up to the surface of the water.

The floor of the sea is covered with really goopy, dark greenish mud, and people actually rub the mud on their skin for (I presume) restorative purposes. I opted not to and didn’t think to get a photo. I did sink into the muck nearly up to my knee at one point.

As I was walking (more like stumbling) out of the water, I found a rock that had a bunch of salt crystals growing like gems on its surface. I also neglected to get a picture of this.

Luckily, I had no major flesh wounds on our visit, but I’m told the water really stings even minor cuts. I did have one little spot on my neck that burned just a tad, and although you’re discouraged from drinking the water or even getting it on your face, I ventured to lick my finger and found that the water burned my tongue.

Once we had our little swim (more of a bob), we showered off a little (an outside shower, no soap, just a rinse), but my skin felt horrible all the way home, as if I had gone for a week at the beach with no shower.

It was a really neat experience, definitely worth it if you’re in the neighborhood. It took us around two hours to drive back to our villa in Herzliya (near Tel Aviv), which is on the other side of the country from the Dead Sea. While in the sea, we could see Jordan across the way. I suppose we might have swum over for a visit, but the caretakers of the beach we went to had cordoned off an area for swimming, and I don’t imagine we could have gone  under the thing to swim outside it (seriously).

Jaffa

This week on a trip to Israel for my job, I went with my coworkers to the port of Jaffa. You may recognize the name as the city from which Jonah is supposed to have left on his fateful voyage. It’s also the city in which Andromeda was chained to a rock in sacrifice to a sea monster only to be rescued by Perseus. It was a neat place to visit.

Colorized Svn Diffs in Sparrow

For a year now, I’ve had mail forwarded from my work email to my personal so that I could check mail in only once place. With some vacation on the way and not wanting to have thousands of messages keeping me from efficiently checking personal mail via my phone while computerless for a week, I decided to split the accounts back up. But I don’t want to have to check two accounts for mail on a daily basis, so I wanted to use a mail client. I had been using Sparrow to check mail on my phone and liked it quite a bit. This morning, I downloaded the app for my computer and also gave Thunderbird (which I used for years) another quick spin.

Well, I’ve become such a junkie for the Gmail way of doing things that using Thunderbird’s just not tenable. It feels like I’m using a TRS-80 or something, and the lack of threading by default (maybe you can get an extension to handle it) made me cringe. Sparrow provides a much nicer user experience and handles the threading beautifully, but it doesn’t do anything smart for colorizing svn diffs, which I’ve written about before as a problem with the default Gmail experience.

I decided to see if I could fix this, and it turns out that you can. Just go into /Applications/Sparrow.app/Contents/Resources/conversation.css on your Mac and add these lines to the bottom of the file:

ins { background-color: #cfc; text-decoration: none; }
del { background-color: #fcc; text-decoration: none; }

Then restart Sparrow. You’ll have lovely green and pinkish diff lines rather than impossible-to-read underlined text. Of course, I don’t imagine this’ll survive any software updates (or at least any that touch the css file — I’m not sure whether Sparrow does partial/differential updates or not), so chances are that this’d need to be reapplied after any update, hence my storing the fix here for my future reference.

UPDATE: I tried this fix with the free version of Sparrow. Since I like the software so much, I decided to help fund it by paying the $9.99 to support it. A nice side-benefit of paying is that the ads that appear in the free version to support it go away. Unfortunately, so does the ability to hack the CSS. When I modify the CSS in the paid version, it crashes on startup. I guess there’s some kind of checksumming going on or something. So for now, I’m back to using the free version with the svn diff colorization and an ad. I’m happy still to have supported development on the project but do wish I could use the premium version with my custom CSS.

Custom Feed Links in WordPress

At a WordPress meetup tonight, the question arose of how to override default feed links for a WordPress site. For example, what if you’re using FeedBurner and want to just change the links in your source to the relevant FeedBurner links without hacking your theme? I don’t know if it’s the best way, but it looks like this is pretty easily done with a plugin that, in its simplest form, looks like this:

<?php
function feedme_remove_feed_links() {
        remove_theme_support( 'automatic-feed-links' );
}
add_action ( 'after_setup_theme', 'feedme_remove_feed_links', 11 );

function feedme_add_feed_links() {
?>
<!-- CUSTOM FEEDS HERE -->
<?php
}
add_action( 'wp_head', 'feedme_add_feed_links' );

Of course, you would need to make the feedme_add_feed_links() function do something a bit more useful, and in an ideal world, you’d provide an admin screen that allows people to specify their links.

One important detail that may not jump out at you is that when adding the “after_setup_theme” action, you need to give it a priority higher than 10. Else it just goes into a stack with all other of its sibling actions with the default priority and may be (in fact seems to be) overridden by one of them.

DrawNothing

A couple of weeks ago, I started playing a fun game on my phone called DrawSomething. It’s a really addictive game, enough so that it made me think a little bit about how the things that work about the game might apply to blogging, which is what my day job centers on. I had previously let myself get hooked on FarmVille, which is also seriously addictive, but in a less meaningful way.

Let me clarify that a bit. In FarmVille, you do what amounts to menial labor and have non-semantic interactions with others who need more points to gain better tools for doing menial labor on their own farms. The interactions are about meeting game objectives and not about exchanging real information with friends. Plant some crops, wait until it’s time to harvest, pester your friends to give you a sheep so that you can get a tractor so that you can plant crops in a less tedious manner so that you can maximize efficiency as you rotate your crops for optimally timed harvests and increased profit. And so on. The key thing FarmVille and similar games lack is creativity.

Enter DrawSomething. The premise of this game is that you choose one of three words displayed and try to draw it. A friend tries to guess it. There’s lots of opportunity here to include in-jokes or other information that has meaning within the context of your particular friendship with this person. If you’re given the option to draw the same picture for another friend, the context changes and you may render it in a wholly different way. The game requires short bursts of creativity. You’re thinking, and doing so within fairly tight confines (the phone screen is only so large, and you have only so many colors and line widths and your own clumsy fingers). And you improve your thinking as you go. Mess up a drawing with one friend and you can bet you come up with a better drawing the next time you select the same word to draw for another friend. But that’s just the first part of the game’s premise, for you also get to play back your drawing and your friend’s attempt to guess it. That is, you get to watch as he taps out his guesses as to what you’re drawing, and to see at what point during your sketching he has the “aha!” moment. It’s built-in feedback for how sound your thinking was as you decided how to draw a picture.

Of course you also get to guess what your friends have drawn, which allows you to be on the receiving end of in-jokes and other personal references. The guesser is given a slate of a dozen or so letters to choose from when guessing, along with a set of blank spaces to fill with letters. So you can use the drawing, the number of letters you know the word to have, and the letters available to choose from as parameters for figuring out what your partner has been tasked with depicting for you. I’ve guessed words a time or two almost before the drawing commenced, based only on the letters. Basically, you get to exercise several brain muscles while guessing. Sometimes it’s like Pictionary and sometimes it’s more like Boggle; the most fun rounds are a perfect combination of the two. Pictionogglary, I suppose.

Although I began to get a bit of game fatigue as I had a half dozen or so games going at once, it was still a very fun game, with these little bursts of creativity, perfect for 3-minute slices of time between tasks. It’s the sort of game that, even if you tire of it, you can pick back up days or weeks later with nothing lost and without diminished satisfaction.

Yesterday I learned that Zynga (makers of FarmVille) had bought the company behind DrawSomething. I suppose I shouldn’t be surprised. The game had a meteoric rise to popularity, and Zynga’s known for buying game shops that have demonstrated success.

I don’t play Zynga games anymore. I should disclose that Zynga bought the last company I worked for and that I opted not to go along with the others on the crew who went to work for the new ownership. I should also pause and say that I admire and respect the people I used to work with. They were a smart, dedicated bunch of guys who made career moves and seem to be doing well. I was glad to learn recently that some of the nasty rumors I had heard about working for Zynga have not turned out to be true for the guys I know. So maybe things aren’t all that terribly bad at Zynga.

Still, there are the stories of unscrupulous business practices. There’s very clear evidence that Zynga has ripped off game concepts from other, smaller companies (FarmTown rose before FarmVille as I understand it, and the latter has nearly identical gameplay, or it did when I was playing it a couple of years ago). And you just hear bad things about Zynga CEO Mark Pincus. Rumors, rumors, I know. It’s stupid to base anything at all on unsubstantiated rumors. Still, I’ve just never had a good feeling about the company. And I’m not interested in supporting their work by playing their games, even if I never send them a nickel (and even while wishing the best for my former coworkers). So now I’m done with DrawSomething too.

One of the things that DrawSomething really highlighted for me was that the Zynga games I played were really awful and empty in terms of how it felt to play them. (To be fair, since Zynga rips these games off, it’s not the company’s fault the games are soul-sucking; big Z sure is good at purveying the games, though.) The games basically stick you into this irrational, Ouroboroean loop of producing so that you can consume so that you can produce, with no external reward or meaningful internal pleasure at having done so. Raise enough crops to get a few coins and you can buy a new kind of crop to raise so that you can produce another kind of crop that you can raise enough of to buy a tractor, and so on. It becomes a real grind made worse by the fact that if you don’t tend your crops quickly enough, they wither in the field and you’ve wasted a planting cycle, which just makes you feel bad. Any sense of accomplishment is derived not from achieving a thing worth achieving but from staying in the game’s loop. This becomes downright stressful over time, and near-solipsistic. Sometimes you just need to escape the loop.

By contrast, the little bursts of personal context and creativity that DrawSomething afforded me made the game pleasing not because of the game itself but because of how it made me feel to have shared a laugh with a friend or made a picture that was recognizable, funny, at times even crudely artful.

One of the things that strikes me about games like FarmVille is that they’re absurdly frivolous. There’s nothing really worthwhile about them (except that occasionally Zynga has tried to wring more money out of people by purporting to donate some portion of proceeds  earned over a given time period to charity). Of course, there’s not much worthwhile about DrawSomething either, at least nothing worthwhile in the world-peace/stopping-hunger way. But at least there’s a glimmer of human connection, of life outside the game. There’s a sense that somebody you know is at the other end of the line drawing a picture especially for you.

Curiously, I’ve always thought myself a pretty happy-go-lucky guy. I cheerfully make fart jokes and giggle at things people repost from George Takei on Facebook, for example. I enjoy puns and silliness of many sorts. Yet as I’ve grown older and more curmudgeonly, I’ve begun to notice that I have a much lower tolerance for frivolity among ventures that steal away much of my diminishing time and attention for the more serious things I’m interested in. I am, in other words, good for a quick silly exchange or a peek at the odd humorous web site, but on the whole, if I’m spending any appreciable amount of my waking time on something, I want to spend it on something that nourishes me in some way or another.

I realized at some point that FarmVille was not only not nourishing to me but was actually toxic, and so I quit playing.

My job these days is helping people have good blogging experiences on WordPress.com. As I thought through the things I found delightful about DrawSomething, I thought about how we might bring similar delight to users of our service. Blogging and receiving comments on your posts can certainly be rewarding, but helping people make better and more meaningful connections with their readers, and with other writers, is always on our minds.

Years ago, a friend introduced me to the notion of the grilled cheese sandwich blog, which has now been pretty solidly taken over by Twitter. The grilled cheese sandwich blog houses the sort of vacuous post in which you share inane things about your life that nobody with any sense cares about. It’s the epitome of frivolity.

If I’m going to get on any sort of a high horse about the frivolity of games, then I suppose I ought to think hard about the frivolity of the thing that puts bread on my table. I don’t guess you can ever keep people from writing about their grilled cheese sandwiches, and you ought not to want to either. It’s a free world (at least if you’re a straight white guy above a certain tax bracket), and I’m generally a live-and-let-live kind of guy. But if there are things I can do to help convert frivolity into meaningful expression or, in the best case, human connection — much as DrawSomething became for me a more nourishing game than FarmVille had been — I think I’d like to try. I won’t be so dramatic as to pronounce this as the kernel for a professional manifesto, but this stuff is very much on my mind these days.

WordCamp ATL Friday Sessions

I’m in Atlanta this weekend for WordCamp ATL at the Savannah College of Art and Design. My hotel is a half a mile or so from the building, an easy enough walk (if not a particularly scenic one). You walk in and then go through sort of a maze of hallways to get to the elevator that takes you to the fourth floor, where the setup is very nice — one big room (not an auditorium exactly) and several satellite classrooms. There’s loads of fruit and muffins and juice set up for us, and the registration process is very smooth, the only hitch being that I forget for a minute that I’ve actually had the nerve to sign up as a speaker and so have gotten in the wrong short line. There are big faceted jugs of water with lemon slices floating in them and big jugs of water with what I think are lime slices floating in them, but they turn out to be cucumbers, which is nice but a bit of a surprise. I alternate throughout the day between lemon water and cucumber water.

We learn during the opening remarks that a couple of speakers aren’t able to make it (food poisoning), and unfortunately, one is the speaker I had been hoping to see for my first two sessions. It definitely hasn’t been a wash, though. Read on for my notes from the sessions I’ve attended today.

Thomas Griffin, Awesome Theme Functionality? It Probably Needs a Plugin

He told us about a nightmare scenario involving urgent 1am phone calls from a distressed client. The cause? He had built a theme that did more than skin the site. Core blog functionality (things like custom post types, meta boxes, shortcodes, custom taxonomies, etc.) were built into the theme itself rather than an accompanying plugin, and when the client changed themes one day, their content disappeared.

The speaker proposed using a “core functionality” plugin that you require from within any theme you develop. Once installed, the plugin bits remain on the site whether the theme itself is later uninstalled or not.

He went on to talk a bit about his core functionality plugin, which does things like managing suggested and required plugins on theme installation using WP_Filesystem. It seemed like a pretty neat plugin for those who handle lots of site deployments and find themselves requiring the same things over and over again.

Although this wasn’t a terribly technically deep topic, I suspect some of the details were over the heads of a lot of the attendees. I enjoyed it and was glad to learn about this plugin and to have the best practice of theme/plugin separation reinforced, but I didn’t learn much new (which is ok — I’m not sure I expected to).

Mike Schinkel, Mastering Custom Post Types

  • Slides
  • Custom post types made WP a really good all-purpose CMS
  • Recommended tools:
    • PhpStorm
    • Navicat for MySQL
    • VirtualHostX
    • Transmit/FIlezilla
    • HTTPScoop (or Fiddler on Windows)
  • After creating a custom post type, you have to refresh permalinks. You can do this programmatically too, I think he said, but then he talked about a site that was refreshing them on every page load, so you have to be careful.
  • add_meta_boxes action (just something I hadn’t known about, since I’ve never made a custom post type with any further intent than testing the most basic functionality).
  • re taxonomies: the “hierarchical” key when registering determines whether a taxonomy is a tag or a category (categories are hierarchical)
  • You can add a custom post type filter to the posts page (allowing you to filter by e.g. a given comic) using the restrict_manage_posts and pre_get_posts hooks.
  • I thought this was a nice intro to custom post types. If you have trouble absorbing info in the Codex, this was probably a great session, and I picked up a few tidbits I hadn’t known before.

Dre Armada, WordPress End-User Security — The Remix

I had heard about Dre and was eager to hear his talk, and although I was already familiar with the material he covered, I thought his presentation was really good. He was animated and understanding of his initially quiet post-lunch crowd. I think his presentation was probably eye-opening for lots of the attendees, and he reminded me that even though I know the stuff he was covering, there’s lots of room for improvement in my adoption of security best practices. I took a bunch of notes, but they were basically a transcription of his slides, which you can see here. It’d be good for veteran and new users alike to review them.

CSI WordPress — Getting into the Guts

This speaker was a no-show, making that three sessions I had hoped to attend that didn’t turn out as planned. Would-be attendees (turned presenters) Doug Cole and Mark Jaquith were conscripted to speak on general WordPress development topics, using an old presentation Doug had handy and then doing a general Q&A. It turned out fine but wasn’t the sort of thing that demanded much in the way of note-taking. It was certainly not time wasted, but neither was it the more tech-heavy session I had hoped for. Kudos to the two for stepping up to fill an unfortunate gap.

Sara Cannon, Design Swoon — Visual Trends and WordPress

Sara is quiet. I attended her session because I have no eye for design and wanted to see what I could learn. She started by showing us some really neat HTML5 sites (e.g. beetle.de) and then moved on to talking briefly about mobile, and responsive themes. She’s a big fan of Twenty Eleven and recommends it as a great starting point for doing responsive design. Some other things she covered, mostly by showing us some nifty web sites and talking through them:

  • Movement
  • Simplicity
  • What not do do in 2012
    • Don’t use Comic Sans (even ironically)
    • bingo cards (too many thumbnails all together)
    • sliders (if you use them, make sure the content they house is curated, and well-curated)
    • don’t use a fauxgo
  • What todo in 2012
    • break your borders and breathe (don’t box your web site in), e.g. paulmitchellkelly.com
    • there is no page fold (don’t be scared of scrolling)
    • design is everything
      • web design is 95% typography
        • ringboxingclub.com
        • don’t let your site dictate your content; let your content dictate what your site will look like
        • metadata will be key to making sure your styling is relevant to your content; e.g. put pull-quotes in metadata
  • Some neat tools

I dug seeing some of these sites, and the tools listed near the end are really cool, but this wasn’t a session that really taught me anything. The attention to WordPress was scant, but short of digging in and workshopping the creation of a theme, I don’t know how she could have shoehorned WordPress into a “visual trends” topic anyway. I should probably have gone to Russell Fair’s session on mu-plugins but wanted to try something outside my usual skill set. That’s not to say that Sara’s session wasn’t good (the designers in the room in particular seemed really engaged and asked some good questions); it just wasn’t quite the design tutorial I had imagined (though put on the spot, I couldn’t describe what I’d expect anyway). Sara’s doing another talk in the same room and time slot on typography tomorrow.

Starting the Knoxville WordPress Meetup

Back in September, I started the Knoxville WordPress Meetup group, and we’ve been meeting ever since. Last week, Jane Wells, who does project management (and many other things) for the downloadable WordPress software, announced that the WordPress Foundation was working toward helping foot the bill and provide resources for local meetup groups, and she followed the announcement up yesterday with an account on her personal blog of how her startup of two local meetups had gone. I thought I’d update here with the progress of my little group as well.

We held our first meetup in October. I paid for the meetup.com registration out of my pocket (one of the things the foundation’s support will prevent the need for) and just proposed a time, date, and place. I tweeted about it and posted to Facebook, but these aren’t terribly great advertising channels for me, as most of the people who follow me on Twitter aren’t local (I’m a hermit in real life), and most of my local Facebook friends could care less about a WordPress meetup. I also have a hangup about spamming people. I was surprised when people started joining the meetup group and even more so when eight or nine of us showed up for the first meetup. We met at a Panera, and the agenda included basically a meet and greet, plus discussing what we might like to cover at future meetups. We settled on second Tuesdays at 7:30 as our general meeting times.

One of the attendees, Mike, whom I’ve known for upwards of a decade by now, happens to be on the board of a local organization that has a small space for coworking and community technology-related meetings. He offered the space for future meetups, and I took him up on it, not least of all because I’m shy about flying any sort of flag about myself and my interests in public places like Panera. A restaurant was great for a first meeting, but I was happy to have a dedicated, private facility at my disposal, and we’ve met there ever since. I’d say we could probably grow to 20 or so people in this facility before needing to find something bigger.

In November, we had a smaller crew, and though I had hoped that some of the WordPress novices (or at least those who blogged but didn’t really know much about theming or development) would show up to take advantage of what I had billed as a theming workshop, we were mostly a few developer types. I gave a little presentation about theming and we chatted a bit, but it wasn’t, to my mind, the most successful of meetings. I had hoped some of the more technical among us could help some of the less technical with specific problems they were having with their themes (hence the “workshop” title), but it wound up being me giving some info without any application of it. (That said, some of the info seemed to be new and interesting even to the developers who showed up.)

One of the challenges, when you’re a small group with mixed experience (ie, developers and non-developers) is finding a way to hold meetings that interest everybody. Topics that require too much technical knowledge will stink for the novices, and many topics that would be helpful for the novices would be a snooze for developers. As you get bigger and can break into smaller groups, I suspect this becomes less of a problem, but when you can count your attendees on one hand, or one hand and a couple of fingers, splitting up isn’t really a great option.

For our December meeting, we were again a smallish crew, and I gave a presentation on securing your WordPress blog. It seemed to be pretty well received, and of course, although I was giving a presentation, we also had back-and-forth and sidebars where needed.

I was too lazy busy over the holidays to put together any sort of presentation, so for our January meeting, I proposed the topic “Bring a Question or Problem,” figuring that even if those present didn’t know the answers offhand, we could go hunting for answers and help each other out. With eight confirming that they would attend, I thought we might be on the verge of having a lift in our attendance numbers, but only five of us showed up. Still, there were some good beginner questions and one slightly more technical question I really enjoyed trying to help out with. The format here worked very well for our small group. Mike proposed in the Meetup forums that even when we have some formal topic or presentation, we keep it fairly brief and dedicate a hefty chunk of our time to Q&A, and I think he’s got the right idea. Of course, if nobody has any questions, I guess we’ll wind up having a short meetup.

So, there’s a history of the Knoxville WordPress meetup to date. Our regular time slot in February falls on Valentine’s Day, and I’m working on trying to figure out whether to cancel or move the meetup. Our topic will be “Squeezing Performance out of WordPress” (something I need to read up on a bit beforehand). This is one of those tricky ones that would be easy to make too technical for novices and not technical enough for developers, so finding the right balance may be tricky. I’ll probably err to the side of simplicity but try to have a little more technical info in my back pocket for any sidebars that come up among the developers.

Our meetup page boasts 23 members, though we’ve never yet beat the attendance record we set at our first meeting. Those of us who have shown up pretty regularly seem to have a good rapport, and I enjoy the meetups. They force me to formalize some of the vague knowledge I have about using certain features of WordPress, which is part of why I started the group to begin with.

Knoxville WordPress Meetup

In August, I went to St. Louis to meet with members of my team at Automattic. Among the many fun things we did while there, we (some 20 of us) descended upon the St. Louis WordCamp. For the person-and-a-half who reads this blog and doesn’t know what a WordCamp is (of the maybe four people who read the blog, period), it’s an inexpensive conference at which people convene to learn about WordPress. Like any conference, a WordCamp hosts speakers who know a bit about what they’re talking about, and then others give of their time to volunteer to staff the event. Still others spend their time and money attending the event. In St. Louis, the audience seemed pretty varied. I spoke to people who simply wanted a little help setting up their blogs, and of course many in attendance knew a great deal about the guts of WordPress.

At the end of the day, WordPress founder Matt Mullenweg stopped by and did a Q&A, and during this hour or so of candid chat, a humbling thought occurred to me: These people had organized themselves around a set of products and services that I’m fortunate enough to have the privilege of working on. Let me frame that a little differently. Imagine you work for a company that makes widgets. One day, you learn that people all over the world are spending great effort and money from their own pockets to gather voluntarily and talk enthusiastically about your widgets. Even if you’re passionate about fabricating widgets, it’s still kind of amazing to think that people like your widgets enough to assemble and talk about them as if they were, well, important, valuable, enriching. It was a great feeling to bring away from that WordCamp.

For those not lucky enough to have WordCamps organized in their necks of the woods, there are of course WordPress meetups, which are less formal, typically free, smaller gatherings of WordPress enthusiasts and users. Inspired by my experience in St. Louis, I decided after my return home to set up a WordPress meetup of my own. And then I promptly let it sit untended.

My neglect was based on a few things:

  • I’ve never been to a WordPress meetup and don’t know exactly what goes on there or how to run one.
  • I’m generally very shy.
  • Although I’ve used WordPress off and on (mostly on) for many years now, I hadn’t done much recent development on the platform. Even my job with Automattic sees me working more on the non-standard bits of the code than on the core code. So although I’m in the position of someone who might seem to be something of an authority on WordPress, there’s still a whole lot that I don’t know. Accordingly, I fear that as the putative authority founding a meetup group, I’ll fall far short of expectations.

Bah, excuses, excuses. Today, I’ve bitten the bullet and scheduled the first actual meetup gathering for the group I hope to start. So far, three people (including me) are members of the group, and I’m the only one who’s RSVP’d. If you happen to be a Knoxville blogger, developer, or designer (or anything else) who’s interested in WordPress, I hope you’ll visit the meetup page and consider keeping me from being lonely at the event I’ve scheduled for a few weeks hence. If anybody shows up, we’ll do introductions, get a feel for where people’s experience/comfort with WordPress is generally oriented, and try to figure out where to go next.