Master in AI 19 May, 2020
Few days ago I purchased the domain name masterinai.com and launch a site
that would give people certificate saying that `You have finished the coursework
equivalent to that of a masters program and you possess similar knowledge`.
Currently, education is free. If you want to learn anything, you can go online,
find free books, tutorials series, video lectures. There are even sites that
let's you do free exercises. The education methods available online are highly
superior compared to that of your college professor and classroom learning.
This is truly great time for people who wants to learn. You are not limited by
resources, but only by your willingness to learn.
So, it is not really possible to charge someone a lot for education material.
Despite this, colleges are still thriving. Despite their exurbent fees, there
is tremendous competition for getting college programs. That clearly tells that
colleges are providing something that is truly valuable.
Colleges provide you with recognition and community. A job, a bootcamp or a
series of online courses might not remain relevant or significant enough to put
on your resume after some years. Unlike those, a college degree stays on your
resume for the rest of your life.
Is it possible to provide valuable recognition at a cheaper cost and without
having to go through thousand things that are wrong with colleges?
I will try to come up with a framework to be recognised, given that you possess
In other words, say a 40 years old English Teacher wants to get a job at Google
as an AI Researcher. He cannot afford to leave his job, not earn for two years,
and pay $80,000 tuition fees. Luckily, there is an online degree option for a
much cheaper price, $30,000. But to even apply for the program, he has to write
GRE (so irrelevant), prepare a letter of motivation to do that program, find
two recommendation letters. Even, if he does that he might just get rejected,
because he doesn't really have the relevant background. Say, he is hardworking,
self motivated and willing to finish the complete masters level coursework to
prepare him to do research in AI. How can he prove that he is as good as
someone with a masters degree and deserves that job? This the recognition
As per the framework I am proposing, if he finishes following tasks, he should
be deemed equivalent to having a masters degree:
1) Say, every chapter in the coursework contains quizzes. He has to clear every
2) Where applicable a chapter would be accompanied with assignments. He has to
clear all assignments.
3) A showcasable usable project in the field.
4 Significant contributions to a known and already in use project in the field.
The important thing here is to be able to show your individual contributions
clearly. For example you could show your PRs, if the project is on GitHub. A
group project where you are not able to pin point your contributions is as good
as nothing. It is much better to have have all of your contribution linked to
each other. For example, fixing bugs or doing small issues for an open source
project does not really tell much about your abilities. Building a whole new
component from start does. If all these conditions are met such contributions
can be considered as an alternative to the project component.
5) Publish a research paper.
In order to show that you have done, 3 to 5, you can do it on you own. To show
that you have cleared tests and assignments, you would need some site where you
submit those things and get a proof that you cleared them.
Why do I have to do 1 and 2? Can't I just create a cool project, contribute to
an open source project and publish a paper? There are examples of many people
getting jobs that way.
--> Yes, that is something that you can do. But it is not same as a
degree. Doing project or publishing a paper gets you really deep
into a topic. A degree gives you breadth as well. It gives you
a decent idea about all aspects of the main subject you are trying
master. You can build a `personalized news` app that utilizes
Reinforcement Learning, but that doesn't mean you understand all
other subjects of AI. There is value in getting that breadth.
Creators and Engineers 15 May, 2020
For good or bad, you don't need to be a Good Engineer to create a useful product.
Most users don't know the first thing about privacy, security and optimisation.
There is thread trending on hacker news about someone whose extension is being
removed from Google Web Store. This person has written some seriously bad code,
and is so clueless about why Google is removing their extension. His/her extension
has more than a million users.
Elon Musk shipped products faster by writing crappy code. He famously wanted to
use Microsoft Servers instead on Linux, because doing so would have helped them ship
things faster. Max Levchin threatened to leave if they did not use Linux Servers.
Most companies that used Microsoft servers died, they survived, because PayPal
luckily used Linux Servers.
If you don't know binary trees well, you are not a good engineer. If you create
Homebrew, that doesn't change the fact that you are not a good engineer. You are
a good creator. Engineers optimise, clean. They have keen eye for details.
Most startups ship things faster by writing crappy code. Fancy word for that is
`organically developed` (read a giant hot mess). That code is a ticking time-bomb.
If people start using the thing, they eventually hire `engineers`, who will unravel
that mess. The company survives.
Big companies often use `engineers` to build new products, who will try hard to not
ship bad code. They end up shipping fewer products and even fewer useful products.
Often most of their successful products are accessories/integrated to their primary
product (built by founders). Often a lot of their successful products are built by
startups that they acquired.
Income Share Agreements 15 May, 2020
Income Share Agreements are an excuse for education companies and colleges to
charge a lot more money than what they truly deserve. A better way to do this
would be to charge companies when they want to hire fresh graduates.
High tuition fees are unjustifiable, because knowledge has become cheap. The
internet is filled with wonderful study materials, books, videos and tutorials.
In such an environment the marginal cost of a new study material that your
college/bootcamp/(whatever new fancy they like to call these days) provide is
negligible (close to zero).
Because students don't have to pay right now, they don't realize the fact that
they are being charged way too much money. It is same as the trap of loan. If
there were no education loans, how many students would be willing to pay these
exuberant prices? Much less students. Would that make colleges/bootcamps lower
their prices? Significantly.
My brain-dump to improve higher education 28 January, 2020
These are my notes when I was thinking on how can I build to a college of my dreams.
I don't know when I will be able to do it, since
- it will definitely require funding,
- it would take really long time to make a different kind of college mainstream,
- amount of money to be made are probably not justifiable with the efforts that
anyone will have to put. I will feel as if I am doing a disservice if I try to
the society squeeze more money
So, I am putting all of my raw thoughts here, so if someone with superpowers ever
gets lost on this corner of the internet, there is a tiny chance that this will
become a reality. For more context read my previous two blogs Faults in our higher
education system …. and ……. And how to fix them
Problems with working remotely from India 25 January, 2020
Remote work is great for so many reasons. You get to work from wherever you want,
you don’t have to commute to the office and get stuck in traffic. It is great if
you want to travel the world and work at the same time. It is great if you have
kids to take care of and parents to help at home. You don’t have to move to a
different city. And many other such wonderful things. I enjoyed my time as a remote
developer and still do.
But just like everything else, it too has problems. I will only talk about the
problems of doing remote work from India, because that’s what I am most familiar with.
- Proof of Employment
Most remote developers working for an offshore company are not officially employees
of that company. Developers charge them monthly invoices. The company cannot provide
developers monthly pay slips, form 16 or employee benefits. At my age, couldn’t care
less about employee benefits (I should though), but I do care about pay slips. For
most traditional institutions, pay slip is the proof that you have a steady source of
income. Without that you fall into the category of self-employed. You can show your
contract with the company and recurring transactions of income, but that won’t work.
Pay slips are just too straightforward and easy for them, they just don’t want to deal
with anything else.
Try applying for a credit card without a payslip. You will either have to wait until
you file multiple Income Tax Returns or maintain good balance for a reasonable time.
And still your credit limit will be much lower than someone earning the same amount,
but has a pay slip. For my visa applications, I had to highlight multiple transactions
in my bank statements, provide certificates for my business entity, a copy of my really
long consulting contract. Which government officer wants put efforts in going through
all that? They would be happy to serve someone with a payslip and choose to avoid you
who is confusing them with so much paperwork. A huge number of Indian professionals
are first generation of office-goers in their family. They don’t have many proofs to
show their financial stability. In that way, a pay slip, I think, would matter more
than it does in other countries.
Remote developers would need to travel offshore to meet their colleagues. I have wasted
a considerable amount of time preparing my visa applications. If I had someone to handle
that for me, I would have been a much happier developer and put more of my time in doing
As far as I know, most MNCs in Bangalore, handle visa for their employees. I can’t
expect a remote-first offshore company to do my visas for me, especially if it is small,
which almost all of them are. They don’t know how to deal with this problem any better
than you do. And honestly, doing this may be sub-optimal use of their time and it is better
spent on something else productive.
- Handling taxes myself
It is sub-optimal use of my time. My time is best spent on software development. By now I
know a lot about taxing than what I did a year ago, more than some local CAs. Which is not
a complement on me, but a remark on many CAs.
Finding a good CA is tough. Finding the one you can trust is even tougher. I had to
cross-verify things they were saying and often times, what they were saying would be wrong.
Often instead of them giving me ideas on how to save taxes, I had to tell them and they nod
yes. One of them had this grand idea of making me pay 35% tax (30% is max tax for the highest
slab). I think I have finally found the right CA.
But given the option, I would have chosen to learn none these and would have delegated this
to someone else.
When you go to the office, you can make friends, talk to people and maintain your sanity.
Sitting at home with no one to talk to, you get bored and insane. It could make sense for
someone with the family, but that’s not the case here. A large chunk of Indian developers
are in their 20s, avoiding marriage. Plus most of them are living in metros, far away from
their hometown. So, your office circle is your primary social circle. They can try to go
back to their hometown, but that place would not have good facilities and other developer
You could try going to some coworking space, but they are simply put useless. The problem
with today’s offices is that they are so open, noisy, distracting and everyone just keep
pulling each other into their solving their problems. I would be surprised if any real work
gets done in a coworking space, because they are not optimized for productivity and
But why do you care, you want to go there to socialize anyway. Problem is that most of the
coworking spaces are occupied by startup teams. They have their own circle and not need to
socialize with other.
- Unreliable Internet
Out of all the problems, this one can be most easily addressed. I had two wired internet
connections (Spectra and Airtel). Sadly, there was metro construction outside my society.
Most of India is developing rapidly. This is the story of almost everywhere. Construction
is going on everywhere from metros to villages. Because of that they would break cable every
few days. I have attended quite a few meetings on relatively slow wireless internet.
Interestingly, my society was inside a tech park. They surely don’t have internet outages.
Companies have separate connections that goes deeper and doesn’t get broken easily. Only if
I could get that connection for my apartment!
- No office
I know complaining about not having an office is so not remote-like. This is a problem
Like it or not, but staying at home and working is not easy. I have weights and ropes in
my room right next to my table, but I rarely use them. I end up doing more exercise when
I wear my shoes and get out of my house at 6 in the morning. Most human habits are based
on rituals. Going to office is a ritual that gives you a mental switch and ensures that
you will work. Waking up early is the ritual. If you do it, you are much more likely to
exercise. With a home office, it is difficult to balance work and life.
Plus, most indian households are noisy, chaotic, sudden guests and in general not a great
place to work. If you stay at home, someone will ring the doorbell, you will have to take
your dog to pee, attend the electrician, give your brother’s friend his book back and many
other small tasks just enough to stop you from long stretch of focussed work.
I think most of these are problems for the companies as well, since these things make their
developers less productive. And fixing them will make more developers open to remote working.
I am trying to solve some of these problems with remote91.in. Check it out and get in touch
to solve them for your company.
Which cryptocurrencies will survive? 16 January, 2020
I am in the cryptocurrency/blockchain space now for about more than two years. Overtime,
I have developed a hypothesis of my own about what it will take to make a cryptocurrency
successful in the long run.
To understand this we have to realize that cryptocurrencies are directly opposite to the
government. Much of the power that the government gets is from its ability to control the
money, collect taxes, being able to spend that money in different sectors as government feels
appropriate. If a cryptocurrency replaces currency of the government (fiat currency), that
shifts all the power from the government to people who control that cryptocurrency (developers,
miners, users). In the resulting powerless government, you have a society with no order and
everything goes haywire.
To tackle economic problems such as unemployment and inflation, government has primarily
two ways, fiscal policy (adjust taxation and government spending, usually done by the goverment
department) and monetary policy (adjust money supply and interest rates, usually done by the
central bank). There is clearly no way to implement monetary policy in cryptocurrency world
because of its fundamental virtue (decentralization). In an imaginary world full of honest
taxpayers, government can implement fiscal policy, but clearly that will never happen. Some
countries have introduced negative tax rates to increase business and employment. That can't
happen if government does not control the currency.
I am convinced that cryptocurrencies are here to stay, but most likely they won't replace fiat
currencies or central banks, but will replace gold and store credits. If cryptocurrencies
replace central banks, that society and economy will be controlled by people controlling those
cryptocurrencies (rich people), and thus would be worse than what we have now.
With that bit of context, these are the things I think are needed for a cryptocurrency to
replace fiat currencies
- It can be used even if it can't be traded with fiat currencies.
Most cryptocurrencies today will see a sharp decline in their value if they cannot be traded with
fiat currencies, which means their value still comes from fiat currencies and are merely gambles.
Governments allow cryptocurrencies until they don't see a real threat from them, which is when their
value comes from fiat or they can control and monitor transactions by rules and regulations (government
can take away the value whenever they want). One way to do this is obviously having the trust of
users. One more way is to codify it in such a way that it can be traded for a valuable digital resource
(computation, storage, network).
- Maintained by developers which are unknown
If the group that maintains source code of the cryptocurrency is public, the government can control
them and influence their decisions either by bringing forward new regulations or forcefully.
Controlling those developers translates to controlling the currency. Also, it would be nice if no
single developer has a cult like following and many developers contribute relatively equally. It is
really rare for that to happen, that too on its own. If a cryptocurrency source code and technology
is maintained by group is publicly known and concentrated in country X, it a national security threat
for a country Y where that particular cryptocurrency is getting popular.
- Users can remain anonymous
That way it remains usable even if banned.
- Solid protocol with bug-free implementation
This one is obvious. Users will lose money because of bugs in implementation or loopholes in the
protocol and will likely not trust again.
- Decentralized way to download the client
There are ways to do this, but I am not sure if it is possible or easy with the internet as it is
today. Take inspirations from IPNS and DNS-Links. Different peers would have different versions
of client. Match client copies of version that you want and download the most common one. Something
that can be downloaded from bitcoin.org or ethereum.org still seems pretty centralized to me.
Cryptocurrencies that matches most with above, are generally popular for illegal activities,
funding crimes, black money etc. So, this seems like a good rule of thumb.
I think someone who wants to make a strong cryptocurreny can learn a lot from torrents and its
community. It is an amazing technology where developers are not so famous, there are multiple clients,
multiple torrent link providers, multiple seeder and leechers etc. It is decentralized in many ways.
It has survived despite government bans. Domain names got banned, but there are many torrent-listing
sites with different domains and now there are sites that provide lists of active torrent-listing
sites. Regardless of whether you like or dislike torrents because of its legality, it provides a
great model for distributed software.
Most cryptocurrencies can be divided into four categories based on how many boxes it ticks
from above listed properties (most boxes to least)
- Store credits
Gamble currencies will disappear eventually. Store credits stay as long as the store stands. Gold is
timeless (but which one?). Rupee-alternative is hopefully never happening.