Launching programmingthomas.com

Screen Shot 2013-09-15 at 17.35.33I’ve now finally gotten round to buying and launching programmingthomas.com. I intend to still post all of my content here for now, but I will be slowly transitioning towards posting everything there instead :).

 

Advertisements

Cake Day for iOS

iOS Simulator Screen shot 7 Sep 2013 19.57.13

 

I launched Cake Day a couple of weeks ago, but chose not to mention it too much because I’m waiting on Apple approving the iOS 7 update (it will be out within a few days). The premise of the app is pretty simple: you get a reminder once a year on your reddit cake day and you can manage multiple accounts within the app – so you can add your friends’ usernames too and get reminders for their cake days. It also shows you a nice picture of some cake :).

You can get Cake Day on the App Store for free now.

My first Chrome extension

tumblr

My tumblr, visualized

After doing some data visualizations on reddit over the weekend based on using text to create ‘ASCII/word circles’ that show how each letter is connected to another I made my first Chrome extension. It is basically a visualization of Markov chains.

You can get the Chrome extension from the Chrome Web Store now. Simply click the button in your toolbar to view the visualization for any web page.

Introducing Multi Timer for iOS

iOS Simulator Screen shot 23 Aug 2013 16.58.07

Disappointed with the default Apple clock app I decided that it was high time to create a simple, easy to use app that allows you to run and save multiple timers at once.

Multi Timer makes it really easy to save timers for tasks you do regularly and allows you to run multiple instances of the same timer at once. Even if you haven’t got the app open, Multi Timer will notify you when a timer has finished. Multi Timer is especially useful in scenarios such as cooking where you might want to time individual components separately.

Once again I have used FMDB and FlatUIKit to create this app (I’m also using Crashlytics for the first time). I had considered using UI7Kit for the UI, and given that the app is so simple I probably could have done however I really like the look of FlatUIKit (especially the buttons and color schemes) and I think it provides a bit more back compatibility with previous versions of iOS. If, however, you run the app on iOS 7 it will default to normal UINavigationBars and UITabBars in order to avoid some rendering issues on iOS 7 with FlatUIKit.

When you create a timer you can optionally assign it one of 12 icons (I’m planning extra/custom icons for a future release). My normal workflow for this would have been to create the icons in Inkscape and render them to PNGs. PNGs for icons tend to be pretty small – especially when compressed with ImageOptim – however instead I created all of the icons in Opacity (which proved to be a lot nicer to use on OSX than Inkscape) and then export Quartz rendering code for the icons instead. The code isn’t super well optimised, however it kept the size of the app incredibly small (~1MB) and allows for completely resolution independent icons.

You can get Multi Timer now on iOS for $0.99/£0.69.

In-app purchase bug with ‘1000 icons’ in Keep Calm

If you’ve tried to buy the 1000 icons upgrade in the latest version of Keep Calm on your iPhone you will find that you won’t be able to. If you’ve got an iPad you can buy it on there and then restore the purchase on your phone in order to active it.

TL;DR: I’m incapable of remembering to link up IBActions from both storyboards.

Free iOS app: When You’ve Got Swag

iOS Simulator Screen shot 20 Aug 2013 15.24.53

I first released When You’ve Got Swag on Android a few months ago and to my surprise it actually ended up getting around 30,000 downloads. Over the weekend I decided that I wanted to play around with FMDB so I decided to put together a simple iOS app, and it struck me as a good time to bring the wildly ridiculous ‘swag’ images commonly found on Instagram and Tumblr over to iOS.

After having written the model code (which really is pretty simple) FMDB proved to be really awesome and I see it as reasonably likely that I will use it as an alternative to Core Data in all my apps – it was really easy to get started with, I didn’t have to write 100 lines of boilerplate code and I don’t have to worry about issues between threads as much as I did with Core Data – when I wrote Keep Calm I actually ended up with a whole extra model layer on top of Core Data to handle rendering on a separate thread (I now know that this could be easily rewritten).

The UI was all created with FlatUIKit (well not quite all, I had to use a tiny bit of UIAppearance) which proved to be just as awesome and I plan on using FlatUIKit+FMDB a lot in the future :).

To customise which words are highlighted you enter the text in block capitals (case doesn’t matter, all of the pictures are rendered with capital text anyway). I had originally planned to try and detect #hashtags, @usernames and URLs however I realised that just detecting punctuation next to capital letters would be a lot easier and more customisable. The text rendering is done using a regular expression to find characters and then an attributed string rendered with Core Text for the highlighting. I intend to add text sizing in a future release along with iPad support (the app is so simple and because it was originally written as a test app I don’t really see the need for this).

When You’ve Got Swag on the App Store (free)

In-app purchase bug in Keep Calm 2.2

The latest version of Keep Calm has introduced a bug when attempting to restore previously purchased items in the store. Currently the code that restores the purchase my side is not being run (due to a really stupid faulty if statement) however if you have already purchased an item you can press the ‘Buy’ button again and it will automatically acknowledge that you have already purchased an item with no need to buy it again.

I’ve just finished a fix for this bug which I intend to send to Apple shortly, so hopefully the bug will be resolved within the next few days.

Keep Calm 2.2 available on the App Store

20130719-080856.jpg

Today I updated Keep Calm to version 2.2. This new version adds the following new features:

  • Completely new flat UI – this is an iOS 7 style UI as I haven’t decided yet whether I will require iOS 7 when it comes out
  • The new UI makes it a lot faster to make posters – on average fewer taps are require to make a poster and it is now a lot clearer how one carries out basic tasks
  • The app is faster – for those interested, I took out redundant Core Data and Core Graphics calls
  • When you first launch the app you are welcomed with a new welcome screen. I’m particularly pleased with these because it provides quite a nice way of demoing some of the Pro features. Again, for those interested I use a UIScrollView and a single UIImageView that gets translated by the scroll offset
  • Runs much better on the iPhone 5 – I had spent a lot of time focussing on designing the regular iPhone version (because posters seem less stretched) rather than the full iPhone 5 screen which meant that there were a few buttons that weren’t showing up in the right places. This version is a lot more solid
  • Less code – this isn’t really a feature that my users need to care about, but I swear to god it makes my life a lot easier. By reducing the total number of delegates in the app (almost every single view controller – and some views/models too – declared a protocol) and making each view controller focused on the purpose of the app rather than being generic meant that I could write a lot less code. I also removed a lot of UIActionSheets because a) I don’t think they look very pretty and b) I really don’t like declaring them and writing UIActionSheetDelegate methods 😦

On the whole, users should find this update far more enjoyable and easy to use than previously as they upgrade over the course of the weekend.

Keep Calm 2.1 available on the App Store

Today I have released version 2.1 of Keep Calm on the App Store. This new version has the following new features:

  • Pro users can now export images of any size they like (up to 4000px by 4000px) making it easier to create posters for print or the web; you could create a desktop wallpaper if you wished
  • Pro users can now now also import backgrounds by pasting them from the clipboard rather than having to save them to their device first
  • Pro and free users now get faster scrolling across the app (I’ve optimised all the UICollectionViews to use NSCache to reduce loading time)
  • Pro users no longer see multiple menus appearing at once
  • All users can delete all their posters at the press of a button to reduce space
  • Cancel buttons now work in a more standardised way between the iPad and iPhone version
  • The images used by the app (icons, backgrounds, etc) are now significantly smaller which has reduced the App Store size of the app by 40%

Head over to the App Store now to update to Keep Calm 2.1. I intend to appropriately update the Android versions however I’m in the process of migrating code over to Android Studio from Eclipse.