I'm leaving the team that is building Microsoft's internal knowledge base for UX researche. It was one heck of a ride for the past four years:
- I learned to program in a Datalog dialect.
- Picked up Python again (since my undergrad intro to CS) and wrote my first Jupyter Notebook.
- Comfortablly coding in functional style in TypeScript, with and without RxJS.
- Became an intermediate VIM user via its VS Code extension.
- Created mini compilers for domain specific languages (DSL): JSON, Azure Search OData Query, Figma's document object model.
- Got very proficient in building plugins for Figma and Chromium browsers.
- Expanded my skills from Design + Frontend into API and database developement.
- Lots of prompt engineering and RAG stuff. I landed as an AI engineer by the end.
And a few unfulfilled dreams:
- Didn't pick up another language, Rust and Haskell remain on my list.
- Didn't have a chance to build a text editor.
- Didn't design a DSL for LLM interpreter.
- Didn't toss hot potatoes with my teammates.
- Didn't provide enough technical mentorship for junior UI/UX engineers.
- Didn't daily drive a Linux machine for development.
While the team couldn't provide everything I dreamed of, I was lucky to have the freedom to innovate on things that mattered to me. As they say, you win some, lose some. So, no regrets. As for next, I am joining hands with John Maede in realizing our shared vision for Computational Design. I wrote this in my farewell message:
I'm leaving the project at this precious moment because I have to pursue another mission at AIPX. That is to bring designers and engineers together into a new discipline called Computational Design. I've tried this on my own with every project in the past and failed every single time. The circumstances have never been better than what AIPX has shown, where designers are finally exploring coding as part of the craft, thanks to AI coding assistance. I've learned the lesson over and over in my career: as a mentor, you can't help people who don't want help. As a developers, your best software must be adopted, not sold. As a presenter, don't answer a question that the audience are not ready to ask. Now people are asking the right question, adopting a new way of work, and needing my help. I've prepared for this moment my entire career.
This is the easiest part of my decision because it is the most personal. I see myself as a generalist and I believe generalization is a virtue in itself. I don't believe that designers should only make mock-ups, developers should only write code, and researchers only conduct studies. I believe life is most beautiful when one can live the infinite lives of other beings, that is to share the joy in others' lives as well as to suffer their pains and experience their mundane. I see this as a higher calling than building a specific software for a specific business goal. I must live life more fully, especially after realizing life is so damn short as I went through a few health related incidents. Besides, it's just wicked fun to play with both technology and design with a group of like-minded people. So, here I am, once more into the fray.
And that's it: becoming a generalist myself while creating a world in which people don't have to choose between design vs. engineering, art vs. science, intuition vs. reason, is my principle to live by. Our civilization is at the dawn of artificial general intelligence (AGI), with human-computer symbiosis closer to reality than ever. Despite how AI is helping us accomplish difficult tasks at expert level in record time, I am nevertheless most optimistic about individual freedom through rapid learning over productivity optimization via automation. Linus Lee has made the distinction clear:
There’s a subtle but important distinction between augmenting human productivity, which is every tech company’s aim, and augmenting human intellect. The former is an economic endeavor that helps us accomplish more of what we could do already; the latter is a step towards helping us invent new things and see new ideas we could not before.
I'm drawn to the latter. I prefer a future where human general intelligence (HGI) triumphs over that of the machines, achievable through the means of computation to which AI might just be a necessary but insufficient condition.
I went back to Bret Victor's Inventing on Principle as a soul-searching pilgrimage the day after I accepted the offer. His emphasis on choice stood out as more comforting than edifying. He offered a pragmatic worldview, acknowledging that if everyone lives like him, the world will grind to a halt when the specialists stop functioning in supporting our economy. His philosophy must not be a universal virtue, but rather, just one way of life among many others. As Samurai is a way of life for the feudal Japan, Inventing on Principle is a way of life for our industrialized capitalist society. To pursue such a way of life is to devote oneself to the frontiers of the abstract, to create rules when there are none, and disobey norms when they are wrong. Be rebels and romantics, astronauts and philosophers, all at the same time. To endure loneliness but also start communities. Take the risk of being misunderstood and relegated to the fringe, missing that one shot, or never even firing one, and maybe after all that, just maybe, when the time comes, to seize the best of life, and right the wrongs of this world.