flickery

As I am now back working on flickery after a short hiatus – sometimes you need a little distance from a project to be able to reflect on it and maybe get a new perspective on some things, I figured I’d talk about the process as I am working on it, not after, in a so-called “post-mortem”, as my memory is now fresh and “in medias res”.

Before going into about what’s coming though, allow me to go back to see what’s been.

A New Beginning

Starting from scratch is usually admitting to having screwed up before. In flickery’s case, I wouldn’t say I screwed up completely. I am, however going to say that I could have done some things better. In some parts, a lot better.

Creation Date of flickery 1

I started developing flickery 1.0 in early 2008. That’s a long time ago. I’ve become (I hope) a better programmer with a deeper understanding of how things work and are supposed to work. I have (a lot) more experience in Cocoa and a better understanding of UX and UI. I don’t let myself get away with things that work ok but could be better that easily anymore.
This is a good time to start from scratch.

Why start from scratch?

flickery 1 crashlog

They say the way your desk looks, your mind looks. If you apply that to the code base of flickery 1.x, you’d commit me. It is not a pretty sight.
It’s really hard to look at, it’s difficult to follow and understand… it’s a fine mess, to be honest.

So one part of the reason why I started from scratch is that I didn’t see the forest for the trees (the app for the code) anymore.

Additionally, things have changed a lot in OS X since 2008. Which makes version 2.0 a good point to get rid of all the legacy code (individual code paths for OS X Leopard and every iteration that came after) and create clean code for OS X Mavericks and newer. (Mavericks is a no-brainer, it’s a free upgrade, everyone should go and get it.)

There’s blocks, ARC and Objective-C 2.0, just to name few. Going back to flickery 1.0’s code and re-working all the parts might very well have taken just as long (if not longer) as starting anew. It was totally worth it.

New Back-End

ESSflickr classes in flickery 2

Absolutely essential for flickery is it’s communication with flickr’s API. Incidentally, in flickery 1.x, that was the #1 cause of crashes and bugs.
I’m not going to tell you how I did it back then; it’s just too embarrassing.

This time around, I’m not making the same mistakes again (all the while hoping I’m not making any new ones).

Let’s just say, in the old backend, I handed NSDictionaries et.al. back and forth. I didn’t use any XML or JSON parsing, I did it all with NSString’s rangeOfString, etc., not always checking if a range existed before working with it. As I said – embarrassing.

So the first thing I did was switch from getting XML from flickr’s API to JSON and not parsing it myself, but letting the system do it. That’s a huge load off my mind right there.

Secondly, I’m done with handing NSDictionaries, NSArrays, etc., around. The new back-end returns proper objects that contain the necessary info in an easily accessible and understandable way.

There are a few Objective-C wrappers for flickr’s API out there, but I didn’t like any of them. They let you do this (pseudo-code)

NSDictionary *responseDict = [SomeFlickrWrapper executeMethod:@“flickr.photos.search” withParameters:someDictionary];

Aside from also handling OAuth and signing methods, etc., this is all they let you do. So you have to remember the methods, the parameters – it’s really not a wrapper, it’s an access point to the API.

What makes my back-end different is this:

- (ESSflickrGallery *)createGalleryWithTitle:(NSString *)title
description:(NSString *)description
primaryPhoto:(ESSflickrPhoto *)photo
error:(ESSflickrError **)alert;

You call the method and the back-end does all the parameter and method stuff for you. It’s much neater. In this example, you can also see the use of custom classes instead of dictionaries. ESSflickrGallery, ESSflickrPhoto and ESSflickrError are all wrappers for responses from the API, neatly packed up in an easily accessible class.

I guess I could have used one of the available back-ends as a back-end for my back-end, but I figured, if I’m going through the trouble of matching all available flickr-API-methods, I might as well do the OAuth and signing stuff myself as well.

This new back-end doesn’t only make things easier to develop, read and understand, it also improves the app’s stability and performance (mostly because it’s easier to develop, read and understand 😉 ).

As you can imagine, this has taken up the most time up until now. Now comes the fun part of using it to create the next version of the app.

I hope you’ll enjoy this upcoming series of posts about the development of flickery 2.0 and some of the design decisions behind it.

Upcoming in Part 2

In part 2, I’ll talk about uploading to flickr with flickery 2.0. Lots of suggestions will make it into the new version 😉

Thank you for reading. Enjoy your day!

My name is Matt, and I’m the developer of Eternal Storms Software. You can follow me on twitter here.

Read more

NewImage

© Image by Apple, Inc.

OS X Mountain Lion

OS X Mountain Lion has hit the shelves on the Mac App Store and it’s off to a very good start.

So where are the updates for Yoink, ScreenFloat and flickery?

For all of my apps, I’ve submitted updates to the App Store at the beginning of July but they’re still “In Review” or worse, “Waiting for Review”. Here’s the run down of what’s working or not working on OS X Mountain Lion.

Yoink

Yoink works perfectly fine in the currently available version (2.1.1). The upcoming update is a bugfix and minor feature release.
Nothing really changed for Yoink in OS X Mountain Lion that would break the app.

ScreenFloat

ScreenFloat has some minor issues. It works well, but you’ll notice that the “Launch ScreenFloat at Login” checkbox in the preferences is enabled although it shouldn’t be and will crash the app when clicked.

Another issue is with running ScreenFloat with the Dock icon enabled. Floating shots will not follow you to fullscreen apps or spaces. I’m currently looking into that. In the meantime, you can disable the Dock icon and it will work.

flickery

flickery is the most troubling. Not because of OS X Mountain Lion (some minor issues aside – like, the “Nearby” search doesn’t show up – it works well).

The troubling part is that flickr is shutting down their flickrAuth authorization mechanism by July 31st. Yes, that’s very soon and there’s no update out yet for flickery.
I’ve requested an expedited review by Apple for it and I hope they grant it.

If they don’t (and still, if they do, there’s a chance), it might take longer than July 31st for Apple to review the app. What that means is that authorizing flickery to work with your flickr account will not be possible. Also, although flickr doesn’t explicitly state this, it’s inferred that anything done over the flickr API with an old authorization token (an authorization token is what an app receives from flickr when the user authorizes the app to work with their flickr account) will not work anymore. So browsing, uploading, really anything you can do with flickery, will not work.

Please be aware that the upcoming update does include the new OAuth authorization and will make flickery work again with flickr. Until it is reviewed and released by Apple on the App Store, please have a little patience. I know it’s not ideal, but at this point, I’ve done all I can do.

Concluding,

aside from some minor issues with ScreenFloat and flickery, everything basically works on OS X Mountain Lion. For these issues, updates are currently “In Review” or “Waiting for Review” by Apple and should be released soon.

As for flickery, I’ve requested an expedited review and I urge you one more time to consider having a little patience 🙂 Trust me – it troubles me more than anyone.

Thank you for your time,
Take care,

Matt 

[twitter-follow screen_name=’eternalstorms’ show_count=’yes’]

[twitter-follow screen_name=’flickeryapp’ show_count=’yes’]

[twitter-follow screen_name=’screenfloatapp’ show_count=’yes’]

[twitter-follow screen_name=’gimmesometune’ show_count=’yes’]

Read more

Logo

Hi, everyone.

I wanted to try something new, so instead of a blog post, I’ve recorded this ~6 minute podcast for your listening (dis-)pleasure.

Here are the relevant links and time codes in case you want to jump to a specific section:

00:00 – Intro
00:25 – New website (http://www.eternalstorms.at)
00:47 – Yoink (http://www.eternalstorms.at/yoink)
02:46 – ScreenFloat (http://www.screenfloatapp.com)
03:21 – flickery (http://www.flickeryapp.com)
04:06 – GimmeSomeTune (http://www.gimmesometune.com)
05:09 – New apps (http://www.eternalstorms.at)
05:39 – Outro

I hope you enjoy it 🙂

Podcast-download (best viewed in QuickTime Player or iTunes for chapter selection)

Take care,
Matt

[twitter-follow screen_name=’eternalstorms’ show_count=’yes’]

[twitter-follow screen_name=’flickeryapp’ show_count=’yes’]

[twitter-follow screen_name=’screenfloatapp’ show_count=’yes’]

[twitter-follow screen_name=’gimmesometune’ show_count=’yes’]

Read more

As the release of OS X Lion comes closer and closer, you’re maybe wondering if Eternal Storms Software is ready for the new cat.

Yes, all my software available on the Mac App Store will be ready for Lion.

NewImage
flickery

flickery is, in its current version (1.9.24), not ready for Lion, but the update to make it compatible with it (1.9.25) is in review, so once it’s reviewed, it will be ready for Lion.

Screenfloat 3  dragged
ScreenFloat

ScreenFloat is ready for Lion as of version 1.1.1! I’ve tested every aspect of the app and everything seems to work just as expected.

GimmeSomeTune 3  dragged
GimmeSomeTune

As you might know, GimmeSomeTune is not yet available, but I wanted to let you know that I’m writing it for Mac OS X Snow Leopard 10.6 and OS X Lion. I’m constantly booting into Lion to test if what I’m working on is running on Lion just as well as on Snow Leopard.

 

A good website to keep track of software that is (or is not) compatible with Lion is roaringapps, it gives you a great overview of lots of software and its status regarding Lion.

Take care,
Matthias

Read more