jay's old blog

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

Delivery Date (When It’s Done but with beta access)



[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]

Right now, I don’t have a proper estimate as to how long this project would take to reach conclusion. In fact, until I finish working on the use cases, I won’t have a clear idea. Further, I am still building my team, so until I have a grip on the head count, the deadline will not be that obvious.

Despite all these reservations, one cannot work without a deadline. Luckily for all of us, unlike an actual physical product, a software service is built as, well, a service. We can always have variable goals with variable features. The basic nature of software ensures that software evolves, like life itself. With that in mind, here are the dates I have given myself for now.

First Beta – Version 0.5.1 – December 5th 2017

First Release – Version 1.0.1 – June 25th 2018

The idea is to work on the two channels – beta and release – separately. That means, there would be two ecosystems running parallel. The beta eco system which will be pretty unstable, and unfit for everyday consumption. This becomes a playground for enterprising individuals – developers, testers and idea women and men – to experience cool stuff, fail and get up. The release channel is the end product of hundreds of testing hours and ready for regular people use.

While I make these grand plans, I understand that the project itself may never come to fruition. I once spent 4 years working on something, only for it collapse over a matter of weeks. Still, no work goes unrewarded and if this project also should face a similar defeat, some gains are always there to be made.

Besides we all remember Duke Nukem Forever.  

[Last Updated February 10th 2017]

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

Open Source or Closed



[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]

Code development always brings up the question of code visibility. Should it be open sourced or closed source?

This Project TD could be a complete waste of everybody who is involved. Or it could be something really cool. Or somewhere in between. Yet, as I enter my fifth year of being a trainer, I have proof to show that at least some of my stuff has become useful to others. This project (and all its related resources) might become useful to at least one other person. Perhaps more if I am lucky.

Then, there are the personal benefits I have enjoyed, thanks to open source software. I use Firefox extensively. VLC player, another software that has really made my life better. Back when I could not afford Office products from Microsoft, I used OpenOffice as well as LibreOffice. Then, there are all those free code that is available online which has helped me greatly.

All in all, at this point, the decision to go open source is obvious, as long as all materials related to project TD is used for non-commercial purposes, and the user links back to project TD related resources. I may add some more conditions, but for now, this is all there is to it.

[Last Updated February 10th 2017]

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

Project TD - Day 7 update - Requirements Planning updated



Project update.

So, I went ahead and have updated the following stuff in relevant pages.

Delivery Date (When It’s Done but with beta access)
Open Source or Closed
Hardware
References
Design Tools
Version Control and Project Management
Back up and Redundancy

Obviously, the main Requirements Planning post has also been updated, with the above links for future reference.

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

LAN Messenger and Slack – Instant Connectivity for teams



I am currently in the process of raising a huge team of volunteers to work on Project TD. Obviously, that means, I must prepare for the project, details of which can be found at this page. However, there are so many other things that become known, as and when the need arises. After much research, I have narrowed down on a couple of options that work very well.

LAN Messenger

Even in the worst working conditions where a group of people just get together for a training session or a haphazardly put together workshop, the existence of a LAN network can be assumed. That is where LAN Messenger becomes an interesting option. LAN Messenger (and similar such tools) simply detect every PC on the network that is open to accepting connections, and then allow for quick instant communication. Transfer files, exchange messages and even group calls.

I usually use this when I am working on multiple computers at the same time (which is almost all the time) and wish to exchange data between these computers without having the data leave the LAN setup at my place. Another reason I prefer this option is because, this technique is independent of the internet. For instance, the other option (below mentioned slack) would require constant internet access and that creates a problem when you are exchanging files between users. If the internet goes down so does your communication platform.

One more reason to prefer is that, there is no hassle of setting up an account. Further, internet based communication systems are open to outside interference, which does not happen with LAN Messenger. If you are not physically present within the range of the LAN, you are out of the picture.

Get LAN Messenger Here.

Slack

However, slack (yeah, I am not recommending Skype for team connectivity) is the best option for teams that are spread out and are mature enough to use it. It has all the goodness of LAN Messenger but it is also a full-fledged communication system. It is pretty cool (with mobile apps and everything) and is free! I have used it a lot and when using LAN Messenger becomes impractical, would happily switch to this.

Again, the maturity part is the most important aspect. If your team members are immature (you will know if they are), then slack becomes a horrible option. If not, this is preferred over LAN messenger.

Get Slack Here.

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

Project TD - App Ecosystem – Day 5 – Requirements Planning



[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]

It all starts with an idea, and I seem to already have one. Then, comes the requirements planning. In many ways, requirements planning is a catch all term. It is sort of like a trip plan that one makes before leaving the house. The app ecosystem will consume a lot of my (and anybody else who might join hands with me in the future) time, energy and of course, money. This document will record all the many different components that need to be built.

Obviously, this is just a blog. I would eventually need to look at a more efficient tracking system (I have my eyes on Atlassian’s offering for planning and tracking software development, JIRA) as the code grows. However, the more professional tracking solutions cost a bunch of money, and I must justify the cost before I can jump into it. Cost Benefit Analysis is the key here.

Right then, here are the many components of this project. This list only encompasses the things I have thought of and jotted down for the last two months. As the project progresses, I am sure much of the below will evolve (not change. The below notes will evolve) over time. Each of them will link to their own pages, with additional details.

Delivery Date (When It’s Done but with beta access)

Open Source or Closed

Hardware

References

Design Tools

Version Control and Project Management

Back up and Redundancy

Technologies Involved (modular approach)

Native or Xamarin

Choice of API technology

User Types – Operations and Administrators and Consumers

Accessibility, Multi Language Support and Natural Interfaces

Choice of Cloud Platform

Supported Platforms – End Users

Error and Logging

[Last Updated February 22nd 2017]


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


Amazon Customer Service - It's a mixed bag



Update on February 8th 2017

So, as it happens sometimes in life, things can go bad. So, Amazon took the wrong item that was delivered. Then, by some weird sequence of events, delivered a brand new laptop, which was again a Vostro instead of a Inspiron.

This time, again the customer rep was very apologetic, and happily transferred the call to the supervisor. Again, the supervisor also apologized, and obviously I asked for compensation. Nope, they wont give it.

I asked to speak with the seller (I later discovered that the seller is an inhouse seller, so Amazon is the seller in this case) but that was declined too.

I asked if it is right that this seller has just ruined my confidence in amazon shipping? The supervisor said it is not, but there will be no penalty for the seller or any compensation for me.

So, I resigned to the fact that nope, my options are once again, to get a replacement or a refund. Since the specs were almost identical (and I spoke with Dell who confirmed that despite this being not the laptop i actually ordered, there wont be any problems with warranty), I just decided to hold on it.

My confidence with Amazon is a little shaken, but I suppose, the policy only extends till refunds and returns, without any compensation. Dunno what else I could do about it.


Original stuff

Like a duct that takes to water, I almost immediately embrace online stuff (which could be said about anybody who was born in the 80s onward) I took to online shopping the moment it came to India like 6 years ago. Obviously Flipkart was the only choice available. Back then, Flipkart was a small company, and their customer service was just excellent. Then, they got bigger and as it happens to any Indian company that becomes big (I have written about poor service with Airtel and Paytm previously. Of course, this  become bigger become arrogant and give poor service affects Indian divisions of International companies like Xiaomi too!), Flipkart started doing all the bad things big companies do. Their wait times got insane. emails took time to arrive, and IVR became a rubik's cube that cannot be solved by mere mortals.

Of course, those who read my blog should not think that I am always complaining. I have praised Vodafone and Faasos when they have done excellent things, and obviously I am about to praise Amazon.

After that incident with Flipkart, I decided to go with Amazon, and that was 5 years ago and I am still with them. Amazon, of course is the world's largest company, and not just in retail. They are like seriously huge company. Yet, they haven't forgotten the basics of customer service. Recently I ordered an Inspiron machine and somehow the supplier (who is not Amazon, this is important) sent me a Vostro machine. Reaching out to amazon customer service is easy. Log in to the website, and there is a option called 'call'. No rubik's cube inspired IVR and none of that nonsense. Then, there is the wait time. 5 years ago, and now, it is still less than a minute. I was always worried that once Amazon got too big in India (look at what happened to Xiaomi above), I thought they would reduce their focus on customer service. Now they are big in India, and yet the wait time is less than a minute.

The friendly customer rep listened to me (the website had already shared all the order details, so we got right into the issue right away) and asked me to email some photos of the wrong item to be delivered. I did that, and 3 hours letter, amazon replied that someone will be here in 24 hours to collect the wrong item. Further, a new item has already been ordered, and it will begin delivery the moment I return this wrong item. Today morning, the amazon pick guy called me up, and he is on his way.

Of course, I am yet to receive the actual item I ordered, but this is Amazon's 2nd mistake (and it is the supplier who put the wrong thing in the box) in 5 years, and I ordered dozens of things every few months, so the number of orders I have with them is huge. Even now, something could go wrong, but so far, the communication, promptness and the energy with which the amazon system works has me impressed.

I will update this as the story develops.

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

Giving medium a Try



I recently wrote about medium, not as a blog, but the effect advertising based economy is affected, especially with the internet related stuff. That is how the wheels are turning, so there is not much we could do about it, I wrote in that post.

However, medium is trying something different. It is possibly going ad free, and as someone who does not enjoy the ‘ad based’ stuff, I developed a soft corner for them. Today, medium announced that they are looking at taking things in a different, non-ad based direction. Given the state of flux they are in, I am not ready to move my entire blog (the current one) to medium. I am, quite honestly, worried that medium may not be around for too long. I am thinking of Vine, and of course, my own previous effort, study nildana, of course.

However, for a while now, I have been thinking of writing about Mysore city. There are truck load of details available about this lovely city of mine, but, as a resident, perhaps I can give it a unique perspective. I have traveled extensively for the last 5 years, and have stayed here for 10 years before that. Overall, I think I have the necessary knowledge and temperament to write about this fantastic city.

So, yeah, I am going to create a new blog over there at medium, and focus exclusively on the city. I think it will be a new experience for me. The current blog is bare bones, and by design, it is kept that way. It keeps my life simple so I can focus on the content, and not about other things. However, this blog on Mysore city though, ah! An opportunity to try a modern blogging platform, and perhaps I will even check out this new subscription system medium is trying out.

Worst comes to worst, I could just move everything back to another blogging software. Besides, what I really care about are my tech rants, and this city related blogging, will, at best, be a hobby.

Find my first post on medium, right here.

Good luck to me!

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

App Ecosystem – Day 1 – Naming the project and beginning things



Yesterday, I wrote about finally beginning to work on not just an app, but an entire app ecosystem. As with anything, everything starts with giving it a name. A name is everything isn’t it. In my earlier post, I spoke about the relevance of meaningful names making code. If I am the kind of guy who spends so much time simply naming a basic variable in a simple piece of code, I should give a proper name to this app ecosystem as well.

While naming, there are two types of name. There is the placeholder name, and there is the actual name that you use for marketing. As an independent businessman, I must appreciate and more importantly respect the value that marketing brings into day to day business activities. So, for now, I don’t have an actual marketing name for my ecosystem. However, a placeholder name, I will go with would be ‘Project TD’.

What TD stands for, should remain in my own head for now. I am weird that way ;)

Moving on, any app ecosystem, especially a technology system, should and must follow the Software Development Life Cycle. Sure, a guy like who hate using established systems such as SDLC. It’s boring, and it sounds dull because some folks designed such things, and they were probably not cool. I almost always take the road less taken, the uncharted island attracts me more than an established. However, I admire and respect what others have done, cool or not cool. Respect must be given, where it is due, no matter how much I might not like on a personal level.

So yes, TD will also follow the SDLC cycle, but I will make changes as necessary. A development model that does not adapt to changing scenarios is a dead one. I don’t want my development model to die, obviously. Here is the standard life cycle that I will be using.

  • Prep work – includes risk analysis
  • Design – loads and loads of drawings and diagrams. Also includes presentation, mostly to non-tech people.
  • Development – Loads and loads of typing. Referencing external sources, books, mentors. 4 monitors, with simultaneous coding on at least 2 computers.
  • Testing – Engaging with lots of different types of users, everybody from tech savvy users to folks who are turning on computer for the first time. A true architect and developer never forgets his users because that is where the money comes from.
  • Deployment – Including a lot of security stuff, discussing encryption systems and networking realities.
  • Repeat and Rinse.

While all this cycle stuff is happening (or will happen), perhaps the most important question is why do all this? More importantly, why do this at all?

The answer, it boils down, to the simple life concept of ‘show, don’t tell’. Even when I was a kid, I preferred to show stuff, rather than explaining stuff. Interacting with the five senses is perhaps the best way to get some work done. This blog (and all the other things I have done and shown for the past five years) has helped some score some serious amount of deals, and that means colour green. While I am already designing end to end solutions for clients, I am yet to train people on end to end solutions.

Posts such as this one, and many more that will follow, will help me keep track of progress. As always, I also hope that some of the things that I write on blog will help others who need information. Hopefully, at least one of these goals will be achieved.

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

Evolving from App to App Ecosystem



Few years ago, when I was building my android portfolio, I worked on some essential apps which can be found here, here and here. Obviously, the servers related to them are currently switched off, and the app themselves removed or not function in the google play store. Of course, those apps helped me get the assignments I was looking, so the investment made in those (now) defunct apps have been recovered many times over.

However, some benefits much deeper than just return on investment, both time and money. As I was building those apps (2 to 3 years ago), I felt that something was missing. I was developing apps, but the bigger question was this. Where do these apps live? If apps were people, then where do people live. Earth is where we live, and we thrive because of the ecosystem.

Of course, this is something which is known to most of us, but I realize that now, back then, I always thought of myself as an app developer. Obviously, even back then, I never thought of myself as a lowly programmer, so I was always thinking of ahead of many of peers. Now, as the years have gone by (hopefully, a little more mature) and over the last few months, I have been thinking about updating my portfolio. Replacing them with newer, and hopeful better (but not necessarily useful apps, because, that is not really the industry I am in) apps.

However, I realized over time that (and this thinking process is what has allowed to work as a solution consultant instead of a simply being a trainer or a developer) that when I rebuild these apps, the focus should be on building an ecosystem rather the apps themselves. Apps don’t work alone. They interact with the user. They interact with other apps installed on the phone. They interact with the operating system that acts as the platform on which they run. Not to forget that apps also interact with the hardware underneath the operating system, and there is the issue of performance and optimization. Then, there is the part about data. There is data storage which happens (or should happen) online as well locally. When it comes to online data, it could be cloud services that enable the app to do its own job, while also integrating with cloud services that provide additional facilities.

As I took time off from android to work on dot net, these thoughts have been consistent. Whether it is a web app or a mobile app or a desktop app, all apps (big and small, huge and tiny) are part of an ecosystem. Interacting with elements that have come before them and with items that come after them. The keyboard I am typing on was probably designed before computers even properly invented. Yet, here we are, living in a magical world where I can talk to a person literally on the other side of the universe.

It’s a wonderful world we live in, and it is finally time for me to absorb this understanding into any and all things I develop. No, I am not a app developer. In fact, I haven’t been an app only developer for a few years now. I am now an ecosystem developer and that is what I should do.

Of course, all talk and no walk is not something anybody will appreciate. Going back to what I said (and have done years ago) about those three projects, the app related to restaurant tipping is the one that is closest to my heart. Mostly because I eat out a lot, and love leaving generous tips. That is where I will start. If all goes well, in a few months from now, I would have built a proper tipping eco system. If not, I would have learnt some really cool stuff and would be even more prepared to restart the eco system building process.

Either way, it will be awesome and win-win situation for me.

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

Version Control and Git – Part Three

A long time ago (like 6 months ago) I promised that I would complete my git aka version control tutorial. Looks like I get to finally do it. Meanwhile, you can find the first two parts, here and here.

This post talks about actual usage, while the earlier ones talked about some other stuff. There are two things happening here. One, is the online repository. There are many folks who provide repository services, and I use Bitbucket. You can create a free account at them, and they allow any number of repos. Further, they also provide private and public repos. So, that is good because some services don’t allow private repos without having to fork out a lot of money.

So, you will visit Bitbucket website and then create an account. I won’t write how to create an account, because if you want steps for that, you should probably not be a developer. After the account is created, you can create teams (and then add members). You can create projects, and then within projects, you can create repos. All this is pretty self-explanatory once your account on bitbucket is ready.

Once a new account is created, there are two scenarios – you already have code on your programming PC, or you are starting from scratch. Right now, I am looking at the first scenario because that is the most likely scenario for those who begin code on the PC and then wish to push it to the online repo.

Start at the online dashboard of bitbucket. Create a repo. You should probably create a project folder first, and then, create a new repo. This allows better organization as you begin working on multiple projects.

So yeah, you use the ‘create a new repository’ option and will be presented with the standard set of options.

·         Choose an owner – this is useful if you are part of a team. Choose a repo you own, or a repo that will become part of a team, and hence available to team members.

·         Choose project – the repo will become part of a project. Choose a project of your choice, or create a new project.

·         Repo name – the repo name of your choice. As always, try and use meaningful names.

·         Private or Public repo – self explanatory

·         Repo type – use Git. I don’t know much about the other option, which is mercurial.

Once you create a repo, the site should give you two options (and two links with actual steps). Use the first option, which is about mapping existing code files online. Here is a sample of what you might see.

  1. Step 1: Switch to your repository's directory

cd /path/to/your/repo

  1. Step 2: Connect your existing repository to Bitbucket

git remote add origin https://Jay_sn@bitbucket.org/thechalakas/testforblog.git

git push -u origin master

As you can see from the above commands, it is clear that these are the commands we must use on your work PC to get things moving. Now that this is ready in the web browser, it’s time to shift our focus to your PC.

Start off by getting the necessary tools from this link. https://www.git-scm.com/downloads

If you are feeling like a small baby, you can also download the GUI tools, which is okay.

Once you have installed the GIT SCM tools, you should have the git tools installed in your PC. Hopefully, you checked the box that says command line integration. If not, you better go back and do it. After the whole thing is setup, under applications, find ‘git bash’ and open it.

Now, use the step 1 and step 2 from above. Unless the solution is already initiated with the ‘repo’ stuff, the steps will not work and will give an error. To see if git is actually setup for your code files, I always use ‘git status’ command. If git is not setup, you will get this.

fatal: Not a git repository (or any of the parent directories): .git

So, you go ahead and initiate the whole git thing by using ‘git init’. This will do some stuff, and then, you should try ‘git status’ and you should get a different set of things. Mostly in red color. You see, the red color files and folders are those that are now detected by git. The red color means, the files are not being ‘tracked’ for changes. This is of course what we want because the whole point of version control or git is to track what changes you are doing to the code.

Right now I am going to assume that you wish to track everything in this code folder of yours. So, you will use the command ‘git add *’. This will add everything to be ‘tracked’. Now if you try, ‘git status’, boom, all the files will be in green. That’s the universal color for go, so we are good to go. Green also means, we are good to commit stuff, which is another way of saying, we are on the right direction to push things to the online repo.

Before we can push, we must commit the changes. For the now, the biggest change is the new file that has been detected. So, use the command ‘git commit’. This will bring up a ‘vi editor’ which will be familiar to you. If you are not familiar, then, perhaps you should not be practicing for a career in programming. Here, you will write some commit notes (by using a combination of Esc key, arrow keys, a key and i key, and constantly using Esc key, until you figure things out) and then save and quit the vi editor using ‘wq’.

Once you do wq, you are back in the command line, and the committing is done. Now, its time to push. As per the two steps from above, we should set the origin. So, lets do that by using a command that looks something like this.

git remote add origin https://Jay_sn@bitbucket.org/thechalakas/testforblog.git

Since this is the first time you are doing this, you will be prompted for a username and password. That will be your bitbucket login information. Once you do that, the command should work as expected, and then, you are back to the command line. Note that we are still setting things up, so the code is still not yet pushed to the online repo. Now, as per the two steps above, we need to actually push stuff.

 For that, we will use a command that looks something like this.

git push -u origin master

Now, you will get some internet upload type stuff. Depending on the number of files you have, this could take a while. If you are on a slow internet connection, this could take a serious amount. While you are waiting for this to finish, here are some things you can think about.

·         How productive is it to watch a movie while programming?

·         Is it better to work with 2 monitors or 3 monitors?

·         Will there ever be a sequel to Mad Max Fury Road?

·         If you two mice are connected to the same PC, and moved at the same time, which will be given priority while deciding cursor movement on the PC?

Okay, has the code been pushed online? Good. Now, go back to the bitbucket repo in the browser, and you will see all the code which was on your PC, a copy of it, is now online. This was the setting up part.

Now comes the actual usage part. On your PC, go ahead and make some changes to the code file. Or multiple files. Either way is fine. Once again, do ‘git status’. You will see the files you made changes to, in red color. As before, you need to add the file you wish to commit and push. I will simply do ‘git add *’ for I wish to add all files. Then, try ‘git status’ and make sure that the files you wish to push are in green. Now do the ‘git commit’, go through the whole vi editor save and quit thing, and then use ‘git push’. Once again, you should see the whole commit upload files thing happening.

Now, if you are using multiple PCs, it is possible that when you push stuff, you will get some unknown name on the repo. This is a high possibility. In which case, on the web bitbucket page, the name should be attached as an alias to your actual account. Do this and you will get your name (or whoever is doing the commit) in the alias connecting page. Of course, only admins can do it. If you created the repo, then you are obviously the admin. If you are working with someone else’s repo, then ask them to do it for you.

Alright then, good luck on your journey to become a better developer.

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