The responsibility to build

We have the responsibility to build the important things others are not building that fall within our domain of knowledge.

Almost all careers are dedicated to building: a teacher builds a child’s education, a cop builds a better community, and doctors rebuild broken bodies. Hell, capitalism arose because it’s believed that the people who build better should be rewarded more. Going one step further down the hole, all humans are are just builders; we’re ants who know how to build off of things we’ve already done.

But what happens when we see something that needs to be built yet no one does? In 2003 over 6,000 people died from falling off ladders and more than 30,000 people were injured. In 2009, 20,000 people across the globe died from mowing their lawn and 300,000 were injured. How fucking outrageous is that? 26,000 people!

356,000 people were either killed or injured from either mowing their lawn or falling off ladders. To put that into perspective, if you read Harry Potter’s Order of the Phonex & Sorcerer’s Stone then every single word would represent one death or injury… with 10’s of thousands of words left to spare.

Why am I writing about this? Because I’m a software engineer and I believe the technology has hit a point where taking the human out of the equation (and thus protecting them & giving them a better life) is completely possible. Using a combination of lidar, machine vision (deep learning for image recognition), and some electrical engineering, I believe I can build both a working autonomous lawn mower and, as energy density improves, possibly a drone to do the more hazardous activities of shoveling snow off roofs & gutter cleaning.

My issue is that I don’t really want to build all of this. The total bill could approach $10,000 (excluding my time), I don’t have a lawn, and it’s something that will have to be built over many many months with tons of “why the fuck isn’t this working!?”.

But I have to… it’s in my domain of knowledge, it’s exceedingly impactful, and if I don’t then who will? Even if I fail and someone finds a better way, I’ve at least pushed the envelope a little closer to potentially saving lives.

Learning New Things

I’m young, but I’ve had to learn a lot of new things quickly for either work or life. This should be a quick post, but I really wanted to describe what I think is an incredibly important, yet sorely overlooked, part of learning: being able to critique your own work.

This all started when my music teacher, a Juliard Alum, told a joke: the difference between Juliard and the local community college’s music department is that Juliard sounds F’ing horrible when they practice.

The punchline is that Juliard practices their mistakes (thus sounds horrible), but the local community college doesn’t understand what their mistakes are and thus never practices them.

If you’re practicing but cannot tell if you sound good or bad, then you need to take a big damn step back and listen to what is good and listen to what is bad. Before all else, understand that difference and do so until you can specifically understand each attribute of your performance and tell whether each attribute is good or needs work.

Then you practice the crappy parts over and over again until it becomes indistinguishable from the good you’ve listened to. Once you can’t hear the difference between the good and yourself, it’s then back to step one: train more to hear the differences. And then practice more.

Hopefully, once you’re able to critique yourself properly, you won’t actually audition

Donating gives a new heuristic on money

When I was 14 I started working at a mobile gaming company.  I was paid a grand total of $8 / hour and I was RICH!  Well, I was rich because 14 year olds don’t have to buy much & everything I did want was pretty cheap anyways (plus there was always christmas & birthdays).

The odd thing at the time was my heuristic on money started changing: I began pricing things not in dollars but in hours.  That chipotle burrito was fucking one and a half hours of my life!  The new tennis racquet?  25 hours!  That’s more than a day of constant working!  It gave me a certain appreciation for money that I had never had before that moment & gave me a certain respect to working.

This heuristic continued when I was working at in-n-out just things started getting a little bit cheaper.  That burrito became less than an hour, the tennis racquet started to seem like a good trade-off, and the xbox obtainable.  Cars, homes, and the “expensive” things in life didn’t seem feasible, but at least surviving didn’t look so grim.

Then I became a big boy… I became a software engineer.  It’s no lie that we’re paid exceptionally well to sit around & type some characters on the screen (and that’s in between joking with pod-mates).  Something changed in me as well: I started to absolutely disregard money.  I had no appreciation to its power.  Now, I’ve been investing in the stock market since I was 13 so I know the power of compound growth and I’ve been buying a lot of investments in spite of my disregard to money, but I still nonetheless sort of disregarded it.

Sure I thought about things in terms of “this would take me X hours to obtain” perspective, but it was on a much grander scale: that house across the street from my grandparents?  I could buy that in one year’s time (they live in the the middle of nowhere WI).  I could literally own a house in a year AFTER taxes.  I can get a nice car.  I can buy an xbox a day and still have some left over!  So all the sudden it just doesn’t fucking matter so why should I keep track of it?

One night I figured “I should probably donate some of this money otherwise I’m going to piss it away anyways”.  The next day, I sponsored a 16 year old kid named Emmanuel.  That was the day my heuristic started changing.

For $30 / month, you can give a kid in Africa a chance at a better life.  Thirty dollars.  That’s it.  To be honest, I sponsored him semi-apathetically; it’s not that I don’t care about him but it’s hard to care about the situation since I don’t care about what I’m giving away and I’m removed from the situation so I can’t see the impact the money is having.  I just shrugged and thought that I did my good deed for the day.

And then I went to lunch.

It clicked in me like that fateful day as a 14 year old: I didn’t price that burrito in terms of money, I priced it in terms of Emmanuels.  Once I did that, I had to brace myself… because here comes the big-ass fucking tsunami of regret.  The FitBit I bought I had just received a few hours prior? 5 months of giving a kid a chance.  That server I bought literally after an hour of debate?  more than a year of giving a kid a chance. The laptop I type this on? 12 and a half years of giving a kid a chance.  I SPENT ALMOST AN ENTIRE CHILDHOOD ON THIS!  Hooo Leee Fuck.

Dear younger Jacob: you fucked up.

I have two promises I’ve made to myself in life: 1) donate all my money after I die to a good cause 2) work like hell to push technology forward in an effort to improve everyone’s life.  I never really had a good barometer to see how I was objectively doing for #1.  Well, I do now.

Thanks Emmanuel.

Happy Kids



Clarification: I do not mean to say I cannot let myself live (I have the right to make myself happy first) but all those spur of the moment purchases now are subject to this new heuristic… and I know I’ll be spending a lot less here on out.

Hard vs Impossible

In Zero to One, Peter Thiel talks about the three different types of problems humans seek out: easy problems where the solution is quick, hard problems where it takes a lot of time & energy to solve, and impossible problems where no matter how much work is put in you’ll still leave unsatisfied & without an answer.  The goal of this post is to find a system where we can determine if a problem is hard or if it is impossible.

My first thought is in making sure we know what we want to do (to have a definite future, as per Zero to One).  In understanding exactly where we want to go, we can create questions in a tree-like fashion and answer in first principles.  Let’s say we want to build a 200 story tall skyscraper, our first question would be “how do we build a 200 story building?”.  Our answer may look something like “we need to build a building that has a large enough support for 200 stories, handle the immense wind-sheer, and build it economically”.  The questions then become “how do we build a large enough support for 200 stories”, “how do we handle the wind force”, and “how can we make this with a profit”.  Going with the first question, maybe we calculate the base needs to support 100 trillion tons.  From first-order principles, maybe we deduce that we would need something stronger than diamonds  or larger than the pyramid.  That means we are fucked and this problem is impossible.

This works when the final questions on the outskirt of the tree are easy questions but unfortunately sometimes they seem to be hard questions.  Going back to the question of “how do we build a large enough support for 200 stories”, what if there is no current way of supporting all that weight but, and this is important, it doesn’t seem to go against the laws of physics that there couldn’t be that large of a support.  Maybe it requires a whole new way of looking at supporting 200 stories, but physics doesn’t say it can’t be done (it’s important to distinguish “doesn’t say it can’t be done” rather than “it can be done”).  How do we come to the conclusion then?

The good news is that it seems all technology that make huge breakthroughs come from this sort of problem.  The bad news?  Sometimes it’s impossible to prove something can’t be done, even if it can’t be (P=NP is the famous example: no one has proven it can or cannot be done, but it’s assumed it can’t be).

So, we’ve come all this way and I think I have a pretty abysmal suggestion: let the problem peculate in your mind.  Every time a new suggestion comes up, try the new idea and if it doesn’t work then put it back in your mind.  Maybe after a few years if you can’t actually figure it out should you stop thinking about it altogether.  What a let down of a post; I tried thinking about how to prove something can or cannot be solved, but everywhere I have counter examples and thus I’m not sure I can prove or cannot prove how to actually find a solution to a hard problem.


Creating a limited number of routines in Go

Pretty self-explanatory code to create 30 goroutines that’ll upload files as they come in.

Since channels are blocking, the goroutines will not stop until we finally call close(tasks).  I’m a little confused as to why the channels will not send the file to all the goroutines rather than just the one but it must be that internally it’s simply doing a round robin or something.  Not sure; I’ll have to look into that.

SO question here



I think I’m going to make this site more for myself; I have an absolutely horrendous memory & I’ll probably just make more of mental notes about programming principles that I can archive.  As time goes on, I’ll probably blog more about my life but this is for me and only me as of right now.