My favorite Quotes

I believe in having a list of favorite quotes as by reading this list, you can quickly tell what kind of person I am in general:

  • Excellence is not a skill. It is an attitude
  • Shoot for the moon. Even if you fail, you will land among the stars.
  • Always borrow money from a Pessimist. They never expect to get it back anyway.
  • Life is worth at least 1 skydive (Ok I came up with this. See this video to understand what I am talking about)
  • You’ll always miss 100% of the shots you don’t take.
  • Impossible = I-M-POSSIBLE
  • Courage is being afraid but going on anyhow
  • Give a man a fish and you feed him for a day; teach a man to fish and you feed him for a lifetime
  • I may not be there yet, but I'm closer than I was yesterday

And I really believe in the 7 Habits of highly effective people concept.

Tools to start a Software-As-A-Service (SAAS) business

I am running a SAAS business and thought to share some of the critical tools that we use for the business. Of course, it can vary based on your needs but if you are running an online web based SAAS business, then the following tools are very handy.

DISCLAIMER: Some of the tools mentioned below may have referral links that gives me a very small commission if you end up subscribing. This however does not mean that I am recommending these just for the commission. We use them happily at our company.

Hosting

This one is important as to where should you host your servers unless you are big enough to build your own data center.

I highly recommend using A Small Orange as their customer support is excellent.

Some other good alternatives:

  • DigitalOcean. They have a great User Interface to setup VPS that they call "droplets". For $5/mont, you cannot go wrong with their 512MB (memory) and 1GB (disk). FYI, this blog is hosted on a digitalocean droplet.
  • Linode: Another decent option but a bit expensive compared to DigitalOcean.
  • Amazon AWS. If you need flexibility and scaling as you go along, AWS is a good idea. But be careful with AWS. There is no upper limit on usage and hence you can get a huge bill if you end up using too much resources.

Emails

  • Mandrill. My pick so far. Gives you 12,000 emails FREE every month. Nice and simple API and a dashboard as well.
  • Amazon SES. Equally good as Mandrill but have not used it for our business yet.
  • Mailgun(https://www.mailgun.com). Another good one with high ratings.

Dev Environment

  • Git (version control)
  • Gitlab/Github/bitbucket (git hosting)
  • Editor/IDE
    • phpStorm
    • WebStorm
    • Sublime text

Video

  • Vimeo. Great pricing for pro accounts. You can upload upto 20GB/week with no overall upper limit for only $199/Year which comes out to be $17/Month. Great deal if you have lot of videos for your business. Offers decent API.
  • Wistia. Their analytics is the best in my opinion. Good Interface/UI as well. But they are a bit expensive compared to Vimeo. They charge you by bandwidth usage unlike vimeo. Another huge feature they have is "SubAccounts". Good API.

Payments

  • Stripe. Hands down the best Payment provider/API so far. You can start taking payments on your website within minutes and it is great for developers with their awesome and easy to use API.
  • Braintree
  • Paypal. The old beast and to be honest, I am listing it because it is most widely used in the world due to its extensive reach but really there is no reason to recommend Paypal. Horrible UI, bad API and many more issues. Avoid paypal if you can.

Static content/CDN

  • Amazon S3
  • Cloudflare
  • MaxCDN

Project & Task Management

  • Asana
  • Trello
  • JIRA

Customer Support

  • Live Chat
  • Olark

Communication

  • Skype
  • Mightycall
  • Grasshopper

UI Mockups and design

  • Balsamiq
  • Napkee

Libraries/frameworks/Languages

  • PHP, JavaScript, Python, Ruby, HTML,CSS
  • Twitter Bootstrap
  • AngularJS, React, Meteor (front end JS frameworks)
  • Laravel (PHP framework)
  • Django & Flask (Python frameworks)
  • Rails (Ruby framework)
  • NodeJS (JS backend)

Quitting my job to become an entrepreneur

I have been meaning to write this post for a while now. I started a bootstrapped business as a part time venture but I finally made the call to quit my full time job in January 2015. The reasons I wanted to do this :

  • I want to take control of how I spend my time. For example, I can now start working the AM after I drop my kids to daycare while wifey goes to work. No more rush hour commute for me!!
  • I want to create something of value that can hopefully exist even after I die (read: a company that builds a real product and solves a real problem)
  • I love creating something of my own
  • I hate the usual 9-5 work routine. I like flexibility. See my first point again.
  • I hate commuting in traffic. Did I say that already ?
  • Create something of enough financial value that I can hopefully give it to someone else even If I cannot run it anymore.
  • I want to be my own boss. I know this get trickier as entrepreneur specially if you have investors and board of directors but for now, I am enjoying it being 100% bootstrapped.

I have to say that until I did this, I worked in the industry for 10+ years and I never really hated my job itself. I met some really smart people whom I still try to stay in touch with and I learned a lot working in my professional career. I never had a job that I truly hated. So what was the problem ?

I just had that itch to do something of my own. Really bad itch. It was itching for years before I could actually take action but I am so glad that I did this.

Downsides ? so far, my income has gone down dramatically (< 50%, ouch) and no more easy money (yes, I always felt that my jobs made easy money for me. secure paycheck and all). The wife does not like this but she totally understands why I am doing this and what the potential is.

If I fail, I will not be disappointed because I will have no regrets. I didn't want to be on my death bed and cringe that I never tried to do something of my own. That part is taken care of.

Ok, back to work now.

A decent Hotel near Mumbai International Airport

Due to a family emergency, I had to travel to India this week. It was a really short notice and I ended up buying a flight that did not brea my bank too much for a one way ticket. I travel to my hometown which is a small metro compared to the bigger metros like Delhi/Mumbai etc. To go to my hometown coming from outside India, you either take a flight to Delhi (most ideal) or second choice Mumbai/Kolkata etc. Mine ended up being Mumbai as I got an ok deal considering it was last minute ticket.

So, I had to stay one night in Mumbai before my flight next morning. After asking a few people who might know, I searched online and came across Holiday Inn which is just about 2 kilometers away from the International airport. It is not exactly Taj or Hilton but I was pleasantly surprised to see really good quality service and the room was excellent. Very happy overall.

If you need a hotel close to the Mumbai Internal Airport, I definitely recommend looking at Holiday Inn.

Oh, and to get there the best and cheapest way, take Prepaid Taxi from the airport. Prepaid taxis are safe, decent and the most economical way to travel around in a taxi. Don't bother booking any private taxis or anything like that. They might have good service too but for short travel from airport, you don't need that extra expense that they will charge.

Why you need to learn SQL

Lets face it. We all work with computers (well a lot of us) and at the end of the day, we are processing "information" a.k.a "data". Whether you are an accountant, a marketer, a sales person, analyst, real estate agent, banker, customer service agent, insurance agent, programmer etc, you have a lot of information to work with.

When we use computers, we use some kind of a software or a Tool to work with data. This can be in the form of a front-end or "GUI" (Graphical User Interface) or screens. Most of us are given this tool to work with actual data that is in the background a.k.a "backend" or more officially a "
database". Many times, we are limited by the functionalities that the screens/GUI provides and all we care about is getting the actual data behind it. We don't really care how pretty the GUI or the screens look like, we just want the damn data behind it

This is where SQL comes in handy if you know just enough of it.

  • Learning SQL gives you "direct" access to the actual data within a system.
  • You are not limited to querying what the front end screens or pre-designed reports provide you. You are your own boss. Query whatever you need (restrictions apply of course but still very powerful)
  • You remove reliance on an IT person or a developer to give you "your" data.
  • You can create your own custom reports by pulling in whatever data attributes you want on the fly.

Disclaimer: I am writing a book on SQL that teaches beginner to intermediate SQL. This book focusses on the "why" aspects of SQL and not just the "how".

How to generate Clean URL or a Slug in Python

If you have some content like a blog, article etc, you probably want to generate Clean URL for it a.k.a Slug in journalism terminology. In Python, here is how you can do it:

import unicodedata,re

def slugify(str):
    slug = unicodedata.normalize("NFKD",unicode(str)).encode("ascii", "ignore")
    slug = re.sub(r"[^\w]+", " ", slug)
    slug = "-".join(slug.lower().strip().split())
    return slug

This code above creates an ASCII only slug. For example, if you pass "I am a ^Slug#$%^" to this, it will return "i-am-a-slug" as the result.

Idea #13: Small Profits Automated Trading Bot

I have a summarized blog post where I am listing all my project/business ideas as I think of them. This list is fluid and will be updated as needed. This specific post is the details of Idea #13.

I was thinking about this recently. So there is definitely money to be made in the stock market if you know what you are doing. I strongly believe that if you follow a company in detail and keep an eye on how the company is doing, there is a good chance you can bet with some level of comfort on that company as long as you don't over do it. For example, I am a customer of Macys for many years and absolutely love them. Why ? Because they have great products at awesome prices and their customer service is always excellent. Whenever I have walked into a Macys store, I have never felt uncomfortable and always find great things. Whatever their business model is, it really works. Now, does that make it enough to buy the stock ? Perhaps not. But I am surely going to keep them as a major contender for my stock buying. Actually, I bought a few Macys stock in 2008 at about $23 a pop and today it is about $55 a pop. so far, my bet on Macys(M) is paying off.

I also am not an expert who can look at crazy technical charts, analysis and what not and make a decision to buy a stock. I cannot just rely on numbers and history. Again, a stock's price depends on how well the company is doing and how well will it potentially do in the future as well. I am probably sounding too naive but thats how I am rolling if I do.

Here is my idea. There are already multiple brokerages offering buying/selling on their platform. They let you do limit orders, stop loss etc but there is no platform that lets you do the following:

Automated Trading bot for small Profits

Step1 : Create a hand picked portfolio of companies that you are interested in. Of course, this step is the main driver behind the entire idea. So we need to talk about it a lot more on how to pick great stocks but that will be a whole post by itself.

Step 2: For this portfolio or a subset of it, create "small profit cap". The idea is similar to a cap trade where once interest rate hit a certain ceiling, the buyer of the cap receives a payment from the seller. In this case, once that "small profit cap" (say 3%) is reached for that "subset of portfolio", the system should trigger a sale for any profit over the initial purchase price. We can write the following python code

small_profit_cap = 0.03 # 3%
stocks_to_sell = []
commision = $x
foreach stock in Portfolio-X:
    curr_unrealized_gain = calc_gain(stock)
    if curr_unrealized_gain >= (small_profit_cap + x):
        num_shares_to_sell = calc_shares_to_sell(stock) 
        stocks_to_sell.append(stock,num_shares_to_sell)

def calc_gain(stock):
   curr_price = # Make a call to API 
   gain_amt = curr_price - purchase_price
   gain_pct = (gain_amt/purchase_price)*100
   return gain_pct

def calc_shares_to_sell(stock):
    pass # Need to come back to this

Step 3: Now we have a stocks_to_sell list that can now be executed in real time which will be another major task of this trading system.

Of course, I realize that there are lot of assumptions and generalizations being made but my idea (at least on paper) is simple. Buy a hold the stock until it gives you that "small profit cap" and once it hits that mark, sell just about enough number of shares to make that small profit

Step 4: Finally, re-balance the Portfolio by buying shares of the company enough to go back to the original balance on purchase.

Objectives

  • "Small profit cap". I used this term above but let me explain now. Basically, we want to create stream of fixed income on a monthly basis and in order to achieve this, the algorithm will sell stocks in a given portfolio once it hits a certain profit cap. This will not be unrealistic like 10% but I suggest 3%. Still better than any checking accounts out there in the USA or even a CD. Whenever my stocks make a gain of 3% within the time period, I sell it and make the extra 3% as a profit.
  • No Greed. Yes, the idea is to always keep the initial investment intact. So If I started with $100,000, I always want to hold stocks worth at least $100,000. Anything on top is my "small profit cap" that I will make by selling the stocks.

You might ask though "what if the stock value goes down which it will for sure at times". Well, then the idea is to hold those until the market goes back up. One exception: sudden change in a company which makes the stock a no-go. Then sell fast and get out. But this should be very rare if you pick and choose your stocks wisely.

Do not buy System76 Developer laptop

I was in the market for a developer laptop that comes shipped with Ubuntu installed. Some googling and forums suggested that I buy a System76 Galago Pro that comes shipped with Ubuntu and is a great bang for the buck. It is priced under $2000 and all that good stuff.

So I took the bait and went ahead and ordered it online. This was around November 2013. BIGGEST MISTAKE OF MY LAPTOP BUYING LIFE. Here is why:

  1. Keyboard sucked. Yes, plain and simple. The keys were so bad that you could not even type properly. Some keys will not register. Ok so I start googling issues on keyboard and guess what, there are entire forums discussing it. How the heck did I miss it ?

Anyway, I finally get an email from the "CEO" of System76 that says the following:

Sometimes you strike the wrong key. Sometimes it's three,   four or five keys. With the Galago UltraPro, we struck   the wrong keyboard. That's not okay with us. We went back to the drawing board and completely redesigned the keyboard.

It wasn't a simple solution. The new design required new tooling and molding for manufacturing, not to mention design and test time. We're excited to announce that our work is done and we've produced a new keyboard that results in a 41% typing speed increase, accuracy increase from 83% to 99% and solid, firm feedback with each stroke. It's awesome!

Even better, we'll ship you a replacement keyboard for free! We'll include instructions to replace your keyboard and, of course, our world class support is here to help.

[Request Your Free Keyboard]

Thank you for being a System76 customer,

Carl Richell
Founder and CEO
System76

Hmm, ok. The email sounds all good and nice but here is the problem. No refunds!! Yes, you heard it right. Read more in #2

  1. After being fedup with keyboard for weeks and before getting that nice email from the CEO which I am sure was sent to many, I decided to log a ticket with them and asking for a refund. I just did not want to bother with replacing the keyboard which is such a key component for a developer. Oh well, sorry no refunds. "We will send you a new keyboard with installation instructions and that's about it sir". WTF, really ?

  2. Do judge a book by its covers. The plastic casing is a real piece of junk. Yes, it looks and feel fragile and really cheap. Not a showstopper though but not cool.

  3. Finally, the touchpad is giant and with my giant palm, the "disable touchpad while typing" better be working, right ? Nope. It won't work even when checked. So, I ended up being so frustrated. Ok this one is perhaps an Ubuntu bug and not necessarily hardware but their customer service does not know that. They keep asking me to "check the box that says disable while typing". Really geniuses ? Anyway, I fixed it by doing this.

Bottomline, by now, they have probably fixed the keyboard issue but I still don't recommend this laptop. You are better off getting a lenovo thinkpad or even a Dell. My 2 cents.

Ubuntu: Disable touchpad while typing does not work

Ok so in case you come across this problem where the touchpad keeps moving the mouse pointer while you are typing, I finally figured out how to fix it.

For starters, you might have tried to check the box "Disable while typing" under "Mouse and Touchpad" application. Guess what, that does not work on some Ubuntu versions.

Ok, so then someone suggested to download another application called "Pointing devices" that has the same option to disable touchpad but that one did not work for me either.

Finally, this command did the trick for me:
syndaemon -i 1 -K d

If this works for you as well, I suggest you add it to your .profile or similar files. Finally, I am able to type on my laptop which is a System76 Galago Pro by the way. Oh well, in case I forgot to mention, do not buy System76 developer laptops