👋 I'm a full stack software engineer with a penchant for type systems, scalable state management, and effective documentation. I have about 7 years professional engineering experience, most of which time I’ve spent working with startups on full stack end-to-end projects.
Building telehealth for mental healthcare at Grow Therapy
Previously built cool stuff at Sourcegraph, Grio, American Physical Society, eBay
Nerding out with SquiggleConf, CascadiaJS, TypeScript Congress
Frolicking around Seattle ← San Francisco ← Los Angeles ← Phoenix
I consider myself a generalist and love working across the whole stack; you can see a breakdown of some of the languages I've used the most below. I also care a lot about inclusive engineering culture and believe that great technical leadership is as much about empowering your teammates as it is about building great software. Talk to me about using TypeScript, your favorite tea to pair with boba, or whether or not there's a pipeline problem in tech.
- Strongly-typed languages
- Boba/bubble tea
- Fluffy cats
- Singing harmonies
- Intersectional feminism
- Typography (like my username's namesake!)
- Code reviews
- Naming variables
- Carbonated beverages
- Sensationalism
- Spicy food
- Bad kerning
- Defaulting to cynicism
Year | ⭐ | Completed On |
---|---|---|
2023 | 50/50 | Feb 29, 2024 |
Things I have used
Software Tools | |
Frontend | |
Backend | |
Databases | |
AI/ML/Data | |
IDE | |
Building + Testing | |
CI/CD | |
Analytics | |
Documentation | |
Version Control | |
Cloud |
More about me
In this section, I hope to convey to you a "user manual" for working with me, including what's important to me and how I like to work. Like most manuals, you may never need it, but you're probably still better off if you have it! It's also one way that I practice self-reflection and think about what will bring me the most joy and fulfillment in my life.
- Pave the way for those who come after us: We live in a time of great abundance and innovation, but also great inequity. I believe that coding and computation are to this era what writing and reading were to the last one. Written communication has propelled us all forward in incalculable ways, but it was once only accessible to the wealthy and powerful. Writing software also has nearly limitless potential to improve human quality of life, but today, less than 1% of the population can really tap into that potential. I believe in using technology to lift others up, break down barriers, and make technology itself more accessible, so that the day may soon come when everyone has the power to change the world with the code they write.
- Reject the notion that people are lazy: I don't believe in laziness; I think people choose to do with their time what they feel motivated and empowered to pursue, what they have the energy and physical+mental capacity to accomplish, and what they believe is in their best interest. Rather than criticize others or ourselves for being "lazy", I believe that extending empathy and grace can help us understand what holds us back. When evaluating someone's choices or actions, I always try to assume that they are doing the best that they can, given the resources and knowledge that they currently have. We're all capable of doing amazing things when our needs are met and our motivations are aligned.
- Focus on sustainable systems, not goals: g = f(x). Goals (g) are outputs of a system (f) applied to a series of inputs (x). Achieving a goal once doesn't mean we're set up to achieve the next one we set; it still depends on f and x. Many of the inputs (x) are out of our control: you get sick, you hit a setback, or the goalpost moves midway through. But the system is in our control, and a good system -- one that is sufficiently resilient and adaptive -- can help get us to our goals, no matter what they are. Developing good goals can give us a lens through which to evaluate and improve our systems, but I believe successful individuals and teams focus more on developing the system itself.
- I default to asynchronous communication. I personally express myself better in writing than in speaking. To me, asynchronous communication in practice means tending towards over-communication, creating artifacts, and enabling everyone to access and contribute to a shared knowledge graph. I believe in using synchronous communication to complement, rather than supplement, this work: for example, when realtime feedback can enable faster iteration towards an objective, or when face-to-face connection can motivate trust and kindness in difficult conversations.
- I need time to answer questions. I have poor recall and don't do well being put on the spot, so sometimes if I "trust my gut", I will get something wrong or leave a different impression than I mean to. If this happens, I ask for understanding and an opportunity to correct myself. However, I can provide much higher quality answers if I'm given time to review the context, organize my thoughts, and prepare an answer first. If it's a question I've thought about or answered before, I may be able to answer it more quickly.
- I don't look or act like your stereotypical technical leader. I'm a goofy, nerdy, easily-excitable introvert and rather physically-diminutive girl who doesn't have many strong opinions, is not particularly eloquent when speaking, and would rather drink boba than beer. I don't exude the coolness and confidence of a tech bro, nor do I brandish the battle scars and cynicism of a graybeard sysadmin. There's no one recipe for what makes a good leader, but I think that the ways that I break from the mold actually make me a great one.
- I don't interrupt or talk over others. That means that if a conversation is flying by, I may need your help creating an opening! In these moments, I try to use body language to make it clear when I have something to contribute. Or, if it's a virtual setting, I will write down and share my thoughts over chat so that they're added to the group's collective task queue and can be picked up by a background process as soon as one is available. 😉
- If you have a question for me or want to get my advice, it's never a bother, and you're never taking up too much of time. I believe one of the most valuable ways I can spend my time as a technical lead is by enabling my teammates to be even 1% more effective at what they're working on, because progress compounds.
- I do my best work at night. My brain's processing speed before 10AM is 30-50%. I will struggle to lead meetings or even just contribute in them before this time! It slowly ramps up to 90-100% by mid-afternoon but somehow kicks into overdrive and peaks at 150-200% after dinner. I often do my best work and get into a flow state late in the night.
- I try to underpromise and overdeliver. While I tend to be an optimist in most other aspects of my life, ask me about a timeline and I'll absolutely incorporate pessimistic buffers into my estimations. Ask me about how difficult a proposal sounds and I'll definitely lay out all my concerns and qualify every statement before telling you it's feasible. Do I get the balance right every time? Absolutely not! But I'll sure try my best to revise my estimates and appraisals and share them with you as progress is made.
- Being a technical generalist means I'm very good at unblocking myself, but I often need to consult with "experts" to work out the details. I love learning and exploring new technology, and as a result, I have broad exposure to many different types of problems, tools, design patterns, and domains. But I'm only really an expert in a few of them!
- I struggle with mental health and imposter syndrome. Please remember that I'm just a human who is trying her best, too! 💚 I love being pushed to pursue things outside of my comfort zone, but I appreciate this the most in an environment where I know it's safe to fail. I don't need to be coddled, but I benefit from explicit positive feedback when you can offer it. When I'm struggling to believe in myself, encourage me to believe in you who believes in me!
- My biggest failure mode is that I just want to be liked by everyone! 😭 Partly it's societal conditioning, partly it's my personal upbringing, and partly it's the external validation I use to cope when my mental health is tanking (see last bullet). I think this holds me back and makes it hard for me to contribute ideas or focus on what's actually important in situations where I'm interacting with people who I worry don't like me. I'm working on it, but it's probably something I will continue to struggle with to some degree for the rest of my life, and I am grateful for your patience with it.
- 🥧 I memorized 314 digits of pi as a contest with my friend in high school. I still remember them and even built myself a toy app to practice with!
- 🎮 I've probably dumped more hours into RimWorld than any other hobby, and that includes even training as a classical pianist for ~14 years!
- 🎨 I collect paint samples and create patterns of artwork on the walls of my home out of them.
- 👃 I lost my sense of smell as a teenager. While I sometimes miss the smell of bread and pine trees, I don't mind no longer having to endure the smells of yuckier things.
- ✏️ My sketches of Katniss Everdeen and Peeta Mellark from The Hunger Games series briefly went viral and wound up on the first page of Google search results for either character, before casting for the movie adaptations was decided. If you do some real internet sleuthing, you can probably still find them! 🕵️
- 💅 My first "paid" job was building HTML+CSS layouts and website designs for my friends on Neopets in exchange for Neopoints, before I was even old enough to babysit!