Thursday, January 3, 2019

Advice to the boys...

People are passing around the advice for daughters.  I wrote this for my sons this morning:

1.  You will be dead soon.  Act like it.
2.  Find a small way to be kind or helpful to someone every day.
3.  Admit that you don't know something every day and then work to learn about it. 
4.  Tinker with stuff and try to fix things yourself. 
5.  Always be building.
6.  Don't solve other people's problems, but support them in solving theirs.
7.  Take mental health days.
8.  Take care of your body.  This is mostly about food.
9.  Try not to stay physically stagnant for very long.
10. Seek growth through failure and celebrate that you were brave enough to fail.
11.  Recover quickly when you fail.
12.  After an accomplishment or success, move on quickly and don't get complacent.
13.  Remember that almost no one is thinking about you, so stop worrying about what they think about you. 
14.  Be confident, but respectful with women.  That is the most attractive thing you can do.
15.  Always remember that you have brothers that will be there for you long after mom and I are gone.  Be there for them. 
16.  Many times, optimizations come from waiting until the last responsible moment to do things. 
17.  Take your vacation time seriously. 
18.  Challenge yourself to find a life partner that challenges you.
19.  Forgive immediately and sincerely.  Grudges are for losers.
20.  Quit setting goals.  Instead, build systems that you live by every day.  If the systems are working, keep going.  If not adjust.
21.  If you are in a rut, or stuck, just start working on something.  Eventually, the work will get you out. 
22.  Stress kills.  Learn to recognize it, acknowledge it and then push it away.  Find the source of your stress and face it head on.
23.  Let your emotions come out.  It's ok to be happy, sad, mad, excited, scared, intimidated, proud, etc...
21.  Humans are made to work.   Stress and work are totally different things.  Separate them and have fun in your work.
22.  Your real friends are the ones that know you and all your faults and idiosyncracies and then still want to be around you.  Don't put on an unauthentic show because it limits how many real friends you will find.
23. There is nothing you can buy that will make you sustainably happier. 
24.  Find new ways to keep falling in love with your spouse.  There is nothing good that can comes from focusing on their weaknesses.  Challenge yourself to recognize what is awesome about them instead every day (yes, that is a system)
25.  When all else fails, talk it through with Mom or Dad.

Is Xamarin The Future of Mobile for ISVs?

In 2011-2012 when we were making all the hard decisions about that architecture to use for our fledgling mobile app initiative, we tried a variety of tools to bypass having to write native versions for Androids and iOS.  We kicked the tires with Titanium and actually got to a working app.  BUT, it definitely was no panacea.  There were stability, performance, and usability issues.  So about 3 months in, we pulled the plug and made what I feel was a very brave decision.

WE WENT NATIVE


We had some pretty audacious things we wanted to do with the user experience to make it as easy as possible on our field formen.  We realized that  the only way to get there was to write our apps in native Objective-C/Cocoa and Java.  And even then, we were subclassing and overriding UI stuff all over the place.  Here is the UI of the timecard that really won the industry over and has lead to 20,000+ construction formen moving off paper and laptops to tablets and phones:



That was 5 years ago.  Since then, we have built a mountain of mobile apps for safety, job management, forms, skills, etc.  Every time, we had to write each app two times.  The cold hard truth is that the Android apps often lagged by 6-12 months and seldom got all of the design and feature "love" that the iOS versions got.

We even tried building a mobile web app for low level laborers and operators called the employee app.  It was riddled with issues.  On crappy phones, it would perform like a dog and often ran into issues with browser caching that would render the app unusable.

SO...  We decided to come back and take a look at the new generation of "unification" architectures.  We decided that the employee app was the perfect test bed to test the new architecture.  We started with Xamarin forms and brought in a consultant fresh of a Xamarin engagement to help accelerate the project.

Xamarin forms is an interesting fit for us.  First off, it is C# and since we are largely a .NET/C# shop, we have a lot of developers that can get into Visual Studio and be productive in the environment pretty quickly.  The biggest learning curve is getting your head around the Forms definition language.  It seems like most C# devs are picking that up in 2-3 days.   So, before we even get into the details, Xamarin has a huge head start because the dev tools are already closely aligned with our developer skills.

Also, it is really nice being able to use all the .NET stuff like Entity Framework and the slew of dependency injection frameworks (I think we are going to use Unity because it is easy to tie in our of the box).


Responsibly Lazy Parenting?

I was asked to write about my unorthodox parenting style in response to a long series of amazing accomplishments of the three boys I fathered.  To establish a little credibility, here are a few of the things these guys have done:
Boy 1: Valedictorian, Graduating with Physics + Systems Engineering + and Computer Science from Washington University, Published AI research, All State in Cross Country

Boy 2: President of student body, Captain of D6 Football Team, Accepted into the MIT mechanical engineering program 

Boy 3: Straight As, Track and Football, and social skills that I could only dream of having.

Here is the video Boy 2 used to get into MIT:


When I was a new dad I was told a few key hints from some wise mentors:

  1. Those are not MY boys.  They are just on loan for a very short period of time.  Never treat them like property or possessions.
  2. They are not lumps of clay for me to mold.  Give up any fantasy of shaping them into little versions of me.
  3. As a parent, I only have one job and that is to help them discover the best possible version of themselves.  


Another great mentor told me that there are really only a few principles that will lead to accomplishing #3:


  1. Give them so much space that they know they are living for themselves and not for you.  
  2. Create an environment where they feel the real world positive and negative consequences of their actions.
  3. Trust your wife’s instincts about when things are potentially going south (she will know way before you do).  That is when Dad steps in to actively coach.
  4. When you are not sure what to do, just love and encourage them.

Those principles seem simple, but in practice, they are nearly impossible.  Examples:
When you see your boy about to make a mistake like not studying enough for a test, do you hound him to study or let him fail? 

When he fails, do you ground him, or just help him see how he may have just closed off certain desirable opportunities in the future?

Do you force them to play an instrument, or just leave a bunch of instruments around the house and see what they gravitate to?

Do you let them do seemingly dangerous things or try to protect them?

Do you compare the siblings, or make sure they know how they are different and why they do not need to follow their brother’s path?

When they have a setback or failure, do you focus on that, or do you find and celebrate the learnings?



The funny thing about all of this is most of the time, the best thing to do is nothing.  On the surface, it may look lazy or hands off and it is.  But, if you grab your bag of popcorn, watch the show and make sure to laugh and cheer a lot, you just may find that being responsibly lazy might just lead to the best possible outcome.

Monday, May 16, 2016

What does a $5 Raspberry Pi mean?


THIS BREAKS MY BRAIN...


What does it mean to live in a world where you can get a computer for $5.  I am talking about a computer that can connect to a monitor with HDMI, a keyboard, mouse, and wifi (over usb).    I am not talking about a headless microcontroller like and Arduino.  This is a real PC.  For FIVE DOLLARS!

This computer is more powerful than a $1 Million mainframe from the mid 60s.




That means that anyone in the world can get on a computer running free open source operating system and gain access to the the same internet that I get on with my $2000 Mac.  It is crazy when you think about what you can do on this thing:

- Stream Netflix
- Listen to streaming music
- Code in almost any language
- Run a web server
- Run a database server
- Control external hardware (like Arduino)
- Check email
- Facebook (or anything you can do in a browser)
- Read this blog

With mesh networking, you can give this to kids with a cheap KVM setup anywhere in the world and you have just democratized computing.  Kids that do not have access to phones, cars, or even bikes could have a computer, learn to code, and start building skills that will get them out of poverty.

I can't stop thinking about all the possibilities.

WHAT IF?????


Monday, April 11, 2016

The Biggest Product Intro In History

I just put down $1000 to reserve my Tesla Model 3.  I am really enamored with this grey color:


So...  why is this my next car?  Here are the superficial reasons:

  1. No fossile fuels
  2. Sub 6 sec 0-60
  3. Self driving
  4. Supercharge station support
  5. Awesome electronics package
  6. Comfy
But...  The real reason is that it will only cost me $15,000.  That is less than half of what my Mini Cooper cost in 2006.  In addition, I have put about $10,000 of fuel and $3000 of maintenance into that ride. 

How does that math work?  Here goes:

Base Price:  $35,000
Tax Rebate: -$7,000
Since I will charge at work and will keep the car 10+ years...
Fuel Savings: -$10,000
Maintenance savings ver 10 years: -$3,000

Total cost of ownership compared to a $35,000 gas guzzler:  $15,000

BUT

This assumes I will get in under the tax cut off.  

This is the interesting part of the Tesla Model 3 launch plan.  They need to try and get as many people into the $7500 tax break window as possible.  The problem is that sometime in the next 2 years, the total number of electric car sales will pass the 200,000 unit mark and then a 6 month window starts after which the tax break starts to tail off.

So, as we approach the 200,000 unit barrier, Tesla needs to be hitting its max capacity of 500,000 units per year.  This is up from the current 5000-6000 they have been doing with the Model S/X.  If they can get to that level in the next 12-16 months, then they may be able to get enough units out in the six month grace window to accommodate most of the pre order purchases which is quickly approaching 350,000 units.

It will be fascinating to watch Tesla over the next year figure out how to finish development and ramp up to max velocity.  GRABBING POPCORN.


TL;DR: Tesla needs to GO VERY FAST!

Sunday, April 10, 2016

Product Management Process

Made a high level process flow for introducing people to product management today.  Maybe someone else needs something at this level.


Thursday, March 31, 2016

Monthly Capacity Planning

This will be a short post to outline a potential planning optimization we have found.  My 7 person PM team manages 8+ products for a 70+ person development organization.  There are always more opportunities than people to get them done.  We have to make trade offs.  The tough part is that everyone thinks their stuff is at least as important as everyone else's.

So, the problem we have been working on is how do you optimize multi product development spend without meddling too much in the inner working of the development organization.  The answer...

MONTHLY CAPACITY PLANNING

We have settled into a process where once a month, we meet with all the development managers and go through what is getting done and what is falling behind.  We make decisions about pushing out some things and most importantly allocating resources to priorities.

For instance, if a specific product initiative is falling behind and has a compelling reason to accelerate, we will push development to add capacity to that initiative.  Usually, this means that something else has to give up capacity.  Sometimes it means we will increase our outsourcing capacity.  Either way, we work together to openly talk about turning up or down the volume relative to where we currently are.

There are two sacred rules in this process that are key for the PMs to adhere to:

  1. We cannot specify who works on what.  Only the raw capacity.
  2. We cannot push back when the devs say the "plate is full".  We can only ask them to add new employees or contract augmentation.
It seems like as long as we adhere to these rules, the dev team works really hard to optimize project staffing within the dev organization.

What I like about this is each month we are able to make adjustments with development and so if something is getting sideways, it will not be long until we address it.  Once we set the capacity for each product, then for a full month, the PMs have all the maneuvering room they need to work on their specific priorities without having to fight for capacity.  

It has all the makings of a great process:  It is easy, practical, works to everyone's advantage and is sustainable.


tl;dr: Tune capacity levels monthly and live in peace