Community General

Oh Twenty Twenty

As the year ends, I hope you join me in remembering our family, friends, and the almost 2 Million souls who will no longer be with us because of the many trials that 2020 came with.

We will remember them on other days. But for me, a lot of those good memories will be during these holiday seasons. So although bittersweet, I choose now.

They will live through us. As we live our meaningful lives, we hope to pass on their wisdom and virtues they taught us.

And a big Thank You, to those who continue to get us through these times, our heroes; the front-liner health workers, essential workers in other industries, and everyone who continues to contribute in big and small ways. May you continue to be well.

We may deal with these in different ways but one thing we all share for sure.We are still here!

We will rock (or flow – whatever works for you), learn, love, stay healthy, humble, kind, and hope for better years ahead.

Happy Holidays and stay safe from our family to yours!

Career Growth Community Engineering Leadership

First Principles, Frameworks & Guiding Principles

first principles, frameworks and guiding principlesWhen talking to other engineering leaders (new and even experienced ones – since every situation is different) it’s not uncommon to hear “this is great, your team/processes sound amazing but where do I really start?”.

“Where do I start?” is indeed a difficult question. A few clarifications and examples would help. We could identify a starting point and take it from there. There are also a lot of existing “how to do X or Y” everywhere online/offline so I am not going to talk about that here either.

I was thinking though, if I find myself asking the same question, what do I actually (or I think I) do.

So…. I believe I go through this process:
1- first principles (why)
2- framework thinking (how)
3- guiding principles (what ifs)

These are not my terms. The first one you can easily search (might even be in the dictionary) and Elon Musk (and others) has articles/interviews online that can explain it (or similar) better than me. The second one I did not find much except this article from Sean Johnson ( which captures a lot of what I had in mind. The 3rd one I’m sure we’ve heard everywhere.

To the best of my knowledge though even before I found out what they are called I have applied them in one way or another. Most of the time, if faced with a challenge; it is reasonable (maybe even best) to solve that problem specifically. In some cases, however, especially problems that keep coming back it helps to step back and look/think about it differently. What is the core of the issue, the root cause, the fundamental beliefs (or even facts) that my ad hoc solution did not address? And that to me is “first principles” – simple, fundamentals, facts (or as close as you can get).

Now that we have a better understanding of the “question/problem” there are frameworks that others have already used to address that. Or at least frameworks that I can try to explore more to address the problem. Frameworks are more generic than just how-to’s and usually can be applied to a variety of problems. Should I read books, do I listen to audio books, do I talk to someone and based on those are there further frameworks/techniques I can apply?

Using some (or combination) of the framework(s) we will hopefully find the solution to the problem and then we start building guiding principles. On top of making sure that it really does address your original question/problem, these also make sure that should you encounter similar questions in the future you might have some default response/actions or if it’s completely new then the response might just be back to square one (first principles -> framework thinking -> guiding principles).

Over time you build guiding principles that you keep on improving (or completely discard after giving it enough chance – i.e. it just doesn’t work).

First principles are fundamental and likely universal (or at least to a majority of our species). Frameworks may or may not work for some though the ones we find are likely those considered best practices already but take them with a grain of salt. Finally, you could use existing knowledge for guiding principles but do not forget that guiding principles is your own. Make it known to your circle to whoever you feel safe sharing it with. Refine them, share them and others might question them but it’s yours.

And if you lead a team, you share a part of your own guiding principles (its part of what we do is to sell that to our team) but help your team build it’s own as well. What you agree on, how to do things, what to do when things get tough and as important, what to do when things are great.

An analogy for software debugging/development might actually exist now that I think about it.
1- investigate the problem (why)
2- design and implement a solution (how)
3- create unit tests/automated tests and monitoring to help make sure it doesn’t happen again (what ifs)

So when faced with “where to start” this is what I do. Or at least what I think I do. At the very least this blog post is part of this process too.
1- I have a question which I think could benefit others and I’d love to share my thoughts on (why)
2- write and share on my blog (how)
3- I may not get feedback (I don’t expect anyone to read unless I point them here) or I get feedback (great – whether that’s good or bad) and I see if I could improve as I learn more – is my “what ifs”.

There will be guiding principles that will not be easy (e.g. do not lie – sounds simple but I don’t know if you can imagine how difficult that is with all the quirkiness/sensitivities of our modern world) but the good news is other than making it easy to make decisions at work, the side effect of these guiding principles maybe some peaceful goodnight’s sleep.

Keep learning, building and take it easy!


Karma Go review – Prepaid Wifi on-the-go

karmagoUpdate (2017 April 28) – been in contact with their support since the device is on and signal LED lights are on but no internet. All I get is advice to reset 3-4 times (from different support personnel) using button presses and paper clip on reset pin. I can no longer recommend this product.

I’m a cheapskate. I don’t want to pay monthly for something I won’t use regularly enough. So I go prepaid whenever I can. No smartphones with monthly data plans for me (and my coworkers probably are tired of me saying that my 10$ flip phone can take pictures, email and browse too).

Between home and office wifi, I have more wifi than I would have wanted. If I need to get somewhere I have the good old Garmin GPS or an actual physical map so I barely need any portable wifi.

There is, however, those occasional

  • “toddler is getting too bored reading magazines in the dentist office”
  • while traveling, the “sure we can just eat the first restaurant we get our eyes on but while we’re here maybe we can check yelp for a better one”
  • oops, someone crossed some wires in the apartment’s internet/cable cabinet so your internet is down
  • hotel internet is too slow or expensive to pay for

Sure you can download videos offline, check out restaurants ahead of time, use Google’s free internet in Mountain View or just pay for that cafe/hotel internet, but having your own wifi/internet hotspot does come handy.

If you have a smartphone that comes with or can have a data plan then it might come out cheaper but if you don’t have and just want to get a hotspot or maybe you do but for some reason, your phone or provider does not allow tethering then you want a hotspot.

So we got a Karma Go from They have monthly plans as well but I was more interested in the prepaid plan (as of this writing 1GB for 15$).

The hardware costs 149$ but you could get 50-100$ if you fill/load or get a monthly plan before Nov 30.

My thoughts on pros/cons below


  • bytes/credits does not expire
  • prepaid and all the good things that come with it – pay only for what you use
  • you can setup auto-refill if you don’t want interruption
  • they do have monthly plans if that works better for you
  • up to 8 devices connected simultaneously
  • setup was straightforward, instructions were clear


  • no wifi password
    • but they offer premium features for an additional fee
    • even without premium, whoever connects will need to signup for Karma account as well and will not use up your credit
    • no encryption might mean it’s easier for someone to snoop on your traffic but like above you can get premium features or by browsing only your trusted sites with https/SSL or using a VPN like TunnelBear (another fun/useful thing)
  • coverage could be less than say Verizon – you can check their coverage from
  • took a week or two for unit to arrive but they did notify me of shipping delays and I was not in a hurry so all good but if you are in a hurry make sure to check with them (or see if there’s an expedited option)
  • US only (for now)

The cons are non-deal breakers for me so I got it. I am sure there’s more PROS/CONS but will leave that up to you and their FAQ.

Have yet to use this extensively (then again my reason for getting is because of those rare occasions) but setup experience, performance and look (nothing wrong with judging by looks right?) tells me it’s well built and so far so good.

You should check for promotions in their website banners but if none, you can click here to get 10$ off


Mac OS X El Capitan upgrade – xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools)

You’ve just upgraded to Mac OS X El Capitan, used git (or some other commands from terminal) and encountered this error

xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun

you can “fix” this by running this command in your terminal

sudo xcode-select --install

a dialog will appear prompting you to install, just follow instructions and after install try your command again and it should be back to normal working state

Hope all that works well for you

More details on

Career Growth Engineering Leadership

The 6 Different Leadership Styles You Need To Know About

Sharing an article written by the good folks at about leadership styles. The list could be endless, depending on who you ask and which book you read but I feel this captures them well enough for me to share. It’s a good reminder for those you might have had read too much books in the past and forgotten.

Leadership styles apply not just for work but even in the family, friends and politics. There are always debates on what works and doesn’t work which makes sense since every situation could be different. This does represent my own “default” though. And at the very least, knowing them will make us understand each other more and as they say, “if you only have a hammer everything is a nail”.

6 Leadership StylesThis infographic was crafted with love by Officevibe, the software that shows you how to be a good leader through employee feedback.

Tools and Utilities

.docker/machine/machines/default/ca.pem: no such file or directory

Was doing a
docker-machine env default
where it seems to be getting stuck (waiting longer than usual) and when I open Virtualbox and look at the preview, it is already initialized and ready to accept commands but my terminal command is still waiting.

Then when I exit (e.g. Ctrl+C or Cmd+C) this error will show up.
open /Users/yourUsername/.docker/machine/machines/default/ca.pem: no such file or directory

The error could also be
Daemon not responding yet: dial tcp : xxx operation timed out

These resolved it for me.

docker-machine regenerate-certs default
docker-machine restart default

I was not using existing/custom certificates and letting docker toolbox create/manage it and willing to loose any information in that virtual/docker-machine. It should be true for most people but if you use custom certificates or don’t let docker-machine manage it for you, this will not apply to you and you need to find answers elsewhere.

There is also some references that AnyConnect (VPN) + your VirtualBox networking settings could cause it so if these do not work, try turning it off as well. Then find out more about VirtualBox networking settings. If you must be in VPN then
> you can use this script (while on VPN) – script found here – it will fix routes/rules that gets changed by AnyConnect

* Docker Toolbox

Investing Personal Finance

I just bought while the stock market is 7% down, was I wrong?

I got some dividends lately (though not a lot) which went to a cash account. Today I logged in to my account and the Philippine Stock Market/Index was down 7%. Hmmm, but I went ahead anyway and bought a stock selling only about half of what I believe is fair value (according to COLFinancial – let’s just say they’ve proven their valuations to be valuable to me). I will just post this and I’m logging off to sleep (it’s trading hours there but it’s evening where I’m based at)

Many will say
* I should have waited for a bottom
* I shouldn’t have bought in the first place
* I should have sold instead (take profits and go on vacation)
* I should have… shouldn’t have (or maybe you wouldn’t care what I do – possible as well)

If you are a fundamental + technical investor then maybe yes, should have waited for a bottom or technical indicators for a rebound. Or not buy (or in fact sell) if technical indicators really say it’s that bad.

But more than buy-sell I suggest you choose a strategy first and stick with it (unless you don’t really believe in it – then maybe that means you haven’t done enough work/reading to see if that strategy would fit you – in which case keep looking). Maybe I have a reason why I cannot check for technical indicators (automated or otherwise).

I definitely appreciate those making it simple to encourage more people to invest in the stock market (I believe in the value of public exchanges/market) but I highly encourage everyone to choose a strategy instead of just following an advice that might not be the best for your situation. You might get lucky but blindly following an advice is very risky for you.

I do not want to lose money, it is very important to me and my family. It probably is for you as well so if you are in the market, learn as much as you can. I did not (do not) gamble, I believe the stock is cheap and I just don’t have time (or facility to automate) at this time to spend time on watching indicators. That’s why. And I think the “why?” is a better question than “is it right or wrong?”.

My outlook for the Philippines is positive and if the news are right it has a very strong economy (definitely somewhere in the top of the list) so I intend to support it any way I can and encourage everyone to do so. And hopefully these dips are temporary.

So yes, I may be wrong (in the opinion of a lot of people) but one thing for sure – I’m gonna sleep soundly tonight – that one at least no one can argue I got right…

Personal Finance

one possible path towards financial freedom

I ran into a question earlier about how to invest if you have limited income, where do you start.
I am not a professional financial advisor so please do your own due diligence.
To answer the question, I figured a picture could be worth a thousand words.

one possible path to financial freedom
one possible path to financial freedom

The shorter version would be “get a financial advisor” or read a lot since it’s sometimes (maybe most of the time) not as simple as that. Each block has experts in them (including the block on “believe you can be rich”) and whole books (and even libraries) on these topics but start by believing and always keep learning.

Wealth (being rich) is a matter of definition so although I may not be an authority in what most people define as being rich, I do consider myself happy and I believe I will definitely get to my goals so someone might find this useful. This is from personal experience, articles and books I have come across in the subject.

If you would like to learn about other possible paths, you might want to pick up IMHO one of the most comprehensive books on the topic – the Ten Roads to Riches by Ken Fisher

[amazon asin=0470481552&template=iframe image]

Career Growth

What to put on a Software Engineer Intern or Junior-Level Resume

This is a rant from reviewing hundreds of resumes on a Sunday so forgive the occasional sarcasm. I am not a professional resume writer either; merely trying to help make the world a little better, one resume at a time.

Sure, some companies filter resumes using tools and keyword search so everyone just throws in every buzzword out there but we are secretly hoping we’re better than text mining algorithms (and we really love reviewing resumes) that I reviewed one by one.

Will try to make this quick

If you are still in school

  • Have your projects in Github or public repositories. They differentiate (at least as of this time not everyone has it yet).
  • Work on something outside your course requirements.
  • Join hackathons or coding competitions.
  • Talk about career with experienced people, look for heroes. Your professors could be that person but not everyone has real-world experience and those matter.


  • Please, pretty please read the job requirements. Most companies put a lot of thought on them, we will also benefit from the saved time.
  • Watch your spleling
  • Watch you’re grammar – I’m no grammarian and don’t expect people to be one either but this tells me that the person has low attention to detail or did not take the resume seriously enough to have someone else review it. And detail is very important in engineering.
  • Cover letters help (show interest and effort) but keep them very short. Save the details for the resume.


  • Please use a nice font (please reflect the beauty of the world and embrace typography) but don’t be too flashy either.
  • PDF than Word Doc
    • more control on how it will look like versus depending on whether reader has MSOffice, OpenOffice or none that could read doc/docx at all
    • most browsers have plugin it opens right away
  • Do NOT try too hard to fit everything in a 1-page resume. Few is better but please do NOT remove the margins to make it “shorter”. Simplify your content instead.


  • Do NOT highlight your “low” GPA/Grade– I could be missing something but I wonder why some put those that seem to be lower than most. I think it could actually anchor the viewer negatively.
  • Do NOT list technologies you have only coded a few lines for or those you just learned by listening in class.
    • make sure you have actually coded or wrote an application that is either 1) used in production or 2) a publicly available web site
    • you can put them at the end as hobbies if you want
    • having all the possible programing language in the world could make someone think you don’t have enough depth. If you must insist on some archaic language, better be sure that most engineers know that it’s a beautiful language or hard to code unless you are a master
  • Do NOT list non-job related experiences – again you can point this out at the bottom (or if you want to still establish work history – just put a line, no need to describe too much).
  • Customize your resume a bit to highlight the needs of the position.
    • e.g. for a Java role, it’s sometimes useful to list Java first before other languages (and keep the list short – unless you are applying for a polyglot position)
  • Do NOT list Outlook, Word, PowerPoint or the likes unless you are a ninja on those apps.
  • Common, you are not a 10 in Java after school otherwise you would not be looking for a job (that job will be looking for you).


  • Do NOT explain what APIs are or do. It’s OK to explain the system you worked on but not something like “API is used to access the database”. Ah sure…
  • If listing your company/internship, say something about what you did. Unless it’s Google or Facebook people might think you did nothing amazing in that company.
  • Co-founder/founder always helps (for as long as it’s true). If it failed, leverage it by stating what you learned from them.


  • Sure, list your projects – but make their descriptions brief – most people will think you were required to do something anyway so they are not really differentiators.

Things that are true for all resumes/applications/branding
(you know these but apparently not everyone follows or maybe they don’t agree?)

  • Linkedin
    • good profile photo (not so trying hard – look positive, eager to learn)
    • for goodness sake, don’t look sad in your photo
    • list your top skills (and ask people to endorse them) –  if nobody endorses them, it’s worse than not being there
    • recommendations are helpful so ask for them – Yes, I don’t have recommendations there either but hey I am not looking for a job – you are
  • Build your online reputation
    • Blog if that’s your thing (or you can)
    • Twitter (and say sensible things, not test posts – or nothing)

Noise words
Unless you are submitting to an applicant tracking system that searches for just keywords, in my opinion these are just noise in your resume. In case companies filter out on those it’s probably a bad company to work with since they don’t really “look” beyond what machines can see.

  • Object Oriented Analysis
  • Design, Development, Implementation and Deployment of Software (or xxx)
  • Relevant graduate courses (all if not most, took them) unless you are applying for something super specialized and you took a class that matches that and is super specialized too (and only 5 students took it)
  • Good communicator – let your resume do/say/show that instead
  • Team player – yet to encounter someone say they are NOT and they hate people – eccentric geniuses exist but they don’t pass/write resumes – they don’t have to

Almost there…

  • Ready? Not yet. Have someone who has experience review your resume or better yet, pay for good professional writer/reviewer.
  • I have a tendency to read from bottom to top.  I look at “progression” after school and density of work/experience and not years. So don’t put messy stuff just because you think it’s at the bottom and nobody would read it.
  • Look at other people with your profile. Do you feel you have a differentiator?
  • Read articles on what hiring managers look for. Put yourself in their shoes, research online what to look for candidates and you will see common themes (e.g. smart + gets things done). Then figure out how you can be that person.
  • Be responsive when you get a response about the application. Not hearing back from candidate for days that is a red especially for positions where responsiveness is expected (e.g. Ops Engineer)
  • Remember, hiring managers do not do screening full-time. I am doing this on a Sunday so the easier you make the review the more lovable you will be.

More experienced/higher level position applications are a whole different discussion so will leave that to professional resume writers/bloggers.

Finally, if you are not yet in school but thinking of doing so also think about this

  1. Go to a great school (CMUs and Stanfords of the world) and just do your best to keep up (most of the time, the environment there will drive you to succeed)
  2. Or if you cannot for some reason, go to a reputable school that will allow you to have time  for outside projects

Imagine two candidates:
Candidate 1

  • GPA 4.0 in not so bad school
  • has github projects X, Y and Z
  • committer for Apache XXX project
  • Regular course work

Candidate 2

  • GPA 3.8 in some school better than above
  • Regular course work

Who do you think will have an edge?

Thank you for indulging in my rant and hope this makes the world a little bit better. Have a good week ahead!


Of course, a nerd future dad will post his baby’s registry on his site

And that would be me. Yes, Lauren and I are expecting a baby boy!

So that friends and family would get easier directions if they want to share in our registry, I am posting it here, now.

Click the link below to access the registry