I am expanding this blog to also include advanced users and not just devs
I plan to do that by also including some app issues and how to fix them.

Devs and software architects can learn better design this way.

The purpose of this blog is to help devs, users, architects, etc. by talking about technology.

I got  a new Google Pixel 3 phone recently with the latest Android OS called Pie.

I will also cover usability issues with it in this blog.


Most companies have moved their servers in the cloud, as in cloud services provided a platform which included a server, redundancy, many geo-locations, backup, etc.


Thus, a company preferred to use cloud servers than maintain their own servers.

This posed a security risk and initially, many companies did not want to run their software on somebody else’s server.

But actually, the cloud servers were more secure than the company’s own servers.

This was a much cheaper option for companies, since the cloud servers were much faster, had redundancy, were more secure, had multiple locations, etc.

This eliminated the jobs of network specialists (on the operations side).

A new job was created called devops (which was a developer deploying and managing the cloud).

Ultimately, anyway, a developer was responsible for the application, so it makes sense that a developer manage a deployed application.

There was the issue of a developer doing something wrong purposely on the app website, but then this risk earlier was the operations personnel going rogue.

It is much better to make a developer responsible for an application all the way.

This is pertinent to a phone.

I see many websites that use some kind of scripting to essentially disable the back button of your phone.
This is bad design because hardware and phone behavior should not be messed with.

There is a simple workaround for this.

Simply, refresh the page and hit the back button (while the page is loading).

Why does this work?
This is because you are hitting back before the javascript is loaded and takes over.

Recently, there has been a lot of action in the space of VR and AR.

I’ll start with what the 2 are, and their applications.

VR or Virtual Reality is where a user is immersed in an environment created by someone.

AR or Augmented Reality is usually some information put on a real image (usually as seen by a user).  The information is usually in real time. e.g. a user profile superimposed on a person’s face.

Companies bringing VR to the consumers are Oculus (now owned by Facebook). The product is called Rift.

AR is being brought by Google Glass (coming back soon), Holo-lens by Microsoft (whose marketing video is better than the product), etc.

VR has a lot of applications, the main ones being gaming, tourism, data visualization etc.

AR, as I said, might be good for profiles, weather, etc.

So, both technologies are useful and they have their own applications.
Titles like this one are misleading and so do not think they are competing with each other as some media would like you to believe. Developing applications for these is a big market..

Many software developers are looking to develop mobile apps and companies want to jump on the mobile phone bandwagon.

I do not want to debate the reasons; that is a business decision of companies. I want to help fellow developers by talking about the various possibilities; of course the ultimate choice is the developers; only they know the situation they are in.

Unless you live under a rock, the 2 growing platforms out there are iOS and Android. The Windows Phone is the dark horse, but it is a target as of today.

So, here are the possibilities:
In the past, there were only native apps, so a company made 2 or 3 identical version, 1 for Android, 1 for i OS and maybe 1 for Windows.
Companies like Apple, Google, etc. had SDKs, but then you also had to know Java, Objective-C (how quaint) and maybe C#.

Then, along came a company called Xamarin, which enabled to write in C# and output binaries for all major platforms.
This was good because now you did not need to know multiple languages.
But, Xamarin was not cheap.

Then a company introduced Phone Gap as an option, which essentially separated the UI layer from the lower layers. The UI was in HTML, one could use various native clients (that the company provided) that understood HTML. This later became Apache Cordova, and it is offered by the Apache foundation.

So, the first option is Native or HTML?
If Native then should one torture oneself and write in Java, Objective-C, etc?
Or use Xamarin, if the budget allows.

If HTML, then currently Cordova is the only option. Remember, there are some native things of your phone that cannot be accessed via HTML, but these are rare and it finally depends on your app.


It might help the community, that if you have developed a mobile app, to state its name, provide links to it and briefly state the technology you used, in the comments.

Thanks from all of us!

What seems like a simple thing may not be so.

This happened to me, and the whole process got so frustrating that I decided it warranted a post, so I could help you folks too.

For some reason, my Windows system got reset and I started experiencing erratic behavior whenever I typed, and I realized it was because my Dell Touchpad settings went back to the default (I normally disable the pad selection and the pad click).

But a search in Google gave me links that mentioned a Dell Touchpad tab in my mouse settings in the control panel (in windows 7)  and I had none.

I then went to c:\program files and located the Dell folder, which in my case was “DellTPad”. I ran the touchpad exe, which for me was DellTPad.exe,  and it started the touchpad settings application, and I was able to set my settings again.

I run Windows 7 on a Latitude e6510, but this method of mine should work on many Windows versions and on many Dell computer models.

To repeat…

You can first go to Control panel >Mouse.

If that has no Dell Touchpad tab, then go to File Explorer, and navigate to C:\Program Files\DellTPad. once there, run delltpad.exe and set your settings for the touchpad.

There is a design shift as software starts moving to the cloud, from an in-prem situation.

There are a few changes  that you have to make in your design. e. g. the database may not always be available at all times, so retrying a connection makes sense.

One of the side-effects of this is that we can use some design patterns from nature, or the hardware world.
Using Hadoop or (as it it is called) HDInsight in Azure, we can have very simple functional blocks perform very complex things.
This is kinda why Map/Reduce was invented in the first place by Google.

Anyway, what this means for our software design, is to have more modular blocks (or classes and methods), and they should perform a set of tasks very well. They won’t even know of the big picture, and don’t need to.
Any good software design more or less is designed this way but try to make the units kind of self-contained, rather than always having a master-controller somewhere.
Not having a master-controller is the ultimate path to infinite growth, because then each unit does not have to come back to the master.
Only some factory method needs to be able to be called and produce these identical worker units.

More and more, this kind of system resembles of the best examples in nature viz. ants.

Take a look at this article and video here.