While loading a custom UIView from a xib

Instead of this:

NSArray *bundle = [[NSBundle mainBundle] loadNibNamed:@”CategoryView” owner:self options:nil];

CategoryView *categoryView = (CategoryView *)[bundle objectAtIndex:0];

for (id object in bundle) {
if ([object isKindOfClass:[CategoryView class]])
categoryView = (CategoryView *)object;

}  

Isn’t this nicer and shorter? 

CategoryView *categoryView = (CategoryView *)[[[NSBundle mainBundle] loadNibNamed:@”CategoryView” owner:self options:nil] objectAtIndex:0];

Overload

I have 500+ friends on Facebook.

I am following more than 350 people on Twitter.

I have 1000+ unread items in my Google Reader account.

I have even more unread items under my Flipboard account.

I can’t stop checking my email every 1-2 hours. 

I have tens of unread books on my book shelf. 

I have tens of unread iBooks on my iPad.

I have hundreds of bookmarks on Safari that I saved for reading later but never had time to check back. 

Do I need all this stuff?

I feel like an old guy with a Messie Syndrome. Would I spiritually and professionally be better if I just threw away all these?

Do you also realize you are in such a situation from time to time? What are your thoughts?

SESpringBoard is now paginated!

I just added some paging support to my new iOS control. Now if you have more than 12 items in your stack, it is gonna get paged beautifully and will have a page control in the bottom of the screen.

You can grab SESpringBoard from GitHub and use it in your projects freely. Be sure to fork it if you have some ideas for any additional functionality :)

Decided to learn Objective-C and iOS?

So you are learning Objective-C and all about the iOS framework to create iPhone apps. Keep in mind that you are investing in a closed platform and it might not be as valuable as today in 2-3 years time.

Investing in HTML5 and being able to create multi-device apps faster than writing ObjC, will be much more important in the future. 

In the end, everything is about user experience and about the ability to use APIs to reach private functions of the devices. 

Learn iOS and ObjC, but know that the moment HTML5 has the ability to provide the UX native apps have, it will be over. 

How much does it cost to develop an iPhone app?

Many times we are asked how much we would charge for developing apps like X, Y or Z in the App Store. This is quite an immature question. 

If you want to get a house built you don’t ask the builder how much it will cost in total. You might build a pre-fabric hut with no windows or doors or you might want to get a huge medieval castle. In the end, both are “houses” that you can live in.

Apps are similar. Think about the thousands of recipe apps. There is Jamie’s Recipes and there are a ton of little weekend projects listing static recipes content. Like any other software, development costs for mobile apps depend on how much time the developers spend on it, and how high quality it will be. 

If you are gonna get an app developed by an agency or a freelancer, it is better to think about how much you can afford and check the hourly rates around. It all depends on your budget.

SESpringBoard: A customizable launcher for your iOS apps

I have decided to release as open source, a part of the latest app we are developing for a client at Apperto

It is a custom springboard for you to use in your iphone apps. Although it is quite against Apple’s user interface conventions, it might come handy especially when you need have lots of menu items and don’t find the classic Tab bar big enough. 

Anyway, grab SESpringBoard from GitHub now and feel free to fork it and stuff. 

The URL is dying

I am almost certain we will not be seeing an address field in web browsers in like 3 years time. 

How many of you are actually typing a site’s url to the address field? What you do is to just Google it even if you know the address perfectly well. Or you use your bookmarks.

We are living in the era of smartphones and apps. The web is not dying but it is changing form. Instead of individual pages, brands and apps are gaining importance. In the end, a URL is the ugliest thing to remember and interact with for the non tech-savvy.

Think about just a brand name. Same everywhere on your desktop, mobile or tablet… That’s how it’s gonna be, no URLs, no dot coms, no domain names. 

That’s why, I am also giving a thumbs up for Raven, a new browser that just turns your favorite sites into apps. 

Homebrew and PIL on Snow Leopard

Installing the python imaging library has always been a PIA for me after something screws up in my Mac OS X setup and I do a total reinstallation. I am still sticking to Snow Leopard because I do not trust Lion’s stability especially for developer tools for the upcoming 6 months or so. 

So this weekend’s small task was to install Snow Leopard and everything all over. This included setting up Google App Engine’s environment too for doing further development on GrupGuru.com.

Anyway, the fastest and easiest way to install PIL is over Homebrew, which is an excellent package manager, especially if you think MacPorts is driving you crazy. And here in 3 steps, you get PIL installed nice and easily.

brew install pip
$
export ARCHFLAGS="-arch i386 -arch x86_64"
$ pip install pil

Tags: pil homebrew

Writing easy to change code

Although I couldn’t attend WWDC this summer, I have been spending quite some time watching some of the sessions over iTunes nowadays.

So far my favorite has been Ken Kocienda’s talk about “Writing easy to change code”. It gives some great tips even if you are not an iOS developer. Here are my notes:

  • Clear code is easier to change. Write clear code.
  • 98% of time, you debug using print statements. Do not feel sorry for that.
  • Use bug trackers and write stories about your bug fixes.
  • Do not rewrite code, refactor!
  • Get rid of code and comments that do not apply and clean as you go.
  • You need good people skills to code well. Talk to your teammates before making a change. Plan before building something big.
  • Never convince yourself that your program can be slower because you are adding a new feature. Never make your code run slower. 
  • Write tests, test your code.

If you want to watch the whole session, here is the link.

Tags: coding

3 app releases in 1 weekend

This weekend has been quite exciting for me and my colleagues at Apperto. 3 apps we have been developing for the last couple of months have hit the virtual shelves of Apple’s App Stores.


The first one is a Mac app I was doing for the European Tech Blog: The Next Web. I worked together with the chief editor of the blog, Zee M. Kane and a designer friend Ryan Downie from the UK. The result was a slick widget that works attached to your desktop status bar. It lets you to easily get notified by the news from the Next Web’s website according to different categories you specify. People are asking for a few more features related to user experience and we will be working on them soon. You can get the app for free from the Mac App Store. 


The second one, FaceLight as we named, is a very simple app that lets you search for status updates, videos and links on the Facebook open graph. You can watch videos or visit shared links thru the app and re-share them using your Facebook account. It is rather a quick, helpful app to find stuff that you once discovered on Facebook but forgot where it was some time later.

FaceLight is very open to further development since it has the basis to become a potential Facebook client in the future. We will see how it does on the App store and then add some more features to it through time.

Even if you are not a Facebook addict, be sure to grab it and leave some comments :)


Finally, our last app was an iPad frame app, that scrolls motivational quotes from world famous leaders, authors, business-men and such. We created a chalkboard theme for it to make it look like the quotations were written over a real chalkboard and named the app Chalk Quotes


So, would love to hear your comments on our work. Nice weekend everyone!