ChatGPT4 and Codeium are still my favorite dev assistant stack
As of October 10th, 2023, the Generative AI hype cycle is still in full-swing and there are more startups with their own developer-focused AI-assisted coding tools than ever before. Here's why I'm still perfectly content with ChatGPT4 (with a Plus subscription for $20 per month) and Codeium, which I've reviewed here for code completion.
They are available everywhere
ChatGPT4 can be opened from a browser anywhere, even on internet-connected machines I don't own: chat.openai.com
is part of my muscle memory now, and I once I log in, my entire
conversational history is available to me. Now that ChatGPT4 is available on Android, it's truly with me wherever I go.
They are low-friction
Now that ChatGPT4 is on my phone, I can start up a new conversation when I'm walking and away from my desk. Some days, after working all day and winding down for sleep, I'll still have a couple of exciting creative threads I don't want to miss out on, so I'll quickly jot or speak a paragraph of context into a new new GPT4 chat thread to get it whirring away on the idea. I can either tune it by giving it more feedback or just pass out and pick up the conversation the next day.
I don't always stick to stock ChatGPT4 form-factors, however. Charmbracelet's mods
wrapper is the highest quality and most delightful tool I've found for working with
GPT4 in your unix pipes or just asking quick questions in your terminal such as, "Remind me of the psql
command to connect to my Postgres host".
Being able to pipe your entire Python file to mods
and ask it
to help you find the bug is truly accelerating.
Codium works like a dream once you get it installed. I tend to use Neovim by preference but also work with VSCode - once you're over the initial installation and auth hurdles, it "just works".
Most everything else I've tried doesn't work
No disrespect to these tools or the teams behind them. I do believe the potential is there and that many of them will become very successful in due time once the initial kinks are worked out.
But I've spent a great deal of time experimenting with these across various form factors: an Ubuntu desktop, my daily driver Linux laptop, a standard MacBook pro, and the reality is that the code or tests or suggestions they output are often off the mark.
ChatGPT4 extends my capabilities with minimal fuss
Since ChatGPT4 is available in the browser, I can access it from any machine with an internet connection, even if I'm traveling. Since it's now also available as an Android app, I can also reference past conversations and start new ones on my phone.
The Android app has a long way to go until it's perfect, yet it does already support speech to text, making for the lowest possible friction entrypoint to a new app idea, architectural discussion or line of inquiry to help cement my understanding of a topic I'm learning more about.
They are complimentary
ChatGPT4 excels at having long-winded discussions with me about the many ways I might implement desired functionality in one of my applications or side projects. It often suggests things that I would have missed on my first pass, such as the fact that Vercel has deployment hooks I can take advantage of, and it's especially useful once the project is underway.
I can say things like:
I'm changing the data model yet again now that I understand how I want this UX to work - drop these fields from the posts table, add these to the images table and re-generate the base SQL migrations I run to scaffold the app.
I think of and treat ChatGPT4 as a senior level technical peer.
I do sometimes ask it to generate code for me as a starting point for a new component, or to explain a TypeScript error that is baking my noodle, but it's main value is in being that intelligent always-available coding partner I can talk through issues with.
Meanwhile, Codium runs in my actual IDE and is one of the best tools I've found at code-completion - it does a better job of just about anything I've evaluated at grokking the importance of surrounding code and comments and its suggestions are often scarily spot-on, which means that it saves me a couple seconds here and there, closing HTML tags for me, finishing up that convenience JavaScript function I'm writing, even completing my thought as I'm filling in a README.
That's the other key feature of Codium that makes it such a winner for me - it's with me everywhere and it can suggest completions in any context ranging from prose, to TOML, to Python, to TypeScript, to Go, to Dockerfiles, to YAML, and on and on.
With GPT4 as my coding buddy who has the memory of an elephant and who can deconstruct even the nastiest stack-traces or log dumps on command, and Codium helping me to save little bits of time here and there but constantly, I have settled on a workflow that accelerates me and, perhaps more importantly, increases my enjoyment of development, which I spent the vast majority of my time doing.
Looking forward and what I'm still missing
I have no doubt that the current generation of developer-focused AI tools are going to continue improving at a rapid pace. ChatGPT itself has seen nothing but enhancement at breakneck speed since I started using it and I haven't even gotten my hands on its multi-modal (vision, hearing, etc) capabilities yet.
However, even with excellent wrappers such as mods
, which I've mentioned above, what I find myself missing is the ability for ChatGPT4 to read and
see my entire codebase when I'm working on a given project.
The quality of its answers are occasionally hobbled by its inability to load my entire codebase into its context, which leads to it generating more generic sample code than it really needs to.
I'm confident with additional work and a litle time, it won't be long until ChatGPT4 or one of its competitors is able to say: "The reason your current Jest test is choking on that import statement is because you're missing this specific setting and value in your .tsconfig file".
I'm able to get that information out of it now, but it just takes a good bit of careful prompting and more copy/paste than I would ideally like. What I really want is the helpful daemon looking over my shoulder, who is smart enough to know when to raise its hand to point out something that's going to cause the build to fail, and when to keep quiet because even if it knows better that's just my personal coding style preference so better to leave it alone.
We're not quite there yet, but all of the base ingredients to create this experience are.
Indeed, many different companies both large and small are sprinting full-tilt toward this experience, as I've written about recently, but there's still quite a way to go until these tools present uniformly smooth experiences to their end users: