Categories
Apple Design Development iOS iPad iPhone

iOS 7 Lowers the Bar

iOS 7

A gift for you!If you’re an iPhone or iPad user Apple had a shiny new gift for you this week; iOS 7. I know, I know, it’s a bit of a jolt. I won’t lie. I hated it for a few days, but it’s beginning to grow on me. I’ve heard this time and again “Give it a few days.” I’ve given it a few days and it still seems a bit stark, but overall I’m happy with it. My trusty iPhone 4 seems much faster than it did with iOS 6. Bonus.

Benefit to Developers

I’ve written a few iOS apps over the last few years. Some have been lovingly designed by professional designers, others, like our own RxCalc were kept intentionally simple. Why? Truth be told Jay and I don’t possess the ability to make beautiful imagery for our app, so the design has to be simple. We developed our app using plain old UIKit, it works really well, is fast, and the binary is tiny.

With iOS 7 the bar has been lowered. A generic looking application looked fresh when iOS hit the streets. There were developers that created their own style and look, and, in turn, third party developers began to define the look of the OS, not Apple. Think about developers like Iconfactory, Tapbots, and Path. They all introduced applications that took the look and feel of applications way beyond standard UIKit, and that’s great. They stood on the shoulders of giants and moved the bar higher so the rest of the app ecosystem had something to reach for.

Third party developers created Pull to Refresh, the Hamburger and the Basement, and alternatives to UITabBar. All were very good innovations and gave us beautiful, very functional, applications. But there is a downside.

If you go against the Apple playbook, which isn’t a bad thing, you may end up creating something that doesn’t feel at home on a future release of an OS. Since iOS 7 shipped I’ve seen numerous folks comment about how outdated forward thinking and innovative applications like Tweetbot look.

I’m sure we’ll see an update for Tweetbot soon, but the point is, if your app has a completely custom UI it may take a lot of time and effort to make it look right in iOS 7.

Back to RxCalc and our choice to use UIKit, without custom design elements. Here’s how RxCalc looks on iOS 6 and prior, and it looks this what on iOS 7 before being recompiled:

RxCalc, UIKit for iOS 6 and older.

It’s not flashy, but it looks similar to Apple’s own Settings app, or Mail, on iOS 6.

Making an app new again

If you created a simple UIKit application your road to iOS 7 is simple. Most of the hard work has been done. You can recompile and your application looks new again.

Here’s what RxCalc looks likes when it’s recompiled with the iOS 7 SDK. No additional work, just a simple rebuild.

RxCalc, UIKit for iOS 6 and older.

Can it be spruced up a bet? Sure it can, but I can put this in the store today and it will look like it belongs.

That’s why I tweeted this a few days back:

It is super easy to get a fresh UI if you stuck to generic UIKit.

Reset

The bar has been reset, time for a new generation of user interface innovation.

Thanks, Apple.

Categories
Development Jobs Life

Re: Senior Development Engineer

[redacted],

As much as I love the idea of this, I’m just not the right guy for the job. I just don’t have the energy to stand in front of a whiteboard an answer code questions for eight hours straight.

I love [redacted], I really do, and I wish you all the best in your search for a developer to fill this position.

Rob

Categories
Development Indie iOS Objective-C

Better JSON to Object Serialization

Duct Tape, fixer of all things!Krzysztof ZabÅ‚ocki: “I don’t like passing around JSON so I write parsing on top of native objects like NSDictionary/NSArray. If you get data as JSON just write a simple category that transforms JSON to native objects using NSJSONSerialization.”

Here’s a nice hunk of code that will save you some time when you write your next iOS App that talks to a web service. I don’t like passing around NSArray or NSDictionary either, or even worse the raw JSON you get back from a service. I’ve written a few times about transforming JSON into an Object, and it’s not hard to do, but it’s so “boilerplate” it feels like a waste of time. Time you could use elsewhere. Krzysztof provides a nice way to get past all that boilerplate code and get automagic serialization of JSON to Object. It’s definitely worth a look and worth understanding the pattern.

Categories
Apple Development iOS

Apple Developer Center Breach

Full text of the email every registered Apple Developer received.

“Apple Developer Website Update

Last Thursday, an intruder attempted to secure personal information of our registered developers from our developer website. Sensitive personal information was encrypted and cannot be accessed, however, we have not been able to rule out the possibility that some developers’ names, mailing addresses, and/or email addresses may have been accessed. In the spirit of transparency, we want to inform you of the issue. We took the site down immediately on Thursday and have been working around the clock since then.

In order to prevent a security threat like this from happening again, we’re completely overhauling our developer systems, updating our server software, and rebuilding our entire database. We apologize for the significant inconvenience that our downtime has caused you and we expect to have the developer website up again soon.”

I know people love a good scandal, and being breached is a decent story, but nothing sensitive was compromised. It’s a major bummer they were hacked, but as far as the developer community is aware no app keys or credentials were stolen. No, our apps won’t have to be resigned and resubmitted.

Categories
#twitter Development Social

Origins of the word Tweet

Ollie! The Twitterrific BirdCraig Hockenberry: “Work was proceeding at a very fast pace during the first week of January 2007. Beta releases were frequent and widely distributed. Fortunately, the folks at Twitter were using our app with it’s snazzy new bird icon. One of our beta testers was an API engineer named Blaine Cook who sent me the following email:”

The word “tweet” was suggested by a Twitter engineer, but not used by Twitter for a very long time. The word was first used in Twitterrific. What a groundbreaking Twitter client. So much so people still think Ollie is the official Twitter logo. Whoops.

Categories
Development

Eating the World

Duct Tape, fixer of all things!Slashdot: “But love it or hate it, the one thing a modern developer cannot do is ignore JavaScript. It is slowly but surely eating your world.”

Truer words were never spoken.

Categories
Development

Code in the Browser

Watch out! It's a blog fly!Yesterday I was lamenting the lack of good choice for coding in the browser. I know, I know, I gripe too much about it. I can hear folks now “Just shut your pie hole and learn JavaScript, like everyone else.” That is good advice, I should learn JavaScript, but I digress.

The mere mention of it started a conversation on Twitter, which lead me to start thinking about a weblog post, which lead me to a search for “CLI in the browser” or something like that, which landed this great post by Miguel de Icaza.

“ECMA CLI would have given the web both strongly typed and loosely typed programming languages. It would have given developers a choice between performance and scriptability. A programming language choice (use the right tool for the right job) and would have in general made web pages faster just by moving performance sensitive code to strongly typed languages.”

This is what I’m after. Choice and closer to native performance. JavaScript could be one of the supported languages, and should be for that matter, but in the end it would be really great to have a language agnostic runtime.

I’d compare the state of coding in the browser to coding 20+ years ago. At that time everyone was using C because it was the most portable way to get your code on other OS’es. I find it a bit depressing browsers haven’t moved past JavaScript. Can you imagine only being able to code in C on your favorite platform? Of course not, that’s preposterous.

It will be interesting to watch browsers mature into a layer that completely replaces the OS for services. Until then, we’ll have to make due with what we have.

Here’s the Twitter conversation that lead to this post (sorry, the Twitter embed code only grabbed the last bit of the conversation, not sure how to get it all.):

Categories
Apple Development iOS

WWDC 2013, it’s not all bad

Well, it happened, Apple sold 5000 WWDC tickets in 90-seconds. Amazing. Of course it wasn’t all roses for everyone. Some people saw errors after thinking they got a ticket, others instantly got the “Sorry, we’re sold out message.” That’s not the story.

The story, at least to me, is the few developers who believe they are somehow more deserving a ticket than others. That’s a bunch of hogwash. No one developer is more deserving of a ticket than any other. This is how things should work. First come, first served. If you didn’t score a ticket, try again next year. I was able to attend WWDC 2011, Steve Jobs final keynote. I understand why developers really want to attend. It’s a chance for us to hear about new and exciting things before anyone else. We also get to hang out with friends and talk to other developers. That’s probably the most important part of the week; hanging out with friends.

I’ve read too many gripes that say it was their chance to meet others and hang out, and now that opportunity is gone. Why is it gone? Come to California that week and go to an alternative event if it really is that important to you. What’s stopping you? Nothing but you. I get why it’s important to connect with other developers and have dinner and a few beers. It’s a time to unwind, let your hair down, as they say. In 2011 I was able to hang out with a longtime friend. We hadn’t seen each other for ten years. It was a great time.

Alternative

Yes, there is a great alternative to WWDC that same week. You can attend AltWWDC, and it’s free!

If you missed getting a ticket and believe its important to get together with fellow Apple Developers you have a place to go.

Hopefully I’ll be able to attend at least one day, maybe two. If I do make it, I hope to make some new friends.

Maybe I’ll see you there?

Categories
Development

Just Ship It

Will write C/C++ for foodMike Jurewitz: “I have watched too many developers over the years focus on the wrong things in their products. Some endlessly add feature upon feature and take so long to ship that their users have long since moved on. Others endlessly rework a feature in pursuit of some nebulous technical excellence that isn’t necessary and whose pursuit certainly doesn’t pay the bills. And others find themselves constantly moving the target they’re trying to hit, redefining the features, UI, or problem-space of their product in a continual reaction to the world around them. These are easy traps to fall into. After all, we’re all human and most of us are making it up as we go.”

Good advice. Maybe people don’t teach this anymore? You can’t have a 2.0 without ever having a 1.0, right. Iterate, iterate, iterate, but ship between those iterations. Some people have to find the perfect solution for everything, or they waste their time rewriting code that works because they don’t like the style, or believe their way is better. There are, of course, good reasons for rewriting code, but the reasons I just mentioned aren’t among them.

I’m guilty of doing this stuff myself, when I was younger. What I’d end up with is code the way I liked it, but offered the same functionality. No net gain. I’ve learned not to do this. I now move forward and tweak things as needed for the next release. Yes, it must be solid and usable, but it doesn’t have to be perfect in every way.

I’m not the greatest developer in the world. I’m slow and my code has never been the prettiest in the world, but it’s in use by well over 10 million people worldwide, and that’s a pretty darned good feeling.

So, my advice to you is, find a nice minimum set of functionality, make it usable, make it solid, and ship it. That will let you move forward. It will afford you the opportunity to create a 2.0.

Categories
Development

JavaScript: Embrace teh suck

Duct Tape, fixer of all things!Deputy Joseph: “So if you were one of those who got turned away by the old JavaScript, I urge you to give the new boy a chance. Try doing some server programming in NodeJS or some database operations in MongoDB. Perhaps you may not get smitten, but I trust that it would trigger an epiphany nonetheless.”

Even though JavaScript is an ugly, nasty, hack, it’s probably the most widely used scripting language in the world. Browser support is now ubiquitous and it’s the only way to script the browser as far as I’m aware? I think it’s fair to say JavaScript is the duct tape of the Internet. It’s not pretty, but it’ll do in a pinch.

I’d be interested to see how NodeJS scales on a web scale project, you know, something like Twitter, Facebook, or Instagram. Is it good enough for that? It’s interpreted so I don’t see why it couldn’t be used for that. Folks love PHP, Python, and Ruby for web back ends and they’re interpreted.

I’ve had my eye of CoffeeScript for a while. It removes some of the JavaScript suck and the folks behind it are serious about its continued quality and success. The only downside? In the end it has to emit JavaScript. The only reason that’s bad is it could emit something incorrect, but hey, compilers have to emit code and we trust them, right?

People believe JavaScript is the future of development. I hope not. I hope it motivates people to make something better.

In the meantime we have to embrace the suck.