Skip to main content

Command Palette

Search for a command to run...

Asynchronous Agentic Programming with Jules

Published
3 min read
Asynchronous Agentic Programming with Jules
K

Data science, machine learning, applied AI researcher, and mountaineer. Retired from the City of Garden Grove, CA.

While I no longer program as a full time job, I do work on personal projects and applications. I had been using the canvas features in ChatGPT and Gemini, which are great for organizing a single application, but there was still a manual copy/paste step to apply generated code and test it. I was able to improve on that by switching to OpenAI Codex and Gemini CLI. The CLIs allowed me to give direct access to my local repositories. That was much more efficient. Now, I have added cloud based asynchronous agents (Google’s Jules) to write code with direct access to GitHub. Here is the new pattern:

Jules is a cloud based programming agent that can work on its own. To make this work, I had a few set up tasks to complete:

  • Uploaded my public SSH key to GitHub for logins without using passwords (tested from my local machine)

  • Signed in at jules.google.com and authorized it to work on a private repo I had that does stock price and sentiment analysis. You can give access to a single public or private repo or grant access to all repos.

  • Wrote a prompt for Jules to add features to my simple application. The first test was to change the hard coded ticker symbol to a command line parameter so any ticker could be passed to the program. I also asked it to update all comments and method names as needed.

Jules came up with a plan for my prompt and awaited my approval. Once approved, it went to work by creating a cloud VM, cloning my repo, and making changes in its own version of the app. It also ran some tests on its own. After a few minutes, it notified me that the changes were ready for review. On the left side of the screen, it showed what it had done. On the right side, it showed line by line diffs of the changes it made.

I reviewed the proposed changes, then clicked the button to publish the pull request (PR). Next, I went back to GitHub, merged the PR, pulled the changes down to my local machine and ran my own tests to make sure everything worked as expected. The PR description was accurate, the method names it changed and comments were on point. Everything worked.

Next, I gave Jules a slightly more advanced feature request to change the order of processing and feed the sentiment data along with the prices an LLM to make trading suggestions. Less than 10 minutes later, the feature was complete and running on my local machine.

The experience hit me like a bolt of lightning. This pattern made me 5-20 times more productive. Not only in terms of lines of code, but the agent writes better code than I do, so quality also went up. In most cases, manual coding no longer makes sense. Programmers can easily transition to supervisors managing teams of agentic programmers. I can kick off dozens of agents working on different code bases at the same time, even from my phone. The limit is my attention, imagination, and ability to manage the process. A grateful tip of the hat to Simon Willison who introduced me to this idea.

A caveat I should mention is that my code base was tiny for this test. How well these agents work on large code bases is unknown. There are systems designed for enterprise code bases like Blitzy and vibe coding platforms like Replit and Lovable. The vibe coding systems can do full stack programming and also handle deployment to their partner cloud platforms (which is huge), but you sacrifice some control. Maybe that is where everyone will end up. For now, I am in love with asynchronous agents that are here now and not in some SciFi future.

Note: the robot in the cover image is what Gemini imagines as its ideal robot body.