Career
Looking back, my career was a long chase after data visualization and systems that make complicated data understandable.
In Jan 1993 I started working as a full-time employee at Lawrence Livermore National Laboratory. I co-authored many research papers during this time together with Nelson Max and Roger Crawfis. We had a fun time developing new techniques for scalar and vector field visualization. The field was new and we had more ideas than we could implement. It was a 3 year internal research project. At the end of that time, I could continue employment at LLNL or look elsewhere. I didn't spend much time interviewing. I was recruited by Mario Schkolnick to join the newly formed MineSet group at SGI.
In October 1995 I started working at Silicon Graphics Incorporated in Mountain View CA (before they changed their name to SGI - Servers, Graphics, Insight). At first, I commuted from Fremont, but after a few agonizing months of that, I decided to buy my first home. I bought a condo in Mountain View for $145k (In 2019, that same condo would be worth close to $1 million). For over 4 years my commute was a 10-minute bike ride. MineSet was an exciting project and I worked with a lot of smart people in the group. There were MineSet reunion dinners for years afterward. I would have been really surprised to have known then that I would return to working on the project again 15 years in the future.
Shortly after I started at SGI, I began thinking seriously about what technology would mean for the future. I thought about what my job might look like in 10 years and was very excited by the prospect. I thought that using machine learning and data visualization with MineSet would become commonplace. I was partially correct. It became commonplace — just not using MineSet. I also could not see how completely deep learning approaches to AI would replace the old-school machine learning methods (decision trees, naive Bayes, association rules) that MineSet used.
One problem we faced early on was how to render a 3D scatterplot of millions — or billions — of data points. Drawing every point individually was too slow and clunky. I invented Splatvis: bin the points and draw overlapping transparent Gaussian "splats" (blobs) for each bin. That conveyed data density better than a raw point cloud and was much faster to render on GPU hardware. The work led to several data visualization patents, including Visual Approximation of Scattered Data.
In 1998, SGI started to stumble badly. Our group was never affected by layoffs, but attractive opportunities elsewhere in the valley lured many of the veteran members away in 1999. I remember telling Ed Karrels that options worth 0.1% of the company did not seem like much - as he went off to become a very early employee at Google. I was the last of the long-time engineers to leave. MineSet was developed for several years more at SGI after I left. A whole new group of engineers had been hired to work on it. Eventually, however, it was sold to Purple Insights around 2002, and later was acquired by Vero Insight. Even later after that, around 2013, it seems that SGI came out of bankruptcy and re-acquired the rights to the software and intellectual property.
In October 1999, I took a 6-week sabbatical from work (this is one of the benefits of working at SGI - you got 6-week sabbaticals every 4 years). We spent 2 weeks in Texas with my sister-in-law's family, and 2 weeks with my parents.
On January 17, 2000, I started working at Blue Martini Software, an exciting e-commerce startup. We had a real roller coaster ride. In less than a year, the number of employees went from under 100 to 600, and the stock went from $1 to $77. Then the dot-com bubble burst and the urgent demand for this type of software dropped dramatically. Many of our customers were dot-coms that went bankrupt. We had 2 rounds of 30% layoffs and several smaller ones. The stock went back down to $1. It was a tough time. I was foolishly optimistic about the company's future while I worked there. We had a great product and Java-based architecture. I just couldn't see how it would fail with such a great team working on it.
In March or so of 2001, the MineSet project at SGI was finally shut down. All the ex-team members got together for a requiem dinner to memorialize the project. It was good to see everyone gathered together again one last time. That is not quite true. We were together for reunions quite a few more times in the following years. Then 12 years later, in 2013, Christian Tanesescu resurrected the MineSet project again. He approached me while I was working at PROS to help him restart the project. Initially, I told him no, but then a year later, I decided to join the team that he was building.
In September 2001, I started getting serious about my hobby of writing a Go program on my computer. The Go-moku program I have posted on this site was just a warm-up exercise. I also implemented checkers and chess as warm-ups. Both are nearly unbeatable by humans in my opinion. The checkers game was very easy to implement once I had the overall infrastructure in place. Go turned out to be much more difficult. I eventually created something that sort of played, but when AlphaGo came out in 2017, I had to give up entirely. I have made some small contributions to Leela-zero - which is a faithful open-source implementation of the AlphaGo zero paper.
In September 2002, we had another big layoff at Blue Martini. Our 5th in the last 7 quarters. It was a difficult time. We all hoped the economy would turn around soon.
I did not get laid off from Blue Martini, but I decided to quit in 2004. I joined a startup company called Metreo in Palo Alto. I took 2 weeks off between jobs to spend time with my family and work on an XML based aikido technique builder application. Went to the visualization conference in Austin at my own expense that year. Brian was a vampire for Halloween.
At Metreo, I worked with the chief software architect, Hannes Marais, on a next-generation pricing application called Vision. I worked on a number of new pricing specific charting components in SVG. In the summer of 2005, Hannes developed an incredible home-grown Ajax framework that allowed us to make tremendous progress in a short time. Unfortunately, the company ran out of money before we could really leverage the new technology that he had created. I stuck it out to the end when we were all laid off in early January 2006 without any severance package. Hannes went off to work by himself on software that would later be the basis for a new company called Kalexo that was later sold to AutoDesk.
I interviewed at different companies, and after considering a number of offers (including one from Google), decided to accept an offer from PROS in late February 2006. PROS is located in Houston, so I got to work from home in California, and visit Houston once a quarter or so. At PROS, I worked on a pricing analytics application that is not too much different from what we built at Metreo. One exciting aspect is that at the beginning of 2007, we decided to start porting the UI to Adobe Flex. However, by 2013, that decision to port to Flex was starting to look like a bad decision because the browsers started dropping support for Flash. That meant porting back to some JavaScript framework. When I visited Houston I practiced aikido at Shobu dojo.
Once a quarter or so, I would fly out to visit PROS in Houston for a week. This usually coincided with planning for the next major software release. It was really nice working from home most of the time. Flying to Houston and staying at a hotel and eating at nice restaurants always seemed like a vacation in many ways.
In 2014, I decided to resign from PROS and join SGI to work on Mineset again. During the next 4+ years, we completely rewrote Mineset. Not a single line of original C++ code remained. The C++ client code was replaced by Java, JavaScript, and HTML. The backend MLC++ code was replaced by Scala and Apache Spark. When I first joined, we spent a lot of effort trying to come up with a new name. The end result was that it should be called "Mineset" instead of "MineSet". In early 2016, SGI sold Mineset Inc to ESI-group, right before SGI was itself acquired by HP. We continued to work on Mineset at ESI for several years, until March 2019 when they decided to cancel the project and lay off the team. It was sad, but not entirely unexpected. We were never able to generate the sort of revenue with it that we had hoped.
In 2015, I created an Android app called Mapland. It was supposed to be a joint project that Brian and I could work on together, but I did most of the work. It was interesting to see all the powerful hosted Google services that were available and to learn the Android API.
With the ESI layoff, I spent late March 2019 figuring out what was next. I dusted off my resume and, for a little while, seriously considered becoming an adjunct computer science instructor at Ohlone College — Mike Aquilina the father of a student in my Logan HS CS club, who taught there, put in a good word and lined up a conversation with the department. Around the same time I did an on-site interview at Vicarious, an AI robotics startup, and had a very promising visit to a small networking-analytics company in San Francisco called ThousandEyes. In early April I let Ohlone know I'd decided to take a principal engineer role at the startup instead. Teaching would have to wait.
In April 2019, I joined the team at ThousandEyes as a principal engineer. They produced visualizations that helped the world understand where the problems were in the global internet. In March 2020, right after our company kick-off, where employees flew from all over the world to San Francisco for planning and team building, the coronavirus hit. Brian and I were locked down at home along with the rest of the household. We considered ourselves lucky because Brian could do his schoolwork remotely, I could work remotely, and medical device manufacturing work in the household was considered essential.
I got COVID from Brian when he visited. It wasn't bad. It was like having the flu for a day or two. Not everyone in the house got it. Brian missed out on a year of his college experience at Berkeley because of COVID. COVID was a big tailwind for ThousandEyes' business. With so many companies implementing remote work, having a robust internet suddenly became very important. Acquisition negotiations with Cisco were not slowed by COVID, if anything it made the company more attractive to them. Cisco acquired ThousandEyes for about a billion dollars. Back in 2021, a billion was a lot.
Before COVID, I commuted to San Francisco 3 times a week. I had a desk next to a window overlooking the beautiful park on top of the new Salesforce Transit Center. I took BART to Embarcadero station and walked a few minutes to the office. It took an hour door to door. It was quite crowded on BART, but at least I didn't have to drive. There were free catered lunches in the office every day. I played go with another employee that was a few stones stronger than me. Every day at 2PM we did planks. After COVID, we worked from home 100%. After a few years, we had a 1 day in the office policy. I drove to the San Jose office, did some work, then had lunch with coworkers at the nice cafeteria there. Once a quarter, I needed to go to the San Francisco Cisco office for the all-hands meetings.
One aspect of the work at ThousandEyes that I never enjoyed and never got used to was being on call. For 2 weeks every six weeks or so, I needed to be available to respond to incidents at any time of day or night. It was exciting but stressful. Fortunately, there was never a major incident on my watch. If there was an incident, others on my team often came online to assist. I miss my amazing and supportive coworkers at ThousandEyes, but I don't miss being on call.
Recruiters never really stopped calling, especially once ThousandEyes and then Cisco showed up on my resume. Amazon reached out half a dozen times or more between 2022 and 2024, for roles ranging from Seattle to fully remote. Meta tried repeatedly from 2022 through 2025 — a machine learning team, then a "Staff Software Backend Architect" role their recruiter followed up on three separate times. There were smaller pitches too: a fintech lender, a couple of AI startups, staffing agencies working the "top startup" angle every few months. I gave everyone the same answer — not looking, but I'll let you know if that changes. It never did. I liked my team, I liked the problem, and I was settled in.
In January 2026, I decided to retire from ThousandEyes / Cisco. With the help of AI agents, I feel like I can move faster and accomplish more on my own than in a big company. The weekend projects I have been growing since high school finally have tools that keep up with the ambition. I have a lot of ideas for projects that I want to work on.