Skip to main content
Posts by:

Tim Booher

Laser Alignment

I’m going dive into the theory of laser alignment, show the math and the jigs I built to put that math into practice. This post is for someone who wants the “why” behind a lot of the online material on laser cutters. If you just want some practical tips on how to better align your laser, skip to the end. I won’t compete with the excellent videos that show the practical side of alignment.

So let’s dive in . . .

My laser cutter is CO2 based, optimized for precision material processing. The laser tube generates a coherent beam at 10640 nm, which is directed via a series of mirrors (1, 2, 3) before focusing on the workpiece. Each mirror introduces minimal power loss, typically less than 1% per reflection, depending on the coating and substrate quality. The beam’s path is engineered to maintain maximal intensity, ensuring that the photon density upon the material’s surface is sufficient to induce rapid localized heating, vaporization, or ablation.

The choice of 10640 nm wavelength for CO2 lasers is driven by a balance of efficiency, material interaction, and safety. This far-infrared wavelength is strongly absorbed by many materials, making it effective for cutting and engraving a wide variety. It provides a good balance between power efficiency and beam quality. Additionally, this wavelength is safer to use as it’s less likely to cause eye damage than shorter, visible wavelengths (often 400-600 nm). Fiber lasers also have a shorter wavelength (around 1060 nm) which is more readily absorbed by metals.

However, 10640 nm has drawbacks. Its longer wavelength limits the ability to finely focus the beam compared to shorter wavelengths, affecting the achievable precision. The diffraction limit provides the smallest possible spot size \( d \) given by the formula \( d = 1.22 \times \lambda \times \frac{f}{D} \), where \( \lambda \) is the wavelength, \( f \) is the focal length of the lens, and \( D \) is the diameter of the lens. The bigger wavelength needs a bigger lens or a smaller focal length to make a small hole. Since the machine size is limited, the longer wavelength results in a larger minimum spot size. This larger spot size limits the precision and minimum feature size the laser can effectively cut or engrave.

You can’t adjust the 10640 nm wavelength, which is a consequence of the molecular energy transitions in the CO2 gas mixture. This specific wavelength emerges from the vibrational transitions within the CO2 molecules when they are energized. The nature of these molecular transitions dictates the emission wavelength, making 10640 nm optimal for the efficiency and output of CO2 lasers.

The Omtech 80W CO2 Laser Engraver is fairly precise with an engraving precision of 0.01 mm and a laser precision of up to 1000 dpi. This is made possible due to its robust (ie, big heavy machine) construction and the integration of industrial-grade processors that handle complex details and large files efficiently. The machine operates with a stepper motor system for the X and Y axes, facilitating efficient power transmission and precise movement along the guide rails, ensuring a long service life and high repeatability of the engraving or cutting patterns. This level of motor precision enables the machine to handle intricate designs and detailed work, crucial for professional-grade applications.

But! Only if the laser beam is well calibrated. Let’s look at the math of that.

First all intensity values follow the inverse square law, with light, the intensity of a laser beam is inversely proportional to the square of the distance from the source. Mathematically, this relationship is depicted as $$I = \frac{P}{4\pi r^2}$$, where \( I \) represents the intensity, \( P \) the power of the laser, and \( r \) the distance from the laser source. In practical terms, this means that a small deviation in alignment can lead to a significant decrease in the laser’s intensity at the target point.

Visually, laser intensity looks like this, so small drop off in \(r\) leads to big drops in \(I\).

Laser cutters can’t put the whole tube in the cutting head, so they need three mirrors to get to a cutting head that can move in a 2D space.

With this geometry, the effective power at the surface of the material is:

\[ P_{eff} = P_{0} \times T_{m}^{3} \times T_{l} \times T_{f} \]

Where:

  • \( P_{0} \) is the initial power of the laser tube.
  • \( T_{m} \) is the transmission coefficient of each mirror (a value between 0 and 1).
  • \( T_{l} \) is the transmission coefficient of the focusing lens.
  • \( T_{f} \) accounts for any additional factors like the focus quality or material properties.

In my case \( P_{0} \) would be 80 watts. I don’t have values for for \(T_l\) and \(T_f\). \(T_l \) typically ranges from 0.9 to 0.99, indicating that 90% to 99% of the laser light is transmitted through the lens. I would love if anyone has these measured parameters for Omtech.

In reality there is alignment error. Precise calibration matters a lot with lasers where a millimeter of misalignment can exponentially diminish the laser’s intensity and focus, impacting its effectiveness. Practically, my Omtech AF2435-80 can’t cut basic sheet goods without lots of tweaking. If \( e \), representing the alignment error at each mirror, would impact the effective path of the laser beam and could lead to a decrease in the energy density at the point of contact with the material. This error would affect the power \( P \) actually hitting the target area \( A \), therefore altering the energy density \( E \) and potentially the depth \( d \) of the cut.

$$ P_{eff} = P_0 \times (T_m – e)^3 \times T_l \times T_f $$

To actually cut something you need to remove the material, which takes power and time. A laser doesn’t burn material away like a hot light saber. Laser ablation is a process where the intense energy of a focused laser beam is absorbed by a material, causing its rapid heating and subsequent vaporization. This localized heating occurs at the laser’s focal point, where the energy density is highest. It can be so intense that it instantly removes (ablates) the material in the form of gas or plasma. The efficiency and nature of the ablation depend on the laser’s wavelength and the material’s properties. Essentially, the laser beam’s energy disrupts the material’s molecular bonds, leading to vaporization without significant heat transfer to surrounding areas, enabling precise cutting or engraving.

I like cutting wood. Here, the laser’s focused energy causes the wood to rapidly heat up at the point of contact. This intense heat can char or burn the wood, leading to a change in color and texture. In essence, the laser beam causes pyrolysis, where the wood decomposes under high heat in the absence of oxygen. This process can create smoke and a burnt appearance, but it’s controlled and doesn’t ignite a fire like an open flame would.

To cause ablation, the energy applied to a material is a function of power, spot size, and interaction time, affected by alignment errors \(\bar e\). The energy density \( E \) is defined by the laser power \( P \) divided by the spot area \( A \), and is given in watts per square meter. The interaction time \( t \), which is the time the laser is in contact with a point on the material, is crucial for determining the amount of energy absorbed. This is especially important because it affects the cutting depth \( d \) and is defined by the inverse of the feed rate \( v \). The burning power, or the energy delivered to the material, can be calculated by:

$$ E_{burn} = \frac{P_{eff} \cdot t}{A} $$

Substituting the effective power above, gives us the energy at the surface.

$$ E_{burn} = \frac{P_{eff} \cdot t}{A} = \frac{P_{eff}}{v \cdot A} $$

Since \( t \) is inversely proportional to \( v \) (the feed rate), and the depth of the cut \( d \) is proportional to the energy density over time, the equation can be further refined to calculate \( d \):

$$ d \propto \frac{P_{eff}}{v \cdot A} $$

This equation shows that the cutting depth \( d \) is directly proportional to the effective power \( P_{eff} \) and inversely proportional to the product of the feed rate \( v \) and the area of the spot size \( A \).

So, if you want to cut effectively, you maximize your power, hit at the right speed and get your beam as focused (small) as possible. To do this practically, you want to make sure you are cutting at the right focal distance and with the right alignment. You also want clean mirrors. The focal distance is determined by a ramp test. I’ll cover alignment below. Cleaning the mirrors increases the \(T_I\).

Alignment

To align my laser, I just couldn’t use the tape. First, you have to align for precision and then get accuracy through moving the tube. To get precision from mirror 1, you have to strike a target close to the source of mirror 1 and then farther away. There are many many videos that walk you through the sequence (mirror 1-2 close, mirror 1-2 far, etc). I want to focus on the math of precision.

The pulses will look like this:

Now, we can look at the x-dimension to see what point a straight line would intersect, call this \(x\).

Writing out the similar triangles gives:

For the x-coordinate:

$$ \frac{x – x_1}{\Delta d} = \frac{x_2 – x_1}{d + \Delta d} $$

For the y-coordinate:

$$ \frac{y – y_1}{\Delta d} = \frac{y_2 – y_1}{d + \Delta d} $$

So we can solve for the point a straight line would make when two targets are space \( \Delta d \) apart where \( \Delta d = d_{far} – d_{near} \):

  1. For the x-coordinate:

$$ x = x_1 + (x_2 – x_1) \cdot \frac{d_{near}}{d_{far} – d_{near}} $$

  1. For the y-coordinate:

$$ y = y_1 + (y_2 – y_1) \cdot \frac{d_{near}}{d_{far} – d_{near}} $$

Where:

  • \( x \) and \( y \) are the coordinates of the true point where the laser needs to be positioned.
  • \(x_1, y_1\) are the coordinates where the laser hits when the target is near.
  • \(x_2, y_2\) are the coordinates where the laser hits when the target is far.
  • \( d_{near} \) is the distance from the laser to the target when it is near.
  • \( d_{far} \) is the distance from the laser to the target when it is far.

Plotting what this looks like shows the relationship between the true dot and the near and far dots. It’s on the other side Here are the dots where near is blue, far is black and the red dot is the true dot that represents the laser moving in a straight line. These are extreme cases that would represent a pretty misaligned tool.
If I run a simulation with d = 5 cm and \(\Delta d\) = 30 cm with a max distance from the center of 10 mm, I get:

So this is odd: the red dot isn’t in between the black and blue dots. The line connecting those two dots is the path of the laser at its current orientation. I really want to think that the ideal spot would be in between these two dots. However, the intuition that the point (x, y) might average out and fall between (x1, y1) and (x2, y2) is based on a misunderstanding of how the alignment of a laser system works. In a laser alignment system, when you’re adjusting the laser to hit a specific point on a target at different distances, you’re effectively changing the angle of the beam’s trajectory.

The laser source does not move directly between (x1, y1) and (x2, y2), but rather pivots around a point that aligns the beam with the target points. Since the laser’s position is being adjusted to correct for the angle, not for the position between two points, the corrected point will lie on a line that is extrapolated backwards from (x1, y1) and (x2, y2) towards the laser source.

The resulting position (x, y) where the laser needs to be for the beam to be straight and hit the same point on the target at any distance will be on the extension of this line and not necessarily between the two points (x1, y1) and (x2, y2). This is due to the nature of angular adjustment rather than linear movement. The position (x, y) is essentially where the angles of incidence and reflection converge to keep the beam’s path consistent over varying distances. It’s pretty cool that two points give you this angle. In fact, the ideal point is located further back on the line of the laser beam’s path extended backward from the near and far positions, which geometrically cannot lie between the near and far positions on the target unless all three are equal. Fortunately, as the points get very close, you can just fudge around with the dials to get these on top of each other which is probably what most people do.

If the plots are closer to the center, it’s much easier to just not worry about the math. If I constrain the points to be 2 mm from the center:

Too complicated? Here are some basic rules from the math:
Just aim for where the nearest point hit at the farthest distance away. (The near point has less error.)

  1. Linear Alignment: The points are always in a straight line. This is because the red point is calculated based on the positions of the blue and black points. It represents the position where the laser should be to maintain its alignment with the target at both distances. The calculation creates a direct linear relationship between these three points.
  2. Relative Distances: The farther apart the blue and black points are, the farther the red point will be from both of them. This is because a greater distance between the near and far points means a larger angular adjustment is required for the laser, which results in a more significant shift in the red point’s position to maintain alignment.
  3. Ordering of Points: If the blue and black points are flipped (i.e., if the far point becomes nearer to the center than the near point), the red point will also shift its position accordingly. The ordering of the blue and black points relative to the circle’s center will determine which side of these points the red point will fall on.
  4. Proximity to the Center: When both blue and black points are close to the center, the red point will also be relatively closer to the center. This is because minor adjustments are needed when the target moves a shorter distance.
  5. Symmetry in Movement: If the blue and black points are symmetrically positioned around the center (but at different distances), the red point will also tend to be symmetrically positioned with respect to these points along the line they form.

What I did

Armed with the right theory, I had to move past shooting at tape, so I used this svg from Ed Nisley to create these targets and I 3d printed a holder for them. This is the jig that fits over the nozzle:

And the jig that fits in the 18mm holes.

I also made a holder for my reverse laser so I could use this in the forward direction:

Armed with all this, I built a calculator and you can poke at my R code.

Also, let me know if you want the STL or svg files for the alignment jigs.

By 3 Comments

“Room Temperature” Superconductor?

Note: these results are still new and will need to be replicated and further studied by the scientific community. This whole thing may be nonsense, but I did some thinking on the impact if it’s true.

Superconductor in action

Researchers from Korea University have synthesized a superconductor that works at ambient pressure and mild oven-like temperatures (like 260 deg F, not a room I want to be in) with what they call a modified lead-apatite (LK-99) structure. This is a significant breakthrough as previous near-room-temperature superconductors required high pressures to function (the highest-temperature results before were at >1 million atmospheres), making them impractical for many applications. They are posturing for this to be a big deal: the authors published two papers about it concurrently: one with six authors, and one with only three. (as in Nobel prize 3)

You can read the paper here.

The modified lead-apatite (LK-99) structure is a type of crystal structure that achieves superconductivity from minute structural distortion caused by a slight volume shrinkage (0.48 %), not by external factors such as temperature and pressure. Their key innovation for letting electrons glide doesn’t come from low temp, or by squeezing together. It comes from an internal tension that forms as the material forms, just like the tempered glass of a car windshield.

This structure in particular is a specific arrangement of lead, oxygen, and other atoms in a pattern similar to the structure of apatite, a group of phosphate minerals that you might find in your teeth or bones.

The “modified” part comes in when researchers introduce another element, in this case, copper (Cu2+ ions), into the structure. This slight change, or “modification,” causes a small shrinkage in the overall structure and creates a stress that leads to the formation of superconducting quantum wells (SQWs) in the interface of the structure. These SQWs are what allow the material to become a superconductor at room temperature and ambient pressure.

Superconducting Quantum Wells (SQWs) can be thought of as very thin layers within a material where electrons can move freely. These layers are so thin that they confine the movement of electrons to two dimensions. This confinement changes the behavior of the electrons, allowing them to form pairs and move without resistance, which is the key characteristic of superconductivity. In essence, SQWs are the “magic zones” in a material where the amazing phenomenon of superconductivity happens.

The development of a room-temperature superconductor that operates at ambient pressure would be a significant advancement in the field of physics. Superconductors have zero electrical resistance, meaning that they can conduct electricity indefinitely without losing any energy. This could revolutionize many applications, including power transmission, transportation, and computing. For example, it could lead to more efficient power grids, faster and more efficient computers, and high-speed magnetic levitation trains.

The cool thing is that the LK-99 material can be prepared in about 34 hours using basic lab equipment, making it a practical option for various applications such as magnets, motors, cables, levitation trains, power cables, qubits for quantum computers, THz antennas, and more.

Transportation

So, if the paper is true, how could this change transportation?

Electric Vehicles (EVs): Superconductors can carry electric current without any resistance, which means that electric vehicles could become much more efficient. The batteries in EVs could last longer, and the vehicles could be lighter because the heavy copper wiring currently used could be replaced with superconducting materials. This could lead to significant improvements in range and performance for electric cars, buses, and trucks.

Maglev Trains: Superconductors are already used in some magnetic levitation (maglev) trains to create the magnetic fields that lift and propel the train. Room-temperature superconductors could make these systems much more efficient and easier to maintain, as they wouldn’t require the cooling systems that current superconductors need. This could make maglev trains more common and could lead to faster, more efficient public transportation.

Aircraft: In the aviation industry, superconductors could be used to create more efficient electric motors for aircraft. This could lead to electric airplanes that are more feasible and efficient, reducing the carbon footprint of air travel.

Shipping: Electric propulsion for ships could also become more efficient with the use of superconductors, leading to less reliance on fossil fuels in the shipping industry.

Infrastructure: Superconducting materials could be used in the power grid to reduce energy loss during transmission. This could make electric-powered transportation more efficient and sustainable on a large scale.

Space Travel: In space travel, superconductors could be used in the creation of powerful magnetic fields for ion drives or other advanced propulsion technologies, potentially opening up the solar system to more extensive exploration.

The other field I want to explore is computing, just some quick thoughts here on what I would want to explore at DARPA in an area like this:

Energy Efficiency: Superconductors carry electrical current without resistance, which means that they don’t produce heat. This could drastically reduce the energy consumption of computers and data centers, which currently use a significant amount of energy for cooling.

Processing Speed: Superconductors can switch between states almost instantly, which could lead to much faster processing speeds. This could enable more powerful computers and could advance fields that require heavy computation, like artificial intelligence and data analysis.

Quantum Computing: Superconductors are already used in some types of quantum computers, which can solve certain types of problems much more efficiently than classical computers. Room-temperature superconductors could make quantum computers more practical and accessible, potentially leading to a revolution in computing power.

Data Storage: Superconductors could also be used to create more efficient and compact data storage devices. This could increase the amount of data that can be stored in a given space and could improve the speed at which data can be accessed.

Internet Infrastructure: The internet relies on a vast network of cables to transmit data. Superconducting cables could transmit data with virtually no loss, improving the speed and reliability of internet connections.

Nanotechnology: The properties of superconductors could enable the development of new nanotechnologies in computing. For example, they could be used to create nanoscale circuits or other components. This could be from leveraging some cool physics. Superconductors expel magnetic fields, a phenomenon known as the Meissner effect. This property could be used in nanotechnology for creating magnetic field shields or for the precise control of magnetic fields at the nanoscale. Another cool application could leverage Josephson Junctions. Superconductors can form structures which are a type of quantum mechanical switch. These junctions can switch states incredibly quickly, potentially allowing for faster processing speeds in nanoscale electronic devices. Finally, you could build very sensitive sensors with superconductors by creating extremely sensitive magnetic sensors (SQUIDs – Superconducting Quantum Interference Devices). At the nanoscale, these could be used for a variety of applications, including the detection of small magnetic fields, such as those used in hard drives.

So, we will see how the debate on this pans out. In the meantime, speculate on some Lead mines and enjoy a dose of science-fueled optimism of the type of breakthroughs we may see in the near future.

By 0 Comments

All those wireless Mice! (from Taiwan)

If you are like us, you get too many mice and keyboards lying around. With 5 or six devices, and an equal number of receivers you can just plug stuff in to find what matches. That assumes the peripherals are working and haven’t been lost. Can we interrogate the usb receivers and discover their associated hardware?

First, the findings: I tried four random USB receivers and found out their purpose and matching peripherals (Amazon Basics and Logitech) via windows powershell commands I share below. The interesting thing is that each one was made by a different company from the North part of Taiwan. These are huge companies that I’ve never heard of, each taking parts from the TSMC ecosystem and putting them into devices. The Amazon Basics companies were Pixart Imaging, Inc, MOSART Semiconductor Corporation and Chicony Electronics.

Pixart Imaging, Inc

If you want to follow the tech details below, I’m eager to show how I figured out what these black boxes are for the three different receivers.

All three of these companies were close to each other on the north side of Taiwan.

What are the numbers that identify these receivers?

First, some background. Each device has a ClassGuid, a unique identifier assigned to a device class in the Windows operating system. A device class is a group of devices that have similar characteristics and perform similar functions. The ClassGuid provides a way for Windows to recognize and manage different types of devices connected to the system.

You look into something small like this, the well goes deep. The logitech part had external serial numbers and government spectrum identifiers, the Amazon Basics parts required me to use windows PowerShell to learn about them.

The ClassGuid was originally defined by the Open Software Foundation (OSF) as part of the Distributed Computing Environment (DCE).

Today, the UUID specification is maintained by the Internet Engineering Task Force (IETF) as part of the Request for Comments (RFC) series. The current UUID specification can be found in RFC 4122, titled “A Universally Unique IDentifier (UUID) URN Namespace.”

RFC 4122 defines the structure and generation algorithms for UUIDs, ensuring that the generated identifiers are unique across different systems and over time. It covers various UUID versions that use different methods for generating unique values, such as time-based, random-based, or name-based algorithms.

Each device class in Windows has its own ClassGuid, which is typically a hexadecimal string enclosed in braces (e.g. {4d36e967-e325-11ce-bfc1-08002be10318}). The ClassGuid is used to associate a device driver with the corresponding device class, allowing the operating system to communicate with the device and perform necessary functions.

For example, when you connect a USB device to your computer, Windows uses the ClassGuid to determine which driver to use to communicate with the device. If the device is a Human Interface Device (HID), such as a mouse or keyboard, Windows will use the HID driver associated with the {745a17a0-74d3-11d0-b6fe-00a0c90f57da} ClassGuid. If the device is a USB mass storage device, Windows will use the storage driver associated with the {4d36e967-e325-11ce-bfc1-08002be10318} ClassGuid.

The ClassGuid for USB receivers, or USB dongles, will depend on the type of device.

For example, if you have a USB Wi-Fi adapter or a Bluetooth dongle, their ClassGuids will be either:

  • USB Wi-Fi adapter: {4d36e972-e325-11ce-bfc1-08002be10318} (Network adapters)
  • Bluetooth dongle: {e0cbf06c-cd8b-4647-bb8a-263b43f0f974} (Bluetooth radios)

However, if you have a USB receiver for a wireless mouse or keyboard, its ClassGuid will be that of a Human Interface Device (HID), which is {745a17a0-74d3-11d0-b6fe-00a0c90f57da}.

First Dongle, by Logitech

First, you can look at the device and read a couple numbers (only by taking pictures with my iPhone and zooming in, then using their character recognition).

Looking at the outside I see FCC ID JNZCU0010 refers to a specific device authorized by the Federal Communications Commission (FCC) in the United States. The FCC ID is an alphanumeric code that is assigned to devices that have been tested and comply with the FCC’s requirements for radio frequency interference, safety, and other regulatory standards.

The FCC ID JNZCU0010 belongs to the Logitech Unifying Receiver, which is a wireless USB receiver that connects multiple compatible Logitech devices, such as keyboards and mice, to a single computer using a 2.4 GHz wireless connection. This receiver is particularly useful for reducing the number of USB ports occupied by input devices and for providing a seamless connection experience between compatible Logitech peripherals.

You can find more information about the device by searching the FCC’s equipment authorization database with the FCC ID. The database typically contains documents related to the device’s testing, internal and external photos, and user manuals. You can access the database here: https://www.fcc.gov/oet/ea/fccid

The “IC” code, in this case, “IC: 4418A-CU0010”, refers to an Industry Canada (IC) certification number for the device. Industry Canada is the Canadian government agency responsible for regulating and certifying radio frequency devices, ensuring that they meet the necessary requirements and do not cause harmful interference.

Similar to the FCC ID in the United States, the IC certification number identifies a specific device tested and approved for use in Canada. The IC number “4418A-CU0010” is associated with the same Logitech Unifying Receiver that the FCC ID JNZCU0010 refers to.

So, both the FCC ID JNZCU0010 and the IC number 4418A-CU0010 identify the Logitech Unifying Receiver, confirming that it has been tested and certified for use in both the United States and Canada. This is enough to learn all I need about this receiver. A quick Bing/Google can tell you it’s compatible with: It is compatible with all Logitech Unifying products, which include mice and keyboards that have a Unifying logo displayed on them. You can connect up to 6 compatible keyboards and mice to one computer with a single Unifying receiver.

Active Interrogation for the unmarked receivers

While I’m a linux user, I’ve learned a bit of Windows PowerShell since that is where the hardware is directly connected. Let’s use windows to find out about the black boxes that have no markings that Amazon uses. Hint, it’s going to take us into the crazy Taiwanese CMOS ecosystem.

This command uses the “Get-PnpDevice” cmdlet to get a list of all the Plug and Play (PnP) devices currently connected to your computer. The “-PresentOnly” parameter limits the results to only devices that are currently connected. The “Where-Object” cmdlet is then used to filter the results to only devices with a ClassGuid that begins with ‘{‘, which is the format of all ClassGuids.

The “Select-Object” cmdlet is used to select the “ClassGuid”, “FriendlyName”, “Manufacturer”, “Description”, and “DeviceID” properties of each device. The “-Unique” parameter ensures that each device is only listed once.

When you run this command, you will see a list of all the ClassGuids associated with their respective devices. The output will include the device’s FriendlyName, which is a human-readable name for the device; the Manufacturer, which is the company that produced the device; the Description, which is a brief description of the device’s function; and the DeviceID, which is a unique identifier for the device. This additional information should give you a better understanding of what each connected device is and what its purpose is.

You can paste these commands into powershell and learn a lot:

Get-PnpDevice -PresentOnly | Where-Object {$_.ClassGuid -like '{*}'} | Select-Object ClassGuid, FriendlyName, Manufacturer, Description, DeviceID -Unique

or to find what we are looking for:

Get-PnpDevice -PresentOnly | Where-Object {($_.ClassGuid -eq '{745a17a0-74d3-11d0-b6fe-00a0c90f57da}') -or ($_.ClassGuid -eq '{4d36e96f-e325-11ce-bfc1-08002be10318}' -and $_.Description -like '*USB Receiver*')} | Select-Object ClassGuid, FriendlyName, Manufacturer, Description, DeviceID -Unique

This command queries Win32_USBControllerDevice for USB devices, and then retrieves detailed information on each device. The output will display the PNPDeviceID and the Description for each USB device.

You can then check the output for the relevant device and see if the model number (CU0010) is mentioned in the device description or the PNPDeviceID. If the model number is not explicitly mentioned, you might be able to find a unique identifier for the device that can help you confirm the model number through an online search or by checking the device documentation.

So if we run:

Get-WmiObject Win32_USBControllerDevice -Impersonation Impersonate | Foreach-Object { [Wmi]$_.Dependent } | Select-Object PNPDeviceID, Description

So I plug in a mystery receiver (bad idea) and that produces this output on my machine. Note the VID (vendor id) and PID (part id). You can look up parts based on that.

USB\VID_3938&PID_1059\6&208E681&0&3                USB Composite Device
USB\VID_3938&PID_1059&MI_00\7&E30261B&0&0000       USB Input Device
HID\VID_3938&PID_1059&MI_00\8&3483BAC7&0&0000      HID Keyboard Device
USB\VID_3938&PID_1059&MI_01\7&E30261B&0&0001       USB Input Device
HID\VID_3938&PID_1059&MI_01&COL01\8&C190CFE&0&0000 HID-compliant mouse
HID\VID_3938&PID_1059&MI_01&COL02\8&C190CFE&0&0001 HID-compliant consumer control device
HID\VID_3938&PID_1059&MI_01&COL03\8&C190CFE&0&0002 HID-compliant system controller
HID\VID_3938&PID_1059&MI_01&COL04\8&C190CFE&0&0003 HID-compliant vendor-defined device
HID\VID_3938&PID_1059&MI_01&COL05\8&C190CFE&0&0004 HID-compliant device

The  USB Implementers Forum (USB-IF) assigns vendor ID 3938 to MOSART Semiconductor Corporation, a Taiwan-based company that designs and develops integrated circuits (ICs) such as consumer ICs, PC peripheral ICs, and wireless consumer ICs.

Through some googling, I can find ou this is connected to my amazon basics keyboard:

KeyValue
BrandAmazon Basics
Item model numberKS1-US
Operating SystemWindows 7
Item Weight1.05 pounds
Product Dimensions5.61 x 1.13 x 17.83 inches
Item Dimensions LxWxH5.61 x 1.13 x 17.83 inches
ColorBlack
Batteries2 AAA batteries required. (included)
ManufacturerAmazon Basics
ASINB07WV5WN7B
Country of OriginChina
Date First AvailableNovember 11, 2019
Product Details

It’s strange that most components are made in Taiwan, but Country of Origin is listed as China.

A random dongle

Let’s try the next one, I connect a usb receiver with absolutely zero markings on it and find:

USB\VID_04F2&PID_1825\6&208E681&0&4           USB Input Device
HID\VID_04F2&PID_1825&COL01\7&295CC939&0&0000 HID-compliant mouse
HID\VID_04F2&PID_1825&COL02\7&295CC939&0&0001 HID-compliant vendor-defined device

The new device appears to be a USB Input Device with VID (Vendor ID) “04F2” and PID (Product ID) “1825”. VID “04F2” belongs to Chicony Electronics, a company that manufactures computer peripherals such as keyboards and mice. So where is  群光電子股份有限公司 located?

Just another 50 story building in a far away place.

In this case, the USB Input Device seems to be a multi-function device, as it includes both an HID-compliant mouse and an HID-compliant vendor-defined device. The device might be a mouse with additional features or a keyboard with an integrated touchpad. I had to set it aside and marvel and the world’s CMOS supply chain.

Trying my last device:

USB\VID_093A&PID_2510\5&7993A9C&0&2 - USB Input Device
HID\VID_093A&PID_2510&COL01\6&5B1E42D&1&0000 - HID-compliant mouse
HID\VID_093A&PID_2510&COL02\6&5B1E42D&1&0001 - HID-compliant vendor-defined device
HID\VID_093A&PID_2510&COL03\6&5B1E42D&1&0002 - HID-compliant consumer control device
HID\VID_093A&PID_2510&COL04\6&5B1E42D&1&0003 - HID-compliant system controller

So the vendor ID is Pixart Imaging, Inc and the part number is for an “optical mouse”.

is a Taiwan-based company founded in 1998 that specializes in designing and manufacturing CMOS (Complementary Metal-Oxide-Semiconductor) image sensors and related imaging application products. These components are commonly used in various devices, such as optical mice, digital cameras, webcams, and other consumer electronics.

One of the key products that Pixart Imaging is known for is its optical navigation sensors used in computer mice. These sensors replaced traditional mechanical ball-tracking mechanisms, allowing for more accurate and responsive cursor movement. The company’s optical sensors are widely used by different mouse manufacturers due to their high performance, low power consumption, and cost-effectiveness.

In addition to optical sensors, Pixart Imaging also offers a range of other products, such as capacitive touch controllers, fingerprint identification modules, and gesture recognition solutions. These components are utilized in a variety of applications, including smartphones, tablets, wearables, and IoT devices.

What are each of these entries?

  1. USB\VID_093A&PID_2510\5&7993A9C&0&2 – USB Input Device: This is a generic USB input device that can be used to transmit data between the connected device and the computer. It could represent a variety of peripherals, such as keyboards or game controllers.
  2. HID\VID_093A&PID_2510&COL01\6&5B1E42D&1&0000 – HID-compliant mouse: This entry represents a Human Interface Device (HID) compliant mouse. It follows the HID protocol to communicate with the computer, allowing for plug-and-play functionality and seamless interaction between the user and the computer.
  3. HID\VID_093A&PID_2510&COL02\6&5B1E42D&1&0001 – HID-compliant vendor-defined device: This entry represents a device that adheres to the HID protocol, but its specific function is defined by the vendor. It could be a custom input device or a specialized peripheral designed for a particular purpose.
  4. HID\VID_093A&PID_2510&COL03\6&5B1E42D&1&0002 – HID-compliant consumer control device: This is a Human Interface Device that is specifically designed for consumer electronics control, such as multimedia keyboards, remote controls, or other devices used to control media playback or volume.
  5. HID\VID_093A&PID_2510&COL04\6&5B1E42D&1&0003 – HID-compliant system controller: This entry represents a device that follows the HID protocol and serves as a system controller. It could be a device like a power management controller, system monitoring device, or another type of controller that helps manage various aspects of a computer system.

So, I was able to quickly find out this matched my Amazon Basics Mouse.

Time to catch my flight.

By One Comment

Quick(ish) Price Check on a Car

So, is it a good price?

With my oldest daughter heading off to college soon, we’ve realized that our family car doesn’t need to be as large as it used to be. We’ve had a great relationship with our local CarMax over the years, and we appreciate their no-haggle pricing model. My wife had her eyes set on a particular model: a 2019 Volvo XC90 T6 Momentum. The specific car she found was listed at $35,998, with 47,000 miles on the odometer.

But is the price good or bad? As a hacker/data scientist, I knew could get the data to make an informed decision but doing analysis at home is a great way to learn and use new technologies. The bottom line is that the predicted price would be $40,636 or 11.4% higher than the CarMax asking price. If I compare to the specific trim, the price should be $38,666. So the price is probably fair. Now how did I come up with that number?

Calculations

Armed with Python and an array of web scraping tools, I embarked on a mission to collect data that would help me determine a fair value for our new car. I wrote a series of scripts to extract relevant information, such as price, age, and cost from various websites. This required a significant amount of Python work to convert the HTML data into a format that could be analyzed effectively.

Once I had amassed a good enough dataset (close to 200 cars), I began comparing different statistical techniques to find the most accurate pricing model. In this blog post, I’ll detail my journey through the world of logistic regression and compare it to more modern data science methods, revealing which technique ultimately led us to the fairest car price.

First, I did some basic web searching. According to Edmunds, the average price for a 2019 Volvo XC90 T6 Momentum with similar mileage is between $33,995 and $43,998 and my $35,998 falls within this range.

As for how the Momentum compares to other Volvo options and similar cars, there are a few things to consider. The Momentum is one of four trim levels available for the 2019 XC902. It comes with a number of standard features, including leather upholstery, a panoramic sunroof, and a 9-inch touchscreen infotainment system. Other trim levels offer additional features and options.

The 2019 Volvo XC90 comes in four trim levels: Momentum, R-Design, Inscription, and Excellence. The R-Design offers a sportier look and feel, while the Inscription adds more luxury features. The Excellence is the most luxurious and expensive option, with seating for four instead of seven. The Momentum is the most basic.

In terms of similar cars, some options to consider might include the Audi Q7 or the BMW X5. Both of these SUVs are similarly sized and priced to the XC90.

To get there, I had to do some web scraping, data cleaning, and built a basic logistic regression model, as well as other modern data science methods. To begin my data collection journey, I decided (in 2 seconds) to focus on three primary sources: Google’s search summary, Carvana, and Edmunds.

My first step was to search for Volvo XC90 on each of these websites. I then used the Google Chrome toolbar to inspect the webpage’s HTML structure and identify the <div> element containing the desired data. By clicking through the pages, I was able to copy the relevant HTML and put this in a text file, enclosed within <html> and <body> tags. This format made it easier for me to work with the BeautifulSoup Python library, which allowed me to extract the data I needed and convert it into CSV files.

Since the data from each source varied, I had to run several regular expressions on many fields to further refine the information I collected. This process ensured that the data was clean and consistent, making it suitable for my upcoming analysis.

Finally, I combined all the data from the three sources into a single CSV file. This master dataset provided a solid foundation for my pricing analysis and allowed me to compare various data science techniques in order to determine the most accurate and fair price for the 2019 Volvo XC90 T6 Momentum.

In the following sections, I’ll delve deeper into the data analysis process and discuss the different statistical methods I employed to make our car-buying decision.

First, data from carvana looked like this:

<div class="tk-pane full-width">
    <div class="inventory-type carvana-certified" data-qa="inventory-type">Carvana Certified
    </div>
    <div class="make-model" data-qa="make-model">
        <div class="year-make">2020 Volvo XC90</div>
    </div>
    <div class="trim-mileage" data-qa="trim-mileage"><span>T6 Momentum</span> • <span>36,614
            miles</span></div>
</div>
<div class="tk-pane middle-frame-pane">
    <div class="flex flex-col h-full justify-end" data-qa="pricing">
        <div data-qa="price" class="flex items-end font-bold mb-4 text-2xl">$44,990</div>
    </div>
</div>

In this code snippet, I used the BeautifulSoup library to extract relevant data from the saved HTML file, which contained information on Volvo XC90 listings. The script below searches for specific <div> elements containing the year, make, trim, mileage, and price details. It then cleans up the data by removing unnecessary whitespace and commas before storing it in a dictionary. Finally, the script compiles all the dictionaries into a list and exports the data to a CSV file for further analysis.

I could then repeat this process with Google to get a variety of local sources.

One challenge from the Google results, was that I had a lot of data in the images (they were base64 encoded) so wrote a bash script to clean up the tags using sed (pro tip: learn awk and sed)

When working with the Google search results, I had to take a slightly different approach compared to the strategies used for Carvana and Edmunds. Google results did not have a consistent HTML structure that could be easily parsed to extract the desired information. Instead, I focused on identifying patterns within the text format itself to retrieve the necessary details. By leveraging regular expressions, I was able to pinpoint and extract the specific pieces of information, such as the year, make, trim, mileage, and price, directly from the text. My scrape code is below.

Scraping Edmunds required both approaches of using formatting and structure.

All together, I got 174 records of used Volvo XC90s, I could easily get 10x this since the scripts exist and I could mine craigslist and other places. With the data I have, I can use R to explore the data:

# Load the readxl package
library(readxl)
library(scales)
library(scatterplot3d)

# Read the data from data.xlsx into a data frame
df <- read_excel("data.xlsx")

df$Price<-as.numeric(df$Price)/1000

# Select the columns you want to use
df <- df[, c("Title", "Desc", "Mileage", "Price", "Year", "Source")]

# Plot Year vs. Price with labeled axes and formatted y-axis
plot(df$Year, df$Price, xlab = "Year", ylab = "Price ($ '000)",
     yaxt = "n")  # Don't plot y-axis yet

# Add horizontal grid lines
grid()

# Format y-axis as currency
axis(side = 2, at = pretty(df$Price), labels = dollar(pretty(df$Price)))

abline(lm(Price ~ Year, data = df), col = "red")
Armed with this data, we can assign a logistic regression model.

This code snippet employs the scatterplot3d() function to show a 3D scatter plot that displays the relationship between three variables in the dataset. Additionally, the lm() function is utilized to fit a linear regression model, which helps to identify trends and patterns within the data. To enhance the plot and provide a clearer representation of the fitted model, the plane3d() function is used to add a plane that represents the linear regression model within the 3D scatter plot.

model <- lm(Price ~ Year + Mileage, data = df)

# Plot the data and model
s3d <- scatterplot3d(df$Year, df$Mileage, df$Price,
                     xlab = "Year", ylab = "Mileage", zlab = "Price",
                     color = "blue")
s3d$plane3d(model, draw_polygon = TRUE)

So, we can now predict the price of 2019 Volvo XC90 T6 Momentum with 47K miles, which is $40,636 or 11.4% higher than the CarMax asking price of $35,998.

# Create a new data frame with the values for the independent variables
new_data <- data.frame(Year = 2019, Mileage = 45000)

# Use the model to predict the price of a 2019 car with 45000 miles
predicted_price <- predict(model, new_data)

# Print the predicted price
print(predicted_price)

Other Methods

Ok, so now let’s use “data science”. Besides linear regression, there are several other techniques that I can use to take into account the multiple variables (year, mileage, price) in your dataset. Here are some popular techniques:

Decision Trees: A decision tree is a tree-like model that uses a flowchart-like structure to make decisions based on the input features. It is a popular method for both classification and regression problems, and it can handle both categorical and numerical data.

Random Forest: Random forest is an ensemble learning technique that combines multiple decision trees to make predictions. It can handle both regression and classification problems and can handle missing data and noisy data.

Support Vector Machines (SVM): SVM is a powerful machine learning algorithm that can be used for both classification and regression problems. It works by finding the best hyperplane that separates the data into different classes or groups based on the input features.

Neural Networks: Neural networks are a class of machine learning algorithms that are inspired by the structure and function of the human brain. They are powerful models that can handle both numerical and categorical data and can be used for both regression and classification problems.

Gradient Boosting: Gradient boosting is a technique that combines multiple weak models to create a stronger one. It works by iteratively adding weak models to a strong model, with each model focusing on the errors made by the previous model.

All of these techniques can take multiple variables into account, and each has its strengths and weaknesses. The choice of which technique to use will depend on the specific nature of your problem and your data. It is often a good idea to try several techniques and compare their performance to see which one works best for your data.

I’m going to use random forest and a decision tree model.

Random Forest

# Load the randomForest package
library(randomForest)

# "Title", "Desc", "Mileage", "Price", "Year", "Source"

# Split the data into training and testing sets
set.seed(123)  # For reproducibility
train_index <- sample(1:nrow(df), size = 0.7 * nrow(df))
train_data <- df[train_index, ]
test_data <- df[-train_index, ]

# Fit a random forest model
model <- randomForest(Price ~ Year + Mileage, data = train_data, ntree = 500)

# Predict the prices for the test data
predictions <- predict(model, test_data)

# Calculate the mean squared error of the predictions
mse <- mean((test_data$Price - predictions)^2)

# Print the mean squared error
cat("Mean Squared Error:", mse)

The output from the random forest model you provided indicates that the model has a mean squared error (MSE) of 17.14768 and a variance explained of 88.61%. A lower MSE value indicates a better fit of the model to the data, while a higher variance explained value indicates that the model can explain a larger portion of the variation in the target variable.

Overall, an MSE of 17.14768 is reasonably low and suggests that the model has a good fit to the training data. A variance explained of 88.61% suggests that the model is able to explain a large portion of the variation in the target variable, which is also a good sign.

However, the random forest method shows a predicted cost of $37,276.54.

I also tried cross-validation techniques to get a better understanding of the model’s overall performance (MSE 33.890). Changing to a new technique such as a decision tree model, turned MSE into 50.91. Logistic regression works just fine.

Adding the Trim

However, I was worried that I was comparing the Momentum to the higher trim options. So to get the trim, I tried the following prompt in Gpt4 to translate the text to one of the four trims.

don't tell me the steps, just do it and show me the results.
given this list add, a column (via csv) that categorizes each one into only five categories Momentum, R-Design, Inscription, Excellence, or Unknown

That worked perfectly and we can see that we have mostly Momentums.

ExcellenceInscriptionMomentumR-DesignUnknown
Count0688789
Percent0.00%39.53%50.58%4.65%5.23%
Frequency and Count of Cars

And this probably invalidates my analysis as Inscriptions (in blue) do have clearly higher prices:

Plot of Price By Year

We can see the average prices (in thousands). In 2019 Inscriptions cost less than Momentums? That is probably a small \(n\) problem since we only have 7 Inscriptions and 16 Momentum’s in our data set for 2019.

YearR-DesignInscriptionMomentum
2014$19.99NANA
2016$30.59$32.59$28.60
2017$32.79$32.97$31.22
2018$37.99$40.69$33.23
2019NA$36.79$39.09
2020NA$47.94$43.16
Average Prices by Trim (in thousand dollars)

So, if we restrict our data set smaller, what would the predicted price of the 2019 Momentum be? Just adding a filter and running our regression code above we have $38,666 which means we still have a good/reasonable price.

Quick Excursion

One last thing I’m interested in: does mileage or age matter more. Let’s build a new model.

# Create Age variable
df$Age <- 2023 - df$Year

# Fit a linear regression model
model <- lm(Price ~ Mileage + Age, data = df)

# Print the coefficients
summary(model)$coef
EstimateStd. Errort valuePr(>|t|)
(Intercept)61.349130.6908488.803722.28E-144
Mileage-0.000222.44E-05-8.838691.18E-15
Age-2.754590.27132-10.15253.15E-19
Impact of Different Variables

Based on the regression results, we can see that both Age and Mileage have a significant effect on Price, as their p-values are very small (<0.05). However, we can also see that Age has a larger absolute t-score (-10.15) than Mileage (-8.84), indicating that Age may have a slightly greater effect on Price than Mileage. Additionally, the estimates show that for every one-year increase in Age, the Price decreases by approximately 2.75 thousand dollars, while for every one-mile increase in Mileage, the Price decreases by approximately 0.0002 thousand dollars (or 20 cents). That is actually pretty interesting.

This isn’t that far off. According to the US government, a car depreciates by an average of $0.17 per mile driven. This is based on a five-year ownership period, during which time a car is expected to be driven approximately 12,000 miles per year, for a total of 60,000 miles.

In terms of depreciation per year, it can vary depending on factors such as make and model of the car, age, and condition. However, a general rule of thumb is that a car can lose anywhere from 15% to 25% of its value in the first year, and then between 5% and 15% per year after that. So on average, a car might depreciate by about 10% per year.

Code

While initially in the original blog post, I moved all the code to the end.

Carvana Scrape Code

Cleaner Code

Google Scrape Code

Edumund’s Scrape Code

By 6 Comments

The (necessary) Luxury of Honesty and Vulnerability

Professionally, my goal was “work hard until something good happens” for many years. I had the luxury of the world’s best string of bosses. I had no idea how lucky I was to be learning from giants who poured wisdom into me, protected me and told me hard truths that shaped my character.

At DARPA I found a new luxury: intense, intentional and open honesty. I learned that as a PM, I could say “I don’t understand” 10x and not be seen as stupid. I could walk into any room as an open book and dig in to my questions. It was glorious and it actually made me smart on several topics. Honesty became my learning superpower.

This was such a contrast to my early years at MIT. I didn’t feel like I belonged in the world of the world’s smartest people. I seemed to struggle in ways that others didn’t. Classes were too hard. In every conversation or class, when you stop understanding, it just gets harder and harder to interject and reveal where your misunderstanding started.

I needed offset strategy to succeed. I took notes in class without understanding things and found ways to learn outside of class. This took the form of finding friends, online explanations, good books and working extra problems. However, I had to act like a spy in 80s Berlin: developing sources to whom I could be truly honest and reveal the depth of my misunderstanding. I found those folks and they made all the difference. It worked, but it was really inefficient.

Real Conversation (AI generated art)

If only I had the ability to said “I don’t understand” in every context; to speak with one voice in all contexts. I would have learned, and contributed, so much more.

All this made me think about the bigger picture to all this: honesty and vulnerability are not just professional luxuries, they are important moral and ethical values. They are essential traits that can help us to build meaningful relationships, grow as individuals, and ultimately live a good life.

Honesty is a powerful tool that helps us to build trust, not just in the workplace, but also in our personal lives. When we are honest with ourselves and others, we are able to form stronger bonds and build deeper connections. This, in turn, allows us to better understand the perspectives and motivations of those around us. This, in turn, leads to more productive and meaningful interactions, whether in the workplace or in our personal relationships.

Vulnerability, on the other hand, allows us to be open and authentic. It’s the only way to build trust. It helps us to be more approachable and genuine, and it creates an environment of trust. When we are vulnerable, we are able to admit our weaknesses and share our struggles, which in turn helps us to connect with others and gain support. This, in turn, helps us to grow as individuals and lead more fulfilling lives.

Furthermore, honesty and vulnerability also help us to build resilience. When we are honest with ourselves and others, we are able to confront difficult situations head-on and find solutions. This, in turn, helps us to become more resilient and better equipped to handle challenges and setbacks.

I’m writing this post because I had the chance to regress recently after I left an aerospace engineering conference for a group of cyber researchers. I felt a little out of my element as I switched contexts. One expert in particular, wanted to make a strong impression as we started talking. The bar was loud. We had a mediocre conversation where I didn’t follow half of what they were saying. They used the opportunity to just throw lots of words at me. We both started looking for exit strategies.

We did talk about some really technical stuff (the limits of TEEs, quantum computing and cyber security, what an efficient market for exploits would look like, etc) but I really didn’t learn or contribute much because I didn’t stop the conversation when I didn’t understand. I wasn’t vulnerable and I didn’t push back in a way that would generate a conversation to remember. That would be a conversation that changed us, not just the opportunity to participate in a professional dance.

However, as I dove back into the AIAA conference, I used this disappointment to dive back into discussions. I was intentional to dive into the discomfort of “I don’t get that, Can you say that again?”, and “I’m sorry, let’s get to somewhere more quiet, what you are saying is important”. The back side of these conversations led to incredible fun, relationship building and some real learning.

If you find yourself confused. Say it and say it early. If you forget someone’s name. Say that too. It’s always better to chose honesty and vulnerability over putting on a front that both you and your counterparty will see through. It makes both of you smarter, and opens the door to real relationships, ultimately paving the way to get big things done.

By 2 Comments

The Problem with Integrity

I think about Winston Churchill a lot. A successful writer, correspondent, painter, politician and businessman, he is known for his bold principled stand against Hitler. However, zoom in and a more complex narrative emerges.

After Neville Chamberlain negotiated the Munich Agreement in 1938, which sought to appease Nazi Germany by allowing them to take control of the Sudetenland region of Czechoslovakia, Winston Churchill famously said, “You were given the choice between war and dishonor. You chose dishonor, and you will have war.”

They look wise now, but his comments were unwelcome. Many people in Britain and other countries believed that the agreement would prevent war and that Churchill’s warnings were alarmist. He was even removed from his position as First Lord of the Admiralty in 1939 and was not given any major government positions until 1940 when he became Prime Minister as the war had already started.

He pushed through years of criticism and personally rallied a nation with his bold, counter-cultural, stand that led the allied powers to victory. If we stopped there, we have a tight schoolbook story of leader who did the right thing and was vindicated and honored.

Unfortunately for Sir Winston, shortly after the war, his government was defeated in the general election of July 1945. The British people were tired after six years of war and preferred the Labour Party’s program of social reforms. He found himself doubted, vindicated and then cast away.

Everyone and every organization wants integrity, but actually having it, keeping it and acting on it is a challenge. Nothing is simple when you find yourself at a different place than those around you. Holding a counter-cultural view means going against the dominant beliefs and values of the system you are working hard to support.

Yes, integrity can be dangerous. The word integrity doesn’t have meaning and power when everyone agrees. When integrity forces you to be different, it’s dangerous for you and others. You risk losing your friends, your job and your sleep.

Counter-cultural integrity threatens the status quo and big organizations need broad buy in to the status quo to get things done. The right thing may be good in the long run, but it can be disruptive now. Personal integrity requires standards that may not change with culture or a corporation’s strategy for risk mitigation. Anyone who holds to an independent set of standards will eventually find themselves a problem in a rigid and ever changing system.

Standing Alone

Worst of all, the road towards acting on integrity brings you into contact with the dark side. There is a temptation to be right and feel superior to the system you are in. You need the inspiration of the examples of Martin Luther King, Gandhi, Winston Churchill or Abraham Lincoln, but you can’t conflate your situation and your strength with theirs. You have to remain humble while not losing your convictions. You have to be continually open to being wrong. You have to push yourself to be flexible. You have to see and respect the other side.

The other temptation is to give in to self-pity and think that the world is against you. The professional world can be a dark, amoral, and heartless place. That is reality–true everywhere. No one is a unique and constant victim of unjustified persecution or mistreatment. There is no conspiracy, just people trying to make it all work and not lose their status, jobs or relationships.

The stress of finding yourself alone, against the crowd, is real. The only way to survive it is to have a trusted network of friends– not friends who just listen, affirm and agree, but friends who hold you accountable and clarify your thoughts. A good friend turns a dark and lonely road into conviction that can confirm your individuality and authenticity. Most important, sharing your story can lead to positive change. There is no tighter community than like-minded individuals who support, refine, and validate each other’s perspectives.

I’ve taken several counter-cultural stands in my life with a wide range of outcomes. All were painful. Every stand I’ve taken has resulted in some degree of lost friendships and increased pain. Some day I may be proud of these actions, but all of them resulted in a lost opportunity where I had to get off the boat and watch it sail on. If there is any pride in that, it’s drowned out by the sadness of it all.

I’ve learned that I’m not particularly brave or strong. However, I’m blessed with great community, a love of history and a deep care for others. Most of all, I feel convicted to protect others who trust and depend on me doing the right thing.

But this isn’t the movies. As I’ve post-processed tough stands, when I did the most good, I felt the worst inside. Taking a different road leaves you feeling alone and scared, self-conscious and unsure. Integrity put into practice in these scenarios makes part of you wish you didn’t have it. It’s not fun and it doesn’t feel courageous. When I’ve done the most right, the overwhelming emotion is sadness and insecurity.

Here I’m convicted and encouraged by two father son chats. The first is Polonius, who is giving advice in Hamlet to his son Laertes as he prepares to leave for France. Polonius urges his son to be honest with himself, to be true to his own values and beliefs, and to avoid the temptations and pitfalls of the world. He advises Laertes to “neither a borrower nor a lender be” and to “this above all: to thine own self be true, And it must follow, as the night the day, Thou canst not then be false to any man.” If Laertes is true to himself, he will not be able to deceive others; he will be true to himself and avoid compromise for the sake of others or for the sake of fitting in.

The second is from Cicero. He wrote to his son, Marcus, that an unjust act will never profit him.

Stop. Just let the gravity of this settle. This may be the most counter-cultural message ever written. A thief can at least enjoy his spoils a little bit, right? A boss who complies with pressure to promote a lesser qualified person at the expense of her/his better judgment may get a promotion that helps their career, right?

No, Cicero says it won’t help them. He believed in an absolute view of morality and integrity. He wrote that an unjust act is not only morally wrong, but it will also ultimately harm the person who commits it and the society that allows it. He believed that living a virtuous life and making the right choices, even if difficult, is the only true path to true happiness and fulfillment. In his letter Ad Familiares Cicero wrote: “There is nothing more virtuous, nothing more in accord with duty, than to take one’s stand for what is right.” He also wrote in this same letter:

“What is morally right is not always politically expedient; and what is politically expedient is not always morally right.”

Cicero believed that true success and happiness come from living a virtuous life, and that this requires standing up for what is right, even when it may be difficult or unpopular. Even when it looks like an easy compromise, it will never profit you. Never. Even if you are lucky and some good results from your actions, you have harmed your soul.

The wisdom of history, a deep personal faith and a tight network of friends all give me confidence to do the right thing, no matter the cost. This is true even with full knowledge of just how dangerous, costly and lonely the road of counter-cultural integrity is.

I’m jealous of those who can compromise, make things work and steer situations to a middle ground, but I have trouble here. This isn’t about being brave or honorable as much as I see no other option. Without deep reflection on, and a commitment to hold to standards, I wouldn’t have individuality or authenticity.

Just as breathing is a necessary function for survival, holding to one’s standards and integrity is necessary for maintaining a sense of self and personal agency. Without it, one risks becoming a mere follower or conforming to the beliefs and values of others, losing their unique perspective and individuality. Holding to one’s standards and integrity can be challenging–it’s been the hardest thing I’ve had to do–but it is a fundamental aspect of being true to oneself.

It’s fitting to have just passed Martin Luther King day. MLK wrote:

“The ultimate measure of a man is not where he stands in moments of comfort and convenience, but where he stands at times of challenge and controversy.”

Character is revealed not in moments of ease, but in times of adversity, and when difficult choices and decisions are made. This quote reminds me that true strength and honor come from standing up for what is right, even when it is hard and uncomfortable, and that we should strive to be true to our principles and values, even in the face of opposition. All power is moral power and all strength requires the willingness to walk the hard road, even when it isn’t where you want to go.

By 6 Comments

Pairing Philosophers in 2023

Søren Kierkegaard and Friedrich Nietzsche are valued teachers and they generated many of the ideas bumping into each other in the culture today.

Søren Kierkegaard was a Danish philosopher, theologian, and social critic who is known for his contributions to the field of existentialism. He believed that the individual’s relationship to God was the most important aspect of human life, and that the search for meaning and purpose was an essential part of the human experience. Kierkegaard argued that the traditional institutions of society, such as the church and the state, were inadequate for helping individuals to find meaning and fulfillment in life, and he called for a return to a more personal and inward-looking approach to faith and spirituality.

Friedrich Nietzsche was a German philosopher who is known for his critiques of traditional values and his celebration of the individual. He argued that traditional morality, with its emphasis on self-denial and restraint, was destructive to the human spirit and hindered the development of truly great individuals. Nietzsche believed that people should embrace their own desires and passions, and strive to become what he called “overmen,” or individuals who had fully realized their own potential and lived life to the fullest.

These two philosophers define authentic to me. Neither of them would have been comfortable in my Church or in my society, but I can’t escape how much I would love to host a cup of coffee with these two thinkers.

Two Gents talking

Authenticity is really hard because we can’t escape our obsession with status no matter how hard we try. It’s better to not think about status too much because focusing on it can compromise authenticity. Kierkegaard and Nietzsche are good to match up because they both were independent thinkers who didn’t care about others’ opinions, yet were deeply wounded by the world’s rejection.

One stark difference: Kierkegaard embraced faith, while Nietzsche rejected the idea of a greater meaning in life.

Both Kierkegaard and Nietzsche were obsessed with finding the truth, wherever that quest went, and were both deeply troubled by what they found and by the process of finding it.

Desiring truth not consistency is probably the hardest intellectual challenge and it can be a lonely and troubling journey. Since I know that I’m not wiser than the weight of history or the leaders of my faith community, I tend to side on tradition when I don’t understand things. Yet I strive to overcome the temptation to prioritize consistency in my beliefs over seeking new information that may challenge them. Consistency is a good default, but it can prevent us from fully understanding the world around us and making informed decisions. An open and certain mind is a rare thing and both do and don’t have one.

Nietzsche and Kierkegaard inspire me on this point. They were concerned with the nature of human existence and the meaning of life, and they both sought to fundamentally re-think the traditional Western philosophical tradition. This makes them good foils to consider what they might think about three significant developments in the modern world: the rise of populism, the decrease in organized religion, and the rise of artificial intelligence.

The Rise of Populism

Nietzsche and Kierkegaard were both critical of the values of the Enlightenment and the modern world, and they both argued that the modern world had lost touch with the deeper meanings and values of life. In this sense, they might both view the rise of populism with a certain degree of skepticism. Populism is often associated with a rejection of traditional political and social elites and a focus on the needs and concerns of ordinary people. Both Nietzsche and Kierkegaard would likely argue that this focus on the needs and desires of the masses can lead to a superficial and shallow understanding of the world, and they would both caution against a reliance on the “tyranny of the majority” as a guiding principle for society.

At the same time, however, both Nietzsche and Kierkegaard placed a strong emphasis on the importance of individuality and the need for individuals to be true to themselves and their own values. In this sense, they might both see the rise of populism as an opportunity for individuals to reclaim their own autonomy and agency, and to resist the homogenizing forces of modernity.

Nietzsche the populist?

The Decrease in Organized Religion

Both Nietzsche and Kierkegaard were deeply concerned with the role of religion in human life, and they both grappled with the question of how individuals can find meaning and purpose in the absence of traditional religious beliefs. Nietzsche was highly critical of traditional Christianity and other monotheistic religions, and he is known for his arguments against the existence of God and his rejection of traditional moral values. He argued that individuals should create their own values and meaning rather than relying on traditional sources of authority.

Kierkegaard, on the other hand, was deeply religious and saw faith as a central aspect of human life. He argued that belief in God was not a matter of reason, but rather a matter of the heart, and he developed the concept of the “leap of faith” to describe the idea that individuals must make a leap of faith in order to truly believe in something.

In the modern world, we are seeing a decline in organized religion and a shift away from traditional religious beliefs. Nietzsche might view this trend as a positive development, as he rejected traditional religious beliefs and saw them as a source of oppression and illusion. Kierkegaard, on the other hand, might view the decline in organized religion with concern, as he saw faith as a central aspect of human life and argued that individuals need a sense of transcendence and meaning beyond the material world.

The Rise of Artificial Intelligence

In the 21st century, we are seeing a rapid development of artificial intelligence and the increasing integration of technology into all aspects of our lives. Nietzsche and Kierkegaard would likely have very different perspectives on the rise of artificial intelligence.

Kierkegaard and AI (picture generated by Dall-E 2)

Nietzsche might view the development of artificial intelligence with a certain degree of skepticism, as he placed a strong emphasis on the value of human creativity and individuality. He might argue that the increasing reliance on artificial intelligence could lead to a dehumanization of society and a loss of the unique qualities that make humans special. But! Nietzsche was interested in the potential of technology to enhance human life and enable individuals to overcome their limitations, and he might have seen the development of artificial intelligence as a potential way to achieve this.

Kierkegaard, on the other hand, might have been more skeptical of the role of technology in society and could have seen it as a threat to human dignity and autonomy. He might have argued that the increasing reliance on technology was a symptom of a deeper spiritual malaise in modern society and could lead to a loss of meaning and purpose in life. (Good grief, how much I love Kierkegaard.)

Who Else?

All this had me thinking, what other pair might be an interesting lens to view society? And I think five other pairings would be super fun to meet up with:

Jean-Jacques Rousseau and John Locke

Best friends?

These two philosophers had very different views on the nature of the state and the role of the individual in society. Rousseau argued for the primacy of the common good and the need for the state to exert control over the lives of individuals, while Locke argued for the importance of individual rights and the need for limited government. Comparing these two philosophers could provide a useful framework for thinking about issues related to the balance between individual freedom and the role of the state in modern society.

Karl Marx and Adam Smith

These two philosophers had very different views on the nature of economic systems and the role of the state in regulating them. Marx argued for the abolition of private property and the need for a socialist economic system, while Smith argued for the importance of free markets and the role of self-interest in driving economic growth. Comparing these two philosophers could provide a useful framework for thinking about issues related to economic policy and the role of the state in the economy.

Michel Foucault and John Rawls

Focualt and Rawls on the March

These two philosophers had very different views on the nature of justice and the foundations of moral and political theory. They pretty much define the camps in the American left today. Foucault argued that power relations are a fundamental aspect of society (#BLM, Woke!) and that justice is not an objective concept, while Rawls argued for the importance of a social contract based on fairness and equality (think Clinton/Blair). Comparing these two philosophers could provide a useful framework for thinking about issues related to social justice and the foundations of political theory.

Thomas Hobbes and John Locke

These two philosophers had very different views on the nature of the state and the role of the individual in society. Hobbes argued for the need for a strong, centralized state in order to maintain order and prevent anarchy, while Locke argued for the importance of individual rights and the need for limited government. Comparing these two philosophers could provide a useful framework for thinking about issues related to the balance between individual freedom and the role of the state in modern society.

Finally, Kant and Hegel!

Immanuel Kant, an 18th-century philosopher has had the same level of influence as Kierkegaard on me. I consider myself a Kantian. I love the idea that the moral worth of an action is determined by the motivation behind it, rather than the consequences that it produces. An action is considered morally right if it is done out of a sense of duty or respect for moral law, rather than as a means to achieve some other end or goal. Also, the moral law is universal and applies to all people, regardless of their individual circumstances or desires.

Kantian ethicists argue that we have a moral duty to treat others with respect and to always act in accordance with moral principles, even when it is difficult or inconvenient to do so. They believe that this is the only way to create a just and moral society, and that failure to live up to these standards can have serious consequences for individuals and for society as a whole.

Georg Wilhelm Friedrich Hegel, a 19th-century philosopher, would be a great contrast to Kant. Some specific areas of disagreement between the two philosophers include:

The nature of history and the role of reason: Kant argued that human reason was a universal and timeless principle, while Hegel argued that reason was an inherent part of the historical process and that the world was shaped by the interplay of opposing forces. Hegel used organic metaphors and language to describe the way in which history unfolds and develops over time. For example, he referred to the process of historical development as a “world-historical process” and described the different periods of history as “stages” in the development of human consciousness.

The nature of the state and the role of the individual: Kant argued for the importance of individual rights and the need for limited government, while Hegel argued for the primacy of the state and the idea that individuals should be subservient to the state.

The nature of knowledge and the foundations of moral and political theory: Kant argued for the importance of reason and the a priori principles that structure our experience, while Hegel argued that knowledge was a product of the historical process and that the ultimate goal of human development was the realization of the “Absolute.”

How fun it would be to pair all the philosophers mentioned above about up. They probably would find my company pretty boring, but it would be fun to tell them about the 1900s and answer their questions about what we believe today. Ah, well, I get to read their books, write this stuff up and, even better, talk to you about this stuff.

By 3 Comments

Review: From Strength to Strength

Devote the back half of your life to serving others with your wisdom. Get old sharing the things you believe are most important. Excellence is always its own reward, and this is how you can be most excellent as you age.

Arthur C. Brooks

How do you ensure you don’t get the most out of aging well: cultivate gratitude, practice compassion, build relationships, and create beauty. I love the simplicity and truth of that.

In “From Strength to Strength: Finding Success, Happiness, and Deep Purpose in the Second Half of Life,” Arthur Brooks addresses a common problem faced by many successful individuals (who he calls “strivers”) as they enter the second half of their lives.

Yes, but I’m 46, should I care about this? Well, yes, according to most research I’m past my professional prime. In the world of tech/science the most common age for producing a magnum opus is the late 30s. The likelihood of a major discovery increases steadily through one’s 20s and 30s and then declines through one’s 40s, 50s, and 60s. Research shows that the likelihood of producing a major innovation at age 70 is approximately what it was at age 20—almost nonexistent.

My brand is innovation and innovators typically have an abundance of fluid intelligence. It is highest relatively early in adulthood and diminishes starting in one’s 30s and 40s. This is why tech entrepreneurs, for instance, do so well so early, and why older people have a much harder time innovating.

Crystallized intelligence, in contrast, is the ability to use knowledge gained in the past. Think of it as possessing a vast library and understanding how to use it. It is the essence of wisdom. Because crystallized intelligence relies on an accumulating stock of knowledge, it tends to increase through one’s 40s, and does not diminish until very late in life.

Careers that rely primarily on fluid intelligence tend to peak early, while those that use more crystallized intelligence peak later. For example, Dean Keith Simonton has found that poets—highly fluid in their creativity—tend to have produced half their lifetime creative output by age 40 or so. Historians—who rely on a crystallized stock of knowledge—don’t reach this milestone until about 60.

No matter what mix of intelligence your field requires, you can always endeavor to weight your career away from innovation and toward the strengths that persist, or even increase, later in life.

This book underscores the tragedy of “peaking early” and failing to grow and adjust to life’s stages. But this is the lot of the striver. There will be a point where worldly accomplishment diminishes or even stops. What happens then when the most difficult task is the daily struggle with a sense of failure and despondency.

To address this issue, Brooks suggests that it is necessary for individuals to find a deep purpose in their second half of life. This can be achieved through the cultivation of gratitude, the practice of compassion, the building of relationships, and the creation of beauty. By focusing on these actions, individuals can find a sense of fulfillment and purpose that will carry them through the second half of life and enable them to finish well.

One of the most compelling aspects of Brooks’ book is his emphasis on the importance of gratitude. He argues that cultivating gratitude allows individuals to find joy and purpose in their lives, even in the midst of challenges and setbacks. By focusing on the things we are thankful for, we can find meaning and fulfillment that is not dependent on external circumstances or accomplishments.

But gratitude is empty without the practice of compassion. By seeking to understand and care for others, we can find a sense of purpose and meaning that goes beyond our own individual accomplishments. Brooks makes it clear that this can be especially meaningful in the second half of life, as it allows us to contribute to the greater good and make a positive impact on the world around us.

In addition to cultivating gratitude and practicing compassion, Brooks also emphasizes the importance of building relationships. He argues that strong relationships with others can provide us with a sense of belonging and purpose that is essential for a fulfilling life. By investing in these relationships and seeking to connect with others, we can find meaning and joy in the second half of our lives.

Finally, Brooks suggests that creating beauty is another key way in which individuals can find purpose and meaning in the second half of life. Whether through art, music, or other creative endeavors, the act of creating beauty or building beautiful things allows us to connect with something greater than ourselves and find a sense of fulfillment and joy.

Winston Churchill Painting as a Pastime

On a personal note, I have to contrast Brooks message with the story of the apostle Paul. Writing from prison, he emphasized the importance of pressing on towards the goal and finishing his course. However, this is not a problem unique to Paul, as many people struggle with a sense of failure and despondency in the second half of life. What would Paul think of the danger of peaking in one’s career between the ages of 30 and 50, and the potential for a sense of failure and despondency in the latter half of life.

Brooks suggests that in order to avoid this sense of failure, it is necessary for individuals to find a deep purpose in their second half of life. Paul would say it is also important for individuals to recognize that their identity should not be solely based on their accomplishments or successes. Instead, our identity should be rooted in our relationship with God and the gospel of Jesus Christ. This allows us to find a sense of purpose and meaning that is not dependent on our external circumstances or accomplishments.

I also found wisdom from a completely different angle: the varnasrama system of Hinduism which splits up our lives into four distinct stages, each happening every 20-25 years—with vanaprastha (वनप्रस्थ) being the all-important third stage.

After our youthful first stage (“figure out who I am”), in our early-20s we move to a second stage (“prove yourself”) that lasts until we are about 50 years of age. In the second stage, we are driven by the pursuit of pleasure, sex, money, and accomplishments. But by the third stage (“give back”), at around age 50, we begin to pull back from a focus on professional and social advancement. Instead, we become more interested in spirituality and faith.

The important transition is from stage 2 to 3, which typically occurs around age 50, can be difficult for many people, especially in Western societies, where there is often a strong emphasis on professional and social advancement. According to Arthur C. Brooks, this transition is important because it can lead to increased happiness and contentment, as well as better physical health. Additionally, as people age, they tend to become wiser, with greater ability to combine and express complex ideas, interpret the ideas of others, and use the knowledge they have gained throughout their lives. This “crystallized intelligence” can be put to good use by sharing wisdom with others and becoming more devoted to spiritual growth. It is important to let go of the things that once defined us in the eyes of the world and embrace this new stage of life in order to truly thrive in the latter half of adulthood. In summary, the older we get, the better we get at:

  • Combining and using complex ideas and expressing them to others
  • Interpreting the ideas others have (even if we didn’t create them ourselves)
  • Using the knowledge we have gained during our lives

As we approach the finish line of our journey, it is essential that we strive to finish well. This involves finding a deep purpose in the second half of life, cultivating gratitude, practicing compassion, building relationships, and creating beauty. By doing so, we can navigate the challenges and winds of life with a focus on the ultimate goal of glorifying God and finishing our course with joy and purpose.

“From Strength to Strength” is a thought-provoking and insightful book that offers valuable insights and strategies for finding success, happiness, and deep purpose in the second half of life. Whether you are just entering this phase of your journey or are well into the second half, this book offers valuable guidance and encouragement for navigating the challenges and winds of life with a focus on the ultimate goal of finishing well.

By 2 Comments

Shapeoko Troubles

I recently encountered an issue when generating a grid of holes for workbench. I had recently planed down an old workbench from our house in New Jersey. I was planning on 20 mm holes spaced in a grid with 96mm spacing to match the festool MFT table. I’m hoping to use the available array of cool attachments and eventually add the aluminum profile to the side. For example, an MFT table can be used as a bench with a variety of different attachments, such as clamping elements and stops.

Unfortunately, the holes didn’t create a proper grid and the spacing was off. I used a CNC machine to cut the holes, but I noticed that they were off. Just looking at it showed that each row had fairly consistent spacing, but the start of the rows varied in the X direction.

To accomplish a 96 mm grid, the g-code was programmed to start at the bottom of the workpiece and move across in a row. This process was then supposed to be repeated until the entire grid was cut. However, as I mentioned earlier, I encountered some issues with the spacing of the holes and had to troubleshoot the problem.

One theory I became aware of online (thanks gdon_2003, Julien, LiamN, SLCJedi and WillAdams) is that set screws are a part of Shapeoko drive system and a loose set screw can cause this type of behavior. That’s because the set screws transfer motion from the motor shafts to the pulleys, which rotate against the belts. They are intended to be pushed tightly against the flat spot on the motor shaft, causing the pulley to turn with the motor. If the set screw becomes loose, the pulley may turn independently of the motor before snapping into place, which can cause issues with the motion of the machine. This may show up as flat spots on circles or other imperfections in projects. You can see why a loose set screw is bad as captured in the screenshot below from this youtube video by See-N-C.

Screenshot that describes how set screws work

Doing some Math

In order to do some analysis on what happened, I needed to register the image and get the location of the points.

The drawpoint command in MATLAB is a function that allows you to draw a single point on an image or plot. You can specify the coordinates of the point on an image using the mouse to record position. Using drawpoint, I recorded the coordinates of the center point of each circle and put this information in a struct. I then wrote code to turn the struct into two arrays: one for the x coordinates and one for the y coordinates. This allowed me to easily analyze the variance in the x coordinates for each column and the variance in the y coordinates for each row.

I was also able to use the drawpoint command in MATLAB to mark points on the ruler captured in the image. This allowed me to easily record the coordinates of the points and then do the math and convert the distances between the points from pixels to millimeters.

I used the pdist2 function in Matlab to calculate the Euclidean distances between my two sampled points and then converted the distances to the desired units through a conversion factor of 610 mm/523.4087 px.

Since the job started at the upper right and progressed down and across, we could look at the variance throughout the job. The variance in the x direction seemed to increase in the last four columns:

x1.2610.36030.58540.76563.24253.963
Variance of X in each Column (in mm)

The variance in the y direction was much bigger across the rows and also increased as the job progressed. I used this MATLAB to generate this: makemm(var(y(:,:),0,2))

y24.753724.573630.623235.246736.3425
Variance of Y in each row (in mm)

To generate the ideal points based on a 96 mm grid, I wrote a function that takes in two inputs, iX and iY, which represent the starting x and y coordinates, respectively. The function first initializes two matrices, X and Y, to store the calculated x and y coordinates for each point. Then, it defines a conversion factor, cf, which is used to convert the units from millimeters to pixels.

Next, the function uses a nested for loop to iterate through each column and row of the matrices. For each iteration, the function calculates the x and y coordinates of the current point by adding the starting coordinates (iX and iY) to the appropriate offsets, which are determined by the loop variables and the conversion factor. The calculated x and y coordinates are then stored in the corresponding elements of the X and Y matrices.

To calculate the root mean squared (RMS) error, I subtracted the actual coordinates from the ideal coordinates to find the error in both the x and y directions and then took the square root of the mean of the squared errors in both directions.

123456
103.64134.867812.579612.847612.0532
21.29864.71474.923613.636513.884112.3934
31.6041.47845.26213.272213.526513.8716
42.61142.536214.100214.219514.898816.2787
56.15646.040717.367317.355818.812919.6045
RMS errors for each hole

You can see the error increasing as the job progresses, but the major error starts in column 4-6, supported by a big jump in column 3, row 4, which supports the idea that the screw isn’t seating well resulting in slippage.

Overall, doing this math allowed me to see what was really going on. By adjusting for the variance at 4,3:

Pattern in Holes
By 0 Comments

Otis on Leadership

In Shawshank redemption Otis “Red” goes before the parole board with promises to be better. He tries to play by the rules and repeatedly gets denied. Finally, he has had enough and lets them have it. He is done with their game, they can keep him there forever.  He speaks with the tired wisdom of an old man desperate to speak sense to his younger self, bereft of the hope that a future is possible. He doesn’t care, and now they approve his release.

As amusing as this story is, I’m convinced it speaks to a deeper truth. The road to excellence in leadership doesn’t end with learning what to care about, but it definitely starts with a decision to follow your convictions over learning to do what others in power want.

When I was at DARPA, a PM’s goal was to get to the tech council and get the funding to make our idea happen. In several startups, I’ve marched a similar path to get funding. Each time, I had to navigate a maze of intermediaries, each wanting to hear specific things before I could get to the decision maker. The temptation was always present to win their approval by making my main focus to learn and deliver what they wanted to hear at the expense of my core vision. Keeping this temptation in check always helped in the end and I started to really know that conviction matters more than compliance.

Ok, that’s DARPA and startups. But most of my time has been in government and big companies. Big companies don’t just have intermediaries, they have systems, processes and whole organizations that test our compliance versus conviction trade. Conversations in every company start to change as everyone pays attention to where the winds are going. Conviction is still there, but it becomes bounded by what the boss or bosses emphasize. This is a natural consequence of what leadership means. We set the emphasis of our team and that includes culture and values. Shouldn’t we want our workforce to adopt what we are projecting?

Not at the expense of core individual convictions. To get a flavor of how this can lead us off the high road, a senior leader at a former company made (the fine topic of) female empowerment a core platform of his leadership and bombarded LinkedIn with his progress in this area at the expense of any other vision or message. I took pitches every day from vendors and vendor pitches started to include slides at the beginning that highlighted their commitment to female empowerment. This is how you end up with technology pitches that didn’t emphasize technology. While it was great that the boss was speaking his conviction, it was sad to watch the ecosystem around the company pander and step outside their prime value.

Tech vendor’s sometimes do this even when they focus on technology. When a topic becomes hot, say blockchain or machine learning, you start to hear lots of references to high concept phrases. Do you do X? Oh, yes we know X very well. Do you integrate with Y? oh yes. In my research work I get to bump into real thought leaders and it’s a completely different story. They question my question: “why would you do X?”. They often disagree with what I’m saying and point out my misunderstanding. I like these conversations. I like these people. They have different incentives, but they get my call back.

The best conversations are not banal agreements. Listen to a couple on their first date as they try to please each other. It’s funny watching them try and agree. It’s also a boring conversation.

Then watch the verbal tennis match of two long time friends disagreeing. “No, that’s not the best, this is . . . You’re crazy, this is . . .” In such disagreements there is life and learning and love. They deeply care about each other, but they aren’t focused on pleasing the other person. They have transitioned to something greater.

There just isn’t room for multiple things at the top of your priorities. If you focus on playing the game and optimizing the system to your advantage, you not only hurt your chances of success, but you risk any gains you make leaving you empty and not really adding up to any real change. On the other hand, if you really bottom out your convictions and decide what you really want to do, you have to take on the system. The system will fight you and may beat you down. The collective goals of that system will differ from yours and people will defend their equities in ways that give you headaches, sleepless nights and may even break you.

However, some people, and in the right culture, the right people, will watch. They will know that you care more about the impact of your principles than personal gain. They may not agree with you, but they will respect you. And when you succeed your success will have meaning and will take root. It may grow as others are inspired by your conviction and the truth of your principles.

One of my heroes, John Boyd, said you have to make a fundamental decision to the question: do you want to do something or do you want to be somebody? The magic of this is you really can have both, but you have to pick the right door. Both doors will lead to frustration. The choice to be somebody will make you an expert in what people want to hear and where the system is going. It will feed your ego with each win and teach you how to navigate a system with the right partnerships, the right things to do and the right things to believe. Each year you will risk becoming less and less of the person you once were, even if the organization rewards you.

The choice to do something driven by your convictions alone may pit you against the world. John Boyd never became a general. He never developed executive presence and took on the assignments that would get his name at the top of the promotion lists. He lived in a small apartment and his Facebook and LinkedIn page would have been boring and unnoticed. (Hint: I’m pretty sure he wouldn’t have one.) He did change the art of war and gave us our F-16, A-10, and built the science of aerial combat. He made a real impact on national security, but his lasting impact was on his acolytes who went on to change the Air Force and the DoD. His impact lives on.

The choice can’t be more clear. Integrity, conviction and meaning over advancement and ego. It’s Cincinnatus returning to his farm. It’s  General Marshall telling president Roosevelt that general Eisenhower was the better man to lead D-day. It’s George Washington refusing to be crowned King. It’s Socrates taking the cup of hemlock. It’s Martin Luther walking down the streets of Wittenberg with a piece of paper in his hand that will change the world.

The greatest parable is Solomon’s test for the two mothers who both claimed parentage of the same child: who cares more about the baby? When you truly care, you can’t lose. Without Solomon’s wisdom, the true mother would have suffered greatly. She wouldn’t have her baby to touch, to teach and to watch grow. But she could take great joy in the child’s life. There would be a chance for the truth to break free and make all things right.

Even if the other mother “won”, she would live a lie. It would be a parenthood devoid of meaning, filled with guilt and deception. Not living the lie is what bringing your full self means. It means being fully aware of the trades you will make, who you are and what you stand for.

This is all simple when described here, who wouldn’t choose the greater good when it’s described this way? But this gets complicated in Monday’s staff meeting or in your strategy review. Who will you be when you aren’t focused on the questions above? Every day you make decisions that together comprise a life. If you come to forks in the road and you haven’t been intentional about your principles and practiced applying them, then your path will be filled with extra obstacles to find meaning and you risk ending in a tale of sound and fury, in the end signifying nothing. That’s a heavy price to pay for the trophies you get from a happy system.

By One Comment