Best Buy “Mobile Codes” video features Recursive Awesome apps

Best Buy started rolling out their Mobile Code program, last week.  ”Mobile Code” is a sexy way of saying QR Code or 2D Barcode.  These codes will start appearing on product signs, in the weekly ad, and on other signage throughout the store.  When scanned, some codes will direct you to product info.  While others may provide access to content, like promotions, offers, or videos.

They’ve put together a short video, showing off the new Mobile Code scanning capability, within the iPhone and Android apps.

Whether it was coding or testing, iPhone or Android, backend or frontend, Recursive Awesome had their hands in almost every aspect of the mobile app development, to bring this awesome app to completion.

BONUS:  Last week, we also received a shout out on the Best Buy Apps blog.  Check it out here!

EDIT: It looks like Best Buy pulled the video.  I did find another video featuring Mobile Codes.  Enjoy!

(I’m going to leave this video embedded, in case the make the video public again)

Best Buy for Android

Best Buy for iPhone

An Event Apart Minneapolis: Day 1

An Event Apart Minneapolis

At Recursive, we like to stay on top of the latest technology trends. When I found out A List Apart had selected Minneapolis, MN as one of the An Event Apart cities, I jumped at the chance to go. It’s not often you get to see some of your idols speak in person. It’s even more special that Minneapolis is hosting the event.

In the organizer’s words,

“An Event Apart is an intensely educational two-day conference for passionate practitioners of standards-based web design. If you care about code as well as content, usability as well as design, An Event Apart is the conference you’ve been waiting for.”

In addition to some very informative and inspirational talks, An Event Apart provides an chance to rub elbows with some highly recognized and influential people such as Eric Meyer, Dan Cederholm, and Jeff Veen.

Jeffrey Zeldman

Jeffrey Zeldman

The conference was kicked off by the highly entertaining Jeffrey Zeldman giving a history of the web and reminding the attendees just how good they have it right now. We’ve gone from a time where standards compliance in all the major browsers was a joke to today where even the folks in Redmond are singing their praises. This is an astonishing achievement for our industry and we should all be thankful for the freedom of expression that technologies such as web fonts, CSS3, and HTML5 provide us.

Whitney Hess, a user experience designer, told us all how to listen to what our users were telling us and to respond accordingly. She gave us four techniques anyone could do to improve the way people interact with their websites. They are: design research, web analytics, usability testing, and experimentation/iteration. Case studies of Harvest.com and House.gov showed how these techniques could be applied successfully in the real world.

Whitney Hess and Harvest.com

Whitney Hess and Harvest.com

Harvest is a time-tracking tool with a simple, yet functional, design that was put together by a couple of non-designers. They built the tool for themselves and then released it to the world. When they outsourced their feedback gathering to Get Satisfaction, they found users engaged less, so they wrote their own app (Kaizen). In summary, it doesn’t take huge budgets and dedicated teams to make a usable website; just listen to your users and make sure all you do is for them and you’ll have happy customers.

Rarely if ever do we think about the decisions we make when designing. But according to Jared Spool, design is filled with decisions that affect the outcome of our designs. Following a strict set of guidelines and rules is a bad idea and usually leads to failure in edge cases. Being informed and using a process, which is flexible, is a much better methodology. Jared’s overall message was to step back and think about the process you go through as you create a design. Figure out where that fits into the spectrum and where you can improve, if at all.

Jared Spool

Jared Spool

After a long lunch, a chance to socialize, and a refill on caffeine, the second half of the day began with Luke Wroblewski giving us some reasons why we should put “Mobile First!” Some very convincing numbers show that mobile is the hot platform these days and has more room to grow. It is surprising, then, to see mobile sites left as an afterthought. Just as PC’s made their way into our homes in the 90′s, so too are mobile devices today and we’re naive to ignore the numbers.

Growth = Opportunity

Growth = Opportunity

Luke points out that developing for mobile first is often a better strategy than leaving until later in the development cycle. Mobile sites and applications tend to be much more simple and to-the-point than their desktop cousins. It’s the classic case where “divide and conquer” works perfectly. By pairing down the feature set and working in a constrained environment (small mobile screens), you can give the features the attention they deserve. Work on the “stuff that matters.” Later on, if necessary, take what was built and learned from building the mobile app to the desktop.

Luke Wroblewski

Luke Wroblewski

In order to accomplish the goal of making mobile a priority, there are a number of tips you can employ to help get the job done. Devices come in all shapes and sizes, make sure your design works well at different resolutions. Luke even went so far as to recommend creating a device atlas and grouping devices into categories. While we have to worry about supporting legacy browsers in desktop apps, with mobile devices it’s the exact opposite. In almost all cases, the device has a browser that supports CSS3 and HTML5, in addition to mobile-only features such as physical location and orientation. Use those advanced new features to your advantage. Also be aware of quirks associated with these devices. For example, the action of hovering doesn’t really exist for touchscreen devices. Tweak your designs accordingly.

Up next was Aarron Walter of Mailchimp who reminded us that humans use our apps. This fact is often glossed in all areas of designing and creating a website. We give users boring, utilitarian interfaces. We show them error messages that have meaningless (to the user) codes. In other words, we don’t treat our users like humans. Creating usable software isn’t enough; it needs to be pretty too. People get joy out of using beautiful interfaces and will use them more because they are beautiful. The biggest problem seems to be convincing clients, especially large corporations who are less likely to take a risk, that they need to spend time and resources on non-critical functionality.

Mailchimp makes use of “treats” such as their chimp mascot. When you log in, he greets you. As you move around the site and do certain things, he’ll compliment you or suggest tips. This gives the site a character; a personality. They’re finding people react to this. Some say they log in just to see what the chimp has to say to them today. This is the sort of engagement you want.

Aarron Walter

Aarron Walter

However, you shouldn’t go fill your site with cartoons and start having them pop up all the time. The classic example of this is Microsoft’s Clippy. Aaron points out that the problem with Clippy was that he got in your way while you were trying to get things done. He didn’t help you, he annoyed you. The key is to strike a balance. Humans only have so much time and can only handle so many things at once. Sometimes you just need to get out of their way. Mailchimp includes “party pooper” mode for this reason which disables all of the extra stuff and just lets you get down to business.

Wrapping up the first day of talks was Dan Cederholm giving us the lowdown on CSS3. CSS3 can be viewed as a minefield. Browser support is all over the place and many professionals haven’t yet got a handle on what’s new in the spec. However, Dan reminds us that not everyone has to have the same experience when visiting a site. The people saying “I can’t wait until I can use CSS3″ don’t get it.

With the current state of CSS3 support, it is best to limit enhancements to non-critical functionality. Maybe IE users don’t see a transparent background on a selected menu item and instead see a solid color. This is a problem we can live with because it doesn’t effect usability. The person would still get some sort of indication there is a selected menu item.

Dan Cederholm

Dan Cederholm

To show off and test CSS3, Dan has created Things We Left on the Moon. Using the site as an example, we went over examples of how to use RGBA, opacity, border-radius, multiple backgrounds, transformations, and transitions. Some of these properties or effects can even be applied simultaneously to produce new effects.

The first day of An Event Apart was packed with useful tidbits of information on a wide range of topics. Talks ran the gamut from theoretical to practical and in all different areas. Save for some minor room cooling problems, and Internet connectivity issues, the day flew by without interruption.

A synopsis of the second half will be on it’s way soon. Until then, here are a list of related coverage from Day 1.

The next BIG thing in Android

There’s no doubt that Android has taken a big bite out of the smartphone apple (pun completely intended).  Google recently announced that are now activating 160,000 new Android devices every day and there are over 65,000 apps in the Android Market.  Part of this could be that the cost of entry, to develop for Android, is relatively low.  You can develop on Mac/PC/Linux, you can sell your apps on your own website, and if you do want to be part of the Android Market, there’s a one-time fee of $25.  The other part of the growth is the sheer amount and variety of Android handsets that are being released.  At this point, there’s pretty much a device for everyone.

At the time of writing this, I’ve used/tested/reviewed eight Android phones, starting with the G1 and I’m currently rocking a Motorola DROID X.  To be honest, I can’t tell you which phone is the “best”.  As features evolve, they are quickly adopted as the ‘norm’.  What was once a 3 megapixel camera is now 5 or 8 megapixel camera, which has opened the door for HD video recording.  Camera flashes are becoming standard issue as well.  The current hot “feature” is screen size.

While the iPhone has had a 3.5″ screen since its inception, Android devices come in an impressive range of screen sizes.  You can get the HTC Tattoo, with a 2.8″ screen or max out with a 5″ screen on the Dell Streak.  There are also a few Android tablets that have 5″+ screens, but that’s another blog post.  Several manufacturers are shooting for the 4″ range, as their flagship phones.

HTC was the first into the fray with the HD2 (Windows Mobile) and EVO 4G (Android).  I had the opportunity to review the HTC EVO 4G, over at DroidDog.com.  Not to be outdone, Motorola recently released the DROID X (Android), also sporting 4.3″ screen.  Check out my review here.  The latest manufacturer to enter the fight is Samsung with the Galaxy S (Android), and its variants.  This phone will be available on all of the major carriers, in the U.S.  (Verizon, T-Mobile, AT&T, Sprint, US Cellular, Cellular South).  I haven’t got my hands on this phone yet.  It’s the only one with a Super AMOLED screen, which is said to be thinner, brighter, and has better color and contrast.

Why would you want such a large screen?  In my opinion, a phone with a 4″ screen is the perfect balance between portability and “entertainment value”.  It’s small enough to slip in your pocket, but it’s still usable as a news reader, portable gaming system, or watch movies.  If you think about it, just a few years ago, portable DVD players had about the same size screen, and they usually only played DVDs.  Now you have an entire entertainment system in your pocket.  The EVO ups the ante by adding a kickstand on the back of the phone so you can comfortably watch TV, movies, or make a video conferencing call.  The DROID X let’s you customize your audio experience, allowing you to select “Effects Profiles” like “Home Theater”, “3D Stereo”, “Live Stage” or “Custom”.

It’s not all sunshine and flowers, though.  Even though the phone does fit in my pocket, that doesn’t mean it’s not noticeable.  When I was reviewing the HTC DROID Incredible (3.7″ screen), the phone is slim and trim and fit the pocket well…even the knife pocket in my jeans.  With the DROID X, it’s very clear that you’re either trying to smuggle deck of comedy playing cards in your pocket, or you have one of these new fangled behemoth smartphones.

The other drawback is larger screen = more power consumption.  Manufacturers are trying to combat this with larger batteries and other power saving features.  Most Android phones have an ambient light sensor, that will automatically adjust the screen brightness, based on how light it is where you are.  The Motorola DROID X has a built-in battery manager app that will shut the data connection off during user specified “off-peak” hours.  However, if you’re watching, or even worse, recording a movie, the combination of the screen being on for an extended period and the processor cranking away will drain the battery rather quickly.  The battery would last all day if I were just checking email and tweeting…even excessively.  But open that camera app and snap a handful of pics, and you better have a backup battery or a charger handy.

While a jumbo screen, on a phone, may not be for everyone, if you’re in the market to upgrade a few of your gadgets at once, maybe a 4″ screen phone is the right way to go.  The kids can use it in the car to play games or watch movies.  In most cases, you’ll be able ditch your point-and-shoot camera, and possibly your flash memory camcorder, as the cameras are getting better and better.  If you’re still rocking an MP3 player, you can shelve that as well.

Questions?  Comment here or on Twitter (@breon)

Android Alternatives to Apple’s iPad

Some of us are excited about the iPad. In fact, who are we kidding, MANY of us are excited about the potential application for the iPad in our industry. Latest news is that Apple is selling more iPads in one month than Palm WebOS devices have sold in the past year. But, the iPad isn’t the only tablet game in town. In fact, while it is the first highly advertised device (thanks to Apple’s huge marketing budget and rightfully “cute” ad campaigns), it could be argued that it wasn’t the first to hit the shelves. While not as large, Archos released a MID (Mobile Internet Device) last fall. It runs the Android operating system, features a 5″ touch screen, has WIFI, 3G, games and applications. Never heard of it? I’m not surprised. In fact, never heard of Archos either? That wouldn’t surprise me either. Neither Archos or the tablet were advertised and consequently didn’t sell in high volumes. Why?

There are many reason for this.
True, it was not advertised every 30 minutes like I am seeing right now with the iPad, but there are other reasons. It was underpowered. It was not sexy, it did not have all of the apps that iTunes has, runs an outdated version of Android. And finally, it’s not integrated with desktop software (like iTunes) to make audio and video transfer and sharing easy.

So, what’s a person looking for alternatives to the iPad to do? The good news is… there’s A LOT to do.

Here’s a link to an article on Mashable that shows a 9 upcoming tablet alternatives to Apple’s iPad.

http://is.gd/dydb9

and again, seven more iPad alternatives.

http://is.gd/dyddx

more…

http://is.gd/dydfg

and finally… one prime example of a tablet device hitting the market everywhere.

http://is.gd/dAXfv

So, what is different now, v.s. last year?

Here’s my take.

  1. Android has dramatically improved. With version 2.0 and newer of Android, I can finally say that Android is no longer “in-beta”. It has a much more polished look and feel out of the box. anyone running the Froyo release (version 2.2) would have to agree with me.
  2. The hardware is getting much better. With the 1.0 ghz, “snapdragon” and now 1.0ghz “hummingbird” processors, applications are responsive and actually doing development right on the device is faster, since you can launch and run the application in fraction of the time you could in the past. This follow the “Recursive Awesome Law #3 of software development” – the less pain developers go through, the more applications they will will write.
  3. The sexy factor has been increased. For better or worse , the iPad has upped the bar and companies are starting to realize they not only need a functional device, but a visually appealing one as well. The new tablet/pad style devices coming out are in my opinion, head and shoulders better than the Archos MID that was released last year.

So what is still outstanding?

The biggest problem is that the Android SDK only supports 480×854, 5.0″-5.8″ as it’s highest resolution display. While the screen can be made larger on the device, support for higher resolutions won’t be coming until the next version of Android 3.0 (aka Gingerbread). That means that the manufactures will need to do some tweaking, or else just leave the default resolution and stretch the display out. The less that device manufactures need to mess with the operating system and its internals, the faster the adoption rates will be.

Another question I think still remains is any type of integration is with desktop software. But, is it really needed? The largest consumer use case that I see for a tablet device is web browsing, reading books, watching videos and listening to music. If the manufactures of these alternatives can create easy ways to either sync with iTunes, Windows Media player or offer some type of desktop client that will allow the user to push their content to the device, then these devices really have chance. The other option that we can see (and the direction the industry is going), is to have all of your digital media stored “in the cloud” and your device accesses those services wirelessly wherever you may be. This is where Google is pushing the market, and something that we will get to someday, but in the mean time, if the Android devices need to synchronize their digital media by digging through folder after folder and user must manually copy and back up their data, this will be a major turn off. Android needs to create some sort of sync utility.

So, there you have it. A basic run down of some devices contending against the iPad. We haven’t discussed the industrial/business usage which actually changes the numbers quiet a bit. In that scenario I can see the alternative to the iPad winning out since Android and other mobile platforms are free and are not restricted by Apple’s hardware or policies.

Will I get one of the these alternatives?

You bet! We already have purchased an iPad at Recursive Awesome and we working to develop a handful of iPad applications for not only ourselves, but our clients as well. But, you never bet on one horse in technology and we are always looking at the alternatives. In this case especially, the alternatives have huge potential and opportunity for those wanting to run Android or another open source operating system.

Let us know you thoughts on any of these devices!

UPDATE: It looks like since I originally wrote this post there have been some setbacks around manufactures bringing their tables to market I’m still convinced that Android tables are going to a major player in the tablet computer arena for years to come.

Our awesome new conference table

As a congratulatory gift we’ve received a snazzy new conference table.  This was built entirely by hand to Recursive Awesome’s custom specifications.  Huge thanks go to Dennis Lonergan for his hard work designing and building this table.  So, for your viewing pleasure, here’s our new table!
From its humble beginnings as a simple board…
It grew into a very classy table!  Thanks to clever photography (or the fact that it was sitting on another table) you can’t even notice that it’s missing the legs.
Once the table and its legs were finished, the crack RA moving team (Phil & Rory) carried it on their backs up 8 flights of stairs to the office…  or we carried it up the stairs into our building and the into the elevator.  Just the same, it’s really heavy.  Here it is relaxing in its new home.
Then came the legs.  Dropping them into their slots was the quick part.
Next up, bolting them in place.  Unfortunately my impact driver makes a little too much noise for use in the office.  I had to switch to the “analog” method.
Finally, all the legs were installed and it was ready to be flipped over.
Apparently I didn’t get a decent picture of the table in its new setting, so look for that to replace this one.  Blame goes to the iPhone 4.
UPDATE: a better picture!
Thanks again to Dennis for all his hard work!  Now back to important meetings about our TPS reports…

Thoughts on Froyo

Frozen Yogurt

© Rakka on Flickr

In the world of Android smartphones, the ecosystem moves swiftly. It wasn’t long ago Android device owners were salivating over Cupcakes and Donuts (Android versions 1.5 and 1.6 respectively). In the span of roughly six months, Android has gone through two major revisions; Android 2.0 (Eclair) and Android 2.2 (Frozen Yogurt or Froyo).

Prior to Google I/O this past May, details of what exactly would be included in the final release were sparse. Early testers reported various improvements including a noticeable boost in speed. Yet development was in full swing and it was hard to figure out just when exactly Android 2.2 would be deemed ready for mass consumption.

At the I/O conference, Google made it’s official announcement to the world and answered many of the questions that had arisen about the latest version of their mobile OS. In addition to a slew of new APIs and developer features, Android 2.2 would come with a number of improvements for front-end users. It boasts a JIT compiler, wifi and USB tethering capabilities, support for Flash, as well as several other improvements and updates.

Taking the prize for the most noticeable, yet invisible feature is the JIT compiler which brings a 2-5x performance boost systemwide. JIT stands for “just in time.” In other words, Froyo is able to do a bit of analysis on the code it’s about to run and make some optimizations to how it handles that code. All that magic happens on the fly and works regardless of the app or which OS version it was targeted to run on. Developers don’t need to change a thing. Animations are less jerky, games run with a higher framerate, and because the device doesn’t have to work as hard, it uses less power thus extending battery life. The bottom line is the JIT compiler makes Android better all over.

Tethering refers to the ability to connect your laptop or desktop to your mobile phone and use the phone’s data connection as the machine’s Internet connection. Froyo includes two types of tethering; USB and wifi. With USB tethering, you connect the device to your computer using a USB cable. This of course means you’re limited to a single connection. Multiple devices can be connected via the wifi hotspot option which essentially turns your handset into a Mifi.

Mention tethering to an iPhone user and they’re likely to launch into an invective-filled tirade against AT&T. Last year, the carrier promised tethering capabilities, but failed to deliver. Since then, Apple and AT&T have gone on to announce tethering a second time along with the cost, $20 per month. Thus, it came as a shock to Android fans when Google announced it was including tethering in Froyo; for free. Not only do Android users get a useful feature, they have another thing they can hold over their iPhone carrying compadres.

As much as people love to hate Flash, it does have it’s uses. Namely, video on the web. Changes are certainly in progress right now with the emergence of HTML5, but it’s hard to deny that Flash is still used quite liberally on the web. With Froyo, Android is able to run a mobile version of Flash and comes as a welcome addition to the speedy browser. It was no doubt made possible by the performance boosts included in Froyo. This is likely the same reason, it won’t be backported to earlier versions of Android.

Flash performs moderately well on Android. Admittedly, video playback performance suffers from low framerates. However, things like simple games or site menus run smoothly. Users are given the option to turn Flash on all the time or to selectively choose components on a page to load. At least now users have the choice of whether or not they want to experience Flash content or not. It’s better than seeing gaping holes in web pages.

As previously mentioned, Froyo also includes a number of minor improvements. Exchange and enterprise control of devices are better supported and the gallery and camera apps have been completely rewritten. Developers will be happy to see several API’s were improved and many new options were added. Notably, developers can enable their apps to be installed on the device’s removable media. This helps to free up internal storage on the device. Overall, the Android experience in Froyo is much more polished and if the pace of development is maintained, it won’t be long before it is the best smartphone OS on the market.

© Dekuwa on Flickr

The biggest negative of Froyo is that it leaves much of the original crop of Android phones behind. Owners of the G1, MyTouch 3G, Hero, and Moment will be forced to root their phones or buy a new device to experience the latest in Android goodness. While it is tempting to bash Google for this, it is not right to do so. Those devices contain obsolete hardware and are simply not equipped to run Froyo. If Android is to move forward, it will need to have hardware to support it. With carrier subsidies working the way they do, two years seems like the maximum life span of a smartphone.

Froyo is a welcome addition to the Android world. It makes an already good mobile OS more mature. Perhaps this is the most important update yet as it brings Android on par with iOS. The competitors do 1-up each other in certain areas (Android is better at multitasking, iOS is a better music player for example), but the average person would be happy with either. The OTA update push to Nexus One’s has started and there are rumblings of a Droid update coming too. It shouldn’t be long before new devices start shipping with 2.2 on them. There is much excitement and innovation going on in the mobile space right now and it shows no signs of slowing down.

Quick Tip: Sprinkle, passenger-stack, and Rails 3

If you’ve tried to get passenger-stack and Sprinkle 0.3.1 running recently, you might have run into the not-so-helpful error: uninitialized constant ActiveSupport::Dependencies (NameError).

It appears that if you have  one of the Rails 3 beta gems installed, then Sprinkle gets confused when trying to use ActiveSupport’s Dependencies module. This error can be fixed by modifying lib/sprinkle.rb in the gem directory. Add the following line right after require ‘activesupport’ (line 2):

require 'active_support/dependencies'

Hopefully the author of Sprinkle will get this bug fixed up soon. An issue on Github has been created.

Update: Github user ahaller has submitted a patch. It sounds like it’s OK to just add the require line even if you are on Rails 2.

Using Git to Manage iPhone Provisioning Profiles

Every iPhone developer with an app in the Apple App Store has dealt with the frustration of code signing. Try searching for “iphone code signing error” on Google and you get almost a million results. The purpose of code signing is to tie developers, apps, and devices together in a tangled web in an attempt to prove you are actually yourself, your iPhone is in fact yours, and Apple has authorized you to run or submit your app.

Sounds like fun right?

The way to sign your app is to associate it with a provisioning profile. Creating a provisioning profile is beyond the scope of this post, but you can find more information here. You’ll need a current iPhone developer account to access the docs. Sorry.

So what is this post about then? Well, once you have a few iPhone apps under your belt you’ll find that you have a ton of profiles to manage. Development profiles to test your apps on your device. Ad-hoc profiles to send out beta versions to your testers, and Distribution profiles for submitting your apps to the App Store. They all live in the same place on your Mac and will have non-human readable names if you’ve followed the Apple documentation and dragged and dropped them into Xcode. This makes it a bit tough to know what profile goes with which app.

What are provisioning profiles?

The docs define provisioning profiles as “… a collection of digital entities that uniquely ties developers and devices to an authorized iPhone Development Team and enables a device to be used for testing. A Development Provisioning Profile must be installed on each device on which you wish to run your application code.” Translated this means you have to have a development profile to run your app on your device or a distribution profile to have the app accepted into the app store.

How XCode/iTunes uses them

I’m not going to cover how to sign your apps in this post either. But, rather explain how XCode uses them and how to organize them. Both XCode and iTunes use profiles. XCode to sign the apps and iTunes to install them. Whether you’re signing or installing profiles they live in the same place. Fire up Terminal.app and issue the following commands to find your profiles.

$ cd ~/Library/MobileDevice/Provisioning Profiles/
$ ls

Profile Installation Methods: Drag & Drop vs. Finder

Most of the Apple documentation tells you to drag and drop a profile into XCode to install it. This works but your profile is renamed along the lines of “0ED00060-C42C-4E3F-932F-30F22F79A14C.mobileprovision”. Good luck on knowing what file is.

I prefer move the profiles manually in Finder to avoid the automatic renaming. I like to name my files project.type.date.mobileprovision or trickiwiki.adhoc.03352010.mobileprovision.

What is Git?

Unless you’ve been out of software development for a few years you’ve probably heard of git. Git is distributed version control system for source code and when coupled with a website like GitHub it makes contributing to open source project easy. One of the great things about git is the ease of branching.

For info on how to use and configure git please refer to Scott Chacon’s Pro Git book & website

Creating a Git Repository

Now that git installed we can finally get to the meat of this post. So fire up Terminal.app and issue the following commands. But first move all of your provisioning files out of ~/Library/MobileDevice/Provisioning Profiles/

$ cd ~/Library/MobileDevice/Provisioning Profiles/
$ git init
$ touch README
$ git add README
$ git commit -m 'first commit'

You have created your git repository and added a blank file named README to it.

Using Git Branches

You new git repo comes with a pre-made branch named master. For our purposes we’ll leave this one alone. Run the following command any time to see the branches in your repo.

$ git branch

I like to create a branch for each app. To create a new branch run…

$ git branch app_name1
$ git checkout app_name1

You’ve just created a new git branch for app_name and moved into it. Now save your profiles for app_name1 in cd ~/Library/MobileDevice/Provisioning Profiles/ and run

$ git add .
$ git commit -m "Profiles for app_name1"

Now your profiles are safely stored in your project branch. Now to make a new project branch we need to move back to the master branch and issues the commands to make a new branch. So run the following…

$ git checkout master
$ git branch app_name2
$ git checkout app_name2

Move the profiles for app_name2 into ~/Library/MobileDevice/Provisioning Profiles/ and commit them into git.

$ git add .
$ git commit -m "Profiles for app_name2"

Did you notice that ~/Library/MobileDevice/Provisioning Profiles/ was empty when you put the profiles for app_name2 in there? That’s because the profiles for app_name1 are tucked into the branch for app_name1. To switch between branches just use the git checkout command.

$ git checkout app_name1
$ ls
app_name1.mobileprovision
$ git checkout app_name2
$ ls
app_name2.mobileprovision

Are you starting to get the idea?

What Branch Am I On?

Now that we have all of these branches how do you tell which one you’re working with. As I said before the command git branch will show you the branches

$ git branch
app_name1
* app_name2

The * indicates the active branch. But typing git branch over and over is annoying so I use some shell scripts from Jon Maddox to always show me which branch I’m on.

[proton:Provisioning Profiles[trickiwiki]$

In the example above the branch is shown as “[trickiwiki]“. Pretty sweet, huh?

Git Checkout Usage with XCode/iTunes

The one thing you need to remember when using this system to manage your profiles is XCode and iTunes are not very smart. They only check for profiles on startup. So you need to remember to checkout the correct branch before opening those apps. This took some getting used to until I made it part of my workflow.

Overnight Web Challenge 2010 Report

Recently, I participated in a unique event entitled the Overnight Web Challenge. The idea is to pair groups of web professionals with non-profits in need of a new or updated website. While the development teams are formed prior to the event, the parings aren’t announced until the very start of the event so no one can get a head start. There’s also a catch; it must be done in 24 hours.

Team Ruby.MN

Team Ruby.MN

This year, I captained the Ruby.MN team who was paired with Homeward Bound. Homeward Bound provides group homes, services, resources, and support for those who have a family member with a mental illness. They have lost massive amounts of funding over the past couple of years and have struggled to maintain existing infrastructure and services. Because of this and the fact that many of the people they help aren’t able to use the website, we focused more on the business and bringing some of their paper processes online.

Some of the tools we gave them included the following:

  • A fully CMS driven website
  • An area to post news and events with custom layouts for their 2 large annual events
  • An careers page with an application form and requirement to watch a video beforehand
  • A private area for staff
  • A private area for board members and board meetings
A before and after

A before and after (currently viewable at hbimn.org and hbimn.heroku.com)

Being that we were the Ruby team, we chose to use our favorite web framework, Ruby on Rails to build the site in. The base of our project was Refinery CMS. Refinery was a joy to work with and provided much of the back-end admin interface we needed out of the box. Of course we didn’t stop there; many customizations were made. Some of those changes may even make their way back upstream into Refinery itself.

The new website will be hosted on Heroku who graciously donated $300 in credit to Homeward Bound. However, our team kept the project lean enough that they will fit into Heroku’s free hosting plan. We plan to use the credit to pay for add-ons such as Exceptional exception notifications. In addition, a number of online services were leveraged such as Amazon S3, Wufoo, Google Checkout, Google Site Search, Mailchimp, and Flickr.

When the dust settled and judging was complete, our team was awarded second place! A special thanks goes out to Joel and Cathy at Homeward Bound for being well-prepared and providing our team with any resource we needed. Congratulations especially to Team Placeholder and Dakota Wicohan on a well-deserved win and to all the other teams and non-profits who participated.

The Developer’s Toolbox

For my introduction, I thought it’d be a good idea to discuss some of the tools I use to do web development for Recursive Awesome. Like a mechanic, a developer has a set of tools he or she relies upon on a regular basis. Writing software can be boring and tedious without the right tools. While most of these tools are focused towards web development with Ruby on Rails, but most are universal.

Hardware

15″ Macbook Pro

The foundation of any developer toolbox is the computer. I choose to use a laptop because I need the portability. Having a mobile development environment is huge. Anywhere I can sit down with my laptop for a few minutes can become a place I can program. A 13″ screen is too small. A 17″ is too big and unwieldy to whip out in more cramped spaces such as a packed coffee shop. The current crop of Macbook Pros are more than capable development machines with Core i5 or Core i7 machines rumored to be on the way later this year.

If you’ve spent any amount of time with Ruby, you know it’s kind of assumed you have a proper *nix terminal to run commands on. Windows + Cygwin just doesn’t cut it. Using Mac OS X provides me with the terminal I need and a flashy modern OS on top of it. If I need Windows, I can use either BootCamp or more likely a virtual machine.

XBrand 360 Degree Stand

If you’re going to be working on a laptop chances are you will find out very soon that the ergonomics aren’t ideal. Especially when seated at your typical office desk for 8 or 9 hours at a time. A stand will bring the laptop monitor up to a height where your neck and shoulders are in a better position. If you’e got an external monitor, it’s also nice to have both monitors at the same height. The stand I use is nothing special, but it has height adjustment, it swivels, and it was relatively cheap.

Apple Wireless Keyboard and Logitech VX Nano Mouse

Once you’ve got your laptop in a stand, the keyboard and trackpad become useless. Getting an external mouse and keyboard are virtually required. By using a wireless keyboard and mouse, I’m able to get my workstation set up very quickly. The only two things I plug in at the office are power and headphones.

The Apple Wireless Keyboard is compact and is easily tossed in my backpack. It is fairly good about battery life. Finally, it makes an easier transition from laptop keyboard to external keyboard when both are identical. This helps in productivity.

I use the Logitech VX Nano for no other reason than size. Both the mouse itself and the wireless dongle are tiny. I don’t have to worry about unplugging the adapter all the time; it is small enough to leave in. However, I do realize that with a Bluetooth mouse, I would have nothing to plug in. If I were in the market for a new mouse today, I would probably buy the Apple Magic Mouse.

Nexus One

Having owned a T-mobile G1 and become a fan of Android, I was 100% on top of the Google Nexus One when it was released. I’ll admit, for the entire time I owned my G1, I had iPhone envy. No so with the Neuxs One. Having owned one for several weeks now, I wouldn’t switch if given the chance. It’s definitely the nicest mobile phone I’ve ever had. While not really a developer, per se, the Nexus One keeps me connected. And I guess you could argue that there are apps for aiding in development such as the terminal/SSH client.

Software

TextMate

For Rails programming, there isn’t much better than TextMate. Sure, it’s been around since the beginning and hasn’t been updated since then. It still puts everything else to shame with it’s bundles and command shortcuts.

git

If you’re a developer and not using source control, you deserve a beating. These days distributed version control is all the rage and for very good reason. It rocks! Branching and merging in git is a dream. I recommend Vincent Driessen’s branching model to add some structure to your workflow.

Sequel Pro/Mesa SQLite

Any self-respecting geek knows their way around the command line. However, using it day to day to do repetitive tasks can be a drag. Enter Sequel Pro; a slick interface for dealing with a MySQL database. I believe it also supports Postgres. It does not support Sqlite3, yet (support is coming, just not for awhile). In that case, you’re going to want to try out MesaSQLite. It’s small, lightweight, and gets the job done which is more than Microsoft can say for most of their applications.

Safari

I used to be a huge fan of Firefox, until it started feeling more like it’s predecessor, Mozilla. Safari is fast a nimble, especially on Macs. Except for running thousands of plugins, Safari can do anything Firefox can do and most likely it’ll do it faster. If you’re a developer, make sure you turn on the Develop menu and familiarize yourself with the Web Inspector.

Firefox + Firebug + Yslow

Though you just saw me talk up Safari over Firefox, there is one tool I can’t replace in Safari and that’s YSlow. Yslow analyzes the page you are on for performance and gives you tips on how to improve it. The recommendations are those of the highly regarded Steve Souders (formerly of Yahoo, now at Google), so you know they are spot on.

Photoshop

Developers normally don’t do a lot of artistic work, but this geek does. I’ve tried using Gimp and even the Photoshop-like skins of Gimp, but none of them quite match the power of Photoshop. There is no substitute.

Virtualbox

Many Mac users will tell you to use VMWare Fusion or Parallels Desktop for Mac to do virtualization. The problem is those programs cost money. Why pay for something when you can get something equivalent for free. You may even be able to convert your existing Parallels or Fusion disk images to VirtualBox if you’re savvy enough to use Google.

Evernote

Last, but not least, is an application most developers probably wouldn’t consider part of their toolbox. I’ve come to rely quite heavily on Evernote though. Yes, you can take notes and tag them, and they sync up to a remote server. Yes, you can do cool things like scan documents or take captures of web pages with it. However, my most used feature in Evernote is not any of those; it is the checkbox widget. I am constantly building lists of things and adding checkboxes and turning them into todos.

RSS