I’ve tried to build some test Android apps using the Ionic. And by enabling install from other sources than Play Store, virtually anybody could install and test my app provided one has an Android device. Sending Dropbox link to a friend with Android device is a hassle-free process.
Basically the point is to serve as much of the page content in the first 14kB roundtrip. It’s done by inlining critical CSS and JS (I think even adding lazy loading script, polyfils, etc. can be critical JS) into the HTML.
I am not so keen of keeping two codebases for the same purpose, but I am experimenting with a new approach, where server renders the simple document using the same data, including the web-app script and serves the same data in AJAX requests of the provided web-app.
Only a while ago I’ve started to embrace the HTTP concepts, shortly after trying to build a simple REST engine. Not RESTfull, that would another story.
Most of CMSes, websites, well actually in general we, their authors, developers, simply ignore requests of the application requesting data. They provide always unified response as HTML. Even when implementing AJAX service, the requested accept format of the client application (not a browser) is ignored and is being served JSON on each response.
Let’s not forget: Web browsers are applications able to run applications within themselves – we are used to call them web apps. They can define Accept header different from the browser application. The web app might be written by you, but it might as well be written by other developer later.
There should be no assumption on the best communication format. JSON might be cool and speedy right now, but even now there are other compressed incompatible formats.
That’s why I believe the response of the server should be handled by injectable handler according to Accept header. Writing such handler would allow future extension yet provide clear application responsibilities separation e.g. as a module.
I got this crazy idea few years ago while building a REST service for one of my projects. I needed some way to represent complex errors happening deep down in the components of the service to the public.
I ended up returning arrays with multiple keys which was really not ideal.
Just as I’m writing this post, my disk is shrinking once again. Last time it was because of me installing Lion1. First I wanted to use Virtual Box to run it within a virtual machine. After I tried several option to boot install I finally gave it up. My last hope to install Lion was by load (restore) contents of the DMG hidden in the OS X Install app downloaded from Apple Store into a real partition and install.
I was successfull with Lion. This time I’ll keep journal and I try to install Yosemite.
Testing and debugging app or website on a real device is always a win. Most of the times, we are lucky to test on some of the friends devices. That’s when running an AVD — Android Virtual Device is much help and is better than nothing. Hence process is not so straightforward this post was born.