WordPress Development: Lessons Learned & Downsides

After 8 months, I have finally finished with WordPress development. I definitely learnt a lot, especially in terms of how the back end works and some more PHP.

Lessons Learned

The most important one:

know more PHP than I did.

Admittedly, I knew very little. While I have some experience programming, I only took a 2 day course in PHP. Not having to look up every little thing would have saved me invaluable time.

The other big one was definitely:

know more WordPress.

The documentation is obviously written for programmers (in most cases, those familiar with WordPress). So once again, I spent a lot of time looking things up. In this case, it was even more difficult because I usually had to rely on a couple of different tutorials and piece things together, making things work through trial and error.

Of course, I didn’t have much choice. And if there is one really good way to learn something is to be thrown into it, and make it happen.

Plugins

WordPress could really use some improvements though. One area is definitely in the plugins area. There is little to no cooperation between plugin authors, so there may be anywhere from zero to fifty plugins that do similar things, but all work differently and are of varying quality.

One of the reasons I’ve been posting a lot of plugins review is not only for my own records, but in the hopes that it’ll save other people time from looking through the mass amount of plugins. Unfortunately, because plugins come and go like the wind, plugin reviews become out of date very quickly.

Search

The one other thing I wish WordPress would improve is their search. While the site search uses Google, the plugin search is pretty bad and so is the internal built-in WordPress search. For the plugin search, you cannot refine your search in any way, and the sorting doesn’t seem to work properly.

The built-in WordPress site search (and dashboard pages/posts search) is also pretty bad. It’s organized by date and there is a plugin that allows you to sort by title, but it does full text searching and does no relevance ranking whatsoever. If it even did the minimum of “do these words match words in the title, if yes, put those higher” then that alone would be a huge improvement.

Conclusion

While I think WordPress is a great platform (and it’s open source!), there is definitely room for improvement and may not be the right platform for everyone. In comparison, for example, I get the impression that Drupal has a more cooperative and supportive community with better plugin support and development. On the other hand, I find WordPress easier to teach users.

If I had to do it again, I would definitely have taken the time to learn more about the overall WordPress framework and how different parts fit into the puzzle before diving into making the theme.

WordPress Plugin: Publicize or Automatically Post to Facebook & Twitter

So, I recently discovered the WordPress Jetpack plugin set, which does a lot of the things I had previous looked for WordPress plugins to do, including custom css, share buttons, and extra widgets you’ll find on the .com version. The only thing I really wanted that was missing, was the “Publicize” feature to post to social media, such as Twitter.

Requirement

The one requirement I had was that one plugin should be able to post to multiple social networks instead of having separate ones for each social network. This mostly has to do with making it easier to use and maintain. While we only need Facebook and Twitter right now, we may need others in the future, especially something like G+, so I preferred to already have something installed instead of having to find yet another plugin later.

Results

  • Network Publisher: This plugin probably supports the most social media sites and even includes stats. I didn’t actually really test this one because it required signing up for an API key. From the plugin page, it seems to at least work though.
  • SocialPublish: This one also required creating an account, but I still don’t understand why this is necessary.
  • NextScripts Social Network Auto Poster & WP-AutoSharePost: These required setting up apps on each of the sites, which is fine but not what I was looking for.
  • Social by MailChimp: This only does Twitter and Facebook, which was my minimum requirement, but it works. Not the nicest interface ever, but I like that you can edit the messages individually before they’re posted. I disabled the comment display, so I’m not sure how well that works, but it’s not something we wanted.

So in the end, Social was the only that did what I wanted easily (i.e. without all the dev apps stuff) and without the requirement of creating an account elsewhere first. Still need to properly test it on a multisite setup, but it’s the closest thing I can find to WordPress’ Publicize.

UPDATE: WordPress JetPack now includes Publicize! Yay~

code4lib Cool Tool Day

So inspired by the ASIS&T Cool Tool Day, I thought it’d be neat to do one of these since there weren’t many volunteers to do lightning talks/presentations at the code4lib Toronto meetup this time around. Our attendance was a little… paltry, but we had some great presentations! Here are my notes from the session.

Presented by @waharnum

soapUI

  • working with REST based web services
  • testing automation tool for web services
  • best for building with other API
  • autogenerate stubs using WSDL
  • interface between internal systems
  • good for documenting web services, code style with examples
  • normally, mostly used for unit testing

Trello

  • virtual card based whiteboard
  • flexible for planning based
  • collaborative
  • great usability/UI
  • even has mobile apps

Mustache Templates

  • maintaining HTML email templates
  • also works as a crazy text editor for nerds

XSL Transforms plugin in Firefox

  • local reporting
  • anything XSLT with just a few security restrictions
  • e.g. SVN reporting

Presented by @adr

ShowOff

  • cross platform presentation
  • push from laptop to another computer

Sidenote: Other Presentation Tools

Presented by @ruebot

VIM Plugins

  • pathogen – linking for VIM plugins to automatically load VIM plugins
  • nerdtree – pull files quickly by displaying directory/tree

Presented by Pomax

Thimble HTML/CSS Live Web editor

  • teach anyone (kids, adults) HTML and CSS
  • use existing projects to make it fun!

FlickrFindr

  • easy inline flickr search of CC images
  • attribution in alt text

Presented by me

F.lux

  • monitor hue changer, supposedly to help people sleep better by telling your body what time of day it is

That’s it! Hope to do another one of these or lightning talks next time.

Technology Requirements for MLIS Students

Recently on Hack Library School, Amy Frazier posted about her idea of the ideal library school with higher-level technology classes and require more tech skills for librarians-to-be.

Librarian By Name, Geek By Nature.

The post generated quite a lot of comments including my own. It’s definitely an issue that I have seen discussed more often in the last year or two. When I was in school, a number of students (including myself) expressed the desire for more technology courses in our program.

Including More Technology Courses

One side of the discussion is getting MLIS programs to offer more tech courses. While personally, I could have used more tech courses, I don’t necessarily think that it’s viable for a lot of schools. It’s difficult enough for schools that librarianship is very broad, add to that that many MLIS type jobs are not in libraries, and you get the basic problem of “how do you offer courses to cover all topics of interest in a single library school?”

Basically, you can’t. It’s impossible. At my school, there is a PhD program, so at the Master’s level, it even needs to cover all the research side of things.

Option 1: Partner with the CS department

One way is to possibly have the faculty partner with the CS department to allow students to take lower level programming classes or recommend CS classes that aren’t programming heavy. Unfortunately, like at my school, universities will normally not allow credit to be given for lower level courses when in a master’s program.

Option 2: Partner with other LIS schools

There is always the option of partnering with other schools to offer classes (this includes non-technology related courses). This already happens in many schools, but due to different schedules and the difficulty of getting through other schools’ admissions for classes and such, it is traditionally not particularly convenient. Improving the shared courses system would definitely help though.

Option 3: Offer 2-3 introductory courses

I would say that, at the least, LIS schools should at least have introductory courses (again possibly in partnership). At my school, they offered a 1-credit class as an introductory course (a regular class is 3 credits). I think for its first time, it did quite well and a lot of students had signed up. What I would like to see is for additional 1-credit classes to be offered to introduce the basics of other languages or a 3-credit course, which can almost be a survey type course where you’re introduced to the basics of a couple of languages and taught the process in making decisions on which to use when. An existing class covers technology management and what we dubbed “systems 101”. Schools might consider partnering with professional associations to offer these sorts of classes.

But if you want tech…

In the end though, if students want a library program that is very tech heavy, then perhaps they should do more research into which schools already offer that sort of program before applying. Much like at the undergraduate level, different schools emphasize different things, so it’s up to a student to do the research and do their best to get in.

Requiring More Technology Skills

The other big idea that came up in the discussion is requiring the completion of a course which involves a higher level of technology skills. While I think library students need to graduate with at least a basic amount of technology skills, I think what’s more important is knowing how and when to integrate technology into library services to best support users.

Solution?: Technology Integration

Some of the commenters also proposed this idea, at least to a degree (I admit that I have not read every single answer though).

The biggest issue I had with my required technology class (other than the fact that we couldn’t be exempted even if you had a CS background) was that much of what we learnt was not put into a practical context.

If you want students to learn how to make a PowerPoint presentation, don’t make them do something that involves lots of different animations (no one does this, or at least should do this in a real presentation), but instead, tell them to make a presentation that pitches an idea or teaches a skill for example.

In an instructional class, have students make a video a la research minute for example. Get them to work with a real library and upload it to their YouTube channel when done.

My favourite classes were ones where we got a practical project that involved learning a new technology. For example, I took a class on digital collections, so we read all the usual papers, sat through all the lectures, and we learned how to use DBTextWorks and ContentDM. That means that I now can (with a bit of wrangling) build a digital collection should I see the need (or become responsible for that sort of thing).

More than anything, I think students need to learn the situations where it would be beneficial for them and patrons to integrate technology, and if they need help, then to go ask their systems team.

Finding a WordPress Image Slider Carousel Plugin (Again)

UPDATE: Please consider not using a carousel at all: Death to the Website Carousel

I previously posted on this same topic not all that long ago, but that slider broke when we updated to the most recent WordPress (3.4) and since new plugins come out all the time, I thought I’d just find a new one. Continue reading “Finding a WordPress Image Slider Carousel Plugin (Again)”