02 May 2022

How to get Android Studio in Ubuntu application menu

Installing Android Studio in Linux is kind of boring. They just give you a compressed file which you have to extract, and the installation instructions say this:

  2. Open a console and cd into "{installation home}/bin" and type:

       ./studio.sh

There's a simpler option. Install it using snap. 

sudo snap install android-studio --classic

However if you don't want to use this version created by the Snapcraft ream, use the default Android Studio from the official website. First, navigate into that bin folder using a terminal and make the sh file executable using:

chmod +x studio.sh


Now type:

sudo -H gedit /usr/share/applications/AndroidStudio.desktop

and enter the following contents in the file:

[Desktop Entry]
Version=1.0
Name=Android Studio
Comment=Android SDK
GenericName=IDE
Keywords=IDE, Android, SDK, Studio
Exec=/home/yourUsername/android-studio/bin/./studio.sh %u
Terminal=false
X-MultipleArgs=false
Type=Application
Icon=/home/yourUsername/android-studio/bin/studio.png
Categories=GNOME;GTK;
StartupNotify=true


That's it. After you close the file, you'll be able to start Android Studio from the Ubuntu app menu.

27 April 2022

How Prince of Persia was made

Recently, I came across Jordan Mechner's video in which he explains how he used rotoscoping to animate the characters in Prince of Persia. It was his brother who did a lot of the jumping.  Prince of Persia also won six Guinness World Records, among which one was that it was the first motion-capture animation used in a video game. It reminded me of some of the games I created. Especially Digger Forever, for which I painstakingly drew animations on paper and typed out each pixel into the program. You can scroll down the code here (starting from line 593) to see the animations. During those days I considered rotoscoping to be "cheating". At that time I expected people to simulate human motion via algorithms.


You can play the game online if you like. There appear to be some downloads that could probably be used via dosbox.

One other pleasant surprise was that the princess we rescued, was also played by a real person: Christina Marie LaDeau "Tina" Ciccone. She was an 18 year old at the time, and the daughter of Jordan's colleague. Here's the hug sequence being played by the two shy youngsters.


When you think about it, the dungeon and palace that the prince has to run through, is rather amusing. You have lonely guards standing at odd places with swords drawn the whole night. You have spikes, unstable flooring, tiles floating in the air, metal jaws operated without electricity, potions kept at odd places, deep pits, guards who show no weakness after being struck by the sword, and the "horror" of fighting a sword-fighting skeleton. 

 

Plump guard in level six. This is where I learnt to use the up arrow key for defence

Floating tiles

So who brings the guards their food? If they were to visit the canteen, do they have to run and jump to catch hold of some ledge and then clamber up and down? Do they have to navigate the spikes and metal jaws when they go to pee? There's no toilet in the palace or dungeon either :-) There's even a big, friendly neighbourhood mouse that not only knows its way around the palace, it also knows who the prince is, and it knows how to open gates. Toward the end, Jaffar does not even bother having a few guards to protect him. Quite amazing how we ignore these to be able to solve puzzles and save the graceful princess.

Preparing to fight Jaffar

Anyway, it was indeed a lovely game. Quite challenging to figure out the puzzles (jumping through the mirror in the fourth level, using "ahimsa" against the shadow Prince in the level twelve, using the slow-fall potion in level seven, figuring out how to run over invisible tiles in level twelve). I managed to do it without referring to any walkthrough and without using cheat codes. I still remember a lot about how to get through the game. Carefree days. *sigh*


Message shown after completing the game


Prince of Persia on other platforms and re-makes

David X Newton created a video that shows how Prince of Persia was ported onto various platforms, the new ideas and bugs that they had.

Variations on various platforms

 
Reaching "hell" in the lower sections

Anime cut-scenes in the CD version

A change in scenery

Some kind of a demon or god who drops things on you

Another one of David's videos reveals a surprisingly good looking 3D look of the game. This version allows you to do back-flips too.


 

3D princess and an amusing ticking hourglass

Stunningly brilliant scenery and lighting

 

The prince being pushed into the dungeon initially by the guard

 

Some people have posted about "secret levels", which are just bugs that show up when you use cheat codes to revive a dead prince. People have even created custom levels and mods.

That's quite an impressive amount of effort and time put into this iconic game!

Update: July 2023: A person with the alias n3cr0ph0b1a on 9gag, used the pixelated princess image and used AI to create this beauty:




02 April 2022

Examining the source code of a Firefox addon / extension

When using a Firefox extension created by someone, you grant access to various websites you visit and to the content of the websites. How do you know if the extension can be trusted?

I recently wanted to check an addon, and it was possible to do it this way:

First, right click the "Add to Firefox" button and copy the link.


The link I copied is: https://addons.mozilla.org/firefox/downloads/file/3915177/i_dont_care_about_cookies-3.3.7-an+fx.xpi

Open a terminal and use the following command to download the addon:

curl -L https://addons.mozilla.org/firefox/downloads/file/3915177/i_dont_care_about_cookies-3.3.7-an+fx.xpi > theAddon.xpi

 

The downloaded addon is an XPI file (pronounced as "zippy") which can be extracted using your existing unzip program. 

Just right-click the file and extract.

 

Once extracted, you can examine the source code of the addon. Note that some authors may have minified their code, which not only makes it difficult to read, it also slows down the text editor, when you open the file, because all the source code will be in a single line.

So, before opening minified code, first un-minify it using a pretty-printer or an un-minification tool.


That's it. Examine the source code and see for yourself if the extension is trust-worthy.


18 March 2022

Using Android apps on a PC or Mac

This actually began as a search for whether I could install Ubuntu on my phone. Turns out there are some ways. There's even the Pine Phone. These would actually be a much better option than our current phones that contain bloatware and are gleefully invading our privacy.

Then I wondered, if Ubuntu could be installed on a phone, could Android OS be installed on a PC? Recently, WhatsApp had notified my uncle that it would no longer run on his old iPhone, and in the effort to help him find a solution, I found ways to install Android on PC or Mac.

 

CAUTION:  Before using any emulator or app, please read all license terms and check if what you are doing is permitted as per the EULA of the software.


Trying WhatsApp on BlueStacks

If you try BlueStacks (which I've written about earlier too) to install WhatsApp, you can do it as listed below (but make sure you check the license agreement to see if it's ok to do so):


  • Install BlueStacks5 and select the APK button on the right side menu and select the apk file you just downloaded.

  • Follow instructions on the screen to install WhatsApp.
  • Enter your phone number and you'll receive an SMS to confirm it. Once you verify it, you can add new contacts and start sending and receiving messages in WhatsApp.

Note that in this whole process, it isn't necessary to install WhatsApp on the phone. Whether using BlueStacks is safe or not (in terms of privacy and security), I don't know though. So I'd typically consider using it from within a sandbox or virtual box (again, it's necessary to check the license agreements to see if it's ok to do so).


Other Android options

You can also download ISO files and install Android on your computer just like how you'd install Ubuntu or any other operating system. This would possibly mean that it could be installed via Virtual Box too (I'll be trying this out in a while).

While there are various options, I'll probably also try one or more of: PrimeOS, Android x-86, Bliss OS or LineageOS

If you are a big fan of Android games, and while playing on your mobile phone you see yourself being defeated easily, there's a good chance the other players are either playing the game from their PC, using one of these operating systems or they would've connected a keyboard and mouse to their phone.


ps: Framework laptop even brings us modular laptops that we can repair ourselves. Not yet available in India though.


12 March 2022

Companies be careful: Your open source salad may go kaput if you don't perform basic checks

When providing my expertise to a company as a consultant many months ago, I reviewed their code and architecture. One of the suggestions I asked them as a question, was whether they maintained backups of the various versions of the open source code they used. That question seems ever more relevant now.

Today, I came across a shocking article by Niclas Gustaffson, which outlines how an open source developer introduced malicious code in his open source project as a mark of protest. This went on to cause problems in even a large company that used the code. 

 

What did he do?

According to the article, this developer named Marak Squires, introduced an infinite loop...

for (let i = 666; i < Infinity; i++;) {

...which caused a Zalgo text issue that makes gibberish appear on the screen of projects that used some of his code.

The gibberish that appeared on one users screen

The changes were made to colors.js (2,67,01,901 weekly downloads and allegedly, 19K projects dependent on it) and faker.js (apparently used to have 2.8 million weekly downloads and 2.5K dependent projects).

 

Why he did it

Marak had apparently announced in Nov 2020, that he'd no longer be supporting large companies who used his software for free. 


Why this isn't right

When anyone is accepted into the open source community as a creator or a contributor, it's done with a great amount of trust and respect. It should be an honour for a person that so many people use their open source project. If Marak didn't want to support large companies unless they paid him, he could have made an announcement that he's no longer working on the project, and stopped updating the repository. By introducing malicious code, he broke everyone's trust and even maligned the good reputation of the source community. A stark contrast to all the responsible developers who have built reliable systems like Linux, Git, Firefox and so many open source projects.


What can be done by companies?

  • Well, first of all, setup a CI/CD system right from day one. There are companies involved in projects of high importance (I'm not going into details), which do not have such basic infrastructure setup. The CI/CD infrastructure will ensure that you always have multiple working, shippable versions of your software even if the latest build broke.
  • Keep backup versions of all the open source code you use. Remember that the code comes with no guarantees.
  • Build a test-run framework where you can test the latest version of the project before you actually deploy it to a customer-facing server.
  • Have a security team perform an audit of all your code. Even the open source libraries you use. Learn about zero day exploits.
  • Consider donating to open source developers, Wikipedia, StackOverflow or any other such source where you get knowledge and resources for free. There are many ways to contribute.
  • Consider involving your developers in open source projects. Not on their time. Do it on company time. I know ThoughtWorks allows this.

 

I condemn what Marak did. However, it also reminded me of various ways in which deserving people like scientists are exploited (they make discoveries and publish it but don't get royalties or anything in return, even when companies use those ideas and massively profit from it), while un-deserving and deceitful people like fake god-men and other corrupt people and certain corporations are given respect and are allowed a pompous lifestyle by a gullible society. 

Anyway, open source developers, please maintain your integrity.

06 March 2022

A Guide for People Researching Eye Strain

During the past decade, on consulting multiple doctors, I realized that they were unable to cure my eye strain because of a lot of incorrect information floating around. This in turn, was possibly affecting the direction of research, because researchers probably didn’t know what to analyze.

Rather than begin with commonly propagated notions about the cause and cure of eye strain. A better way to begin, is by speaking with people who have experienced severe eye strain. It’ll help dispel a lot of the myths, when they tell you what solutions didn’t work.

My tips for researchers

Find a way to measure strain of the intraocular and extraocular muscles

It is necessary to find an objective method of measuring the various stages of severity of eye strain. These objective metrics need to be correlated with subjective feedback from the test subjects and compared with a control group. If there are mismatches, then a better method needs to be invented/innovated. This needs to be done under baseline conditions, and during variation of various test parameters. In subjects with chronic strain, at least the spasms of the inferior oblique muscles are somewhat easily detectable. The sharp, stabbing pain at the superior oblique, lateral and superior rectus are also important.

Name and quantify the various stages of eye strain

There are various stages. One is when the healthy eye begins to water a little, and there are reflexes where the tired eyes try to gently close, as a message to the person, to stop straining the eyes. People tend to ignore this and continue torturing the eyes. Then there’s the stage where the forehead muscles are tensed and pain (which people call “headache”). There’s another stage where the front of the eyeballs have a burning feeling. This is a severe stage. Then there are sharp stabbing pains around and behind the eyeball. This is an acute or chronic stage. In the chronic stage, even the cheek muscles are strained. There are possibly more severe stages, as experienced by Jack.

Know what factors affect the strain

At least in my experience, eye strain is affected by sleep duration (specifically, not getting uninterrupted sleep for an age-appropriate duration), food (proteins giving muscle endurance, and how various foods affect the digestive system, causing sleep loss), age, spectacle lens-type (plastic vs. glass), duration of strain, nature of strain (watching a movie, driving, reading a book, looking at a digital screen etc.), duration and quality of rest, naps, angle of viewing (also take note of which muscles get to relax while the subject reads when lying down), brightness, blink rate, muscle tension, and perhaps other medical conditions. Measure these with and without using aids like eye drops or spectacles. Check and find out how natural, commonsense methods can reduce strain.
The response from the subjects would also depend on their ability to comprehend and honestly respond to the test questions. The observations need to be noted everyday for a few years at a stretch. Sleep duration, interruptions in sleep and the type of edibles consumed (the quality and whether it was properly cooked/baked/fried) needs particular attention (because it affects sleep quality and muscle endurance).

Check and quantify if and how parts of the eye are affected by strain

These include the intraocular muscles, extraocular muscles, eye lens, pupils and cornea. It would also help to check if there are variations or swelling that affect the shape or size of any part of the eyeball, especially in cases of chronic strain. I would not be surprised if constant tension on the eyeball could be one reason for progressive myopia.
 

Measure the extent and rate of recovery when strain causing situations are removed

Remember that the rate of recovery differs. People with mild strain recover quickly, but people with severe strain can take months or years to recover. This can help avoid pointlessly prescribing spectacles to people who don’t really need spectacles. It can also help organizations and schools create guidelines that prevent people from overworking and damaging their eyesight. Normal vision is too precious a gift to ruin.
It may also be possible to re-design computer work in a way that does not require us to focus our eyes at a single location for too long.

Obtain statistics on normal sighted people too

Perform large-scale surveys on normal-sighted people. Check how many of them in rural and urban populations, have slight myopia, hypermetropia, astigmatism or any other eye issues, and are yet able to lead normal lives without requiring spectacles or medical intervention. Check for how many years the situation remains unchanged (or how and when it changes). This will help create a baseline and help provide deeper understanding into when medical intervention is really necessary and when it can be avoided. For example, it’ll help gauge if it is normal for one eye to be of a slightly different power than the other eye. It’ll help understand how eye power varies over the course of a day and returns back to normal, without any severe or long-lasting consequences.

Establish guidelines for spectacles

Measure how poorly aligned spectacles/lenses affect strain. Check how the position of the focal point of the spectacles affects strain. Objectively verify how distortions caused by lens-types affect the amount of adjusting that the eye muscles need to do (you’ll need test subjects with chronic eye strain to get measurable results). Quantifying the minute light distortion among various lens types at various radii and angles from the focal point, will also help (perhaps using lasers could help verify this). Establish guidelines for opticians and spectacle manufacturers to follow. Many of them are amateur/irresponsible enough to not even take any measurements when they take an order for spectacles. Some even try to force improperly aligned lenses onto their customers. It’s necessary to establish strict rules for opticians to measure the dimensions of the subject’s face and position the lenses at the correct focal point, at the right angle and distance from the eyes.

Establish guidelines for eye tests

The results from the studies above, can help establish guidelines for what questions doctors need to ask a patient. The one fundamental question I’ve noticed that’s lacking, is that doctors don’t bother asking and verifying if the patient is getting sufficient sleep, rest and nutrition. It would help to do more groundwork to help identify the right tests to do and identify the various stages of strain and know the causes. This can help avoid a lot of pointless tests (there are certain tests being done unnecessarily even though no symptoms are observed). There also needs to be a mechanism to periodically check and correct problems and alignment issues with the frames that hold trial lenses and perhaps even the computerised eye test equipment.


Know the source of funding

Know who is funding your research. Make sure it is from an unbiased source that actually cares about people’s health and wishes that people can enjoy normal vision.


Most importantly, don’t forget to think out of the box and look for other causes/factors/cures. If you discover that any of my assumptions were incorrect, do let me know (after thoroughly verifying it). As a person of science, I’ll be happy to correct myself.



Say thank you or donate

25 February 2022

Creating template files in Ubuntu

In Ubuntu 20, the right click menu didn't have an option to create a new document. So when I looked it up, it turned out that it was possible to achieve this functionality, simply by creating a Templates folder and creating a file in it.

mkdir ~/Templates

touch ~/Templates/Text\ File.txt

I was skeptical that this would work, but surprisingly, it actually did!!!

New Document works!!!

Wanting to get to the bottom of how this works, I asked around, and was shown this page that revealed this as a standard feature where you can simply place a template file.

So I tried creating an xlsx file using Libre Calc, and saved the file in the Templates folder.


Sure enough, simply placing it in that folder was enough to make it appear in the right click menu.


Terrific functionality that's useful to anyone who does a lot of boilerplate file-work. I'm sure there would be people who have used Linux all their lives, who don't know about this functionality.


30 January 2022

Fixing the spellcheck error in TexMaker when using Ubuntu 20

Spellcheck is available in TexMaker in the Edit menu. However, running it throws up this error: "Error: Can't open the dictionary".

 

A bit of searching revealed that myspell is not available, but hunspell is. You'll find the en_US.aff and en_US.dic files in /usr/share/hunspell.

Now, in TexMaker's menu, go to Options > Configure TexMaker > Editor > Spelling Dictionary, and enter /usr/share/hunspell/en_US.dic.

Viola! Now when you run spellcheck, it'll work.

Tip: Instead of using TexMaker from the beginning, I'd recommend first writing the paper in Lyx (which makes it as easy as writing a paper in MS Word) and when you've written the paper you can export it to LaTeX and then use TexMaker.

Update 2026: It may be easier to use OpenAI's Prism

04 December 2021

Opening up a trimmer

The Panasonic ER206 trimmer has a rechargeable battery in it. If the life of the battery reduces, you'd want to replace it, but on calling up the service center,  I was shocked to hear that it'd cost me around Rs.1000 or more (I don't remember the exact amount mentioned, but it was just a few hundred rupees lesser than the cost of the trimmer).

This, this and this video however, showed me that replacing the battery was actually quite simple. The comments in the video mention the specifications of what battery could be purchased (don't ask me. I don't know). I didn't have to replace mine. One battery should cost only around Rs.150 or less, so the service center's charges were truly blown out of proportion. I don't know if this was their way of making us just buy a new trimmer or if they were charging us for not having a star screwdriver.

Gap along which it can be opened after removing the screws

 So you'll find two screws that you can open on the main body. Then, after removing the blade portion of the trimmer, you'll find two more screws. Once you remove those, you can insert something like a debit card in the gap shown with the red arrow in the above picture. Move it along the green arrow's direction all along the body of the trimmer carefully on both sides, and you'll be able to open it.

What it looks like on opening it up

The positive terminal has a white gasket

The plastic that holds the battery

 

The battery is lodged a bit tightly in the plastic, but it isn't too hard to pull it upward to get it out.


Negative contact point after removing battery

Negative terminal

Positive terminal

Side view

If you ever wondered whether hair gets inside, yes it does. Didn't cause any problems though

 

Does it work without the battery?

Yes it does. Even if you remove the battery and connect the trimmer to the power adapter and plug it into the AC power socket, the trimmer will work. However, if there are voltage fluctuations, it could damage the motor. So if there's that danger, you can use it with a voltage stabilizer.

So you see, it's that simple to open it up and replace the battery (or use it even without replacing the battery). Saves money and saves the time and cost of going to the service center. Overall, this trimmer is quite good in quality and long lasting. They also provide a brush and oil to lubricate the blade. That's an important part of maintaining the trimmer and extending the life of the blade. After using it, don't forget to charge the battery immediately. If I remember right, an 8 or 16 hour charging is required.



05 November 2021

Coding as the first interview round? Try thinking differently

On the first of November, when I was doing a Google search, the search page animated suspiciously to reveal a hidden challenge.

Click image to view larger

After verifying that this was not some malware, I proceeded to find out what this was all about.

Click image to view larger

So it turns out, this is Google's secret way of gamifying the process of recruiting people. It has been around for a couple of years at least. Various articles speak of getting the invitation, and there are mentions on the internet about how to get the invitation by performing a pattern of Google searches. Google's foobar website says it's only by invitation. So congratulations if you received an invite!

You get the following options to navigate the shell.

There are five challenges to solve, and by the time people finished the third challenge, I hear they are offered a chance to submit their details to a Google recruiter, who then decides whether to invite the person for an interview or not.

The challenges are like the Machine Graded Programming Tests I passed at C-DAC. So since it was a holiday, I decided to try the first challenge.

Re-ID
=====

There's some unrest in the minion ranks: minions with ID numbers like "1", "42", and other "good" numbers have been lording it over the poor minions who are stuck with more boring IDs. To quell the unrest, Commander Lambda has tasked you with reassigning everyone new random IDs based on a Completely Foolproof Scheme.

Commander Lambda has concatenated the prime numbers in a single long string: "2357111317192329...". Now every minion must draw a number from a hat. That number is the starting index in that string of primes, and the minion's new ID number will be the next five digits in the string. So if a minion draws "3", their ID number will be "71113".

Help the Commander assign these IDs by writing a function solution(n) which takes in the starting index n of Lambda's string of all primes, and returns the next five digits in the string. Commander Lambda has a lot of minions, so the value of n will always be between 0 and 10000.

Languages
=========

To provide a Java solution, edit Solution.java
To provide a Python solution, edit solution.py

Test cases
==========
Your code should pass the following test cases.
Note that it may also be run against hidden test cases not shown here.

-- Java cases --
Input:
Solution.solution(0)
Output:
    23571

Input:
Solution.solution(3)
Output:
    71113

-- Python cases --
Input:
solution.solution(0)
Output:
    23571

Input:
solution.solution(3)

This was a simple one. I solved it in the very first attempt. An animated bunny was shown hopping around the screen.


The second challenge was a bit trickier.

Gearing Up for Destruction
==========================

As Commander Lambda's personal assistant, you've been assigned the task of configuring the LAMBCHOP doomsday device's axial orientation gears. It should be pretty simple -- just add gears to create the appropriate rotation ratio. But the problem is, due to the layout of the LAMBCHOP and the complicated system of beams and pipes supporting it, the pegs that will support the gears are fixed in place.

The LAMBCHOP's engineers have given you lists identifying the placement of groups of pegs along various support beams. You need to place a gear on each peg (otherwise the gears will collide with unoccupied pegs). The engineers have plenty of gears in all different sizes stocked up, so you can choose gears of any size, from a radius of 1 on up. Your goal is to build a system where the last gear rotates at twice the rate (in revolutions per minute, or rpm) of the first gear, no matter the direction. Each gear (except the last) touches and turns the gear on the next peg to the right.

Given a list of distinct positive integers named pegs representing the location of each peg along the support beam, write a function solution(pegs) which, if there is a solution, returns a list of two positive integers a and b representing the numerator and denominator of the first gear's radius in its simplest form in order to achieve the goal above, such that radius = a/b. The ratio a/b should be greater than or equal to 1. Not all support configurations will necessarily be capable of creating the proper rotation ratio, so if the task is impossible, the function solution(pegs) should return the list [-1, -1].

For example, if the pegs are placed at [4, 30, 50], then the first gear could have a radius of 12, the second gear could have a radius of 14, and the last one a radius of 6. Thus, the last gear would rotate twice as fast as the first one. In this case, pegs would be [4, 30, 50] and solution(pegs) should return [12, 1].

The list pegs will be given sorted in ascending order and will contain at least 2 and no more than 20 distinct positive integers, all between 1 and 10000 inclusive.

I requested the Google team to provide a clearer explanation of why the radius was a/b, but they didn't reply. There were many solutions and explanations listed on the internet. I'll be honest. This is the kind of problem I'd typically take some time to research, deduce and solve. I just didn't want to put in more time to solve this. Solving it just for the sake of solving it, and solving math problems in school just for the sake of solving them, always reminded me of this amusing story by Mr. R K Narayan. Here's an excerpt:

"...Rama has ten mangoes with which he wants to earn fifteen annas. Krishna wants only four mangoes. How much will Krishna have to pay?"... Swaminathan felt an unaccountable sympathy for Krishna. 

'Have you done the sum?' father asked, looking over the newspaper he was reading.
'Father, will you tell me if the mangoes were ripe?'
Father regarded him for a while and smothering a smile remarked: 'Do the sum first. I will tell you whether the fruits were ripe or not, afterwards.'
Swaminathan felt utterly helpless. If only father would tell him whether
Rama was trying to sell ripe fruits or unripe ones! Of what avail would it be to tell him afterwards? He felt strongly that the answer to this question contained the key to the whole problem. It would be scandalous to expect fifteen annas for ten unripe mangoes...What was the matter with father? Swaminathan kept blinking. Where was the urgency to know its price? Anyway, if father wanted so badly to know, instead of harassing him, let him go to the market and find it out.

If Swaminathan was first given some pocket-money and introduced to a situation where he actually had to buy something and figure out the best way to spend his money, he'd have appreciated and solved the math problem more willingly. Instead, what our school books and these coding interviews do, is present a problem to us which we know is pointless to solve. There are better ways of evaluating skill.

Dr. Stuart Woolley wrote a nice article on "Why You Should Never Consent to a Coding Test in an Interview". He observes similar points that I've noted about conducting such tests as a monkey-see-monkey-do of what some other company does for its interviews.

Some things that should be changed

  • Interruption: I was busy with some work. Why not contact me formally and schedule a time for the interview? 
  • Time limits: The foobar challenge needs you to login when they present the challenge. Even after logging in, there's a time limit. If you exceed it, you forfeit your chance. A friend received the invite while he was at work. Even he told me he didn't like the interruption and the fact that he was expected to login to his personal Google account while he was using his employer's computer. People may have various emergencies or problems in life they are going through. The time limit is unhelpful.
  • Lack of clarity: When presenting this kind of a challenge, it's necessary to look it at from the point of view of the reader, and ensure that the question is explained well. Level 2's question was neither explained properly, nor did they explain it when I requested. Yes, I know that people solved it anyway. Even I eventually figured out on my own, what the a/b was. My point is, that it's the recruiter's responsibility to put in some effort to explain it well (or at least respond when the candidate asks questions).
  • Solutions available: Various people have publicly posted answers to the foobar challenges. Solving it does not really evaluate a candidate's critical thinking and problem solving capability.
  • Time wasted: This process wastes time. Even if one spends many hours solving these problems, there's no guarantee of getting interviewed, or of getting the job. Think of how much time is lost in doing coding challenges of multiple companies.

The amount of time candidates lose when the time-consuming coding round is conducted as one of the later rounds, versus when it is conducted as the very first round

I know the recruitment process is complex. I know this is Google's way of finding candidates who like solving challenges in this way and want to join the company. I know that candidates should be grateful for being given a chance. However, in my humble opinion, this is a poor way of evaluating people. It follows a similar metric that schools and colleges use, where fishes are evaluated based on how quickly they can climb a tree.

Understand talent

An old management book I once read, had a page where the experienced author noted that even a mediocre but well-coordinated team can beat a highly skilled team. This is something that many companies need to understand. There are plenty of  intelligent people out there who have varied skillsets which may not be math-specific. They may take time to understand concepts. They may not be able to memorize a lot of information. But when they are given the necessary time, support, trust, respect and encouragement, they can use their creativity and skills to deliver better results than anyone else.

So companies, try this:

  • Candidate strengths: Re-design the hiring process to understand what people's interests and strengths are. Understand how individuals function and in what kind of environments they thrive. 
  • Submission simplicity: Re-design the application submission process to be simpler. Don't make candidates fill in long forms, where they basically type out the same things that are already there on their CV. Make use of the "Easy Apply" options on job sites, to allow them to submit their CV in one click.
  • Software design maturity: Don't conduct coding tests in the first few rounds. Doing it in the later rounds is ok, but still, making experienced candidates do coding tests is silly. Evaluate candidates on their ability to design de-coupled software components. Evaluate them on how well they create maintainable software. Evaluate them on how they design usable software. Check how they refer various sources or reach out for help when stuck with problems. See how they write test cases and how they design their software to allow for dependency injection, which makes it easier to create test cases. Look at their past work for sparks of creativity and innovation.

Remember: A 10X programmer is not someone who churns out code 10 times faster than peers. A programmer who plans and designs code well, is the real 10X programmer.

As for work environments:

  • Build a warm, cooperative and supportive work culture. Plan work well so that you don't have to overwork people.
  • It isn't enough to tell someone they are valued. They have to feel it. You'll notice that what employees really want from their boss, is knowing that their boss respects them. So select your managers even more carefully than you select your programmers.
  • Don't build an emotionally cold workplace. Frequent interaction and feedback are necessary. Especially in the first few years of employment. See the still-face experiment. The need for validation and encouragement applies just the same for adults too.
Despite various opinions, coding tests might just work when it is designed with a very specific objective or metric, and when the candidate is informed about that objective. I know at least one company that does this. Hoping that more recruiters plan interviews well.

05 October 2021

How to renew your RC at a Karnataka RTO

Note: This was written in October 2021. Please check if the procedures have changed, by the time you are reading this. The floors and counter numbers are specific to Yeshwanthpur RTO, but I assume the procedures should be pretty-much the same everywhere else. I didn't have to do any hypothecation, so there is no info about that in this blog post. 

When I went to the Yeshwanthpur RTO on a Monday, I found that everyone was very helpful and efficient. Right from the helpdesk person (who went out of his way to help me), to the mid-level and high-level officers. Everyone was getting work done quickly, and I could feel the atmosphere at the RTO was pleasant everywhere. It was surprisingly good to experience this.

Checklist:

  • RC (Registration Certificate) book or RC smart-card. Original.
  • Vehicle insurance paper photocopy.
  • Aadhaar card photocopy. I tried giving my PAN card photocopy, but they insisted on Aadhaar card.
  • Vehicle's emission test certificate photocopy.
  • Pencil, eraser and sharpener (for taking the pencil print of the chassis number). Pen (these are available in the xerox shops in the RTO building itself).
  •  Umbrella/rain-coat (if it starts raining at the place where the fitness check is done).
  • Water and some snacks or lunch.
  • Change (ten/twenty rupee notes and one or two rupee coins).
  • Be well-dressed and well-groomed. It creates a good impression.

For the above checklist, it's perhaps better to take not just the necessary photocopies, but also the originals, just in case.

I had to renew my bike's RC, so as per the instructions online, I visited the RTO website. In the main menu, hovered the mouse over the word "Parivahan", and clicked "Vehicle related services" in the sub-menu that opened up. In the next page that opened, I selected "Karnataka" as the state. 

Although there's a field for "Enter registration number", I didn't have to enter anything there. Just selected the RTO and clicked "Proceed".

RC menu

Various menu options opened up. Selected the one for "Renewal of registration". 

Online services menu

Then I was asked to enter the vehicle number and the last five digits of the chassis number. An OTP got generated and sent to my mobile phone. Once that was entered, I was shown a page with the latest tax details, insurance details and the fees. I verified that the details were correct. There was a green tax of Rs.250, a smart card fee of Rs. 137, renewal fees of Rs.300 and road safety tax of Rs.500. Total: Rs.1187.

Payment 1

Selected the option to pay online and was redirected to the payment page. Here, I selected the option to pay via SBI e-pay (which does not mean that I'll be paying via my SBI account. It just means that the payment from my bank goes to their SBI account). 

Here a little problem happened. I first selected the option to pay via netbanking. Then I thought I'd pay via debit card, and clicked on "Cancel". I canceled it even before I started the payment process. When I went through all the menu options above and tried making the payment again, I was shown a message that my earlier transaction was still pending, and I was not allowed to start a new transaction. So I clicked the green "Contact us" button on the top right of the screen, and registered a complaint, requesting them to cancel the transaction. I also sent them an email.

The complaint was registered, but three days elapsed, and there was no progress (on the eleventh day I got a response though, but by then I had already gone to the RTO and solved the issue). So when I went to the RTO, I was told to go to a counter where the tech person would cancel the transaction. At Yeshwanthpur RTO, the counter is at the 3rd floor. On reaching the 3rd floor, on the left side there's "Block A". I entered there, and the tech person was at counter T17 (the counter number is not visible directly. There was a narrow passage to reach the counter, and it's via this narrow passage that I could see the counter number). This person took a look at my RC and cancelled the transaction in less than a minute. 

Update: Ten days after I had sent the email complaint, they responded that the transaction is already cancelled. Two more days later, they responded to the complaint I had registered. So rather than wait for their response, it is better to got the RTO or maybe call up and get things done quickly.

Then I used my mobile phone to start the transaction afresh, and on reaching the payments page, I was shown a message that debit cards which used Visa, were not accepted. Thankfully, the same page had an option to switch to use netbanking. I selected that and made the payment online. 

After making the payment, when I re-visited the online services menu page, I was shown a pop up that listed out all the details I'd have to take care of, so that my vehicle passes the fitness test. I forgot to take a screenshot, so if anyone could share it, please do. Basically it's about all the electricals of the bike working well, the bike starting easily and being in a well-maintained condition.

Printing the receipt

After making the payment, it's possible to go to the online services menu again and in the horizontal menu on the top, click "Status", and select "Reprint receipt/form". I believe this is what displays the filled form 25. Unfortunately, this option was not showing up for me since I was accessing the website from my mobile phone. It didn't show the option even in the desktop mode of the mobile browser. So I went to the first floor where there were some Xerox shops. They told me exactly what I needed to submit. They opened up the website on their computer, found my filled form 25 and fee receipt, got the necessary printouts, gave me a brown paper file and a green postal envelope. Even the RC card needed to be put into a little plastic pouch in order to attach it to the brown file. Getting most of these things from the RTO itself is probably the safest option. Totally, it cost me Rs.56, because they took colour printouts. Later I found out that black-and-white printouts were enough. You have the option of taking the printouts of the fee receipt and form 25 at home itself. 

If you have trouble with the menu's always redirecting you to some specific page, you can always clear the browser cookies and start afresh.

All these documents; the form 25, the e-fee receipt, the RC in a plastic pouch, the green envelope, the photocopies of the insurance, emission test certificate and Aadhaar card, have to be threaded with the little red thread they give you along with the brown paper file.

Filling details in the form

  • On the green postal envelope, I had to write my name, house address, phone number and vehicle license plate number.
  • On the form 25, I had to enter the date, sign thrice in the area for specimen signatures and sign as the applicant and sign as the owner. So the form 25 ended up having my signature in five places (and that's normal). Since the payment was done online, the form 25 contained all other necessary details of my vehicle. I didn't have to write any of it. There was a space for what seemed like it was meant for sticking a stamp-sized photo, but the official said that sticking a photo was not necessary.

Payment 2

On the third floor, block B, counter 7, the person checked the forms and told me to go to block A to pay Rs.74 more. So at block A, counter T18 (note that this is not the cash counter NT8), I paid the extra Rs.74 in cash, which was for the smart-card. The actual smart-card cost is Rs.137+74, but the additional amount didn't get updated on the website, which is why it didn't get included in the online payment. They give a receipt for this Rs.74, and I had to write my vehicle number on it. The receipt had to be added to the bunch of documents contained in the brown paper file.

Verification

The person at the third floor, block B, counter 7 then verified everything in the brown file and asked me to proceed with the vehicle fitness test.

Vehicle fitness check

When leaving the RTO for the fitness test, I had to pay the parking fee. For the fitness check location, almost everyone talks about going near Mysore Lamps Factory. But when driving toward the place, I didn't see that landmark. After driving for a while along the road shown in the map below, I noticed a small pit-stop that deviated toward the left from the main road. Similar to how there's a small pit-stop at some bus stops, so that the bus does not obstruct traffic. That "pit-stop" is where the fitness check is done.

Fitness check location
 

I was told that the inspector would arrive by 12:30pm, and he did (which is an important point to note. If you go there much earlier than 12:30pm, you'd end up waiting for a long time). The inspector asked to see my form 25, he verified it with my bike's chassis number. Then he asked me to start the vehicle, checked if the lights were working and did a bit more inspection (tyres and general condition of the vehicle). They seem to have a knack of knowing which vehicles are serviced well and in good condition. I think his colleague kept track of which vehicles passed the fitness test. All this lasted only around two or three minutes. For everyone whose vehicles passed the fitness test, he told us to meet him at the RTO at his office at 3:30pm.

One person who came to get his vehicle inspected, had got his bike cleaned and polished so well that it actually looked like a brand new bike. I, on the other hand, had got my bike serviced a few months prior, and just used water and a cloth to clean my bike myself. That was enough for my bike, since it had no rust and was regularly serviced. I had also replaced both the worn out tyres with new ones. Basically, the inspector checks if the vehicle is road-worthy and whether it complies with the rules. Servicing the vehicle via an experienced, knowledgeable mechanic or authorized service center is more than enough. You don't have to go overboard with repairs. A routine servicing to ensure that the vehicle complies with motor vehicle rules is sufficient.

Pencil print

It was not necessary to take the pencil print of the chassis at the place of inspection itself (in-fact, they asked us to move on quickly). So I went back to the RTO, parked the bike there and took the pencil print. On form 25, there's plenty of space at the bottom of the page and at the right side of the page, where the pencil print can be taken. The inspector's assistant had told me to do it at the bottom of the page. I noticed that pressing the pencil tip too hard didn't create a good chassis number impression. Doing it a bit lightly, gave a good result. Some online posts spoke of how difficult it was to get this pencil print, and how they had to use a drop of petrol or oil to get it done. I didn't face any such trouble. 

Taking a pencil print of the engine number was not necessary.

Facilities

  • There is a tiny stall at the ground floor, where one can get biscuits, some other little snacks, tea, soft-drinks and bottled water. If you want a proper meal, there's a restaurant near the flyover named New Sagar.
  • On the ground floor, at the back side of the compound, there's a clean pay-and use toilet. On the third floor, there's a toilet a little away from the B block entrance.
  • There's a reasonable amount of parking space. You can park all around the compound of the RTO. Visiting on a weekday is best, since one can avoid parking congestion and avoid long queues.
  • There's an elevator you can use to visit various floors.
  • There are various shops for notaries, stationery and insurance.

Inspector's office

At 3:30pm, the inspector was at his office. This was at the third floor, office i2. The office of the inspector of motor vehicles. He signed on the form 25 and handed my file to his clerk. The clerk entered my vehicle number into his computer and said that I had to obtain a release from another counter. So I went to counter T14 in block A, and the person did the necessary release in the computer and put a seal on my form (if you did your road tax payment online, you'd have to ask the person at counter T14 to update the info in their computer too. Else you'll encounter an issue I faced as mentioned below under the "Receiving the RC" section). I brought the form back to the inspector's office, and the clerk completed the remaining formalities in his computer. Then he put a seal on my form and asked me to submit it.

Submission

At the third floor, block B, counter 6, the person accepted my file, checked it and gave me a pink receipt as acknowledgement. I was told that the renewed RC would be sent to me by post.

While leaving the compound, I had to pay the parking fee again.

Viewing the status of the application later

Viewing status

In the Status menu, select the "Know your application status" option, enter your vehicle registration number and captcha and you can see the status of your online payments, the status of the fitness check, the RC renewal approval status and even when the smartcard was printed and dispatched for delivery.

Receiving the RC

Even a month after I submitted my file, there was no progress, so I visited the RTO, showed the acknowledgement slip, and the officer asked a person to find my file. He found it after quite a bit of searching, and I noticed that the file was the one I submitted 15 years ago when registering the bike. The officer checked the details in the file and the file went ahead for further processing.

Within a week, I saw the status as approved. Another week later, the status was that the RC was printed. But even a week after that, it wasn't dispatched. So I went to the RTO again, showed the acknowledgement slip and the officer located my self-addressed envelope, asked me to sign in a register and handed me my RC. Due to a chip shortage in the semiconductor industry, they couldn't print a smartcard, so I received the RC as a paper printout with a QR code. If I had waited longer, the RC would have reached me by post. Instead of depending on the RC reaching you, by the time the RC is printed, it should be available on DigiLocker. Legally, the RC on DigiLocker is as valid as the original document.

When I looked at the "tax paid" section of the RC, I noticed that they didn't update the date. So I had to go to the technical assistant, who redirected me to counter T14, where the info about the road tax payment got updated. Apparently, when the transaction is done online, the road tax payment info does not get updated automatically at the RTO's computers. You have to tell them to do it. Once done, it's just a matter of downloading an RC extract online. I believe this can be done on Karnataka One.


Additional note

Since my license plate was old, I was considering replacing it. Near my house, the people who made license plates, were making it using Aluminium, and they were adding a blue logo with a circular pattern of stars and an IND written on it. But I had found out that such a logo was not the actual HSRP license plate that the government mandated. I asked the assistant public information officer at the RTO, and he confirmed that those blue logo license plates were not what we had to use. I also met the head of the RTO who said that the RTO can tell us what the rules are, and the rules are what is specified in the motor vehicles act. 

Vehicles manufactured after 2019, are equipped with proper HSRP license plates. Such license plates have a special laser etched number below the IND mark. As of October 2021, Karnataka does not yet have a provision to issue HSRP license plates for older vehicles. So for now, older vehicles just need to follow rules 50 and 51 of the motor vehicles act 1989. Rules and HSRP details are also mentioned on this website. Places like Delhi have an online method of applying for HSRP plates. The officer at the RTO didn't reply to my query of when HSRP would be rolled out for older vehicles in Karnataka. I was however told that the RTO does not issue replacement license plates. I'd have to get it done outside. Some shops that make license plates, are currently refusing to give anything other than the IND plates. Some are also overcharging, at around Rs.550 (for 2 wheeler front and back plates), for what should cost Rs.300. Try finding a shop that complies with the rules in the motor vehicles act (see this and this).


Hope the details helped. I've noticed that there's a lot of confusion that people go through when following these procedures. There's a lot of doubt about many details too. This article was meant to clarify those. There's nothing to worry about. It's a simple and efficient procedure. The people at the RTO are a friendly and helpful group of people. It was a simple process that can of course be automated a lot more, but I was happy about the hassle-free experience.

Update: I also created a guide for how to renew a DL here.


Say thank you or donate