• Starting at Apple

    I am thrilled to begin my new role at Apple.

    I will help small businesses succeed by building Apple Business Essentials — a product which brings together device management, 24/7 Apple support, and iCloud storage into flexible subscription plans.

    Apple deeply understands the importance of small businesses. I am excited to help enable small businesses everywhere scale up while staying focused on their mission.

    Small business owners and entrepreneurs can learn more how Apple products and services can support their growth and success with Made for Business, a series of Today at Apple available at select Apple stores around the world throughout the year.

  • Leaving Yahoo After 15 Years

    Today was my last day at Yahoo. I decided to resign after 15 years.

    In 2007, one year before joining Yahoo, I was living in Southern Illinois and just graduated high school. I was working for a local company making websites for K-12 schools.

    My former boss there, Dav Glass, recently moved to California for a job at Yahoo. I visited Yahoo’s campus in Sunnyvale that summer. The energy and excitement there marked me.

    One year later, when I was 19 years old, Dav invited me to apply for a job. Soon I found myself opening a yodeling purple box with a full time job offer to build apps for the web. I dropped out of university and moved across the country.

    Joining Yahoo in 2008 was a very special time. Hack Days in Sunnyvale and NYC. Working alongside smart folks who have shaped our entire industry. Nonstop learning.

    Over the years I was a YUI Library core contributor, learned how to help other developers, built developer tools, and most recently I helped build Yahoo Mail.

    The last 6 months have been an incredible time. I led a team of 7 engineers responsible for our React framework. Together we made iteration speed as fast as possible. Everything was made faster without a big rewrite — faster dev startup, faster React Fast Refresh, faster PR builds, faster clock speed. A lot of new code was written with modern dependencies. We built tests for UI outcomes instead of implementation details. And we removed tech debt in the existing product too. It was very ambitious and I am proud of the team I am leaving behind. I wish them all the best.

    I will have more to share on my upcoming plans in the next few weeks.

    Yahoo changed my life. California is now my home. The time has come to move on, but I will always be thankful for all the Yahoos who helped me become the engineer I am today.

  • California, Forever

    Last weekend, we packed the truck and headed for Sacramento.

    Diapers, travel crib, stroller, motorcycle.

    We visited old friends and started new fall traditions. Apple orchards and pumpkin patches with our families.

    And kept a few old traditions alive.

    My grandparents rode motorcycles. As they rode, they helped others. Hundreds of motorcyclists attended my grandmother’s funeral and many shared how their lives were transformed after meeting with her. I hope to honor their legacy.

    The best place to ride a motorcycle is California: natural beauty everywhere, wonderful weather, lane-splitting, moto culture, mountains, rivers — for all of its problems there is a reason so many come from all over to enjoy this place.

    I came to California to work. These days folks can work anywhere. But there is something special in this place. It is not perfect, but it is home.

    I intend to remain and raise my family here. Instead of seeking a place with less problems, I want to help leave this place better than I found it. I set out to do just that many years ago. And now I am beyond thankful to call this place home.

    California, forever.

  • Kaylee’s 100 Days

    Today we celebrate 100 days of life with our daughter Kaylee Nari. We are thankful to God and our family who love us and Kaylee so deeply.

  • Maintaining a BMW G 650 Xchallenge with ChromeOS

    I own a 2007 BMW G 650 Xchallenge. This motorcycle was short-lived and not particularly common. Keeping it running these days requires knowing how to repair it.

    For BMW motorcycles of this era, the best available repair manual is a Windows program called RepROM which displays repair procedures and allows for searching the manual.

    My model’s RepROM is a circa 2006 program which runs on Windows XP. For many years I kept around an old HP Compaq nc6220 laptop just for the purpose of running RepROM.1

    A few months ago, I created a dedicated garage workstation to make it easier to look up repair information for my motorcycles and other things around the house. The computer is a Dell Optiplex 9020, picked up from the Silicon Valley Electronics Flea Market after its retirement from a cafeteria at Stanford University.

    After trying Haiku for a while, I found ChromeOS Flex makes for a very fast and drama-free Linux workstation for looking up things online. ChromeOS supports PWAs, 1Password, and even Linux apps like Beeper.

    Today I figured out how I can run my old version of RepROM on ChromeOS so I can easily look up repair guides without hauling out the Windows XP laptop. If you want to do the same, read on.

    First, install the Linux development environment for ChromeOS.

    Next, install Wine in the Linux environment. You can use these commands to install Wine:

    # From https://github.com/cknermann/WINE-on-ChromeOS
    sudo dpkg --add-architecture i386
    
    # Prepare temp directory
    sudo mkdir /root/.gnupg
    sudo chmod 700 /root/.gnupg
    
    # Import repository keys
    wget -O- https://dl.winehq.org/wine-builds/winehq.key | gpg --dearmor | sudo tee /usr/share/keyrings/winehq.gpg
    
    # Add repository
    printf "deb [signed-by=/usr/share/keyrings/winehq.gpg] https://dl.winehq.org/wine-builds/debian/ bullseye main" | sudo tee -a /etc/apt/sources.list
    
    # Update, install and configure
    sudo apt update
    sudo apt install --yes --install-recommends winehq-stable

    Before starting anything else, be sure to specify a 32-bit Wine configuration. RepROM needs old versions of Internet Explorer to render the XML repair documents which requires 32-bit Wine.

    WINEARCH=win32 winecfg

    You will need msxml3 and ie6 DLLs to properly run RepROM of this vintage. If you do not, Wine will helpfully try to download HTML support using modern Gecko; however, Gecko cannot parse RepROM’s Microsoft-specific XML documents.

    You can easily install these DLLs with Winetricks. While the installation is easy, watching IE 6 download and extract on ChromeOS in 2023 is a bit unsettling.

    wget https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks
    chmod +x winetricks
    sudo apt install cabextract # Required for next step
    ./winetricks dlls ie6
    ./winetricks dlls msxml3

    Next, place the RepROM files into a directory in the Linux files section of the ChromeOS Files app.

    You can now run RepROM.

    cd RepROM
    wine RepROM.exe

    RepROM can be placed as a menu item in the ChromeOS Launcher to make it easier to start. For this, you will need Menulibre.

    sudo apt install menulibre
    menulibre

    In the Menulibre GUI, select Add Launcher and use the following values:

    Commandwine RepROM.exe
    Working directorySelect the directory which contains RepROM.exe

    Close Menulibre and you should find RepROM in the ChromeOS Launcher.

    Happy wrenching.

    1. A bit of Yahoo Alumni trivia: This HP Compaq nc6220 was gifted to me during an employee lottery giveaway of surplus laptops and servers. I entered the laptop lottery and got this around 2009 during what I believe was the last time Yahoo ever did these giveaways. I brought it back to Yahoo Sunnyvale to run the vinyl cutter in the Makerspace until 2020. ↩︎