Mostrar / Ocultar Avisos

Author Archive

Let the Awesomeness Begin

Recursive Awesome Logo

The last six months have been busy. Summer was crazy. Why? Besides working my regular consulting gigs I co-founded a new company with my good friend Justin Grammens. We named it Recursive Awesome, LLC.

Recursive Awesome is focused on developing mobile applications for the four main smart phone platforms; iPhone, Android, Blakcberry, and Palm. We do custom development for clients as well as build our own products.

Our first product, called Mobile VidHub, allows video producers to have a custom, branded app on each platform to distribute their content. More details here.

As for client applications you should check out TrickiWiki Trivia. Recursive has released iPhone, Android, and web based versions of the game. The Palm Pre and Balckberry versions are in development. All of the TrickiWiki games are native applications with the questions powered by a Ruby on Rails web service.

While Justin and I are using RA to focus on mobile development we will continue to build web applications using Ruby and Ruby on Rails.

Please check out our business and let us know if you are in need of our services.

Sweet UITableViewController Bug in 3.0 SDK

Just in case anyone else runs into this time suck

There is a bug in the iPhone 3.0 SDK for the UITableViewController template. Specifically, in the didSelectRowAtIndexPath method when trying to push another view controller onto the stack.

Sweet Apple code…

The correct code is…

See the difference? Apple did complete the signature with the “animated” parameter. I just spent an hour trying to find out why my UINavigationController may not respond to -pushViewController. I guess, that’s my fault for trusting the generated code.

Attending Mt. West Ruby Conf.

I’m attending the Mt. West Ruby conf next week in Salt Lake City. If you’re attending let me know and I’ll attempt to buy a round.

I’m especially looking forward to this talk about Rhodes

GitPhone: An experimental iPhone app to stay connected with GitHub on the go

I started this project to test out some ideas for an iPhone app which utilizes a 3rd party API. Naturally, I chose GitHub because I’m an extreme fanboy. It’s not polished. There are no tests. It really doesn’t do anything useful and I really don’t where I want to take it. However, there is a good deal of infrastructure here that I feel is worth sharing, especially, since there are so few OSS iPhone apps out there in their entirety.

Get the code here => GitPhone on GitHub
Screen Shots => GitPhone Wiki

Adding a timer to a thread in Cocoa

Just storing this code away for future reference. It creates a new thread and adds a timer to it’s run loop.

This code creates a new thread and calls the secondThread method on self.

You’ll need to setup a new autorelease pool and start a run loop for your new thread. Ths code below does the following.

  • creates a new pool
  • creates a new timer to call the secondThreadMethod method every 5 seconds
  • adds the timer to the new thread’s run loop
  • starts the new thread’s run loop

Mini-Mallows: A Multi-Part Form Wrapper for Cocoa & iPhone

Mini-Mallows in Cocoa

All I wanted was some simple code to POST an image to a web service from my iPhone project. No big deal, right? Apparently, not.

Based on my google search results many people we were wanting the same thing and just not finding it. There are a couple iphone development sites giving examples and some really old open-source projects but nothing really felt right to me. So being a good developer I hacked something together which works for me and posted it on GitHub.

Issuing standard GETs and POSTs with Cocoa is pretty easy, but I couldn’t find anything easy to make multi-part forms for POSTing. This is where mini-mallows comes in. Just make some Cocoa, add some mini-mallows (form fields & a file), and POST.

Easy.

Current status

This project was written to satisfy my need to POST a single image and related form fields from an iPhone app to a web service. It only allows for the addition of one file per request. I am very open to comments, patches, and ridicule.

Installation

Get the code from GitHub => a href=”http://github.com/sschroed/mini-mallows”>http://github.com/sschroed/mini-mallows

Copy the files MultipartForm.h and MultipartForm.m anywhere you like into your Xcode project.

Usage

First, add your standard #import.

Create a NSURL object as you’ll need to send that to Mini-Mallows.

Now create a MultipartForm object and a few form fields and a file. I really wanted to call the class MiniMallows but MultipartForm is easier on the eyes.

When you are done adding fields and the file you can get a fully formed NSMutableURLRequest object from Mini-Mallows.

All set so POST the form.

Introducing BabyBeats

Well, I just submitted my first application to Apple. Wish me luck on getting it accepted.

BabyBeats - Life’s Soothing Rhythm.
Making bedtime easy for babies and their parents

BabyBeats plays a steady, comforting heartbeat. Babies will recognize the familiar sound and be comforted as it is similar to the sound they heard while safe and warm in utero, mommy’s heartbeat.

Just push the “Start Rhythm” button and adjust the volume for a continuous calming heartbeat. BabyBeats is specially made to work even when the phone ringer is set to mute so remember to shut off the ringer so incoming calls, emails, and text messages won’t disturb your baby.

BabyBeats

Windy City Rails

I’m attending the Windy City Rails conference on September 20th with 5 other Ruby.mn members. The plan is to pile into one minivan, dubbed the “MinniBus”, and motor down to Chicago. Good times expected.

WindyCityRails - September 20, 2008 - I'm attending!

RESTful_Easy_Messages now on GitHub.

I just pushed the 0.7 svn tag of the RESTful_Easy_Messages plug-in to GitHub so I can play with the cool kids. Go see it here => http://github.com/sschroed/restful_ezm. This will be the authoritative source from here on out.

It is in need of an update for Rails 2.1 so any help is appreciated.

RSpec and Rails Partials

For some reason Test:Unit and I are not friends. I’m not really sure why, but I always drop to voice mail when I call. So, I moved and started working on project with Andy and Heather Tinkham (two local MPLS software testers) to learn RSpec. More to come on that at a later date. Stealth mode now. Move along, nothing to see…

It’s been fun and I’m enjoying BDD. Once I get the basics down I’ll get into RSpec stories too. Anyway, back to the point.

On my current project we are working on a new version of the most important feature of the site. Without it, everything else is crap. It’s the main driver for adding content and it needs to be rock solid, no, diamond solid. And being a newly minted RSpec user I wanted spec it all out, cover every angle, even add view specs. Here is where my noobness shines.

The new feature is in it’s own partial which is nested in another partial nested within a page. Pretty standard stuff. With the process for writing Rails views and partials in mind I set about trying to write nested view specs. That doesn’t work. AT ALL. The RSpec view docs talk about the expect_render and stub_render methods but I still couldn’t figure it out.

So I called google and still nothing really popped out until I saw an archived email chain where someone said just spec the partials. WTF? OK? So I added a new file to my specs: spec/views/my_view_folder/partial_name.html.erb_spec.rb, added the following, and waited for autotest to run. And you know what? That bastard ran. Maybe I’m just dense, or missed a paragraph somewhere, but an example of the right way to do partial specs would have been sweet. I hope this helps other unsuspecting noob.

Note: Just in case this genero code is confusing replace “my_view_folder” with the actual name of the view directory and “partial” with the actual partial name. And change ControllerHelper to be the name of the actual helper. You get that when you run the RSpec scaffold generator. I did that because I’m lazy and didn’t want to make all the spec files by hand.

UPDATE: I’ve updated the source to show how to do locals.

Resources I found useful