<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Home on Programming, But Relatable</title><link>https://jmarkman.github.io/blog/</link><description>Recent content in Home on Programming, But Relatable</description><generator>Hugo -- gohugo.io</generator><language>en-US</language><lastBuildDate>Sat, 04 Jul 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://jmarkman.github.io/blog/index.xml" rel="self" type="application/rss+xml"/><item><title>Trust your experience</title><link>https://jmarkman.github.io/blog/trust-your-experience/</link><pubDate>Sat, 04 Jul 2026 00:00:00 +0000</pubDate><guid>https://jmarkman.github.io/blog/trust-your-experience/</guid><description>&lt;p&gt;Simon Willison has become a SME darling for AI in software engineering. He wrote a blog post about how he feels that &amp;ldquo;vibe coding&amp;rdquo; and &amp;ldquo;agentic engineering&amp;rdquo; are blurring in his usage of AI, but I think the most interesting part of his post &lt;a href="https://simonwillison.net/2026/May/6/vibe-coding-and-agentic-engineering/#:~:text=But%20I%E2%80%99m%20not%20reviewing%20that%20code%2E%20And%20now%20I%E2%80%99ve%20got%20that%20feeling%20of%20guilt%3A%20if%20I%20haven%E2%80%99t%20reviewed%20the%20code%2C%20is%20it%20really%20responsible%20for%20me%20to%20use%20this%20in%20production"&gt;is this&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;And now I’ve got that feeling of guilt: if I haven’t reviewed the code, is it really responsible for me to use this in production?&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;As a hobby, I play fighting games a bit more deeply than the average person: I go to tournaments, review my own gameplay, and seek counsel from better players on how to improve. I may not have 25 years taking fighting games seriously like Simon has developing software, but I&amp;rsquo;ve spent far longer than the average software developer doing so.&lt;/p&gt;
&lt;p&gt;Some time ago, I sought the advice of a well-known player on how to handle opponents of a certain skill level with antsy or anxious playstyles. We reviewed a match I had against such a player, and he noted that when I chose aggression versus my knocked-down opponent, I would get the strike I sorely needed in order to win, but fail to turn it into another knockdown or a knock-out.&lt;/p&gt;
&lt;p&gt;He expanded on that by saying while I was paying attention to the game, I wasn&amp;rsquo;t focused on the outcome of my aggression in those moments. I had already done the hard part of getting the information about my opponent&amp;rsquo;s behavior when they&amp;rsquo;re knocked down, but I was on autopilot: in those aggression situations, I had failed either to trust in my experience or not process the prior interaction at all.&lt;/p&gt;
&lt;p&gt;I think AI tools are useful. I&amp;rsquo;ve grown fond of being able to block out larger tasks into smaller ones and hand them off to an agent while I review code, do research, or work on a more complex task. I like the notion of finally being able to delegate small fixes and other codebase improvements to a little genie in a terminal.&lt;/p&gt;
&lt;p&gt;I also think that developers often forget that AI tools are &lt;em&gt;tools&lt;/em&gt;. A coding agent is not conscious. A coding agent does not have prior experience. A coding agent has never experienced losing a game because it failed to block an opponent&amp;rsquo;s &amp;ldquo;get up&amp;rdquo; attack. A coding agent has never wrestled with the age old task of &amp;ldquo;how do I use this modern functionality in this older system?&amp;rdquo;&lt;/p&gt;
&lt;p&gt;The prompts we provide to agents provide them with the experience we&amp;rsquo;ve gained over the years as developers. That experience doesn&amp;rsquo;t just come from the corpus of publicly available code, but from the experiences we have interacting with other people.&lt;/p&gt;
&lt;p&gt;We navigate debates and strong opinions in pull request comments, meetings with teammates too passive or argumentative, the anxieties of team leads and product owners, the &amp;ldquo;just one more change&amp;rdquo; requests from a business-side team.&lt;/p&gt;
&lt;p&gt;We wait patiently for other developers to reply to our messages about code they previously worked on. We wrestle with the decisions made by maintainers of third-party libraries and how we can write good code with what we&amp;rsquo;re given.&lt;/p&gt;
&lt;p&gt;The result of all these interactions become our guidelines for the code we write: past, present, and future. An agent writing the code based on a prompt you wrote is the result of &lt;em&gt;your&lt;/em&gt; natural language and &lt;em&gt;your&lt;/em&gt; understanding made manifest.&lt;/p&gt;
&lt;p&gt;It is an extension of yourself, which makes it your responsibility. If you don&amp;rsquo;t review that code, you are on autopilot: you are not focused on the outcome of your prompts.&lt;/p&gt;
&lt;p&gt;You&amp;rsquo;ve done a lot of hard work over the years to accrue the experience you have. Don&amp;rsquo;t go on autopilot now.&lt;/p&gt;
&lt;video style="text-align: center; display: block; margin: 0 auto;"
autoplay
loop
muted
controls
&gt;
&lt;source src="https://jmarkman.github.io/blog/media/trustYourExperience.webm" type="video/webm" /&gt;
Your browser does not support the video tag.
&lt;/video&gt;</description></item><item><title>Thoughts on agentic development, February 2026</title><link>https://jmarkman.github.io/blog/thoughts-on-agentic-development-february-2026/</link><pubDate>Sat, 14 Feb 2026 00:00:00 +0000</pubDate><guid>https://jmarkman.github.io/blog/thoughts-on-agentic-development-february-2026/</guid><description>&lt;p&gt;Earlier in the month I ended up purchasing a subscription to Github Copilot Pro, it&amp;rsquo;s (currently) $10/month. I wanted to try and replicate what a coworker was doing with agentically developing a board game; introduce &amp;ldquo;vibe coding&amp;rdquo; into some of my more creatively-focused workflows.&lt;/p&gt;
&lt;p&gt;I have a gaming blog where I chronicle stuff and I wanted a nice solution for pop-up modals that worked with Jekyll. Trying to generate an entire modal with the free tier was doable, but required a lot of guiding and inevitably didn&amp;rsquo;t work exactly as I wanted it to: the anchor tag that would launch the modal would push all text following it to a new line no matter what, and the agent wasn&amp;rsquo;t good at debugging this.&lt;/p&gt;
&lt;p&gt;I tried again today with the Paid Option™️ and with a little coaxing I got something I wanted. The first go was a bit disastrous where the modal would just be a opaque black box superimposed over the blog sidebar and some of the content, but when I told the agent to revise its approach, it finally got something that was both functional and looked good. The agent had to parse through the various subdirectories, which it didn&amp;rsquo;t do the first time, and it looks like that made all the difference.&lt;/p&gt;
&lt;p&gt;I tried to have the agent extricate the inline CSS from the include, but this ended up breaking its work. I had it investigate why this was the case, and I was kind of surprised it was able to grep the answer. This &lt;em&gt;is&lt;/em&gt; a Jekyll blog so this is a very repeatable &amp;ldquo;thing&amp;rdquo;. When the agent moved the CSS it generated into a Sass file, there were two issues:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Two media queries to forcibly keep the modal + popup on top of the blog content vs the sidebar were conflicting with CSS/Sass load order&lt;/li&gt;
&lt;li&gt;The extracted-to-Sass-file styles weren&amp;rsquo;t being imported to the Sass files that were being transpiled into CSS; they were imported into index.css/sass, but required an import into another Sass file used exclusively for the blog posts&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The agent fixed the latter point and I instructed the agent to remove the media queries in the former point.&lt;/p&gt;
&lt;p&gt;Having it extract the JavaScript was much easier, but one thing I&amp;rsquo;ve noticed is that the agent will always take the easiest path to its detriment: I told it to &amp;ldquo;Extract the JavaScript from the video modal include&amp;rdquo; and it did a copypaste job where it made a new .js file, copypasted the JavaScript from the include into that file, updated the script tag to source it, and then &amp;ldquo;make sure the JS file [was] in the right location&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;It didn&amp;rsquo;t account for the fact that it was going to break the JavaScript because Jekyll passes information to the include via variables and once the JS leaves the include, all those variables are going to be missing. The agent realized this after I refreshed, saw the modal was broken, and prompted the agent to review the .js file again.&lt;/p&gt;
&lt;p&gt;Last thing I did for this session was have it spit out some documentation on how to use the modal include; I want to use this a lot and I may want to use it more than once in a post. It did a pretty good job documenting usage and how I arbitrarily decided upon mp4 and webm file types as its &amp;ldquo;supported&amp;rdquo; files because I try to use webms as often as I can with online pages.&lt;/p&gt;
&lt;p&gt;The &amp;ldquo;complete example&amp;rdquo; it gave was actually &lt;em&gt;really&lt;/em&gt; bad because it forgot how to use its own modal: it created two links for the modal pop up but forgot that it needed to use multiple includes in order to differentiate the modals. This could probably work if I had the agent refactor the include and accompanying JS, but I just deleted this part of the documentation. I also deleted the entire &amp;ldquo;Tips&amp;rdquo; section where it said where to put videos, account for file size, etc., because I know about that already. The agent is just covering all of its bases and assuming this is documentation &amp;ldquo;for everyone&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;It wasn&amp;rsquo;t a perfect landing on Github Pages: the modal broke just like it did locally when I had the aforementioned CSS/Sass issues. I had the agent look up why Jekyll includes would run into CSS/Sass issues like this, and I got back a lot of results that were reasonable to parse but also kind of sparse. It was like reading google results and going &amp;ldquo;well I guess I better go look &lt;em&gt;that&lt;/em&gt; up now&amp;rdquo;. The number 1 reason, &amp;ldquo;Safe Mode Restrictions&amp;rdquo;, is the likely culprit where there are probably restrictions in terms of what custom CSS/Sass I can have the agent add. I feel like I&amp;rsquo;m going to have to find a GH Pages + Sass SME just to find out why this works because my own google searches have not been fruitful.&lt;/p&gt;
&lt;p&gt;I had the agent go back to using inline CSS and it worked on GH Pages.&lt;/p&gt;
&lt;p&gt;Some closing thoughts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I also added an AGENTS.md file + a starting skill for creating future includes to my gaming blog and I&amp;rsquo;ll update these as I tweak the blog more to my liking.&lt;/li&gt;
&lt;li&gt;I&amp;rsquo;m simultaneously impressed and unimpressed with agentic development. I like that it actually made something that worked, but it left me with more review work to do.&lt;/li&gt;
&lt;li&gt;My CSS isn&amp;rsquo;t great but the entire point of having a Jekyll blog is that it&amp;rsquo;s supposed to remove a lot of the heavy lifting of building &amp;amp; maintaining the HTML + JS + CSS and enable me to just focus on the important part: writing. I think if I do a web project in the near future I&amp;rsquo;d try to do the CSS by hand and study it myself. For something like this, I&amp;rsquo;m ok with the agent knowing more about it than I am.&lt;/li&gt;
&lt;li&gt;I think a &amp;ldquo;project&amp;rdquo; like this is a great use case for agentic development. Based on how I interact with the agent on something like this, I don&amp;rsquo;t think the actual education and learning how to do [x] in HTML, CSS, JS, etc. can or should go away. &lt;strong&gt;It&amp;rsquo;s impossible to get the most out of an agent if you don&amp;rsquo;t know enough about what you&amp;rsquo;re looking at.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Thoughts on agentic development, January 2026</title><link>https://jmarkman.github.io/blog/thoughts-on-agentic-development-january-2026/</link><pubDate>Fri, 02 Jan 2026 00:00:00 +0000</pubDate><guid>https://jmarkman.github.io/blog/thoughts-on-agentic-development-january-2026/</guid><description>&lt;p&gt;AI&amp;rsquo;s taking the development world by storm, and one of my thoughts as 2025 ended was that I should start recording my experiences with AI: agentic development, tooling, experiences of other devs, and so on. This will be the first in some number of posts that I manage to carve out time for. All of these types of post will be stream-of-consciousness in the moment.&lt;/p&gt;
&lt;p&gt;Used Cursor today to generate unit tests for the main wrapper class for &lt;a href="https://github.com/jmarkman/CurrenSee"&gt;CurrenSee&lt;/a&gt;; all I really wanted it to do was generate some constructor tests and nothing more, and it did just that. I used Cursor&amp;rsquo;s &lt;code&gt;auto&lt;/code&gt; mode to select a model so I&amp;rsquo;ll never know what model it selected, but based on how verbose and thorough it was and its usage of checkmark emoticons, I&amp;rsquo;m assuming it&amp;rsquo;s either Gemini or Sonnet. It consumed the AGENTS.md file properly and knew where to look for test creation guidelines (&amp;ldquo;Read src/test-creation.md&amp;rdquo;), and it took at look at everything relevant: the main wrapper class, its interface, the endpoints, the test project, etc.&lt;/p&gt;
&lt;p&gt;Steve Kinney posted &lt;a href="https://frontendmasters.com/blog/choosing-the-right-model-in-cursor/"&gt;this article on Cursor models&lt;/a&gt; in September 2025, really high level but summarizes what the different models are.&lt;/p&gt;
&lt;p&gt;It pointed to the &lt;code&gt;LatestExchangeRateEndpointTests.cs&lt;/code&gt; file saying that there were test guidelines in there, but nothing was actually implemented in that file. It was just the typical NUnit boilerplate that&amp;rsquo;s generated with every new test class. This was a little weird and it&amp;rsquo;s probably a hallucination? Didn&amp;rsquo;t like how strange this was.&lt;/p&gt;
&lt;p&gt;I was pleasantly surprised that it followed the instructions in the markdown file perfectly and followed some of my personal preferences, i.e. it created the Arrange-Act-Assert comments and treated them as sections, and if Act and Assert were the same operation, it wrote the comment as &amp;ldquo;Act &amp;amp; Assert&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;I didn&amp;rsquo;t like how it considered &amp;ldquo;proper coverage&amp;rdquo; splitting up an &amp;ldquo;invalid api key&amp;rdquo; test into a test for a null input, an empty string, a whitespace string, a string with a tab character, and a string with a newline character. It seemed to consider the volume of tests worth it, meanwhile NUnit supports &lt;a href="https://docs.nunit.org/articles/nunit/writing-tests/attributes/testcase.html?q=TestCase"&gt;TestCase attributes&lt;/a&gt; right out of the box and this could have been one test method. Considering the agent knew via the AGENTS.md file that the project was using NUnit and it&amp;rsquo;s all just pattern matching &amp;amp; linear algebra (go look at the NUnit docs and find something like &amp;ldquo;parameterized test method&amp;rdquo;), this feels somewhat like a dealbreaker: I shouldn&amp;rsquo;t &lt;em&gt;have&lt;/em&gt; to tell NUnit that common library functionality exists.&lt;/p&gt;</description></item></channel></rss>