<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://newerror.bchen.dev/feed.xml" rel="self" type="application/atom+xml" /><link href="https://newerror.bchen.dev/" rel="alternate" type="text/html" /><updated>2026-06-24T22:03:28+00:00</updated><id>https://newerror.bchen.dev/feed.xml</id><title type="html">A New Error</title><subtitle>A quiet place to think out loud.</subtitle><author><name>Brendan Chen</name></author><entry><title type="html">Concerns on agentic development</title><link href="https://newerror.bchen.dev/p/concerns-on-agentic-development/" rel="alternate" type="text/html" title="Concerns on agentic development" /><published>2026-06-24T00:00:00+00:00</published><updated>2026-06-24T00:00:00+00:00</updated><id>https://newerror.bchen.dev/p/concerns-on-agentic-development</id><content type="html" xml:base="https://newerror.bchen.dev/p/concerns-on-agentic-development/"><![CDATA[<p>I feel the weight on this one, given how enthusiastically I promoted it in previous posts.</p>

<p>Starting with the ground truth: agents and LLMs hallucinate, a <em>lot</em>. They often get things wrong on the first try, and need either systematic validation (e.g. tests) or a human to push back on what they’re doing.</p>

<p>What I’ve discovered is that it’s all too easy to push aside the latter if you have the former. Tests can create a false sense of security. It’s often the case that tests can’t cover everything because of a technical limitation. On iOS, you can’t run tests against the real screen time API in the simulator. Mocks were invented for just this purpose. But a mock also obscures how an external API actually works, and the agent can judge incorrectly in this case.</p>

<p>To give an example, a feature I recently added within <a href="https://github.com/brendan-ch/OpenAppLock/">OpenAppLock</a> was push notifications. One case where a notification should be delivered is when you’ve used an app for a certain amount of time. On a 30-minute time limit, the notification is designed to fire in a background event around 25 minutes into that limit. Separately, there’s a usage counter in the app which only updates in the foreground. Skipping out on some details, Claude read a log of the time limit event firing in the background, thought that was a <em>bug</em> as it didn’t update the <em>foreground</em> usage counter continuously, and also concluded that the notification would get batched in with that event.<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">1</a></sup></p>

<p>It feels like every engineer uncovers a similar experience: they code something with an LLM, attempt to fix a behavior they notice, and the LLM trips over itself trying to “reason” about a fix. Maybe they get mislead by an incorrect doc comment written by a previous agent. Even if they correctly explain how an API is supposed to work, they stumble on interacting with it themselves. More often than not, it’s when you start looking closely at the code when something just seems <em>off</em> about the way an LLM is doing something.</p>

<p>I say this after I’ve implemented the adversarial review loops, the test-driven development loops, and more into my workflow. I thought that software was different in that you can verify correctness. That’s why I happily embraced agents strapped with a software testing loop, while being skeptical of LLM usage in other fields. Perhaps I haven’t done enough to improve the correctness of these systems. Still, even the smallest of errors and confusions continuously compound at the pace of agentic development. Without the tacit knowledge and immersion within a codebase, it’s way too easy to miss the issues that crop up.</p>

<p>I’m not saying no to agents, because there are still many cases where they’re useful. I recognize that agents will continue to stick around in software. But I really, really don’t want them to make me dumber as an engineer anymore.</p>

<hr />

<div class="footnotes" role="doc-endnotes">
  <ol>
    <li id="fn:1" role="doc-endnote">
      <p>By the way, Apple’s screen time APIs are <a href="https://habitdoom.com/blog/wwdc-2026-screen-time-wishlist">notoriously finnicky</a>. It’s 100% possible that a notification gets batched like this, and the only way to verify it doesn’t is manual testing. The issue I take here is the “reasoning” that Claude used to reach this conclusion. <a href="#fnref:1" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
  </ol>
</div>]]></content><author><name>Brendan Chen</name></author><summary type="html"><![CDATA[Turns out agents still make baffling mistakes]]></summary></entry><entry><title type="html">Agents, coding by hand, and nap attacks</title><link href="https://newerror.bchen.dev/p/agents-coding-by-hand-and-nap-attacks/" rel="alternate" type="text/html" title="Agents, coding by hand, and nap attacks" /><published>2026-06-21T00:00:00+00:00</published><updated>2026-06-21T00:00:00+00:00</updated><id>https://newerror.bchen.dev/p/agents-coding-by-hand-and-nap-attacks</id><content type="html" xml:base="https://newerror.bchen.dev/p/agents-coding-by-hand-and-nap-attacks/"><![CDATA[<p><em>By the way, I posted a follow-up about the <a href="/p/concerns-on-agentic-development/">concerns I have with agentic development</a>.</em></p>

<p>What should a recent software engineering graduate do to advance in the industry, in June 2026? There are a flurry of different opinions on the internet right now. No, I don’t know the answer. This has been a fairly confusing time for me.</p>

<p>The one that stands out for me: I like coding by hand <em>and</em> working with agents. Much of the online advice tries to side with one or the other. And, to be clear, I don’t think the advice on either side is bad; bits and pieces can co-exist. Yes, agents can be helpful to software engineers. No, agents cannot effectively replace them; I doubt they’ll reach that point with LLMs as the backbone. I don’t think someone is “behind” if they don’t use agents, just like they’re not “behind” if they don’t exclusively program in a modern language with nice features. It’s a technology fit for certain groups of engineers in certain use cases, but not all of them.</p>

<p>There are people pushing full steam ahead with agentic development, while others are sick of even hearing the word. There are people I’ve spoken to, both back home in California and in Atlanta, who like the programming portion for what it is. I resonate with this viewpoint. There is no other feeling like the one of pushing against the abstraction laid out in front of you, full focus, and coming up with your own. Seeing how the behavior of your program changes falls naturally into this process.</p>

<p>On the flip side, I’m drawn to the thrill of launching things. This isn’t in an entrepreneurial sort of way. I think it’s my way of pushing my ideas onto the world, beyond the programming abstractions in front of me. I want to see how the world reacts to it.<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">1</a></sup></p>

<hr />

<p>On another note, I’ve been having nap attacks recently. The attack usually hits during my mid-afternoon slump, so I originally attributed it to just that. But no, I think this is something more than that. On days where I’m not managing agents, it never hits as hard. Normally I would get by with coffee, but when this happens, it is literally <em>impossible</em> to focus unless I lay down for a bit. I take off my headphones, and suddenly my vision gets blurry.</p>

<p>Installing the sofa in my new apartment has helped to soften the transition a little bit.</p>

<p>Once I lay down and close my eyes, it’s like my brain gradually stops pounding. I usually wake up and I can keep going for another hour, but it inevitably hits again. I go lay down some more. Not long afterwards, I might not be able to even <em>look</em> at what the agent is doing without feeling like my head’s gonna explode. All I need for this to trigger is seeing Claude Code clicking around on an iOS simulator.</p>

<p>This is a phenomenon that has been <a href="https://steve-yegge.medium.com/the-ai-vampire-eda6e4f07163">written about before</a> by people far more experienced than me. Now that the easy work can be automated, what’s left is mostly the challenging design work, which is <em>exhausting</em>. I just (naively) never thought it would hit me this early in my career.</p>

<p>There’s a feeling where if you’re immersed in a piece of media for too long and then exit, my head pounds for a bit and I need to re-adjust. This happens to me when I play games. Working with agents is like this combined with the information overload of speedrunning systems design.<sup id="fnref:2" role="doc-noteref"><a href="#fn:2" class="footnote" rel="footnote">2</a></sup> If agents have any place in a production system, it would be with a human at the helm of the system design, drafting and reviewing how systems are designed and reworked over time.<sup id="fnref:3" role="doc-noteref"><a href="#fn:3" class="footnote" rel="footnote">3</a></sup></p>

<p>To pile more fuel onto the fire, it doesn’t help that with the correct systems in place, agents can run 24/7. In conjunction, it is desirable to have a mechanism where the human can check on the agent. When I tried this, I sometimes got the urge to check on the agent to see if it was stuck on something, or if it was taking things in a direction I didn’t want it to go. These checks have actually led me to re-steer the agent a few times, which further justifies their existence. But they’re also exhausting to deal with.</p>

<p>The lack of determinism in agents, even the ones powered by the best LLMs, makes this a difficult problem. Maybe the correct direction is to clamp agents down into a more deterministic system, such as a harness with issue tracking and very specific loops. I’ve talked with people working on this, and I think this direction shows some promise.</p>

<hr />

<p>I still don’t really have the answer to the question in the beginning; I feel like few people really do. I’m just guessing and leaning into what I’ve experienced. Code by hand, work with agents, and if the nap attacks hit too hard, go and live a little.</p>

<hr />

<div class="footnotes" role="doc-endnotes">
  <ol>
    <li id="fn:1" role="doc-endnote">
      <p>I really like how this idea was discussed in <a href="https://podcasts.apple.com/us/podcast/dialectic/id1780282402?i=1000758140857">this Dialectic podcast episode with Celine Nguyen</a>, hosted by Jackson Dahl. <a href="#fnref:1" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:2" role="doc-endnote">
      <p>As a sidebar, games usually have built-in downtime (e.g. the time between quests in an open-world game), and only certain genres involve working with a ton of inputs and information at once. <a href="#fnref:2" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:3" role="doc-endnote">
      <p>On a micro level, I would never tell Claude to “make me an agentic coding harness and package it fully within an iOS app”; it falls apart once you hit the architectural design side and realize that iOS is far too locked down. Sometimes I use LLMs to help me brainstorm what’s theoretically possible, though. <a href="#fnref:3" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
  </ol>
</div>]]></content><author><name>Brendan Chen</name></author><summary type="html"><![CDATA[Why I both code by hand and work with agents, plus nap attacks]]></summary></entry><entry><title type="html">OpenAppLock and vibe coding</title><link href="https://newerror.bchen.dev/p/openapplock-and-vibe-coding/" rel="alternate" type="text/html" title="OpenAppLock and vibe coding" /><published>2026-06-19T00:00:00+00:00</published><updated>2026-06-19T00:00:00+00:00</updated><id>https://newerror.bchen.dev/p/openapplock-and-vibe-coding</id><content type="html" xml:base="https://newerror.bchen.dev/p/openapplock-and-vibe-coding/"><![CDATA[<p><a href="https://github.com/brendan-ch/OpenAppLock/">OpenAppLock</a> is an app blocker with some handy features to curb screen time usage. It is also the first time I’ve been <em>this close</em> to taking a vibe coded app to production.</p>

<p>The development process started out like this:</p>

<ul>
  <li>I started Xcode and Claude Code</li>
  <li>I activated the built-in MCP integration in Xcode</li>
  <li>I had it generate a list of requirements based on a recording</li>
  <li>I let it run in auto mode for some number of hours</li>
  <li>I installed the app on my phone, and played around with it</li>
</ul>

<p>This video actually did the bulk of the work for me. Claude recognized I had <code class="language-plaintext highlighter-rouge">ffmpeg</code> installed on my system, and began extracting frames locally. From this, it got pretty far in creating a local backend and layering a frontend on top of it. This was the first insight: it was fairly easy for Claude to re-create the app because screen time blockers operate mostly on device. OpenAppLock is a fully-local app, and everything stays on-device. There is no backend to orchestrate, which is one less integration that I needed Claude to talk to.</p>

<p>Not only this, but the only major external API I had to talk to for this app was Apple’s screen time API. There were few dependencies even by the standards of a standalone iOS app.</p>

<p>I think what drew me to this project, and why I kept it as opposed to other vibe coding experiments, was that it was immediately useful to me. No, not all of the features worked on the first try, but the one most important to me (scheduled times for app blocking) did. Arguably, <em>still</em> not all of the features work, which is the real hurdle I’ll need to clear before putting it on the App Store. But I immediately saw how this app would fit into my personal life; then, I saw how this app could be useful to others.</p>

<p><a href="https://github.com/brendan-ch/OpenAppLock/">Check it out</a> if you’re interested! I can’t promise that everything works right now. But, I’ll get around to fixing the interactions with the screen time API + making the code better designed for humans to work on.</p>]]></content><author><name>Brendan Chen</name></author><summary type="html"><![CDATA[A new app I'm launching + thoughts on vibe coding]]></summary></entry><entry><title type="html">On making a game</title><link href="https://newerror.bchen.dev/p/on-making-a-game/" rel="alternate" type="text/html" title="On making a game" /><published>2026-06-11T00:00:00+00:00</published><updated>2026-06-11T00:00:00+00:00</updated><id>https://newerror.bchen.dev/p/on-making-a-game</id><content type="html" xml:base="https://newerror.bchen.dev/p/on-making-a-game/"><![CDATA[<p>This essay is how it feels to make a game, which is different from any other piece of software I’ve worked on. These notes are specifically in relation to a cyberpunk-themed game show shooter titled <a href="https://bchen.dev/projects/resonance/">Resonance</a>.</p>

<p><img src="/assets/img/on-making-a-game-1.png" alt="A screenshot of inside the game." /></p>

<p>Immediately, this project took on a wider scope. Networked multiplayer brings many challenges along with it. It’s not difficult to understand conceptually, but everyone must know how to work with it. Add in real-time events that can happen anytime during a round, and a scoring system that is heavily dependent on timing and showmanship? All for a roughly ten-person team to complete in five-ish months? Good luck.</p>

<p>Several months into this project, there are so many things that I want to fix, given the time. But we’re at a point where the game can be seen as <em>fun</em>. And to a degree, I think that’s mostly what matters.</p>

<p>It’s more interesting to smash every aspect of the game together instead of trying to perfect this piece of software. That can’t be said about a regular old frontend app or a critical piece of backend infrastructure.<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">1</a></sup> You can have perfectly structured code, but if you can’t move at the pace of the different roles on a team, then the game becomes less fun. The gameplay mechanics, the game <em>feel</em>, and how it looks all contribute far more to a game’s <em>fun-ness</em> far more than a refactoring job.</p>

<p>All in all, <em>fun-ness</em> is a significantly different metric than I’m used to. You can’t really optimize for it; fun-ness is not to be solved as an engineering problem. Fun-ness is a uniquely human attribute that can not only be assigned to games, but to all sorts of human creation. It cannot be ranked by artificial intelligence, or other forms of automation, in the same way that stability can. If humans don’t find something fun, then it’s simply not fun.</p>

<p>From a traditional engineering perspective, it feels like there’s less affordability to cut features that “aren’t achievable.” You can cut game mechanics from a design perspective, but that is not the role of the engineer.</p>

<hr />

<p>There was a talk at this year’s GDC that I missed and wish I had gone to, and it was about the creation of Peak. My key takeaway from my friends who attended it was the term <em>cowboy coding</em>, which is just another way to say: fuck it, we ball.</p>

<p>And I love this attitude for games, in a way that I don’t for critical infrastructure.<sup id="fnref:2" role="doc-noteref"><a href="#fn:2" class="footnote" rel="footnote">2</a></sup> Ultimately, for a small team, you’re limited by what you can do. Games are such a complex piece of software, and for a small team, that imposes a lot of limitations. With a big team, you can throw all the resources you have at, say, QA or build engineering, and ensure stabilization that way. With a small team, most of your team needs to be focused on <em>finding the fun</em>. It’s okay if the code suffers a bit as a result.</p>

<p>Of course, there comes a point where it’s good to take a step back and control for code quality. It just can’t come at the expense of fun. Without code quality, there is still a game; Without fun, there is none.</p>

<div class="footnotes" role="doc-endnotes">
  <ol>
    <li id="fn:1" role="doc-endnote">
      <p>To be fair, a frontend app must also optimize for usability, which is also a human attribute. But fun-ness is interesting because it’s such a uniquely emotional feeling. <a href="#fnref:1" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:2" role="doc-endnote">
      <p>Around the time of the conference (March 2026), there were several major AWS outages caused by a mix of AI and limited oversight. <a href="#fnref:2" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
  </ol>
</div>]]></content><author><name>Brendan Chen</name></author><summary type="html"><![CDATA[And how it's different from other software]]></summary></entry><entry><title type="html">Downscaling the college party</title><link href="https://newerror.bchen.dev/p/downscaling-the-college-party/" rel="alternate" type="text/html" title="Downscaling the college party" /><published>2026-02-28T00:00:00+00:00</published><updated>2026-02-28T00:00:00+00:00</updated><id>https://newerror.bchen.dev/p/downscaling-the-college-party</id><content type="html" xml:base="https://newerror.bchen.dev/p/downscaling-the-college-party/"><![CDATA[<figure>
  <img src="/assets/img/downscaling-the-college-party.jpeg" alt="Literally every party I went to felt like this" />
  <figcaption>Literally every party I went to felt like this</figcaption>
</figure>

<p>I’m not really a party person.</p>

<p>Sure, I went to some parties during my freshman year, but I can’t say that I got anything out of them. They’re a hazy memory in the distant past, a blur on a forgotten album cover.</p>

<p>Instead, the hangouts I go to now are a little different. My friends have taken to calling it the “chiller,” which implies a completely different vibe than the traditional college party. And it is.</p>

<p>You’ll see the doom scrollers, the people lying on the couch, joined by those who drank too much alcohol that night. On the other side of the room, there are the people playing Settlers of Catan or the (officially licensed) <a href="https://shueisha-games.com/en/games/jujutsukaisen/">Jujutsu Kaisen survival game</a>. Maybe there’s some people drinking on a balcony or back porch. Occasionally there’s a movie playing, which might be in the background or with everyone gather around. The lights are usually dimmed out.</p>

<p>It’s not quite a party, but it’s also not just a hangout. You could think of it as a downscaled party with more breathing space, literally and metaphorically. Or, it’s like a hangout that’s scaled up with concurrent activities happening. Whatever the interpretation is, the core premise is the same. This is the college party, but decentralized.</p>

<hr />

<p>A compelling reason for the chiller might be the expectations of society on this generation, which have caused some chaos. <a href="https://www.derekthompson.org/p/the-death-of-partying-in-the-usaand">Derek Thompson</a> summarizes it well when he says that we’ve incidentally built a “world of greater professional ambition, more intensive parenting, and lavish entertainment abundance.” There’s a demographic in this generation that has never known a reality without these three elements.</p>

<p>A world of greater professional ambition is normal when it’s <a href="https://www.cengagegroup.com/edtech-research/employability-report/">harder than ever to find a job</a>, especially in <a href="https://www.finalroundai.com/blog/computer-science-graduates-face-worst-job-market-in-decades">computer science</a> where I am; the pressure is on to constantly improve one’s resume and portfolio projects. I have historically been terrible at pushing back against the constant urge to work on this, and I know others are too. Even without this direct pressure, there is pressure in the social media age to maintain a “cleaner” reputation. After all, employers <a href="https://www.prnewswire.com/news-releases/number-of-employers-using-social-media-to-screen-candidates-at-all-time-high-finds-latest-careerbuilder-study-300474228.html">check social media too</a>.</p>

<p>Intensive parenting is when my mom kept a watchful eye on my sister as she attended private school, underwent the hardest classes, and applied to top colleges. It’s also why my brother is undergoing a rotation of extracurriculars ranging from coding classes to sailing. It’s not a constant top-down directive; it’s more like instilling a belief in my siblings that this is what success looks like.</p>

<p>Finally, the abundance of entertainment has always been prevalent in our lives. For someone my age, <a href="https://www.nytimes.com/2007/01/16/technology/16netflix.html">the introduction of video streaming</a> was announced by Netflix when we were just 3 years old. Video streaming, music streaming, and social media have all displaced what came before in some shape or form. Now, with TikTok and short-form content, we’ve arguably reached the endgame of passive content consumption.</p>

<hr />

<p>Given these factors, I feel like the chiller (or whatever term your friends use) is a natural evolution of the college party. For a certain demographic, especially for one focused on their career, I would say it’s not just natural, but necessary.</p>

<p>We still want to see our friends, so why not host something which only includes these people? There are more affordances that are attractive: you don’t have to drink or do other substances, but you can. With more time dedicated to the grind, the chiller can become the primary way of engaging with friends; this is a hard-fought luxury in a traditional college party setting.</p>

<p>While I’m not advocating for intensive parenting, the fact that the trend exists contributes to this development too: with a more filtered exposure to the world, college presents an opportunity to get comfortable with friends at any pace one chooses. Personally, I know I didn’t make as many friends during my orientation week, but the ones I did eventually get to know became my friends for the entirety of college, and potentially beyond. In this process, had the humble chillers been replaced by larger-scale parties, I don’t think I would’ve made those connections.</p>

<p>Maybe the chiller concept isn’t entirely new. But in a world where the <a href="https://www.happiness.hks.harvard.edu/february-2025-issue/the-friendship-recession-the-lost-art-of-connecting">friendship recession</a> is supposedly ever-looming, I like to think that our generation still enjoys having fun, and this is what has persisted.</p>

<p>Thank you for reading.</p>]]></content><author><name>Brendan Chen</name></author><summary type="html"><![CDATA[A reluctant partyer's thoughts on the friendship recession]]></summary></entry><entry><title type="html">An exploration of WeChat mini programs</title><link href="https://newerror.bchen.dev/p/an-exploration-of-wechat-mini-programs/" rel="alternate" type="text/html" title="An exploration of WeChat mini programs" /><published>2026-02-18T00:00:00+00:00</published><updated>2026-02-18T00:00:00+00:00</updated><id>https://newerror.bchen.dev/p/an-exploration-of-wechat-mini-programs</id><content type="html" xml:base="https://newerror.bchen.dev/p/an-exploration-of-wechat-mini-programs/"><![CDATA[<figure>
  <img src="/assets/img/an-exploration-of-wechat-mini-programs-1.jpeg" alt="South Shaanxi Road in Shanghai" />
  <figcaption>South Shaanxi Road in Shanghai</figcaption>
</figure>

<p>I remember when my parents first showed me the iPhone.</p>

<p>I was still living in Shanghai. The iPhone came out in 2007, and the first iPhone sold in China was in <a href="https://www.cultofmac.com/apple-history/iphone-goes-on-sale-in-china-for-first-time">2009</a>. I was sort of mystified by the technology, but at the same time it had always been in my core memory. This is, of course, the same for most of my generation. I barely remember a time without the iPhone.</p>

<p>My first memories with smartphones were mostly playing games. These were the O.G. smartphone games: think the original <em>Plants vs. Zombies</em> or <em>Angry Birds</em>.</p>

<p>On the other hand, WeChat was more like an entity that suddenly spawned into memory. We had permanently moved to the U.S. by the time it came around. I still remembered seeing the little QQ status bar icon on my dad’s home computer, or when my mom would bring me to work. As more and more things shifted to smartphones, WeChat slowly became ever-present and QQ faded away.</p>

<hr />

<p>WeChat’s rise in China was <a href="https://eastmeetswest.substack.com/p/wechat-a-not-so-brief-history">not accidental</a>. The threat that <a href="https://en.wikipedia.org/wiki/Tencent_QQ">QQ</a> would fall to mobile competitors was realized by eventual WeChat creator Allen Zhang, who proposed a new instant messaging app to Tencent CEO Pony Ma. Under Zhang, WeChat originally launched as a simple messaging app. When that failed to gain traction, WeChat copied another competitor, <a href="https://en.wikipedia.org/wiki/TalkBox_Voice_Messenger">Talkbox</a>, to add voice messaging. This was a legitimate feature because speaking Chinese is easier than typing it, especially for the generations <a href="https://joinreboot.org/p/on-typing-chinese">before Pinyin was taught</a>.</p>

<p>Contrary to what I used to think, every feature that WeChat added was deliberate (Allen Zhang even gave a speech about their <a href="https://newsroom.wechat.com/newsRooms/NewsDetails/WhatisWeixinWeChatsdreamWeixinWeChatfounderAllenZhangexplains?from=newsDetails&amp;pageNum=4">ten principles</a>). When QR codes came to WeChat, every account got one: you could now share your account and your content in a physical space. The same QR codes were utilized for WeChat Pay, which was tied to another popular feature: the ability to send <a href="https://www.fastcompany.com/3065255/china-wechat-tencent-red-envelopes-and-social-money">red envelopes</a> of money to friends. Building from this success, WeChat introduced a “tipping” feature to public accounts such as content creators.</p>

<p>Many of these features formed the bedrock for the <a href="https://techcrunch.com/2017/01/09/wechat-mini-programs/">introduction of mini programs</a> in 2017. Instead of developing a full native app for iOS or Android, businesses could choose to develop a program for WeChat. They could integrate with the features people already used, such as chats, WeChat Pay and QR codes.</p>

<p>Tencent had, piece by piece, built a whole platform within a platform. It didn’t matter that the actual innovations came from other companies; Tencent leveraged its existing features, user base, and <a href="https://www.techinasia.com/china-hail-taxi-pay-driver-wechat">investments</a> where it could. At this point it didn’t even matter whether you owned an iPhone or Android in China, so long as you had WeChat.</p>

<hr />

<p>Why would someone choose to create a tightly-bound mini program over a <a href="https://en.wikipedia.org/wiki/Mobile_app#Native_app">native app</a> with more flexibility?</p>

<p>From a technical perspective, <a href="https://developers.weixin.qq.com/miniprogram/en/dev/framework/">developing a mini program</a> is more accessible than a native app. The mini program stack includes JavaScript and markup languages similar to HTML and CSS. While not equivalent to the web, the inclusion of web-like technologies means developers can utilize their existing skillsets.</p>

<p>This effect exists elsewhere, too. Even in the West, many popular apps (Notion, Slack, Figma as well as incumbents like Amazon and Google) primarily <a href="https://www.macstories.net/stories/the-ipads-sweet-solution/">live on the web</a>. There are many use cases that a web app work just fine for. <a href="https://en.wikipedia.org/wiki/Progressive_web_app">Progressive web apps (PWAs)</a> have only increased the flexibility of the web by including features previously restricted to native apps.</p>

<p>In this way, a mini program exists as a strange middle ground between the web app and the native app. It’s kind of a web app, but it integrates deeply with the OS, <em>just not the type of OS that we’d come to expect</em>.</p>

<p>For companies, a unique proposition of mini programs is the <a href="https://www.wechatwiki.com/wp-content/uploads/wechat-mini-program-light-app-report-fabernovel-31ten.pdf">number of entry points and possible flows</a>. QR codes are one of them: they can be placed in physical spaces and shared digitally. Another is from within a chat: if you want to see something a friend shares with you, going through a mini program becomes a must. Authentication is handled automatically with permissions, becoming a background detail instead of the maze of passwords and social sign-ins we have in the West.</p>

<p>This forms the backbone of the mini program: one should be lightweight, focused, and have multiple entry points.</p>

<hr />

<p>The other side of this discussion I’m interested in is Apple and the App Store. Knowing how <a href="https://marco.org/2021/06/03/developer-relations">Apple treats developers</a> and the contradictory enforcement around <a href="https://www.eff.org/deeplinks/2020/06/apples-response-hey-showcases-whats-most-broken-about-apple-app-store">in-app purchases</a>, I had always wondered about the loopholes that WeChat presented in the system. Were mini programs simply immune to the infamous 30% App Store tax?</p>

<p>There were several conflicts related to this. Mini programs were permitted to link to <a href="https://9to5mac.com/2024/08/14/apple-pressures-tencent-to-block-loopholes-that-allow-wechat-to-bypass-app-store-fees/">external payment methods</a>, a practice explicitly forbidden by the App Store (until <a href="https://techcrunch.com/2025/05/02/apple-changes-us-app-store-rules-to-let-apps-redirect-users-to-their-own-websites-for-payments/">recently</a>). Apple continually pressured Tencent into disabling these payment loopholes. Yet, for a while Apple didn’t apply the same level of enforcement it did for, say, <a href="https://www.theverge.com/2020/8/13/21366438/apple-fortnite-ios-app-store-violations-epic-payments">Epic Games</a> or <a href="https://www.eff.org/deeplinks/2020/06/apples-response-hey-showcases-whats-most-broken-about-apple-app-store">Hey</a>. While Apple was fighting to keep its 30% cut and <a href="https://apnews.com/article/apple-iphone-app-store-epic-antitrust-e4ae4eed9fde0ae42bd2576133af1c20">anti-steering practices</a>, these loopholes were seemingly ignored for a while.</p>

<p>This is not to say that Apple and Tencent have had other clashes in the past. Apple forced Tencent to <a href="https://www.macrumors.com/2018/01/15/wechat-tips-apple-tencent-deal/">disable</a> the aforementioned “tipping” feature for public accounts, because it was “virtual content” that needed to go through the in-app purchase system.</p>

<p>In the end, Apple reversed this ruling. Part of this was undeniably that WeChat was simply too powerful of an app: make WeChat worse on your platform, and users will <a href="https://9to5mac.com/2020/08/13/chinese-iphone-owners/">look elsewhere</a>. To cover mini programs, Apple did eventually launch the <a href="https://developer.apple.com/programs/mini-apps-partner/">Mini Apps partner program</a>, taking 15% of commissions from mini app purchases.</p>

<hr />

<p>As a developer, I think that the contrast in app distribution between China and the U.S. is an interesting one.</p>

<p>In China, businesses that normally wouldn’t make a full-fledged app could make a mini program to establish an online presence. For restaurants, storefronts, and other places offering “in-person” services, the mini program has become the primary interaction point. It certainly makes more sense to meet users where they already are, rather than inventing a way to get to them yourself.</p>

<p>Part of this idea has gained traction with several other apps wanting to become a “super app” like WeChat. In southeast Asia, <a href="https://www.grab.com/sg/">Grab</a> is a popular super-app which covers payments, food deliveries and ride hailing. In China, competitors of WeChat operate their own versions of mini programs, even going as far to <a href="https://www.w3.org/TR/mini-app-white-paper/">draft a standard</a>. In the U.S, Apple’s Mini Apps program might spur other companies to develop a platform like WeChat’s.</p>

<p>Would we be better off if mini programs were a thing here? I’m not sure. With WeChat’s model, the platform remains controlled by one company. A mini program may be more accessible to develop than a native app, but theoretically the freedoms afforded by it could disappear anytime. The web remains the most open and accessible method we have for distributing software to mobile, but even a PWA lacks the seamlessness and tight integration of the mini program.</p>

<p>There is <a href="https://dmathewwws.com/local-first-mini-apps-specification">one interesting spec</a> which solves the integration problem, yet sticks to standard web technologies and eliminates the need for a central server. Also, people are starting to use LLMs to create <a href="https://rselbach.com/your-sub-is-now-my-weekend-project">small, tailored apps for personal use</a>. All factors considered, I think there is potential for this area to grow.</p>

<p>In the meantime, I will continue to use my poor reading skills to order coffee in China…using a mini program in WeChat.</p>

<figure>
  <img src="/assets/img/an-exploration-of-wechat-mini-programs-2.png" alt="All the mini programs I’ve used to order food in China" />
  <figcaption>All the mini programs I’ve used to order food in China</figcaption>
</figure>

<p>Thank you so much for reading, and happy Chinese New Year.</p>]]></content><author><name>Brendan Chen</name></author><summary type="html"><![CDATA[And what it means for the future of apps]]></summary></entry><entry><title type="html">Reflections on LLMs as a student</title><link href="https://newerror.bchen.dev/p/reflections-on-llms-as-a-student/" rel="alternate" type="text/html" title="Reflections on LLMs as a student" /><published>2026-02-06T00:00:00+00:00</published><updated>2026-02-06T00:00:00+00:00</updated><id>https://newerror.bchen.dev/p/reflections-on-llms-as-a-student</id><content type="html" xml:base="https://newerror.bchen.dev/p/reflections-on-llms-as-a-student/"><![CDATA[<figure>
  <img src="/assets/img/reflections-on-llms-as-a-student.jpeg" alt="" />
</figure>

<p><em>Thank you to <a href="https://substack.com/@kavendanowoodruff?r=46s0lq&amp;utm_medium=ios&amp;utm_source=profile&amp;shareImageVariant=image">Kate Avendano-Woodruff</a> for helping me shape my thoughts and inspiring me to write about this, especially around the broader impact of learning and school systems. She shared with me an old speech of hers which inspired the conclusion of this essay.</em></p>

<p>It was winter break of 2022, and I had just gotten a foothold on what college life was like. I was a freshman computer science student at Chapman University’s <a href="https://www.chapman.edu/engineering/index.aspx">Fowler School of Engineering</a>. Unbeknownst to me, the following years would be significantly different compared to my first; fall 2022 was the calm before a great storm.</p>

<p>I remember casually reading OpenAI’s <a href="https://openai.com/index/chatgpt/">initial ChatGPT announcement</a>. I had no clue what they were talking about in technical terms, and the examples seemed rudimentary at best. I dismissed the initial hype around the chatbot, thinking that it wasn’t for me.</p>

<p>Yet, <a href="https://openai.com/index/gpt-4/">after GPT-4 came out that March</a>, I sensed that things were changing. I became part of the initial cohort playing around with it. I quickly made custom versions of the chatbot with tailored prompts. One of them read handwritten notes and generated summaries, while another attempted to work through math problems. I was also part of the Notion AI beta, which I used to generate essay outlines and proofread drafts.</p>

<p>This was when I first discovered that LLMs can’t actually do math, even if they could explain calculus and linear algebra pretty well. I still <em>attempted</em> to get ChatGPT to do math, simply because it was fascinating to watch. Seeing the token-by-token generation of a detailed but incoherent solution was mystifying in its own way. You could imagine the dopamine hit when it actually got something right.</p>

<p>There were few, if any, guidelines on what could be produced by LLMs for schoolwork. Suddenly, every student I knew started using it seriously. It wasn’t like a switch had been flipped, but it feels like that in my memory. Within weeks, LLMs were everywhere. Every time I walked through the <a href="https://www.chapman.edu/about/our-home/keck-center/index.aspx">Keck Center</a>, I would see laptops with ChatGPT open. Every time I collaborated with another student on an assignment, we would both try plugging questions into the chatbot. I barely remember a time in college without this experience. <em>My graduating class is the first to have had exposure to ChatGPT for almost all four years of college.</em></p>

<p>In a time of naivety, there was some truly wild imagination about what AI could do. At a Shark Tank night in a <a href="https://www.instagram.com/chapmancsclub/">local (computer science) club</a>, our group created <a href="https://docs.google.com/presentation/d/1XGKK6XUZ7JQuziwbUpiW7-nnaWXu-rCTFxQTX5EJZWA/edit?usp=drivesdk">the presentation of all time</a>. My contribution (if one could even call it that) was the DALL-E generated imagery of AI wingmen: uncanny images of well-dressed men guaranteed to improve your rizz. None of us thought that AI companionship, now a <a href="https://www.theatlantic.com/family/2026/01/ai-boyfriend-women-gender/685315/">legitimate market</a> in <a href="https://www.chinatalk.media/p/why-america-builds-ai-girlfriends">multiple countries</a>, would actually take off.</p>

<p>The early college years was the peak of my LLM enthusiasm, because we had yet to face some of the consequences first-hand.</p>

<hr />

<p>Chapman wasn’t the only school embracing this technology; it seemed like suddenly, ChatGPT and friends were everywhere. This isn’t just based on vibes: <a href="https://openai.com/global-affairs/college-students-and-chatgpt/">according to OpenAI</a>, one-third of college students in the U.S. used ChatGPT by February 2025.</p>

<p>While generative AI <a href="https://mlq.ai/media/quarterly_decks/v0.1_State_of_AI_in_Business_2025_Report.pdf">has struggled in the enterprise</a>, the base product unintentionally accommodated students from the beginning. ChatGPT had always seemed ready to replace websites like Course Hero and Chegg, <a href="https://www.finalroundai.com/blog/chegg-layoffs-2025#how-bad-is-it">the latter of which cut half its workforce</a> last year. ChatGPT was faster, cheaper, and more accessible. Where previous solutions still required students to search for answers, ChatGPT completely removed the friction of getting them.</p>

<p>Early on, I thought this was just the new norm: college was going to be a breeze as the tech improved. However, several factors helped shape a more nuanced understanding of LLMs and their consequences.</p>

<p>One belief perpetuated by the industry was that LLMs would <a href="https://www.reuters.com/technology/artificial-intelligence/openai-rivals-seek-new-path-smarter-ai-current-methods-hit-limitations-2024-11-11/">continue to scale indefinitely</a>. <a href="https://garymarcus.substack.com/">Gary Marcus’s newsletter</a>, one of my first subscriptions on Substack, <em>completely</em> subverted these expectations. It was his page, and not a computer science class, where I learned that LLM progression would hit a wall; indeed it has.</p>

<p>There were arguments that AI would fully replace coding jobs. Even if <a href="https://www.finalroundai.com/blog/computer-science-graduates-face-worst-job-market-in-decades?utm_source=tldrnewsletter#whats-really-behind-the-cs-job-crisis">the current job market slump</a> is due to a variety of factors, it still felt like a reflection of this idea. We all felt this impact equally when looking for internships, and I think this was all when we were collectively like: “…oh shit.”</p>

<p>Copyright issues over training data became prevalent. The New York Times <a href="https://www.nytimes.com/2023/12/27/business/media/new-york-times-open-ai-microsoft-lawsuit.html">sued OpenAI and Perplexity in December 2023</a>, following several author lawsuits alleging the same thing: ChatGPT could produce copyrighted text, verbatim. Further research <a href="https://www.theatlantic.com/technology/2026/01/ai-memorization-research/685552/?gift=NJpHw9fdcmQdiPa0tCBLEkPpq6_lwPrX-9Ktk1-uZPY&amp;utm_source=copy-link&amp;utm_medium=social&amp;utm_campaign=share">confirms</a> this recurring phenomenon for both text and image models.</p>

<p>All the while, the impact of LLMs on academic integrity heightened, both at Chapman and elsewhere. Chapman’s academic integrity committee handled a <a href="https://www.thepanthernewspaper.org/news/concern-and-confusion-ai-reshapes-the-conversation-about-academic-integrity">record-breaking number of cases</a> following the release of ChatGPT. Across the country, LLMs disrupted an already weak K-12 system, becoming part of a toolkit letting students completely opt out of the learning process.</p>

<hr />

<p>With some awareness on these issues, students continued to use LLMs. I continued to use it, for my classes and projects, as did others.</p>

<p>Vibe coding slowly became the norm for student projects. I figured this would eventually become the case. Out of curiosity, I took an old data structures assignment and prompted ChatGPT to do the entire thing. The results were astoundingly good for a fraction of the time.</p>

<p>I witnessed this transition firsthand as a tutor. For coding assignments, the default response from students was that they asked ChatGPT first. I would sift through code that looked suspiciously well-done. Each file looked good in theory, but they didn’t piece together to form one cohesive program.</p>

<p>Another thing that drove LLM usage was top-down messaging. The well-intentioned messaging from Fowler faculty was to have projects to showcase for employers. Nowadays, the easiest way to get there is to vibe code. I get it! It’s tempting to let AI do all the work. In my experience, though, people (and prospective employers) are interested in the technical decisions, which you <em>should</em> make yourself.</p>

<p>In the context of education, some people have equated the invention of the LLM to that of the calculator. The primary difference is that the <a href="https://tomrenner.com/posts/400-year-confidence-trick/">calculator doesn’t lie</a>. In the case of LLMs, the machine doesn’t just lie: it makes up <a href="https://garymarcus.substack.com/p/openais-waterloo">authoritative bullshit</a>, where there is no notion of truth. It’s just a token predictor. And yet, both are machines, and students would point to the machine and say that it told them to do something. I know I personally had a hard time convincing tutees and group partners when the LLM was just plain wrong.</p>

<hr />

<p>Everything I’ve mentioned so far involves students using LLMs; what happens when professors get involved in the mix?</p>

<p>At first, the reaction to LLMs from professors and faculty in the Fowler School of Engineering was mixed. To this day, some professors require citing code assistance using something similar to the following contrived example:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>#include &lt;string&gt;
#include &lt;fstream&gt;
#include &lt;iostream&gt;

using namespace std;

int main() {
    /* Begin assistance from ChatGPT: How do I read in a file line by line in C++? */
    ifstream file("hello.txt");
    
    string line;
    while (getline(file, line)) {
        cout &lt;&lt; line &lt;&lt; endl;
    }

    file.close();
    /* End assistance from ChatGPT */
    
    return 0;
}
</code></pre></div></div>

<p>(This example was fully written by me, and not, in fact, generated by ChatGPT)</p>

<p>Those same professors would ban AI assistance on quizzes and exams.</p>

<p>Other professors fully embraced AI. For software engineering at Chapman, there is a separate track of classes focused on software design patterns, testing methodologies and agile development. For one of my projects, I got full points for submitting a <a href="https://v0.app/">v0</a>-generated design alongside LLM-generated documentation. To be clear: the professor encouraged this, and I was fully transparent with how I used AI to do the assignment. Future assignments were the same, and even the provided instructions and templates had clear tells of being AI-generated.</p>

<p>I did not take this class seriously, and I attribute this to the way that AI use was encouraged. When I got AI-generated emails and assignment instructions from some of my other professors, I felt the same way. I think the worst offender of this was a training session for my tutoring job on campus: <em>literally everything</em> was AI generated, from the slides to the take home assignment.</p>

<p>Some of these experiences represent the vicious cycle that AI can bring to education: the educator generates assignment details with AI, students’ submissions are AI-generated, and the educator likely reviews and grades submissions with AI. In other words, the educator makes grading decisions based on AI. <a href="https://thenoosphere.substack.com/p/theres-a-reason-women-arent-swooning">With how inherent gender and racial biases are in current-generation LLMs</a>, this cycle has the potential to discriminate against women, people of color, and other groups underrepresented in technology. Left unchecked, my experience was a potential disaster waiting to happen.</p>

<hr />

<p>There is generally more awareness now of the consequences of generative AI and their limitations. The <a href="https://nspcbatten.org/content/uploads/sites/2/2025/07/C.Lee_White-Paper.pdf">disinformation campaigns</a> coming from authoritarian regimes like the PRC. Deepfakes becoming <a href="https://www.bbc.co.uk/news/articles/clye99wg0y8o">even easier to generate than before</a>. Multiple deaths and suicides linked to chatbots, to the point of having a <a href="https://en.wikipedia.org/wiki/Deaths_linked_to_chatbots">dedicated Wikipedia page</a>.</p>

<p>It’s hard to pinpoint when the AI “ick” started to take hold in some of my friend groups. Even though people still use AI for help on assignments, I’m sensing a weariness when it comes to AI slop on social media.</p>

<p>I mentioned it earlier, but something I realize now is that AI lets people opt out of caring. It feels disingenuous to consume AI-generated emails, assignment directions, or other pieces of writing because the other person didn’t really write it. This feels like a universal <a href="https://claytonwramsey.com/blog/prompt/">experience</a> among professors receiving fully AI-generated answers. Writing, imagery, and other media forms all constitute thinking, and there is intrinsic value in how much someone thought about the content itself.</p>

<p>Programming is a bit more nuanced. Peter Naur’s <em><a href="https://pages.cs.wisc.edu/~remzi/Naur.pdf">Programming as Theory Building</a></em> encapsulates and justifies one central idea: the theory of a program is equally, if not more, important than the source code itself. The point is to maintain a mental model sophisticated enough to justify design decisions and account for future ones. I can understand the appeal of making LLM do repetitive tasks while thinking at the design level; that is, the level at which caring matters. In my experience, if I <a href="https://github.com/brendan-ch/super-idol">tried to put LLMs beyond this</a>, projects became cluttered and broken. Putting this kind of program out in the real world results in <a href="https://news.ycombinator.com/item?id=43553031#43554611">security leaks</a>.</p>

<p>Of course, there are serious long-term consequences to opting out of learning, which includes lived experiences and struggles. If you’re a student reading this (or anyone, really), there are plenty of reasons to care about lived experiences. They are uniquely yours. Your school can’t take them away from you, nor can some corporation. I wouldn’t let AI take those experiences away, either.</p>]]></content><author><name>Brendan Chen</name></author><summary type="html"><![CDATA[On 3+ years of LLM exposure in college]]></summary></entry></feed>