Skip Navigation

About

I’m a Taiwanese software developer currently based in California, USA. I enjoy playing tennis, drawing, reading books, and writing software. Programming languages and software development tools are my favorite topics to write on my blog, where you’ll find lots of articles about Clojure and Emacs. As I started learning more Common Lisp, game development, and generative arts, I hope to share some articles about those topics soon on this website.

An animated sprite I made for my game - Spirited

The year 2023 marks my 10th year of being a professional software developer. After graduating with a Mechanical Engineering Master’s degree, I started my career as a Java programmer writing the system software for the optical-mechanical wafer inspection tools at KLA, a well-known company in the Semi-conductor Industry for creating high-end Process Management equipment. At KLA, I learned a lot about Concurrency, Object-Oriented Programming, Dependency Injection, the software development process, writing documentation, etc. It was an excellent job for a college new grad as I grew a lot as a junior developer during my time there. I also started getting quite involved in software communities like Python and JavaScript outside of work to satisfy my personal curiosity. However, it became apparent that neither language was good enough for me when I began to prefer the Functional Programming style more to build software. Then I found my current favorite language, Clojure.1

After five and a half years, I left KLA and joined Kira Systems to work on Clojure and ClojureScript full time. (Finally, the dream came true!) At Kira, we’ve built a successful B2B SaaS product to solve contract reviewing/analysis using Machine Learning for the Legal Tech Industry. Though I don’t work on our home-grown, hand-crafted, fine-tuned, artisan ML engine written in GO, I enjoyed working with the ML researchers and learning the domain knowledge. This is probably one of the best perks of being a software developer - we get the opportunities to learn different domains and industries.

Kira was then acquired by Litera in September 2021, marking an impressive exit for a startup that bet itself on Clojure back in 2010. Litera is a much bigger company than Kira, with several product offerings to the legal professionals. This is kind of a classic “small Clojure team in a big org” situation. It’s nice to see Clojure continue to thrive as the Kira team continue to offer the best contract analysis software in the legal tech industry.

How I work

Being genuinely curious about many things, I’m a pretty huge generalist in software development. Earlier in my career, I was mainly working on application backends that deals with data storage and concurrencies. Ever since I started working for Kira, I have been heavily involved in developing application front-end and worked closely with product designers to build accessible user experiences. Outside of work, as I started working on generative art and game development, I now know more on Computer Graphics than ever in my life.

When it comes to my preference between green-field projects vs legacy projects, I prefer legacy projects where I imagine myself being an archaeologist recovering lost human records from ancient artifacts. I enjoyed the process of discovering and documenting things that people overlooked. When I worked on green-field projects, I prefer the old, proven, boring tools over the latest over-hyped ones.

I’m very keen on my REPL-driven workflow while developing software. There’s nothing more disruptive to my productivity than not having a live REPL where I can hot-reload code on-the-fly. I also depend on using Emacs a lot doing other development-related work - interfacing git, running shell commands, reading logs, check remote files on server, manipulating text, writing notes, etc. Emacs is crucial to my day-to-day workflows. And I love to tinker with my settings when I’m not working.

What I’m doing now

Last updated on July 31st, 2023. Inspired by nownownow.

Footnotes


  1. There is an interesting backstory to my LISP experiences: Clojure wasn’t my first LISP language. Back in 2008, when I was a sophomore, I was already writing AutoLISP to generate CADs (Computer-Aided Design) for my Mechanical Design class. Programming with AutoLISP wasn’t like using a general-purpose programming language, but I still felt nostalgic when I picked up Clojure.↩︎