WordCamp ATL Saturday Sessions

Matt Mullenweg and Jane Wells kicked off WordCamp Atlanta this morning by tag-teaming a general WordPress Q&A session. It was convivial if not terribly informative for me (probably plenty informative for others). During the Q&A, one person reported having had difficulty getting support some time back for some blogs she had set up at WordPress.com and had gone back to Typepad for that reason and others. Since I work on WordPress.com, and on the support team in particular, I felt pretty bad about this. Luckily I was able to track her down after the session and reach out to try to provide some one-on-one, in-person support. I think I made her day a little brighter, and it felt nice to try to help.

Next I headed to the Happiness Bar, a room that users can go to when they have questions about WordPress that they’d like to help get sorted out by an expert. I was ostensibly one of the experts staffing the bar (which is not, sadly, in fact a bar). After a few minutes chatting with a couple of people from WP Engine, I snagged someone who came in for help and brightened her day as well. Helping people is fun.

Next up, I gave a presentation titled Hassle Free Blogging with WordPress.com. It was fairly sparsely attended (though better attended than I had feared it might be, given that most people who attend WordCamps already have, or are interested in having, self-hosted blogs), and I think it went pretty well. Several people told me afterward that they had thought my presentation had been good. I was well-prepared and wound up not being nervous at all, so maybe I’ve conquered my fear of public speaking.

At lunch, a number of us who organize meetup groups were going to chat, but the conversation wound up being monopolized by one guy asking things he should have simply read about on Jane’s recent post, and I wound up bailing early to make sure I could get a seat in my first real session of the day.

Mark Jaquith, Creating and Maintaining WordPress Plugins

I’ve watched one or two of Mark’s presentations on WordPress.tv and found him to be just as clear and concise in person as on the tubes. He started with a brief overview of why one might use plugins vs. hacking code into functions.php, for example. Then he gave some general advice about good code patterns to use. For example, he favors using classes to avoid polluting the global name space and setting up convenience methods to make life easier. You should also defer actions (no point in registering an admin action for non-admin pages), and he showed off a handy way to keep a plugin’s options in a single array rather than storing a WordPress option per plugin option; this was one of those convenience methods. Even while showing us his particular ways of doing these things, he acknowledged that we might have our own preferred methods and made it clear that his intention wasn’t to peddle his particular kool-aid but just to give us some general ideas.

Next, he talked a bit about why and how to use the WordPress.org plugin repository, suggesting that having plugins in the repo makes you feel good (helping others), is great for professional credibility, and is a great way to keep track of your own plugins. The how of it was old news to me, with one exception — he gave the tip that when releasing a new version of a plugin, you should first tag your code and then repoint the readme, which isn’t something I necessarily would have known to do.

Finally, he talked for a few minutes about what he called sanity. He suggested not giving your plugin too many options, especially in early releases, as the more options, the more questions people will have and the more support. He cited the core WordPress team’s emphasis on “decisions, not options,” which is a little vague but which I take to mean basically that rather than giving people dozens of knobs to twiddle to change minor things, you should worry more about the big things that make real differences in how your plugin operates, that make people ask themselves “do I wish to have my site do biggish thing X or biggish thing Y?”. He also emphasized the importance of just saying no to users sometimes; in other words, don’t be a slave to the random requests of users. If you don’t think a feature suggestion is a great idea, you don’t have to implement it. Just Say No. And finally, he impressed upon us the importance of encouraging good behavior. For example, don’t build plugins that allow users to do spammy things.

It was a solid talk. Again, this wasn’t one that actually taught me new skills, but Mark is an earnest and engaged speaker, and I felt as if it was important to him to explain things clearly and logically, with no agenda other than helping. I’d love to attend a talk by Mark on a more advanced topic.

J. Cornelius, HTML5 — Hell Yeah!

Uninspired talk title notwithstanding, this was probably the best talk I attended all weekend. It was packed with information I didn’t know (partially because this is an area I’ve never looked into at all, which was exactly why I was interested), and the presenter seemed really well-informed, with slides that did a great job of demonstrating the principles he talked about. It was a standing-room-only talk.

The speaker started off with a brief history of HTML, from its beginnings as part of the SGML standard through HTML5. He marked the milestones with musical milestones featuring the likes of Eminem, Usher, and — gulp — Kenny G.

HTML5 is important for the following reasons:

  • Semantic markup is markup in which the markup is relevant to the meaning; since HTML5 provides more (and more precise) elements, it affords our markup more and better meaning.
  • New parsers that accommodate HTML5 will also do a better job of doing things like fixing incorrect tag nesting. Since 95% of the web doesn’t validate (!), this is good for the web.
  • HTML5 is better for mobile platform usability, which we all know is of increasing importance.

Some neat tidbits I learned about the spec:

  • In-line elements can contain block-level elements now. This is important because it makes for more concise, cleaner markup. For example, rather than having <h2><a href=”#”>Foo</a></h2><p><a href=”#”>Foo</a></p>, you can have <a href=”#”><h2>Foo</h2><p>Foo</p></a>.
  • The <nav> element is a lot more meaningful than a <div> that contains a list.
  • The <time> element is machine-readable, providing for the first time a document that provides information about itself that doesn’t require human interpretation.
  • There’s a <nsfw> tag that will pull contained elements out of the DOM. There is not, however, a <noscript> equivalent that will show alternate content.
  • You can do some form validation without having to implement your own screwy javascript.
  • The <article> and <section> elements can be a little confusing. You should consider <section> to be a logical section of a document, while <article> conains content that could be used elsewhere without losing meaning. I take this to mean that in a site that has all kinds of moving parts, a <section> might describe a subset of moving parts whose functionality is constrained to the site’s display properties, while an <article> contained within a section describes the text and media that could meaningfully be syndicated without the baggage that the <section>-specific bits would bring along (e.g. UI controls).

Some helpful sites/resources:

This presentation wasn’t especially geared toward WordPress (though I took some good-natured flak for raising my hand as the only person still using a default WordPress theme — but bear in mind that I’m in a room full of designer types), but it was certainly relevant material, and the room was very interested in the presentation. I learned more at this one than at any other over the weekend, even if it wasn’t especially technical material or information I’m likely to use on any sort of regular basis in the near term.

Kristina McInerny, Cool Tools for Customizing WP

This presentation got off to a bad start when there were technical problems with the presenter’s laptop displaying properly to the projector. I offered my laptop for her to use, and though this got us over the technological hump, it’s got to be discombobulating as a speaker to have to change environments. We had to stop partway through and install a piece of software she had planned on demonstrating, for example. Further, although her presentation assumed use of Firefox and associated tools, several in the room were Chrome users. Luckily, I’m a Chrome user and knew about equivalent tools. At the risk of hijacking the presentation and with (I think) approval and even thanks from the presenter, I spoke up and briefly demonstrated the equivalent tools.

The tools covered were Firebug for easily viewing and manipulating CSS, FirePicker (not installed in my Firefox and so unfortunately not demo-able), which lets you choose colors easily from within Firebug while working on your styles, and FileZilla. After going through how to find a style snippet in Firebug, the speaker showed how to edit the style sheet using the WP Admin style editor and how to comment out the original style definition for restoration should your change go awry. She then tried to explain how you might use an FTP client to transfer files and particularly to back up your style sheet prior to making changes in the admin editor. The talk was revelatory for the gentleman beside me, who said enthusiastically that this session alone had been worth the price of admission. So I think it was well-received among at least the less experienced among us.

The talk was billed as not being suited to beginners, but neither was it quite an intermediate talk. For example, I can’t imagine an intermediate user actually editing styles through the WP admin editor. And the explanation of how to use FTP seemed off target. That is, she seemed to suggest that you could download your style and save it in a backup folder before editing via WP admin. But why not just edit the files locally and transfer up afterward? Or, if that’s too sophisticated a use pattern, why introduce the FTP complication at all rather than just suggesting saving a backup copy locally via copy/paste (which, to be fair, she covered, but I didn’t really understand adding the FTP complexity if it was going to be used in the way suggested).

For me, the talk was a little disappointing, though again, for those who were dabblers or seemed to be pretty beginner-level users, it seemed to be very well received, so I think I just chose the wrong topic for my experience level.

General Impressions

The Atlanta WordCamp seemed to be really well organized. Things ran very smoothly, or if they didn’t, it sure seemed to a non-insider attendee as if they did. The facility was great, the food adequate (boxed lunches can be only so good, and the breakfast and snacks were good). Registration was a cinch. The projector issue in my last session was apparently the first tech glitch of the weekend. I was very impressed overall. I wouldn’t have minded if the sessions had been more clearly marked as being for beginners, intermediate, or advanced users, but that’s a minor nit. I had a good time and found it to be a really rewarding experience, especially my Saturday morning of helping others and giving my talk (which I had been nervous about, having always been afraid of public speaking, which I think I may now be cured of).

The experience proved revealing to me in one big way. I think that WordPress experts who go to WordCamps must go not for the sake of learning anything but for the sake of helping others learn things. Although I work for Automattic, I actually don’t have a whole lot of experience working on the core WordPress software (I work mostly on things tangential to it), so an honest assessment of my skills as a WordPress developer would be that I’m intermediate. Yet the WordPress-specific sessions this weekend didn’t really teach me anything I hadn’t already known. So for core developers like Westi and Jaquith and Otto and Nacin, WordCamps are for meeting people and helping teach them about the software. The other big thing I learned, of course, is that that’s ok. Helping out was what I most enjoyed about the conference, and I’m already beginning to outline mentally a talk I might like to give at a future WordCamp.

I’m crummy at photography, but I snapped a few photos with my phone, mostly of buildings and of art within the SCAD building that housed the conference.

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.

Stay Away from the Moon

I just stepped out of the office for a glass of water and stopped, as I often do when poking my head out, to say hi to my wife and son. My wife told me that Finn had asked what she wanted to do today, and she answered that she’d like to fly to the moon. She shouldn’t do that, he cautioned her. When she asked why, he replied, “Newt Gingrich.” Pressing for more details, she discovered that his reasoning was that Gingrich would make you work in a factory if you went to the moon. He apparently wants to build factories in space, which proposal Finn learned about this morning while overhearing my wife’s listening to Rachel Maddow.

Yet another reason to avoid voting for Newt.

You know, I hear that while he was building factories on the barren moon, he was shopping the idea around to build on other celestial bodies as well, the promiscuous rascal.

Given his religious background, it stands to reason that Romney might have an interest in space too.

Being Taken Down a Peg by Pampooties

Although I have a bad habit when reading of not looking up words whose meanings I’m a little fuzzy on the nuances of, it’s rare for me to read a book that uses enough words I don’t know that I’m inclined to keep a running list to look up later. This week I read Cormac McCarthy’s Blood Meridian, and I recorded 170 words that sent me to the Kindle dictionary, many of which the Kindle couldn’t even define. Most of the words I flagged fall into one of these categories:

  • Words I’ve looked up many times but always forget outright or lose the nuance of (e.g. truculent, serried)
  • Words that I’ve never encountered and whose meanings are perfectly clear but that I recorded because I thought they were neat (pyrolatrous, querent, terra damnata)
  • Specialty words pertaining to things like guns, saddles, geology, landscape, and flora (loads of these, which I don’t feel so stupid for not knowing)
  • Non-specialty words that I just plain didn’t know
  • Spanish words, sometimes specialized or archaic

I’ve always thought I had a pretty good vocabulary, but boy did this book school me. I’ll have to go back to my kids now and tell them that in spite of past statements I’ve made (tongue in cheek and with false bravado, to my credit), I do not in fact know most of the words. Here’s the list, if you’re interested.

acequias
aguardiente
alcalde
alparejas
alpenstock
anchorite
apishamore
archimandrite
argosy
arrieros
artemisia
aubergines
azoteas
baize
bagnios
benjamin
bistre
bung-starter
burins
cantle
cantonment
cárcel
carreta
cassinette
catafalque
chaparral
charivari
chary
chines
cholla
chorines
ciboleros
ciborium
claymores
corbels
cordilleras
corrida
coulees
criada
cuartel
dace
dap
debouched
demiculverin
dogtown
dolmens
dorys
duledge
dunnage
escopetas
eskers
fard
felloes
frizzen
fulgurite
fusils
gadstine
galena
garraffa
guidon
guttapercha
hackamore
halms
helve
holothurians
huaraches
imbrium
jacal
javelina
jokin
jornadas
juzgado
keelsons
kivas
knacker’s
knappings
lanneret
lonbations
madstone
malabarista
malandered
malpais
manciple
matracas
merestone
monocline
morral
nacre
nopal
ocotillo
osnaburg
ossature
palmilla
paloverde
pampooties
panniers
pauldrons
parfleche
pelados
peltries
pitero
potsherds
pritchel
procrustean
purlieu
pyrolatrous
quena
querent
ramada
ratchel
reata
remuda
replevined
revetment
ribracks
ristras
rowels
sark
scantlin
scoria
scree
scrog
scurf
scurvid
serried
shacto
shakos
shirring
skelps
skifts
sleared
sloe-eyed
solpugas
sotols
spalls
spanceled
sprent
sprues
squailed
stobs
surbated
sutler
suttee
suzerain
swagged
swale
swapt
talus
tapaderos
tatterdemalion
tectites
terra damnata
thaumaturge
thews
thrapple
tonto
trapdykes
truculent
treeboles
vadose
videttes
vigas
vinegarroons
uncottered
welter
weskit
windrowed
whang
withers
withy

The Achy Breaky Pony Tail

After working as a copy editor at a newspaper for a year soon after graduating from college, I snagged a job with a local startup that ran charity auctions. It turned out to be run by crooks, and after waiting around for weeks before I had a computer (I was editing printed out copies of the web site) and then enduring a few pay periods sans paycheck, I finally left, along with many other employees who, when informed that mandatory layoffs were coming, scrambled to be among those laid off.

We did conduct a few auctions, though, one of them for a foundation linked to the country music industry raising money for I forget what cause. Items included things like tickets to events, memorabilia, celebrity-owned instruments, and so on. One item was an event labeled “Guns N Dozers” the winning of which awarded you the opportunity to visit the ranch of a country singer (I don’t recall which one), with whom you would shoot guns and drive farm equipment.

To me, the most memorable item up for auction was the recently harvested pony tail of Billy Ray Cyrus. What’s more, it came with a Billy Ray doll. Don’t believe me? Check out this old news item. Anybody can own a fake Billy Ray Cyrus pony tail getup, but somewhere out there, a fan has the real article, probably encased in glass, framed, and hanging on the wall.