3/8/2025

You still have to be good. Yes, we will be able to generate lots of code. Lots of code, quicker. Lots of code, much quicker. But if you care about how the code looks, reads, behaves, or performs, you can still care about those things. You can still derive satisfaction from the quality of the work, even if it’s not derived from your own synapses and nerve endings.

Can you ask the AI to shape the code in specific ways? Yes. Can you ask the AI to organize the tests in specific ways? Yes. Can you ask the AI to create abstractions when you think it makes sense? Yes.

Is it still possible for a code base to collapse under the weight of a poor, leaky, pre-mature abstraction? Absolutely. Does the art of knowing when to abstract, and how much to abstract still exist? Yes. There has always been a fine line between when to refactor and when to leave it alone. These lines will still criss-cross a code base like the ice fissures on the Jovian moon Europa.

The AI will be limited in scope, it will not see the full picture. You will. You will understand the business context, you will understand the deadlines, you will understand when to bob and when to weave, and those refactor or not, abstract or not, decisions will come faster not slower. You’ll have less time to contemplate, you’ll need to be right more often to ensure mistakes won’t compound. You still need to be good.

3/2/2025

PROS

  • all the prompts are very slick
  • /init analyzes your code base
  • creates a CLAUDE.md file that lists the coding conventions and commands to run programs and tests
  • allows you to print the costs to the terminal. It took $0.12 to create the CLAUDE.md file for my ollama-fun directory, which is not representative of any type of project
  • “ESC” presents you the option of forking the conversation, which is interesting
  • prints cost when exiting

CONS

  • There’s some jumpiness to the to the / command which prints all available commands
  • emacs was the default for Editor Mode (terminal editor wars)
  • can’t use hjkl for navigation only arrows
  • can’t access prompt history, I don’t think it’s being stored.

Impressions

I’ve had two sessions now with Claude Code. I’m vibe coding. Make your request, let Claude figure it out.

My first session was adding an RSS feed. This was mostly smooth, only trouble that I ran into was

  • dynamic html attribute syntax in heex
  • entering in dynamic data into a CDATA tag
  • the link tag only has attributes, no content but claude gave it content

My second session was adding a live view tic tac toe game. This also fairly smooth, things only got weird because it used tailwind selectors and I had tailwind configured incorrectly in phoenix due to a botched upgrade to 1.7 on my part.

I really like telling it to run mix compile and then fix the errors, that’s a very satisfying process. At one point, I had a runtime error that claude couldn’t see so I had to write that out to a log and ask claude to read the log and fix the error.

Coding in this way has a different mindset. Less concerned with details maybe, more results oriented than detail oriented maybe. I have two layouts now, one for static html and one for live view, this isn’t good. My css is a mess now after introducing tailwind which removed some of the phoenix base classes I was previously relying on, but again that’s my fault.

I (me and Claude) wrote some code and a lot of that code I didn’t even look at, but it works. Maybe if I wanted to devote more time to this I could ask Claude to walk me through the code. Maybe I’d be more diligent in a professional context.
Maybe there are some learned discipline skills I need to acquire when working in this fashion.

Overall though, this feels quicker. It feels like I can do more in less time. I need to practice this style of coding but also not lose the ability to code in the traditional manner.

2/28/2025

PROS

  • installation was easy through npm
  • the initial ui experience is great and builds confidence
  • starts by choosing a ui experience (light text, dark text, etc)
  • Prompt telling me about being priced by api usage through anthropic console was helpful
  • I like the cli tools browser link to sign in

CONS

  • I need to choose the ui experience each time I start the app
  • I couldn’t tell by the docs how I would pay for this, had to learn through the tool
  • Didn’t realize that anthropic console and claude ai were two separate things
  • I bought the tokens before signing in, thinking I’d need an api key with credits
  • The login link gives me an “at capacity message”

Initial Experience

I bought credits before I signed in through the console and now I feel dumb. I gave a company a credit card over the internet, which is always risky, and then the product does not have enough capacity for me to use.

How on earth are they going to justify building out the necessary data centers for this to work how they want it to work but still charge a fee people will actually pay? I want to see that math to better understand how they or the other ai companies imagine this is all going to work out. I can just imagine 200 developers all uploading their 1M LOC tokenized code bases every morning along with the supporting information and how many GPUs that’s going to take, and it doesn’t add up to 20 dollars a month.

The energy that’s going to require seems extraordinary and we’re still supplying that energy at least partially through atmosphere destroying sources.

Even if we get there, whatever there means, the uses for AI will explode putting pressure on the gpu/energy resources.

How will we apportion these valuable ai resources for their specific uses? Through charging more until people stop paying, obviously, but at what point does it become a national security issue and governments decide that ai resources are a national security concern.

This is the most beautiful ponzi scheme. Get all developers rightly addicted to coding via ai to support building it out and then pull the rug when more valuable customers come along. Be sure to keep sharpening those reading and understanding skills!

2/19/2025

Pros

  • It can communicate with Ollama
  • I like that it can create files and make code edits
  • It runs the files it creates, which is great and asks the user’s permission before doing so
  • The SEARCH/REPLACE system of applying diffs created by the llm is interesting

Cons

  • It asked me if I would like to see the release notes… I said yes but it didn’t show me anything.
  • I don’t get any sort of waiting indicator
  • I prompted generate hello world in python and it sent 2.5k tokens and received 99. What did it send?
  • The default white background for code prompts is blinding
  • It really wants to create a git repo for me. That feature is targeted at someone else, surely.
  • When installing with pip it downloaded every dependency in the world
  • Does not output time taken
  • When using the ollama repl for simple prompts it’s much quicker. The whole system prompt is huge and makes it much more difficult for the model to respond quickly.

On Investigation

There is a --show-prompts option to show you what aider is sending. There is also a --cache-prompts option which isn’t fully explained. The prompt is large because it’s trying to tell the model the different ways it wants to interact with it. Especially with code blocks and the SEARCH/REPLACE system which is cool, but much prompting is needed to get it to do all that.

As Always

I appreciate the industry level churn around AI coding tooling. I’m set on ollama at the moment, and despite the poor benchmarks for my preferred model, qwen2.5-coder:32b, I’ve gotten use out of it. Aider has some great features but I prefer to use git myself, I prefer to apply changes myself and if aider only wrote to a file I think I’d be happier. That’s the feature I want, just get the code to a file quicker.

What aider is trying to accomplish is to manage both the code base and the workflow for you. This is prompt-only engineering and I don’t believe prompt-only engineering will be good for codebases even in the medium term let alone the long term. Companies are going to try to code this way and I’m skeptical it will work out.

As Always, the details are important, we’re creating systems that will let the details slip on by.

2/14/2025

At the beginning of this week I had the idea to try chriserin.blog in the browser and found a gigalixir error page. This page gave me the cli command to restart the app that had been shutdown due to inactivity. So I do have a blog! I just need to restart it! Luckily I still have the computer from when I last worked on this blog, and even luckier, the gigalixir cli was still authenticated. I ran the command gigalixir ps:start -a chriserin-blog.

The site came up, and it was … cringe. The design was cringe. The writing was cringe. The whole thing. It needed a redesign and some fresh content, so here we are. What you see now is a more mature, stately design becoming of a software developer as aged as myself. I have the opportunity to also think about what else I could host here, and I now have a site nav where you can learn about me, my projects, what I’m doing right now, and my home. Or maybe home just takes you to the root page of this website. Stately. Mature.

I also took the opportunity to create a TIL page in the style popularized by Josh Branchaud and Jake Worth. I can now write about something I learned in a markdown file, commit it, push it and it shows up when you click the TIL link in the navbar. Every TIL is a victory, every victory is worth celebrating, and surely I’ll be celebrating often. I have much to learn.

4/15/2021

Background

My computer setup is a MacOS computer that ssh’s into a linux computer, where I do my development. Best of both worlds. I’m in the middle of tricking out my devenv before I start a new job and this post is about one of the scripts I’ve written.

The Script

I’ve been writing code for 20 years and one of the interesting things I’ve learned about the craft is that I can write bad code when I’m not centered emotionally. I used to rely on emotions like anger and it’s various colors to help me focus, so much so that I would subconsciously look for things to make move me into that place emotionally to help me focus. Maybe at some point I needed that extra focus, and that’s the technique I embedded within myself to get there. “I’ll show you!”, by doing a great job?

I can speak to the self that first started doing this. For a young programmer, the frustrations can pile up. The squeeze is on. The technology is difficult and the people asking you to program things don’t understand how to set you up for success. This is the easy story to tell myself anyways.

The truth is more like, I lacked self-confidence, I didn’t like myself at times, and I started to hang a lot of self worth on being clever enough and smart enough to write software. And when you’re getting squeezed by the tech and the people, well, it becomes a battle for yourself in some ways. Defense mechanisms are engaged. Emotions are heightened. My fingers start flying. Negative tension and the resulting communication start to wear on both myself and my working relationships.

I don’t know if I’m past this. I do know that I can recognize these aspects of myself. I do have the capability to not have my feelings dictated by the squeeze. I’m confident enough to feel how I want to feel when I remember that I have this capability and confidence. But I need a little help remembering.

When I ssh into my linux machine I see the motd banner. Message Of The Day. I’ve modified the motd to include helpful reminders for each day of the week, like, “Are you centered?” and “Are you balanced?”.

Figuring out how to edit your motd is an exercise I leave to the reader.

4/2/2021

Background

As a consultant, I’ve rolled onto many projects. You get one chance to introduce yourself, and the way I like to introduce myself when I get the chance is “I care about these things in this order. 1) I care that it works. 2) I care that it is tested. 3) I care that it is pretty.”

Introductions

There are all types of computer programmers out there, and most programmers of any experience have worked with developers that maybe don’t have their priorities in order. Or there is an excess of negativity. Maybe there is too much focus on particular aspects of the software design. So whenever you see that a new programmer will be joining your team it’s natural to wonder, “What kind of programmer will this be?”

Or specifically, “Will this programmer criticize my code?”. The answer to that question is yes. As part of the process of reading code, I’m naturally going to form opinions about it, every programmer will. Those criticisms might be the collective negative tradeoffs as I see them for the programming choices that have been made. Those tradeoffs exist for all the code that anyone has ever written. So yes, I have opinions on the choices that have been made for the code that has been written.

Now, how to express those opinions is an area where I’ve grown. I’ve had to grow, because in the past I’ve used harsh words to criticize code. Harsh words may gain attention but they are typically counterproductive. Harsh words do not engender trust. When I’m introducing myself, I want to reassure my new collaborators that I’m reading code with the right priorities and intentions, and always that 1st priority is: Does it work. If it works it is good.

Any programmer that has tried to maintain someone else’s code know that “Does it work” is not the only thing that matters. What matters next is: Is it tested. If it is tested, I have a much higher chance of understanding and changing the code successfully than I would if it was not tested. Tests give the confidence that I can change the code in a number of different ways to satisfy whatever new requirements I have been given.

Does it work, is it tested, then great! But we all know that there’s another level. And this level encompasses the entire art of programming. This is where things get murky and subjective. My first two priorities are fairly objective, which aids there efficacy. This 3rd priority is where the twin demons of readability and maintainability fire vitriol into our hearts. The choices that we make to serve these masters have long lasting impact on how the software changes over time and how expensive it is to change. This is where we shake our fists at the sky due to a choice made 5 years ago that prevents us from making simple changes. This is where our heart rate accelerates with the physical reactions our human bodies go through when handed challenging circumstances. As programmers, we get emotional here and those emotions drive responses that could bury the tenuous beginnings of new collaborations.

And so… It is important to remember that working, tested code is good code. I care about these two things more than all the subjective choices made in circumstances that are soon forgotten. I will assume that everyone did the best job they could and I will not turn opinions into judgements. My unspoken number one priority is a great working relationship with those around me and that is why it is important to me that I communicate my software priorities when we are introduced.

3/28/2021

Background

I like to cruise bandcamp for ambient cassettes. Below the fold on the bandcamp homepage there is a section where you can filter by genre and by medium. Genre “Ambient”. Medium “Cassette”. Out pops a list of interesting ambient tapes. At that point I just listen to a little bit of each thing and make some decisions. This Moss Wand tape hit the sweet spot for me and I’m discovering that it gets better each time I listen to it…

Music

There is some darkness to this album. The type of playful darkness that comes from a Dan Brown book. Like, this ritual vibration has been kicking since the 13th century! We need some evil looking monks to hold up a chalice of blood to finally bring the conspiracy to it’s ultimate conclusion! If this album was the soundtrack to the Da Vinci Code, it would have changed the whole vibe. It would have ripped away the good natured plasticness that Tom Hanks lends to everything and got him in touch with the terror and fear that the plot suggests.

But the darkness is tempered. There is triumph in this album. The synth hooks are delicious and they come in to save the day after the mood has been set and seeming all is lost. Just like Tom Hanks.

There are a lot of classic synth ideas in here, slow swells, droning vocals and these delicious synth hooks over minimalist percussion grooves that get your head nodding. It’s composed in such a way where the layers keep coming, the music keeps evolving and the sound becomes thick with left-over chords and faded pads.

It’s music that gets out of the way and then demands your attention. It might not penetrate your consciousness for a while but then all of a sudden it’s there and it’s heavy.

3/27/2021

Background

The Coode Street Podcast is a podcast about speculative fiction. It is hosted by Gary K Wolfe and Jonathon Strahan, both of whom are long time sci-fiction and fantasy editors. Their podcast is somewhat irregular, they had just gone to a once every two weeks schedule when the pandemic started. At they point, for whatever reason, they started doing these amazing daily interviews with speculative fiction authors, 10 minutes with

Podcast

We’re a year removed from the beginnings of lockdown and it’s a good time to roll our eyes backward and sharply examine the crazy feelings and actions of those times. The pandemic has been different for everyone in terms of isolation levels, micro-stresses and coping mechanisms but what we all shared was the enforced suddenness of it. Even though there was a 3-month buildup of news about some sort of easily communicable disease that seemingly engulfed an entire Chinese city, you had to really dig into the buried paragraphs of this news to understand that this was different from all the previous foreign contagions that over the last 20 years had made the news but had not penetrated our air-space, so-to-speak.

So there was a slow build up and then a sudden shared realization that this bug was loose in America and that we were beyond tracking it and isolating it and that we just had to cancel everything.

All of a sudden I had no friends to talk to. The bands I played in were dead. The co-workers I shared casual interactions with were banished to their own homes, and I was alone in dealing with the shock and uncertainty that we all shared but couldn’t share.

Gary Wolfe and Jonathon Strahan became my friends. They took what was a fairly irregular podcast and completely changed the format. I think they felt the loss of the not being able to attend sci-fi conferences like the Hugo awards and created a substitute to help them connect with their own friends that they would normally be talking to in some bar after some panel at some global literary gathering.

They debuted 10 minutes with on March 28th, 2020 with Episode 369: Ten Minutes with Sarah Pinsker and continued publishing these short interviews almost daily until October 12th when the desire to spend their time doing something else must have caught up with them.

For me, these daily episodes were an anchor. They were a daily re-affirmation that yes, everybody is dealing with this, yes, this is affecting everybody, but also everybody responds to stress and isolation differently. Differently, but there seemed to be general responses to the implied question, “How are you dealing with this…”. One response was, the avalanche of micro-stresses associated with following the news and evading invisible attackers has left me unable to read or write effectively and I’m binging cooking shows. Or, as a writer I’m isolated all the time anyways and I’m using the extra quiet and time I have to dig into some esoteric research.

Those are poles actually rather than camps of responses. Everyone fell somewhere in-between. But given that everyone was an author, even if they had temporarily lost the attention span to read novels, they were still able to offer really interesting book recommendations or tell us about the graphic novels they were reading or let us know about the joy of a well-spoken audio book.

And then they were able to informally and eloquently speak about books. For me, listening to this podcast sparked the desire to read more than I ever have as an adult. I read before work, at lunch, after work, after dinner and before bed because if I didn’t, I would never get through the ever-growing pile of book recommendations I was collecting on a daily basis. It was inspiring listening to authors talk about the works that inspired them at this particular moment.

On the odd occasion that they were talking about a book that I had also read, it was comforting in the same way that talking about a movie we had both seen was comforting.

I’m grateful for the Gary and Jonathon’s encyclopedic knowledge about the history of science fiction and fantasy and I’m grateful for their deep rolodex of writer acquaintances that kept these interviews going for as long as they did. When it gradually stopped, I was left with a hole in my daily routine that I struggled to fill. I’ve since discovered other podcasts on other subjects that give me a similar sense of friendship but I doubt I’ll have the experience of slowly working through a slow crisis in real time like the stretch of 10 minutes with provided me with.

3/21/2021

The Background

CJ Cherryh is my favorite author. She’s a prolific sci-fi writer of the late-70s 80s 90s, maybe slowing down to the present but she still got a book published in 2020. Her work might be described as hard sci-fi space opera. My sister got me the Chanur Saga as a gift for Christmas and I’ve finally worked my way through it. The Chanur Saga is 1 volume collection of 3 books about the Chanur, let me tell you about the Chanur…

The Book

Chanur is a house of the alien species the Hani and the story is told from their perspective. In particular, this is a mostly single point of view story following Pyanfar, the captain of Pride of Chanur a space going merchant vessel that trades at space stations across the known space with a collection of other alien species from other worlds.

CJ Cherryh is the queen of alien species. Imagining culturally, biologically, and mentally distinct alien species is one of her many strengths, and something I think she does better than any other sci-fi writer that has ever been.

This alien species though, the Hani, seems toned down, cartoonish, humanistic, just marginally off of humans mentally and marginally off of humans culturally. They are lovable. They are humans if humans were evolved from cats rather than primates. They are cats in space, and it’s amazing.

It makes me think about earth circa 1981 when the first book was written and two dominant works of the time, Star Wars and the Muppets, because this story and the Hani in particular feels like a combination of the two.

But this is CJ Cherryh, and she cannot have just one alien species in a book. This book is about the intersection of 7 different space-faring alien species that go from relatable, to weird, to almost completely unfathomable, even by other creatures of this universe. They’ve developed a Compact, an agreement providing balance by which they can all profit through trade.

The main antagonist species is the Kif, which remind me of the Skeksis of Jim Henson’s Dark Crystal. And on the surface, the Kif have the look and feel of an antagonist. Dark hooded robes. Tall and stooped. Aggressive. Cannibalistic. Beaks. Jaws. Their food has to be alive when they eat it. A language full of hard vowel sounds. They are very clearly on the other side here. They are bad.

But this is a CJ Cherryh book and she cannot imagine creatures whose intrinsic motives are not hardwired by evolution. She cannot imagine a species that does not squirm to the rhythm of its own internal politics. She cannot imagine interactions between species that do not have actors whose own goals and agendas might lead them to odd friendships.

And there lies the complexity that CJ Cherryh embraces. The politics between alien species driven by the politics between factions of each species driven by the desire of individual actors for personal gain.

This volume of books can be read to as a treatise on all political actions having complex motives. Or it can be read as Cats in Space with Guns. Either way it’s a great, fun, adventurous space opera that for me was engaging cover to cover.

3/20/2021

10/10 Would listen to again.

Background

This is a tape I purchased on bandcamp. Just cruising bandcamp looking for ambient tapes. The cover on this one appealed to me, just the surface of the moon, and the music…

Music

Have you had a quiet moment in your kitchen when you suddenly become aware of the ambient noise, which is likely dominated by the refrigerator. It’s a drone. Now image if that drone was made with some beautiful discrete synthesizer components instead of a small electric engine. And now, listening to that nice synthesizer refrigerator drone, place yourself on a planet somewhere else in the universe, maybe on the other side of the Milky Way on the outskirts of star system that where that star creates some sort of periodic phase shifting pulses and all that radio wave and light wave information is converted to audio.

This music places me out there. And it’s stark. And it opens your mind to that devastating awareness of eternity and forces so much larger than ourselves.

3/14/2021

10/10 Would Listen Again.

Track I’d include in a mixtape: Autumn Pleiades

Background:

Rob Mazurek is a multi-disciplinary multi-instrumentalist mutli-style composer with strong ties to Chicago. Dimensional Stardust is the sixth(?) Exploding Star Orchestra album. Exploding Star Orchestra is a collection of musicians brought together by Mazurek and given a set of detailed compositions that they can work within and around to give the us a really refined, restrained, imaginative listening experienced.

The Music:

It starts off with a Shastakovich like string ensemble intro abrupt shifting into a groove that maybe could have come from that world if that world had grooves. This is a jazz-ish album though, and you get jazz-ish thoughts throughout, but avoiding the standard jazz-ish forms and chords. It’s music that can be intricately built up on a tea table for you to pull up a chair and stare into the details, except the details are those of the cosmos, and for me, with song titles subtitled Parable 43 and Parable 3000 it feels like an extension of Octavia Butler’s Earthseed. An extension far into that particular future.

So while previous Exploding Star Orchestra albums worried about the shape of stars, this one worries about the people populating the cosmos far far into the future. Mazurek is very comfortable in electronic music (See: Love Waves Ecstatic Charge) but in this album electronics are used sparingly in a way as to give a cosmic background to the human experience and let the human musicians come to the forefront.

The musicians are all of your favorite Chicago connected musicians and it’s nice to check in with this collection and see that they’re all creating yet more creations. This seems to be recorded all pre-pandemic and I’m looking forward to what Rob Mazurek and all of these musicians might be creating during or post-pandemic so that we can all connect on that pandemic and post-pandemic level.

3/13/2021

My goals are to write, write frequently, write about the things that interest me. Write about the things that I feel like I have some to offer the world. I want to write about Eurorack modules and patches. I want to write about music that I listen to and books I read. I want to write about all the nuances of computer programming (at the least the type of programming that I think I’m good at, which is a weird mix of pragmatic spreadsheet programming and guiding programs to facilitate easy maintenance). Maybe sometimes I want to take a swing at writing fiction. Not the type of fiction where you have to think hard and count your words, but the type of fiction that flows out of your finger tips like undirected lightening. I just want to write, really. I want to write for today, so that tomorrow I can look back to see what I’ve written. Today always changes and tomorrow always comes and maybe in 40 years I can look back to this moment and see that I once at least desired to express myself in the way I’m doing so now.