Jason Lernerman's Portfolio

# About Me

Hi, my name is Jason and I have been programming for a while.

I've worked on a lot of fun and interesting projects, as you will see if you read on, and have now graduated from Penn State University ↗! If my experience sounds like something you are hiring for or know someone who is hiring for, please contact Jason ↗!

# Job Experience

# MidnightSky, Software Engineer

What's MidnightSky?

MidnightSky is a startup game company (2 developers, 3 administrative staff) that runs a Minecraft Server with ~75 concurrent players (at all times of the day) and several thousand monthly active users where I lead feature development from July to October 2025.

What was the tech stack?

The tech stack was a large (50K LOC+) Kotlin and Java project that stored data in a MongoDB database and eventually PostHog.

What did you do there?

I designed several large new features from the design stage all the way to the implementation stage along with support from administrative staff. Then, we launched a new "season" (3 month period in which everyone starts the game from scratch with whatever new features came in the new update).

Did you do anything else?

Funny that you ask, yes I in fact did. Once we released a new season of the game, I quickly learned we had zero analytics about how users were interacting with both existing features, and the new features I had created. This made it hard to know whether any of the thousands of magic numbers the game had needed to be tweaked.

What did you do about the lack of analytics?

I designed and implemented an interface for events to be sent from Kotlin to PostHog to allow for data-based decision making for all of the game staff. This addition started from neither me nor anybody else on the team knowing anything about analytics, to the first event, to the first graph, to leading a seminar amongst the team how to make more graphs, to eventually having the ability for any member of the team being able to make a graph for what they were looking to monitor without even needing to loop in a developer. All in all, a success much larger than I could have imagined at the outset.

# Dataset AI, Software Engineer

What's Dataset AI?

Dataset AI is a startup AI company (3 engineers) where I worked as a Software Engineer from January to May 2025.

What was the tech stack?

The tech stack was a (5K LOC+) React frontend, a (10K LOC+) Python backend and data stored within Google Cloud's Firebase database.

What did you do there?

I collaborated with a team of 3 to build a web app which supported an excel-like editor which allowed for the user to speak to multiple AI model conversations in parallel. The main use case for this was comparing a fine-tuned model with a base model across many different prompts at once.

Anything else you would like to mention?

Yeah, I also learned how and then optimized a React app that had gotten slow using industry tools like react-scan, resulting in bringing the experience back to usable for the webapp.

Is that the only project you worked on?

No, later into this position I was reassigned to work on a different team within the parent company which maintained a (10K LOC+) React Native AI chat bot supporting Web, iOS, and Android for about 1 million monthly active users

# Vue Technology LLC, SWE Intern

What's Vue Technology LLC?

Vue Technology LLC is the company that sponsors Vue development (and works closely with ByteDance, the company which owns TikTok) where I did a Software Engineer Internship from December 2022 to January 2023.

What was the tech stack?

The tech stack that I worked on was an open source Rust project.

What did you do there?

I implemented an algorithm called a call-flow graph to an open source project called oxc which enabled saving significant bandwidth when communicating between website and client code. These improvements were contributed to a Rust application that has 2 million weekly downloads on npm, it's called oxlint ↗.

Was the work open source?

Yeah it was, you can take a look at some of the work in the PR here ↗, the work was later merged within this PR ↗.

# Personal Projects

# reactive-layout, npm Package

What's reactive-layout?

reactive-layout is a Vue 3 layout engine for building split-pane, tabbed interfaces with drag-and-drop. Think VS Code's panel system — resizable splits, draggable tabs, and drop-to-split — as a reusable package. It's published on npm ↗.

When did you make it?

I built it in March 2026. I extracted it from LearnTensors, a coding practice platform I was building, when I realized the layout engine was general-purpose enough to be its own package.

What was the tech stack?

Pure Vue 3 with TypeScript — zero dependencies beyond Vue itself. It uses Vue's reactivity system for the layout tree, provide/inject for extensibility, and the HTML5 Drag and Drop API for tab movement.

What features does it have?

Recursive split panes that nest as deep as you want, drag tabs between panels or reorder within a panel, drop on panel edges to split horizontally or vertically, resizable panes with minimum size constraints, optional localStorage persistence, and SSR safety. The consumer provides their own panel content and tab icons via provide/inject, so the layout engine stays fully generic.

Can I try it?

Yeah, there's a live demo ↗ and the code is on GitHub ↗.

# ColorPicker, macOS Menu Bar App

What's ColorPicker?

ColorPicker is a lightweight macOS menu bar app for picking colors from anywhere on your screen. Click the eyedropper icon, hover over any pixel, and click to copy the hex code to your clipboard.

When did you make it?

I built it in March 2026.

What was the tech stack?

It's a native macOS app written entirely in Swift using AppKit and Core Graphics. It runs as a menu bar utility (LSUIElement) with no dock icon — just a small eyedropper in the status bar.

Any interesting technical challenges?

The main challenge was color accuracy. On modern Macs with Display P3 screens, the standard NSBitmapImageRep API returns colors in the wrong color space, producing incorrect hex values. I solved this by reading raw pixel data directly from the CGImage, bypassing the color management layer entirely to get accurate sRGB hex codes.

Can I see the code?

Yeah, check it out on GitHub ↗.

# Portfolio Website, Vue App

What's this?

It's the website you're looking at right now — jasonlernerman.com ↗. A portfolio site with a conversation-style UI that presents my work experience and projects as Q&A threads.

When did you make it?

I built it in March 2026.

What was the tech stack?

Vue 3 with TypeScript and Vite. It uses hash-based routing, a collapsible sidebar, and all the content is driven by a single JSON data file. Styling is a custom dark theme with the Lora serif font.

Can I see the code?

Yeah, check it out on GitHub ↗.

# Cerium, SwiftUI App

What's Cerium?

Cerium is an AI chat application I worked on to learn AI model API's and the data structure of a typical AI chat app.

What was the tech stack?

The frontend was a SwiftUI iOS native app. The backend was a TypeScript API through Convex (a serverless function provider similar to AWS Lambda or Cloudflare Workers). The database was Convex's builtin document store (like MongoDB).

What did you do there?

I designed and implemented a SwiftUI mobile app similar to the ChatGPT mobile app.

Can I see it on the iOS App Store?

Yeah absolutely, take a look at it here on the App Store ↗.

# Notable OSS Contributions

# Essays

# Uses I've Found For Claude Code March 24, 2026

  • Making webapps. [1] ↗
  • Uninstalling programs (E.g. Uninstall Adobe Creative Cloud, Uninstall Hammerspoon, etc)
  • Patching dependencies to work as I would like them to. [1] ↗
  • # On Claude Code March 22, 2026

    One of the largest value creation events has been Claude code's popularization of the $20 / $100 / $200 per month subscriptions for an almost endless supply of staff software engineer level contributions to a codebase, available on tap. To act as if that isn't true is to act as if the creation of software wasn't bottlenecked by the pipe size. I don't believe this to be true because for the longest time, the actual largest barrier on the widespread creation of software has been how quickly can idea guys get their ideas down on paper before the idea fades. To say this isn't so is to act as though execution speed is not directly proportional to opportunity test speed.

    Yes, your existing enterprise applications of code are indeed bottlenecked by the slow death of scattered task requirements split amongst non-easily-accessable tools which are of course not machine-interactable. However, I am not talking about the enterprise use case when I make this statement. I am talking to the multitude of people that are now happily using coding tools to build every idea that pops into their mind for no reason other than that it is now possible. And in my eyes, that is beautiful.

    For a while, I wasn't a believer. I'd seen many different AI models come and go and had become fatigued by the seemingly endless barrage of "innovations" that amounted to nothing more than some numbers going up, numbers that meant zip to me. However, recently, I interviewed with a company, and one of their interview rounds they set me up with a codebase that they had prepared ahead of time with some bugs and a backlog of features, and told me that I had the next ninety minutes to fix up the app as much as I could, and to act as if there was a demo in 90 minutes of the application using AI tools, as their VP of engineering and a staff engineer would watch my performance.

    The interviewer then spent the next 11 minutes trying to figure out how to send me a 1.5gb zip file, a problem that the VP of engineering had not thought of until that exact moment. I half-in-jest suggested that he just ask Claude, and he agreed and started that up. I then asked him if there were node_modules in that zip, an answer which I'm sure will shock noone, as he said there were.

    Regardless, I finally got the project running on my machine and started up Claude Code and started firing on all cylinders. After those 90 minutes, I felt a feeling similar to when I would push myself to prepare for a class's final exam for the weekend before finals, that is, I felt as though I really enjoyed doing this, I just wish I had more time to. So even though I walked out of that interview without getting the job, I left with a new appreciation of Claude Code and how thoroughly capable it really was at this point in time.

    The next thing I did was build my portfolio website, jasonlernerman.com in the design of Claude's web ui, having been inspired by various websites that clone Google's UIs for a different use case. While working on the site, I felt something I hadn't felt with programming in a while. I felt the possibility returning to my fingertips. Even though I had little to no CSS chops, that had no bearing on my ability to build a beautiful (in my eyes) website as soon as I could put the words down into Claude Code.

    As a takeaway, I would say that I never would have known the ability of Claude Code without that interview, and I would liken this to many stories I've heard of people being pushed in the deep end and told that this was the only option, and them coming out of the experience with a newfound ability to perform that they hadn't known they had within them prior. I really do feel like doors are opening for the curious in the programming world, if you really go in open-minded.

    And yes, I did write this (without AI) while waiting for a Claude Code prompt to complete.

    # How I Started Programming March 19, 2026

    Since way back in senior year of highschool, when I decided I would learn JavaScript to make a minecraft bot ↗. Then I learned TypeScript so I could make APIs ↗ for myself and others. Around the same time I also started learning Java because if you're already making minecraft bots you may as well start making minecraft mods ↗ and contributing to Java tools ↗ for JavaScript minecraft bots. Since then, I learned Kotlin, which is the TypeScript to JavaScript in the Java world, and continued making minecraft mods ↗ and minecraft plugins ↗. Around this time, I took a look around the programming landscape and tried out Gleam, which is a growing programming language that compiles to Erlang, or in my use case JavaScript, for more minecraft mods ↗.

    After that, I started looking into other things which I found interesting, like data presentation formats and databases and stumbled upon Trustfall. Trustfall is, according to the github README, "A query engine for any combination of data sources. Query your files and APIs as if they were databases!". And that's what I did for a while, until I wanted to expand the project even more, being a programmer myself, I created a github adapter ↗ and contributed back to the original project ↗ under the guidance of the extremely patient and helpful maintainer.

    Later, I took my Rust knowledge on the road when I got interested in learning about linters and a brand new project at that time, OXC, which describes itself as, "A collection of high-performance JavaScript tools.". I found this premise interesting, and I also found Rust to be a great language for new contributors to a project, so I spent a good amount of time contributing to this project too ↗.