jay's old blog

this blog will be deleted soon - please visit my new blog - https://thesanguinetechtrainer.com

Project TD - Day 59 update – Core Tech – Web api module and migrating to new blog

UPDATE 2!!!!

Alright, my new blog is now up and running. Find it here - https://thesanguinetechtrainer.com 


Okay. This is weird for me. For the last few days, BlogEngine.NET (the software that powers this blog) has been acting crazy. I have spent a good chunk of time troubleshooting (after all, I am myself a dot net developer and this thing was built using dot net, and I have come to a realization that, there is not fixing this. No one else is facing this issue.

I dont think it is a connection issue to the web server, because the blog itself is running just fine.

I dont think it is a database issue, because the blog does not use a database.

I thought there would be a easy way to export my blog to elsewhere, but nope. This blogengine software is not popular enough to merit that.

and, since I cannot create new posts (fortunately, existing posts can still be edited and updated) I am updating an existing post. I suppose I should be happy that at least this is working.

I am currently exploring both wordpress and medium as my next blogging software. I like the look of medium, so I will probably go with that. I still dont know how I will move all the stuff from this blog to the new medium blog, but right now, I need a place to write and publish. Or else, I will lose my mind. and fast, at that.


When discussing the API engine, I put a flowchart in place that dictates how I would work on the different modules of the entire app ecosystem of project TD. Then, I further broke down the api engine into simpler modules, which I have discussed here. Here is that list, for reference.

  1. 1.       Build and Deploy an API
  2. 2.       POST and GET to the API
  3. 3.       PUSH and PULL from the API to the Data Service
  4. 4.       Google Maps API on Android, Web and iOS
  5. 5.       Facebook Login API on Android, Web and iOS

Obviously, I realized that some changes were needed, and here is the revised list of the simpler modules.

  1. 1.       Build and Deploy API (this includes the POST, GET, PUSH and PULL from the above list)
  2. 2.       Android app that works with the above API.
  3. 3.       iOS app that works with the above API.
  4. 4.       Web app that works with the above API.
  5. 5.       Google Maps API on Android, Web and iOS
  6. 6.       Facebook Login API on Android, Web and iOS

From the above list, 1 and 4, are completed. I mean, in software, there is no such thing as completed, but it is completed to acceptable levels. This blog, talks about 1 and 4, and I will move on to item 2/3/5/6 next.

As I have already decided, much of the back-end stuff, that is the API, is being built using .NET and that means, I get to use my favorite language c # for all of this. That much is done. I am using web api 2 technology for this. Since I don’t wish to manually create the tables for this service, I am using entity framework, version 6, to act as the agent between the api app and the database. For the database, I am using Microsoft SQL server, and for the hosted web app where the api would live, I am using an IIS server, powered by Microsoft technologies. All the server components are hosted on Microsoft Azure, and the cost, so far, (at the time of this writing) less than 500 rupees per month. Of course, this is a test server, and the load on it has been kept at extremely low levels. I am sure the actual cost when the full api ecosystem launches will be in triple or even quad digits.

While building this api, I ran into Knockout JS. I hadn’t used that one before. I also ran into attribute routing, which is a fun feature and I am surprised that it is a recent addition. I sort of assumed that it was always there. I also learnt about action names, but I think attribute routing sort of makes it redundant, but it is good to know it is there. Of course, the current api only communicates in text data, which might become a problem later when I wish to deal with multi media. However, from what I heard, the necessary modifications should not be a problem.

I am not currently satisfied with the way the web app works. It takes raw data, JSONifies the data on its own before consuming it. The web api does have components that return data in both raw format and JSON string format, so perhaps at some future time, I will build a web app that works with the JSON calls. For now, though, I will stick with the default web app built using Knockout JS.

The api is living on the cloud, and I have now completely abandoned the (soon to be retired) classic azure management portal. The new azure portal is sort of heavy on the system and it has this sliding interface which makes it difficult to work with. Especially as more azure components are loaded. However, it has all the new stuff, and for good or bad, Microsoft has been pushing the new portal for at least 3 years now. I guess, it is time for me to go with the change. I still don’t like it, but it is the future, so I am bending backwards for that.

As always, my tech guru, mika has been wonderfully helpful while building this. I want to thank him for his help, and hopefully, I will return the favor someday.

Alright, enough of the diary writing. You can find the two repos related to the above components, here and here. You can find the web app demoing the api, running at this link. Obviously, the repo has all the comments I can put and relevant links and stuff.

Alright, that is all for now.

Follow me on twitter, facebook and instagram for more updates. Thanks!

Project TD - Day 55 update – A Word About Microsoft Azure

[Ongoing series of blog posts to inform potential developers, users and (hopefully investors) about this new app ecosystem I am architecting, designing, developing and deploying. More details at this page]

I have been working on Project TD for about 55 days now. It has been an interesting experience because of what came before Project TD, and the incredible potential TD holds, if it should be fully realized as per its original vision.

Day 55 is also significant in many ways because, till now, most of the blog posts have been about explaining the concept, the design and the work process. All this is good, and obviously essential. If one were to compare this to a vacation, then, till now, I have been mostly planning the vacation. Deciding on the places to hit, the modes of travel, the clothes to pack, accessories being purchased and so on. It’s all happening in the drawing room. It’s like the first half of a heist movie.

Now, things are getting real. The vacation is planned. The places chosen. It’s time to step out of the comfort of the home and go outside. Time to carry out the heist, and I guess, I am stealing knowledge, to complete the metaphor.

For the last couple of months, I have spent a small fortune (to be honest, it’s a lot of money for a small time businessman such as myself) in setting up all the necessary hardware. I have got the computers, power supply, mobile devices, tablets, office space and everything else. In each case, I also had to invest in a backup system, which simply multiplied the cost by 2. All this is the ‘planning part’.

Now, all these ideas must become real, and the services must run on the cloud. The cloud is the backbone. The cloud is where Project TD will live. I have been using Microsoft Azure for a little over 5 years now. However, I have only been using it in bits and pieces. To host a website here, run a mobile data service there, setup a notification center here, host a virtual machine to test an application and so on. None of them were related to each other, so it wasn’t a complicated system. Project TD though, by any measure, a complicated system. It will push my ability to harness the power of the cloud to levels I have never done before. Almost every part of this system can be automated, post deployment. I will taking advantage of that too and see how far ahead automation has come.

And the monetary cost! Man, I have going to be paying huge bills for at least the next 2 years!

While the cost – time and money – is huge, I am convinced that the cloud thing is pretty much in place now. As the amount of data people consume is only going to increase, the requirement for cloud services will only increase. Project TD will help me figure out how to make multiple cloud components work with each other in a rather complicated system. By extension,  this should provide me insight into what is best fit for the cloud and what are not.

I will be the first to admit that Microsoft Azure is expensive when compared to Amazon and Google. However, I find that Azure has a lot better support to Visual Studio, which is a deal maker for me. Microsoft is one of the big dogs (if not the biggest dog) in the cloud business, and they are constantly adding new stuff to their cloud services.

So yeah, Dear Mr. Azure, don’t let me down man.

Follow me on twitterfacebook and instagram for more updates. Thanks    

The Machines Are Coming – Automation Is Nigh

I have previously touched upon automation here, and here. I am forced to revisit the topic again because now things are becoming a little closer to comfort. Two weeks ago, a friend of mine who works as the lead in the database team were discussing about tech in general and he told me that they have received official emails from HR elaborating upon the effects of Automation. Then, the same thing with my own office, and other places too. Till only a few weeks, this was all just rumors and news clips, but now it seems like this thing is really happening.

In a way, it does not take a super genius to realize that this is happening. For five years now (since I became an independent consultant) I have been cajoling, requesting and begging any and all students and professionals alike that run into me to think of this day arriving. Some (may be 1 out of a 100) took my advice, but even in those 1’s who took my advice, very few actually followed through on the advice. In some ways, it is a bitter sweet moment for me because my predictions and forecasting is coming true (sweet) but so many of these folks who had 5 years to prepare will soon be unemployed, or continue to remain unemployed (the bitter part), at least in their chosen field of career i.e. software. Sure, many of them will have to migrate horizontally to unrelated industries (because, let’s face it, jobs are always available for skilled folks) which is sort of a bummer.

Repetitive tasks have always been under threat by machines since the invention of machines. I remember watching this old Hindi movie Sholay, where there was one guy who’s sole job was to put coal into the coal fire room. Of course, later trains replaced this manual fueling with automatic fueling, so that guy’s job was doomed. Horses were replaced by cars, so all the horses lost their jobs. Traffic signal systems took over the jobs of many traffic signal folks. Closer at home, (and brag shamelessly) I am now working on an assignment which only 2 years ago would be done by at least 15 developers.

This is not to say that I am so awesome. It only goes to say that code automation has improved so much, that more can be done by less. I mean, entire trains can be manned and operated by no more than two train folks, I am sure. Testing is become automated like crazy. There are websites that allow interested business folks to build entire solutions (as long as they don’t need super serious customization and are happy with the available default options). On an individual level, I manage my own domain, servers, databases, backup systems, email service, all thanks to Microsoft Azure, with surprising ease. Tomorrow, if I should end up building a company, I doubt if I will have a dedicated IT team. I will simply manage it myself (on my smartphone, no less!), and spend zero money on either hardware or software. Again, the magic of automation!

10 years ago, I would have to spend money on everything from hardware to software to air conditioning and some guy to manage all this. Of course, there have always been managed IT solutions but they come with their own baggage like annual commitments, fixed cost operations and of course, limited flexibility. I mean, let’s say I sign a contract for 3 mail boxes, I would have to do it for a year. Now, if I layoff 2 people the next day of signing the contract, I am stuck with the bill for a year. With the cloud email service, I use the admin panel and simply cancel the extra email box. At most, I may have to pay for the current month and be done with it. Later, if 2 more employees should be hired, it takes a few minutes at most to create them new email addresses.

The more I think about it, the more I can see the appeal of automation, from a business perspective. Isn’t this what is already happening with online services? If one where to look at non-online stuff, I would rather shop at a super market (where I can pick items at my own leisure) than at a mom and pop store where I provide a list of items and the shopkeeper picks up the items for me. One reason I prefer booking tickets online is because I don’t want to deal with the ticket guy or girl who slow down the whole process, what with the time it takes for them to print the ticket out, look for the change, chit chat with their co-workers and being forced to smile and all that. Of course, getting them to give me exact seats I want (even the movie hall is empty) can be a hassle sometimes.

Overall, the essential idea (while detaching myself from related ethical concepts) is to remove the human element or reduce the human element entirely. For instance, many movie halls have now begun to allow patrons to simply flash the online ticket directly from their smartphones so that even that small step of ‘collecting tickets’ is eliminated. Does it mean that we should not interact with humans at all? I am not going to ask the ethical questions related to that, so I won’t answer the question here, nor is this the place to do the same.  Of course, better people, and more influential than me have already asked such questions. The banking industry asked and answered that questions when they replaced bank tellers with ATMs. The government asked and answered the question when they replaced traffic signal folks with automated traffic signals. Large IT organizations will now have to ask and answer similar questions as ever more software related tasks are taken over by automated engines.

As with the earlier blog posts, the solution to any challenge is to see what is being removed and what could be replaced. The march of technology has always been about allowing others to up their game. When cars started replacing horse carriages, the same folks who were driving the horse upped their game by learning how to drive the car. Horses had limited range which reduced the distance that people travelled. Once cars came, the distances increased. Costs became lower, so more people could afford it. Same thing with ATMs and Traffic Signals. People were given an opportunity to do more in their lives. They no longer had to do a menial task of checking the books and collecting cash/giving cash. They could do more with their super awesome brains. Let’s never forget. Our brains are awesome! When the brain starts doing stuff, more things happen, and the economy becomes bigger, creating even more jobs. Awesomeness leads to even more awesomeness.

Obviously, I have been preparing for it for the last 5 years. Unless my preparation is fatal, I would like to think I am already equipped for an automated world. I have believed that what I do (the work of a developer, and I am only halfway decent) and what we developers do is integrate systems. No matter what project I have working, most of the time is spent integrating different systems.

Take my beloved Project TD for instance. Although I am developing it, the project itself depends on all sorts of external, open source projects for everything. The IT part (servers and related stuff) is also automated. I don’t have an IT team managing anything. I am managing it with no input from any third party. Project TD is already doing extensive automation of so many things. Visual Studio already does so many things automatically for me. As have mentioned many times in the posts related to Project TD, I am harnessing every possible iota of automation so that I myself can build the entire thing with little or zero outside assistance.

In other words, although I am technically a developer, I am spending all my work hours, integrating one system with other. In other words, I am an integrator who also programs and codes and develops when the occasion calls for it. To some extent, integration is perhaps that one thing, automation is yet to do. Automation depends on the assumption that a given task in repetitive. Integration is rarely repetitive. For instance, the process of buying a movie ticket is repetitive (once the movie is chosen, of course) but the selection of the food items during the interval is not. I might choose to combine samosas with extra sauce or go with chutney and coke. Alternatively, I could pick samosas, no sauce or chutney, and opt for tea to go with it.

Similarly, anytime there is a matter of choice, a human must be involved. Anytime there is repetition, automation will take over. Developers who are aware this will equip themselves to make sure that their skills are aligned on the ‘choice’ part of the software development. Those who refuse to see this (either by design i.e. denial or accident i.e. they are unaware, not being educated) … I don’t know.

I just don’t know. 

Follow me on twitterfacebook and instagram for more updates. Thanks!    

Project TD - Day 41 update – Core Tech For The First Batch of APIs for the API Engine

[Ongoing series of blog posts to inform potential developers, users and (hopefully investors) about this new app ecosystem I am architecting, designing, developing and deploying. More details at this page]

Earlier, I have written extensively about the design technique that I plan to follow to build the API Engine. The API Engine itself is a collection of APIs. For the last few days, I have been analysing the APIs that will make up the first batch of contribution towards the engine. I noticed that there are some essential tech components that they need to use to make it work.

Going by the design that I put in place, this is the second bubble from the API design titled as ‘Identify all Tech’.

So, here is the full list of tech’s that are identified to make this happen. The blog post image above lists it.

  • Build and Deploy an API
  • POST and GET to the API
  • PUSH and PULL from the API to the Data Service
  • Google Maps API on Android, Web and iOS
  • Facebook Login API on Android, Web and iOS 

I will of course, follow the design plan, and repo the above stuff, tutorial it. After that (these steps will take a few weeks to complete), I will finally have some serious unit testing to work upon.

As they say in the good books (mostly, there are no good books that I refer to. It simply me using them as proxy :P), exciting times lie ahead!

Follow me on twitterfacebook and instagram for more updates. Thanks

Your Mind Is Where Your Office Is

Years ago, when I started my first office job, I noticed something. I was based out of New Delhi at that time and it was a fun job. I had wonderful colleagues and a fun office environment. The amount of work was minimal, in fact, outright routine and I was being paid handsomely. Unfortunately, all these creature comforts weren’t good enough for me because I am an arrogant moron who cannot be happy be with what god in his infinite wisdom has given him.

He wanted more. Of course, I solved this conundrum eventually but until I solved it, I was stuck having to go to office every day. That meant figuring out some kind of daily commuting solution. Sometimes, it was a simple as a bike ride of 15 minutes. Other times, it was a 3 hour ride which included a city bus ride, a cab ride, a long walk and another bus ride. These are figures for a one way ride, and needs to multiplied by two.

Fortunately for me, Over the last few years, I have managed to reduce the amount of time I spend commuting to work by figuring out employment opportunities that do not involve me sitting in an office. As of now, If an average person spends about 250 days in office, I may have spent may be 100 days at most, and the number keeps reducing with each successive year. So yes, I am doing okay, working but not actually sitting at an office stuff. However, even on those few days when I travel to office, I cannot help but wonder why does a system such as this exist?

The answers are several and it is quite possible that no matter which answer I come up, I will end up upsetting a lot of people.

However, I did figure out something else, something that I learnt from being a programmer at a young age. The story goes back to the computer lab exams that we had to take in 6 out of 8 semesters of my engineering days. Out of the 120 students who were in my batch, I noticed that almost 110 of them used what was called a lab manual to practice for their exams. They would by heart (mugging up) the code(!) and then vomit it out on to the computer via the keyboard. Even in my very first semester of college, I thought this was odd. The whole point of a lab exam is to test your skills in a simulated work environment. Unfortunately, most of my peers were simply acting like a living and breathing Xerox machine.

The lab exam was for about 3 hours. These lab manual holding, copy pasting obsessed peers would wrap it up in about 2 to 3 hours. I would finish it in 5 minutes. If the lab exam started at 9 AM, I would have submitted my exam papers by 9 15 AM. This wasn’t a spec in the dark because, I repeated this in the remaining exams, and for the entirety of the 4 years of my engineering education. Over the years, I kept thinking about how I managed to do it. I kept telling myself if it is possible to replicate this (15 minutes versus 2 and half hours) at a work place.

In fact, 5 years ago, when I turned independent consultant, the idea was to implement this and make it happen. I could not come up with a name for it, except to call it, mind office. The title is easy enough to be derived. An office is a place that you go to get work done. What if, your mind is the office? If so, what if you could figure out a way to work inside your mind (not all the time because, mind sharing is not yet a real thing) most of the time. There are a truck load of benefits of working right inside your mind. Where you go, your mind is already with you. You are traveling in a cab, you are working. You are sipping coffee at a nice café, and you are working. You could be lying down on the recently cut grass on the lawn and you could be working. No need to commute or worry about internet connectivity or data access or any of the usual stuff that you can connect to the office environment.

As much as possible I try to implement this in my own work life. It just so happens that the software development industry is one of those that allow for working in such a mind office. If anything, I got additional information about this in a subject that we had in our 6th semester. It was called Software Engineering and I would end up reading it like dozens of times, just for the fun of it. The book talked about how software development is mostly about figuring out the different components of solving a problem. The book also went on for hundreds of pages about how, unlike in civil engineering or mechanical engineering, the solution in a software world is just ideas and diagrams and concepts. A civil engineering might need bricks to actually a house, but a software developer does not.

The more I think about it, the more I reread the book and the more I realized how true that. Going back to the way I did my lab exams, I finally found out why I was so fast. I wasn’t fast because I was some kind of super genius. I was simply applying the concepts of software development, the way it is meant to be. When a problem was presented to me (in the lab exam) I had simply solved the problem in my head. I had build the components in my mind office, and then, when I was asked to type out the solution, I did not worry about the solution. The solution was already ready in my head. It was just a matter of translating the solution from my head into the computer screen, debugging any issues that arose, and presenting the output.

During the first few years of my employment, I was surprised that these concepts were not being put to use. On the very first month of my job, I would listen to my then manager (very nice guy, but you know, but regular guy, like the 110 peers in the lab exam who need a manual to write simple code) lay out his strategy to increase sales and I thought it was lame. Sure, he has experience but that is all he had. He was essentially regurgitating what his managers did, who themselves probably had copied the strategies from their managers. I found that these folks were constantly reinventing the wheel, instead of inventing something else.

As a consequence of this, I found myself at odds with everything and everybody. I would explain to people that instead of spending hours and hours in front of work tools, we should be spending hours and hours away from the work tools. If solving problems is like cooking food, I would propose that we don’t enter the kitchen until we have logically proved that our recipe is fantastic. However, a lot of people would not agree. Almost everybody I met would jump into the kitchen the moment they were asked to cook something. Nobody stopped and tried to figure things out. I found this wasteful, unproductive and frankly boring because so much collective energy was being wasted.

That means, anytime there was a team project, my technique of working was always at odds with everybody else. I was branded an antisocial guy, an anti team guy. Add in to this to the fact that I am extremely punctual and extremely documentation oriented, sometimes it took only 15 minutes to become the most hated member in any work group. Add on to this, my general recklessness, and disregard for established social structures and cultures (none of which I subscribed to) I became impossible to work with. If anything, these issues are the real motivation for me to become an independent consultant.

All this brings me back to the mind office concept which I live and breathe each day in and out. Whenever a problem is presented to me, I rarely turn on my many work stations and start hammering away the code. On the contrary, if a project is supposed to take 20 hours to complete, I don’t sit in front of my workstations (plural because I always work with multiple computers) for more than a few hours. The remaining hours, I am lost in my thoughts and when necessary, scribbling away the solution in a book or a diary (digital or analog). By the time I actually turn on my workstations, the solution is all ready (just like the lab exam) and all that needs to be done is to hammer out the code. This process of converting the thoughts in my brain to computer code is fairly mechanical, which is why, one of my three screens of my workstations is constantly playing some movie or television show or running Civilization. The exciting part (the problem solving part) is already done in my brain, and this mechanical part bores my brain out.

I don’t know how many folks are out there, who use a brain office. If you do, please, I beg you, reach out to me and let me reach out to you. We have a lot of notes to exchange man!

Follow me on twitter, facebook and instagram for more updates. Thanks!

The Future Is Good But Only For Those Who Can Afford It

About 7 yeas ago, I was still working as a salaried guy at this company. It was paying bills, things were alright and what not. Around that time, Microsoft (my favorite tech company by far) released (and they keep releasing interesting videos like all the time) a video depicting in the future. The video – Microsoft’s Concept Future Vision 2020-  is available here at this link, and I have embedded it below, as well.

It is the year 2017 now, and we are 3 years away from whatever the video thought would have happened. Unlike Hollywood movies such as Blade Runner (flying cars, humanoid androids, planet exploration and terraforming) or even poorly made Bollywood movies like Love Story 2050 (which for some reason copies everything from Blade Runner to Star Wars to X-men? What!!! Why god why!!!!) these concept videos are made by folks who are considering the future, trying to build technologies that they can sell. Not a movie audience but an audience that wishes to get work done. In fact, Microsoft has an entire website dedicated to future vision of productivity called Productivity Future Vision.

Thus, much of it is plausible instead of fantastical. I loved that video from 7 years ago, and of course, the website has a more recent vision of productivity and has a different video. A lot of things that are in the concept video are already here. For instance, I see a child write something in English and that gets immediately translated to Hindi, on a transparent wall, for an Indian child to understand. The video is obsessed with transparent screens ( transparent screens are not practical, at least not for everyday usage) but otherwise, everything that happens in the video can happen. Some of it, is already happening.

Skype already has live language translation. That means, two folks who don’t have a common language could (with conditions applied) speak to each other, and let Skype do the translation. In another scene, objects are dragged from one screen to another screen. The HoloLens from Microsoft can do it today. Move stuff from say the television screen to the portable screen. A lot of scenes use a ‘wheel’ type input device, which is exceedingly cool. Although the ‘non-physical’ wheel is not real, Microsoft recently started selling something similar called ‘Surface Dial’. For creative work, the thing is incredible and totally awesome. Of course, I will say awesome so many times when talking about the future.

In another video (with similar stuff, available at this link ) a woman steps down from airport and by the time she steps out, the cab is already waiting for her, and at the hotel, the concierge is already waiting for her, and she is already checked in. Then, we see a guy who scans a screen at the metro station and pledges some money (the photo interacts with him like it does in the Harry Potter movies) and then continues onward with his journey. Then that woman (who checked into that hotel) wraps up a report on her tablet, and then sends the finished work to her colleague who then proceeds to create a virtual conference room. This video in particular, almost everything that is done here is already possible.

I love such things because life is about technology and progress is measured by it. If not for the fire and wheel, humanity would have long gone extinct.

While all this stuff is already happening (except for borderless and transparent displays), there is something that the video will not say. Or perhaps, it is not supposed to. When all is said and done, Microsoft is a company that is essentially making advertisements for future products. As I have mentioned above, a lot of things in these videos are already available to paying customers. It may not be as cool as it is in the video but it is definitely a future come true.

Now, this technology is awesome but as with everything, we live in a world that is mostly driven by capitalism. Money helps make more money. That is how the world is designed. Instead of going on and with imaginary examples, I will use my own work desk as an example. Although I hail from a poor family, due to a combination of luck, wanton recklessness and lack of respect for my father’s feelings, I was able to get round the clock access to computers and internet, early on. This was the year 2005, in a small city such as Mysore. People here were paying 60 rupees per hour (an amount that is worth almost 200 rupees today) to use a computer with an internet connection. I had it at my disposal like all time. By default, I had access to technology that a lot of my peers did not have.

The access to technology (and adult entertainment, obviously) completely changed the way I perceive technology. I was already slightly smarter than the average engineering student (yes, totally self bragging here) and this access to information completely changed things for me. I would spend hours and hours pouring our thousands of online articles. Much of this knowledge was organic and without purpose. In some unconscious way, I am probably still processing all that information. Yet, this access to knowledge (thanks to access to technology) completely changed the way I perceived the world around me.

Now, I never wondered why my peers did not have access to the same technology. Most of them had access to a computer, sure. However, most of them were not connected to the internet. Heck, all they did was watch movies and play video games. I did the same but for some reason, I was always obsessed with reading and now, I had the entire world at my disposal. There was so much to read. Eventually, I realized that the reason many of them were not connected was because internet access, back in 2005 was incredibly expensive. It was my reckless behavior and uncompromising stance and dozens of fights with my father that got me access to internet. My father resisted so much (although he eventually gave in) because it was costing him thousands of rupees every month just to get me basic internet access. Other fathers did not wish to spend thousands on internet. My peers did not wish to go reckless and fight for internet access.

At the end of it all, I figured out that, it all came down to money. Back then (unlike today) internet access fell into one of those things that you only buy with discretionary income. In my case, I forced my parents to giving it to me, possibly causing a lot of hardships to them in the process. In fact, the money thing just keeps coming back to haunt every aspect of our lives. I could talk about how better money (most of the time) leads to a better life but I am (as always) limit myself to technology.

The Microsoft videos are about productivity so I will go into the role technology plays in our daily. As mentioned before, the access to internet, completely changed my mind, and the way I look at everyday things. I was using online banking before most people knew what a website was. I was getting products delivered home before folks knew that such a technology was science fiction. That trait that started in 2005, continues in my life, with me almost always using productivity stuff that my peers aren’t using.

One of the first things I do when any assignment starts at a client location is to get a second monitor. I have worked on some assignments in some seriously large companies. It is always disappointing to see people not using a second monitor. Three monitors are almost a rarity. When I discuss with the IT guys, they tell me that second monitors are not offered (I did get mine, and always get because it’s part of my contract) because of cost. The lack of a second screen means a loss of productivity, so imagine the loss of productivity in a team with 200 developers all because the IT has been advised to save some cash? I don’t blame them. Every company (just like individuals) has their priorities and if a rupee can be saved if it can be done.

The same applies to wireless keyboards and mice. Wires indirectly lead to fantastic reduction of property and sometimes even injuries. Then there is the effect of poorly designed keyboards themselves. I spent close to 7000 rupees on my wireless keyboard and mice combo. I had to endure some amount of ridicule from my work colleagues (of course, not directly into my face because I am a senior developer and the architect. They better not openly mock unless they want to lose their jobs) and others who would claim that for the same amount, they could buy 7 wireless ones, or some 20 regular ones. However, my Microsoft Business Keyboard and Mouse comes with tiny enhancements (like the push back buttons on the keys that push back after each key press, the tickaty tackaty sound that makes me feel like a real typist, the clear spacing between the keys, the small size that keeps hand movement to a minimum reducing hand movement and the steel weight that keeps the keyboard in one place) that takes my productivity to a whole new level.

Essentially, this access to improved technology (which comes at a hefty price) allows me to work better and save time. Time that can be utilized elsewhere for something else. I could be saving as little as 1 minute, but that is still 1 minute saved. There is also the major side effect. Expensive productivity tools such as these last way longer than basic keyboards and mice, and they also endure less wear and tear and less downtime due to repairs. Of course, these bad boys don’t even need a dongle so when I am working across multiple PCs and tablets, it is so much easier to use them. Again, massive improvement in terms of productivity.

If I were to extrapolate this experience (expensive keyboard and mice equals improved productivity) imagine what people with access to technology as depicted in the above futuristic productivity videos depict can achieve? Imagine what you and I could do we had a 50 inch touch screen enabled monitor that can also be written on. Imagine being able to use the Surface Dial to switch between multiple menus using natural gestures. Imagine what is possible if we could teach essential programming using HoloLens and sharing that view with hundreds of other students.

Then, I realize, the only thing standing between us and maximum productivity is access to the right tools. The right tools, well, the better tools are the ones that cost a truck load of money. By extension, when the future technology arrives, and it will, the only way that anybody can experience it is if they have access to necessary funds. That means, an ability to earn such money, and then getting access to such tools, which in turn increases productivity, which possibly helps you make more money.

All this seems very apocalyptic but there is a bright side though. Technology usually trickles down to everybody. I had internet access in 2005. People finally started getting internet access a few years ago. However, I had the first mover advantage which I might have taken advantage of. So, when the above futuristic tools become available, the person who gets it first gets to take full advantage of it and the cycle will continue.

The challenge here is a simple one. Can we really be the ones who have the first mover advantage?

Follow me on twitter, facebook and instagram for more updates. Thanks!

Essential Economics and Online Movie Tickets

I realized very early on (perhaps even before I reached high school) that most of the stuff taught in schools (and by extension, the pre-university college, engineering college and MBA education) was perhaps not so useful. In its place, I discovered that these schools and colleges were a place to meet other brilliant minds – students, faculties, elderly scholars and university experts – from whom we can learn so much. It’s like going to a movie theatre and realizing that the movie snacks are better than the actual movie.

I found that the education system is flexible and allowed me to gather the knowledge I want even if much of it never came from the books. For that, and so much more, I continue to have profound respect for our education system, and the people who are part of it. Without them, I do not think I would have achieved whatever limited success I may have achieved today. 

One of those things that I discovered in my MBA days was economics. Over the years, I kept thinking, why isn’t economics taught to us as part of basic schooling? It is so essential to understand life, I think that is one of those they missed out.

As of now, I am in the fifth year of being an independent income guy. If I don’t figure out the economics of things, I have noticed that things seem to go very horribly for me. Over the years, I have become better at it but I feel that I have barely touched the surface. Today, I thought, I will simply write about economics using online movie tickets as the McGuffin.

I became a tax payer in 2008 and the first thing I did was demonetize my life. I went full online and that is when I discovered online movie tickets. The luxury of picking the exact seats (I am a big believer in sound acoustics, and take into consideration the size of the movie hall, the type of seats used and all that stuff to decide where I wish to sit and watch movies) is what really makes paying that extra amount of money to get the tickets online. Also, it totally beats standing in queue at the box office.

Movies fall into one of those services which can only be paid for with ‘discretionary income’. I have been watching, analyzing and understanding the movie industry (and its finances) for over a decade now and I have learnt that it is possible to understand a lot about any nation’s economy by looking at how much money the highest grossing movie has made on any given year. The more money a movie makes in any country, you can infer (with a certain degree of error percentage) how well off the people in that country are.

Discretionary income is directly linked to supply and demand for any service, and in our case, the movie service. Suppose, there is this super awesome movie that is simply the finest form of entertainment that cuts across age groups, gender groups, cultural groups and overcomes all language barriers. I am thinking of movies like Avatar and Titanic. Clearly the supply is of top quality, and the demand is there. For instance, when Avatar fixed its release date, movie theatres all over the world upgraded their projection systems to equip themselves with 3D. Thousands of movie theatres all over the world underwent fantastic renovations so they can feed off the millions of movie goers who want to watch Avatar.

Obviously, it happened in India too. So, there is a good supply and there is good demand with the super nice movies. That brings us to the fixed cost. A fixed cost is something that the owner of the movie theatre must pay irrespective of how many people are sitting in the movie hall. In fact, movie theatres have some of the highest fixed costs when compared to how much money they make when there are literally no customers. To understand this, imagine you are living in a big house (like in one of those Sooraj Barjatya movies) with ton of people. When everybody is at home, all the lights are burning and kitchen is being utilized and that is perfectly fine. That’s maximum utilization. Suppose all these people went for vacation and you are staying alone. If so, you could limit yourself to staying in a small room, so only that room’s light is burning. The food will only be prepared one person. The water will only be consumed by one person. By extension, the cost is directly connected the number of consumers. One consumer equals say, one unit of cost.

In a movie theatre, though, it does not work that way. There could be only one person in the movie theatre, or the movie hall could be full. Either way, the entire hall must be powered on. Fixed cost allows an individual to figure out so much about how the economy of an entire nation or city or individual is faring. When you connect to the earlier fact about discretionary income only, so many things become clear.

For instance, understanding this allows one to realize why the movie food is so overpriced. A tub of popcorn that costs barely 30 bucks (half a dollar) costs at least 200 rupees ( 3 to 4 dollars) inside the movie theatre. Water bottles are marked up by at least 200 percent, and that’s perfectly legal because the MRP label indicates it. Of course, this is also the reason why the water cooler (which provides free water) is almost always tucked away in some far corner where its impossible to find.

This extends to the several offers and all the stuff that the online booking service does. The service which sells these tickets online also has a fixed cost which relates to its IT cost. Its revenue is tied to the overall movie industry, essentially acting like a huge movie hall. That is why, it is almost always possible to guess when there will be loads and loads of discounts offered and when there will be none. It is also possible to predict ticket prices and what movie will cost how much.

This further explains why the ‘service charge’ or the ‘internet handling fees’ can sometimes be as high as fifty percent of the actual ticket cost. By extension, this is another reason why you must pay hefty fees for the 3D glasses, and further reason why so many movies are shoddily converted to 3D (instead of being shot on 3D) thereby ruining the movie going experience and also ensure that we will continue to have a poor opinion about 3D as an effective story telling medium.

The movie industry is also facing a slow death because now, there are so many alternatives. Television has always been the easy option for a lot of people. More importantly, television is not directly linked to discretionary income since it becomes part of the monthly utility bills. Same goes to online providers such as YouTube and Amazon Prime and Netflix. These folks avoid the problem of discretionary income, something which the movie chains can never avoid.

The way I see it, I fully expect the movie chains (and the online ticket services) to ruin the movie going experience and do what is called as ‘self-fulfilling prophecy’. They want to avoid going out of business, and do lot of tricks and then, the same tricks will turn movie goers away. Almost all movie ticketing apps have turned into massive ad display banners. Movie theatres keep increasing the price of movie snacks (which has the effect of turning away people instead of making more people eat it) like every month. Then, there are these ads. Now, we are forced to sit through ads before the movie starts and then during the interval. Heck, last time I went to a movie, the movie just paused and an ad just started playing. The preceding scene was a dramatic moment and the ad just ruined the impression.

Essentially, in a bid to survive the movie chains and movie ticketing companies are both doing everything they can to put off to movie patrons.

As I said, its all basic economics, supply and demand, discretionary income and fixed costs. We must respect the invisible hand and play its own by its own rules. Trying to find short cuts will inevitably lead to drastic misfortunes.

Follow me on twitter, facebook and instagram for more updates. Thanks!

Facebook and Oculus Rift and Doing the Wall E Future

It has been over 3 years since Facebook purchased the current big name in VR, Oculus VR, who make the Oculus Rift headsets. My experience with VR has been limited to Google Cardboard, which is a decent approximation of what to expect from actual VR. Of course, I still have that Google Cardboard thing, but after the initial few hours, I never used it.

The VR makes us (the user) part of the action, to the extent that video and audio can. This is in contrast with a regular movie or TV. The fourth wall is strictly in front you, and clearly defined. With VR you are inside the four walls, and that means, you can look around and depending on the technology (and the capability of the technology used to develop the VR media, interact and perhaps even change the virtual reality world. VR will put you in the driver’s seat of a formula 1 car for instance, or make you one of the characters in a movie or allow you to roam around in a (virtual) Jurassic park with huge dinosaurs and totally insecure and untested security systems that are designed ensure that all humans will die once these beasts escape from their cages.

Now, that’s VR.

Then there is Facebook. At it’s core Facebook is essentially a place to share media (photos, videos, links and of course text) and allow others to interact with it. It plays on the essential human instinct to show the world what you are, and just may be, tell them that you are doing something they are not. Essentially, it’s an ego feeding machine that also has some peripheral uses like networking and business development and (actually) keeping in touch with people we care about.

So, why would Facebook bother having Oculus as on of its subsidiary? It is essential to understand that Facebook has always been a platform to get things done. It’s like the operating system that powers your phone or PC. It’s like a (virtual) home or house in which you live. If your Facebook account is your house (filled with memories, the joys and sorrows, the events and milestones and all things that cover), the interesting thing is that you cannot live in it. You are essentially operating from outside the fourth wall. It’s like when you go to the zoo. Sure you paid for the ticket and you are here to see the Lion but you cannot go and roam around with the Lions or pat them or take selfies with them.

I think the idea here for Facebook is to break that fourth wall and put you in the middle of your facebook account, which is by default your digital home. I am sure that VR is at least 5 years away from becoming mainstream. I wrote about the many problems with VR in an earlier blog post. Many of the problems I talked about earlier are solvable. They are mostly engineering issues (like processing power, displays, battery capacity, user comfort) which will be fixed because the march of technology does not stop for anybody. People (and the world is filled with people who are constantly coming up with innovative solutions) will always figure things out.

While talking about VR, its hard not to think of the quick growth and death of 3D. I think what killed 3D was the same thing that killed 3D 30 years ago, as well. The lack of content. Imagine you buy a food processor that makes fantastic fruit juice in like 5 seconds. Unfortunately, lets imagine a scenario where you live in a time and world where it is impossible to get fruits. You want to use your processor but there is no way to get fruits. The television companies were selling 3D television sets like they were the next greatest thing for the living room but other than promotional videos, there was literally nothing else that was available in 3D. Streaming companies never really embraced 3D in a big way. User generated content also never happened. So, every possible producer of 3D video declined to generate 3D video. There was no supply, and there was no consumption and by default, there was no demand for 3D hardware. Everything just fizzled out. It’s Economics 101.

This time though, I have a feeling that perhaps VR medium will grow. If Facebook gets it right and figures out a way to convert the trillions of GB of data it is sitting into a VR format (and ensures that users don’t have to jump through hoops to create VR content for consumption), supply is ensured. Once there is a steady supply, consumption will happen and demand for VR devices will grow. This will circle itself into the expected never ending cycle that will lead to mainstream VR adoption, lower prices, easier access and stuff like that. Obviously adult entertainment (as it has done with VHS tapes, streaming media and Blu Ray adoption) and gaming entertainment have a big role to play in this.

My job allows me to interact a lot of people (like 1000s every year) and each year I notice that the younger generation is becoming more and more digital social, less and less real life social. Obviously there are some serious negative consequences in the long term because of this, but I don’t see how this can communicated. As we consume more and more digital services, and use digital tools for everyday communication, I can see that people will embrace VR as part of their lives. Mostly because they don’t have a choice, but sometimes because they really want to.

Eventually (perhaps even in our own lifetimes) we might see some version of the life depicted in Wall E. You know people just sitting on chairs and everything being done for them, and happening from where they sit. Hopefully, at least some people will get up and get things done. Or, we might have to abandon our planet, just like in Wall E.

Follow me on twitter, facebook and instagram for more updates. Thanks!

Project TD - Day 28 update – Design for the Modules of API Engine

[Ongoing series of blog posts to inform potential developers, users and (hopefully investors) about this new app ecosystem I am architecting, designing, developing and deploying. More details at this page]

I have already blogged that the entire app ecosystem depends on what the heart pushes and collects. The heart being the API Engine. I have written multiple times that the whole system must be modular so that parts can be replaced and re-engineered if something goes wrong. Or, if there is an opportunity to make things better tomorrow, then, that option should be readily available.

To that effect, I have come up with a design plan (pictured above) that should drive all engineering efforts towards the API modules. It’s a simple and plan design, but it should be enough to help me. Obviously, it is subject to further revisions if the occasion should call for it.

Pick an API

The API Engine is but a collection of API calls running on a single API server. On one side, it provides access to facilities to end users. On the other side, it has the necessary access to the underlying database. As of now, 12 API calls that would form the first batch of API services that will be part of the API Engine.

The idea is to pick up, one API service (each of them will have their own designs) and then start working on it. First step would be figuring out the design which means, illustrations, finite discussions about its usability with the stakeholders. Once the design is confirmed to work (to the best of data available), then we move on the technical part of it.

For instance, for the patron app, there would be one service that pushes the restaurant data to the server. This would be one API call. So, I would start off by designing the work flow. Show the workflow to as many people as I can (my, mom friends, my tech mentor, the many students who are under charge and of course, random strangers) and collect its feasibility. Use this feedback data, and design the final workflow.

Identify all tech

At this stage, the design and the flow of activities of each identified API has been done. The API design itself is completely independent of the underlying tech that will actually power it. For instance, the design is like I wake up in the morning and decide to have breakfast. The actual activity of eating breakfast might involve many things. I could have a pack of biscuits. Two packs of milk. A luxurious breakfast at my folks place. Or go out and pay a decent amount and generous tip at my favorite restaurant. As you can see, the decision to have breakfast and actually having it, though related, are quite independent of each other.

Similarly, the design is always independent of its implementation. It’s part of the modularity and replacability thing I keep going on and on about. Here, I will be thinking only of implementation and not question the design choices.

Earlier, I mentioned an example API service that pushes data from the patron app to the cloud. So, I need to figure out all the technologies that will make this happen. It would mean, I need to build a web app, android app and a iOS app that has a simple button. This button would collect data (that mean, I need to figure out how to collect data on all these platforms) and trigger a cloud push on button press. Like this, I break down the design into individual components and see how the code would actually work for these things.

Repo it

Once the tech part has been figured, the next part is pretty straight forward. I have already promised that a lot of stuff related to the project would be open sourced. Anybody can use it non-commercial uses. So, I will push the code of the web stuff, the cloud things, the app solution, everything on a public repo.

Tutorial it

The repo will have the code. As is my standard practice, I write pages and pages worth of documentation within the code. However, it helps me (and my career) to have some tutorials that point to the approach I took while converting the design into runnable code.

Unit Testing

Once the repo and tutorial is done, I need to check the individual fitness of the resulting module. This will ensure that the unit itself is independent and will involve writing dummy external connections.

Integration Testing

Once the unit is confirmed to be fit to work, next comes the part about integration. I have to check if this module will work with the rest of the modules. I also need to check to make sure that the system won’t come crashing down when the module dies or goes corrupts or simply stops working for some insane reason.

Once the integration testing is done (if it fails, I will probably have to restart at the design stage and work down from there), I put the module aside, and start over by picking up the next API service to work on.

Rinse and Repeat

This part is useful when, at a later point, if some new tech is introduced which will make things faster. Or perhaps some technology on which the app depends gets rebooted and revised. For instance, Microsoft might replace their existing mobile data service with a new one. Or, Facebook might implement a new login system. There are so many gears moving here man, anything can change.

Anticipating change and being ready adapt is the only way I can keep this engine relavant and allow it to evolve.

Note about Sketchbook from AutoDesk

I have upgraded from hand written illustrations to using the Sketchbook app by AutoDesk on the iPad. For the purpose of drawing, I am using an Amazon Basics stylus. I must confess, there are some serious advantages to using this over the hand written thing. Obviously, the free app has certain limitations. For instance, I can only have 3 layers (which is alright but annoying) and I cannot select components (which is the biggest handicap of the free version). Eventually, I will have to get the pro membership, but I have to evaluate this system first. Once I am satisfied, I will kick things up a notch with the pro membership which provides tools for desktop and android as well. It is fairly inexpensive and should be useful.

The Amazon stylus is extremely basic, and there is a learning curve involved here as well. I feel that it is good enough for now. If this art design thing goes to the next level, I will probably spring for a Wacom stylus for a better control over the designs. For now, I am still trying to figure out the stylus.

Follow me on twitter, facebook and instagram for more updates. Thanks!

Project TD - Day 19 update – Moving from Requirements Planning to Design

[Ongoing series of blog posts to inform potential developers, users and (hopefully investors) about this new app ecosystem I am architecting, designing, developing and deploying. More details at this page]

Aha! It took 19 days for me to wrap up the requirements planning. I have been using the whole Island – Volcano – Ships and other stuff – Ocean as an example for my ecosystem. I think that makes sense because everything that happens in software (or any machinery) for that matter is a reflection of real life itself. That is why, it is only prudent that I (with my limited intelligence and even more limited imagination) use some real life stuff, especially nature stuff, as an example eco system.

Right then, enough with my babbling. So, the requirements planning is done. A huge chunk of details related to this is documented at this link, creatively titled, Requirements Planning. Of course, nothing is ever done when it comes to any planning. Yet, I am happy with the stuff documented so far. I feel confident enough that I have enough stuff to move to the Design stage.

The design stage will be elaborated upon I future blogs posts. May the force be with me.

Follow me on twitter, facebook and instagram for more updates. Thanks!