It’s all a matter of public record

I recently had the chance to review a locally developed app called Public Record. This application provides search capabilities for legal documents and court records in the state of North Carolina. There are multiple applications that provide this capability, but I cannot compare the functionality as I have not tried them. As a supporter of locally developed apps, I was happy to take a look when Richard Brown (the developer) reached out and asked for me to take a look. I am currently working on a video for the site; but wanted to my impressions here.

The appeal of this app is to those who need access to the data but do not have the time to travel to each county courthouse to go get the records. If you have the citation number and the county, you can pull most information. If you are just testing the app, and haven’t been the system (that you are aware of) it is a bit daunting…but no more daunting then back-end county/state systems it is pulling data from. The app seems very complete for the scope it covers, and I like the fact that it includes a built in dictionary of many of the legal terms related to the data you may be searching for.

The great story behind this app, like many developers, Richard built the app after dealing with the frustration of trying to get these types of documents thru other means. Developing an app for your own needs, and then seeing the value of it, allows users to benefit from your hard work! I hope to post a demo video soon,

Podcasts and patents

A few weeks ago I stared hearing about a patent claim from the mid 1990’s that would change how we all create and consume patents. The podcast community is asking for help and support to invalidate this patent. If you can help out, please follow this link and help! Thanks.

Experiences with Constraints and Storyboards

Well, it was a challenge, but I got it done. This past weekend I spent most of the time refactoring my personal app to using iOS 6.1’s autolayout capabilities. While I started off pulling out my hair, I ended the weekend with screens that looked pretty good, and that correctly handled almost everything I could throw at it. The net of all of this, is that I learned how to improve the flexibility of my apps. (I now can correctly re-size between iPhone 5 and pre-iPhone 5 layouts).

The biggest problem when going thru this, was that XCode kept trying to guess what I was trying to do. It would pin objects to the top of the screen, which would then disappear beyond the bottom of the screen when I rotated the screen. It would link two assets and then assume that I wanted the same spacing when I rotated, again pushing things around. The biggest thing I learned was to treat your screen layout like a bunch of sub-views. This allows you to then group things in subviews and build up relationships between the subviews. It reminded me of hand coding websites years ago, right after HTML introduced tables.

The other key thing to do, is make sure you pay attention to Less than, Equal, and Greater than. This impacts how things will grow or shrink. I cannot tell you how many times I caught myself with a Equal link(the default), when I wanted things to shrink down, a Less Than link. So far I have not gone into the details of code centric autolayouts, but for my simple app, I didn’t need that yet.

I can try and address questions if you have any, so drop a comment to the blog!

iOS Storyboards, AutoLayout, and Constraints

I’ve been in the process of refactoring my app – Wasted Time in order to add native Facebook integration and a new ToDo feature. As part of this refactoring, I am changing from a simple UITabBarController to a UINavagationController based root control. This change will allow me to have the ToDoViewController be able to be pushed on the stack and pop off the stack when the ToDo is complete. Overall, I am very happy with the progress I’ve made by doing this.

HOWEVER; (and yes I am yelling as I type this) my default struts based formatting, which has worked well for me on iPhone and iPad with a traditional NIB based interface, is going to be replaced with a Storyboard using AutoLayout and Constraints. This is a bit more complex than it may seem, but the overall goal is to allow future updates to devices (screen size, etc.) to be able to better resolve the interface elements of my app. Yes that is the promise.

After spending a couple evenings working on reformatting and tweaking the constraints, I finally broke down and thought, I should do a tutorial or two. I was pulling out my hair, and screaming at the screen. Every time I moved a single screen element it would screw up everything! While I can still pin things to the top/bottom, left/right, and Horizontal / Vertical, it was struggling with groups of elements that I want to keep on an area of the screen.

The first tutorial I found that seemed to take a pretty natural approach for stepping you thru the complexity. This is from the team over at RayWenderlich.com. There are a lot of different tutorials there, and they do provide enough info to get you started. Of course, the complexity of my simple screens was beyond the basics of parts 1 and 2 – I bought their book (IOS 6 By Tutorials). I guess they succeeded in providing me just enough content to make the purchase.

So now I plan to spend a bit of time over the next few weeks working on really learning how constraints work. Will post more information on this as I progress.

Does the xBox Announcement Matter

Microsoft has finally made their next generation console announcement. You can watch a replay here. This got me thinking, does it matter? The basics are an improved processor, more cloud integration, improved Kinect, and better media center capabilities. As more and more people are become cord cutters, and more and more gaming is happening on hand held devices, it does seem that Microsoft is realizing it must pivot the value of the console, but is this enough?

To me, the cloud parts could be interesting, if they allowed me to seamlessly transition from playing my favorite MMO on my desktop and then shift onto the big screen in the living room without missing a beat. But other than that, it doesn’t hold much interest. The Kinect part; however, may be the game changer. Improved fidelity and speed in processing may bring us one step closer to the seamless interfaces of science fiction. Add strong Google Now / Siri like capabilities, and perhaps the new xBox One will be the one interface you need to run your house.

Google Developer’s Conference

*** It seems that this post didn’t go up when I thought it would..not sure what happened (I am sure it is a users/poster error).

I was lucky enough to have a very long drive during the Google IO keynote so I had time to listen to the livestream of all three hours while driving down the highway. There were a couple of key items that I found very cool and I’d like to share them now..

1) Google is finally getting social right. Their use of Google Now, Google Hangouts, and their new features of Maps are all great examples of how they are leveraging social and location data to create incredibly cool results.
2) Google is making a great play for the education market. One of the things that Apple has been historically good at, is addressing the K-12 markets, but their premium pricing have become a bit of a challenge in today’s highly sensitive budgetary environments. The Google Play store for education sounds amazing: teachers able to push apps to their students, centralized financial control, but teacher lead purchases, and many other features.
3) Larry’s speech was amazing. I am sure part of it was the tenor of his voice driven by his vocal chord paralysis. His vision of the value of technology and engineering and how we all as developers are going to change the world, was not only compelling, but also inspiring. Yes, I can easily point out the self serving nature of some of his platform comments. Yes, I can talk about how his “open” comments are again a bit disingenuous. But it still was a great speech.

The net was, I can’t believe I didn’t order my Google Glass last year, I will have to do it when they become more generally available.

What did you find interesting?

Where does your App make it’s money

This week has been just as crazy as any other week, but I guess that’s a good thing. Had a great time this week at my first every iOS Meetup (a sister group of TMUG). While the group was small, we had a great time sharing new apps and ideas about using our respective devices. This got me thinking about all the cool apps I’ve been using on my iPhone and iPad, and how over time I keep rotating which apps I use. I’ve tried multiple news readers (Flipboard, Feedly, and others), but always come back to Reeder. I’ve played with multiple Podcast players, but alwayes come back to Downcast. I play so many games, but pretty much always come back to a variant of Angry Birds.

And so, as a developer I wonder how do others make their decisions on whether to create a new app verses upgrading their existing apps. New Apps, tend to mean new revenue, while updates are free on iOS. I recently picked up an Android device, and have yet to buy any apps on it, but I am loading many of the same apps that I use on iOS. I am betting; however, that on Android you will be able to paid upgrades in the long term, without having to release a new app name. The reason I think this will be the case is that we are starting to see parity in the number of apps between platforms. But iOS still makes app developers more money. Developers will not be content to give out free versions of their app and the upgrade path on iOS will not allow your to access your data between versions; making it even more difficult for your users to experience a seamless upgrade.

A recent story on TechCrunch shows that for now iOS is still the dominate platform for developers to make money. While more and more developers are working on multiple versions of their app (across platform), Android will need to do something to help developer make more money on that platform if app parity is to continue. Right now developers are investing in market reach, but unless that reach is profitable, that investment should end.

The Gaming Community in RTP

It’s right around the corner! The East Coast Game Conference! I’ve gone a couple of times, and if I were not traveling overseas this year, I would certainly make my way to this conference. If you get a chance to go, I’d love to get some of your impressions of this year’s conference. Either comment to this entry, or let me know and I will collect the links for people.

The Facebook Phone

I was sitting in a long meeting yesterday, and had completely forgotten about the “big” Facebook announcement, when I saw a live stream tweet come across my screen. Figuring I could watch a live blog, and still provide the appropriate engagement in the meeting I was in, launched the link. To my surprise, it wasn’t a late April Fool’s joke, Facebook was announcing their Facebook Phone.

Well not really a phone, but a new app launcher for Android, which would replace your default launcher and wrap you up in the Facebook experience. My first reaction was, oh no! Here we go again, we are going back to Q-Link, Prodigy, and AOL. A closed ecosystem whose goal was to keep you locked up in their space. Then I realized, no, it’s not that bad… it’s worse!

Facebook’s value is you as a data source. That is why it is free. And by wedging itself between you and your apps, messaging, and phone service, they gain even more information about you. I even tweeted my worst case thought. As an app developer, there is some value in using Facebook as a sign-in message. You can get access to your users’ information, timeline, etc. The social graph that I get on our Facebook page provides all kinds of neat demographic data about the type of people who follow this site.

However, what if Facebook decides that they don’t want to launch your app on a Facebook phone?

The fact that many of the major carriers have immediately jumped on this and will be offering devices in days using this new interface as the default launcher (Can you opt out if you get one of the phones and don’t like it?), is another worrying event. Facebook also has made this capability available in the Android version of their App, so users can turn it on themselves as soon as the service is available! Given the history that Facebook has on user security policy and how confusing and complex they make their settings, all with the goal of getting more and more of your data out of you.

What do you think of yesterday’s announcement?

Finally Back to the Meetup

Last night I made back to one of my favorite Meetups – Triangle Cocoaheads. The format of the meetup is that there are a few speakers and then people can stand up a showcase an app they are working on. Josh Johnson and Jay Thrash gave two great presentations – Josh showed off how to build a AVFoundation playlist application and Jay showed off Square’s PonyDebugger.

Being a podcaster and video editor, I felt that Josh’s explanation of AVFoundation was great. I had the aha moment that most this framework is just like doing a multitrack editing experience. You build up a composition, which contains tracks, and within tracks you have the actual audio pieces. You can apply mixers to the track, which is an array of params which apply attributes which manipulate the sound. We focused strictly on volume controls, because the demo application was about creating a cross fade between songs. Josh then showed the application he is currently working on where utilized all he showed us. As soon as the video is posted I will link to it. Great job!

Jay then took the group thru PonyDebugger. This allows you to do realtime analysis of your app, either on the simulator or on device. Everything you want to know about it can be found at GitHub. I’ve been looking for a tool like this, as it provides three basic features: Network traffic debugger, Core Data Browser, and View Hierarchy Debugger. The way this is achieved is by adding about 7 lines of code. Amazing!

The session then turned into a discussion on CocoaPods. Now I’ve not used this before, so it was interesting to learn about this, but when the discussion went to CocoaPods vs. GitSubTrees, and GitSubModules it went over my head. Mainly because I am writing my code from scratch with no real third party libraries. Also, I’ve not been working with others, so needing to keep multiple people on the same level of code across machines and libraries is not relevant. But a pretty good discussion ensued and while the group didn’t come to any consensus of which is best, I think this was a great new add to the Meetup.

I am looking forward to getting back into this meetup.