Solving Linker Error with New SimpleGeo Framework

One of the tasks that I had set for the upcoming 1.2 release of Stiqrd was to upgrade the SimpleGeo framework to their latest major release 2.0.  I was very excited about this because of the added features and bug fixes that include, but not limited to: simplifying model objects for places and block based logic and callbacks.
After some updates to my gitmodules file and a little bit of refactoring I was ready to go and test the compile of the project.
Unfortunately, I received the following linker error message.
As to not bore you too much with the technical details as why the error was occurring I'll get to the point.  With previous versions of the SimpleGeo, and most network operation based libraries, there was a ASIHTTPRequest library dependency which I had in my Xcode project.  What I had not paid attention to was the fact that the devs at SimpleGeo had include a version already of the ASIHTTPRequest library, but change the namespace changed to SGASIHTTPRequest.
This was an easy fix. Just do a quick find and replace all "ASIHTTPRequest" with "SGASIHTTPRequest". Then add the following import: <SimpleGeo/SGASIHTTPRequest.h>. Finally delete old ASIHTTPRequest that was in my project.
Recompile and off to the races.
If you are using SimpleGeo's iOS framework then I highly recommend upgrading your project to the latest.  I can definitely tell an increase in speed with the new library and the code management is much easier.

I Am Speaking At Mobile Technology for Teaching and Learning

I will be speaking the Mobile Technology for Teaching & Learning Oct. 18th.  This one-day conference the explores the application of mobile technologies (tablet PCs, internet-capable phones, etc.) for educational application at all levels.

Presentation Summary:
Most applications, whether for enterprise or the general public, rely heavily on 3rd party and/or services, for example, Facebook, Twitter, SimpleGeo or internal web services/applications. The aggregation of these datasources on an mobile device is NOT efficient.  The primary goal of the app should be to provide the best user experience.  I will show you how to architect a middleware layer and iOS application framework, using dynamic tools, in order to standardize a payload response to the iOS application.

Registration is free and encourage anyone to come.

stiQRd v1.1 Has Been Officially Released

stiQRd v1.1 has been officially released and available for immediate download in the App Store.

Features:
  • Support for scanning standard QR codes
  • Scanning is now the default operation
  • Logout is now one step process
  • Increased search radius for participating businesses to 15km
  • Save and Review unused rewards
  • Misc bug fixes

It is advised that you logout then log back in after you upgrade. As always if you have comments/suggestions please let me know.  The stiQRd team will continue to listen to feedback and work hard to provide the best experience for our users.

Apple's Stock Should Have Gone Up

It was announced that Steve Jobs has officially resigned as Apple's CEO. Of course apple's stock dropped 7% in after hours trading. If investors really understood the company the stock should have gone up. 

Steve Jobs has embodied the true meaning of a leader. This doesn't mean he isn't without his faults over the years, but he has vision that has taken apple from a garage to having more market value and net worth than many countries. He has revolutionized almost every facet of technology in the past 20 years not too mention the music, movie and gaming industries.

However, these accolades are not why the stock should go up. The real magic, if you will, about Steve Jobs is the fact that he has passed on and instilled his core values into Apple itself. The culture, people, products, expectations and philosophies. So rest assured that his successor, Tim Cook, has the Apple spirit which is Steve Jobs.  They are inseparable. 

One may argue about the (mis)direction that Microsoft took after Bill Gates resigned and handed the keys over to Balmer. He was never a tech guy. He never saw that beauty in computers and how art can be found in computers and most importantly that computers and software are supposed to make people's life's easier. 

God speed Steve....in whatever direction you go.


Fixing Blurry Text in iOS

Quick Pro Tip:

It never fails that no matter what project, simple or complex, I always run into a unique scenario that makes me scratch my head.  With the latest project I am working on the UI is almost 100% custom.  The views have custom CAGradientLayers, the views are positioned dynamically, special touch events, custom UI date pickers, etc.  Like most developers after staring at the screen for long periods of time text starts to look blurry.  After I looked closer I noticed that all my label text was actually blurry.  As far as I can tell it only occurs when the UILabels were added as a subview for a subclass for a UIView.  Though I am not 100% sure why this is occurring I am pretty confident that the blurriness is caused by frame calculation from the superview has a non-zero fractional component.

In order to remedy this situation, and future proof the app, I round the label's frame and center.

Everything is now all crisp and clear.

iLearning For an iParent

Tonight I experienced the true power of the iPad. It had nothing to do
with powering a media center, putting a man on the moon, launching a
startup or making me money or writing this blog post. It was the joy
of sitting with my almost three year old daughter and teaching her
spelling and writing simple words. Granted McKinna has been using my
iPhone since she was three months old playing games and puzzles with
numbers and shapes but it has been recently that I have been looking
for ways to really propel her learning.

Due to the fact that gestures are more intuitive and easier to learn
than using a utility such as a pencil she grasps the concepts for
handwriting a lot faster. Even though I make my living by creating
applications on iOS devices I am still amazed by how they have changed
our lives in almost every facet especially in education.

Today's children should be grateful that they will never have to
experience carrying around a book bag with 50 lbs. worth of
over-priced, outdated books around campus.

Sent from my iPad

Was It Christmas or End of Days at the WWDC 2011

Depending on the developer that you talk to either Christmas came early this year or the End of Days came with a "sherlock" theme.  Unfortunately, because of the NDA I can't go into all the stocking stuffers and presents that Apple left under my XCode tree, but I wanted to address those frustrations for current and future developers.

I felt a little drunk just thinking about all the alcohol that some of the iOS devs out west would be drinking shortly after Forstalls' "Letterman Top 10" iOS features where announced.

When it comes to apps that you develop we are always in competition with other developers who have apps just like the ones that we are developing. Make no mistake with over 450,000 apps someone there is an app or game that is similar to yours. Just look at the number of Twitter and to-do apps in there now.

One of the companies that we are also in competition with is Apple.  The OS level apps and features that they put into iOS can literally kill current apps that are currently in the AppStore.  I don't see this as necessarily a bad thing because it can also inspire us to improve them with our own ideas.

Don't get me wrong my heart goes out to them. I know the pain, suffering and rewards that go along with releasing an app and watching its success grow and/or stall.  

Where my optimism comes in, is that I believe in people not products.  Those solo developers and companies that had the wind knocked out of them because Apple "invaded" their space, are still just as talented and creative as they were before Apple added in  the functionality to take a picture with the volume button or add in the "Read it Later" functionality into Safari.

And just like a great artist does with paints and brushes, I can't wait to see what masterpieces that these developers create with the new APIs with iOS5.

Twitter Tabbar Indicator Added to Universal iOS Template

Today I pushed a nice little update to the Tabbar Support branch of my iOS-Universal App Template project on Github.  I added in the "Twitter tabbar slider" indicator.  Though it isn't that flashy it was the attention to detail that made Tweetie so popular and usable when it first came.  While it has since been duplicated I found it interesting that most examples don't have support for landscape orientation nor for iPads.  After looking through @boctor's code on idevrecipes.com I figured I would be able to drop the code in for my template within a few hours.

If it seems too good to be true then it usually is.  I realized why I didn't see a whole lot of support for the indicators in other orientations or for the iPad.  The first obstacle was orientation support.  In @boctor's code the indicator is added as a subview to the main window.  This is not a bad practice because it ensures that the indicator is always on top of any subviews within the app. Unfortunately UIWindow doesn't support orientation, so when the device rotates the image looks crooked.  The solution is to add the indicator to the tabBarController's view.  Now that the image is repositioning itself with the orientation, unfortunately the new position is not centered.  To ensure that you will position the indicator in the center of each tabbar item ,regardless of orientation, you have to use the following calculation:

The last piece to the puzzle was to be able to force the indicator to recalculate it's position based upon the orientation.  This wouldn't be an issue with UIViewController, but I don't want to add in boilerplate code for each VC that I have.  (I already have boilerplate that I am going to abstract out with the next update).  Using NSNotification or a custom protocol seemed like overkill…and it was.  I ended up creating a category for the UITabBarController that overrides:

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration

and calls the delegate method for the tabbar that is selected.

The rotation animation on the splitviewcontroller seems a little sluggish so I need to track that down and I am hoping to take out the dependency for an image and draw it programmatically.

A BIG SHOUT OUT to Peter Boctor (http://idevrecipes.com/) and Loren Brichter for being innovative and providing the code that was the basis for my little addition.