Mrinmayi Kulkarni, Ph.D.

(she/her)

Behavioural and Data Scientist

This website!

To AI or not to AI

tl;dr this portfolio is not entirely vibe-coded. If you're not interested in why, skip to the next article!

As I started to work on this website, there was a lot of pressure (from people around me, and from reading strangers' LinkedIn updates) to just use AI. I had been seeing people's posts about spinning up web apps in an afternoon. And given the amount of work it was going to take to build this portfolio, vibe-coding (๐Ÿ™„) seemed like a natural choice. But I decided not to prompt my way through this project. Here's why:

๐Ÿง 

Generally, I'm an enjoy-the-process person, and I really like learning new things. I had used HTML, CSS, Javascript, and JSPsych to code online experiments - so I was familiar with some basics. I was excited to learn all the tools I would need for this project, to build the website brick-by-brick, and to troubleshoot new code (few things compare to the dopamine hit of when your code finally does what you want it to!).
Moreover, I knew that I wouldn't feel ownership of content created by AI. Writing is my least favourite part of the research process. But I still didn't want to feed my published papers to an LLM and have it spit out blogs. At the end of the day, I wanted to feel like I had done the work.

๐Ÿคจ

I'm somewhat suspicious of entirely AI-generated content. I had started using LLMs to write some R and Python code for analyses in the last two years of my postdoc. But I found that it didn't always provide the best solutions, especially when the analysis was somewhat niche. But because I'd been using R and Python for 10 years, I was able to catch these errors. I'm obsessive about double- and triple-checking my own work. And it made me uncomfortable to think that I wouldn't be able to verify what Claude was doing, if I was entirely unfamiliar with the tech stack.

๐Ÿ”๏ธ

I care deeply about the environment. I spend a lot of time thinking about how much waste my existence is generating, and try to minimise it - sometimes successfully, sometimes not so successfully. I am also aware that studies now show that individual action, in the absence of larger systemic change, can only do so much to minimise damage to the world. At the same time, I am certain that individual action will, at the very least, not hurt. And for now, that's the path I'm taking.
I'm generally mindful about how I use AI in my everyday life. I try to avoid asking chatGPT every question, especially when I know a simple Google search will get me an answer (I use the -noai flag in my Google query to stop it from generating the AI overview). This attitude also extended to this website - for instance, if I can figure something out from the TailwindCSS docs, I won't prompt Claude for it. I'm also slowly learning how to make my use of AI for development more efficient (XXXX INSERT EXAMPLES HERE).

Having said this, it's not like I didn't use Claude Code at all. I first watched a bunch of videos and read articles to understand the basic architechture of NextJS apps and React components, and learn about routing. I followed along with this video to make the basic website. I setup Claude Code to give me instructions on how to implement something, rather than write the code for me. In cases where I needed the code written (e.g., animations, persistent state), I asked it to explain how the code worked, and tried to ask questions challenging its assumptions. This way, I was able to understand the code, and write any subsequent features relying on the same concepts myself! The content in the projects is entirely written by me.

Using this process it took me about two and a half months, working 3 days a week to put the website and content for three projects together. I had the luxury of time. If you're not in a hurry, I would highly recommend getting your hands dirty with the code. The learning curve is steep, but the outcome is very satisfying. ๐Ÿ™‚