Jason Lee

I'm a software professional focused on reliability, security, and simplicity in web applications and services. This site is a living time capsule, where I archive work, learnings, experiments, and ideas as they unfold.

Now

Posts

Tags

Between the outputs

Flaws are cheap and forgeable too, so we aren’t special because we’re imperfect. When the act itself is the point, we reveal ourselves with the care we put in. When cheap proxies no longer signal much, we don’t lose the ability to signal care. We’re mourning the loss of easy proofs of humanity and mistaking those forgeable outputs as all that humanity is. The integrity of the human touch reveals itself over time. You can forge her all the heartfelt love letters you want, but it shows in every missing act.

Software is becoming a restaurant

Everyone loves a good analogy to put something complex into simpler terms. Right now, software industry analogies are everywhere as a way to simplify the tech job market and where software is headed as a career. I think that some of them kind of work, but maybe not for the intended reasons. Software has been an anomaly as a career for much of its existence. The idea was that you’d get a college degree or bootcamp certificate, no licenses, and get a 100-200k starting salary for knowing how to do this thing that others find mysterious and hard. Kids were sold this dream for at least 15 years now, that they just “learn to code,” and get a job with a fun office and free food.

Does the attack surface of bragging matter?

These are a few common quotes right now: “I’ve not written any code in months now” “I don’t even read the code anymore. It’s that good” “We’re a tiny team that now ships full stack apps end to end for our clients instead of just designing them” “I’m a PM and feel more empowered than ever. I made { some big project } in just 48 hours without writing a line of code” “I built an entire { massive project } in 48 hours. The future is here” In a lot of cases, it doesn’t matter. At this point, a lot of the demos remain in a prototype stage on local, and are semi-functional just for the demo.

The tech fleece looked fake

Today, I woke up to the shocking news that the US captured Maduro in Caracas. I won’t go into the loads of political takes from across the US and Europe, and instead wanted to talk about why it was among the most interesting days of geopolitics of my life so far. I happened to be in the right place at the right time during a trip to La Guajira, and was able to hear perspectives from Colombians, Venezuelans living in Colombia, and Venezuelans that left from Maracaibo this morning.

Organization is our problem

I’ve changed my views over the past few years on some controversial topics due to realizations while working at a big company. Very little is ever optimal when it’s something abstract and deals with humans. These things are inherently lossy and need some kind of “organization.” In a relatively small organization of only 1000 people, changes made just a few years ago got completely lost. Migrations from platform A to platform B with authors leaving the company in the mix made decisions practically disappear. Team A uses team B’s platform incorrectly for months without anyone realizing, until eventually it breaks. Uh oh, but Team A’s component was load-bearing and set up by a dev on vacation right now. Team’s gotta figure it out immediately and service is interrupted for over 3 hours. Various teams building for problems that don’t exist. Doing hard work every day on the wrong problems, but the organization is not configured to speak honestly. XY problems everywhere you look. Speeding up a tool, service, app, or layer that never should have been made. That’s just 1000 people, and in a highly successful organization of smart folks that seems like it’s flourishing from an outsider’s perspective. On the inside, it sometimes feels like everything’s on fire. Issues all over the place with not enough time in the day to even log it all in a coherent way. This is a detail oriented person speaking though, the truth is, the organization succeeding while being on fire is kind of just how they work. It’s not optimal, but it’s optimal enough to continue kicking.

Too many doomers

Over the past few years I’ve actually gotten more optimistic about the future of humanity. Seen how fast we’re able to move when enough interest and resources are on board in important moments. Especially in open-source. Noticed the upsides and downsides of EU-cookie-banner-causing styles of regulation. Online however, I keep seeing viral arguments appear that turn deeply doomer, like these two: Shut down or highly limit all large scale LLMs over water use concerns. AI is a slop machine without real value. Cool new innovations in the space are useless and are burning the planet. One example about using Genie 3 to “walk around” still photos or art said, “If you can walk around in photos then the whole reason for photography’s existence is laid moot.” Like, seriously? There are so many useful cases and loads of people pile on agreeing that it’s worthless And then in person, I started hearing them too. Then I saw this post, which made it make more sense:

Confidence in software

One of the best signals of quality software is user patterns showing high trust. In middle school, we had this website where we’d keep a quarterly journal of our achievements and progress. Every few months, we’d answer questions and write essays and attach photos and such. I remember seeing classmates crying a few different times because the content didn’t save after hours of writing it up. Usually it’d be something like them uploading a file a little bit too large, an alert popping up, and then the page reloading from some unhandled error.

Jony Ive at Stripe Sessions

A couple of days ago, Jony Ive gave a talk at Stripe Sessions. He dropped some gems, especially for designers and founders focusing on a lot at once. To me, it feels like everything’s marketed and shipped focusing on speed speed and more speed. It’s about getting “more” for less, with “more” being focused highly on monetary outcomes. Quality’s always been really important to me in products I consume and has been my goal for everything I create. But really, it’s hard to pursue top quality in a world focused on speed and clear metrics first.

More voice assistants

In Seattle, I still have yet to hear anybody talking to an AI assistant in public. It doesn’t seem like it at least, since AI chats are really assistant-coded: one input and wait for a response output with no active listening cues really. I’m a big fan of the newly launched Raycast iOS app which comes with a great UX for speech to text transcription, even directly from a widget. It’s a hold to transcribe + send interface, and as you release, the LLM immediately starts responding in text. Also, major shoutout to their amazing team who has fixed the only two nits I’ve ever had with their products in under a week both times!

Changing how I use this site

I really enjoy the weblogs/microblog/TIL style of sites that people publish to frequently. I already set myself up a super easy process to publish photos or posts in a few seconds, so I realized I might as well use it more. I’m going to start posting anything, regardless of length or depth, like transcriptions from my driving thinking sessions, things I like, etc. It’s fun to have people stumble on your content and reach out, so this kind of maximizes those chances!

Simple VPS hardening

It’s becoming increasingly popular to reduce abstractions in your stack. A lot of people are ditching all-in-one cloud providers for a single VPS, and others are starting full stack projects with vanilla PHP and self-hosting everything down to the db. I personally enjoy this push, but think it could be risky since few places show the full process of what configuring a new VPS really looks like. Here’s a write up on hardening to help ensure the new machine is at least a bit safer.

Questions about AI ethics: what's next?

January 2026 updates As this site is simply a time-capsule to revisit and see how my thoughts shift over time, I’m fine saying that I think I was badly wrong multiple times over the past few years regarding LLMs, the AI boom, and the future of it all. I’m done speculating. Last years’ updates on this post were garbage, and all of the answers to the questions were too. I wrote a follow up post called “Human in the loop” where I actually go into specifics on this matter with concrete experience.

Ditching and replacing the socials

Social media was initially made to make human connection easier. Rather than telling everyone in person what you did, you can just upload a quick photo and show everyone at once! But for whatever reason, it’s not really used this way anymore. Few people younger than the millennials post anything genuinely candid anymore. Most things posted are calculated, and even if they seem quick and simple, a lot of the youth spends 10-30 minutes fixing up their story or latest post to make it seem as natural as possible.

Reach IPv4 on an IPv6 host

When I began my personal site transition earlier this year, I decided to save some money and take on the challenge of an IPv6-only host. I thought it would be a great way to learn about the current state of IP and pick up new knowledge on IPv6. I was totally right in my assumption; I’ve learned a lot of new things and gotten frustrated a few times in the process! Most things I’ve ever learned have been centered around IPv4. From university classes to tasks as a software engineer, rarely does an IPv6-only network surface.

Using the minimum complexity

A lot of my life relates to complexity. My job, hobbies, and levels of motivation are all closely tied to this idea of intricacy. Specifically, the problem of optimizing for functionality without sacrificing simplicity. Tennis is an intricate sport. As a true beginner, chances are, you will spend 90% of the time picking up balls, unable to keep a ball in play for more than two shots. After learning the basics and drilling for months, you’ll improve and be able to hit much more consistently. Then, you’ll begin worrying about adding more power and angle behind your shots to be able to compete at a higher level. It’s at this point especially that you have to remember to keep it simple.

Finding my mental peace

We all have our unique idea of mental peace. I think that we know about it subconsciously and move our way towards it, even if we don’t explicitly know what or where it is. Now that the sun is out and the temperature is nice, I’ve been going on a walk through the neighborhood every day. Sometimes with my phone to take some quick photos, but usually just with a watch to track my steps. I’ve done just about every permutation of turns on the streets and seen every home multiple times.

Blog without a CMS

Ever since I started making websites, I have always wanted to think up a great way for friends and family to manage their own blog site without a janky CMS. A system that doesn’t require touching a command line at all and doesn’t have a ton of convoluted steps that have to be followed in a specific order every single time. I still don’t have a perfect solution, but the setup of this site is getting pretty good. Since writing my post about this space a few days ago, I’ve added a few more abstractions to my workflow to help myself focus as much on the writing as possible. Reducing complexity seems to help a lot of people write more.

Reflection on AI

Over a year ago, I wrote about my main use case for LLMs. At that point in time, the general public was finally going wild with ChatGPT. It seemed like the entire world was impressed at once. After using ChatGPT for a few weeks, I wrote that I thought, “my reliance on these tools will grow substantially.” 15 months later, I can confirm. These tools changed my life. Right now, my Mac has ChatGPT, Perplexity, Claude, and even locally running llama3:70b in the dock. I use all of them for different purposes and have an entire workflow mastered, knowing which to ask certain types of questions to. I usually know quickly when an answer is going to be garbage and have good ways of combining as many sources as possible. Despite all of this, I am tired.

About this space

Every year since 2019, I’ve dramatically changed the design or functionality of my personal site. Usually, I make some type of change because I want to try out different stacks or get inspired by someone else’s setup. This year Although the design is going to stay just about the same, I’m going to be making the following changes over the next few weeks. Moving away from Next.js and Vercel for my personal site. Self hosting and automating its infra management myself. Styling the majority with the TailwindCSS executable. with plain css. Rendering the markdown pages to a static folder with Hugo. Minimizing and containerizing the built site. Serving the pages on a tiny container with a small reverse proxy file server. Gin based API for backend tasks such as signing up to the newsletter using a variation of my go-web-server. Writing my posts out on any of my devices on my iCloud Obsidian vault, then building and deploying in one step. Privacy-first statistics with GoatCounter (to do). Why? In my most recent job, I’ve gotten interested in infrastructure and reliability. With heavy abstractions, it’s not easy to manage the entire system yourself and get the satisfaction of knowing how every piece works. Additionally, I have grown fond of the manifesto of Obsidian, specifically in the aspect of durability and reducing dependencies in every place possible.

Making art in 2024

Update from January 2026 Humanity is not necessarily what makes art feel good. So far, the idea of “good” art has not changed that much to me specifically. For others, it clearly has. I am seeing frequent misclassifications of real art as “AI” online. For example, actual human editing mistakes misclassified as a hallucinated artifact or a beautiful sunset called “too perfect” and generated. It’s the same thing with other fields: a master steering the tool well can result in a great finished product. Sloppy steering is what feels lifeless.

Why I am available for hire

Update from January 2026 I forgot to update here a while back. I am not available for hire anymore, and haven’t been for quite some time now. This business model taught me a lot about some of the most difficult parts of doing business. Distribution and clear communication especially. The thing is, making one-off solutions for people is difficult because many times, they have no idea what they really want. They just know a few things, such as if it’s not exactly right, or if it’s missing something they think they want. As the developer in this case, it’s also necessary to convert rough requirements into reality without any technical terms.

The art of teaching

Helping a student build confidence with a topic starts with creating a supportive and non-judgmental learning environment. Learning is much easier when as a student, you are genuinely enjoying the process. This is hard to do in the overly common cases of your instructor being condescending, screaming at you, or making belittling remarks. Are you a good teacher? In moments of high stress, are you able to take a breath and keep the student feeling confident? I don’t think many people are naturally great at this, but we are able to get much better through learning how to be patient with our students. This patience feels related to the beauty of rhetoric. Being convincing to the student that they can make progress, and that they are not the issue in the moment.

Building out a newsletter

Over the weekend I built a newsletter starter kit for Node apps to easily handle all of the key elements of a beautiful newsletter. The first step was creating a way for users to sign up. As of now, this is very basic. It’s just a form on the bottom of my site’s homepage. There is middleware that checks a small key-value store to reduce chances of spam to the endpoint. Then, the form input is validated against multiple email checks to mitigate bad sign ups. Finally, a confirmation email is sent to the address and the email is added to the users database as unverified. If the user clicks the verification link in the email they are set to verified, otherwise they will be purged in the next purging cycle.

Constructive criticism

Although some people hate being criticized, it seems like others are up for the opportunity to use an outside perspective. I really appreciate these people. Especially when they are experts in their domain, allowing outside opinion or being publicly open to schooling takes guts. Additionally, it adds confidence to the group. When people are willing to take the truth, more truth can be spread around. As long as it stays mild, this confidence grows quickly to become efficiency. No more beating around the bush, just flat out tell the guy that respectfully, his idea sucks.

Back in my day

I think time generally messes with me somehow. It’s hard for me to imagine that one day all of this is gonna be vintage. Or old school. Not too far down the line, it’s gonna be a lot of “back in my day,” about things that seem set in stone right now. Kind of excited for this era. I enjoy growing with the times and undergoing constant change. The big difference here, is that with age, some ego must be set aside. Possibly for the first time, you learn much more from the youth rather than people perceived as “masters.”

LLM reliance

Something I’ve noticed recently is how over time, a lot of my Google queries have gotten much more complex. Beyond just complex, they’ve become abstract and sometimes have unverifiable answers. In high school and college, the queries slowly shifted from basic knowledge questions to more of a “how to” style. This meant that a lot of times, videos on YouTube were helpful for learning. I used to think that the creators of these videos were geniuses. Like how in the world does this guy know how to solve all of these integrals?

Finished with school for now

On May 13 I officially got my B.S. in Computer Science. This was a journey that was rewarding, frustrating, fun, and demanding all at once. I realized that Focusing on my own growth is all that matters. There is enough time. Progressing is impossible without failure and looking like an idiot for a while. Recognizing that there are things to learn is a good thing. Feeling smart is usually not so good. There’s more to everything. I feel grateful for My parents, for allowing me to be able to stress out over classwork and not financial burdens. My best friends, coworkers, and first year roommates for shaping my vision of the world and making me listen. Popak, for being the best boss ever and taking a chance on me. The great professors that made me work hard and think for myself. Most notably: Ben Shen, Vadim Ponomarenko, Octavio García, and Michael Domínguez. Though SDSU shares many of the flaws of other large universities, I appreciate some of the things that they do well. One thing that had a positive impact was the Chicana and Chicano Studies Department. I’m glad I took these classes to fulfill GE requirements, as they were uniquely interesting and important for my development.

Other

Activity

Loading...

Getting track from Spotify

Loading...

Getting activity from Strava

Loading...

Getting contributions from GitHub

Contact

Get in touch by direct message or by email at [email protected]. Subscribe for occasional updates with your email below.