development

Questions about Wordpress

Having been away from the WordPress scene since version 2.x days (I think the last time I launched a WordPress website was around 2009), I recently had reason to develop some WordPress plugins, and I wanted to ask some questions about the WordPress coding standards and API that I hope will help enlighten me (and, maybe, other PHP developers coming from other frameworks/platforms to WordPress).

Here are some questions I've had while working on my first WordPress plugin (coming purely from the development side—I'm deliberately ignoring any mention of WordPress's UI, as I don't want to inspire any trolling along the lines of 'WordPress vs. [Another CMS]'):

Jesuit App for iPhone and Android

The Jesuit Conference today announced the release of the Jesuit App, a mobile app that lets people find Jesuit locations in the US, see Jesuit news, and view Jesuit prayers and spiritual works.

Jesuit App for iOS

The Jesuit Conference hired me a few months ago to build this app for them, and it's the third iOS app I've built, and the second Android App. I built the app on top of the open source Catholic Diocese App, and hope to continue making that project more flexible, and even easier for Catholic Dioceses and organizations to adopt for their own great mobile apps.

Quick Resizer - My first Mac App

I've created a few iOS and Android apps for mobile devices and tablets, but just a few days ago, my first 'desktop' app (for Mac OS X 10.7+) was released on the Mac App Store.

Behold, Quick Resizer ($0.99 on the Mac App Store):

Quick Resizer Main Screen

I created the app mostly because I realized I would often drag an image to Photoshop to simply resize it from something like 1024x768 to 500 pixels wide, constrained. Quick Resizer makes resizing JPEGs and PNG files super-easy, and everything can be done from the keyboard (or the mouse, if you're so inclined).

Developing for the Mac is a bit different than the iPhone, but Objective-C and the libraries included are very similar, so it wasn't like creating the first iOS app!

Simple Git feature branch workflow

After reading A successful Git branching model [nvie.com], which I consider one of the best graphical/textual depictions of the ideal Git model for development teams (and most large projects), I simply wanted to adapt a similar (but way less complex) model for some of my smaller sites and multisite Drupal installs.

Since I'm (almost always) the only developer, and I develop locally, I don't want the complexity of working on many branches at once (master, hotfixes, develop, release, staging, etc...), but I do want to have a clean separation between what I'm working on and the actual live master branch that I deploy to the server.

So, I've adopted a simple 'feature branch model' for my smaller projects:

  • master - the live/production code. Only touch when merging in a feature or simply fixing little bugs or really pressing problems.
  • [issue-number]-feature-branches - Where I work on stuff.

Graphically:

Problems with Android's Back Button

Android's back button is a problem. A big problem.

Others have already identified this in a broad sense, but I wanted to give a few concrete examples of why I (as a guy who wants to simply port a couple apps from the iOS platform to Android) think the back button (especially) is a bad idea.

Disorientation

Mobile phones, and tablets especially, require a lot of UX work in the area of interface orientation. For my extremely-basic CNL app, I've spent hours tweaking little interface elements that change when the interface is rotated from portrait to landscape.

The tendency in iOS is to use a 'back' button with the label of the previous function/screen in a given app in a navigation bar at the top of the current screen. This allows a user to freely move about inside an app, and is pretty much consistent across all apps. Additionally, this 'universal back button' is always at the top left of the screen—just like a web browser.

Sanctifying Mobile Technology - #CNMC11

CNMC 2011 017
My best zen face. (Photo from Scott Maentz).

I just finished my workshop presentation at the Catholic New Media Celebration entitled "Sanctifying Mobile Technology." I talked about some ideas I have to help Catholic parishes and organizations spread their mission through iPhones, iPads and other mobile devices.

My full presentation was recorded, but I don't have the video yet. However, I do have all the slides, and tons of links, over on the presentation page here on Life is a Prayer.com.

You can view photos from CNMC '11 in the linked Flickr group.

Wrapper function for simple drupal_mail() sending in Drupal 7

Email is such a pain (I should know, as I'm currently working on a site that's sending 10-20,000 emails per day to 40,000+ users. Spam prevention, SPF records, bounce handling, abuse reports, deliverability, send rates, etc. are all huge hassles that must be dealt with when handling more than a few hundred emails a day.

For testing, I often like throwing in a quick bit of code to send me or someone else a simple email with a few bits of information when something happens on the site, or to test email addresses or formatting. Therefore I like having a quick one-line function call to send an email. In Drupal 6, there was a handy drupal_mail_send() function that would use some default settings and allow you to quickly shoot off a simple email (not translated, not pluggable, etc., but easy to implement).

All the Hubbub About Drupal 7

Drupal 7. Is it ready?

That seems to be the general question in the air over the past few weeks discussed by many in the community. There's a problem with this question, though... I think many people look at their particular use cases, determine Drupal 7 to not (yet) be a good fit, then declare all things Drupal 7 to be lacking.

Really, though, are things so bad? I've seen hundreds of sites on Drupal Gardens that are beautiful and functional. I've upgraded two of my simpler Drupal 6 sites to Drupal 7. I've built a total of fifteen Drupal 7 sites—some serving more than 10,000 visitors a day, others serving a hundred or two (and almost all on shared hosting!)—and am working on three others. So, for me, the question 'Is Drupal 7 ready for prime-time?' doesn't make sense. It's already there (I haven't started a new project on Drupal 6 for six months now).

Things: Opportunity Lost

Dear Things developers (Cultured Code),

I know you are perfectionists. I know you're purists. Your software is inspirational, in a way. It's clean, it's fast, and it's functional. You make beautiful software, and I'm glad you've had such great success in the past.

But I have to say, "Goodbye."

The one and only feature that I've been waiting for—OTA sync—is still not here.

You've made some pretty status indicators telling me nothing, but impressing me nonetheless. You've posted some great developer stories about this feature, but given no backbone to your words.

CNL - Catholic News Live iOS/Android Mobile App

Catholic News Live - CNL App IconThe second app developed by Midwestern Mac is Catholic News Live, or CNL for short. This app, which is the iPhone/iPod Touch/iPad/Android interface for the content aggregated by the Catholic News Live website, showcases a simple list and map layout on mobile phones and tablets, as well as Drupal's great flexibility.

The Catholic News Live website uses the Drupal distribution Managing News, which allows the site administrator to add news feeds that are automatically imported on a set schedule from websites all around the world. Each story is geotagged with a location (if proper locational keywords exist in the article), and then stories have latitude and longitude values for map display.