Sep 12 2021

Elon Musk at Starbase

In the following video, Elon Musk talks about his Five Step Process for designing and manufacturing complex systems. In this video, Elon is giving a guided tour at the facilities in Starbase, Texas where SpaceX is building Starship, the largest reusable rocket ship. Elon is applying this Five Step Process to building Starship but he alludes to how they came to be from his lessons ramping up the manufacturing process at Tesla.

You can read Elon’s ideas on design and manufacturing here: Five Step Process


Sep 11 2021

Elon Musk on Design, Development, and Manufacturing

Recently, I went down a SpaceX rabbit hole where Elon Musk shared his thoughts on design, development, and manufacturing. Here are some choice insights from Elon as he talks about the SpaceX Starship, a fully re-useable rocket.

  • If a design is taking too long, the design is wrong and therefore the design needs to be modified to accelerate progress.
  • One of the most fundamental errors we’ve made to advance development is to stick to a design even when it is very complicate and to not strive to delete parts and processes.
  • Everyone is chief engineer, everyone must understand how all the systems work so that you don’t have subsystem optimization.
  • The product errors reflect the organizational errors. Whatever departments you have, that will be where your interfaces will be. Instead of questioning the constraints, one department will design to the constraints that the other department has given them without calling into question and saying those constraints are wrong.
  • You should actual take the approach that the constraints you are given are some degree wrong, the counterpoint would be that they’re perfect.
  • One of the biggest traps for smart engineers is optimizing a thing that shouldn’t exist.
  • We often try to answer the questions we are given, instead of questioning the premise of the question itself.
  • We can produce boosters and ships way easier than we can make the launch site.
  • It’s 10 to 100 times more effort to design the manufacturing system than the engine (a first of its kind).
  • The amount that goes into the design rounds into zero, relative to the amount of effort that goes into the manufacturing system.
  • All designs are wrong, it’s just a matter of how wrong. Everyone is wrong, no matter who you are, everyone is wrong some of the time.

In large part from his experience at Telsa, Elon is now using this Five Step Process at SpaceX.

Five Step Process

  • Make your requirements less dumb, your requirements are definitely dumb. It doesn’t matter who gave them to you. It’s particularly dangerous if a smart person gave you the requirements because you might not question them enough.
  • Try very hard to delete a part or process. If you are not occasionally adding things back in, you are not deleting enough.
  • Simplify or optimize. The reason this is the third step is that it is very common for a smart engineer to optimize a thing that should not exist.
  • Accelerate cycle time, you are moving too slowly but don’t go faster than until you’ve work on the other things first. If you are digging your grave don’t dig faster, stop digging your grave.
  • The final step is automate.

About the above process, Elon states the following.

  • I’ve personally made the mistake of going backwards on all five steps, multiple times.

Apr 18 2021

No Software, No Code

Salesforce started using the “No Software” motto and logo going back to the early 2000’s. Since then, over the last twenty years, we’ve seen technology adoption across every sector and industry but software development for the most part is still very time consuming. Fortunately there are a great number of new platforms that took the “No Software” mindset and turned it into the “No Code” movement, in the process enabling thousands of entrepreneurs that have turned their ideas into applications and startups. Just about every cloud platform has product aimed at the “No Code” space. Amazon Web Services launched AWS Honeycode in 2020, Google Cloud has had multiple products in this space, and Microsoft Office is pushing Power Apps. In addition to the large cloud providers there are a large number of internet startups that have fueled the “No Code” movement, most notably Airtable and Zapier.

The “No Code” movement is not necessarily new, as already mentioned Salesforce had the idea of “No Software” back in the early 2000’s and going back further into the 1990’s there have been platforms and products that provided GUI builders or form designers. The reason that the “No Code” has become a movement now is that internet access is available in most parts of the world, there is a whole generation that grew up as internet natives, software as a service with trial or no cost tiers, and the explosion of data.

So what are you waiting for? I’m sure you have a great idea, or maybe just a specific need for an application that doesn’t yet exist. You can get started with any of the new breed of “No Code” platforms to making that idea into a reality.


Mar 10 2020

Standard Log Format

There isn’t a standard log format that spans all applications. There is a Common Log Format used by web servers, and there are logging frameworks that helps in the mechanics of producing logs. Unfortunately when it comes to composing the actual message that will be written out to log files the developer is left to his own devices.

Here are some best practices that I’ve found useful when adding logs to an application I’ve working on.

  • Each log event should be written to a single line.
  • Each log event should start with an event timestamp, preferably in UTC.
  • Include the log level in the log line.
  • Add a short description about the event that is being logged.
  • Included all pertinent data about the event in name=”value” pairs.
  • Quote all data values.
  • Use and log a transaction id as requests move through your applications.
  • Be consistent about field names used across applications.
  • Add a prefix to the field name to add context, for example for input or output data.
  • Mask out passwords, credit cards, and any other Personal Customer Information (PCI) data.
  • The log file name should include the application identifier and hostname.
  • Log files should be rotated out based on time and/or size.

Feb 4 2020

Software Development Checklist

During the summer, our team usually hires an intern. We find that the interns we hire are more than capable with the technical requirements but usually need some help on process. In order to help new team members adapt our process we’ve developed a number of useful checklists of some best practices. Here are some useful checklist to go through when working on new features.

Ticket Checklist

  • Add clear and concise title and description
  • Add reproducible steps
    • Use realistic sample data
  • Add specific acceptance criteria
  • Add related tickets

Code Checklist

  • Create your own feature branch
  • Check code into your branch often
  • Merge from master often
  • Run test suites on your own branch
  • Add and update test cases
  • And and update wiki documentation
  • Add comments to ticket

New Project Checklist

  • Source
    • Git Repository
    • Dependency Management
      • Maven
    • readme.md
  • Wiki documentation
    • Design Diagram
    • API Documentation
    • Common Configuration
    • AWS Permissions
    • Technical Specifications
      • Ports
      • Hardware
    • Sample log output
    • Sample Splunk queries
  • Splunk friendly logs
    • Splunk Dashboards
    • Splunk Alerts
  • Test Cases
    • JUnit
  • Release Management
    • Bamboo Plan
    • Ansible Playbook
    • Package
      • Docker Image
      • RPM Package

Jan 8 2020

Best Homebrew Formulae

Homebew is convenient package manager for the OS X. Once you install Homebrew on your Mac, you can then easily intall and uninstall tools, libraries, and applications through the brew command. The brew command accepts an install and unistall option, as well as list option that prints all currently installed applications.

You can install an application through a brew formula. There is a plathora of homebrew formulae.

The following homebrew formulae are the ones that I’ve found most useful as a software developer.

Best Homebrew Formulae

  • brew install mysql
    • Installs MySQL database
  • brew install awscli
    • Installs AWS CLI
  • brew install sqlite
    • Installs SQLite CLI
  • brew install groovy
    • Installs Groovy scripting language
  • brew install jq
    • Installs jq command to process JSON content
  • brew install jo
    • Installs jo command to generate JSON content
  • brew install bats
    • Installs test framework for Bash scripts
  • brew install wget
    • Installs wget command to fetch HTTP content
  • brew install markdown
    • Installs text-to-HTML converter
  • brew install hugo
    • Installs hugo static site generator