Chris Hannah

Development

SOLID - Wallpaper Generator #

Just over a week ago, I really wanted to set a plain colour background to my iPad. I had a quick look on the App Store, but nothing just did the feature I wanted. So I ended up starting my own mini project.

It took a few hours to make, and I had to make it support iPhone, iPad, and all the sizes they both come in. In the end it was probably as simple as the implementation could be, but that’s what I wanted myself.

The app can be broken down into 5 elements – three sliders for the hue, saturation, and brightness, followed by a save/share button so you can save the image or do whatever you want with it. Then there’s the background of the app, which shows the currently selected colour. So you literally get to see a live preview of the wallpaper.

Shortly after making this app, I thought back to my post on clearing out my current selection of apps on the App Store. But like I said in that post, some apps don’t require much maintenance, and I this app will fit in to that category. So although I do plan on keeping it up to date, you can see yourself how simple that will be.

Of course, I couldn’t charge for an app this simple. So it is available for free on the App Store!


My App Store Clear-out #

As I’ve been getting back into development for Hydrate (a water intake tracker for iOS), I’ve been thinking about the sort of representation of myself as a developer.

When I think of a great developer, they usually have a small number of apps. Sometimes they’re all at a really high standard, but most independent developers I see, have one or two main apps, and a few more fun ones.

I have been developing for iOS/macOS for quite a few years, and I have to say most of them are dead, stale, or heading in that direction. So it’s time for a clear out. This might not be a very interesting article, but I certainly think the act of me writing this, will aid in the process.

For some background information, here is the list of apps that I’ve made for iOS/macOS, and their current status.

Name Platform Status Description
Hydrate iOS/watchOS Available. My current work-in-progress, a water intake tracker.
Pretty Regular Expressions iOS/macOS Available. Regular expression tool for macOS/iOS. Very simple.
Pixels Sticker Pack iOS Available. Some pixel art iMessage stickers!
AniMatchers iPhone Available. Just a fun memory matching game, with cartoon animals.
Bill Splitter iOS/watchOS Available. A super basic bill splitter. Mainly a small project so I could check out the watch SDK.
Qwiki macOS Available. My wikipedia menu bar app, which is one of my best projects in my opinion, which I will hopefully update soon.
Tap Gap iOS Available. A quick game for iOS, where you try and tap the screen when a line is between a certain gap.
Floppy Turd iOS Available. An awful, but funny remake of Flappy Birds. It took a sunday morning to create, and that was where I left it.
TinyMe iOS/macOS Removed. One of my first few apps, they used the goo.gl api to shorten longer links, but they aren’t an issue anymore.
Postie macOS Available. I used to blog on Scriptogram, and this was a basic Markdown editor with publishing built in. The service has unfortunately shut down.
The Girlfriend Helper iOS Removed. I think the first app I made. It was an app that suggested message you could send to your girlfriend depending on the event type.
Halloween FX iOS Removed. Basic soundboard app, which also featured a timer so you could hide your phone and scare someone.
The Farm iOS Removed. Even more basic soundboard app, just contained farm animals.
Bug Splatter iOS Removed. This was a weird one, there’s multiple levels of bugs/difficulty, and the aim was to splat as many of them before they reached the end of the screen.
Whack iOS Removed. A pretty simple whack-a-mole game, but with pixel art, and funny noises.
TextShot macOS Never made it. This was a really fun project to work on, it was going to be an app where you could select a bunch of text, and it would generate a picture from it, even including multiple different styles. Sadly the MacBook I was using at the time died completely, and I wasn’t clever enough to think about source control back then.

Okay, I didn’t actually know I already removed a few of these already. But there’s still some clearing out to do.

My aim is to have a small number of applications, that either are stable, and need hardly any maintenance, or ones that I can regularly keep updated, and are proven to be worthwhile.

So if you just take the apps I have available, there’s 9. Well one isn’t released yet, but it’s in progress.

  • Hydrate
  • Pretty Regular Expressions
  • Pixels Sticker Pack
  • AniMatchers
  • Bill Splitter
  • Qwiki
  • Tap Gap
  • Floppy Turd
  • Postie

If I separate them into the groups I mentioned before, I’m left with this:

Maintainable Apps:

  • Hydrate
  • Qwiki
  • Pretty Regular Expressions?

Minimal Effort/Stable Apps:

  • Pixels Sticker Pack
  • Tap Gap

Left over:

  • AniMatchers
  • Bill Splitter
  • Floppy Turd
  • Postie

That was pretty quick and easy, and it sort of represents what I already had in my head. Out of the four left over, they all have very good reasons why I don’t want to support them anymore. Low download numbers, super old code, and lack of interest to work on them again.

So, they’re be removed.

That leaves just five remaining apps, three I feel that are maintainable, and the other two are kind of eternal to an extent.

Of course Hydrate will stay, I mean I haven’t even released it, and it’s still in active development. Qwiki is stable, and my most popular app, so that will also stay.

Pretty Regular Expressions however was initially well taken, but I haven’t had any desire really to go back to it, and improve it. I will have a look at the code again, and hopefully I can add something to make the app even better soon.

Pixels Sticker Pack is a bunch of images, and I can’t see myself ever needing to update these. They’re fun, and I still enjoy using them!

That leaves Tap Gap, it’s a simple game, that still works fine. I’ll certainly make a few changes and support the iPhone X soon, but that is only a minor issue.

So the remaining apps, along with their pricing are:

Name Price
Hydrate Not decided.
Qwiki £2.99
Pretty Regular Expressions (iOS/macOS) £0.99
Tap Gap Free
Pixels Sticker Pack Free

Not a bad bunch!

I’ll be checking out a few of these projects today, and maybe even get thinking about the changes/updates I can make!

If you want to follow on with more detail, just follow me on twitter!


iOS Icon Sizes #

There’s a lot of occasions where I’m checking the specific iOS icon sizes, and I remember I made a document a few years ago with some references. However, there’s been a huge amount of changes since then. So I decided to create a new reference document from the Xcode 9.0 beta.

It’s hosted as a Gist on Github, or you can view it below:

I’m going to make an effort to keep this updated, and I’ll probably create one for the other platforms as well. Anyway, I hope people find this useful!


My Latest Development Project #

I’ve been working on a new app for a while now, and I’ve been meaning to write about it here on my blog, but I just keep putting it off. But as the beta process has been going for a while, and I think the development has progressed to a more stable (I mean slow) development cycle. Probably not good for most of my projects, but I’m treating this as a more long-term project. More specifically, I want to do each step well, so that in the end it’s a product that I want to use myself, and potentially a lot of other people too.


So, a slight break here, so I can explain what this project actually is.

In the simplest terms – it’s a water intake tracker for iOS. Being slightly more descriptive – it’s an app where you can manage your water intake, get a quick glance on how you are doing compared to your daily goal, and also look back and see how hydrated you were in the past.

That’s not the final description however, as I have many things I want to add to the application (which I will describe below), and I’m probably also missing out features that I’ve already implemented.

Oh and it’s called Hydrate. Original, I know.


There was no big reason for the app, except that I wanted to start tracking my water intake, and as an app developer, I thought I’d put the two together. I was actually asked on Twitter about the difference between Hydrate and other “competing” apps, my answer was what I just said – I’m making it for myself. If other people enjoy it, then that’s even better!

The layout and overall design is aimed to be as simple as possible, and therefore is designed around having “Quick Add” buttons, which you can set up with default quantities, making it even easier to add water intake. Mainly because, it’s not fun entering data as boring as this, so if I can make it quick, I will.

At the moment, the current features are:

  • View daily intake.
  • Add predefined quantities via Quick Add buttons.
  • Add custom amounts.
  • Set a daily goal – Which is the basis for the main ring.
  • Support for ml and fl oz (US).
  • Dark/Light mode – I just have to have a dark mode, and the other one is for “normals”.
  • View your past water intake (last 21 days).
  • Today widget with Quick Add buttons, to do it even faster.

Of course that’s not all the features I want to add, therefore I have a basic list of future main features:

  • Watch App
  • Make the ring animate.
  • Possible reward for hitting the daily goal.
  • A way to share your progress.
  • A maybefeature – Some way to add a drink when you start drinking it, which you can then tap to add to the actual data when it’s finished.

I’m most likely going to add more to this list, but that’s what I want to definitely (apart from the last one) add before I release.

If you want to try out Hydrate, then the beta process has already started, just enter your email on the Hydrate website, and I’ll add you to the TestFlight group!


I’m Developing a New App! #

If you follow me on Twitter, you’ll already know this, but I’m now developing a regular expression app for iOS!

It’s called “Pretty Regular Expressions”, and I’m going for a minimal approach, but with some optional settings, and a clean interface. Of course a dark theme was the first thing I built!

It’s still in development, but it’s moving pretty fast, so an open beta is very imminent. I already have a landing page, where you can subscribe to keep updated with the application. Of course I will only send out an email for when the beta opens, and then when the app is released.

If you want to watch the progress of the development, then just follow me on Twitter at @chrishannah, because I post a lot of screenshots.


CH Uploads #

I’m getting back into programming, and I’m messing around with PHP and MySQL to create a sort of upload manager for myself.

I just want a place where I can quickly upload an image/video, and then be able to share it with people on Twitter.

So far I’ve got a working database with a file viewer, and a few extra bits. I guess I just need a dashboard for myself, and it’s a working project.

Anyway, check it out on GitHub!


The Making of Lemmings #

Back in March this year, Rich Stanton wrote a piece on the development of the classic game, Lemmings. How it came to be, and also what came after.

Somehow this ended up in my Pocket to-read collection, and I’ve only just got round to reading it. Lemmings was one of my favourite games when I was growing up, and I was so young when I was playing it, that I don’t even remember what platform I played it on!

Here’s a snippet:

Mike Dailly had seen tiny 5-pixel high sprites in games like , a popular Atari ST shooter where the player’s ship rescued little android slaves, and thought that somewhere between this and a 16×16 sprite would be a sweet spot – where the small size made the Walker look big by comparison, but the animations were still good enough to impart character. One lunchtime he made an image of little men being crushed by weights, and shot by a laser gun – everyone loved it, and Gary Timmons added a few more traps. While everyone was laughing, Russell Kay was the first to say ‘There’s a game in that!’

If you’re interested in video games, then I highly recommend it, and if not, then you should probably still give it a try.

Read the full post on ReadOnlyMemory.vg.


Qwiki 0.1 #

I’ve started working on a new app. It’s a Wikipedia search app for Mac, called Qwiki. At the minute it lets you search for an article, and quickly access that page in your browser.

Qwiki Screenshot

It’s only been in development for a few days, so it’s nowhere near the end product.

I plan on adding loads more features, such as copying the link (including Markdown style), and the standard share sheet. I think I will also add in an option to view the content of the article directly in the app, but I’ve got to work out how I want to do that.

But even though it’s super early days for Qwiki, I’ve made the beta open to the public, so that I can get as much feedback as possible.

So if you’ve got a Mac and it runs OS X 10.10 or higher, then you can test out Qwiki!

You can give feedback through Hockey, or direct to me on Twitter at @chrishannah.


Getting Started with MongoDB - Basic Messaging #

After talking to a friend at university about wanting to start a little side project while I don’t have any coursework, he suggested I tried out MongoDB. He gave me a little demo just in Terminal and how easy it was to simply create a database, I never plan on using MySQL again after seeing this.

To create a new database all you need to enter is use testdb If it’s already been created then it will simply select that database, if not then it will just create it. Easy!

Then to create a collection inside a database (tables in MySQL), just insert some data! So for example if I entered this:

db.users.insert({name: “Chris Hannah”, username: “chris”, email: “chris@email.com”})

It would then create a new collection with the name users, and then insert a new document (row), with the corresponding values for name, username, and email.

Making it into something

So after I realised I could get the hang of MongoDB, I started seeing how I could use it in something like PHP. It took ages to get the different extensions installed, and also working with XAMPP (I wont discuss the trouble I had, it would take too long).

But after getting that sorted, I worked out a little code to display all the entries in the Users collection. That felt pretty nice to have, as I was still inserting the data via Terminal and then refreshing the page to see the data suddenly appear.

Mongo

After that I thought this could be useful for a basic messaging service, so I started a new messages collection in the database. The only data I stored was the user (which I will then correlate with the users collection eventually), the message text, and a timestamp.

I got the messages appearing just like I did with the Users. But after adding a basic form, and another bit of PHP to take the data and insert it into the database, I got something that slightly resembles a message board.

I’m now going to work on it a bit further, and it may develop into a basic service like Twitter, or a chat room thing, either way I’m not too bothered. It’s all for the purpose of learning, so just making something is good enough.