WordPress is alive and well in Minneapolis

I just finished spending 6 days in Minneapolis and had a great time. There was soooo much WordPress related content to take in. It was really impressive. Here’s what my week looked like:

WordPress Wednesday

On Wednesday, Justin and I headed to CoCo, a coworking spot in downtown to work for the day. There they do WordPress Wednesdays. This usually entails a row of tables with people all working away on their WordPress projects. I mentioned a need I had for a client and it turns out one of the other guys at the table (Toby Cryns) had built a similar solution. He sent me his code and I was able to tweak it to my needs within about 15 minutes. We spoke more about the solution and we’ve agreed to collaborate on the plugin and end up releasing it to the community pretty soon.

They also do a weekly “Book Club.” This consists of reading a portion of the Professional WordPress: Design and Development book and then talking about it. We had a good conversation about some functions and Justin ended up agreeing to lead a further discussion on arrays in the coming weeks.

WordPress meetup Thursday

The 4th Thursday of every month they hold their monthly meetup at the Nerdery. Just another awesome venue for holding events. There was a really solid turnout for the event and I had a great time doing a short intro to Restrict Content Pro. My favorite part of my presentation was when a guy in the crowd mentioned that he had a live site with a very active RCP installation. I invited him on stage to take over my presentation and give us a tour of his site. I sadly can’t recall the name of his site, but hopefully he’ll see this and leave a comment. :)

Grant Landram gave a great presentation about customizing the WordPress admin panel before handing it off to clients. It really made me think about how we hand off projects to clients once we’re done. I think it’s time to sit down and take a serious look at revamping that process. Here’s Grant’s slides if you’d like to take a look.

WordCamp Weekend

Friday night was the speaker/sponsor dinner, which is always a nice opportunity to catch up with people I’ve met at other Camps across the country and to meet some new WordPress peeps, too.

Saturday was the big day. WordCamp MPLS. I don’t know what their actual attendee count was, but it was pretty decently attended. 3 tracks plus an overflow room and every session I attended was 3/4 full or more. Even the ones late in the day. I was tremendously impressed with the attendance and engagement. Great content, great questions from the crowd. An all around fantastic WordCamp.

BuddyCamp

Day two of WordCamp was centered entirely around BuddyPress. Vancouver and Miami have each held a BuddyCamp recently, making this the 3rd such event. I wasn’t really sure how well it would be attended. But, once again, Minneapolis proved they’re all about all-things-WordPress. There was a nice progression of speakers kicked off by Lisa Sabin-Wilson doing an introduction to BuddyPress and wrapping up with John James Jacoby opening it up for a nice long Q&A session. I did a talk with Justin about using BuddyPress as a directory where we talked about some client projects we’ve done in the past that use BuddyPress without using all the BuddyPress options. I had a blast giving the presentation and there were some great questions from the audience which I always enjoy.

One session that really stood out for me on Sunday was called Mind-Blowing Online Engagement by Tania Jones and Toby Cryns. Toby is the developer and Tania is the client. Together they walked through several before and after screenshots of MANY of the sections of BuddyPress that they customized along the way after listening to user feedback from both their staff and end-users. Toby would explain the technical side of the changes and Tania would then explain in what ways the change was vital to the success of their community engagement on the site. It was fascinating to hear from both sides of the project, developer and client, all in one session. I would absolutely love to see more sessions like this at WordCamps in the future.

So, yeah. WordPress has a strong community in Minneapolis and it was great to have the chance to take part in it for a few days. I’m already looking forward to heading back for WordCamp MPLS 2014.

WordPress training in 2013

This year, thanks to the prodding of the #TeachVegas group, I put together a small series of classes through the website skillshare.com. These classes are small (<20 people) and mostly informal and typically run about 3 hours. I covered topics like WordPress for the absolute beginner, Which plugins to use and how to configure them, Using advanced GravityForms features for novice users. All of the classes ended up being really well received by the students and I loved them because they forced me to dig deeper in to WordPress so that I would have answers to questions that were undoubtedly going to be asked.

I already knew that I enjoyed helping people learn (especially about WordPress), but what I didn’t realize was exactly how much I enjoyed it. That moment when you see the lightbulb go on over somebody’s head when it finally clicks for them, I’m telling you, there’s nothing like it. It’s addicting and I want more.

I’m trying to figure out how I want to move forward in 2013. I want to make available what people are interested in learning about and more importantly HOW they want to learn. For some, the small classroom setting is great. They can ask questions and don’t feel like they are holding up a huge room of people. For others, they’d rather be at home in their PJs watching a video online.

With that being said, I could use your help. I’ve put together a form with some questions about training options and what you’d be most interested. Your input will help shape where I focus my efforts leading up to 2013 and beyond.

[gravityform id="5" name="pick your training" title="false" description="false"]

Photo Credit: Nationaal Chief on Flickr.

WordPress Community Summit wrap-up

A few months back I was absolutely humbled when I received an invite to a fairly exclusive event; The WordPress Community Summit. This was to be the first of its kind, invite only meetup/conference with about 100 people from the WordPress community in attendance. People from all over the globe were planning to attend. We were told this wasn’t going to be just another WordCamp event. The plan was to bring a wide range of people crossing all different aspects of the WordPress community in to one location and have discussions about anything/everything to do with the WordPress project.

I’m not going to lie, for as amazing as this sounded, I had some concerns. The event wasn’t going to have any scheduled talks and would be run as an unconference. I’m a fan of the unconference format, but the process of having the crowd write down topics they want to hear/talk about and then getting them in to some sort of schedule can take up a fair amount of time. And since the event was only going to be one day, I was afraid that we’d lose out on some valuable time and that we wouldn’t really have the time necessary to actually get in to any real discussions. Plus, you know how it can be when you get a group of people who are all REALLY passionate about a topic together in one room. It has the possibility of turning in to a bitch-session where people continue to raise their voice to make sure they are heard.

I’m thrilled to say that all of my concerns were put to rest before lunch time.

In the next day or so there will be a series of posts on the community summit site detailing the notes taken from each session, so I’m not going to dig too far in to each. Each session also had an action item or two that came out it. I’ll save those for the CS blog as well. But here’s a list of the sessions I attended.

After a bit of a delayed start, we all met upstairs to pitch session ideas. The overwhelming majority of the people had topic ideas. As expected, it took a bit of time to let each person have their turn on the mic to pitch their topic idea. Once all the pitches were done, the schedule was laid out and we broke out in to groups for the first session of the day.

The first session I attended was “Getting recognition for non-coders”. The idea being, there are tons of people who spend countless hours building WordPress in ways that don’t get the recognition on the credits page like developers do. For example, documentation, help screens, wireframes, etc.

Next I attended the “WordPress Foundation Transparency.” As a WordCamp developer, this was one of the topics that was really important to me. The conversation started by each of us tabling our main issues/concerns. e all had very similar concerns. Money, control, who’s doing what. It was refreshing to hear that many of the concerns we had have more to do with perception and information dissemination.

Before lunch, a rep from each of the discussion groups gave a quick summary of what was talked about and the action items for the group. This was great because after hearing all the topics that were going to de covered, I really wanted to attend almost all of them.

After lunch there were back-to-back sessions to discuss WordCamps and meetups. My plan in the morning was to sit in on both of those. But, my concerns were handled really well in the foundation conversation so I decided to check out a couple other sessions instead.

Next I sat in on the “How WP Businesses can Give Back” discussion which ended up centering more around how business and work closer with the core team to figure out where their efforts could provide the biggest bank for the buck.

And the last session was “The death of a plugin”. We started out talking about how to go about killing of a plugin you’ve released to the repo, but no longer want to maintain. We talked about forking dormant plugins or taking over development of abandoned plugins and all sorts of variations on the theme. We also talked about how we push the related information to the plugin repo pages.

Once the sessions were over, Matt led a quick discussion about what we need to do to make sure WordPress isn’t dead in 5 years. He had some pretty interesting stats around mobile usage and performance. We then had a bit of a group Q&A before we wrapped up for the day.

The things I liked most

  • Action items. Instead of just talking to hear ourselves talk, each session ended with a set of action items. Some pretty damn good ones, too.
  • The format. Even though an unconference format has the possibility to go awry, it really is the best way to let everybody have a say in what gets talked about.
  • Lack of social media. Ok, that’s going to sound like a weird one, but, rather than everybody being head down in their laptop or iphone, people were spending their time being involved and engaged in what was going on in the room. That’s not always how it goes at conferences.
  • The attendees. It was great to meet people in the WP community from all over the world.
  • Renting a house with friends. Rather than each of us renting hotel rooms, a group of us rented a 4 bedroom vacation house. It was great to to spend Saturday evening and most of Sunday at the house hanging out in a comfortable location and talk shop.

The things I would change

  • Locations are so tough. Don’t get me wrong, Tybee is a great place to visit, but it would be great to be near an airport hub which I think would lower the cost for everybody.
  • An planned dev-day. Many Dev days that take place as part of WordCamps end up just being a chat session. I’d love to have spent the final hour of the first day breaking up in to groups of people who planned to meet the next day and get to work on the action items that came out of the conference.

Even the things I’d change are pretty small in comparison to how great the day was and how much I got out of it. If I’m lucky enough to recieve an invite again next year, I’ll definitely make the trip.

High five to the organizers. Also, high five to the attendees who came with open minds and an interest in sharing, talking, listening and learning.

Genesis Simple Headers 2.0-beta

[UPDATED: Version 2.0 was released. Go get it!]
A while back I wrote a plugin called Genesis Simple Headers and it’s been fairly well received. For a while now it has been in need of some TLC. I’m getting pretty close to releasing an entirely new version and would love love love to have a couple sets of eyes kick the tires. If you’re interested in trying it out, you can download the beta copy here.

What’s new in version 2
- Has support for all standard Genesis child themes (not counting marketplace themes, yet)
- A new “advanced” option that lets you modify the side of the header from the Appearance->Headers page

That’s about it for now. I’m looking for any and all feedback. And, if there’s a feature you think I should add, let me know that, too.

The best way to learn a subject is to teach it

One of the many groups I’m involved with is called Shift Vegas. The goal is to shift the outsider’s perception of what Las Vegas is all about. Believe it or not, casinos and strip clubs isn’t all we have going. There are many sub-groups to Shift Vegas and my main area of interest is education. The edu group made a pledge to run 60 SkillShare classes by the end of the year. Though it took me a while to get rolling, I’ve finally stepped up and this weekend will be running the first of 3 WordPress related SkillShare classes. This one specifically will cover which plugins to use for your WordPress site and how to configure them.

For the past few weeks I’ve been compiling a list of plugins I like that cover a wide variety of functionality like spam cleanup, seo, contact forms and a ton more. 25 plugins in all. For the most part, these are all plugins I’ve used (a couple were suggestions from friends) on a regular basis. Even so, I decide to set up test installation of WordPress and walk through the process of installing each plugin from scratch, configuring it and using it. It wasn’t too long before I realized something; even though I’ve been using most of these plugins for a long time, many of them had far more functionality than I knew!

I use WordPress every day, but for this class I took a step back and tried to look at it using the eyes of a new user. In doing so, I found a wealth of new information. I spent several extra hours digging through each plugin and really getting to know the settings pages and the functionality within. The end result being a better class for the students and a ton of extra knowledge for myself.

I’m excited for the class tomorrow. I’m sure the students will ask questions that I haven’t anticipated. Just one more chance to dig deeper and keep learning. I can’t wait!

[photo by mike52ad on flickr]

Another reason why WordPress kicks ass


I’m working with a client (who shall remain nameless) to help get their WordPress site up to date. They are currently running version 2.8.4, which is about 3 years out of date. I wasn’t sure how the theme or the plugins were going to handle the upgrades, so I obviously didn’t want to do the initial run on their live site. I downloaded everything to my local machine and got their site up and running. There was a small bit of hoop jumping in this step, but nothing big. Once I had it running it was time for the upgrades.

When the site is this far out of date, it’s not a great idea to just run the latest update and hope for the best. So instead, I incrementally upgraded using each of the major releases since 2.8.4. After copying the new files in place for each version I would log in to the dashboard and run the database upgrade. Run a couple tests on the front end of the site and then move on to the next version.

After running the 6 WP upgrades, I ran the updates for all the outdated plugins. Of the 16 out of date plugins, only one gave me any trouble at all. One of the plugins had changed the folder name at some point, so when WordPress ran the update it deleted the old folder and then installed the new one. I hadn’t deactivated the plugins (now realizing I should have before running the updates anyway) so WP deactivated it because the folder wasn’t found. Afte realizing what happened, I reactivated the new version and everything just worked.

I am amazed at how smoothly the process went. The theme still works fine, the plugins all work fine, everything is exactly as it was before… except it’s up to date and WAY more secure.

I can honestly say, I was expecting a lot worse. Nice work, WordPress.

Contribute, don’t clutter

A few months back I wrote a post that featured a chunk of code I use when developing/debugging WordPress sites. All it did was display the path to the template file that was being used to display the page you were viewing. Not overly complicated or anything, but super helpful and a time saver. After I wrote the post, Toby Cryns did what I should have done; he wrapped it in to a plugin and released it to the WordPress repository. Smart.

I’ve been using that plugin pretty much every day since. But this past weekend, I ran in to an issue with it. Because it was originally written to display the path to the template right before the header, it was really causing trouble with the theme that I was working on. So, I was wasting time turning the plugin on and off whenever I needed or didn’t need to display the path. It got very frustrating. So frustrating that I stopped working on the theme and rewrote the plugin. Now, instead of displaying the path inside the content area of the site, it now displays the path in the admin bar. The added benefit being, I could run this plugin on a client’s live site if needed and none of their regular visitors would ever see it. Win-Win!

But that’s not where the story ends.

I liked the new version of the plugin so much, I wanted to release it figuring it would be a time saver for other developers as well. But, what I didn’t want to do was create yet another plugin in the WP repository that was almost identical to another that already existed. There is far too much of that going on already (want proof, try a search for twitter or facebook and check out the 1000+ results for each). Instead, I reached out to the original developer and sent him a copy of the new version of the plugin and asked if I could be a contributor on the plugin. He reviewed the plugin I sent the following day and added me as a contributor for the plugin. I updated the plugin, did a release and now anybody who was using the plugin already will get notified that there is an updated (better) version of the plugin. And, the next time somebody does a search for this type of plugin, they won’t have to spend any time deciding between multiple versions of what was almost an identical plugin.

Whenever possible, consider contributing to an existing plugin before cluttering the repo.

Business aspects of WordPress plugin development

Last September I attended WordCamp Portland which was set up as an unconference. If you are unfamiliar with the term, an unconference doesn’t have a pre-scheduled list of speakers. At the beginning of the day there was a large whiteboard with squares drawn to create a grid of rooms and time slots. Anybody who had an idea for a session they wanted to present could write their idea down and place it on the board. Or, if you had a topic you wanted to hear about but were looking for somebody else to lead the talk, you could write that down as well. The organizers would then take all the ideas and place them in to boxes and that’s how the schedule for the day was set.

One of the suggested topics looking for a presenter was “The business aspects of WordPress plugin development.” A couple people suggested that Todd Huish and I lead the session. We had nothing prepared, but agreed anyway. The room ended up being standing room only and this has to be one of my favorite sessions I’ve been a part of.

The video from that session was recently released. If you have trouble watching it below, you can check it out on WordCamp.tv

WordPress Tip: Which template is being used?

Whenever I’m working on a new WordPress theme, especially one that uses different templates for Custom Post Types, archives, tags or any other string of possible data types, there always comes a time when I’m just not certain exactly which template WordPress is displaying.

If you aren’t sure how the WordPress theme hierarchy works, this graphic shows the exact flow on how WordPress chooses which template file to use for a given page. But, when you are making changes to CPT slugs, page names, taxonomies and the like, in order to know exactly which file is actually being used on the page you’re viewing, you’re going to need a little more assistance. That’s where this piece of code comes in to play.

Open up your theme’s functions.php file and add the following:

add_action('wp_head', 'show_template'); 

function show_template() { 	
global $template;
print_r($template);
}

Save the file and now when you view your site in a browser, you’ll see something like this:

Just below the admin bar and right above the beginning of your site you’ll see the directory path and file name being used on the page you’re viewing. No more guessing!

It should go without saying, but I’ll say it anyway… Unless you want this showing up on your live site, please comment out this code before pushing your theme live.

New plugin: Ipsum Maker

Caution: Silly project ahead.

It’s no secret I build a lot of websites. During the build process, I’m constantly using lorem ipsum filler text to see how elements are going to lay out on the page. Normally that means heading over to lipsum.com to generate a few paragraphs. But seriously, that is some boring text! Which lead several people to create their own entertaining themed lorum ipsum generators. Some of my favorites being Bacon, Gangsta, Samuel L Jackson and one all about seafood. There’s also a couple for veggies and vegans.

Well, inspiration struck and I decided it was time to create my own lorum ipsum generator using quotes from my favorite movie of all time, Fight Club. You can check it out at DurdenIpsum.com.

But why keep all that fun to myself? I’ve released a generic version of the plugin so you can download it and make your own ipsum generator. If you do, please drop back by and leave a comment with a link to your new site.

Have fun!