free html hit counter
Posted on: Monday, November 25, 2019 by Rajiv Popat

Automating And Being Mindful Of Stuff That Matters - Part 1.

True Automation And Data Collection In Your Life.

Wearables and fitness trackers were virtually non-existent five years ago. The nerds amongst us were using a physical pedometer to track our steps.

pedometer

Fast forward five years and wearables are now a 25 billion dollar market. They are everywhere!
Even though most metric the wearables track hardly mean anything, wearable health trackers have at least proven that people love the idea of monitoring their health. I personally believe that automation and analytics involve more than just wearing a band and tracking your steps or even heart rate. I have talked about my fascination for automation here.

For me effective automation must satisfy  a couple of simple criteria before it can become a part of my life:

True automation is transparent.

It’s one of the biggest reasons why I don’t like wearables. If you have to check your watch five times every day to see how many steps you walked and stare at your heart rate every hour to infer your health from that, I don’t think you’re automating and tracking anything! All you are doing is losing touch with yourself and cultivating obsessions and anxiety.

That’s what the companies who make fitness trackers want you to do, just like social media companies want you to constantly engage on their platforms, your fitness tracker wants you to keep looking at it, dozens of times a day to get validation about your health and wellbeing. No wonder there are times when these devices fail and people get panic attacks.

You shouldn’t be constantly peeking at a watch or an app to get confirmation on how healthy you are. Your health is something you should be mindful of and your body should talk to you. Your health is something you should feel. You should be able to mindfully listen to your body.

Also, step count metric is a bad measure of fitness, the data you collect is hardly analyzed over long term and the automation of collecting that data using a band, is way too obtrusive.

True automation and data collection works silently. Without you even noticing it. You set it and you forget it.

Really, when the big tech giants of the world are collecting your data from your browsing history they aren’t constantly pinging and buzzing you. That is what makes their data collection so effective. It’s so silent, you don't even know it's happening.

When you work on collecting data about yourself, you need to have similar processes in place for automation and data collection. Also, not everyone needs to collect the same data either, which transitions us to our next point.

True Automation Is Personalized.

As a nerd who has run a half marathon and multiple 10k’s I understand that step count is a bad metric and means nothing. For me, the hours I spend working out is a much better metric than the number of steps I walked.

Collecting the number of steps actually messes me up! I see 16000 steps on a pedometer on most evenings and then I silently convince myself that I have done way more walking today than a regular person so I don't need to work out.

It's a lousy metric that is literally detrimental to my cardiovascular health and overall fitness. Every time I wear a band, the band convinces me that I don't need to work out and my workout sessions come down.

For me, simply counting the number of days I worked out in a month is a way better metric than my step count of every day for an entire year. The point? What matters to me, may not matter to you. True automation is personalized.

For example for me commute is a big deal. I like to hack my time and minimize the time I spend commuting to work and back. It’s such a big deal for me that I need to track and analyze that data. If you live close to your workplace and spend ten minutes walking to office, tracking commute might mean nothing for you.

Spam calls are a serious problem for me and I feel the need to automate blocking those because I literally get multiple spam calls a day. You may not be getting any and may not want to automate blocking those.

Similarly, since I moved away from the city my family lives in, the amount of time I spend talking to my parents and family back home is a big deal for me, so I track that.

Things that matter to everyone are different. Automation should be personalized and if you truly want to automate parts of your life, it's about time you put a bit of programming effort on your own customized automation, taking your own data in your own hand and pick up a few tools of automation that work for you.

In this series of posts, I plan on showcasing how I personalize my automation and share some of the tools I use with you. Every tool I use eventually collects data about my activities and the time I spend. I’ll also show you how that data then pools into a centralized database that I own myself, which brings us to our next topic.

Good Automation Doesn’t Work In Isolation

What I eat has an impact on my mood. How much time I spend on the road actually has an impact on how efficient I am at work. How much sound sleep my wife gets has an impact on how many fights we have. :) Tracking an isolated item like the number of steps or heart rate literally means nothing.

When you start bringing a bunch of these random facts in a central database suddenly you start getting insights you never had before.

If you truly want to automate and analyze your life with data, you need to design and own a database of data points from your life that matter to you.

When you own your own data sets and when you design your own automation it makes it that much more easier for you to connect things and write smarter code and analytics to make sense of your data.

And The Point Of This Series Of Posts Is?

The idea I’m trying to share with you is that you need your own personalized automation and a database of data that really matters to you. I’ll be doing a series of posts here where I talk about things I automate and track in my own life.

In this series of posts, I plan on taking you through some simple automation tools and techniques to make you more effective and help you collect and analyze data about yourself and your loved ones.

We will use a bunch of random collection techniques I use and go through some of the fun automation I’ve set up around my life.

As nerds, most of us are excited about automation, machine learning, and data science but most folks learning it don't have any real project to work on it. Why not put it to use to automate and improve your own life?

Through this series of posts, I want to learn from you more than I want to teach you. Please use my techniques and tools if you like them and go build your own automation and intelligence around what matters most to you. Please use the comments generously or drop me an email to let me know the automation you are doing.

Think of this series of posts as nothing more than a nerd mucking around and having fun with some data and some code. And in the process, I hope to learn and share something meaningful and something useful with you.

In the next post we’ll start with reducing your physic weight and using basic automation on your phone to get things that bother you out of your life. So watch out for this series of posts (or subscribe to this blog) for more on the topic of basic automation, machine learning and analytics to improve your life!

posted on Monday, November 25, 2019 5:53:04 PM UTC by Rajiv Popat  #    Comments [0]
Posted on: Monday, November 18, 2019 by Rajiv Popat

Making Your Terminal Look Gorgeous.

Beautiful IDEs and Developer Productivity tools are my weakness. Which is why when PowerShell was released back in 2006, the first thing I wrote about was how you can skin it and make it look beautiful. But that was 2006. Things have changed now and Microsoft is taking the cosmetics of your terminal pretty seriously. Add to that a little bit of magic from the open source community and you can have really slick looking terminals now.

This is my diary of making my terminal beautiful on my work laptop. This is what we're trying to get to:

terminalfinaloutput

Let's start with first things first. We begin by getting the new Windows Terminal and then sprinkle a bit of open source magic on it.

Getting Windows Terminal

Windows Terminal is available in the Windows Store. You can search for "Windows Terminal" and you should see it there.

terminalwindowsstoreicon

The Repository is available here. I had a slightly older version of windows 10 available so had to upgrade it before windows store would allow me to install the terminal. Oddly enough, if you don't meet the system requirements the Microsoft Store doesn't give you any visible attention grabbing error. The download link simply doesn't work. I am just about to give up when I see the tiny "See System Requirements" link (shown in the screenshot above). I click it the Microsoft Store tells me what the issue is:

OsUpgradeError

There is an upgrade button in the store which takes me here and that link lets me upgrade my windows to the version of windows needed. After upgrading windows to the required version I'm able to download and install the Terminal from Microsoft Store. I open the terminal after installing it and  I'm presented with:

terminalscreenshot

Installing Git and Oh-My-Posh + Posh-Git Modules

Most of the times when I am in the terminal I'm working on codebases and am on git repositories, so let's make the console pretty and also make it Git aware. We begin by installing Git for windows and then move to installing Oh-My-Posh and Posh-Git modules. The following comments install both modules:

Install-Module posh-git -Scope CurrentUser
Install-Module oh-my-posh -Scope CurrentUser

Modify Your Profile Script

Once you have fired the commands above you need to modify your profile. Type "Notepad $Profile" in the terminal and that should open a blank file for you.  Add the following code into your profile:

Import-Module posh-git
Import-Module oh-my-posh
Set-Theme Agnoster

The "Agnoster" used above in one of the many other themes oh-my-posh provides you and you can pick the one that works best for you.

Installing the Right Fonts:

You need fonts that support Glyphs, without which the beautiful symbols that you see in the screenshot are nothing but ugly characters. To put things simply when people collectively agree that a bunch of character translate to a graphic we have a Glyph. Glyphs are useful because they allow you to represent a combination of characters with pretty looking symbols and icons.

You can choose from all the fonts here which already have glyphs patches inside them (or you can patch any font you like with Glyphs), but I'm just keeping it simple and using this one. From the link download "Delugia.Nerd.Font.Complete.ttf" and install it on your machine just like you would install any other font using your control panel fonts app.

Modify Your Profile settings, (JSON):

You can get you profile settings by clicking on the Down Arrow menu in the terminal and clicking on settings:

profilesettings

This should open up your profile file. There are a few aspects of the profile file worth understanding:

profileslist

The profile file holds a collection of profiles. The 'defaultProfile' contains the guid of the profile terminal uses by default when you launch it. Here you will notice that the guid matches the guid of the profile called "Windows PowerShell". That starts PowerShell by default every time I start the terminal. If I wanted the terminal to start the Command Prompt I can replace the defaultProfile guid with the guid of the profile called "cmd".

Now look at the profile named "Windows PowerShell" in the screenshot above. The "commandline" tells the terminal which executable it should use. The Font Face tells it which fonts to use. Delugia Nerd Font is the font we just installed in the "Installing the Right Font" section of this post and that has Glyphs oh my post and post-git need already patched into it.

In the screenshot above I'm setting Delugia as the default font by setting the fontFace with the value 'Delugia Nerd Font'  in all my profiles. The Color Scheme tells the terminal which colors to use. In the screenshot above, My Color Scheme is called "ThousandtyOne" and this is what it looks like:

profilesettingsschemes

If you want my entire profile you can grab my profile.json from GitHub here. If you've done everything correctly start your terminal and your terminal should now look like:

terminalfinaloutput

It's good looking and the fun part is, it's git aware. Notice the Git integration above. My git strip in the prompt, when I switch into a folder that contains git repository, looks green because there are no changes. Once I make changes the strip changes orange and shows me the number of changes right there in the command line:

terminalfinaloutputgitchange

Note that all these colors are controlled by  your color themes in the profile file so if you wanted different colors you could totally change the profile file to fit your needs and customize each theme.

I do realize that as far as Windows Terminal is concerned I'm a little late to the party. Here is an awesome post from Scott Hanselman on this topic. Think of this post as just my diary of the issues I faced and a customized version of the profile I am using for myself. If you're like me and spend a bulk of your time in command line it might be a good idea to get windows terminal and work with a CLI that is a little more good looking and slightly more git aware than what you get out of the box.

Go on, make your own gorgeous terminal now and share your profile with others. Time to have some fun with your terminals people!

Note: I did face an issue with not being able to save my profile cleanly with VS Code and VS Code kept complaining about conflicts with older version of the same file. When that happened the changes I made in the profile.json are not having an impact on the terminal. That's an issue with dirty write where if you get warnings about conflicts when you save your profile.json. This link contains a solution. The idea is that every time you have a conflict saving the profile isn't enough. You have to explicitly accept the changes. The link shows you a screenshot of how you can do that.

posted on Monday, November 18, 2019 5:48:29 PM UTC by Rajiv Popat  #    Comments [0]
Posted on: Thursday, November 14, 2019 by Rajiv Popat

Why Talking To Strangers Is A Genuinely Nice Book.

Malcolm Gladwell is one of my favorite authors. If you have read Blink, Tipping Point and Outliers one thing you love about Malcolm Gladwell is that he is not a self help writer. The suggestions and tips that he provides in his books are purely a side effect of his research and not an end goal of the books he writes. Put simply Malcom Gladwell is a phycologist and a philosopher bundled inside one brain.

Talking to strangers is his book that takes his style of writing to the next level:

Talkingtostrangersbook

From the FBI failing to identify foreign spies working inside the FBI, right under their own noses, to parents failing to see their own kids being molested by their coaches and doctors, this is a book on biases and short comings of human beings and how we are really bad an analyzing people and their true intents.

This is also a book on erring on the side of good and defaulting to a position of trusting people.

If you head over to Amazon one of the biggest gripes that you see people having about this book in the review section of it's amazon listing, is that Malcolm doesn’t provide any ‘solutions’. Take this review on Amazon for instance:

Fascinating facts are revealed in typical Gladwell fashion which keeps the pace moving. But he comes terribly short on providing any sort of value for actually talking to strangers. Gladwell basically says, "Hey! We suck at talking to strangers. Here's some interesting situations that prove my point. But I have no ideas on how to be better at talking to strangers."

The review section in Amazon is littered with these kinds of comments. Looks like the readers are looking for a silver bullet or at least an assorted collection of solutions from Gladwell.

What the reviewers seem to be missing out is that, just like blink, tipping point and outliers, this is not a self help book. Malcolm Gladwell has spoilt his audience by giving them potential solutions in his past books even though the solutions proposed in his past books were always just the side effect of his research and never the end goal.

Gladwell was never trying to reach to ‘solutions’ in any of his books! Non biased, deep and not trying to hard to reach a solution, are exactly the qualities that make his books special.

And this book is no different. In fact, I would argue that this book takes his writing style to the next level.

For me, this is one of the best books written by Gladwell. He brings me face to face with our short comings to understand other human beings. We all think we know our friends, colleagues, relatives, spouse and partners.

We don’t.

In this book Malcolm brings out an important insight: if you are a good person and you err on the side of good, you are bound to make huge mistakes in understanding and talking to strangers and even people you know and love. And that is OK.

In a world where people pick up a book only to find a silver bullet or bunch of solutions that can improve or change them, this is a book that makes your brain take a pause, think hard and have a realization that maybe you are not as good at understanding people as you think you are. The book makes you mindful of your own short comings as a human being and sometimes, just having that mindfulness is the solution.

In a world where every author out there is busy giving answers, we need authors like Gladwell asking the right questions and making us think. To me this is by far one of my top ten books to read and I highly recommend you grab a copy and read it. And if you do, please login to your Amazon account and provide your reviews because most people downvoting the book seem to be missing the whole point of the book.

posted on Thursday, November 14, 2019 1:21:19 PM UTC by Rajiv Popat  #    Comments [0]
Posted on: Monday, November 11, 2019 by Rajiv Popat

Why Developers Should Care about GRPC

GRPC has been around for quite some time but it has recently been integrated into .NET Core 3.0 and the tooling support with it is just first class now.

If you write Rest WebAPI / Microservices using .NET Core, you send JSON data over HTTP requests. The service does its work and sends a JSON response back.

Till the time your request object reaches the service it waits and doesn’t begin processing. Then it does it’s work and sends you a response back. Till your browser or client gets the response back fully there is not much the client can do and basically waits. That’s the request-response model we’ve all grown up with.

We’ve had various takes on improving this basic design in the past. GRPC is Google’s take on solving the problem of making RPC calls and leveraging data streams compared to the standard request response model.

Without going into too much theory, GRPC uses Google’s Protocol buffers to generate code which then sends data using specialized streams which happens to be really fast and as the name suggests, allows streaming of both request and response objects.

Streams are better because you can use the data as it comes in. A crude example? Instead of downloading the whole video when you stream a video you can watch the video as it downloads. GRPC uses the same approach for data. If this doesn’t make sense, read on and by the time you’ve mucked around a bit with the code, it will all start making sense.

For this example we’ll use visual studio code. The tooling is much simpler with Visual Studio 2019 but I prefer to use Visual Studio Code as an IDE of choice because it shows me what’s going on under the hood. With visual studio code, I use following plugin for getting proto file syntax highlighting and support directly inside my IDE:

For syntax highlighting you can also use additional plugins like this one:

protoplugin2

I have .NET Core 3 installed on my machine. 

The first thing I do is:

  1. Generate a server project: This is like your Web API that is going to be consumed by the client.
  2. Generate the client project: This is your client that is going to consume the server and get the data by invoking an endpoint/method on the server.

I generate the server-side project using:

grpcserver

The -o specifies the output path and creates a folder called 'server' where the GRPC service is generated.

I reference the following nugets by hopping into the terminal of VS Code:

Dotnet add package GRPC.Net.Client
Dotnet add package Google.Protobuf
Dotnet add package Grpc.Tools

Here are the repositories of these three nugets if you want to know more about them:

GRPC.NET Client.

Google Protocol Buffers

GRPC Tooling. 

Once I've stubbed the code out and added the necessary packages to the project. I build the server using:

Dotnet Build

And then I open the code with VS Code.

grpcprojectserverstructure

Notice the Protos folder? That has the proto files .NET tooling generated for us. Think of the proto files like your WSDL files if you come from a web service world. Proto files are specifications for your service. You write them by hand. You primarily use them to describe your request objects, response objects and your methods. Here is the example of the proto file that I wrote:

protofile

The above proto file basically says:

  1. I have a request object with the “companyName” attribute that is ordered 1 in the list of attributes. This is the request object because I will be passing the company name whose users I want to fetch.
  2. I have a response object with these attributes: userName, firstName, lastName and address. The numbers next to them is the order in which these attributes will be serialized.
  3. I have a method that takes a company name and streams back the list of users to the client. This is indicated by: “rpc GetUserDetails (UserRequest) returns (stream UserResponse);” line of code that you see in the above screenshot.
    The GetUserDetails it the method that accepts a user request and returns a stream of UserResponse. (By default, a stream would be an array of objects that would be streamed to the client).

Every time I add a .proto file I add it to the servers project (.csproj) file:

serverprotofile

Once I’ve done that, I fire the build and Google Tooling nugets generates the c# files for me in the background to actually generate the real request and response classes. With Visual Studio 2019 this tooling is hidden under the hood. With VS code the tooling fires when you build your project using the “Dotnet build” command.

Once I have the stubs I can write the service. In the service, I fetch some hard-coded values from a function. Typically, I would do this fetching from a database/service but for now, let’s keep this simple and focus on GRPC.

Once I fetch the data I just push the data back to the client but instead of sending the data in a response object that is pushed to the client all at once and waiting for the client to "download" the response, I use GRPC to stream the data one user at a time back to the client:

grpcserveractualservice

Typically, I would have just returned the users I get from GetUserFromDb back to the client but that would generate a regular response and I want to stream the users back to the client so I write them asynchronously to the response stream. Also notice the Task.Delay? I do that to simulate any delays that might actually be happening on the server as you process and return each user. This shows that each user that is processed is streamed back to the client even as the server continues it’s processing with additional users.

Each user that I write to the stream now flows back to the client and the client can start doing whatever it wants to do with it rather than waiting for the whole response to complete.

On the client-side, I write a simple .NET Console Application that makes a call to the server. The only thing the client needs to generate code to call the server is a copy of the proto files which contains the specs for the entire service. You would send your proto files to your clients or publish them somewhere.

I copy the same proto files on the client side and include them in my client project as “Client” files. Here is how I modify the project (.csproj) file:

clientsideprojectfile

I modify my client project to include a copy of the same .proto files and then I can fire a build. This generates all the stubs I need on the client-side to call the server.

Once this is done I start writing the client.

clientsidecode

Notice how I am using the Dangerous Accept Any Server Side Certificate Validator in the code above? That’s just for non-production because I am running this without any valid SSL certificate. In your production you would get a real certificate.

See how I am using the while loop to iterate through the response stream? This allows me to get each user from the stream as the server writes to the stream. And once I get the current item from the stream? Well, I am just showing each user on the console as soon as the server processes the user and writes the user object to the stream.

Now when I run the client the client calls the server, starts listening to the stream for response and starts dealing with partial responses as and when these are streamed by the server.

finaloutput

This is cool, because:

  1. The response is streamed over a channel that is much more optimized compared to JSON data being sent over HTTP using Rest. There are posts that seem to suggest that GRPC is 7x to 10x faster than JSON over rest.
  2. I can do the same streaming I did on the response object while receiving data, even when I send data using the request object. So, if you want to send huge data to the server but don't want to wait till the entire data is sent before the server starts processing it, GRPC works for that too. Put simply, it supports two-way streaming.

The post is long, but the actual implementation is tiny and super simple. If you’ve not tried GRPC before I highly recommend downloading the entire sample project I described in this post from here (it’s listed under the HelloGrpc folder) and running the server first and then the client and mucking around with the code.

Given the level at which Visual Studio Code and Visual Studio tooling for GRPC is right now, I personally think it’s really easy to pick up and most Web API developers will benefit from having this additional arrow in their quiver.

If you are a web developer who writes APIs and who cares about performance and payloads, you should care about newer better ways of communication between servers and clients compared to the traditional rest based WebAPIs that send data over JSON.

We moved from XML to JSON because the payloads were smaller in JSON. GRPC is the natural next step for smaller payloads, better compression and two way streaming of data.

Go on, give it a try. It’s super easy and well worth the few minutes you will invest in learning it. Chances are you can put it to good use right away and see huge gains in performance and end-user experience.

posted on Monday, November 11, 2019 1:54:17 PM UTC by Rajiv Popat  #    Comments [0]
Posted on: Wednesday, August 21, 2019 by Rajiv Popat

Fixing Gripes And Electric Shocks from Your New Television.

My wife and I are not into television and have not had a television for a very long time. A couple of months we bought our first new television in five years.

Both my wife and I were not sure how much time we would actually spend in front of it and hence the decision to go Froogle. That and I wanted to be able to control my devices and something like a Raspberry Pi is much more customizable than a locked down android television. We settled for a regular, not smart Vu TV and then build our own media center using a Raspberry Pi.

The TV is a 49 inch Grade A+ panel. So the display hardware is not Ultra-HD but on the Full HD side it is as good as it gets. Pretty nice and does what we need it to at a price that's almost half that of a Sony. Very soon we run into a couple of bumps:

My TV is Shocking Me! Strange Electric Shock on the Television Frame:

I initially start with the assumption that this is an issue with my earthing and call an electrician who tells me that my earthing is just fine and the TV is flawed. He asks me to file a request with Vu and walks out.

I look up the forum and discover there are even more expensive TVs out there that have the same issue. I call up support and they replace the TV but the new one has the same issue. This time around they can give me a refund but aren't willing to help with fixing the issue.

Frustrated I end up deciding to put some basic electronics they teach you in class eight to use. The idea is that the TV missing grounding unit that would connect the current flowing with the grounding socket inside the TV but we can do that externally without even opening the TV.

So let's buy a 50 cent copper wire from a local electric shop. Next, we find a spot on the TV that has electric current running through it. In other words, the area that shocks you. You can test this with a regular tester. We tie one end of the copper wire to the frame that has the shock and screw it up securely behind a screw that holds the TV mount.

The other end goes to the earth pin. The  basic idea here is that since the TV does not provide for any grounding or earthing we earth the current running externally on the TV frame directly to the earth pin of the 3 point socket. This works for countries that support 3 pins and the 3rd pin is for grounding.

With the earth pin wound with the copper wire you ensure that any current running through the frame of the television runs through the copper wire, grounding pin and is eventually earthed effectively ensuring you don't get shocked which you touch the TV frame.

That actually works. I touch the TV and no more shocks. I guess Vu is skimping money by not grounding their circuits, but a 50 cent copper wire fixes that. We now have a really simple home made earthing on the TV frame. No more shocks. And the end product looks pretty elegant with the copper wire concealed behind the TV:

The overall result looks pretty neat and you can barely see the copper wire running from the back of the TV frame to the earth socket. Yes, the Pi and the Firestick and all those wires still need to be organized and concealed but the copper wire itself is that tiny green bit you see in the picture. Nothing objectionable.

I've seen a bunch of articles out there about TVs and monitors shocking people but no solution as such and I hope this helps someone who has a similar problem in future. It's simple class eight electronics you might have learned in your physics class put to some basic use.

Strange Skin Tone

The other day my wife and I were watching a stand-up comedy show and the skin tone of characters seems a little… artificial. Turns out this setting is controlled by something called 'Tint' in most TVs and the default Vu settings don't allow end-users to modify tint settings. The tint option is disabled by default, which means you can't change the setting:

When I first see the setting, I realize it's bumped up all the way to 100 and no way to lower it. I wear my nerd glasses and hop on to a special hidden service menu most Vu TV's provide which can be reached by going to the sound setting menu, clicking on sound balance and then typing 1969 on the number pad in your remote. For some reason the folks at Vu like the year on the moon mission and have picked that to open up secret service menus on the TV:

Notice that this mode is pretty powerful and pretty much allows you to control most tiny aspects of the TV a regular user may not even care about.

Once in, you can tell the TV to not use any special intelligence for skin tones by turning off the tint setting (which you are completely allowed to do in this secretly hidden service menu):

I turn the tint down to zero using the special service menu and the problem is gone.

The Backlight is still way too strong:

The backlight of the TV is still too strong and hurts my eyes. Vu doesn't give any option to change that. Even the service menu doesn't have any backlight settings. I panic and think of returning the TV.  But then service menu allows me to change the RGB gain on the LEDs which are all bumped up to 100 by default:

I realize if I bring those down proportionately I can control backlight of my panel. I do just that. The backlight goes much smoother and the strain on my eyes is gone.

Sorted.

The AI Is A Little Too Smart.

AI is the new thing and most TV's want to run the race of adding AI to their picture rendering. Companies like Vu however mostly do a mediocre job at it. The good part is they let you turn this off by disabling noise reduction setting to off.

Much better.

Love-Hate Relationship With My TV

At this moment I have a love-hate relationship with my TV. I love gadgets which I can customize and root into. Most phones I've owned thus far, are rooted. The service menu of Vu essentially gives me root access to the TV and is very powerful. I dig that about the TV.

The fact that I can hack into my TV and have complete control over my TV makes me feel powerful.

The fact that Vu doesn't handle this little gripes out of the box and expects end users to wear their nerd glasses on to fix these issues make me a little annoyed. Meh!

Either way, all my problems with my TV are sorted and I have a two year extended warranty during which I can return the TV if I face any additional issues. So for now, this will have to do.

If you are thinking of buying a Vu TV - here is my honest advice: Buy it only if you are willing to wear your nerd glasses on and do a little bit of tinkering with the TV, both on the hardware and software front. If you are expecting it to work out of the box like a flawless appliance, Vu isn't for you.

Having said that, the TV is a Froogle choice and once you've made the modifications you feel really happy about spending half the money than what you would have spent of other TVs and getting similar picture quality and overall experience.

Couple the dumb TV up with a Firestick TV (which I bought at discount on Amazon) and a Raspberry Pi 3b+ (bought locally) and you'll have a full-blown smart TV with a pretty decent media center, but that's a whole new post in itself.

Being a Nerd Helps.

This post was just about my gripes and issues with Vu TV and how to fix those. If you own a Vu (or any other TV) and are facing similar issues (particularly electric current running through the TV frame), feel free to use some of these fixes and let me know how it goes.

If your TV just works fine, you can still take solace in the fact that even though most of what you buy or download online today is broken it can be fixed with a little bit of tinkering and geeking.

There is value in being a nerd today. You can stop feeling bad about being a geek. Being a geek is no longer a curse. In today's world it is actually a blessing.

Now go fix something that's broken.

posted on Wednesday, August 21, 2019 9:16:26 AM UTC by Rajiv Popat  #    Comments [0]
Posted on: Thursday, August 15, 2019 by Rajiv Popat

The Honest Truth About Independence.

Today, literally the largest democracy of the world celebrates its 73rd independence day and since I am an Indian it seems like an appropriate time to reflect on a fundamental question - What does it mean to be independent?

I'm not talking about independence at a country level but rather, independence at a personal level.

If you've spent any time on YouTube watching the left-leaning Feminist groups and social justice warriors you've probably seen them yelling and screaming about women independence at the top of their voices.

If you've spent any time in the corporate world you've probably seen right-leaning businessmen in suites go on and on about how they are a 'self-made man' and how they are independent.

A jobless student wants her first job because she wants to become independent. The experienced job goer wants to do a startup because he is sick and tired of serving others and wants financial independence.

Independence is a word that gets thrown around a lot these days and the more I hear the word the more I am unsure if the person using the word even understands what the word means.

The bastardized meaning of the word, largely propagated by western media, often conjures up the image of a powerful working woman who is not dependent on anyone to pay her shopping bills. Or a super-rich dude in a suit who can fire anyone he wants in his own kick-ass company. In reality, both of these images are equally stupid images which have nothing to do with independence.

Today, I wanted to throw out some general thoughts about Independence which no-one seems to be speaking about and hopefully start a discussion on the topic of not just what it means to be independent as a country, but moreover what it means to be independent as an individual. In short, I would love to discuss some of the honest but bitter truths about independence that no-one else seems to be talking about.

Here are a few:

#1: Independence doesn't mean you are not dependent on anyone for anything!

The idea that 'independence' means you are not dependent on anyone for anything is by far the stupidest literal translation of the word that most people fall for.

My being independent doesn't mean I'm not dependent on my family and loved ones for moral support, or my employer for my salary or my clients to pay me or my employer for my services.

The whole idea that any form of life is independent is so ludicrous that I'm still surprised people fall for that trap in today's day and age. Of course, the idea sounds romantic and alluring - the hero of a story who can stand all by himself and doesn't need anyone for help!

The idea of complete independence sounds romantic and alluring because anything impossible and nonpractical usually sounds romantic and alluring. But in reality, no life form or collective group of life forms is truly independent. Even Independent countries depend on their allies all the time!

Being independent doesn't mean you are not dependent on anything or anyone. It just means:

  1. You are not forcefully dependent on anyone - You freely choose who you depend on and how much you depend on them. And in turn, they choose if want to provide you the services for which you depend on them. By the same logic, they also get to choose if and how much they depend on you. And in turn, you get to choose if you want to provide the service they are depending on you for. It's a web of intricately and deliberately picked choices which aren't forced, but that doesn't mean these choices don't come with repercussions and price tags. A lot of us again are in romantic love with this idea of more free choice, when the reality of life is, that there are no free choices and most of us can't even handle choices we have. Independence is just the ability to choose who you want to depend on mutually.
  2. You are interdependent - You rely on your family for moral support. They rely on you to be there when they need you. Independence is about interdependence that it is not forced. Notice I didn't say 'interdependence that is free' - because all interdependence comes at a price, which, in a free world, both sides should be happy to pay. In my personal opinion, it is people who are the most scared of creating this interdependence (or taking up the responsibility of paying the price for this interdependence) usually hide behind the pretense that they are 'independent' and are often the neediest, clingiest and whiniest people you will ever meet in your life.

#2: Independence Is Never about an Individual Achievement

The idea that someone can achieve independence individually is nothing more than a media hype which falls back on the ideology that every story must have a hero and hence if you are independent you are the hero who achieved it single-handedly. We do that to our freedom fighters as well.

Any independence story that you dissect will have more unspoken heroes than the names you see in the star caste, screen roll or in front of the cameras.

Your parents had to babysit you and clean your diapers for years before you even stopped shitting your pants. And even now with your so-called independence every time you feel like crap your Mom or Dad is the first number you dial for support. It's easy to talk about your independence in hindsight and forget all the unspoken heroes who contributed to it and are contributing to it even now. It's really hard to look back, pause and give them the due credit they deserve. I suggest you start doing that.

The act of achieving independence is seldom an individual act. Dozens of people have to give up their freedom and sacrifice their independence for one individual to become independent. This number runs in millions when we talk about countries.

So the next time you use words like 'I'm an independent woman!' or 'I'm a self-made man!' spend a little bit of time to reflect - Are you? Really?

Contrary to what you would love to believe, your independence has very little to do to with your achievements and accomplishments. Your independence has to do much more about the people standing behind you than it has to do about you at all.

#3: Independence is Hard to Achieve, Harder to Retain (And Even Harder To Handle):

At an individual level when most people say they are independent they have no clue of what they are talking about. Show me one man who says he is independent and I'll show you a man who had most likely never seen a movie in a movie theatre alone and has never gone on a truly solo trip or vacation. Show me a man who says he is independent and I'll most likely show you a man who can't even enjoy his own company.

Independence doesn't mean you withdraw from others. But Independence is about ending the habit of being needy, clingy, whiny and being emotionally dependent on others for petty things like attention and approval. It is about mature, meaningful coming together of powerful individuals because they like each others company. The same is true when powerful countries decide to become allies.

When you look at it from that perspective, Independence is hard to achieve and you have to keep working at it. Most of us mere mortals aren't independent. Most of us can't even wash our clothes without whining when the washing machine breaks down or cook our food day after day without relying on a restaurant when we are fully aware that the junk we buying at that stupid fast food joint isn't good for us. And then we sit in our cafeterias and talk about how we as individuals are independent and self-made.

Most of us aren't even capable of forming an independent thought. So the next time you talk about independence here is an exercise you can try out: Come up with one independent thought. Not something that builds on something you read in a newspaper or something you heard a self-help guru scream about on YouTube. One independent thought that was formed in your head. Be Honest about this exercise and you'll see how hard independence is. Now keep working on that thought and you'll see how you slowly start getting better at developing independent opinions.

#4: No, You're Not There Yet:

No, you still aren't independent. But the beauty of living in a free country is that you have the freedom to practice the idea of independence as a lifestyle. Not the usual independence where you strive to not depend on anyone but the more mature idea of independence where you willingly and happily pay the price of mutual interdependence and develop gratitude for people you depend on. The question is, can you even handle that kind of independence? Or is even your idea of independence, dependent on the stupid cliché media narratives of what it means to be independent? Honestly, the whole idea of independence has very little to do about being independent in the conventional sense. Just a little something to think about.

And now that you have something to think about for today, If you're an Indian and are reading this today, Happy Independence Day.

posted on Thursday, August 15, 2019 5:57:20 PM UTC by Rajiv Popat  #    Comments [0]
Posted on: Saturday, August 3, 2019 by Rajiv Popat

Writing, Social Media, Openness and Forgiveness

Some of the best writers out there are capable of captivating you with their stories because they are high in openness. Take for example Eat, Pray, Love - where the Elizabeth Gilbert describes her own broken relationship with an articulation that requires nerves of steel. Steve Job's biography exposes parts of his life and a past that is not easy for most people to lay open for public consumption.

Yes, I know Steve Jobs did not write his own biography but he did allow the author unrestrained access to parts of his life and past knowing well that his life would be exposed for the whole wide world. The mere thought of giving unrestrained access of our lives for public consumption would make most our stomach's churn.

Some authors hide being the veil of fiction while others face their ghosts and daemons head on with their writing but the simple reality of the profession of writing is that unless you are high in openness you are not going to be a good writer. People are either going to find you boring or fake.

Now, theoretically, this generation should be high in openness because they spend most of their lives on social media where they lay their life open for the rest of the world to consume. So they should be really high in the traits of openness, right? Actually, the more I observe the way the current generation engages with social media websites and the internet in general the more I am convinced that social media hardly has anything to do with openness. Being open is almost an antonym of being fake; and when you selectively pick the most glamorous parts of your life and then photoshop them and edit them to publish them on Facebook you aren't being open - you are just being fake.

With the way most people engage with the internet, I'm almost starting to believe that the more you engage on Facebook, WhatsApp and other social media platforms the more you loose your traits of openness. I could write essay after essay to illustrate the difference between being fake on social media and being high on the trait of openness, but I thought I might be able make one simple diagram that gets the point across much more articulately.

Let's assume you have a really bad fight with your wife, spouse or significant other. Here is what the flow looks like if you have traits of openness about it:

Take the same fight and introduce an aspect of fakeness and social media into it and here is what the vicious cycle of false pretense looks like:

Openness in writing is all about self awareness. You are mindful of your bad experiences, you contemplate on those lessons, then you engage in the act of learning and forgiveness about those bad experiences. This is when you finally become capable of writing about the experience articulately. Then you structure your thoughts and write with the idea of passing on a consistent message and a meaningful lesson. And once you do write about it, you let the experience go and you share it with others so that others can learn and grow from it.

Your openness and writing tells everyone that you are just as vulnerable as the rest of them, that you have learned something new about life and that you aren't ashamed of sharing what you have learned. The focus on your writing is not about you - it's about what you've learned. This is why you should never really write about something you are really angry about. Give it a couple of days. Let your head calm down. Structure your thoughts and  when the focus has moved away from 'you' - then write - but not before you have practiced forgiveness and developed a new insight you want to share with everyone.

The Social Media version of openness on the other hand is just about shoving all the dirt under the carpet. Fight with your wife, go on a materialistic vacation to calm her down, take lots of pictures with fake smiles, share those with the world at large to tell the rest of your social circle how happy you are so that someone from your circle feels they aren't as happy as you are; has a fight with their spouse on how they should go on a vacation too only so that they can go on that vacation click the few pictures, publish them on Facebook and upset someone else in their circle. It's literally a viral vicious cycle that benefits no-one other than Facebook or the social media platforms. As a generation we think our lives are open on social media. They aren't. Publishing a few happy pictures or writing a  few spontaneously depressing or angry political opinions on social media isn't openness.

Openness is hard. It demands that you face your ghosts and skeletons head on. That you contemplate on those, you learn something from your experiences and above all you practice forgiveness and then you write about what you've learned, not with the goal of portraying yourself as a hero or a victim but as a regular guy or girl who has grown just an inch and wants to share an idea or a life lesson.

I know you are on Facebook and Twitter. I even know you have huge WhatsApp list and a decently read blog. But that's not the same as having high openness and being a good writer. There is nothing wrong in publishing vacation pictures but the next time you are about to do that, think about how open you really are. Can you write just as articulately and expressively about a ghost from your past or an ugly skeleton in your cupboard? Can you write about how you were a jerk? Can you write about how you messed things up? Can you write about your own scary mental and phycological struggles?

If you can't, you should think twice about publishing selective happy moments  of your life. It's easy to be a hero in your own novel, or a victim or the guy who lives a perfect life with happy pictures but that has nothing to do with openness. Just a little something to think about the next time you get on Facebook or Instagram.

posted on Saturday, August 3, 2019 10:36:10 AM UTC by Rajiv Popat  #    Comments [0]
Posted on: Monday, April 29, 2019 by Rajiv Popat

Moving Forward With Keystone Habits.

Have you ever wondered why your life, literally and physically, moves out of balance when you are going through a stressful time? Your diet is usually the first thing to go out of control. You stop cooking, and even when you eat out you stop taking the right decisions and start picking all the wrong foods.

Your closet, room and home is usually the next thing to go out of control.

Give me your diet journal for the last one month and I can probably tell you how productive or nonproductive your month was. Let me visit your home on a surprise visit and I'll probably tell you exactly which phase of life you're going through.

And then as these little things go out of control they create a cycle of more panic and anxiety in your life, which in turn leads to more things going out of control.

On the other hand, have you also noticed how doing just a few simple things, can have  a profoundly positive impact on your life and your self-confidence? For example, when you consistently wake up early in the morning, work productively (just for a couple of hours a day), when you consistently eat right, play music, workout; go for a run; or do whatever it is that you do; life feels so… awesome and even your work life and productivity begins to improve.

All of us has at least one thing which if we do right and consistently, we feel in control of our lives and when we don't do that one thing… that's usually a sign that we are losing control and going into a state of depressed helplessness.

That one thing can be different for different individuals. For some, it's waking up early. For others it’s making their bed after they wake up. For many others I know, their daily workout happens to be that thing. Everyone is different but most people have at least one thing which creates a perception of control for them. It makes them feel happy, makes them feel like they are in control of their lives and doing that one thing, makes them feel strong.

We are creatures of control. In an uncertain world where most of us have very little control over anything, including our survival, any perception of control that we can create for ourselves makes us feel safer and stronger than folks who are unable to create that perception.

In the larger scheme of universe where you are an insignificant speck of dust, who  could cease to exist because of a simple road accident, an illusion of control makes you believe that what you do matters and as a result of that, you matter.

If you can pick up one habit, and stick to it, even when life throws its shots at you, you are telling yourself that you take active deliberate decisions and your life runs on those decisions; not a random chain of events controlled by mere chance. You are taking a stand against helplessness.  This is why social scientists call these keystone habits.

This is why when you pick up a keystone habit your life starts to change. For example, most smokers who cultivate the habit of running quit smoking. Most folks who start working out or practicing a musical instrument get better at their work life.

You might say that the perception of control is just an illusion, and I might even agree with you, but that perception of control is exactly what allows us to get up in the morning and go to work. That perception of control is what allows survivors to fight dreadful diseases and even though this would sound a little cliché I would argue that this perception is exactly what powers most of our space programs and allows individuals to climb mountains. Of course rockets have exploded in the past and people have died while climbing mountains but that perception and illusion of control is what enables the astronauts and the climbers to roll the dice, take a chance and succeed.

I have a personal theory that as nerds most of us love programming because in an uncertain world, programing computers creates a perception of control and that perception makes us feel strong and empowered. Hey, we can't change everything, but at least we get to control what's behind the screen of that machine.

All my life, one of the most valuable things I’ve learned it is the idea of inching forward slowly and yet consistently using keystone habits and creating a perception of control is your only chance at that forward movement.

This is why every time I start feeling a sense of helplessness, I fall back to some of my keystone habits to regain that perception of control again. I start writing code each day; I start my daily work out session and I come back to this blog and start writing consistently. And I begin reading. These are four keystone habits that help me inch and claw out of dark and depressing times.

And before I know it, I feel empowered to change things and I'm control. I know the control is just a perception but it still works magically when it comes to taking me out of a state of helplessness and making me productive again.

What are your keystone habits? Did you do them today? Did you take a stand against the punches life throws at you, and actively take out time to do something you committed to? If not, please give yourself a moment today to think about which your keystone habits are and then make an active effort to execute on them.

I won’t say it’ll change your life, but if you are experiencing a sense of helplessness, there is a good chance it’ll pull you out of it and empower you to change things. One inch at a time. This is your way of telling yourself that you may not be in control but at least you are not completely out of control either.

Go on. Pick a few keystone habits and give them time, consistently. There is a high chance you may regain your perception of control and life will begin to come back in balance soon. If you haven't given keystone habits a chance, you should. I wish you good luck.

posted on Monday, April 29, 2019 3:41:20 AM UTC by Rajiv Popat  #    Comments [0]