McAllen, Texas is consistently the fattest city in America, and they are not happy about it. They can’t figure out why, as they have plenty of parks and organize 5K runs nearly every weekend.

What they don’t realize is that for non-athletes, exercise has very little to do with bodyweight.
The obesity epidemic is caused almost entirely by the consumption of processed carbohydrates, which the U.S. government and the medical establishment still encourages despite many decades of evidence to the contrary.

My city of Denver is the healthiest in mainland America, but walking around town, the obesity epidemic is still evident.

What’s interesting is the comparative rate of obesity in different grocery stores. Whole Foods shoppers have 1/10th the rate of obesity than mainstream grocery store shoppers. (According to researchers at the University of Washington.)

Yes, Whole Foods is about 15% more expensive, but what are the shoppers buying? A 15% markup on food for a 90% decrease in obesity rates would be a great trade-off. Is simply switching to Whole Foods a viable diet plan?

Most of the price difference is the much higher price of meat, dairy, and seafood (30% more) at Whole Foods. The prices of most other products are comparable to mainstream stores.

The difference between Whole Foods and Kroger shoppers is all in the name: Whole Foods customers prefer whole foods, not endless derivations of processed corn syrup.

5 strategies I used to reach financial independence

My portfolio growth rate over the last 6 years has averaged 130% of my salary. In other words, my portfolio increased by 100% of my salary plus 30%. My actual saving rate was between 60 and 70%.

More importantly, over this period my portfolio* grew from about 4x my burn rate to 22x my burn rate. This metric is key because 25x is the standard retirement escape velocity, according to the 4% rule. The 4% withdrawal rule is the rule of thumb used by most financial analysts to predict the percentage of a portfolio a retiree can safely withdraw without drawing down his principal.

Here are five ways I accomplished my financial goals:

My portfolio growth rate over the last 6 years has averaged 130% of my salary. In other words, my portfolio increased by 100% of my salary plus 30%. My actual saving rate was between 60 and 70%.

More importantly, over this period my portfolio* grew from about 4x my burn rate to 22x my burn rate. This metric is key because 25x is the standard retirement escape velocity, according to the 4% rule. The 4% withdrawal rule is the rule of thumb used by most financial analysts to predict the percentage of a portfolio a retiree can safely withdraw without drawing down his principal.

Here are five ways I accomplished my financial goals:

1 Rent instead of buy:

I held out buying my first home as long as I could until covid-19 forced my hand. While homeownership is great for a growing family, renting for nearly the first 20 years of my career was crucial.

The financial tradeoff of rent vs buy is complicated. In short, over the long run, home prices merely keep up with inflation, while the stock market provides a 7% return. On average, it takes about 5 years to break even on the buy vs rent decision.

More importantly, renting allowed me to focus on my career. I could quit my work and move across the country or the world without worrying about a home full of material possessions to drag me down. And I did – moving from Dallas to New York City to Shanghai to Atlanta to Denver within 10 years. I never had to worry about mowing lawns, broken washes, or leaky roofs. It’s possible to throw money at these problems, but avoiding the distraction allowed me to focus on growing my income instead.

2 Track your spending:

You can’t improve what you can’t measure. It’s essential to track your cash flow (both in and out) to improve your situation. I’ve tried dozens of apps to do this, but the key was tracking my finances in Personal Capital – a free tool that tracks your cash flow and investments. The results speak for themselves – it took the first 15 years of my career to save 4x my burn rate. After installing Personal Capital, it took me 6 years to save 22x my burn rate.

Personal Capital can do budgets, but I’ve never kept a budget. Budgeting is a terrible way to think about money.

Let me repeat that: a monthly budget is a terrible way to manage your money.
If something delivers more value to you than it’s worth, you should pay for it. Who cares what you paid for it last month? Every few years, I will go out and spend a fortune on new work clothes, or a computer, or a new car, or (recently) a home improvement project. Who cares how much I spent on it the previous month?

What matters is not how your spending compares to a previous period, but how it compares to the next-best use. For example, before I spent $1000 on a new suit, I will calculate the total return if I saved the money instead. For example, $1000 invested over 30 years will be worth about $8000. Will I value spending $8000 when I’m 70 more than $1000 today?
Your timeline will be different of course – it depends on what percentage of your income is saved for retirement vs upcoming major purchases. The point is that you should balance each potential purchase against the time-discounted value of the next-best purchase, whether that is an iPhone next month or a yacht 40 years from now. It takes time and data to make this calculation automatic and intuitive, which is why a personal finance platform like Personal Capital is key.

3 Single-income household:

My family is a single-income, two-child family – my wife has been a parent and/or a student since we got married. While many see this as a disadvantage, I’ve come to see the benefits of a stay-at-home parent.

The cash flow of a second income is easy to see, but the costs are not so obvious. Aside from higher taxes, work-related expenses, running a household with kids has a lot of overhead, and working parents usually have to throw money at problems to stay afloat.
It’s virtually impossible for both parents to fully dedicate themselves to a career without neglecting their children. Something has to give – either one parent will sacrifice their career, or both will have mediocre career progress. By focusing on parenting, my wife can let me focus on my career during the day, so I can support her needs as a student at night.
Second, because we homeschool, we have very low childcare costs. We took our daughter out of an expensive Montessori school because we found that she learned better at home. Our kids will probably go back to school at some point, but for now, homeschooling is efficient both financially, time-wise, and particularly in giving me the necessary mental break to focus on work each day.

4 Choose side hustles that further your career:

I encourage developing a “side hustle,” but many people get hustles that do more harm than good. The proper function of a side hustle is not to earn a few extra dollars — it’s to grow your value proposition and train for a life of financial independence and entrepreneurship.
Many people get a side hustle that distracts rather than enhances their career. Driving Uber at night or hosting Airbnb guests every night is not going to enhance your career unless your dream is to be a chauffeur or enter the hospitality industry. Same with being a jack-of-all-trades who takes whatever job he comes across.

Is your side hustle causing you to sleepwalk through the workday or work on your gigs from the office? Are you spending more money on tools and supplies for each new gig that you bring in? Are you growing as a professional and building a sustainable, revenue stream with customers that come back to you, or are you doing random, one-off jobs, often for free? Are you giving up new projects at work, a promotion or a demanding new job for your side hustle? If so, it’s holding you back rather than helping you. You don’t need more spending money: you need to create opportunities for you to grow.

A good side hustle should help you to grow in your career or to explore a new one. You should come to the office excited to try out new ideas, not just tired from staying up all night working in an unrelated field. Side projects in your current field often allow you to be in charge of a small project and use the latest technology or techniques that are too risky or difficult to approve with your boss. I’ve used this trick to qualify for jobs that I couldn’t dream of otherwise.

5 Invest aggressively:

After maximizing the spread between your income and your expenses, you need to leverage the magic of compound returns by investing it in the market.

There are as many opinions on investment strategies as there are investors, but unless investing in the market is your full-time job, you will probably not beat the market. You may get lucky, but chances are that if you try timing the market, you will be guided by your emotions, and buy high and sell low. Even the best money managers in the world can’t beat the market.
So my suggestion is: just invest in the market. The whole market, not just the S&P 500. You can either invest in an index fund like VTI (USA) + VEU (not USA) or use a robo-trader that buys individual stocks (this can lower costs and save on taxes).

I use Personal Capital. I can’t speak for other robo-traders, but Personal Capital re-balances my portfolio not only by asset class, but also by market sector, so I’m positioned to benefit from growth in any industry.

  • By portfolio, I am referring to liquid securities and some real estate. I have other assets like business interests, but I’m trying to keep this advice universal.

How to Restore Accidentally Deleted Rides from Your Wahoo ELEMNT Bike Computer (BOLT, ROAM, etc.)

These instructions outline a method to potentially recover .fit ride files from your Wahoo ELEMNT device using Android Debug Bridge (ADB) tools. This can be helpful if a ride was accidentally deleted from the device and didn’t sync to the ELEMNT app or other connected services.

Important Notes Before You Begin:

  • Keep your Wahoo device turned ON: After accidentally deleting a ride, avoid turning off your device if possible. Some users suggest this might improve the chances of recovery, though it’s not definitively proven.
  • USB Data Cable: Crucially, use a USB cable that supports data transfer. Many charging cables do not support data transfer and will not work for this process.
  • Success Not Guaranteed: While this method has been successful for some users, recovery is not guaranteed. The likelihood of success can decrease if the device has been used extensively or powered off multiple times after the deletion.

Steps:

  1. Download and Install Android SDK Platform Tools:
    • Search for “Android SDK Platform Tools” on your preferred search engine. You are looking for the official download page on the Android Developer website.
    • Download the SDK Platform Tools package for your computer’s operating system (Windows, Mac, or Linux).
    • Extract the downloaded ZIP file to an easily accessible folder on your computer (e.g., your Desktop or a folder named “ADB_Tools”).
  2. Enable ADB/Debugging Mode on Your Wahoo Device:
    • The exact method to enable ADB (Android Debug Bridge) or a similar developer/USB debugging mode can differ slightly based on your Wahoo ELEMNT model.
      • For some ELEMNT models (like BOLT v1, original ROAM): With the device turned on and not connected to USB, try pressing the power button to enter the settings menu, then press the power button again to return to the normal screen. This sequence might put the device into a state where ADB can connect.
      • For newer models (like BOLT v2, ROAM v2): A common method reported is to press the power, up, and down buttons simultaneously while the device is on and not connected to USB. Some users note needing to press this combination twice.
      • Another reported method for some devices is to press the power button twice.
    • After performing the button sequence, connect your Wahoo device to your computer using the USB data cable.
  3. Verify Device Connection with ADB:
    • Open a command-line interface:
      • Windows: Command Prompt or PowerShell.
      • Mac/Linux: Terminal.
    • Navigate to the directory where you extracted the Android SDK Platform Tools. For example, if you named the folder “ADB_Tools” and placed it on your Desktop:
      • cd Desktop/ADB_Tools (Mac/Linux)
      • cd Desktop\ADB_Tools (Windows – adapt if you used a different folder name like “platform-tools”).
    • Execute the following command to list connected ADB devices:
      • ./adb devices (Mac/Linux)
      • .\adb devices (Windows)
    • You should see your Wahoo device listed, typically with a serial number followed by “device”. If it says “unauthorized,” check your Wahoo device’s screen for a prompt asking to allow USB debugging from your computer and accept it. If no device appears, double-check the ADB enablement steps for your specific model, try a different USB data cable, or restart both your computer and Wahoo device.
  4. Locate and Copy Ride Files:
    • Ride activity files (.fit files) are usually stored in the /data/media/0/exports directory on the Wahoo device.
    • To view a list of files in this directory (useful to check if your deleted ride’s .fit file might still be present by date), you can run:
      • ./adb shell ls -l /data/media/0/exports (Mac/Linux)
      • .\adb shell ls -l /data/media/0/exports (Windows)
    • To copy the entire exports folder (which should contain all ride files, including potentially the deleted one) to a new folder on your computer (e.g., “wahoo_exports” on your Desktop), use the adb pull command. The basic syntax is adb pull [device_path] [local_destination_path].
      • Mac/Linux Example (saves to a “wahoo_exports” folder on your Desktop):
        ./adb pull /data/media/0/exports ~/Desktop/wahoo_exports
      • Windows Example (saves to a “wahoo_exports” subfolder inside your current platform-tools directory):
        .\adb pull /data/media/0/exports ./wahoo_exports
      • Windows Example (saves to a “wahoo_exports” folder on your Desktop – adapt “YourUsername”):
        .\adb pull /data/media/0/exports C:\Users\YourUsername\Desktop\wahoo_exports
  5. Find Your Deleted Ride:
    • Open the “wahoo_exports” folder (or your chosen destination) on your computer.
    • Look for .fit files. Sort them by date and time to locate the file corresponding to your accidentally deleted ride.
  6. Sync or Upload the Recovered Ride File:
    • Option 1: Sync via ELEMNT Companion App:
      • The Wahoo ELEMNT companion app allows for manual import of .fit files on your phone.
      • Transfer the recovered .fit file from your computer to your phone (e.g., via email, cloud storage like Google Drive/Dropbox, or direct cable transfer).
      • In the ELEMNT app, navigate to the History tab and look for an option to add (+) or upload an activity. Select the .fit file from your phone’s storage.
      • The original author of a similar guide mentioned successfully AirDropping the file to the ELEMNT app on an iPhone.
    • Option 2: Manual Upload to Third-Party Platforms:
      • Most fitness platforms allow you to manually upload .fit files directly through
    • Option 3: Accessing Files via MTP (Media Transfer Protocol) – Alternative for Non-Deleted Files:
      • Wahoo ELEMNT devices typically support MTP for file transfer when connected via USB.
      • Windows: The device should appear in Windows Explorer, allowing you to browse folders like a USB drive. Workout files are in the “exports” folder.
      • Mac: macOS requires an MTP client application to access MTP devices. “Android File Transfer” was a common tool, but its support might be limited on newer macOS versions. Alternatives like OpenMTP or MacDroid may be necessary.
      • Note: MTP is generally for accessing files that are normally visible on the device, not for recovering files that have been marked as deleted by the system. It’s less likely to show truly deleted files compared to the ADB method but can be an alternative for general file access.

Troubleshooting:

  • adb devices shows “unauthorized”: Check the Wahoo device screen for a pop-up asking for USB debugging authorization. You must grant this permission.
  • ADB device not showing up:
    • Re-verify the ADB/developer mode enablement steps for your specific Wahoo model.
    • Ensure you are using a USB data cable.
    • Try a different USB port on your computer.
    • Restart your Wahoo device and your computer.
    • Ensure no other programs are conflicting with ADB (e.g., some Garmin software, other phone syncing tools).
  • adb pull errors (e.g., “file not found,” “permission denied”):
    • Double-check the file path: /data/media/0/exports.
    • Ensure ADB mode is properly enabled.
    • If the file truly isn’t there, it may be permanently deleted and unrecoverable through this method.

This refined guide provides more detailed steps and context for recovering your Wahoo ride data. Good luck!

Adding complexity to a system does not make it more valuable

Every month, my company spends about $50K on software development. We’ve been doing this for 10 years. We think that we’re building something valuable well into the future.
Yet if the company went bankrupt, our work will instantly become worthless. Our business system serves our unique needs and would be useless in any other context. Likewise, if enough senior developers left at the same time, the business might be OK, but without in-depth knowledge, we would have to start over with the code.
Our code only has value when it makes money for the business. Like a living being, it only has value when it contributes to a common purpose (profit) and begins to disintegrate the moment that purpose is gone.
One difference between living and constructed things is that all of the parts of a living being are usually necessary for its function. If you remove any part of it, you will kill it, or at least imperil its ability to survive.
A complex codebase on the other hand usually serves multiple goals, and these goals change over time. Inevitably, some parts of the system become irrelevant to the system’s well-being.
98.5% percent of human DNA does not code for any proteins. It’s “junk” DNA. While not entirely useless, it’s a relic of evolutionary history. Given enough time, the same happens with any codebase.
This month, I tried to remove a feature from the codebase. It’s a small and simple feature, but one of the oldest. I found that I couldn’t get rid of it. Various parts of our system made certain assumptions that broke when the feature was removed. Subtle interactions caused things to break in unpredictable ways. This feature had wormed itself into the deepest layers of the logic engines and removing it broke dozens of unit tests.
I gave up and put the feature back in the backlog. I considered paving over the complexity by hiding it from the user, while letting it run in the background, like a vestigial organ. In fact, the feature had never been useful, but it took years for the business to admit that the tens of thousands spent on it were wasted. If we had recognized this earlier, stripping it out would have been much easier.
Adding complexity to a system does not make it more valuable — it makes it more costly to maintain. Humans have high-calorie needs because our brains require a lot of energy to run. Nature didn’t give us the largest brains it could, but the smallest brains that we could survive with. Human brains are mostly full of heuristics that provide shortcuts to perceiving and simulating reality just well enough to keep us alive long enough to reproduce. Likewise, software systems should have the minimum complexity needed to satisfy business requirements.