{"id":563,"date":"2026-01-04T17:29:42","date_gmt":"2026-01-04T17:29:42","guid":{"rendered":"https:\/\/blog.adlington.fr\/?p=563"},"modified":"2026-01-04T17:34:19","modified_gmt":"2026-01-04T17:34:19","slug":"programming-with-claude-the-first-week","status":"publish","type":"post","link":"https:\/\/blog.adlington.fr\/index.php\/2026\/01\/04\/programming-with-claude-the-first-week\/","title":{"rendered":"Programming With Claude &#8211; The First Week"},"content":{"rendered":"\n<p>I am not a programmer. I have made multiple attempts to learn programming, from Ruby on Rails back in the day to Python a year or two ago. While I understand the basic concepts &#8211; variables and types and loops and functions and classes, I find that the complexity mounts quickly and at a certain point I get discouraged &#8211; often around starting to create classes or managing error states &#8211; and don&#8217;t get any further. It all seems just too complicated and time consuming &#8211; why won&#8217;t it just work!<\/p>\n\n\n\n<p>Another common issue was managing the infrastructure. How to get a web server running and move my files to it or how to get my python environment set up correctly. These things were nothing to do with the problem I was trying to solve, but each one, any of them, could be the cause of the issue I was trying to debug.<\/p>\n\n\n\n<p>Then along comes Claude. I&#8217;ve toyed with AI copilots before, and managed to get little scripts working, but have never made the effort to do any major &#8211; for me &#8211; programming. But now I have a trial version of the pro plan with Claude Code. <\/p>\n\n\n\n<p>In a week, I&#8217;ve got four projects working:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A <a href=\"https:\/\/robert-adlington.github.io\/geometry\/triangles\/right-triangle.html\" data-type=\"link\" data-id=\"https:\/\/robert-adlington.github.io\/geometry\/triangles\/right-triangle.html\">triangle generator<\/a> &#8211; which generates a random triangle, shows angles, lengths, sin, cos, and tan, and various other characteristics of the triangle &#8211; this was a first effort and is a bit rough and ready but interesting.<\/li>\n\n\n\n<li><a href=\"https:\/\/adlington.fr\/random-robby.html\" data-type=\"link\" data-id=\"https:\/\/adlington.fr\/random-robby.html\">Random Robby<\/a> &#8211; Toss or roll from one to five coins or dice. Here I wanted to get a nicer look and feel and I&#8217;m quite pleased with getting this up an running and sufficiently polished in a few hours.<\/li>\n\n\n\n<li><a href=\"https:\/\/adlington.fr\/contract-whist.html\" data-type=\"link\" data-id=\"https:\/\/adlington.fr\/contract-whist.html\">Contract Whist Score Board<\/a> &#8211; This took a bit longer and is still a work in progress, but my father and his friends are already using it for their regular games. I&#8217;m really pleased with the stats screens and to have a fully working program so quickly, and now want to iterate on more fun aspects.<br>As I started iterating through versions, I realized I needed to get serious about <\/li>\n\n\n\n<li><a href=\"https:\/\/adlington.fr\/\" data-type=\"link\" data-id=\"https:\/\/adlington.fr\/\">Homepage<\/a> &#8211; Also a work in progress. I&#8217;m not very happy with Claude&#8217;s default layout and color scheme, but I&#8217;m delighted with the fact to have a list of recent blog posts and wiki edits, as well as project cards working. And, to get away from the default local storage solution for storing whist scores, I got Claude to create a database and an account system to be able to save scores and statistics.<\/li>\n<\/ul>\n\n\n\n<p>I&#8217;m very pleased with my progress this week:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>I would never have been able to get any of these projects working in this time &#8211; if at all!<\/li>\n\n\n\n<li>In addition to getting real outputs, I also learnt a lot about the infrastructure I needed to put in place. Now each change is routed to my github repository and, once I merge to the main branch, things are automatically pushed to my web server, using github actions. Every time I got stuck with making this pipeline work, Claude was able to help me through it.<\/li>\n\n\n\n<li>Inspired by Simon Willison, I even tried dictating updates to my phone and was amazed to see this working remarkably well<\/li>\n\n\n\n<li>I work with programmers, and part of my work is helping to understand use cases and design UIs to meet them. This work is, I think, very good training for working with LLMs to code.<\/li>\n<\/ul>\n\n\n\n<p>My experience has been almost wholly positive. My few niggles are:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Why is Claude Code different to and separate from chats and, especially, projects? I started out in code and then one day started in chat and then couldn&#8217;t access my repository because I wasn&#8217;t in Code. And Claude couldn&#8217;t take my chat and open it in Code? Can I use Code from a Project? I&#8217;m not sure. These barriers seem odd.<\/li>\n\n\n\n<li>I learned that Claude does not do image generation. I created a project to explore logo ideas and instead of generating an image to my prompt, it built what I think is meant to be an SVG generator to generate text from synapses(?) which I couldn&#8217;t get to work.<\/li>\n\n\n\n<li>I love that Claude was able to create my account system for me, but why didn&#8217;t it use the standard patterns of email as a username (rather than a separate username) and not provide (or at least propose) standard features like &#8220;Remember Me&#8221;, show password, and forgot password?<\/li>\n\n\n\n<li>Usage limits are (deliberately) very opaque. I only ran out in one session, and after that have been more careful. I don&#8217;t know whether Sonnet should be adequate for most of my programming questions. Maybe so? Maybe I should use Opus to plan out a project and then switch to Sonnet for the actual work? I don&#8217;t know.<\/li>\n<\/ul>\n\n\n\n<p>Overall, this has been a very positive experience. Often, at work, I&#8217;m iterating over a design with a developer and I find that here I can do the same, but Claude is an infinitely patient (and seemingly infinitely knowledgeable) colaborator who doesn&#8217;t mind if I change my mind or want to go in a wholly new direction!<\/p>\n\n\n\n<p>Obviously my first efforts are fairly simplistic, but I&#8217;m hoping that my imagination will grow with the freedom!<\/p>\n\n\n\n<p>Upcoming projects:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A link management page with persistence in my database<\/li>\n\n\n\n<li>Help my wife with a tool for getting photos from her iPhone to her PC and converting HEIC to JPG<\/li>\n\n\n\n<li>A virtual cribbage board with various themes\/visualizations of the board<\/li>\n\n\n\n<li>Restarting the triangle generator and adding a quiz elements and more geometry concepts<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>I am not a programmer. I have made multiple attempts to learn programming, from Ruby on Rails back in the day to Python a year or two ago. While I understand the basic concepts &#8211; variables and types and loops and functions and classes, I find that the complexity mounts quickly and at a certain [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1],"tags":[60,24,59],"class_list":["post-563","post","type-post","status-publish","format-standard","hentry","category-blog","tag-coding","tag-computing","tag-me"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/blog.adlington.fr\/index.php\/wp-json\/wp\/v2\/posts\/563","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.adlington.fr\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.adlington.fr\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.adlington.fr\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.adlington.fr\/index.php\/wp-json\/wp\/v2\/comments?post=563"}],"version-history":[{"count":3,"href":"https:\/\/blog.adlington.fr\/index.php\/wp-json\/wp\/v2\/posts\/563\/revisions"}],"predecessor-version":[{"id":566,"href":"https:\/\/blog.adlington.fr\/index.php\/wp-json\/wp\/v2\/posts\/563\/revisions\/566"}],"wp:attachment":[{"href":"https:\/\/blog.adlington.fr\/index.php\/wp-json\/wp\/v2\/media?parent=563"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.adlington.fr\/index.php\/wp-json\/wp\/v2\/categories?post=563"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.adlington.fr\/index.php\/wp-json\/wp\/v2\/tags?post=563"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}