I’ve been coding data-oriented software most of my career. I was and I am still a little bit bad at doing visual stuff – what is the best way to show things – only if the UI is figured out and I need to implement it, I am good. In my personal projects I mostly use ready components with minimal customization. And that’s why I’m also bad at programming games. But, I see the connections in the data and the information so most of the products I’ve coded are around that.
In my current focus I consider apps in two groups:
- According to where and how is data saved
- According to the relationship of the information to the users and the public
In this article I’m gonna talk about – from an application perspective – according to where and how that is saved there are two main variations – client side storage and server side storage and a mix of both.
When the data is saved on the client device – the browser or the Android or iPhone device, the Desktop Computer – the application is potentially independent from the connectivity of the device and could do what the application is supposed to – with zero interruption. This data could be notes, phone numbers, photos, recordings, file or something that the user is not willing to share even with the cloud services of the big mobile platforms.
There is an option the data to be only saved on the server. Then, if the client application is not connected to the Internet – if checks are put in place – a user friendly message appears. Applications where apps are saved on the Server are in a lot of cases business to business systems. Connectivity has become like electricity, like the food for the normal person. If it is not present, things are bad. So, the coders could ignore such cases and it should work in 99.99% of the time. In critical (for example financial) cases – the normal if/else checks should be applied. One other case where a Server Side visualization is applied is when Search Engine Optimizations are considered important. The Bots are getting smarter, executing JavaScript, Applying CSS and whatever, but, because of legacy experience of site developers, know-how and keeping up with the old Search Engine bots – a normal server rendering is possible, when data is saved there.
And There is a Mix of Server Side and a Client Side Approach.
One variation is – the app to need Internet for a part of the functionality and some other modules to be Independent from connectivity. Such app is my What You Eat – Mobile Apps http://kakvoiadesh.com/ . The product/food item related functionality requires Internet. The review of the other information – Categories, Diseases, E-Numbers, Allergies – after the initial loading – is entirely independent from the Internet.
Similar to this is caching of records offline – after first load/display and all modifying operations to require Internet. Such approach I’ve implemented in several projects for clients and in several of my own projects.
The last approach is to probably have some initialization – and after that to have transparent for the user functionality without bothering if there is Internet connection or not. This is also the most complex variation – synchronization requires additional effort. I’ve done that kind of applications for clients and I’ve coded that hard part – because of the proprietary/custom back-end. There are frameworks (that come with a price of course) that do this transparently not only for the user, but also to the developer – The Firebase/Fire-store APIs.
The thing is – when a developer finds a problem – he codes a solution. Then – the real world shows if the implemented software logic was right. Besides the choice of the coder, there is also never-ending changes in requirements of the clients and the users. How to implement things the right way is never-ending battle. Also – going deep too much on the “right” technical way to do stuff is also over-killer. There are software optimizations, there are hardware – horizontal and vertical optimizations – that may compatible with the software optimizations and they may not. Practice may help to start things “correctly” from the beginning, but it will not ultimately resolve it all.
Top comments (0)