hemul75/Getty Images
Wow. This feels like a dream. I just managed to incorporate a brand new feature into my software, complete with user interface and functionality, simply by typing out four paragraphs of instructions. I have screenshots to prove it, and I’ll do my best to explain it all in this article. It’s hard to determine if we’re in the future or if we’ve somehow stumbled into a new level of chaos (or perhaps both).
Let’s take a moment to pause and reflect. Google’s Jules is the latest addition to the growing pool of coding agents that have been unveiled this week. I previously discussed OpenAI Codex and Microsoft’s GitHub Copilot Coding Agent earlier in the week, while ZDNET’s Webb Wright covered Google’s Jules.
All of these coding agents are designed to carry out coding tasks on GitHub repositories. GitHub, for those who may not be familiar, is a massive software storage, management, and distribution platform owned by Microsoft, serving as a hub for some of the most critical software in the world, especially open-source projects.
The key difference, at least for the purpose of this article, is that Google has made Jules accessible to everyone at no cost. This allowed me to dive right in and give it a try, which has left my head spinning.
Limitations on usage and my initial prompts
The free version of Jules only permits five requests per day. While this may not seem like much, I was able to introduce a new feature to my software with just two requests. So, it’s essential to consider the prompts carefully before using up your daily quota.
My first two prompts were somewhat tentative. It’s not that I wasn’t impressed, but I was cautious about giving Jules too much freedom. I’m still a bit wary of entrusting an AI with all of my code at once, so I opted for a more conservative approach.
For my first prompt, I asked Jules to document the “hooks” that add-on developers could utilize to enhance my product. I didn’t provide much guidance, and the result was some markup that Jules suggested should be included in the readme file of my code. It worked, but it wasn’t particularly exciting.
I did have the option to publish that code to a new GitHub branch, but I decided to skip it since it was just a test run.
My second prompt involved asking Jules to recommend five new hooks. The response seemed reasonable, but I realized that enabling those functions in a security product posed too great a risk for me to leave to an AI. Consequently, I chose to forego those changes as well.
At this point, Jules seemed to need a break and ceased functioning for about 90 minutes. This pause gave me some time to ponder. I was eager to see if Jules could truly enhance my code and save me some valuable time.
Background information
My Private Site is a security plugin designed for WordPress, currently active on approximately 20,000 sites. It presents a login dialog on the front end of the site’s web pages, offering various options, with the login dialog being the primary feature. I acquired the software a decade ago from a developer known as “jonradio” and have been maintaining and expanding it ever since.
I decided to test Jules on a feature that some users had requested, which involved hiding the admin bar from logged-in users. The admin bar is the black bar that WordPress places at the top of a web page. My goal was to have Jules add an option on the dashboard to hide the admin bar for logged-in users browsing the front end of the site.
I rewrote the admin interface several years ago from its original form when I acquired the plugin. While adding options to the interface is relatively straightforward, it is still a time-consuming process. Each option requires the addition of a UI element, along with preference saving and recalling when the dashboard is accessed. This is in addition to any program logic controlled by the preference. Though not overly challenging, the process involves numerous small details that must be adjusted, taking up time.
In my experience, adding a preference UI element, along with the necessary tasks, typically takes about 2-3 hours. It’s not overly complex, but there are multiple minor details that require attention, contributing to the time investment.
This background should provide sufficient context to understand my subsequent test of Jules. And here’s a hint: the first test didn’t go well, but the second one was a tremendous success.
Instructing Jules
Incorporating a hide admin bar feature is not a task that your average coding assistant, like ChatGPT, can easily handle. As I previously mentioned, adding this new feature to the dashboard involves programming across various sections of the codebase and necessitates a deep understanding of the overall code structure.
Here’s what I instructed Jules to do:
1. Add a new checkbox labeled “Hide Admin Bar” under the “Admin Bar” section on the Site Privacy Tab of the admin interface. Place the following text in the MAKE SITE PRIVATE block, located just under the Enable login privacy checkbox and before the Site Privacy Mode segment: “hemul75/Getty Images”
I provided Jules with specific instructions on where to place the new option in the AI. Initially, I made an error by omitting the details in square brackets, which caused the feature to fail. Once I included the necessary information, the feature worked as intended.
Ensure that the selection of the checkbox is saved to the plugin’s preferences variable when the Save Privacy Status button is checked. This informs Jules about the preference data structure and prompts it to update it whenever a user makes a change. Understanding the underlying code is crucial in instructing Jules for optimal performance.
Display the appropriate checked or unchecked status when the Site Privacy tab is visible to ensure the interface matches the preference variable.
Utilize the preference variable to add code that hides or shows the WordPress admin bar based on user selections. This feature dictates the logic that controls the admin bar’s visibility for different user types.
Following the training session with Jules, I reviewed the code changes it proposed. Despite not having the opportunity to approve or modify the plan, the changes were successfully implemented.
By pushing the code to a separate branch on GitHub, I was able to test the changes safely on my development machine before deploying them to the main repository.
After testing the new features, I merged the branch back into the main codebase and updated the GitHub cloud. I then deleted the temporary branch to maintain a clean codebase. Finally, I packaged the updated code for deployment. Saya menambahkan perubahan ke readme untuk menjelaskan fitur baru dan memperbarui nomor versi kode. Kemudian, saya mendorongnya menggunakan SVN (sistem kontrol kode sumber yang digunakan oleh komunitas WordPress) ke repositori plugin WordPress. Perjalanan ke pusat kode. Jules sangat pasti beta sekarang. Itu tergantung di beberapa tempat. Beberapa layar tidak diperbarui. Itu memutuskan untuk check out selama 90 menit. Saya harus menunggu sambil pergi dan kembali dari tempat digital bahagianya. Ini menunjukkan semua jenis hal yang Anda harapkan dari sebuah kode yang baru dirilis. Saya tidak khawatir tentang itu. Google akan membersihkannya. Tidak diragukan lagi bahwa ini adalah tingkat berikutnya dari pengkodean berbasis AI. Intelektual manusia yang sebenarnya akan diperlukan untuk mencari tahu bagaimana menghadapinya. Apakah Anda sudah mencoba Jules dari Google atau salah satu agen pengkodean AI baru lainnya? Apakah Anda percaya pada mereka untuk melakukan perubahan langsung ke kode Anda, atau apakah Anda lebih suka tetap mengendalikan secara manual? Apa jenis tugas pengembang menurut Anda seharusnya dan seharusnya tidak ditangani oleh alat-alat ini? Dapatkan cerita lebih lanjut tentang AI? Daftar untuk Inovasi, buletin mingguan kami. Anda dapat mengikuti pembaruan proyek sehari-hari saya di media sosial. Pastikan untuk berlangganan buletin pembaruan mingguan saya, dan ikuti saya di Twitter/X di @DavidGewirtz, di Facebook di Facebook.com/DavidGewirtz, di Instagram di Instagram.com/DavidGewirtz, di Bluesky di @DavidGewirtz.com, dan di YouTube di YouTube.com/DavidGewirtzTV. The image is from hemul75/Getty Images.