<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>EnriqueMark | Thoughts and Writing</title><description>Writing as a record of thought, and a cache for it too.</description><link>https://enriquemark.com/</link><language>en</language><item><title>Hiring in the AI era, and the change in paradigm</title><link>https://enriquemark.com/en/posts/AI%20%E6%97%B6%E4%BB%A3%E7%9A%84%E6%8B%9B%E8%81%98%E4%B8%8E%E8%8C%83%E5%BC%8F%E8%BD%AC%E6%8D%A2/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/AI%20%E6%97%B6%E4%BB%A3%E7%9A%84%E6%8B%9B%E8%81%98%E4%B8%8E%E8%8C%83%E5%BC%8F%E8%BD%AC%E6%8D%A2/</guid><description>There&apos;s one claim I think is right, that hiring, the whole approach and the whole system, is going to change over time, especially now in the AI era. Because coding by hand the old way pays less and less...</description><pubDate>Sat, 01 Aug 2026 00:00:00 GMT</pubDate></item><item><title>What Bun&apos;s full rewrite taught me</title><link>https://enriquemark.com/en/posts/%E5%85%B3%E4%BA%8EBun%E5%9C%A8%E5%85%A8%E9%87%8F%E9%87%8D%E6%9E%84%E4%B8%AD%E7%9A%84%E7%BB%8F%E9%AA%8C/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/%E5%85%B3%E4%BA%8EBun%E5%9C%A8%E5%85%A8%E9%87%8F%E9%87%8D%E6%9E%84%E4%B8%AD%E7%9A%84%E7%BB%8F%E9%AA%8C/</guid><description>I&apos;ve mentioned process-based quality control before, and you can see something close to it in How Anthropic runs large-scale code migrations with Claude Code. What they put at the center of the whole rewrite is the process...</description><pubDate>Sat, 01 Aug 2026 00:00:00 GMT</pubDate></item><item><title>On reading code</title><link>https://enriquemark.com/en/posts/%E5%85%B3%E4%BA%8E%E4%BB%A3%E7%A0%81%E9%98%85%E8%AF%BB/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/%E5%85%B3%E4%BA%8E%E4%BB%A3%E7%A0%81%E9%98%85%E8%AF%BB/</guid><description>Let me say something about my own view on whether you actually have to read the code. For me, I take the position of don&apos;t read code line by line, which I already talked about in Process-based quality control...</description><pubDate>Sat, 01 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Rust concepts</title><link>https://enriquemark.com/en/posts/rust%20%E6%A6%82%E5%BF%B5/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/rust%20%E6%A6%82%E5%BF%B5/</guid><description>The interesting thing about Rust itself is that it&apos;s a strongly typed, memory-safe language, so a lot of things are nailed down hard. It gives up some dynamism and gets a lot of safety and stability back...</description><pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate></item><item><title>What Rust is good for in AI development</title><link>https://enriquemark.com/en/posts/rust%E5%9C%A8ai%E5%BC%80%E5%8F%91%E4%B8%AD%E7%9A%84%E4%BC%98%E5%8A%BF/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/rust%E5%9C%A8ai%E5%BC%80%E5%8F%91%E4%B8%AD%E7%9A%84%E4%BC%98%E5%8A%BF/</guid><description>I have been thinking about Rust&apos;s features lately. A language with strong compile-time verification catches most of the potential problems at compile time, which means that even without tests, anything you manage to write already comes with tests built in...</description><pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Distributed systems</title><link>https://enriquemark.com/en/posts/%E5%88%86%E5%B8%83%E5%BC%8F%E7%B3%BB%E7%BB%9F/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/%E5%88%86%E5%B8%83%E5%BC%8F%E7%B3%BB%E7%BB%9F/</guid><description>The key problem in distributed systems is getting the system to converge toward consistency as it runs. There are three core factors, the expected calibration point you set, observation, and error. What we want is to shrink the error between what actually gets carried out and the calibration point, so each measurement gives you the direction to correct in, and you keep iterating and converging...</description><pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Single responsibility</title><link>https://enriquemark.com/en/posts/%E5%8D%95%E4%B8%80%E8%81%8C%E8%B4%A3/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/%E5%8D%95%E4%B8%80%E8%81%8C%E8%B4%A3/</guid><description>My heuristic reading of single responsibility (SRP) is &quot;unit-testable, no side effects, a function does one thing only&quot;, and I know that isn&apos;t fully rigorous. But as a quick judgment I think it&apos;s a good one. Unit-testable...</description><pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Process-based quality control</title><link>https://enriquemark.com/en/posts/%E5%9F%BA%E4%BA%8E%E8%BF%87%E7%A8%8B%E7%9A%84%E8%B4%A8%E9%87%8F%E6%8E%A7%E5%88%B6/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/%E5%9F%BA%E4%BA%8E%E8%BF%87%E7%A8%8B%E7%9A%84%E8%B4%A8%E9%87%8F%E6%8E%A7%E5%88%B6/</guid><description>More and more I think Agent-take development has to rely on a good enough quality control process to hold it up. It&apos;s like QA in manufacturing, sampling the critical parts, or controlling the whole process flow...</description><pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Complexity and software design</title><link>https://enriquemark.com/en/posts/%E5%A4%8D%E6%9D%82%E6%80%A7%E4%B8%8E%E8%BD%AF%E4%BB%B6%E8%AE%BE%E8%AE%A1/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/%E5%A4%8D%E6%9D%82%E6%80%A7%E4%B8%8E%E8%BD%AF%E4%BB%B6%E8%AE%BE%E8%AE%A1/</guid><description>Analogizing complex software design to biology really is illuminating. Especially the self-organization principle of complex systems — since a large biological system can run fine without holding global information...</description><pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Asynchronous behavior and local information</title><link>https://enriquemark.com/en/posts/%E5%BC%82%E6%AD%A5%E8%A1%8C%E4%B8%BA%E4%B8%8E%E5%B1%80%E9%83%A8%E4%BF%A1%E6%81%AF/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/%E5%BC%82%E6%AD%A5%E8%A1%8C%E4%B8%BA%E4%B8%8E%E5%B1%80%E9%83%A8%E4%BF%A1%E6%81%AF/</guid><description>The distinction between level-triggered and edge-triggered is pretty interesting. It&apos;s an important concept in async I/O, and what it refers to is the mode of triggering...</description><pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Modularization and package management</title><link>https://enriquemark.com/en/posts/%E6%A8%A1%E5%9D%97%E5%8C%96%E5%92%8C%E5%8C%85%E7%AE%A1%E7%90%86/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/%E6%A8%A1%E5%9D%97%E5%8C%96%E5%92%8C%E5%8C%85%E7%AE%A1%E7%90%86/</guid><description>pnpm workspace is an interesting way to do things. It formalizes each subdirectory into a program module under unified management, so that each module exists as a package you can bring in through the @xxx/xxx form...</description><pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate></item><item><title>FROM, CTE and APPLY</title><link>https://enriquemark.com/en/posts/FROM%E3%80%81CTE%E5%92%8CAPPLY/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/FROM%E3%80%81CTE%E5%92%8CAPPLY/</guid><description>The main table in FROM is usually the left table, and LEFT JOIN is really just the left table plus the intersection of the two, with the part of the right table that didn&apos;t intersect coming back as null; INNER JOIN takes the intersection directly...</description><pubDate>Mon, 01 Jun 2026 00:00:00 GMT</pubDate></item><item><title>AI Coding as engineering</title><link>https://enriquemark.com/en/posts/%E4%BD%9C%E4%B8%BA%E5%B7%A5%E7%A8%8B%E7%9A%84%20AI%20Coding/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/%E4%BD%9C%E4%B8%BA%E5%B7%A5%E7%A8%8B%E7%9A%84%20AI%20Coding/</guid><description>Andrej Karpathy: From Vibe Coding to Agentic Engineering w/ Stephanie Zhan - YouTube Stop Prompting...</description><pubDate>Mon, 01 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Taste and aesthetics</title><link>https://enriquemark.com/en/posts/%E5%93%81%E5%91%B3%E5%92%8C%E5%AE%A1%E7%BE%8E/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/%E5%93%81%E5%91%B3%E5%92%8C%E5%AE%A1%E7%BE%8E/</guid><description>In the AI era, every programmer has turned into the exact kind of team leader they used to hate. Six months without a line of code, coding ability badly rusted, still calling himself a technical guy...</description><pubDate>Mon, 01 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Over-abstraction</title><link>https://enriquemark.com/en/posts/%E9%81%8E%E5%BA%A6%E6%8A%BD%E8%B1%A1/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/%E9%81%8E%E5%BA%A6%E6%8A%BD%E8%B1%A1/</guid><description>Abstraction is good, no argument about that, it hides the details behind a complex implementation and exposes only the result, but all of this has a cost. For the user, what we normally want is convenience, solving the problem with one call without having to understand everything behind it...</description><pubDate>Fri, 01 May 2026 00:00:00 GMT</pubDate></item><item><title>LINQ</title><link>https://enriquemark.com/en/posts/LINQ/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/LINQ/</guid><description>This one&apos;s kind of interesting. It&apos;s called Language Integrated Query, and it lets you write sql-like queries in C#. Anything enumerable can use it...</description><pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Observable&apos;s pipe</title><link>https://enriquemark.com/en/posts/Observable%E7%9A%84pipe/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/Observable%E7%9A%84pipe/</guid><description>It&apos;s like a pipe that intercepts things partway through, the middleware of an Observable, you could say. It has RxJS handling methods predefined inside, which let us hold back the returned result and preprocess it the way I want...</description><pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Signal state and form</title><link>https://enriquemark.com/en/posts/Signal%E7%8B%80%E6%85%8B%E5%92%8CForm/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/Signal%E7%8B%80%E6%85%8B%E5%92%8CForm/</guid><description>There&apos;s one spot where Angular isn&apos;t quite like React, a property change here triggers a re-render by itself, while over on the React side you need state for that...</description><pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate></item><item><title>SimpleChanges</title><link>https://enriquemark.com/en/posts/SimpleChanges/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/SimpleChanges/</guid><description>This is a class made for recording Input changes in a child component, usually paired with ngOnChanges and passed into the method as an argument...</description><pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Subject, Observable and Observer</title><link>https://enriquemark.com/en/posts/Subject%E3%80%81Observable%E5%92%8CObserver/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/Subject%E3%80%81Observable%E5%92%8CObserver/</guid><description>Over in Observable&apos;s pipe I talked about supplying water, but that was passive supply. What if I want to add water partway through and have everyone drinking from it get the new water? Say switching from groundwater to spring water, with that sweet taste (well......)...</description><pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Context management</title><link>https://enriquemark.com/en/posts/%E4%B8%8A%E4%B8%8B%E6%96%87%E7%AE%A1%E7%90%86/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/%E4%B8%8A%E4%B8%8B%E6%96%87%E7%AE%A1%E7%90%86/</guid><description>Use progressive disclosure to make the entry document a table of contents, then keep building layered indexes so it gets revealed a piece at a time...</description><pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Full stack and the learning science of crossing fields</title><link>https://enriquemark.com/en/posts/%E5%85%A8%E7%AB%AF%E8%88%87%E8%B7%A8%E9%A0%98%E5%9F%9F%E7%9A%84%E5%AD%B8%E7%BF%92%E7%A7%91%E5%AD%B8/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/%E5%85%A8%E7%AB%AF%E8%88%87%E8%B7%A8%E9%A0%98%E5%9F%9F%E7%9A%84%E5%AD%B8%E7%BF%92%E7%A7%91%E5%AD%B8/</guid><description>I really have noticed lately that full-stack development does let you see more, especially the traps and landmines that are different on the frontend and the backend. Sometimes a frontend bug is purely the backend taking the fall...</description><pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Reflection</title><link>https://enriquemark.com/en/posts/%E5%8F%8D%E5%B0%84/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/%E5%8F%8D%E5%B0%84/</guid><description>Reflection looks a bit like a delegate in places, but the two are pretty different. The point of a delegate is compile-time safety...</description><pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Reactive forms</title><link>https://enriquemark.com/en/posts/%E5%93%8D%E5%BA%94%E5%BC%8F%E8%A1%A8%E5%8D%95/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/%E5%93%8D%E5%BA%94%E5%BC%8F%E8%A1%A8%E5%8D%95/</guid><description>The biggest difference between angular&apos;s design principles and react&apos;s is that in react, state is basically everything, while angular wraps every feature up for you...</description><pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Gotchas</title><link>https://enriquemark.com/en/posts/%E5%9D%91/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/%E5%9D%91/</guid><description>There&apos;s a gotcha here, these two can&apos;t be used together. If you want to add a lone ngModel inside a reactive form, you have to put it in standalone mode...</description><pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Delegates</title><link>https://enriquemark.com/en/posts/%E5%A7%94%E6%89%98/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/%E5%A7%94%E6%89%98/</guid><description>C#&apos;s delegates are already in use inside DI. Say I define a func type called A and then call A() below. I didn&apos;t explicitly write the delegate keyword, but that&apos;s already a delegate...</description><pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Inversion of Control</title><link>https://enriquemark.com/en/posts/%E6%8E%A7%E5%88%B6%E5%8F%8D%E8%BD%89/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/%E6%8E%A7%E5%88%B6%E5%8F%8D%E8%BD%89/</guid><description>If you don&apos;t get IoC you&apos;ll only ever use DI as a bloated factory pattern. Take converting between XML, JSON and TXT, where you new up a pile of things inside and switch on an enum to decide...</description><pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Data-oriented module design</title><link>https://enriquemark.com/en/posts/%E6%95%B8%E6%93%9A%E5%B0%8E%E5%90%91%E5%9E%8B%E7%9A%84%E6%A8%A1%E5%A1%8A%E8%A8%AD%E8%A8%88/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/%E6%95%B8%E6%93%9A%E5%B0%8E%E5%90%91%E5%9E%8B%E7%9A%84%E6%A8%A1%E5%A1%8A%E8%A8%AD%E8%A8%88/</guid><description>What I&apos;ve found is that instead of coupling every kind of state inside the code, it&apos;s better to use the database as unified, shared, persistent state management. Then the functional modules can be decoupled from each other, and as modules they only care about data...</description><pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Services</title><link>https://enriquemark.com/en/posts/%E6%9C%8D%E5%8B%99/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/%E6%9C%8D%E5%8B%99/</guid><description>The way you use Angular&apos;s Service looks a lot like a Hook. The biggest difference between them is that a Hook in React can only share state inside a component...</description><pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Passing data between parent and child components</title><link>https://enriquemark.com/en/posts/%E7%88%B6%E5%AD%90%E7%B5%84%E4%BB%B6%E5%82%B3%E5%8F%83/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/%E7%88%B6%E5%AD%90%E7%B5%84%E4%BB%B6%E5%82%B3%E5%8F%83/</guid><description>angular really does carry subscriber-receiver all the way through, and that includes child-to-parent, which also runs on the Observable mechanism, the child publishes an event...</description><pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate></item><item><title>The strangler fig pattern</title><link>https://enriquemark.com/en/posts/%E7%B5%9E%E6%AE%BA%E6%A6%95%E6%A8%A1%E5%BC%8F/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/%E7%B5%9E%E6%AE%BA%E6%A6%95%E6%A8%A1%E5%BC%8F/</guid><description>The strangler fig is a parasitic plant. It wraps around its host bit by bit and draws off its nutrients, until the host withers and the fig grows vigorously in its place, hence &quot;strangling&quot;...</description><pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Harness engineering</title><link>https://enriquemark.com/en/posts/%E7%BA%A6%E6%9D%9F%E5%B7%A5%E7%A8%8B/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/%E7%BA%A6%E6%9D%9F%E5%B7%A5%E7%A8%8B/</guid><description>Harness engineering (harness as in reins and saddle, the gear that keeps a horse in line) is an interesting idea, and it looks more like an extension of context engineering...</description><pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Decorators</title><link>https://enriquemark.com/en/posts/%E8%A3%85%E9%A5%B0%E5%99%A8/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/%E8%A3%85%E9%A5%B0%E5%99%A8/</guid><description>The ts decorator is essentially still a higher-order function, and its use cases are about the same as py decorators: when I need to &quot;wrap&quot; some object but don&apos;t want to rewrite the whole original...</description><pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Going back from two-way binding to one-way</title><link>https://enriquemark.com/en/posts/%E9%9B%99%E5%90%91%E7%B6%81%E5%AE%9A%E5%9B%9E%E6%AD%B8%E5%96%AE%E5%90%91/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/%E9%9B%99%E5%90%91%E7%B6%81%E5%AE%9A%E5%9B%9E%E6%AD%B8%E5%96%AE%E5%90%91/</guid><description>The template form of two-way binding is really a one-shot piece of syntax sugar in Angular. At bottom it packages binding the data once and having a change fire an event callback and update, all into one thing, which is the default banana-in-a-box form...</description><pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate></item><item><title>CRTP</title><link>https://enriquemark.com/en/posts/CRTP/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/CRTP/</guid><description>CRTP is a pretty interesting thing. The full name is generic base class, and the acronym stands for Curiously Recurring Template Pattern...</description><pubDate>Sun, 01 Mar 2026 00:00:00 GMT</pubDate></item><item><title>DI</title><link>https://enriquemark.com/en/posts/DI/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/DI/</guid><description>The core of DI is defining structure, and there are generally two ways to do that, interface and abstract class. The key thing is that the DI container has to know the structure of the object it handles before it can do anything further with it...</description><pubDate>Sun, 01 Mar 2026 00:00:00 GMT</pubDate></item><item><title>MVC and MVVM</title><link>https://enriquemark.com/en/posts/MVC%E5%92%8CMVVM/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/MVC%E5%92%8CMVVM/</guid><description>The biggest difference between these two is that the second one adds a reactive modern frontend framework. It used to be the controller driving page updates, all by hand...</description><pubDate>Sun, 01 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Learning in the AI era</title><link>https://enriquemark.com/en/posts/ai%E6%97%B6%E4%BB%A3%E7%9A%84%E5%AD%A6%E4%B9%A0/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/ai%E6%97%B6%E4%BB%A3%E7%9A%84%E5%AD%A6%E4%B9%A0/</guid><description>Anthropic&apos;s latest research has pretty much confirmed what I thought before, especially combined with learning science. Put those together and we find that learning something new does need some...</description><pubDate>Sun, 01 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Where plan and SDD fit</title><link>https://enriquemark.com/en/posts/plan%20%E5%92%8C%20sdd%20%E7%9A%84%E5%9C%BA%E6%99%AF/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/plan%20%E5%92%8C%20sdd%20%E7%9A%84%E5%9C%BA%E6%99%AF/</guid><description>plan and SDD fit when: you know what needs to be done or you trust what the AI is going to do In akr&apos;s words, this kind of AI use, where the situation and the process are decided up front...</description><pubDate>Sun, 01 Mar 2026 00:00:00 GMT</pubDate></item><item><title>The constitutional structure of context</title><link>https://enriquemark.com/en/posts/%E4%B8%8A%E4%B8%8B%E6%96%87%E7%9A%84%E5%AE%AA%E6%B3%95%E7%BB%93%E6%9E%84/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/%E4%B8%8A%E4%B8%8B%E6%96%87%E7%9A%84%E5%AE%AA%E6%B3%95%E7%BB%93%E6%9E%84/</guid><description>This paper is also interesting. It shows that even with a context file like agents.md, writing everything into it isn&apos;t always best...</description><pubDate>Sun, 01 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Dependency injection</title><link>https://enriquemark.com/en/posts/%E4%BE%9D%E8%B5%96%E6%B3%A8%E5%85%A5/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/%E4%BE%9D%E8%B5%96%E6%B3%A8%E5%85%A5/</guid><description>Dependency injection (DI) is pretty interesting. At bottom it&apos;s a more abstract kind of encapsulation that makes a whole class more general or more single-purpose. Say I need a converter...</description><pubDate>Sun, 01 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Singletons and static classes</title><link>https://enriquemark.com/en/posts/%E5%8D%95%E4%BE%8B%E5%92%8C%E9%9D%99%E6%80%81%E7%B1%BB/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/%E5%8D%95%E4%BE%8B%E5%92%8C%E9%9D%99%E6%80%81%E7%B1%BB/</guid><description>Right now a static constructor looks like the better option. I don&apos;t have much use for singletons or a base class here, there&apos;s no shared mutable data anyway...</description><pubDate>Sun, 01 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Factory pattern</title><link>https://enriquemark.com/en/posts/%E5%B7%A5%E5%BB%A0%E6%A8%A1%E5%BC%8F/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/%E5%B7%A5%E5%BB%A0%E6%A8%A1%E5%BC%8F/</guid><description>This one is kind of interesting. It&apos;s essentially another use of higher-order functions: you expose your public interface as taking a key and a func\&lt;key,V&gt;...</description><pubDate>Sun, 01 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Composition and inheritance</title><link>https://enriquemark.com/en/posts/%E7%B5%84%E5%90%88%E5%92%8C%E7%B9%BC%E6%89%BF/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/%E7%B5%84%E5%90%88%E5%92%8C%E7%B9%BC%E6%89%BF/</guid><description>The key reason for composition over inheritance is decoupling, or rather, modules like building blocks, with state handed in from outside...</description><pubDate>Sun, 01 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Composition</title><link>https://enriquemark.com/en/posts/%E7%BB%84%E5%90%88/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/%E7%BB%84%E5%90%88/</guid><description>If you can describe it with &quot;has a&quot;, use composition; only use inheritance for &quot;is a&quot;. The way I read that is, if there&apos;s no real inheritance or dependency relationship between them and you&apos;re only...</description><pubDate>Sun, 01 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Inheritance and constraints</title><link>https://enriquemark.com/en/posts/%E7%BB%A7%E6%89%BF%E5%92%8C%E7%BA%A6%E6%9D%9F/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/%E7%BB%A7%E6%89%BF%E5%92%8C%E7%BA%A6%E6%9D%9F/</guid><description>This part is kind of interesting, inheritance and constraints seem to overlap a little, and when you get down to it, inheritance itself also means inheriting the structure itself...</description><pubDate>Sun, 01 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Decoupled design</title><link>https://enriquemark.com/en/posts/%E8%A7%A3%E8%80%A6%E8%AE%BE%E8%AE%A1/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/%E8%A7%A3%E8%80%A6%E8%AE%BE%E8%AE%A1/</guid><description>The core of a design philosophy like dependency injection still comes down to one word, decoupling. Simple interface, complex core...</description><pubDate>Sun, 01 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Serverless site deployment</title><link>https://enriquemark.com/en/posts/Serverless%E7%9A%84%E7%BD%91%E7%AB%99%E9%83%A8%E7%BD%B2/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/Serverless%E7%9A%84%E7%BD%91%E7%AB%99%E9%83%A8%E7%BD%B2/</guid><description>Reactive pages mostly means reacting to data flow, but as far as the whole page display on the frontend goes, it&apos;s really a static page...</description><pubDate>Sun, 01 Feb 2026 00:00:00 GMT</pubDate></item><item><title>TS generics and extends</title><link>https://enriquemark.com/en/posts/TS%E6%B3%9B%E5%9E%8B%E5%92%8Cextends/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/TS%E6%B3%9B%E5%9E%8B%E5%92%8Cextends/</guid><description>The \&lt;T&gt; generic object is probably one of the harder concepts to understand in a static language. But in essence it&apos;s like a placeholder: you tell the compiler that some type will show up here...</description><pubDate>Sun, 01 Feb 2026 00:00:00 GMT</pubDate></item><item><title>TS utility types</title><link>https://enriquemark.com/en/posts/TS%E7%B1%BB%E5%9E%8B%E5%B7%A5%E5%85%B7%E5%87%BD%E6%95%B0/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/TS%E7%B1%BB%E5%9E%8B%E5%B7%A5%E5%85%B7%E5%87%BD%E6%95%B0/</guid><description>If you want the type a method returns, there&apos;s a quick way to get it. typeof A means: get the type of the value A that follows it...</description><pubDate>Sun, 01 Feb 2026 00:00:00 GMT</pubDate></item><item><title>TS destructuring</title><link>https://enriquemark.com/en/posts/TS%E8%A7%A3%E6%9E%84%E8%B5%8B%E5%80%BC/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/TS%E8%A7%A3%E6%9E%84%E8%B5%8B%E5%80%BC/</guid><description>Destructuring assignment generally gets used on an object. Basically it splits the properties out and assigns them to local variables...</description><pubDate>Sun, 01 Feb 2026 00:00:00 GMT</pubDate></item><item><title>The design of Claude Code</title><link>https://enriquemark.com/en/posts/claude%20code%20%E7%9A%84%E8%AE%BE%E8%AE%A1/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/claude%20code%20%E7%9A%84%E8%AE%BE%E8%AE%A1/</guid><description>Kind of interesting. Claude Code probably uses an agent team rather than a single agent. The top layer sorts out the requirements first, then produces an intermediate prompt and a todo list...</description><pubDate>Sun, 01 Feb 2026 00:00:00 GMT</pubDate></item><item><title>On full stack</title><link>https://enriquemark.com/en/posts/%E5%85%B3%E4%BA%8E%E5%85%A8%E6%A0%88/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/%E5%85%B3%E4%BA%8E%E5%85%A8%E6%A0%88/</guid><description>There really is a view that full-stack engineers are fine, but the problem is their knowledge has breadth and no depth, not specialized enough...</description><pubDate>Sun, 01 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Backend interaction</title><link>https://enriquemark.com/en/posts/%E5%90%8E%E7%AB%AF%E4%BA%A4%E4%BA%92/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/%E5%90%8E%E7%AB%AF%E4%BA%A4%E4%BA%92/</guid><description>I know the onion model: all the requests come in, and on the way out they go through part of it again. Middleware, the way I understand it, is a bit like the @ decorator in Python...</description><pubDate>Sun, 01 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Microservices</title><link>https://enriquemark.com/en/posts/%E5%BE%AE%E6%9C%8D%E5%8A%A1/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/%E5%BE%AE%E6%9C%8D%E5%8A%A1/</guid><description>Generally there are microservice frameworks that sit between microservices, and the core of them is calling back and forth over RPC...</description><pubDate>Sun, 01 Feb 2026 00:00:00 GMT</pubDate></item><item><title>The right way to use it</title><link>https://enriquemark.com/en/posts/%E6%AD%A3%E7%A1%AE%E7%9A%84%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/%E6%AD%A3%E7%A1%AE%E7%9A%84%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95/</guid><description>I think the key to using an LLM is getting yourself out of the fixed mindset of just writing code. You act as the manager who plans the work, or the micro-managing supervisor who inspects it...</description><pubDate>Sun, 01 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Notes</title><link>https://enriquemark.com/en/posts/%E8%AE%B0%E5%BD%95/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/%E8%AE%B0%E5%BD%95/</guid><description>The main reason we used agno back then was to get agent functionality: actually our tech plan didn&apos;t have this at first, the earliest idea was plain prompt engineering plus a ragflow-based knowledge...</description><pubDate>Sun, 01 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Debouncing and race conditions</title><link>https://enriquemark.com/en/posts/%E9%98%B2%E6%8A%96%E5%92%8C%E7%AB%9E%E6%80%81%E9%97%AE%E9%A2%98/</link><guid isPermaLink="true">https://enriquemark.com/en/posts/%E9%98%B2%E6%8A%96%E5%92%8C%E7%AB%9E%E6%80%81%E9%97%AE%E9%A2%98/</guid><description>Debouncing matters, especially when there&apos;s network IO between frontend and backend. If every user action fires a request to the backend...</description><pubDate>Sun, 01 Feb 2026 00:00:00 GMT</pubDate></item></channel></rss>