Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Empty file added astro-site/().md
Empty file.
5 changes: 4 additions & 1 deletion astro-site/.astro/content-assets.mjs

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion astro-site/.astro/data-store.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion astro-site/.astro/settings.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"_variables": {
"lastUpdateCheck": 1776233890669
"lastUpdateCheck": 1779356136307
}
}
31 changes: 16 additions & 15 deletions astro-site/.obsidian/workspace.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
"state": {
"type": "markdown",
"state": {
"file": "src/content/writing/long-live-design-process/index.md",
"file": "src/content/writing/how-i-build-with-ai/index.md",
"mode": "source",
"source": false
},
Expand Down Expand Up @@ -213,36 +213,39 @@
},
"active": "fa64cf4b0f3b9451",
"lastOpenFiles": [
"src/content/writing/how-i-build-with-ai/exhume.png",
"src/content/writing/how-i-build-with-ai/exhume.PNG",
"src/content/writing/how-i-build-with-ai/IMG_8206.PNG",
"src/content/writing/how-i-build-with-ai/variant.png",
"src/content/writing/how-i-build-with-ai/Screenshot 2026-05-22 at 2.30.53 PM.png",
"grindsize.md",
"src/content/writing/how-i-build-with-ai/index.md",
"src/content/writing/how-i-build-with-ai/grindsize.png",
"src/content/writing/how-i-build-with-ai/Screenshot 2026-05-22 at 2.28.02 PM.png",
"().md",
"src/content/writing/how-i-build-with-ai/how-i-build.png.sb-a0773456-CHVgVc",
"src/content/writing/long-live-design-process/index.md",
"src/content/writing/how-i-build-with-ai/how-i-build.png",
"src/content/work/jiva-lite/index.md",
"src/content/writing/how-i-build-with-ai",
"src/content/work/sahabat-jiva-redesign/index.md",
"src/content/work/gojek/index.md",
"src/content/work/jiva-lite/index.md",
"src/content/writing/long-live-design-process/index.md",
"src/content/writing/long-live-design-process/jivalite-ground.png",
"src/content/writing/long-live-design-process/rip-design-process.png",
"src/content/writing/long-live-design-process/Frame@2x.png",
"src/content/writing/long-live-design-process/remove tombstone text@2x.png",
"src/content/writing/long-live-design-process/rip-design-process.webp",
"src/content/writing/toko-poster/index.md",
"src/content/writing/hiring/index.md",
"src/content/writing/long-live-design-process/claude-paper.png",
"src/content/writing/long-live-design-process/Screenshot 2026-02-25 at 1.22.15 PM.png.sb-9c485e8d-i45gGB",
"src/content/writing/long-live-design-process/Screenshot 2026-02-25 at 1.22.15 PM.png",
"src/content/writing/design-tools-decade/index.md",
"src/content/writing/long-live-design-process/Design_Sprints.png",
"src/content/writing/long-live-design-process/1024px-Design_Sprints.png",
"src/content/writing/long-live-design-process/Double_Diamond.png",
"src/content/writing/long-live-design-process",
"src/content/writing/toko-poster",
"README.md",
"().md",
"public/kenneth's presentation (1).pdf",
"public/images/spots-new-design",
"public/images/kenneths-presentation",
"public/Spots_-_New_Design.pdf",
"src/content/work/practo-pro/index.md",
"public/Kenneths Resume 16022026.pdf",
"Kenneths Resume 16022026.pdf",
"Untitled",
"Readme 1.md",
"src/content/work/gobiz-inbox/index.md",
"src/content/work/claim-profile/index.md",
Expand All @@ -256,8 +259,6 @@
"node_modules/anymatch/node_modules/picomatch/README.md",
"node_modules/anymatch/node_modules/picomatch/CHANGELOG.md",
"node_modules/anymatch/README.md",
"node_modules/@shikijs/engine-javascript/README.md",
"node_modules/@shikijs/engine-oniguruma/README.md",
"Untitled.canvas"
]
}
Empty file added astro-site/grindsize.md
Empty file.
3 changes: 2 additions & 1 deletion astro-site/src/content/work/jiva-lite/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ We got 1 field marketer, Erwin, on loan from the growth team for the efforts on
We built a website so that we could provide a social proof that Jiva Lite was infact an offering from Jiva and not a scam. The website had prices which we manually updated and directed users to the Whatsapp number.

<iframe width="560" height="315" src="https://www.youtube.com/embed/kCQByHg5kBI?si=MZe2Z8pwF-LeETQI" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

#### Doing things that don't scale:
We didn't build an in-flow way to add a farmer's bank account details. We resorted instead to use a manual system of getting the information from the farmer and getting CX team to add them to the system. This enabled us to ship faster and prevented user error from entering the wrong information. Where possible we pre-filled dummy data (e.g., user address) in the backend because we didnt want to build without valdiating our idea at this stage.

Expand Down Expand Up @@ -164,7 +165,7 @@ In the one year of operation, we scaled Jiva Lite from 0 to 600 registered users

</div>

Behaviourally though, we were about to bring meaningful improvements into the lives of the Farmers in a few provinces of South Sulawesi. Most farmers who transacted with us made about 2.5-3 million IDR(~$180 USD) more than they would otherwise.
Behaviourally though, we were able to bring meaningful improvements into the lives of the Farmers in a few provinces of South Sulawesi. Most farmers who transacted with us made about 2.5-3 million IDR(~$180 USD) more than they would otherwise.
Even after Jiva Lite shut down, a few of the farmers continued to deal directly with the collection centres and improve their collective earnings.

## Team
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
42 changes: 42 additions & 0 deletions astro-site/src/content/writing/how-i-build-with-ai/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
---
title: How I build with AI
description: A short overview of how I use AI when making my projects
date: 2026-05-21
status: published
image: ./how-i-build.png
---
I've been making stuff almost every week (like this [threejs space-viz](https://eternal-nebula-33dy.here.now/) this week), not everything I make ends up being shared but there's a particular method to my madness.

### Measure twice, cut once
Most of my projects start their journey in a Claude Chat. Claude's research and artifact generation capabilities right in the chat accessible from anywhere via mobile makes it easy to riff on the idea while on-the-go. Plus given my product and design experience, I can easily manage to visualize designs and flows in my mind.

![An example of how a UI description vs Output looks like](./grindsize.png)

If you are unclear about the technologies, you can get Claude to ask you questions to refine the idea. This conversation at the beginning of a project is like the understand phase of the design process.
### Ready, Set up, Go
Setup involves downloading the artifact (or plan.md, figma make file, etc) to my laptop and create a github repo to work in. Depending on the task and my situation, I spin up Claude on local or on cloud.

Although I started using Claude via the cloud setup and moved to Claude Desktop, using Claude via terminal has been easier because it can do more for lazy old me without being buggy as Claude desktop. (note to anthropic: steal codex's reliability and not it's style)

I don't use skills, etc at the start. I feel [they are over-rated](https://blog.jim-nielsen.com/2026/opacity-of-generative-tools/) and is like outsourcing your design decisions. I don't work with an org or a design system so making my own 'design.md' feels unnecessary. I rather spend this time finding references and making mood boards. I don't build complicated technical systems, so I don't worry about code quality either. Most of my projects are a single HTML file. YMMV.
### Rinse and Repeat
While I rarely use skills while pro, sub-agents is something I've started to adopt. For e.g, for [grindsize.in](grindsize.in), where scaling the project would expect me to do repeated tasks, I employ 2 [sub-agents](https://github.com/inosaint/grinder-calibrator/tree/main/.claude/agents). I don't write these sub-agents, but just like my approach with skills, I ask Claude to generate them for me. When defining skills, I do specify the kind of model I want to power the sub-agent based on the task complexity and for token conservation.

The process of creating sub-agents is similar to my process of creating skills. I make Claude create an outcome I plan. I test and review it. I make changes where required. Once I'm certain of the quality of the outcome, I check with Claude about making the process into an agent/skill. A point to note is that at times, certain process may work better as code rather than an agent. Listen to Claude.
### Tests, Evals... 🚀
Testing takes like 90% of my time on every project. Making everything responsive is hard and the browser space is fragmented and it has led me to some interesting browser specific bugs that have stumped the LLMs. ngl, it's feels great to solve them and I can do that because I understand a bit of web technology.

Another thing I wish I did more of is *evals*. Evals helps me when I don't understand the code that is being written. I get another agent to review one agent's work. I consider it to be like a design critique or code review. To manage complex projects and usage limits, I keep a memory.md, agents.md and claude.md files to help with this back and forth.

![How variant helped me improve the visual style of Dominic, a AI based Figma Plugin](./variant.png)
### LLM based tools I currently use:
- **Claude:** Bulk to work done on Sonnet + API
- **Codex (Free):** Mainly for evals and bug fixes
- **ChatGPT:** Prompt definition, Image gen, API
- **Gemini:** ImageGen, Deep Research and Prompt definition
- **Variant.com:** Amazing for a functional minded designer like me, not sure how long they can survive though.

--


*If you are non-technical and want to learn how to to use AI to build, you can check out my free guide at [howtoaicode.com](howtoaicode.com)*
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading