Tales from the jar side: Claude Code, OpenAI codex CLI, and Junie, My slightly newer look, and the usual toots and skeets
I never thought I'd be the kind of person who got up early to exercise. Turns out I was right. (rimshot)
Welcome, fellow jarheads, to Tales from the jar side, the Kousen IT newsletter, for the week of April 20 - 27, 2025. This week I taught my regular schedule at Trinity College (Hartford).
Fun with Agents
Claude Code
I’ve been playing with Claude Code recently. Claude Code is the command-line based AI Agent system from Anthropic. It runs lots of tasks on your behalf, communicating with Claude Sonnet 3.7 (by default), and charging based on the number of tokens used. That’s typical of API calls.
I should note that prior to the release of Claude Code, my monthly API charges rarely exceed a dollar or two. I mostly used the API for experiments and teaching purposes. Instead, I tended to use the web interface at claude.ai or through the Mac app, which charges a monthly flat rate instead of using tokens. The only problem with that is if I had an extended conversation about a particular project that way, I often ran out of my allotted messages and had to wait a few hours before asking more.
With Claude Code, that never happens, because I’m being charged directly. The only problem is that Sonnet 3.7 is their most expensive model, costing $3 / million input tokens and $15 / million output tokens. As a result, my charges for April are going to be, shall we say, a LOT higher than I’m used to seeing.
I did a little digging, and in the docs I found a section on how to change models. It appears that the only other option is Claude 3.5 Haiku, which I can use if I configure an environment variable. That would be much less expensive (only $0.80 / million input tokens and $4 / million output tokens), but that’s also a much less capable model. That’s a bit of a dilemma. Do I go with the best model, hoping for the best possible answers, or save money by using something that’s more problematic? So far, I’ve been spending the money.
I’d show an example of all this, but I recently realized that none of the conversations I have with Claude Code are saved. Each time I restart the system, I’m pretty much starting over. You can save some project-based instructions in a file called CLAUDE.md, and there’s even a slash command called /init
that will create that file for you, but that’s about it.
OpenAI Codex CLI
Of course, if Anthropic has a tool like this, then OpenAI needs to have one as well. It’s called OpenAI Codex CLI, where presumably the CLI part stands for command-line interface. It uses the command codex
when you run it in a project. Like Claude Code, it’s installed using npm and works through your API key. I watched a video comparing the two before I dove in, and the developer recording it had a much lower opinion of codex than of claude. They said that claude felt like a good tool Anthropic used internally, and therefore had debugged and made easier to use. By contrast, codex felt like a rush job, with lots of issues, that was thrown together to compete with claude.
That wasn’t my experience. It’s true that codex doesn’t have the same set of features as claude, but it worked for me (after verifying my organization, which I had to do last week to use the API at all anyway) and hasn’t crashed at all. The biggest difference is the cost. OpenAI codex uses the o4-mini model by default, and the cost for that one is $1.10 / million input tokens and $4.40 / million output tokens, so it’s a bit less than a third of claude’s cost. The thing is, the difference in cost feels much bigger than that. I feel like I can use codex all the time without accumulating too much of a charge, whereas I have to monitor claude whenever I feel like I might be getting carried away.
The codex system let’s you use any OpenAI model, but so far I’ve stuck to the default. I’ve been happy with the results, as well. I took my certification-service system that I described last week, which was written mostly with claude, and applied codex to it. I had it create a new branch, I implemented a few features, added a couple of tests, and verified that everything was working properly. Then I switched to claude and had it do a code review of the codex code before merging the branch into main. So far, so good.
What about Junie?
I should mention that JetBrains, the company that provides the IntelliJ IDEA development environment I use all the time, released their Junie agent about a week ago as well. I tried it out last week. My biggest issue with Junie is that it is incredibly slow. I’m also not exactly dazzled by the outputs I’ve gotten from it yet.
Junie’s cost structure is completely different. JetBrains says they’ll let you pick an AI model, but that’s not available yet. The charges are part of the overall subscription, but there is a limit on the number of tokens I can use per month.
It’s nice to have an agent tool that’s incorporated directly into my IDE, but that’s not required, and the slow response rate makes it pretty unusable for me. I’ll keep trying, though, because I like the company and the IntelliJ products. Maybe it’ll get better.
A couple of extra notes:
I’ve been using Claude Code most of the semester when grading student homeworks. I had claude generate the script for me that loads each notebook in turn, executes it, and reports on the results. It’s a pretty effective system, and each week I only need to adjust the chapter in the assignment.
Where is Google in all this? I’m sure they’ll have an agent, too, which will be based on Gemini. They have an agent development kit, which I haven’t played with at all yet. I don’t see anything like a CLI tool comparable to the others. Something has to be coming soon. I only hope they don’t follow their incredibly annoying practice and release it for personal accounts only rather than business accounts. I’m a one-person company, but I have a Google business account. That’s good in that I have higher limits on Google Doc and I have a paid YouTube subscription, but whenever Google releases a new product they tend to delay the business version for months. I hate getting penalized for being a subscriber. We’ll see what happens, I guess.
My New Look
I posted this on Bluesky last week:
The glasses are definitely an improvement. I probably waited too long to get my eyes checked again, so this change is helpful. The hearing aids really aren’t visible, most of the time even if you’re looking for them. They’ve restored my hearing for a lot of higher frequencies, which means I hear my wife better now. I’d argue that’s a bit of a mixed blessing, but overall a good thing I suppose. :)
Pope Francis
I’m not Catholic, but I do want to say that from what I could tell, Pope Francis was a good, honorable, and kind man. He spent his life caring for others, especially those less fortunate. He seemed to me like a fundamentally decent man, and I was sorry to see him go. I’ll leave it at that, given my status as an outsider in that community. My condolences to all who cared for and about him.
I did see this post on Bluesky, which I thought was great:
Elle is always funny, and that was great. I added this response:
I have to say I was almost insufferably pleased with that reply. I only wish I could come up with something clever like that on a more regular basis.
Toots and Skeets
A fair question
Hah. That would explain a lot.
Comma-separated values
For those outside the tech world, a CSV file is a simple text files where the included data values are separated by commas. A spreadsheet can always be exported that way. We usually refer to CSV files even when the delimiter is something else, like tabs or spaces.
The gag I use in class is generally to refer to CVS files, meaning you pick them up at your local drug store.
(Note for non-US readers: CVS is a major pharmacy chain.)
In the same theme
I’d watch that.
Simple math
If they come in pairs, are they biscuits? (rimshot)
The horror
Not sure what they could do for you other than make sympathetic noises.
That is the question
Whether ‘tis nobler in the mind to suffer
The slings and arrows of outrageous fortune
Or just lie about your age.
Best thing
It’s probably not wise to upset a knife.
What could go wrong?
Sigh. On a related note:
I suspect that the Latin communication platform Signum probably also wasn’t totally secure.
Finally, a bad pun from Roman times
Have a great week everybody.
Last week:
My regular schedule at Trinity College (Hartford)
This week:
My regular schedule at Trinity College (Hartford). This is the last week of classes for the year. :)