The Shape of Mobile Development To Come
clayallsopp.com
clayallsopp.com
I think there's far more low-hanging fruit in making native development easier than in making web/hybrid apps feel "right". I've seen two just good hybrid implementations (Quora and Pocket), and yet I still run into defects using both.
I think the "write-once-run-everywhere" benefit of web views is disingenuous; the phrase should really go "write-once-optimize-everywhere".
If any write-once-run-anywhere solution becomes to popular then the likes of MS or Apple will try their best to kill it. See: Embrace, extend , extinguish by MS on Java and to an extent the web itself and Apple's ban on language runtimes/interpreters on the app store.
If every device allows for the same functionality as other devices due to identical software then manufacturers will only be able to compete on price.
As a one-time proponent of write-once-run-anywhere solutions, I would have to say this would probably result in a reduction of UX quality.
I think Xamarin are going to be a really interesting company to watch for this stuff. Right now they have MonoTouch and MonoDroid as entirely separate products, allowing you to make apps using C#. But you can already reference libraries across both, and just do the UI plumbing separately, and if they're smart they will work very hard on what the author is describing.
While these things were great, in the end what most of us wanted was actually HTML/CSS/JS and the freedom to create beautiful things that it gives us. I would argue that default looking iOS apps are already stale and we want more control (which CSS is great at giving). I am banking my business on the same thing happening long term in mobile.
I agree that webview apps can't compete with native in certain situations, but devices are becoming more powerful every day and web technologies have already proven themselves with a large developer audience.
Also, I think there is low-hanging fruit just in the mobile web space: making more websites work well on mobile devices.
I would argue that such a model would need to include the ability to easily manage per record image assets. (think about how often we have images in a table view cell)
To that end, I've created an iOS library to deal with downloading these tables and images in a reasonable way. If you're interested: https://github.com/Smartovation/STRemoteResources
So I think the design of mobile apps will be simplified going forward. I could see moving towards simpler UIs like Craigslist. This is a major win in a variety of ways: faster UIs implies better user-experience, less computationally intensive UIs implies less drain on limited resources, and simpler UIs implies less design and development time. I love the idea of never stressing out about rounded corners, little shadow and shine marks etc. They're nice to have initially but just get old as one uses the same device/OS/apps for months on end.
Animations play a very important role in communicating to the user how to interact with the interface. Animations also give the illusion of a responsive app.
The best apps are likely built by great designers who know how to use animations effectively to communicate with the user.
Everyone else will simply try to copy the best apps along with their animations... thus, it's hard to see animations going away any time soon.
On another note, I find it surprising that yours was the only comment even mentioning design. For me, that was the most important part of the article with by far the biggest implications.
The author predicts that designers will be able to take on a portion of the client-side engineering role in the near future. If this happens, it will completely change how apps are made. It will change the workflow between designers and engineers.
The traditional model of mocking up a PSD and passing it off to an engineer will no longer be viable. Designers will just build clients and interact with APIs. This means that more and more designers will probably have to learn programming, which is a good thing for the future of mobile apps.
Showing a dialog:
NSDictionary *dataDict = @{'title':'example', 'other':'other text'};
QRootElement *root = [[QRootElement alloc] initWithJSONFile:@"file" andData:dataDict];
QuickDialogController *myDialogController = [QuickDialogController controllerForRoot:root];
[self presentModalViewController:navigation animated:YES];
example json form definition file to match: {
"grouped": true,
"title": "Example QuickDialog Form",
"controllerName": "QuickDialogController",
"sections": [
{
"elements": [
{
"type": "QEntryElement",
"title": "Title",
"placeholder": "item title",
"bind": "textValue:title" },
{ "type": "QMultilineElement",
"title": "Other info",
"bind": "textValue:other" }
]
}
]
}
data from dataDict is merged into the fields defined in the json definition file, using the bindings specified in the 'bind' property.It's really awesome, and makes all kinds of dynamic views possible. I was skeptical at first (as I am about most cocoa libraries) but I'm pretty sold on it since I gave it a fair shot.
Ruby is better suited to this IMO (no clunky file loading), but I agree they both prove dynamic native views need more exploration
I agree with your hope that Rails could somehow be extended to cover this mobile use case, wish I had the chops to create a Devise+MobileAPI generator with a iOS native MongoDB-sychro engine. (Can Rails generators synthesize ObjectiveC source code?)
By the way, every time I think about doing something about this I keep an eye on the folks at Parse.com: seems like every week they're solving more and more of the backend part of this problem. And they're working on front-end libraries as well...
I would argue that it has less to do with the ease of the language and instead the market effects of iOS.
It is not about problem of programming language or tools, but Java already told us the "lowest common denominator" issue you have to face when implementing abstract over different platform. When people working on abstraction, it mean they will spend less time on real devices and fine details, and this is exactly what makes or breaks user experience.
Edit:fix link
Then hire you on a great salary because great programmers are hard to find.