There is rumor that Google is considering making Swift a “first class” language for Android. I don’t know what “first class” would mean in the context of Android, but I would assume that it means that Swift could be used in the standard Android tool chain in the same way that Java is now. I could see how this could be a big deal and how it might not be.

For the change to happen, all the Android API’s would need to be exposed as Swift API’s and then the Swift source code would need to be compiled to Android bytecode. This seems rather trivial for the big brains at Google. So I don’t really see this as any kind of technical challenge. But how do you introduce and migrate this into the developer’s tool chain when 60% of your userbase uses an OS version more than 2 years old. So if developers aren’t likely to switch to your new tools, why develop them and what is the calculus for how likely and how many switchers are needed to make the switch make sense?

Moving to Swift might cause me to re-evaluate development for Android. The main reason I don’t is that I do Java at work and have no desire to see more of that style of coding. However, Swift for Android isn’t likely to make development easier as Cocoa Touch and the other frameworks that make up the substantive parts of app development aren’t part of the open source project. I’d get to use the language, which is one level of expertise, but the libraries would be completely foreign and incompatible.

What IBM does in the technology field has little bearing on me anymore. They are in the business of consulting and services to very large enterprises and my interests lie largely on the opposite end of the spectrum. So it is a little bit of cherry picking when I mention their adoption of Swift on their servers and cloud services as a positive sign for Swift. A more balanced view would that it’s interesting that IBM is putting some wood behind their Swift efforts.

IBM does have an enterprise deal with Apple and if Apple is moving toward Swift why wouldn’t they. Swift being open source gives IBM more reason to put it on their servers and cloud. IBM already develops their own JVM which I assume they have to license and pay money to Oracle to do and since Oracle is a competitor why would they want to keep doing that especially for a technology that has seen its heyday. If they can build new platforms and applications using an existing partners technology that they don’t have to license it makes sense for them to go in this direction.

So while IBM supporting Swift isn’t a big deal for me, it does improve the likely hood of Swift’s long-term viability which is interesting.

Proving once again that I have a difficult time sticking with a side project I’m going to focus my attention on a flash card app. I’m not abandoning the quiz app. The simple question and answer infrastructure as well as the ideas for fill in the blank, matching, and ordering questions will find their place in future projects whether specifically a quiz app? I’m not sure.

The reason for a flash card app is a renewed interest in memorizing Luther’s Small Catechism brought on by the work at Lutheran Catechism. I figure I can help myself and help others by building this app.

Additionally, I’m going to do a better job of blogging about the development of the app. I would like to see a bigger ecosystem of Lutheran apps and I hope that blogging about it will inspire someone to learn and create their own or push someone to say, “heck I can do that” and build something better.

Non-Standard to Standard

It’s probably too early to worry about the look of the app, but I want the header to look like the Brainscape iOS app above. My initial attempt, after throwing out the default UIViewController, was to take a create a view that contained a navigation bar and a table view. With these in place I set out to make the status bar and navigation bar both dark and translucent so they would look like one unit and have the effect of allowing items to scroll underneath them.

After about 45 minutes of digging through StackOverflow and using trial and error. I chucked this attempt to roll my own. I dragged out a navigation controller and got what I was looking for. I hadn’t thought that this default would give me the control or look I wanted but looks like it is good, at least for now.

When starting a new project in Xcode the first decision you make is the type of application you are going to create. Master-Detail, Page-Based, Single View, Tabbed? My vision for the app is close to Master-Detail but doesn’t fit exactly so I decided on the Single View Application figuring that I would throw out the default UIViewController.