Warning, today’s blog update is mainly geared towards programmers. You have been warned:
I’ve been programming now for just over 10 years. Just today I had an epiphany, on the 4 stages of programming:
Stage 1 – Beginner
Everybody starts here. Your main goal is to get the code to compile. Every time it does you do a little jig. Then you struggle, and Google, and struggle until finally the code does what it’s meant to do…oh also, it compiles! If there happens to be bugs in what you did, you add more if statements and conditional checks, since that’s what they are for right? You can recognise code written by Stage 1 programmers because it’s generally in massive methods, with more nested ifs than yo mamma.
Stage 2 – Amateur
At this level you no longer struggle to get your code to compile. You now start splitting your code up into logical methods and classes and you start playing with some of the more advanced features of your chosen language. You look back at Stage 1 of your coding and laugh at how stupid you once were.
Stage 3 – Perceived Master
At this level you now feel you know everything in and out. You create an abstraction for almost anything that moves, you use interfaces, if your language supports it you’re rocking the generics. Every class you create comes from a factory, why you’ve even got factories that create your factories. Your code is so loosely coupled it hurts. Your unit tests have unit tests. You think your code is the bees knees, the ducks nuts, a shining example of how to do things. It’s so well architected that any minute you expect I.M. Pei to come and congratulate you on it. You look back at Stage 2 of your coding and laugh at how stupid you once were.
Stage 4 – Face Palm
At this level you’ve finally realised that you’ve been an idiot all along. You now write simple, easy to read code. When people see it they say things like ‘huh. makes sense. simple really’. You don’t feel the need to prove yourself, or to make super fancy constructs anymore. You shy away from using every available language feature just because you can, and stick to just making stuff work. You realise that if it makes the code simpler and cuts development time there’s no great harm in making assumptions like what O/S you run on, and what database you use. You even learn a few new languages, recognising that every language has something different to offer. You look back at most things you’ve done in the past and laugh at how stupid you once were, and you will again in 6 months time.
So which stage are you currently at? Anecdotally I find most Java programmers get stuck at Level 3 forever 😉
Up until recently we’ve had a todo list much longer than any human arms I’ve ever seen. Every week would see us complete one item only to add two more. Todo lists you see, often follow a very accelerated version of Moore’s Law. But we’ve got a secret weapon now: the time to do things (having gone out on our own almost a month ago) and the motivation to (in a very small way) set the world on fire.
So today we’d like to show off something that’s been on our todo list since we first released Pocket Weather AU HD for the iPad. Version 1.2 to be precise.
Yes indeedy, you can get your tides, state warnings, detailed forecasts, icons in landscape view and so much more in this new version.
At this point we’re providing an intermission for those who don’t care how this stuff is built. Don’t feel bad, the lights are on, we’ll clean up all the popcorn you’ve managed to spill everywhere. Last chance!
Now let’s talk about just why this release took so long. We promised that when we went into this full time we’d no longer accept compromise, and we meant it. This version was ‘ready to go to Apple’ 3 weeks ago. In the past it would have been myself, at 1am on my couch looking at things and going ‘close enough’ and pressing the submit to iTunes button. When you’re tired anything that’s working starts to look good. Since then we’ve rewritten the warnings feature twice, the tides three times and played with two different ways of showing you detailed forecasts.
After each re-write I’d hand the iPad over to Phil and ask him for feedback. Phil was brutal about everything he didn’t like, which initially made me very defensive, but I’d go and do it because I knew he was right. It was jarring, I wasn’t used to reworking features that worked, and were bug free, with the sole justification being ‘we can do better’. It was also hard to break out of the “we don’t have time for that” mould from our former lives as out of hours developers. After each iteration though we both knew we’d created a better product. Things you’ll never see like that the initial tides screen having left and right buttons (instead of swipe). Then there was the original detailed forecast design that had the day panels sliding left and right to show more or less content. Don’t even get us started the original warnings screen which had resizable panels of all things. In some cases we re-wrote it because we knew we’d taken shortcuts, other times (like with the slidey detailed forecast panels) we realised we’d gone too far the other way and made something a lot fancier and less intuitive than it could have been. In the end we finally had a version that Phil & I approved of, and one which was much better for the process we’d gone through.
There’s three obvious lessons from all of the above:
- Getting things right often means getting things wrong, but being willing to change them.
- When people look at a final product and estimate the effort required, they’ve left out the biggest component, all the rework and tweaking that led to that final version (common example from stack overflow).
- Pocket Weather AU HD is awesome…have you bought it yet?!
After a lot of hard work in Camp Shifty our new website is ready to roll: http://www.shiftyjelly.com.au/. Why not head over and check it out?
The next few weeks will see a refresh of a lot of our products, starting with Pocket Weather AU HD. Here’s a small sneak peak of the new tides area:
There are times in everyones lives, where you stand at a fork in the road, looking at two differing directions, and having to choose one. ShiftyJelly found itself at just such a point a month or so ago. We have been in the App Store now for two years, working on our apps in our ‘spare time’ while all working full time jobs. The problem is that we don’t really have spare time, that’s just a euphemism for time that we really want to be spending with our families, friends and having fun. Sure we’ve had fun doing this, but it was really starting to wear us down. The last few releases of our products have contained some fairly obvious bugs and it was getting harder and harder to maintain the motivation to open the laptop at 11pm at night and start coding. We are insanely passionate about quality, so this was really starting to get to us.
Introduction aside, we stood at a fork. In one direction was either selling or shutting down ShiftyJelly, in the other was resigning from our full time jobs and taking the leap into doing this full time. In truth there was only one option, but it was not an easy one. To those of you who think we sold out or were going to shut down, shame on you! We resigned our jobs, and it’s full steam ahead!
So what does this mean? Initially it means that we’ll be busy looking for office space, sorting out legal documents, registering various bits and pieces, so we’ll be distracted for a little while. Once the transition period is over though, it means that ShiftyJelly is about to bring it’s A game. No more late night rushed releases, no more cutting corners, just pure unadulterated awesomeness. If you’re one of our competitors, consider yourself on notice. If you’re one of the many companies we turned project work down for, we will now consider it. Best of all, if you’re one of the people that has purchased one of our applications, or supported us, we’re finally going to be able to devote 100% of our time and energy into making products that blow your mind. We’ll also be updating all of our existing products to finally make them what we’ve always wanted them to be, not just what we had time for them to be.
We’ll be keeping you up to date over the next few weeks as we make the transition, but for now we leave you with this teaser image. Who could that be in the shadows…
We’ve had a lot of email recently. Probably because some genius thought it would be a good idea to start putting email us buttons into all of our applications. While it has increased our workload a bit, we’d prefer that to people just getting frustrated, deleting our application then telling all their friends how bad it is. The emails vary from ones that are quite funny to ones that are quite angry. I’d estimate that 9 times out of 10 the answer is very simple, and people normally walk away (assuming that’s what you do after reading an email) very happy. It’s funny, sometimes it almost seems that people are happier to get a buggy application that you then fix (after they find the bug) than to receive a perfect, bug free application. In quite possibly the longest segue in ever, that’s what I want to talk about: Quality, Features and how shiftyjelly applications are made. Possibly unicorns and rainbows too, I haven’t decided.
Most people assume that we’re some large-ish corporation, which I’d like to put down to the amazing quality of our applications, and the fact that ‘shiftyjelly’ is a very serious business like company name. I can see the latest IBM board meeting: “Who did we outsource all our IT work this year Bob?”. “Why shiftyjelly Frank, who else? Dependable chaps the lot of them.”. In truth a typical day in the life of a shiftyjelly goes something like this (there are 3-4 of us btw, depending on who’s counting and how, you can read more about that here):
- Wake up
- Eat breakfast
- Go to our full time jobs (which have nothing to do with shiftjelly)
- Come home
- Eat dinner
- Be social
- Put the kids/wife/dogs to bed
- Decide whether to code like a mad monkey or just crash into bed
There’s a point here right? If you’re still reading my guess is that’s what you’re wondering. Well the point is this: we’re just 3-4 part timers working in the wee hours from our couches. It might sound more glamorous if I told you my couch is leather, but really, sometimes it’s just hard work. We make a little money, ’tis true. When split 3-4 ways it’s not a lot though, which you can probably guess by the fact that we still all work full time elsewhere. But we don’t do this for the money. If we did we would have been much better off working the graveyard shift at a service station (gas station for the Americans out there). It would pay more, and I hear the employee discounts are really awesome. No we do this because we love it. Not always, not every day, but we really do love it. Some days we hate it, we chase down excruciating painful bugs for hours on end, sometimes in circles. Some nights you end up giving up and just reverting all the changes you made (thank goodness for source control). But most times it just seems cool. We’re making applications that people use every day. Roofers, tradies, fishermen, office workers, cyclists…even grandma. We’re also motivated by our competitors, perhaps because we’re all alpha males, but every time one of them creeps above us in the charts the coding nights become more frantic, the features get more elaborate, the whole virtual office (we’re separated by many kilometres) hums. All this just for the pure fact that we refuse to be beaten.
So on to the point (yes I know I promised it paragraphs ago): we love you guys, we really do. We love hearing from you. It pains us that we cannot add features faster than we do, but we’re trying. Some days we feel like we’re working 2 jobs. So yes we’re upgrading all our apps to support that fancy new iPhone 4 display, yes we’ll keep adding features to our new iPad versions, yes we’ll never forget about the old iPhone apps, yes we’ll fix all those little annoying bugs that slip through our 2am testing…but it will take time. And until someone comes along and hands us a million dollars (I know, we’re cheap, right?) we’ll probably stay at our day jobs, and it will always take time.
A wise man once said ‘never pen a word in anger’, he was going to say more, but I punched him in the face. Years later I realised his advice was straight and true, unlike his nose. Jokes aside I thought I’d give a quick update on the My Frame situation, and also what our plans are for the future. Since some people are confused by the hierarchy of Shiftyjelly, Groundhog Software, and myself, allow me to explain. I work at Groundhog Software as my full time job, we do custom software solutions for almost any environment (be it Enterprise Java, SOA integration or iPhone applications). Shiftyjelly is just a part time company I run with 3 other mates (a programmer and 2 designers) That history lesson is important in understanding that each of us is going to respond to Apple differently. So My Frame and Tennis Stats are Groundhog Software products, while things like Pocket Weather HD were made by Shiftyjelly.
In terms of My Frame Apple has now contacted Groundhog via email and we are setting up a phone call so we can discuss the situation and come to an amicable conclusion. While that doesn’t excuse them for how they treated us, we are glad to see that they are taking steps to address it, and they’ve even allowed us to submit a modified version of My Frame back to the store. We hope that they’ll give us enough clear guidance so that we can develop future version of My Frame without fear of wasting valuable time and effort. Only time will tell, but these are certainly some positive steps.
In terms of Shiftyjelly our Pocket Weather AU HD product skyrocketed up to be the #1 paid app here in the Australian app store. That’s not us bragging, but it’s an important consideration in what we’re going to do going forward. I freely admit I considered pulling all of our Shiftyjelly applications from the store out of protest, and throwing in the towel. Having taken a few days to cool down though, I realised that wouldn’t be fair to all our customers who have supported us over the years by buying our products, and helping us improve them. You have to go where your customers are, and it would be naive of us to think that anything we did would convince many of them to switch their phones. In all fairness we make money off those products as well, which while it’s not our primary concern or goal, certainly helps when you have 2 kids in nappies. So we’re not changing our development strategy, but we have made one key decision: we are going to try our best to bring Pocket Weather AU to the Android platform. Partly out of protest, but also because Android is growing (albeit slowly) here in Australia. We’re not going to make anywhere near the money we do on our iPhone product (we may not even pay back the costs of buying development handsets) but it’s something we feel is the right thing to do. There will be some hurdles to overcome, like the fact that Google currently doesn’t allow Australians to sell paid apps in it’s store, and the fact that the Android handset market is a lot more fragmented, but we don’t care, we’re going to try it anyway 🙂
So in short all our iPhone/iPad customers can relax, we’re not leaving you, and all those who have emailed us about Android we are listening, and hope to bring you something this year. If you’re an Australian Android user, how about helping us out by participating in this forum: http://forums.whirlpool.net.au/forum-replies.cfm?t=1432091
Update 3 June 2010: To those of you reading this post for the first time, it’s over month old. Pointing out the irony of it to me may seem novel to you, but it’s obvious. I even refer to it myself in the post about Apple removing our application. I leave it here as a piece of history, this is how I felt at the time. Those of you that want to argue with my former self can build a time machine.
As you were:
I received an email in my inbox from someone reporting on Apple and their Policies. They were basically asking about how I feel about Apple being so closed and evil…here was my response:
If there’s one thing I like doing, it’s commenting on Apple’s approval process. I have always been amused by the amount of media hype and attention that goes with it, and how people just assume that we developers must be such an oppressed people, and isn’t it terrible dealing with Apple? Do we have to check our souls at the door? How can we possible approve of and work for such a tyrannical regime? Even the questions in your email are, to be fair, quite leading.
My high level summary would be: I love the app store and the amazing hassle-free distribution it provides and I only really have a few niggling concerns with how Apple has dealt with us, as developers.
So allow me to start with my concerns. My one biggest concern is that it’s never easy having a middle man between you and your customer. If you have a critical bug in your code, it can take days (or longer) for Apple to approve, and all the while your customers are becoming angry and frustrated because they feel you’re not acting urgently on a issue that affects them. My other concern is that there’s no one to call if things go bad, you send email to an address and just hope that one day you might receive a response. So let’s say they closed my account for example, who would I call? Where would I call…I would just send emails into the void. My only other concern is that sometimes Apple let’s through things in one review, and picks them up in later ones. That can be annoying, but they are people after all.
But more importantly, let me cover the things that don’t concern me. I don’t think Apple is a ‘prude’ and I was all for removing all the spam (I love how the media referred to them as porn) apps in the store. There were developers releasing app, after app, after app with nothing but pictures of bikini clad women in them. One such developer had over 100 versions of the same thing. I’m not on some moral crusade against porn, what you do in the privacy of your own home is your own business. Safari will get all you all the porn you could ever dream of, do I want it blocked? No. If Apple runs a retail store and doesn’t want to sell bikini’s in there, I say fine, I agree with them that it ruins the look of their store. Imagine if you’re a woman, and you browse the lifestyle section, and all you see are bikini apps in there, I don’t think you’re going to be too impressed. I think trying to turn this into an Apple is restricting your freedom argument is wrong. It’s like Stephen Conroy saying we should censor the internet and if you don’t agree you are for child porn. I’m not for restricting freedom, any more than I’m in favour of child porn, but I think Apple should be free to reject applications from coming into the store in the same way I believe the Australian government should never implement mandatory filtering.
I don’t think there’s that much that is ‘murky’ about their approval process, every time our apps have been rejected it has been for a reason that is documented in either an interface guidelines document, or some other part of their documentation. In my experience (and that’s all I can comment on) it’s extremely well documented as to what you can and can’t do. I’ve seen lots of complaints from developers who were rejected for using private APIs for example, as if they stumbled into them and didn’t know better. Private APIs are something you have to hunt for, you have to dig through header files and classes that are not meant for development, looking for a call to make that does what you want. They aren’t documented and you have to try pretty darn hard to find them. They are private for a reason, because Apple may change them at any time, and there’s no way you can call them by accident. The rules clearly state that you can’t call these APIs.
Perhaps I’m in the minority, but other developers I’ve talked to all agree, the app store is an unprecedented way for developers to distribute applications worldwide. There has never been anything like it in the history of mobile development, and I know, I used to develop for Pocket PC on Windows…and…well let’s not even go there. Apple’s tools, development environment and platform stability are second to none. For me it’s a pleasure to develop for their platform. It doesn’t surprise me that there aren’t more headlines that read “Apple’s Development Environment a Joy to Use” & “Apple Offers Developers Unprecedented Ease of Deployment Worldwide”, because as you well know, calling Apple ‘Evil’ sells 😉
So to sum up, I love being an Apple developer, and I think all the hype about them being somehow ‘Evil’ is just that, hype. If you consider their actions as a company trying to ensure (where possible) that their App Store is a great place to get quality apps, then everything the’ve done makes perfect sense. Sure you can say they did it to be ‘Evil’ and ‘restrict freedom’ but that’s a much harder sell to me. The most obvious reason, while not always headline worthy, is often the most likely one to be true. Have they made mistakes? Sure. But they are making clear and obvious efforts to correct those mistakes. I’ve developed for the App Store since almost day 1, and Apple has been constantly improving things that most people would never even see.
Sorry for the long email, happy to answer any more questions you may have 🙂
It’s been a few days now since the legendary Anthony Aagius returned from the promised land with our iPad in hand. The decision to buy an iPad was really made for us months ago. There was a new Apple platform coming, we felt it was going to be huge, and we had to get on board. So what do we think of it after 3 days of fondling it? We’re going to go one better than David Pogue and present it from three perspectives!
There is a lot to like here: it’s the same Cocoa Touch framework, the same Xcode development environment, the same testing and distribution model. Sure there are new controls and paradigms to learn, but a lot of it is familiar. What Apple did with the UIPopoverController is nothing short of amazing, they allowed us to reuse a lot of the iPhone paradigms in a new way, without having to rework a lot of code.It also has 5x as many pixels as an iPhone, meaning we can do so much more now with our apps. After playing with the iPad for a few days, everything we do on the iPhone now feels cramped and limited, having all that extra space is amazing!
It’s not all roses though, the big thing that stands out for us is universal applications. I wasn’t involved in OS X development when Apple went with universal binaries for PowerPC and Intel but that seemed to go very smoothly. Apple made it sound like you just checked a box, and out came universal apps. Apple is saying the same thing of having an app that services both the iPad and iPhone, but we’re just not buying it. For starters unless you just want to upscale your UI you would need two completely different user interface code bases. Next you’d need all sorts of if else statements to cater for which particular view to launch when. Sure you may be able to re-use an underlying data layer but cramming all that universal code into one application strikes us as a maintenance nightmare. A lot of other developers we’ve spoke to seem to agree.
Sales wise it’s hard to tell where this platform will go. Our first application Pocket Weather World HD has been selling reasonably well considering the amount of iPads that have been sold to date, but it has a long way to go if we are ever to recover the development effort we put in. Only time will tell, but we really think this will be as big (if not bigger) than the iPhone.
As Apple Fanboys
The device truly is magical. We find ourselves arguing with people on forums who keep spouting “no flash, no camera, no multitasking”. Until you touch this device you just won’t get it. None of those things matter in the slightest. Flash is dead, a camera while nice presents some challenges (ala shooting straight up your nose) the thing does multitask (even more so when OS 4.0 comes out). We’ve started to think it really was washed in unicorn tears. Really. Truly. It’s fast, it’s super intuitive it feels right to hold, and the screen is amazing. It’s basically just a piece of glass that you touch, and magic comes out. It’s not a laptop, it’s not a giant iPod Touch so stop thinking of it like that, it’s a paradigm shift in mobile computing. Just like any religious fanatic will tell you of their belief, you won’t understand it until you experience it. You may think there’s no room for it in your life, perhaps you already have an iPhone and a Macbook. But once you touch this magical device, your wallet, home and life will make room for it.
As My Grandparents:
They really want it. They find the mouse annoying. They find using a computer in a seperate room uncomfortable. They are sick of plugging in a digital camera and not knowing how to copy photos from it. They have trouble reading the text on a computer screen. They understand how to tap things, and they don’t want to feel that sense of dread that every time they click something they might break the entire computer. Most of all I’m sick of going over every week and fixing their computer. Sure they use Windows XP, and would have less problems on OS X, but let’s face it, they’d still have problems. No matter how much the fanboy in me denies it OS X is every bit as hard for an older person to pick up as Windows is. Sure it behaves better, but that doesn’t make it intuitive.
So our conclusion? One word. Magical.
In todays update we want to focus on some less sexy, but nonetheless very cool features. The main one is our new warnings system. Pocket Weather AU has always handled local warnings (by placing a red icon on the location which you could tap to get more details), but has been lacking in the state and regional warnings department. Well in 2.1 we aim to rectify that, behold the new state warnings screen:
A few quick things to note. You’ll get the state of your topmost location (or the location you’ve currently got selected) as the first one. From there you’ll notice that we have different icons for flood, wind, fire and general warnings. Let’s drill down into a cyclone warning:
Now here’s where it starts to get really cool. Philip (our back end magician) spent a lot of time reformatting all the Bureau of Meteorology warnings so that they would look great on your iPhone (which was no easy task), and they certainly do. So where some (like our competitors) would link you straight to the BOM Warnings page, we of course go the extra step and try to make the experience as painless as possible. We do that for normal warnings as well:
This feature has been a long time coming, and we intend to keep tweaking and improving it based on your feedback. We hope that people on the east coast, and those in rural areas really appreciate the level of effort that Philip has gone through to make this a reality. Finally it’s worth pointing out that you can choose to get the warnings for your state pushed to you, as soon as they are issued (or updated) by the BOM. Now if that’s not cool we don’t know what is 😉
The other thing we’ve done with release 2.1 is really focus on all those little things that have been annoying us for ages. Here is one example: in the current version you’ve always been able to edit your location and give it a custom name, as well as choose custom information for it. This was always hidden, and I suspect 95% of people never knew it existed. So in 2.1 we expose this function straight from the add screen, by tapping the ‘Custom Location’ option:
From there you’ll get a screen letting you name your location, and picking all the individual attributes for it. This is for the hard core Bureau of Meteorology fans only, but we know you’re out there!
We could go one about all the various little bugs we’ve fixed (of which there are almost 30 according to our bug tracking system), but we don’t want to bore you with that. We’ll leave you with one final image. Typically when you’ve had problems with Pocket Weather (which are few and far between) you’d email us and we’d go through a process of elimination until we narrowed it down and fixed it for you. In the spirit of helping you out we’ve added a new feature straight to the iPhone app itself:
This gives you the option of attaching a debugging file that will help us get to the potential problem much faster 🙂
Pocket Weather AU 2.1, Slicker, Smoother, Easier, Better 🙂
Yesterday we talked about our exciting new product Time BOM, which if you haven’t bought yet you really should! Today we want to cover some features that will be in Pocket Weather 2.1. Version 2.1 has a lot of new things in it, and in this post we’ll cover the first half of them, being all visual.
First up is the new icon:
And of course there’s a new skin to go with it (we call it ‘Shiny’):
We’ve also cleaned up the way you navigate around pocket weather, after receiving so many emails from people who couldn’t find things in the application, we knew we had to do better. So when you click the button in the top right you now get this:
As long time Pocket Weather users will notice we’ve now given prominence to the tides, synoptic chart and national radars. We also have two new features on there: History & Warnings. We’ll talk about warnings in detail tomorrow, but today we’re proud to show you the history feature:
What it gives you is a history of weather conditions over the last 3-4 days, either in graph or table form. We think it’s very cool to be able to wow your friends with the knowledge that the highest temperature today was 35.6 at 2.30pm. We also know a lot of weather buffs will love expounding the profoundness of the occasions when apparent temperature is higher than air temperature 😉
Tomorrow we’ll talk more about the zillions of bugs we’ve squished, and our new warnings section, but we hope this post gets you in the mood for Pocket Weather. We hope to release the new version this weekend!