Home

Archive for the 'software' Category

Evolution of an iOS app – Part 1

Back in 2008, in the middle of a 4 month trip overseas, I purchased an iPod Touch. It was awesome and opened my eyes up to the new wave of hand-held smart phone devices which were being released. My mobile phone at the time was a trusty but severely outdated Sony Ericsson. Time to immerse myself in the latest technology! So when I arrived back home after my travels, I quickly bought my first iPhone – an iPhone 3G. And so started my interest in all things mac and all things iOS.

By the end of 2008 I had also completed my mac transition by purchasing a macbook. During 2009, at work I became heavily involved with mobile application development and iPhone app development (although not from the programming side).

On a personal level, although I had the tools available (mac + iPhone) and a knowledge of programming, I didn’t feel capable of developing my own iPhone app. Prior to this, I was well versed in web development. It is what I felt comfortable doing and had had a fair bit of success doing. Application development & dealing with things such as memory management just seemed like another world which I was a complete novice at.

First Idea

So sometime in 2009, I wrote a blog post with an idea for an iPhone app. It would allow someone to post to various social networking websites at the same time – twitter , facebook, myspace, yammer etc. It seems like a very obvious thing to do now and their are now companies who make a lot of money from widgets and apps that do this – but back then, there was only one other iPhone app which did this – and it required you to sign up to their service and was all around not user friendly. So my blog post put the idea out there and it was picked up be a UK developer who worked with me to develop the app. In the process of the app being made, I started thinking “hey.. I could have done this myself”. So after the app we did together launched and failed to get any traction I set my sights on thinking of another idea I could do completely on my own.

Second Idea

10 months later…

It was the end of 2009, Christmas time. I tend to buy a lot of my Christmas gifts online as I really hate shopping centres at that time of the year.

So there I was getting many presents delivered by various companies. Having to login to all the tracking sites, copy/paste my tracking numbers each time. Annoying. So an idea for an app was born. Of course, the first thing to do is track for apps that already do this! After a search, there was only one app which had a great design – but it only supported ~10 U.S. based providers. Great! Still a huge market left and a great opportunity to make my app even better with more features. I initially would focus purely on Australian delivery companies. In fact, at this stage expanding beyond Australia was not even on the cards..

It Begins

I signed up for the iPhone Developer Program, downloaded XCode and in early January 2010, opened up Photoshop to come up with some initial designs.

You can see the initial name for the app was “Postee”. I had forgotten about this haha. I quite like it. I wish I could remember why I changed it 🙂 (update – ahh chat transcripts are great for nostalgia – here’s why). Another name which a friend suggested was “Keep Me Posted”. I liked this, but I decided against it because it wouldn’t neatly fit in the space available under the app icon on the device home screen.

So design is the (kinda) easy part of this whole experience and you can see that even today, the current app still looks pretty darn similar. How about the coding?! Well with zero knowledge of Objective-C and little application programming knowledge (despite dabbling in some .NET apps) I sure had a lot of learning to do.

Next?

Part 2 (and more?) will cover how I managed to learn Objective-C and the iPhone SDK and make the app a reality. I will also cover more on the business side such as contacting a whole bunch of shipping providers, GST obligations, earnings, marketing, support methods and how the app and feature set has evolved. Stay tuned.

iOS Development – Gotcha #1

I do some iOS development (both personally and for work). It’s great. But. It’s also very painful at times.

One reason it is painful is the provisioning profiles & certificates setup. I dread the next time my provisioning profiles or worse, certificates expire. It’s just annoying. And always involves way too much clicking and anxious holding of my breath when I click the magical “build” button.. just waiting for those terribly unhelpful codesign errors.

Certificates expire every 12 months.
Development provisioning profile expire every 3 months.
Push notifications certificate expire every 12 months.

Anyway, I experienced a terrible gotcha today. I had to shake my head in wonderment. I was helping a colleague do a distribution build for a new app for work. As I am team agent (i.e. super admin) for our work’s iOS Dev Portal I was assisting in setting up their macbook with the distribution certificates, creating app ID’s and all sort of other annoying stuff.

The gotcha came as I was creating the distribution provisioning profile. My process was:

  1. Login to iOS Provisioning Portal as Team Admin
  2. Create Distribution Provisioning Profile
  3. Download to my mac
  4. Email to colleague
  5. Have him double click it to install into his XCode

Sounds simple right?

Well, the last step refused to work. No matter what. We tried everything we could think of. Extensive googling and an all around waste of 20 minutes of our frustrating afternoon.

So for giggles, I asked him to let me login to the iOS Provisioning Profle on his macbook. Thinking I was asking to do something which was a complete waste of time.

So I logged in, downloaded the provisioning profile & double-clicked to install. Voila. It worked. I couldn’t believe my eyes.

It was the SAME user logging in. Downloading the SAME provisioning profile.

The moral of the story for anyone experiencing a similar issue and who googles “provisioning profile won’t install”: DONT EMAIL PROVISIONING PROFILES. They obviously dont like to be emailed.

* Compressing the provisioning profile prior to emailing may have worked. But I didn’t want to waste any more time on the ridiculous process, so I didn’t try. I was emailed through exchange, but exchange didn’t complain about the file type or anything like that.

More iOS related posts to come. Both positive (i.e. making money!!) and probably more gotcha’s.

HTPC & Media Centre Experiences

My household has gone through a few iterations when it comes to media players & HTPC setups. The main requirements were something to provide a nice front-end to our collection of movies, TV shows and music which has grown a fair bit over the past 8 years.

Linux & MythTV

Way back in 2005, we started with a bunch of old computer parts, put into a nice Silverstone HTPC case, and then setup to run Linux with MythTV. This setup never really took off as MythTV (at the time) didn’t have TV episode support – in terms of presenting information from TheTVDB.com. We also had continual problems with the stability of the MythTV software and the linux driver support for our TV Tuner cards was flakey at best. MythTV also didn’t play too well with the remote we bought for the HTPC and I seem to remember the linux flavour we used at the time (Arch Linux) had some serious issues with hibernation/suspend power management, which became a bit of a show stopper for us.

Windows, MediaPortal & XBMC

Next we switched to Windows for some better driver support (at the time) and more software options. We ran MediaPortal for a while… which was OK but had some quirks which annoyed us. I can’t quite remember exactly what the issues were unfortunately.

So at that stage we dropped the TV Tuner cards as they seemed unnecessary for us as we do not record any TV (never have & probably never will). And we were happy to just put up with having the HTPC on one source of our TV (i.e. VGA), and free-to-air TV on another source on our remote control.

Without needing TV Tuner capability we could then look at the XBMC project (XBox Media Center) and this is what we used quite happily for a couple of years. The software was stable, playback was fine and the scraping of IMDB & TheTVDB was generally fairly reliable.

Dilemma

The only problem was that all of our movies, TV shows and music were stored locally on a 4x500GB hard drives inside the packed to the brim Silverstone case. As a result of being so packed, we never really felt comfortable leaving the computer on all the time due to potential overheating issues and power usage. Oh and ofcourse, since our collection was starting to get quite sizable, we were outgrowing the 2TB of space we had available. And most importantly, since the data was “valuable” to us, if one of those drives failed we would have cried a fair bit as we did not have a redundancy/backup process in place.

Solution! Mac Mini + Drobo + Plex

So the solution that suited us was to purchase a Mac Mini & Drobo (which I will cover in another post). I definitely can’t say this would be the best solution for everyone.. as it is quite an expensive way to go. The Drobo in particular is an expensive gadget, but the built in data redundancy and ease of use was just too irresistible.

And the best software for the Mac Mini has definitely been Plex – which is free and has its roots as a fork of the XBMC project but it now a standalone product with a huge following of its own. It is an incredibly easy product to use, very intuitive and has a great community of plugin developers and theme developers.

= AWESOME!

I have been using Plex for over a year now and there have been some huge changes in that time. The most notable change to my own experiences has been the addition of an iOS app for iPhone and iPad which transcodes videos on the fly for flawless (and simultaneous) viewing over wifi and even 3G. It really has added a whole new dimension to our media centre setup. I can start watching something on the main TV and then finish watching it in bed while Rob watches a silly Arnie or Stallone classic on the main TV. Heaven!

The standard Plex theme is attractive and the way it displays the TV Show and Movie artwork leads to a rich media experience. Playing the TV Show theme music in the background when browsing episodes of a particular show is a beautiful finishing touch.

One thing I look forward to utilising more is the ability to connect to a remote Plex library. I have experimented with this with a friends Plex setup, it basically allows me to browse and play their Plex share from within my own Plex installation (and vice versa). The only issue is our ADSL2+ upload speeds are not the best, so streaming video over peer-to-peer Internet has not proven fast enough to stop the stream stuttering. Of course, once we get some fibre goodness that will all be a thing of the past – bring on the NBN!

My parents were also so impressed with the Mac Mini & Plex combination that they bought a Mac Mini and had me set them up in a similar fashion. The fact that I have had no support calls from them speaks volumes for the reliability of the mac and the user friendly interface of Plex.

Our journey with HTPC setups has come a long way. In the end, our solution is expensive but suits our needs in terms of data redundancy, attractive front-end software and reliable/powerful hardware. I would thoroughly recommend Plex as a front-end for a media centre experience.

10 of the Best Tools For Web Development on a Mac

Having only had my macbook for a couple of weeks, I am still very new to OSX and all the apps which are available. The primary reason I bought the lovely new macbook is for web development – specifically for PHP/MySQL sites which I develop.

I spent a number of weeks both before and after purchasing the macbook looking for the perfect web development environment for me. In this post I will outline what I am using and why, any pitfalls I have had and also alternative software which you might want to try out.

Apache/MySQL/PHP

screenshot_s1_3_enProbably no real suprises here, but I opted to go with MAMP (MacOSX, Apache, MySQL, PHP) as the tool to manage my web and database servers. It is incredibly easy to setup.

There are two versions, MAMP (free) and MAMP Pro (not free). MAMP Pro gives you access to setup and manage your virtual hosts as well as GUI access to other things you might want such as loading certain Apache modules. I tried out both, and honestly I have uninstalled MAMP Pro (and just kept the standard MAMP) as I found I was actually having issues where my Apache server would fail to start with MAMP Pro. I definitely do need access to edit virtual hosts but read on for my alternative program to do this.

MAMP allows you to choose the PHP version to use (4 or 5) as well as any caching engines or php accelerators. Stuff that any serious developer would appreciate having quick and easy access to. You can also easily change the ports which Apache and MySQL use to the defaults (80 and 3306). Definitely makes things a lot easier if you use the normal ports.

Download: http://www.mamp.info/en/index.php
Price: Free
Alternatives: XAMPP (includes Perl), or do it all via the terminal yourself! See http://mymacinations.com/2007/10/28/apache-php-and-mysql-on-leopard/ for more info.

Virtual Hosts

vhSince I didn’t want to be paying for MAMP Pro, I came across another free application which will let me manage my virtual hosts in a nice and easy GUI screen. It is called Virtual HostsX and once again is pretty simple to use. It automatically detects MAMP and prompts you if you want to update MAMP’s apache configuration files (yes). I believe it is limited to 3 active virutal host entries at any one time – but this shouldn’t pose to much of an issue for me. If you need more entries at any one time, hey its only $9 to buy and support the developer.

An important thing which new people to Virtual HostsX sometimes do not realise is that when installing the program, it automatically enables the “Web Sharing” option in your System Preferences > Sharing screen. So make sure you go in there and un-tick the Web Sharing option – this will just cause all sorts of issues if you are using MAMP.

One pitfall I had with MAMP was a compatibility issue with Virtual HostsX application (the virtual hosts weren’t being picked up properly). After finding a thread on the same thing, it was recommended to use MAMP 1.7.1. For this reason, I actually had to downgrade from MAMP 1.7.2 to MAMP 1.7.1.

Download: http://clickontyler.com/virtualhostx/
Price: Free – $9 if you want more than 3 virutal host entries at any one time.
Alternatives: MAMP Pro (I couldn’t get this to work though) or edit apache config files via terminal yourself.

Code Editor

codaOhh mac people are spoiled for choices in this category! On my Windows machine I was a Dreamweaver user (hey it is decent and does the job). And although the Adobe CS4 suite was one of the first things I installed on my machine (yay for academic agreements) I wanted to try out a few of the mac editor apps which I kept on hearing so much about. More specifically, Coda and TextMate. After using both for a short while, I came to the conclusion that:

Coda – wins.

After watching the videos on the panic website, everything just seemed to make sense. It seems to be very intuitive and so far I am really liking it. When first opening the application, I was quite underwhelmed as there didn’t seem to be many bells and whistles. But after watching the videos and playing around with it for an hours, I realised that all the bells and whistles (and more) are there, they just do not clutter the interface in a way that I am used to with something like Dreamweaver. Kudos to the developers – I think this really sets a new standard in code editors.

Download: http://www.panic.com/coda/
Price: Demo available. $99 to purchase after demo expires.
Alternatives: TextMate, Dreamweaver etc

Database Manager

screenshot-1I normally like to use a desktop-based tool to manage SQL databases. On Windows I have used SQLyog and the MYSQL Administrator package. The popular choice for this functionality on a Mac seems to be Sequel Pro (formally Cocoa MySQL). It certainly is more than adequate for most users and I am happy with it so far. The interface is pretty standard for these types of programs and I haven’t had any problems working out how to do something.

Important: If you are using MAMP, make sure you put the following into the “socket” field in Sequel Pro: “/applications/mamp/tmp/mysql/mysql.sock”. Otherwise, you wont be able to connect to the MySQL server!

Download: http://www.mjmedia.com.au/sequel-pro.html
Price: Free
Alternatives: phpMyAdmin (web-based), NaviCat, Aqua Data Studio etc

Database Designer

a-200Everyone loves a good database modeler – right? For your bigger projects you want to have a good tool to map out your tables, keys and relationships. Make sure everything looks about right before you dive into the deep end. I didn’t really look around all that much for software for this. I stumbled across a free tool called Power*Architect which looks to be a tool which will handle the job nicely.

Download: http://www.sqlpower.ca/page/architect
Price: Free
Alternatives: SQLEditor

FTP

transmitAlthough I don’t have much need for FTP anymore (thanks to SVN) it is handy to have a good FTP program for the odd job here and there. There are a number of alternatives here, but the main contenders are CyberDuck (free) and Transmit (paid). I have to admit that I prefer Transmit’s interface (especially since I am using Coda which is by the same developers) but at the end of the day, CyberDuck is a fantastic free program which is fine for what I am actually using FTP for.

Download: http://www.panic.com/transmit/
Price: Demo available – $29.95 for full version.
Alternatives: CyberDuck FTP

SVN Tool

versionsSome sort of code versioning is an absolute must for any serious developer. Once you make the jump into versioning you will never look back. There are a few options (cvs, git etc) but I choose to use subversion (svn) as there are plenty of tools out there to make it all very easy to integrate into your development process.

Coda has some built in svn integration, but since you cannot add comments to each revision with Coda I was on the lookout for something a bit more powerful. There are a number of options out there and for now I have settled on Versions.app which is a powerful (and pretty) tool to manage all your svn goodness. Whether or not I end up buying it after the demo runs out will depend on how I go over the next few weeks.

Download: http://www.versionsapp.com
Price: Demo available – $52 for full version.
Alternatives: SmartSVN, SynchroSVN etc

SVN Hosting

assembla_logoThere are a few options when it comes to hosting – you can host it yourself or use a hosted solution. I have opted for a hosted solution although I am still tossing up between Dreamhost’s SVN option or using an application such as Assembla (which will include wiki, miletstones, trac etc). I like the idea of Assembla so will probably end up giving their free plan a go.

Download: http://www.assembla.com
Price: Free plan (200mb limit)
Alternatives: Unfuddle, Google Code, Sourceforge or set it up yourself on your own server.

Graphics

adobephotoshopcs3I couldn’t go past Adobe PhotoShop and Adobe Illustrator for this. Seriously, if you have access to them for free you really need to consider using these tools. CS4 has some great improvements (tabbed windows ftw!) and I am still finding new features every time I use it. It truly is the industry standard for a reason.

Download: http://adobe.com
Price: Very expensive… unless you have access to free version (e.g. academic agreement etc)
Alternatives: GIMP, Fireworks etc

Browser

firefoxEveryone will have a favorite browser – and for me that is Firefox. Combined with a few plugins such as Web Developer Toolbar, ColorZilla, YSlow and HTML Validator it is unbeatable in my opinion. But it doesn’t stop there as we need to check our websites in other browsers (Safari, Opera, IE6 and IE7 at a minimum).

Testing IE is the biggest pain of all on a mac. You can use VMware Fusion or Parallels to install Windows and test IE7. But then you cannot run native versions of IE6 and IE7 on Windows at the same time. Boo to Microsoft. So that means two installations of Windows which therefore means you need 4Gb of ram otherwise your development machine will be crawling.

I am still a bit undecided about all of this. I have installed ies4osx which at the moment only supports IE6 (despite the fact that the website says both IE6 and IE7). IE6 seems to work well enough so hopefully the developers can add in IE7 to the new version soon. I have been wanting to avoid installing Windows (via vmware fusion or parallels) as I do not want to slow my machine down just because I need to run IE6 and IE7. So for now I am just going to check rendering on my Windows desktop machine (with Multiple IE’s installed).

Conclusion

Now there is definitely room for improvement, and I will always be on the lookout for something better. If you have any great suggestions please let me know. I also haven’t really started using all of these together to any great degree just yet – the first task was just getting is all set up.

Maybe things will change in the future – but for now I am pretty darn happy with it all.

Jing – Where have you been all this time?

I take a lot of screenshots, both for work and at home. I was previously using Firefox Fireshot to take the screenshots of web pages (which is what I do 90% of the time). That was until I heard about a program called Jing. Oh and in case you are wondering, it’s 100% free!

Now, FireShot worked well enough for me (except for the occasional crash) so I didn’t really know I was even in the market to find a new screenshot taking program – but Jing is one of those programs where you wonder how you survived without it.

First up you will have to download and install it from the Jing Project website (just under 5MB) .They have clients available for both Windows and Mac. It does require the .NET framework 3.0, but the Jing setup program takes care of this all for you.

At the end of the setup process, you get prompted to create a Jing account. Its all very simple, a few form fields and your all done.

Then look to the sky, as you now have a incredibly handy sun at the top of your monitor – this is your gateway into the world of Jing magic.

Jing actually does a lot more than just screenshots. You can take videos of an area of your desktop too (complete with audio). Basically everything you could possibly need to make a professional looking screencast.

For screenshots you can also annotate the image as you would expect:

It also provides many ways to save the image (to your file system, copy to clipboard, to your flickr account, to screencast.com or to your own FTP server). In fact the worst thing about doing this post was that I couldn’t use Jing to get the screen captures!

As you can probably tell, I am hooked. But there are some things I would like to see in the next version of JIng:

  • Ability to save an entire browser window, but without having to include the browser tool bar etc (basically I just want the entire webpage). I still have to use FireShot to do this..
  • More annotation options. At the moment you have text boxes, highlighting, normal boxes and arrows. They are all customisable in colour, but I would like to see more things like straight lines, squiggly lines, round framing etc.

Give Jing a go – it’s free and I reckon you will be just as impressed as me.
Let me know what you think of it.