« News of the week | Main | Your competitive advantage is... »

Geophysics apps FTW

Google Nexus SI have used an Apple iPhone for several years. It's probably the loveliest technology I've ever owned. But now it's gone, it's over between us, and it will never come back. Because now I've found Android

Last Wednesday I got a Google Nexus S, chosen for its relative purity: built by Samsung, it's a Google-branded phone, so it has less of the carrier's fingerprints on it, and it gets OS updates faster. But it's not the phone I love—it doesn't have the industrial beauty of the iPhone®. It's not even Google's Android™ operating system that I'm besotted with—though it is pretty fantastic. The thing I love is App Inventor. 

If you've never tried programming a computer, you really should give it a try. For me, learning to program transforms a computer from a mere tool into a workshop. Or if you prefer, from an instrument into an orchestra—sounds a bit less utilitarian that way. And I tentatively assert that you will never look at a problem, at least a technical one, in the same way again.

Google App Inventor™ is a programming environment for your phone. You do the programming in a web browser, but the thing you build runs on your phone, or anyone else's phone (as long as it's running Android, natch). Everything is free. And it's easy. Not 'quite easy'. Really easy. If this doesn't sound pretty amazing, you should probably stop reading now. 

Agile Volume app screenshotSince last Friday, I have built four applications, three of which are geoscientiferous:

  • Fold* computes fold and trace density, given a seismic acquisition geometry
  • Elastic* finds all of the elastic parameters, given VP, VS, and density
  • Volume* calculates oil in place, given some reservoir properties (shown)

I had each app working, in a basic way, inside an hour. The only slightly tricky thing is setting up the logic to handle blank fields, weird oilfield units, and that sort of thing. Aesthetics can also be fiddly, especially if you are making custom graphics. But if you skip looks and error handling, perhaps because you don't intend to give the app to anyone else, then you can be done in under an hour. 

Evan and I have barely started to explore the tools available. The language inside App Inventor is based on MIT Scratch, the building-block visual interface with a long history at MIT. The vocabulary is very rich: there are math processes, logical constructs, text handlers. You can access the phone, email, the GPS, and even the accelerometer (for instance, in our apps you can shake the phone to clear the parameters and start over). You can draw interactive graphics, scan barcodes, or build a persistent database.

The only problem we've run into so far is the final hurdle: you cannot (yet—App Inventor is still in beta) easily publish your finished app to the Android Market, so that others can download it. There are non-easy ways, and we hope to have our apps up soon. They will be free, though we may experiment with freemium

Next week I'll write a bit about Volume* and show you how the inside of it looks. In the meantime, give it a try... or if you prefer, let us know if there's a killer geoscience app you'd love to have on your phone. I'm on a roll!

Find out more

The Wikipedia articles on Android and App Inventor are very nice summaries. 

iPhone is a registered trademark of Apple, Inc. Android and App Inventor are trademarks of Google Inc. Agile is not connected in any way with any of these marks or companies.

PrintView Printer Friendly Version

EmailEmail Article to Friend

Reader Comments (7)

Perfect timing, Matt. For the past couple of weeks I have been thinking of writing an iOS app for calculating gas expansion factors and (estimated) formation volume factors. Simple volumetrics as per your Volume* would have been in v2.

Why iOS rather than Android? Partly because I'm an Apple Tart and already have the hardware, and partly because here in Oz every engineer and his dog seems to have an iPhone.

And why only "thinking of"? Because the last time I programmed anything was in ZX81 BASIC and I figure I probably need a bit of time getting my head around object oriented programming first.

So overall I guess you will get there before me.

April 29, 2011 | Unregistered CommenterRichie B

@Richie: Do it! I tried to make an app on my iPhone... It did not take an hour. The thing to start with is, I think, Sencha Touch. It's a JavaScript / HTML5-based toolkit, so (a) it's not too hard to program in (compared to Objective C, Apple's language of choice), and (b) the apps you build are platform-independent! Because they are web-based, they run anywhere (even Blackberry!). Very cool...

Or, figure out how to make phone calls from a ZX81.

April 29, 2011 | Registered CommenterMatt Hall

After I read your first paragraph I was getting ready to hop on my pro-mac-high-horse (a beautifully bred white stallion, not unlike a fine Viennese Lipizzaner, but from Northern California and only eats single bites from tree-fruits). Once I finished the article though I had to concede your point, with a few caveats, those being:

1 - Apple gives away a fully-featured API for their iOS for free which lets you build, compile, test/debug, and post to the App Store with ease. As long as you have a Mac. Granted this is more programmery that some of the new visual programming interfaces, but it is a very powerful and robust, but quite easy to get started. And free.

2 - The Apple iOS is indisputably a more app-programmer friendly environment than Android or Windows Phone. Why? Hardware - Apple's intransigence on this has left them in a position where any iOS app will work on any iOS device, guaranteed. Google, on the other hand, has placed absolutely no restrictions on hardware, which is great for a diverse market, but that means there are 15-20 different handsets with different hardware and OS configurations and functionailty out there. An iOS app only has to work with one configuration, making programming easier and testing more predictable, whereas an Android app has to be (or at least should be) tested on every permutation. Also, now RIM is trying to run Android apps through an emulator on their Blackberries which opens up both a bigger market (yeah!) and an entirely new line of hardware to try to make work (boo!)

2a - Anyone who ever tried to program for computers in the days of DOS and Windows 3.1 will know that trying to accomodate a large variety of hardware leads to bugs, crashes, unpredictable results, and ultimately a frustrating user experience. There is a reason that one of the biggest features touted for Windows 95 was "HAL" - the hardware abstraction layer. You suddenly didn't have to worry whether you had a Creative Sound Blaster 1.5 CT 1320C or a Gravis Ultrasound Max, you could just rely on being able to get sound. Now, with Android, there could be a physical keyboard or not, there could multiple soft keys or not, there could be a video camera or just still, 2 megapixels or 5, a flash or not, maybe a compass, maybe 3G, maybe 4G, maybe a radio anywhere from 256 MB - 1 GB of RAM or more, single or dual core processors, and so on. You are stuck either writing for the lowest common denominator (and thus wasting all the interesting and unique features of your phone), or worse still if you require some of these specific hardware features you risk not being compatible with some Android devices, thus cutting off a portion of your potential market.

3 - The App Store is indisputably a better place to distribute apps from. It is easy to browse, it is user friendly to buy and install apps, there is a huge user base, and there is user confidence with that app store. I don't have to worry about getting a virus or trojan on my iPhone. (I'm sure there is an inappropriate metaphor to be had here about sleeping around on your spouse with strangers and STDs, but I'll leave it alone).

3a - A common complaint railed against the App Store is the approval process. I see this about as mature an argument as disputing having to take a driver's test before getting your license: if you play by the rules it's hardly more than a brief inconvenience, and the rest of us can be assured you know what you are doing at least on some basic level. If you can't pass the test, I don't want you on the road with me.

3b - Apple's App Store rules are the one sticking point here, and are very relevant to this post. MIT's Scratch App was rejected by Apple because Apple does not allow apps that generate new code. I understand why, and frankly an iPhone is a terrible place to program, visual interface or not, but it is a policy that could hurt them most significantly in the following way: kids these days will grow up with their tablets the way we grew up with punch cards and vacuum tubes (well, 386's and 486's anyway, though it feels the same). Therefore, the first computing environment a kid would be exposed to may very well be the iOS, which is a polished experience for sure, but it is not tinker-friendly. I learned so much playing around with BASIC and then C in DOS, including wiping the family computer more than once (thankfully back then we couldn't really save anything worth saving on the computer). These new computer environments do not offer that same level of exposure that I believe is crucial for a new generation of tech-users.

3c - There are proto-typing apps available for the iOS where you build the app on the phone, then it will generate the code to write that app for you. You then compile the code on your computer (using the free API mentioned above) and viola! You have an app. I've seen some that, in addition to giving you the code, will also give you visual storyboards and design documents that you could give over to a programmer for example if you couldn't/didn't want to do the coding and compiling yourself but you want to expand on the features.

4 - the iPhone is the greatest thing ever.

So, don't give up on your iPhone just yet! The iOS market share is big enough to certainly not ignore, especially if you want to get your apps on as many devices as possible. The app creation experience is not contained on the phone itself, but really, the phone is a bad place to do real programming in the first place.

5 - Check out the Photosynth App on the iPhone if you can (Evan, you especially). It is such a beautiful experience, you have to try it. With 5 minutes of launching the app you realize it has somehow managed to make your iPhone (well, not YOUR iPhone) even more essential. Imagine all of the times it would be useful and just plain awesome to make a full 360° interactive panoramas.

April 29, 2011 | Unregistered CommenterReid

@Richie: As soon as I wrote that last comment I remembered that it's 2011 and someone has almost certainly done this... They have at least managed SMS.

April 29, 2011 | Registered CommenterMatt Hall

@Reid: Thanks for the awesome comments, as always. I hope everyone reads my posts as carefully as you do :) Your item (4) actually made me laugh out loud. It's funny because it's true I guess.

Do you think Apple would balk at something like App Inventor because of the threat, real or perceived, to revenue from the App Store? It seems to me that Apple is more about content than hardware or software, so they need an ecosystem of (paid) developers making cool apps that people want to pay for, sold through their store.

I think while you were typing your comment I was replying to @richie (see above)... I did actually try to develop for my iPhone. Once with the SDK and once with Sencha. Perhaps I am impatient, but I got stuck shortly after Hello World. With App Inventor I honestly felt fully empowered as a developer almost immediately. I have not experienced that before, though maybe MATLAB and Python learning came close. I tried to learn Java once too... I think I still have my broken Bank Account app somewhere, LOL.

Really, I love that there's all this technology, competing and evolving. A monospecific world of Android, or iOS, would be crap. But, OK, you inspired me to crack open Sencha again so here goes... Stay tuned!

April 29, 2011 | Registered CommenterMatt Hall

I am not sure whether i am in the correct place. I found your web site while i search for an application software to run on an Android device such as Samsung etc. which provides details, graphics and some sort of simulations from geophysics satellites over the current located area. Basically how the application works is first it checks for the location using GPS or interior system and then provides information based on minerals, sand and spaces over the land. I know the application is available in market but i could not find it. I appreciate your valuable helps. Thank you.

August 26, 2012 | Unregistered CommenterUmit

@Umit: I'm sorry, I don't know of such an app either. It sounds like it reports the geology of where you are, based on your GPS location, which is a nice idea. You might find something in this list of apps, or please add your app if you ever do find out its name.

August 26, 2012 | Registered CommenterMatt Hall

PostPost a New Comment

Enter your information below to add a new comment.
Author Email (optional):
Author URL (optional):
Some HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>