Friday, December 28, 2018

Your Unhappiness is Due to Your Expectations

Your unhappiness is due to your expectations

I was having a meal with a friend and there were a couple kids lightly horsing around at the table next to use. Which brought us to a conversation.

"Do you think kids being loud at restaurants is annoying?"

I reply "no it doesn't really bother me, kids are kids and I'm sure the parents are trying their best to quiet their crying baby"

He replies "yea I'm not annoyed either, but I know some people who would be so irritated"

So I think "hmm well it depends, if you were on a date with your wife and the table next to you had a screaming baby then you would be annoyed because it would ruin the experience"

"Oh right" he agrees in that case it makes sense. Maybe at a nice restaurant it'd be different, but at a family it would be expected.

And that conversation triggered a memory of what Tony Robbins had said: we are unhappy when our expectations do not match reality.

If we expect our body to be in good shape but we have a beer gut then we are sad. But maybe don't expect to have low body fat because we love food and "want to live a little" and instead feel lucky to have been promoted at work. Then we are ecstatic.

In our restaurant discussion, the reason we are unhappy on our date at the nice restaurant with the screaming baby is because we didn't expect that. At the family restaurant we would have expected a noise and so our expectations would match reality.

So if we go with the idea that happiness is based off our expectations, we have 2 ways of being happy: either raise reality or lower expectations.

Raising reality is certainly possible in many cases. If you lose those 15 pounds you will be happy with your body again.

But for many cases, changing reality is the only way to go because our version of reality might be false. Think about how many young men and women are depressed because they see their friend's highlight reals on Instagram and Facebook and think that that is the norm.

But once you know the formula for happiness, then you can put together a plan to increase it.

For myself, being in the bay area, I always felt like I was "behind" as peers of mine got ever nicer cars and prestigious job titles. Another way I shifted my reality was through travel; stepping out of the bubble and realizing again how much I have to be thankful for. I continue to gratitude journal each day to keep that reality in check.

Monday, December 24, 2018

You Don't Need To Wait Until January 1

Its the 24th of December and a lot of people might be planning their new years resolutions. But I wanted to give you a reminder that you don't have to wait until the new year. If you were to start the day I wrote this article, it means you have an entire week to start doing the thing that you want to do. One week is a precious building block of time to build your castle of the new you. Don't waste the opportunity.

Again, there is no need to wait. If you are reading this on April 23rd, then make April 23rd resolutions. Aligning your start with some arbitrary date that someone chose as the "beginning" of our planets orbit is a bit silly. Putting off the start of something is just another form of procrastination. Best of luck to you all and cheers to a new and better you!

Thursday, December 20, 2018

A World Of Tradeoffs

I've always maintained that, for a sufficiently large code base and especially if working with multiple coders, in order to judge whether or not an engineer was any good, you couldn't just look at the product and the the code. Instead you would need to understand the tradeoffs that the engineer made. Can you tell by just looking at the code? Sometimes, but not always.

 Every large code base is a giant mix of tradeoffs at different levels. There are a lot of decisions made in meeting rooms that might not be 100% explained in the code. Because of relationships and internal politics, sometimes an engineer has to pick and choose their battles. They might let go of a technical decision here to win a more important one on another front. Maybe they feel one technology is better but went with another technology because the other engineers on the team were more familiar with it. Maybe their boss is stubborn and they are optimizing to keep their job and get higher bonuses rather than making the engineering top notch. The most common tradeoff is time. It could be better if there was more time to make it so, but under a lot of time constraint, the engineer chooses the best solution that will make it within the deadline set. The list is endless, its not always about having the perfect 1's and 0's in a vacuum.

Now if it is this hard to judge whether an engineer is good or not based on the result. Imagine trying to judge an actual politician...

Monday, December 17, 2018

We must apply, we must do.


A friend asked me what good books I've read this year and the answer is none. You see, I'm a natural reader. I grew up reading a lot of books. My dad would take me to the library and I'd collect a whole sack of books. Read them quickly and then bug dad to bring me back for more. Even a couple years ago (after I learned techniques on digesting books more efficiently), I read over a hundred books that year.

But this year I went on a book reading diet. Bruce sums it up pretty well. Knowledge in itself isn't valuable. Having the ability (discipline in many cases) to act on that knowledge makes it valuable. Its a little bit both of knowing and doing and good balance is necessary. Doing should naturally incite a need for knowing more and knowing should trigger a need to act. Since I've traditionally leaned on the side of digesting lots of information and then not doing anything with that info, I've decided that I would read 0 books this year. I still write down good book recommendations for later. But this year, and probably next year as well, will be dedicated to doing. Done.

Sunday, December 16, 2018

Are You Holding Back?

One of the great tests of passion is to ask yourself if you are holding back. Are you trying to do less work at your job? Are you trying to get out of writing an essay at school? When it is work we don't want to do, we've been trained to hold back. If we give too much effort they will just ask for more.

However, when you are doing something you love, when you are creating art, you no longer hold back. You ask how you can do more. You get disappointed when you have to put your brush down at the days end. You forget to eat lunch since you were so caught up in learning to strum a new song.

You can still be passionate at a job. I've been. There were times that I put in work to build a feature on the weekend that was work related. It wasn't to get ahead, I didn't bother to tell anyone, I just was having fun and I was learning. Of course at the same job I did lose that passion later on.

Asking myself if I am giving it my all is a great test for me to decide if I should continue doing the thing. It works out nicely because if I'm not into that job, I'll probably end up mediocre and stuck down the line anyway. Arguably, being good is a prerequisite for happiness. Even if it is a nice job, I'm better off doing something I'm willing to be my best at. In the long run I'll win.

Saturday, December 15, 2018

Starting With Too Much Is a Problem

Is starting with too little, maybe being born with some disability or into poverty, a problem? Probably...

But Malcolm Gladwell has done some research showing that there are a high number of successful people with dyslexia including: Goldman Sachs President Gary Cohn, Richard Branson, Charles Schwab, Henry Ford. In his book, David and Goliath, he makes a good case that the popular narrative of these people becoming successful despite their disability might be incorrect but instead that these people became successful in large part because of their disability. Similar to a blind man developing extra ordinary hearing ability, the dyslexia may have sparked them to develop extra ordinary business sense.

Along the same lines Elon Musk has stated many times that the vicious bullying and childhood trauma helped him become who he is. He publicly wondered whether his children are too soft to become entrepreneurs.
"I had a terrible upbringing. I had a lot of adversity growing up. One thing I worry about with my kids is they don't face enough adversity." -Elon Musk 
 These people, however, are the exceptions. Not everyone reacts the same way when faced with adversity.

Most people will agree that starting with too little is a problem although there are exceptions. But what about starting with too much?

 I think its a bit of the same tune as having too little. In our culture it doesn't seem rich people have so much sympathy to complain or have mental problems. As if people expect money to solve all problems. How many rich and "successful" people have drug addictions or mental breakdowns. What about what we have learned about lottery winners? Gary Vee talks a lot about some of the multi millionaires he knows being miserable and some of the 40k/year joes being the happiest people he knows. I'm sure you'd agree that if you are born into a trust fund your experience in life, your struggles, will be significantly different than someone who isn't. They certainly have adversity but likely not at the same level, to the point that some of them wish they were never born into a trust fund. If life is about growth, then having everything right at the beginning can certainly a problem.

Tuesday, December 4, 2018

Sort By Price

Seth Godin had a pretty interesting bit about sort by price. He was saying that in the age of the internet, we now more than ever before have a way to sort by price (or any other single metric). However, if you are trying to sell a good or service. You want to avoid the sort by price game.

If you are a freelancer, you don't want to say. Hey, I'll do it for $5 cheaper than my competitors. It's a race to the bottom. There is always someone willing to do it for cheaper. Instead, you want to build trust and value. You want them to say "we need Jerry for this project, go get him". You can charge a fair price to people who value your service and thus you can afford to better serve them. For those that don't value what you bring to the table and only want you if you are the cheapest you can pass and say "sorry, its not for you".

On a similar note I've been browsing the IndieHackers forums and one very common advice is to charge more money, often saying you can probably double your price as it is, or at least experiment with doing it. It flips the script of sort by price: instead of creating the product and setting what you think it should be priced at, set the price high first and then raise the value of the product or service until it matches the price. If you do it this way then you know you are not selling yourself short.

Sunday, December 2, 2018

It's All About Expectatins

The reason we are angry or sad about something is not because something happened. It is about our expectation of what should happen. I believe it was Tony Robbins who said this but not 100% sure. But its such a good insight.

So let's say your coworker says something to offend you. You react by saying "how dare you say something like that to me". You can see that it is not the fact that she said what she said but rather that you didn't expect her to say it.

Or another example is if you are a manager and your team makes a mistake and the website goes down. You get angry at them because, not because of what they did, but because you expect this to not happen. You might say "I can't believe they didn't test properly" or "If they had followed my instructions this wouldn't have happened".

It turns out that your expectations and reality are not the same. You didn't expect that driver to swerve in front of you, but they did! You didn't expect your team to screw up causing your manager to yell at you, but it happened! You didn't expect your kid to misbehave, but she did! And so you get angry or mad or sad as a way to cope.

If you find yourself reacting negatively. You may need to adjust your expectations. It is YOU that is unreasonable, not reality. This thinking will actually empower you and lower your stress. If you change your expectations to people are human and make mistakes, then your actions will change.  When your team makes a mistake, you won't get angry or frustrated, instead you will think "what system can I put in place to make sure this doesn't happen again". If your kid misbehaves you might ask yourself why and provide more teaching, or encouragement.

Its not reality that's that problem. It is what it is. Instead ask yourself if your expectations match reality.

Saturday, December 1, 2018

Is It Worth it to Buy a Warranty?

I used to work at a company that sold extended warranties for electronics such as phones & tablets so I'll share a way of thinking about warranties.

A warranty is just a form of insurance. It is insurance for if your product breaks. It protects you from the negative experience of that event. Most people buy warranties because they fear what they would do if their device breaks. If you drop your phone or one day your phone fails to turn on for some reason that can be a hearbreaking and costly event.

Is it worth it to buy a warranty for your phone? One great way to think about it is to take  step back from the situation. Let's say you don't have one phone anymore but instead you own an entire factory of phones. So, now you have to ask if you would buy a warranty for every phone. This pulls one away from the emotional thinking of covering their specific phone because one phone does not have more meaning than another phone. This turns it more from an emotional question into a profitability question.

And now you are looking at expected value. Over the long run would you come out ahead when the warranty pays out vs the amount you spent to buy the phone?

Even before making estimates, you could ask your intuition and it'd probably be right. An insurance company makes money by paying out less money than the risk of insuring the thing. In order to do that it has to win the information game. It needs to properly access the risk of the payout event to happen. And they don't have to be exactly right because they can limit their risk by charging a little bit more for the insurance. And if getting this information is the core of the business, you can be that there are some pretty intelligent people working on that problem.

So you have to ask yourself if you have an information advantage over this insurance company. You don't have more information than the warranty company on the risk of the product malfunctioning for the average person. But you do have more information on your self and if you are average! Do you have a dog or kid that will chew up your phone if left unattended? Are you highly emotional and throw your phone whenever you are angry? In this case you might be in a category where it would be more profitable to own the warranty than to not. *Although if this is true you still have a net loss as you pay deductibles on phones and buying warranties. You may want to adjust your habits and protect your phone more*

And the last part of having a warranty is peace of mind. Even if a warranty is -Expected Value, a lot of people dread the fact of paying $500 or more for a new phone and they would sleep better if they bought that warranty. This would be a valid reason to buy. Back to the example of the factory of phones. If I was the owner I'd be fine not buying the -EV warranty for my thousands of phones where but I'd certainly get fire insurance for my factory burning down and losing it all.

Wednesday, November 28, 2018

Watches Are Not For Telling the Time

We no longer need watches to tell the time. All of us carry a computer in our pocket everywhere we go. So why haven't they gone the way of calculators and point and shoot cameras? What are watches for?

If you are buying a watch today you should be honest with yourself what it is for. It will help you make a much better purchase decision. Its not to tell the time. (Yes, it might be slightly more polite to glance at your wrist during a business meeting or date rather than pulling out your phone but that's not the major reason). The major reason you get a watch is to tell OTHERS something about YOU. Its a signalling device.

What's a signalling device? Human's are very tribal. We create relationships and trust based on people who are within our tribe. Tribes can be based on almost anything. Maybe its the after work drinking crew, or maybe something more general like people who are into fitness. There is a special bond we have with those that are part of our tribe: "one of us!". But in order to find others who are part of our tribe our let others know we are one of them, we need ways to signal it. If you are are into fitness, a signal might be your yoga pants or your bulging muscles. If you like a certain band or sports team, you might wear their t-shirt or hat. Simon Sinek jokingly said that someone with an MacBook would never have a dirty Apple logo. It is always polished clean. There's underlying truth to it. Having an Apple product is like other luxury products and definitely a way of signalling (you don't need a $2000 laptop to do word processing 😁). 

So let's go back to watches. I had a friend who told me that I should get a Rolex because it could actually be an investment that made me money. I scoffed at the time of how ridiculous it sounded but looking back, I think for the right person it this could be true (think a business man in an industry where appearances matter a lot). So it's a signalling device. If you buy one you might ask yourself: What do you believe? What do you want others believe about you? Who do you want to attract?

Fyi at this time I don't own a watch. Maybe that's a way to signal too... 

Monday, November 26, 2018

Want to Change Your Habits? Travel

One way to build new habits or to get rid of negative habits is to travel. While overseas I've weaned myself off of my caffeine & alcohol dependency, I've started the habit of journaling (even created my own app), and started the habit of waking up early. I don't think I could have been as successful without the change of environment.
Why is that? Let's think back to the habits book. A habit has 3 pieces. A cue (or trigger), a routine, and a reward.

To change or remove a habit, the best place to start is the trigger.

And that's where traveling comes in. Because when you travel you put yourself in a completely new environment. That cleans out most of the triggers that you would have in your normal life.

They say 40% of the actions that we do is via unconcious habits. This is because it would just take too much mental processing to have to think about every action we take. Thus it is absolutely necessary to fall back onto habits.

But without all the triggers in place, you are left with a blank slate of habits to set up. Its almost impossible to do the same routine without the same triggers. And that can be used to your advantage. Want to set up a morning meditation habit? You can more easily do that since you are less reliant on old habits.

Hacking sleep is much easier with travel. Use the time difference to your advantage. Since your body will be out of wack with jetlag, you can more easily change your patterns to the ones you want. I've always wanted to be a morning person but could never wake up early because my body was used to waking up at 10am. But I woke up at 5am this morning because I just got back from 3 months in Malaysia. Each time I have traveled I have come back and able to wake up early. Of course each time its reset back to its normal state (mostly due to my friends schedule of staying up late) so there's still the task of maintaining the habit. But changing habits has worked in multiple cases for me.

Change your environment to change your habit. 

Wednesday, November 21, 2018

Overcoming the Resistance

I don't have trouble talking. So why do I struggle to get something down on on paper (or in this case, the web). It's because when I put it on paper, I become accountable for it. My name is there. So I can get attribution. That also opens me up for criticism. And that's a source of resistance.

And when we as humans, naturally try to avoid resistance. It's uncomfortable for us.

However, we don't avoid everything that's uncomfortable. Why do so many people take up the challenge of running a marathon each year? Why go through the difficulty of the training and the blisters? Because we can picture the feeling of success when we cross the finish line. There is enough pull to overcome the resistance.

Humans are great at getting motivated for things that give instant gratification rewards. They struggle much more with long term projects where the reward doesn't come until much later. For my latest Android app, which took a bit over 3 months to complete, I found it helpful to break it down into pieces. As Simon Sinek suggests, we actually get a small hit of dopamine (reward) when we cross off something off of our todo list. It's a powerful driver that even when he completed a task but forgot to write down his to-do, he would write it down and then cross it off just to get that little reward. I did something similar but in Trello. It was rewarding to seeing those cards move over to the next column. Also, once I started to get users and  feedback (and especially when I broke things in production and got feature requests) I was incredibly motivated to keep going.

Whats the takeaway? In order to overcome resistance to complete a big project. Try to break it up into pieces where you can get rewarded. This can be feedback from users or just the fulfillment of seeing the task get checked off.

Tuesday, November 20, 2018

Starbucks Sells Consistency

I'm sitting here writing in a Starbucks, its the 3rd cafe stop Ive had today. The first stop was a trendy local coffee shop. No one was really working in it though, and it wasn't really set up to work on my laptop (small tables and not really room to spread around) so I mostly consumed stuff on my phone. Then I went to a chill cafe next to the river. A great place to relax but the wifi was shoddy and the seats were laid back, not at a good angle to work. So I just chilled out and relaxed. So finally I decided to seek out this Starbucks. I paid twice as much for my drink as the second place and 1.5x the first place. But There's plenty of room to spread out,  large desks to work on. There's other people with books doing work as well so its work friendly. Its clean and the wifi is as good as can be.

I mention this because in general I usually try to avoid Starbucks as it represents capitalism and average coffee. But in this case I seek it out specifically because of the brand. With their brand I know what I am getting and that's so valuable for me when I need to find a place to work. I reliably know exactly what I am getting and that's worth the extra cost for me.

I remember a saying about McDonalds. No one goes to a McDonalds knowing they will get a super delicious burger. Infact, most people would claim that the themselves could make a much better burger than mcdonalds. But whats special about McDonalds isn't the quality of their burger but the fact that it is incredibly consistent. You can go to any country in the world and know what to expect at the McDonalds.

And that consistency is valuable. Starbucks got me to purchase a coffee today even though I know its an average coffee and even though I specifically make it a point to seek out local coffee houses and not Starbucks. I bought their consistency and not their coffee.

Monday, November 19, 2018

Libaries Need to Adapt

I'm sitting here doing work from the National Library in Singapore. I'm doing a slower type of travel where work most of the days. Then on weekends or evenings I go out and explore (or just whenever I need a break). If there is a library around, I like to check it out as an alternative to working from a cafe. It also gives me another perspective into the culture of the city (who is at the library? students or workers? What are they generally working on? How clean is it? etc.) Anyway I'm not here to go into those details today. But instead I wanted to share an observation and prediction about libraries.

In this library each floor (not sure how many floors but most floors seems to have this structure) consists of about 5 large tables (16 chairs each) at each end. The tables themselves were almost completely packed most of the time and I had to walk to a few ends in order to find a spot.

But the main thing I noticed were that the centers were filled with large shelves of books.

But the entire time I noticed zero people walking around the shelves picking out books. Every single person is at the desks of the libraries with there laptops or study material. So effectively 80% or more of the space is dedicated to books that noone uses.

Well I'm sure someone every once in a while picks out a book. And maybe other floors have the more popular books so I'm not seeing people browse as often. But regardless, a couple factors in combination of this makes me think that this will

View From One end of the Library to the Other. You can (barely) see the desks at the other end.
1) We are moving to digital. If you need to find some information, you will probably find the information you need online. This is more efficient. Even books themselves are being digitized. If you found this blog (everyone) then I don't have to explain. Yes there is information in books that is not on the internet and that will probably always be true but that is the EDGE case. Not the main case. So its not a good argument for having all these books sitting here taking up valuable space.

2) There is an argument that people still like to hold and read a physical book. And that's all good and well. In most cases (like if Im not travelling and don't want to lug around a book), I'd prefer the physical book to reading an ebook off of my Kindle. But, the Kindle experience isn't much worse if at all. And I believe this is a general opinion as evidenced by the rising # of ebook sales and the dying print magazine industry. There will always be laggards like the guy who still owns his flip-phone until he is dragged into modernity because it is no longer supported. That's what I think will happen to books.

So what about libraries? Well I think they will change rather than die. But very slowly. The first thing to remember is that they are supported by tax money so they won't feel the immediate hurt by people using the books less because they get their tax money either way. But I do think the people running the libraries are thinking about the public and the best ways to serve them and will take notice of the trends.

What will they change to?

I think libraries will be more akin to a coworking space. This seems to be what 95% of people are using the space for anyway. Every single person here is at a desk studying. About 80% seem to have laptops (every single person at my current desk has one). Looking around I see 1 person just sitting and reading a book. The libraries will eventually cater to the 95% of what people are already doing instead of the 5%. The process will be slow since it takes time and the pressure to change isn't high, but it will happen.


Wednesday, November 14, 2018

We Are Our Habits

We are our habits. Per James Clear our habits are a vote for who we are. Each time we do something we are reinforcing an ideal of ourselves.

James even mentioned that if identify with being someone who is fit, if one day we really failed to prioritize a workout, it would be worthwhile to do just 5 push-ups. Not because this would be enough to make us physically stronger. But because it would reinforce the habit of who we are. We are voting ourselves into the office of fitness.

A good side effect of this strategy is that because starting is the hardest part, once we get started we will probably end of continuing. Those 5 push-ups could lead to an entire sweaty workout.

Monday, November 12, 2018

Perfect Code is the Enemy of Code

I'm trying to add a feature for CustomJournal prompts that auto expand and de-expand. This would come in handy when I do my daily review of 3 amazing things that happened today. I'll come up with 4 or 5 things and then just add them all in on the 3rd line. But it would be nice if a new line could be created instead.

So I'm trying to figure out how to write the code and I'm stuck because I have multiple ideas pulling me each way. I could get the feature done easily but the solution would be quite messy (because my previous architecture did not account for this) or I could do a whole bunch of cleanup and refactoring.

Which led me to think about the tradeoff of FaceBook's famous move fast and break things/Done is better than perfect motto. The idea is that speed and shipping is a feature too and if you take too long to ship you are depriving the customer of using that feature (even while not perfect) and also depriving yourself of getting valuable feedback.

As FaceBook grew, of course, they realized that they could no longer break as many things and move as fast. User's would complain and they had much more to risk than they had to gain. Thus the value of perfect (or near perfect) became more valuable than the value of getting a feature out faster.

I of course have an app that a small amount of user's love (but not many total users: ~150 monthly active to date). Its also making me about a sale a week which is pretty negligible (doesn't impact my life at all) for me.

So move fast and (but hopefully not) break things it is. Refactor when I need to

Sunday, November 11, 2018

Malaysian Restaurants are not Thread Safe

One of my favorite software related posts is Starbucks Does Not Use Two-Phase Commit. Its amazing because it boils down a technical topic into real world terms. Its much more easy for us to grasp when we see it in some form that we can relate to (we all are familiar with Starbucks). And just seeing it in a different form helps our understanding.

I noticed one so far over my trip in Malaysia. I'll sit down in a restaurant and a server will take my drink order. After that server has left, another one might notice that I have no drink and ask for my order. I simply tell them that I have already ordered and they go on their way.

This system is much different than what you get in almost every restaurant in the United States. In the US the waiters synchronize between themselves. Usually one is assigned per table. In Malaysia, its anything goes. If there is a person that looks like they haven't ordered yet. Then take their order.

If you think about this in terms of worker threads. In the US the waiters keep the state and coordinate between each other (using various other protocols) but in Malaysia they rely on the customer to keep state and filter out duplicate requests.

The downside to this is that my experience is a negligibly worse as I get redundant requests and have to explain that I already ordered. However, there are some good benefits to this as well.

1) Its more efficient and faster. I get my order in from the waiter that notices first.

2) Its simple for the waiters. They really don't have to communicate with each other

I only noticed this because I very infrequently have seen it back at home but now it seems to happen to me all the time. There's nothing wrong with this strategy for me as I'm not annoyed with the second request. I just think its interesting how regional this system design seems to be.

Friday, November 9, 2018

These Cities are Built for Cars

I love exploring a city by foot. It's an excellent way to experience a city. But particularly in Penang and Malacca, I noticed something interesting: I'm the only one doing it. For example, in Malacca I took a walk from Jonker street to the Melaka Straights Mosque. It was less than an hour each way which is a not bad at all; an excellent way to get a sense of the city. But once I got off the main tourist area I really didn't see any other tourists the entire way.

What I did see were a bunch of buses, big and small dropping off the tourists.I think there's 2 main reasons for this.

The first is that there is a general culture of not walking. Many of the tourists are Chinese. I remember I was hiking in ZhangJiaJie which is the beautiful national park where Avatar was based off of. There were millions of Chinese tourists in that park that it felt like a single file line through the park. However, once I got to the more strenuous climbs, there were only foreigners like myself. It was comical to me to see that all the foreigners had chose to do this medium difficulty hike where the sea of Chinese tourists had passed (and the reward at the end was amazing)

Which leads to the second: these cities are made for cars, not people walking. I was having a discussion with friends (some local) in Penang and were talking about how terrible the traffic was and how hard it was to walk in the city. In Penang in many places there is no sidewalk. You just walk on the side of the street and hope a car doesn't clip you. There are so many cars, sometimes crossing the street gets tricky: And as there become more and more cars on the road it becomes harder to invest in public transporation and non-car infrastructure. "The Malaysian government doesn't want to invest in these things, they just want to sell more cars!". "It's ok"  I reply "This isn't a problem just in developing countries, even back at home in the San Francisco Bay Area we have the same problem." The infrastructure worked when there weren't as many cars are on the road. But now that there are a magnitude more cars on the road than what was originally planned for, we end up with severe traffic jams every day and not a good way to change things.

These 2 feed each other as well. If walking and biking is not an option at all then we lean towards cars, which leads to a car culture, which leads to more cars and more developing the city towards cars (more lanes, more parking lots).

Its sad for me because walking such a fun and healthy (and environmentally friendly) way to see the city. But as I suck in more fumes from from buses passing by, I might have to give it up.

Understanding Your Customers (Lottery Edition)

A billion dollar lottery recently happened and there was a lot of talk about buying lottery tickets. What would you do if you win?

But I want to point on one specific argument that I heard regarding buying lottery tickets. It comes from the guy who thinks he is a bit more clever then the rest. They might say something like "The lottery is a tax on people who are bad at math" or "Playing the lottery is for suckers because it is -EV (expected value)".

If you don't like math, just skip this paragraph. Its not absolutely necessary you understand this to get the picture. Let me explain first what the person is trying to point out. EV stand for expected value and it is the amount of gain or loss you are expected based on real probabilities. So for example if you and your friend flipped quarters, and the loser paid the winner money after each flip, then your expected value would be 0. Since we know that the probability of a coin flip landing heads or tails is 50%. Then you could expect to win half the time and lose half the time. You would be expected to net out. Note that although your EV is 0, what actually happens may be drastically different than the expected value. Your friend may win 5 coin-flips in a row and take all your money. However, based on the law of large numbers, the more you play, the more likely the results will be close to the EV.

The true expected value of the lottery is actually tricky because it depends on the number of people playing and factoring in taxes. There are cases where the lottery can actually be +EV (but due to game theory this usually doesn't last for long). So in general, your friend is correct in saying that it is a losing proposition to buy lottery tickets. For each dollar you put in you are expected to get much less back.

And we could leave it there. But that's not the point. What that person is really missing is the reason why people by lottery tickets. And it isn't to make money. That's right, most people do not buy lottery tickets to make money. If you asked them about their odds of winning or at least if they believe they will make money, I'd think that nearly all of them would understand that they will likely lose money. So why do they buy? They are buying the experience of owning a lottery ticket. To be in the game. To dream and talk to their friends about all the things they will do and buy and how their life will change. They are happy to be in the game rather than be left out. There are a so many reasons for buying a lottery ticket, "making money" is probably one of the least common reasons.

And I'm certain The Lottery (the company) understands this well as their commercials are perfectly aligned. They show a couple frolicking in their newly bought mansion next to the beach and ask "What would you do if you won?"

Another lesson in understanding why customers buy a product and those who say "People are stupid, playing the lottery is -EV" just don't get it. 

Wednesday, November 7, 2018

Opportunity Cost

I'm writing this right before catching my bus from Ipoh to Malacca. I have 30 minutes so I will spend 30 minutes. If I had more time I'd probably waste it. So this is perfect. Just enough time to quickly touch on the concept of opportunity cost.

When I was quitting my job. I was explaining to my friend about how, even though I had cut down my expenses drastically, it was really expensive for me. The reason is that quitting your job has another cost associated to it which is opportunity cost: the cost of the salary that you aren't receiving anymore. So I was giving up quite a good amount of money to pursue something else.

However, it wasn't until much later after that conversation that I realized opportunity cost cuts both ways. If I was still at my job working, I'd be thinking about the opportunity cost I was giving up (my time as I was getting older, the different experience) by continuing to stay at my job. There is cost of missed opportunity to everything we do.

There's definitely a grass is always greener mentality to this as well. We fall into the trap of thinking that the other opportunity is better than the one we are in.

And there's one last observation that I want to point out. Its easy for use to be trapped by the opportunity cost. For example, if you were to only think about maximizing money, and if you were making a fairly good salary like I was at my engineering job, then if you wanted to maximize it then the rational decision would be to work in that job for as long as possible. And this is the decision that traps many of us. As we get paid ever more and rise in the ranks, we find the decision to change harder and harder. There is so much sunk cost it would be crazy to give that up, even if we notice that our path might not be the right one. "Oh well, we are already this far and it isn't that bad, might as well keep going"
Its easy to hold on to that idea of maximizing profit and we end up with a life that we are unhappy with.

The Green Shark

I was sitting on a plane once and two kids were playing on the seats next to me. One of them, couldn't be more than 5, was being pestered by his older brother. The younger kid had a little plush blue shark that he was quite fond of. The older brother kept calling the shark green on purpose which the little one would cry out "No its not! Its blue!!" in an annoyed tone. But the brother kept on insisting it was green, trolling the younger kid.

After hearing her younger son scream "no its blue!" angrily a couple times the mother got annoyed and asked the child. "What color is the shark?"

"It's blue" replied the child.

"Ok you know the shark is blue, stop worrying about what your brother thinks" she instructed.

It was comical to witness the entire scene and particularly the behavior of the young child. Why did it matter to him what color his brother thought the shark was? Why did he get so angry and annoyed about it (being teased in itself)?

Some thoughts:

1) The child doesn't know how to deal with a trolling situation, he understands he is getting teased, and gets angry about it

2) "Someone on the internet is wrong!" syndrome. Some people can't let it go and need to make sure the person who is seeing things differently changes their mind or at least understands. The child is angry that his brother is wrong

3)  Maybe its the fact that it is his brother and not some random person on the internet. Maybe the brother is respected by the younger brother and part of his tribe. Thus it is important that someone so close to him understands and sees things the same.

It was an interesting situation and the more I think about it, the more I lean towards 1 as it is the simplest (Occam's Razor!).

Do we have our own green sharks?

Could there be some takeaway from this situation? Maybe we all have experienced our own green sharks: when someone tells us something is different then what we clearly see.

I think the mom's advice is good in most situations: ignore it. Let them have their opinion and move on.

but... what if they are wrong? Which is why it is so situational dependent because in some cases it is the responsible thing to inform and educate. Dialog is good for both parties, but when it crosses that, let them have their opinion. Don't forget.. what if it is YOU who is wrong?

As our communities grow and opinions spread, our goal should not be to convince everyone to see things the way we, or our tribe, sees things. Instead it is more important that we learn to co-exist with the with other's opinions.

Monday, November 5, 2018

Blogging is Not for Other People

I was listening to Seth Godin on the 1% better podcast and although Seth is not big on giving specific tactics (like what his morning ritual is or what his habits are). He did relent and give what he thinks is the single most valuable, actional thing someone can do to improve themselves: blog every day for 1 month. Every day, make a prediction or give some advice. That way, you will notice things in the world and make better predictions and give better advice over time. When facing the argument "the world doesn't need the another blog", he brilliantly agreed and pointed out that the blog is not for other people. It doesn't matter if you share it with anyone. It doesn't matter if you use a pseudonym. "The world doesn't need more people to run the Boston marathon. But you should run anyhow".

My advice for today is passing on the one from Seth: blog everyday. Not because you will get rich or famous. Not because anyone will actually read your blog. But, similar to running, because it will have a profound impact on yourself.

Training our Minds

We go to the gym to train our bodies. We sign up for CrossFit or do Yoga at the gym. Regular practice keeps our bodies in tip top shape. But what do we do for our minds?

In this information age our attention is bombarded with more signals and information than ever. It's only going to increase. We are mentally strained when we come home from work. Then we go on Facebook, or watch TV, or do a million other things on the internet, each soaking up another drop of our attention.

I'd argue in the future, that training our minds will be just as important as training our bodies. It won't be uncommon for people to sign up for mental "gyms" as it isn't uncommon for people to sign up for gym membership.

What are some of the things we can do to train our mind?

The first step is to disconnect. Anything that gives us a break from the information stream. That means turning off our devices and making sure we silence those buzzes and beeps. It might mean getting away from the noise, like going on a hike in nature or just staying home and sitting in silence. Mediation has become a big one. So many well accomplished people have attributed their success to their daily meditation habits.

Then there's training our thoughts. This means thinking about the things that we want to be thinking about. It might be practicing affirmations, reflection on past events, reviewing your goals and commitments. Maybe stoicism appeals to you and you practice worst case scenarios so that you are prepared for anything. Practicing gratitude, being grateful for what we do have vs what we do not, is a great way to stay positive and happy.

There are many ways we can train our bodies and it is similar for the mind. Choose whatever appeals to you, just know that it is just as important. If you looked at your body and saw some unappealing curves or if you lacked energy, you would probably go to the gym. The same should be true for the mind. If you feel a lack of energy (there is a lot of synergy between mind and body) or you feel overwhelmed, or you see yourself unable to focus and easily distracted, then join a local "mental gym" near you!

*shameless plug: I am the creator of CustomJournal which is an Android journal that allows you to tailor your mental workout. You can use it for gratitude, goal planning, review, and more.

Saturday, November 3, 2018

You are the Average

Everything is contagious. As human beings, we naturally draw our worldviews from around us. We become the average of the 5 people we are around the most. If they are fat, we will be. If they are rich, we will be. If they are sad, we will be too. The opposite is true as well.

In order for us to change our state, we can focus on changing ourselves or our environment. If we just focus on ourselves, we need to take into consideration this rule of averages. If all 5 people (for whatever metric you chose) are below you. Then they could be pulling you down and you would be fighting significant resistance. Its possible that you are strong enough to pull them up, but more likely than not you will be unable to overcome the resistance.

Instead if you find the group of people you aspire to be like, they would pull you up to their level. Its more likely you get pulled up to them vs the opposite because you want to be there.

The real world is much more messy than this. I'm not saying to find new friends but I am saying to think about how the people around you are affecting you and which way the gravitational forces are pulling. Who in your group is the stubborn one, unwilling to change their ways, having a negative impact on the rest? Who is the high achiever spreading positivity and encouraging others? Who outside your group, who is someone or has something you want, might you want to spend more time with?

Assume Failure

We all make mistakes. It happens to the best of us. We break our diet and eat a bunch of sweets until we feel sick. Or we set a resolution to write everyday but our calendar says we haven't written in our blog in a month. 

If we assume that we are not perfect and build imperfection into the model itself, we would do better.

So if I plan on going on a diet I should assume that I will have times where I will be peer pressured into enjoying deserts out with friends or have a late night pizza craving once in a while. That means my rules should allow cheat days. Or, maybe the real metric I should be tracking is how many days it takes me to get back on track after a miss.

That might be the most important thing. Psychologically, one day of breaking the diet might make us feel like we failed. We are incapable of staying on the diet. That might cause us to give up. But challenging ourselves to correct course after veering off keeps us in the game.

In my days of software development, almost every engineer will write code where the main way of using the feature will work. We call this the happy path. However, the excellent engineers are the ones who are able to see and plan for the failure cases ahead of time: "System A is supposed to get data from system B. But what should the user expect to see if system B unexpectedly goes down?"

When setting up a goal. The same thing should apply. Don't just think about the happy case. But consider what you plan to do when things don't go right.

Wednesday, October 31, 2018

Having More Time May Not Be the Answer

There's a new drug that doubles the life of worms. There is potential that it might one day be used to prevent aging in humans. Amazing. We would double the amount of things we could accomplish right?

Probably not. I have to think though that this might not change things for the average human.

Let me give an example. The retirement age today is 65. Why is it 65? Well it's really just made up. What happens if we double a humans lifespan (let's say average is 80 and now it's 160 years). Will we still retire at 65 and then have so much extra time to enjoy our retirement? Probably not because we won't feel like we have the money to do so.

So we would probably push retirement to 130 years. My guess is that we live longer, but probably wouldn't live differently than we do now. Also since we have more time to do things, most people would value their time less. We have plenty of time to get to it we'd tell ourselves that middle period where we work probably just expands to fill the gap.
Retirement is just one example. But think of that book you want to write, or the language you want to learn, or that trip you want to take across the world. Is it living in "someday"? If it is it probably still will be regardless of how much time is given.

Things expand to fill the gap. If we give ourselves X time to accomplish something we will probably take that long.

But there would be a group of people whose lives this would significantly change. Its likely that those people are the ones who are doing things now, the ones who are not filling the gap waiting, but rather acting boldly.

Tuesday, October 23, 2018

Release an Embarrasing Product

"If You're Not Embarrassed By The First Version Of Your Product, You’ve Launched Too Late" - Reid Hoffman

Well.. at least I don't have this problem. Not since I started doing the 12 projects in 12 months challenge which almost guarantees that the product will not be full featured.

One of my projects, , was supposed to be a Progressive Web App that works on all devices. Except, I don't have an iPhone so I neglected to test on Safari. "If it works on Chrome it should work on Safari right?" Sure I thought and hit the launch button on Product Hunt anyway.

With no prior marketing and no name for myself it actually did better than I expected with the up votes (although this isn't usually a very good indicator of product market fit).

When I finally had a friend test it on his iPhone (yes, I launched without testing this), I was quite embarrassed.

But now that I think back on it. Maybe it was perfect. I'm kind of glad that I launched as soon as possible and didn't spend too much time getting it to work in every case. If people actually wanted it then I'd probably still see some Android users using it. Or maybe I'd get an email saying "hey, I'd really like to use this product can you please put more work into it?". You think I'm kidding that someone would actually write this but that's the feedback that I got on my current project.

It was good enough to solve my basic needs (I still use it to track my workouts as an alternative to Google sheets which sluggish terrible on mobile). Although would be nice to have my friend on board. I told him I'd fix it eventually but decided it wasn't worth the effort for now.

That's how it goes with product market fit. People are usually willing to tolerate many issues with the product as long as it solves their problem. Think about Twitter in its early days when it was "fail whaling" all the time. But it didn't lose any users because people needed it, people loved it anyway.

Sunday, October 21, 2018

Positive Triggers

Haven't written in ages. I think the reason is perfection is the enemy of doing anything. I want to write, but I want to write something brilliant. Thus, I end up doing nothing because the combination of those two things is hard and that causes stagnation. However, writing itself is easy. Sometimes what comes out is good. Sometimes its terrible. But I don't even have a chance at the brilliant if I don't do it at all. So here I go again.

I just read a blog on triggers and cycles by Seth Godin. To summarize: a trigger prompts us into action and causes cycles that last much longer

If you want to go deep into triggers, cycles and habits check out this book

But this should work in reverse as well. Setting up a positive trigger should set off a positive cycle. Maybe you do a pull up every time you walk through a doorway. Maybe you write a blog post first thing in the morning.

We know that the hardest part is starting but once we get past that part we usually do more. The cycle continues on its own momentum. That pull up might lead to more. And then some push-ups and squats. That single blog post and trigger the start of a sequence of posts, or maybe the start to a short story or book.

Eliminate negative triggers (remove Twitter from your homescreen, hide the remote). Set up positive triggers (put that guitar in between you and the couch, setup your homepage to your blog).

Monday, August 6, 2018 (Project 4 of 12)

I’m excited to introduce project 4 of my 12 projects in 12 months challenge:

I’ve never been very athletic but I keep myself in good shape. I keep a tally of my body fat and weight each month. Ever since 2011, it’s never migrated over 5 lbs of where it needs to be. I do this through consistency. My friends have wondered how I have been able to keep it up through all these years. One of the key reasons for my prolonged fitness: Social Accountability and habits. But it wasn’t always that way.

6 years ago at my previous job I met a friend who was an amateur body builder. I was looking for fitness advice so I asked him about his workout routine. He showed me his routine in a calendar that he created in Google sheets.

He and a friend had been logging their workouts in this shared document. They would use it to keep track of their own workouts as well as each others. If one of them failed to track a workout in a short while they would be sure to receive an encouraging inquiry.

My original workout log. Or you might say its version 0.01 of

I soon joined them and was given my own tab in the spreadsheet. Since then I’ve been consistently logging my workouts for years.

Why did this work?

They say what gets measured gets managed. I 100% believe this. If you don’t write anything down, you avoid accountability. This goes for workouts just as much as starting a business. If you don’t keep track, you look back and have no clue why you haven’t made progress. But if you write things down, you are accountable for your actions. You can see right then and there if you did the work or not.

Jerry Seinfeld famously had a system that he credits for him being such a great comedian. He would make a big X on the calendar whenever he would write a joke. Pretty soon he had a week or so of X’s lined up. Once you have a a chain of X’s lined up, it looks pretty nice on the calendar. The next goal is to not mess it up. Don’t break the chain! Consistent daily action builds extraordinary outcomes.

This “don’t break the chain” strategy might be just as strong as the social accountability. I like seeing my “X’s” and that alone might keep me going. However the synergy of the two strategies makes it even more powerful.

So why create

The spreadsheet works but it has its shortcomings because its not tailored for workout tracking.
  • On mobile, Google spreadsheets opens extremely slow and entering data is a chore because it is not formatted well for mobile. 
  • Google sheets on mobile does not work offline. You can view it offline but in order to edit, you need to have a connection. This does not work for me as I do not have unlimited data and the gym does not have wifi (nor does it have reliable 4G). 
  • Tracking is a chore in the spreadsheet. Each month we need to recreate the month template and assign the proper dates. 
  • Pictures. My friend specifically asked for this feature to visually track his gains. 
Also, since my accountability partner has an iPhone and I have an Android, I needed it to work across all devices. I’m solving my own problem after all.

And that’s why I decided to create as a progressive web app (PWA). It is basically a webapp that acts like an Android / iPhone app. You can add it like a native app to your phone as you would a native app by just going to the website. It works offline, it caches things and loads fast.

How’s the 12 projects in 12 months going?

The projects that I am doing are small and fun. They are scratch my own itch projects that solve my own problems. Thus, I know that I will have a user base of at least 1 if no one else likes them (although I really hope you do!). My goal is to start with small wins and learn the ropes of building and selling while I progressively work on more ambitious projects.

I’ve been learning about ways to spread the word. I did my first Product Hunt launch and have been engaging on Twitter, IndieHackers, and writing medium articles!

I was asked to chime in on whether I thought the 12 products in 12 month challenge.

Is success in 12 products in 12 month challenges a statistical outlier?

I’ll repost my response here:
In my article I talk about how I think the challenge solves 2 major problems:
Not getting started
Spend too long building product
I like to think of it as all the challenge does is put in constraints to help about with those. Like training wheels for newbie starters like myself. For some people it can definitely help them become more successful. Don’t think its necessary, especially if you know what you are doing. Definitely times where it could hinder you and you might want to break the rules. In fact, you might say the goal of this challenge is NOT to complete the challenge (like Peter Levels).
For myself I feel pretty good about the challenge so far. I think its helped me with problem 1 because.. well before it I’ve never shipped anything. And now I’ve shipped something.
I had a pretty low bar to start. My real goal this year was just to make $1 and I just made my first sale ever ($2!) last week with my 3rd project and I’m really excited about it. Definitely a small win but I thought I’d start small with mostly fun/scratch my own itch projects and try to learn from those and work myself up to more ambitious projects.

Yes! I did actually get my first sale ever with my Android journaling app ( It’s just a couple bucks but it’s so meaningful for me and proves to me that yes, I can do this if I put in the work. I’m hooked.

And still looking forward to September when I will be doing my first digital nomading experience as I attempt to complete the challenge in a foreign country.

Exciting things to come.

Monday, July 23, 2018

Enterprise vs. Indie Software Development

Back in my enterprise development days. The company that I was working at acquired another company. One of the senior engineers that was inheriting the new code base remarked how ugly the code was.

Another time as a junior engineer for a different company, I was required to dig into some legacy code from the founding days of the company. I couldn’t believe how poor the code was as I struggled to understand it.

I’m convinced that Mark Zuckerberg’s original code for Facebook had to be terrible and I’m sure that if he showed it to enterprise developers he would be laughed at. However, I’m also convinced that both the enterprise developers and the solo founders are doing the correct thing.

And that’s what I’d like to talk about today; the difference between enterprise software development and Indie software development. I’ve recently switched from the enterprise world to the indie world so it’s been something on my mind. Both require you to sit down and crank out code. You drink coffee. Sit in front of a computer and code away. But they are far from the same and if you neglect the differences, it can really hinder you.

What does enterprise development look like?

In the enterprise development world, even before any code is written there is bunch of stuff that needs to happen first. You might start with working with Product Managers to flush through the project details and then come up with a technical design document. This should address all the use cases. Then you’d present this to the product managers as well as other technical stakeholders on other teams. This document may go through some iterations. Many different use cases and error conditions get flushed out here. Then the work gets chunked up into pieces, estimated, and prioritized. Finally they are assigned to the developers.

The technologies that are chosen are well known in the industry to be the most reliable and can scale well under load.

The result is code that is clear and readable. Code is written for readability so that other engineers stumbling over it could easily understand it. Methods that are too large are broken down into smaller methods. Code is never allowed to be copy and pasted. Common code is refactored into a common library that can be shared. Unit tests and integration tests are written. It is important to have proper code coverage so that the team can quickly detect if future changes break it. There is a mandatory code review where other engineers scrutinized the changes.

What does indie development look like?

For indie hacking, I come up with an idea and nail down an mvp with just a couple sentences. I come up with a sketch of what the UI is supposed to look like. I get started on it as soon as possible. The code works but is not polished at all. I ship before some of the features are complete and while there are still known bugs in some parts of the code.

Why is this so?

In the enterprise development world you work on a much larger team so much of the code you read is optimized to be readable. The code is expected to live a long time and other people will be working in the same code base. As a technical lead, often the main effort is on the communication side of making sure stakeholders are on the same page. The company has been around for awhile, the business has already been validated. Maybe the specific feature you are working on might get killed but the company is invested in getting it out right and still has money to pay you even if it doesn’t. This means that although you are expected to work fast, speed is not the most important priority. In fact for many (arguably poorly led) enterprise companies, it becomes more about writing code than the product since the engineers can be far removed from the customers. You get paid for the code. Your bonuses may depend on how good your code is in code reviews and if your code

On the flip side, indie developer has so many unknowns. You often have no idea if the business is even viable when you write your first line of code. The more validation you do the better but you run into the chicken and the egg problem. The customer doesn’t really know what they want until they see it. Or people say they want a certain product but in reality won’t end up paying for it. Thus you want to get something out as soon as possible so you start getting feedback. Sometimes that just means throwing up a landing page without having a real product to get signups. If you can do things without writing any code, even better. But don’t do what a ton of developers starting out do and write code for a year and then end up finding out that noone wants their product. That means fast feedback loops are a top priority. You need to take shortcuts in order to get something in front of someone so you can start . This means the code is working but not super polished and not refactored a million times. For indie developers, it becomes all about the product. The code takes a backseat.

Don’t Confuse The Two

Both enterprise and indie developers are acting rationally. If you don’t have any customers it would be a major mistake to spend so much effort polishing up the code and spending too much time working on useless features that the customer doesn’t care about. There is probably a high likelihood that you will end up throwing all of that MVP code away.

On the flip side if you are an enterprise developer, you probably have a large number of customer and a large number of developers. Thus the code you are expected to write will likely need to be scalable, robust, and well written right out of the gate.

As Peter Levels mentions, the rules are different. Enterprise has its set of rules and solo making has its set of rules. Mistakes are made when the wrong rules are applied to the wrong game; the indie developer that spends too much time to make the codebase perfect and never ships or the enterprise developer that writes working code quickly but unreadable by his teammates. In the end it’s all about figuring out what is important for the game you are playing and optimizing for that.

Monday, July 16, 2018

How I decided to quit my job

I mentioned in my last article that I quit my job to become an solo maker. There’s likely a lot of people who dream of doing so. So I wanted to go a little more in depth in this decision and explain the reasons behind it and why it made sense for me.


I remember not long ago I was working a pretty stressful job. After I got home and had dinner it was already pretty dark. Its not like I had too much energy to do anything even if I could. My mind was already mush from the workday and I was exhausted. Looking back if I really had put my mind to it I could probably have overcome and gotten work done on my side project. Many entrepreneurs do this. But I didn’t have the discipline. Poor discipline and a poor environment means no progress. Instead most of my activities (reading, drinking with friends, relaxing) were to enjoy a momentary escape and recover from the workday.

In addition, the tides were changing at the company. There was a change in management, the community broke down and the people who I shed blood and sweat with started leaving. My rate of growth slowed down a lot. Although I made good money there I realized that it would be really dangerous to stay. What do I mean by dangerous?


On NPR’s How I Built This Podcast, Jim Koch, the founder of Sam Adams talks about the difference between scary vs. dangerous. Many things that are scary to us are not dangerous. Oppositely, many things that are dangerous are not scary.

He gives the example that repelling off of a cliff is scary but you are held by a belay rope which could hold up a car. Therefore it is not really dangerous. Things like walking near a snow mountain when the weather heats up probably isn’t scary, but is really dangerous as it could cause an avalanche. Not wearing sunscreen out to the beach may not be scary, but dangerous.

Jim then explains that him staying at Boston Consulting Group would not be scary but would be very dangerous as one day when he is 65 he’d look back at his life and see that he wasted it by not doing something that made him happy.

And I felt the same way. I looked at the other people further down the path that I was on. I didn’t like what I saw. Sure, if I kept the path, I might get promoted a few times and make a pretty decent salary and have a cushy job. Others might call it successful, but I would know that it wasn’t. It was a safe choice but one of regrets for me. I came to the conclusion that although staying at my job didn’t look scary, it was dangerous.

Whenever something is scary, we should also ask if it is dangerous. If not, then don’t be afraid to take the leap. Quitting my job sure looked scary, but was it really dangerous? I truly believe that it is not dangerous.

I should clarify. This is not universal advice to quit your job. I’m saying that for me at that time, it was right. Why do I say that? Because I had started to build up the discipline. I actually took a couple weeks off using my holiday hours in order to test this theory. I wanted to see how I would respond. Would I sit around and watch NetFlix or would I be productive. The result is actually not as important as the work ethic. All I wanted to see was myself actively taking steps towards my goal. I actually surprised myself on how focused I was. I loved the freedom. So that’s how I knew it was time to go.
"At 29, walking away from data processing, I was terrified. [...] 6 years at a job I felt stuck in. Maybe I was afraid of change.
The world might say you are not allowed to yet. I waited a long time out in the world before I gave myself permission to fail. Please, don’t even bother asking, don’t bother telling the world you are ready. Show it. Do it." — Peter Dinklage, Game of Thrones actor.
The most successful people in life are able to take calculated risks. They are great at capping the downsides. What are the downsides here? That I’ll never get a job again? I’m sure I’d struggle in the competitive market, but I do already have 10 years of software development experience including management, plus I’d have a papertrail of a bunch of projects that I worked on and unique skillet that would set me apart. I’d argue that I’d be MORE antifragile than my peers. Lost opportunity cost and income? The real risk would be to NOT pursue a dream lifestyle of mine. The money is nice but what would I want to spend it on? I’d want to spend it on quitting my job.

In the end I believe if you have the discipline to work, and you have the drive to learn, and you have the confidence to get back up after hitting obstacles. You’ll end up accomplishing your goal.
But that’s not all. There’s another very important thing you need before you quit your job.


What is the thing that you want do most in life? Its probably not your job. But we spend most of our time at our job? Why is that? Well its probably so we can have enough money to pay for basic things that we need as well as little luxuries. There’s nothing wrong with that. But if instead you dream of something else. And you want the freedom to pursue it, then you need to think of money in a different way.
“We buy things we don’t need with money we don’t have to impress people we don’t like.” — Dave Ramsey
Thus if your priority is to pursue something else, you may need to adjust how you spend your money(life energy) to optimize for that. Sometimes we fail to see the connection between us having to work to pay for our expenses; if we could limit our expenses we could limit the work. The more runway you can build for yourself the higher your chance of success. You will be less stressed and give yourself more at bats and learning opportunities. Good luck!


I want to point out that this is not the norm for entrepreneurs wanting to do a startup. I am speaking more to those who are on the fence. If you aren’t mentally committed to your dream, don’t do it. If you have a family or mortgage and don’t have the runway yet, don’t do it. It can take time to create the right situation for you. If you carefully examine your situation and find fear but not true danger, then don’t be afraid to take a leap.

Wednesday, July 4, 2018

Tip: Manage Label Specific Gmail Notifications on Your Android Mobile

Ok here's the situation. I get a decent amount of email. We all get a decent amount of email. Most of it is not worth being distracted by. We want to be doing deep, valuable work and not get interrupted every 5 minutes from some company trying to sell you something. Other times its things that are important, but not urgent and it can wait for later. Our attention is valuable and others should not have a direct line of communication to interrupt us as they please. But some of the email is very important. Some of it is very beneficial to us. In this case, we choose to be notified.

That's what I wanted. I wanted to only get notified for specific emails. Other emails should not beep, buzz, or blink my phone. Also, I want this to be configurable on just my mobile phone.

So how do I do this? The first time I checked it wasn't possible. I have an Android phone and use the Inbox app.. Inbox does have a way to manage filters Inbox doesn't have a way to customize messages based on label.

I was actually planning on building something specifically for this. Maybe it would be my next project in my 12 projects in 12 months challenge. However, I found a way to do this without needing to write any code. Here's how you do it.

You need to use a combination of Gmail AND Inbox.

 So let's say that I am looking for a travel deal and sign up for Scott's Cheap Flights. Scott sends out an email whenever there is a travel deal. Since these are time sensitive, its best to get notified right away so I can quickly check if it is to a place of my liking and book.

So the first thing to do is for me to create a label for Scott's Cheap Flights. For this I need to use Inbox.

Pull up an existing email from Scott and there will be a pulldown on the top right. Select "Create new..."

It will ask you if you always want to add any future emails from Scott to this label. Hit confirm

You can configure this label here:

Settings > Email > Label settings and notifications
I would recommend having "Skip the inbox" on. Its time sensitive but not really something you want to see again in your inbox if you miss out.

Ok. So you are done creating the label. How do you get notified?

The Gmail app has the ability to to set messaging specific to a label.

 Settings > (email address) > Manage labels > (label name). From here you can check label notifications. You can even set a label specific Sound.

For this to be useful, I would also recommend going to your Inbox label (in Gmail app under the Manage labels setting) and disabling label notifications as well as notifications in your Inbox app. Otherwise you would still be notified for all incoming email.

That's it. And all of this can be done on the fly with your mobile phone.

So I decided to not build the app myself and just went with this solution. It is a bit annoying to have both Gmail and Inbox installed but I can live with it. Also, it would be lovely if Inbox supported editing filters to get a little more drill down into labels. For example you can use your filter to detect keywords so you can have a scotts cheap flights + for Bali label. You can still do this via the Gmail web interface but it would probably require you to get on your laptop.

Hope this helps anyone else out there who prefers to not be distracted by every single email and only on the good stuff ;)

Sunday, July 1, 2018

New Linux Mint + Xfce install

I got a new laptop. A 12 inch Lenovo Thinkpad x240. Specs? i7, 256 ssd, 8gb ram.  It was used off eBay but it is pretty spotless. I love these machines, the build quality is so nice. I recently even discovered that all X and T series are mil-spec. Perfect size and durability for my upcoming travels. All this was $180+$20 shipping. I don't think there is really anything that is comparable (12 inch ultrabook) at a similar price point in the market today. You can't compare those cheap plastic Acers to this. The major downside is the screen as it is 768p. However, I've already ordered a new FHD screen replacement for $84.

I just did a complete OS install and I kept track of most of what I did.

Install OS

Linux Mint 18.3 "Sarah" + Xfce. Downloaded from main page, used USB Image Writer from another Linux install to create a bootable USB drive.

disable Touchpoint - I don't use it at all.
Touchpad disable when typing.


install zsh:  sudo apt-get install zsh
install oh my zsh: run curl command in

create new .zshrc
export JAVA_HOME=/usr/local/android-studio/jre/
export PATH="$JAVA_HOME/bin/:$PATH"
export VISUAL=vim.tiny

Setup the hosts file:
# alias my git server raspberrypi

#   block some sites that I waste time on such as

# Take the hosts file from this url and append it to the bottom. This blocks a lot of mal/tracking sites

install chrome and login. Install various chrome plugins like LastPass.

install git
create sandbox directory,
   clone what you need...
   git clone git@raspberrypi:/home/git/custom-morning-journal.git

Configure git:
git config --global
git config --global
git config --global push.default simple

sudo chown username:username -R /usr/local

install sublime text 3
(follow the commands there but sometimes the version isn't the latest so go to the main page and use the latest version)

install PackageControl
install Material Theme (and add recommended settings)

"always_show_minimap_viewport": true,
"auto_complete_selector": "source, text",
"auto_match_enabled": false,
"bold_folder_labels": true,
"color_scheme": "Packages/Material Theme/schemes/Material-Theme-Darker.tmTheme",
"font_face": "Fira Code",
"font_size": 9,
"line_padding_bottom": 3,
"line_padding_top": 3,
"margin": 0,
"overlay_scroll_bars": "enabled",
"tab_size": 2,
"theme": "Material-Theme-Darker.sublime-theme",
"translate_tabs_to_spaces": true,
"update_check": false

Other SublimeText packages to install

Package Control
HTML-CSS-JS Prettify

requires node js:


// SublimeLinter Settings - User
   "paths": {
        "linux": [ "/usr/local/node_modules/jshint/bin/"],
        "osx": [],
        "windows": []

Install Android Studio. Don't forget to bump up the xmx

Install java jdk 8

SSD compatibility. Run through steps in:

Xfce Theme
Manually build.
Once built go to these menus to set to the correct theme
Window manager
Lightdm greeter settings

Xfce config:
install docky for xfce
Set to autohide, use glass appearance
Add Chrome, Sublime, Thunar to dock.

install sensors plugin: xfce4-sensors-plugin
install network monitor plugin: xfce-netload-plugin


Install dropbox, fix icon:
go to sesson and startup through menu and delete existing dropbox startup option.
Create a new startup option with command:

dbus-launch dropbox start

Google Pinyin


From Input Method menu install Traditional Chinese
Then add Google Pinyin in Fctix Configuration menu.

Its a lot of work to get everything installed but a lot of fun. And as I use it for my main laptop I'm sure I'll find so many apps and settings that I'm forgetting.

Here's the result so far:

Wednesday, June 27, 2018

Why I Built CustomJournal — Project #3 of 12 in 12 months

I didn't write about my previous projects so I'll catch you up on how I got here before I talk about CustomJournal.

I quit my job over a year ago. I knew it was time to leave. Towards the end the winds changed. There was a change in management, the community broke down and the people who I shed blood and sweat with started leaving. My rate of growth slowed down a lot. Although I made good money there I realized that it would be really dangerous to stay.

I started with long term travel, something I always had wanted to do but never had time to do because of work. I had seen how things were shifting at work ahead of time and cut down my expenses so that I would have ample runway to take whatever path I chose next. I gave as much time as I needed in my travels to destress and think. I traveled for 6 months total. When I got back, I decided that I would once and for all, focus on a dream of mine of starting a business. But I didn't know where to start.

Challenge Accepted

Luckily, I stumbled onto this podcast episode by Peter Levels which was so inspirational. When he was stuck and depressed after a failed venture, his Dad told him the best thing to do is to take a big pile of dirt and start moving the dirt from one pile to another. When you are stuck, especially if you are starting to spiral down, the worst thing you can do is to stand still. You have to get moving. Action leads to .. well more action. But with the previous experience, the new action will likely be better. I'm sure you could literally move dirt and that would itself be beneficial. But the message here is you need to stop dwelling and start doing.

Which led him down the path of his 12 startups / 12 months challenge. Why is this idea so brilliant? Because it puts in just the right amount of constraint and prevents 2 major mistakes that new entrepreneurs often make:
 1) Not getting started - So many people never do anything. They talk about starting a business, they read books about starting a business. I'm guilty of both. When I was working my job 4 years ago, the company I was working at acquired a startup. I took the founder out to lunch to ask him about the experience. I was so pumped about it and then… I did nothing. FOR 4 YEARS! During that time I also read at least 10 books on startups and business. Its to easy to dream and talk, its hard to get started. This challenge forces you to get started right away.

2) Spend too long building product - the almost too common story is the one where the entrepreneur comes up with a brilliant idea, then proceeds to spend a year building it out. Some never really ship it because it is never "done", others ship and then quickly find that no one wants their product. By putting the 1 month constraint on your project, you are forced to think critically about what the true MVP is. You are also less likely to build useless feature that your users don't care about. The sooner you can ship the sooner you can get feedback and adjust.

If You're Not Embarrassed By The First Version Of Your Product, You've Launched Too Late" - Reid Hoffman

And those are the reasons for why I am taking on this challenge. To make sure I get enough at bats and that I am actually moving. Do. Ship. Get Feedback. Learn. Repeat.

So how did I decide to build this app?

When I had quit my job and was traveling through Asia I used a standard structured journaling template that I found online and just started to fill it in each day in a single Google Keep note. Each day I copied the template over, dated it and filled in the journal. After some time I realized that I wanted to change the questions that I asked myself. I found a few other questions that I wanted to reflect on each day. The specific one was to reflect on a how I pushed or challenged my self that day. I wanted to make sure I was thinking about growth. So my template slowly adapted. After doing this for awhile, I got a little bit annoyed of the copy and pasting on a mobile phone, so I was looking around for a structured journal app that I could use to replace my journal. But none of them really support customizing the prompts. So thats how I got my idea.

This leads back to the idea of doing. If you are having trouble thinking about an idea, you should also consider moving dirt. If you keep an entrepeneureal mindset, ideas will pop up from your action.

If you are someone like me who has been wanted to ship a product for the longest time, but has never taken action, consider taking up a challenge like this one.


Of course my next product. But I have another twist to this challenge. I’ll be doing it from abroad! I’m digital nomad-ing in a couple months and have already bought my plane tickets. Will let you know where when it gets closer.

Interested in supporting me? I’d love feedback on my app

Originally posted on Medium here