Write code in unfamiliar territory with AI
I used Claude to build a Chrome extension to add a post-to-Bluesky button on bioRxiv. I've never written Javascript or a Chrome extension before. It took 5 minutes.
The majority of developers use LLMs to help write code, present company included. When I’m working in languages I know well, they're fantastic at handling the grunt work: generating boilerplate, suggesting completions, and writing tedious tests and documentation. But there’s another, perhaps more transformative way these AI assistants are changing how we code: they’re dramatically lowering the activation energy required to start working in completely unfamiliar languages and frameworks.
Think about the last time you needed to write something new or modify something written in a language you barely knew. That initial barrier — the overwhelming sensation of not knowing where to even begin — can be paralyzing. This is where LLMs are quietly revolutionizing the learning curve for developers, serving as patient technical mentors who can help us take those crucial first steps into unfamiliar territory.
Here’s a short vignette illustrating my point. I used Claude to build a Chrome extension to add a post-to-Bluesky button on bioRxiv. I've never written Javascript or a Chrome extension before. It took 5 minutes and I learned a bit along the way.
A post-to-Bluesky button on bioRxiv
Lior Pachter posted a smart recommendation to add a post to Bluesky button on bioRxiv preprints. There’s already a Facebook “Like” button (who uses Facebook?) and a post to X button (X is dead; long live Bluesky for Science).
I prompted Claude 3.5 Sonnet to help me write a browser extension to add a Bluesky button. I’ve never written a browser extension before, and I’ve only written very minimal Javascript. The whole process took about 5 minutes. The extension is on GitHub at https://github.com/stephenturner/biorxivbsky.
If you’re signed into Bluesky, hit the button and it’ll prepare a post for you. It doesn’t require your Bluesky credentials or any special permissions.
Building this with Claude
To build this I pasted in a screenshot from bioRxiv showing the post to X button (upper left in the image below) and the URL from Bluesky’s docs on action intent URLs. This lets you create links and buttons like the one below (try it!).
The first attempt I ran into an issue with an improperly formatted manifest, but I simply screenshotted the error Chrome gave me when I tried to install it and Claude got it working with only minimal re-prompting.
The extension is on GitHub at https://github.com/stephenturner/biorxivbsky.
Hopefully bioRxiv will put up a Bluesky button soon, making this extension useless. I just wanted to use this as an opportunity to see how well Claude could help me write code in a language I don’t use (Javascript) for a framework I’ve never developed for (Chrome manifest v3 extensions). I think this is one of the most underrated facets of really good GenAI for code.
LLMs lower the barrier to entry in a language or framework you’re unfamiliar with.
I went from zero to a working extension in ~5 minutes, knowing nearly nothing before starting about either Javascript or browser extension development. I later asked Claude to explain everything and now I have a pretty good sense of how Chrome extensions work, and I’m a little less ignorant about JS. Onto Rust next 🦀.
Trust, but verify
There’s a caveat I should note here. No matter how well these tools perform on benchmarks I’d never use any of these tools to write code that I can’t verify myself (this goes for any language, but especially one I’m unfamiliar with). This one was simple — does the extension put a share to Bluesky button on a bioRxiv page (yes), and does clicking that button open a Bluesky share compose tab (yes)? Both of these questions were easy to verify here, but in other contexts, verification may be more difficult with a framework you’re unfamiliar with.
Get on Bluesky, btw
If you’re on X and haven’t yet followed the mass eXodus of scientists to Bluesky, you should give it a try. I wrote a post on getting started with Bluesky for Science, with links to starter packs, moderation lists, feeds, etc.
And I followed up on this with another short post on expanding your Bluesky network with R, where I demonstrate how to use the atrrr package to find people followed by the people you follow, but who you don't yet follow.
And most recently I recently wrote about using local and frontier LLMs to ingest, analyze, summarize, and translate Bluesky posts on a particular topic or search term.
You can follow me on Bluesky at @stephenturner.us.