I recently started a new project that requires a considerable amount of form entry on the iPad. The notion of using IB to mock up the UI seemed daunting, so I decided to look for prototyping alternatives. After an hour of digging around on the net and reading reviews I settled on App Cooker.
First impressions are important. If I don't get comfortable with a tool in the first 30 minutes of use then I probably never will. App Cooker did not disappoint. In no time I felt like an old pro. Building mockups is easy and intuitive. App Cooker provides easy access to most of your iOS widgets and views. It's easy to chain pages together so users can step through your prototype and see how the app should flow. The demo mode is simple yet effective.
App Cooker provides a lot of functionality beyond just prototyping that I have not had a chance to use. But even without those features it's a great tool .. one that I can easily recommend.
Showing posts with label programming. Show all posts
Showing posts with label programming. Show all posts
Thursday, March 22, 2012
Friday, January 9, 2009
Java Serialization and Sockets
I remember working with sockets years ago and thinking how much work was involved to get simple messages over the pipe. Even though I was doing the sockets programming in Java, and Java greatly simplifies the actual socket connections, it was still intimidating designing a communications library and breaking everything up into bit streams.
Since then I've tried a number of high level communications schemes like CORBA, RMI, and web services. Let's face it, CORBA was just painful. The price of getting that high level connection was just too high. RMI was big improvement. With surprisingly little effort you could send fully instantiated objects over the pipe .. as long as the pipe didn't include any firewalls. Web services work great with firewalls, but you have to jump through hoops to maintain state. In case you haven't noticed, state is a pretty useful thing to have. Working in a stateless environment seems to be a step back into the dark ages. Of course, I can implement my own session state, but wasn't the initial goal to make things easier?
Recently I've been working with sockets again. But this time I've thrown Java serialization into the mix. This allows me to serialize high level Java objects and send them over the pipe without writing all the usual code to break the object down into bits and then recreate it on the other end. Sure, you still have to develop a communication language for the sockets, but far fewer commands are required, as everything is essentially just treated as a single piece of data.
While using sockets may seem like a step backwards, it is the single solution that provides both inherent statefulness and simple firewall traversal. I certainly won't be advocating sockets for everything, but if you find yourself working too hard just to get your network layer functioning maybe you should consider it.
Thursday, April 10, 2008
3000 Lines of Code a Day
I've been in a productive spell lately. Ok, maybe 3000 lines of code a day is an exaggeration. But I have definitely been on a roll. Usually I code small modules and test along the way. But since the project I've been working on is largely distributed that would have required too much additional work. So I coded the entire thing and now begin the testing. Somewhere along the way I picked up an uncanny ability to write large chunks of code and have them 'just work'. I believe it's because I build my checks into the code from the beginning .. Usually before I have written the significant bit of the code. My methods often begin with a series of sanity checks. If anything important fails the check, I throw an exception. This allows me to isolate most of the silly programming mistakes very quickly. It was a tough lesson to learn, but has saved me time and again.
Subscribe to:
Posts (Atom)