The Gadget Era

May 10 2025

gadget-era

A gadget is a small, useful device, often with a clever design, that's intended to make something easier or more convenient.

We're in the commodity era of software engineering.

It's never been easier to just build a "thingy".

I think now is the best time to execute on your laundry list of side projects.

Want to build your dream note-taking app? Do it.

How long would it really take if you're properly using all the tools at your disposal?

Want to do it well, and fast? Set up your "home gadget workshop".

The home gadget workshop

0. Not an engineer? That isn't as much of an issue anymore!

If you're not a programmer, you can still build gadgets.

You'll just need to spend more time in the disassembly phase. Over time, you'll understand the bits you need to know, and what you need to automate.

1. Automate The Ceremony

Ceremony is the boilerplate of your home workshop - the stuff you need to have in place to get started.

home-workshop

If you're ceremony boils down to an init command - you have much higher exit velocity when getting started.

Automate stuff like:

  • Boilerplate code for popular frameworks
    • I don't mean npx create-next-app@latest, instead - I mean:
      • Having ready-to-go auth code with basic Clerk integration
      • An empty schema.prisma file
      • A component library that you can customise and that you're comfortable with
        • shadcn works incredibly well if you're using Next.js. It's great as a starting point, and v0 uses it natively.
      • Postgres installed and configured
        • You want to be able to run makedb and have a postgres database ready to go.
  • PaaS / DBaaS

Not working on web? The same methods apply. Outside of knowing how to use the CLI for your favourite framework, you now need to think about the glue you'll need after that point in time, and automate that.

🔨 Add To Your Toolbox

To build gadgets quickly, we should all have a custom init command.

As an example - here's a custom React Native template I use to get started with expo and a component library

2. Automate The Disassembly

Counter-intuitively, it's incredibly useful to disassemble your ideal for a gadget virtually. Either by yourself (in a markdown file) or with a partner (your favourite LLM buddy). There's a lot of semantic waste if you "just" start coding with an agent like Cursor, and we're all probably trying to conserve our monthly fast request.

disassembly

This step is all about getting clear on what you're trying to build, to save time when you start coding (or vibe coding).

You already understand what ceremony you've run through, so you can start with that.

Then - get into the details of your gadget. Data in and data out is probably the most important part of your gadget for most usecases.

Define the interfaces on paper, point out the core nuances (what if the user is offline? What if the user has no internet? What if the user is on a mobile device?)

🔨 Add To Your Toolbox

The output of your disassembly should be a list of core components - some of which you'll be able to prefab.

If you're building lots of gadgets, you'll want to have the virtual disassebly streamlined. It's entirely possible that you might want to disassembly multiple gadget-ideas at once. And its tractable to do so if you've got the right tools.

deep-research

3. Prefab The Components

No good gadget is built without a few prefabs.

This is the "3D printer" step of assembling your gadget.

prefab

These are the components that you know you'll need.

  • A user interface
  • Maybe a set of server side APIs or actions
  • A bit of logic in between to glue them together

You'll be able to prefab these components using your favourite AI tools.

🔨 Add To Your Toolbox

UI? Whilst a tool like v0 is great, I've found that the more multi-modal context you bootstrap it with, the better performs.

In general - for generating web UI - I tend to provide v0 with a combination of a functional specification of the screen I'd like to build, plus a wireframe generated by ChatGPT.

The wireframe is usually generated as a follow up prompt to the disassembly.

APIs? Depending on your gadgets underlying architecture, you could either 1-shot this in Cursor with an agent, or hand roll some of it and let an agent help you out to fill in the gaps.

Logic & Databases? Hands on the wheel for this step. Describe the core data model (you already know this from your disassembly). It doesn't really matter if you're using an ORM, raw SQL, noSQL or even a spreadsheet. Keep your mental model grounded in data in & data out.

workflow

4. Glue It Together

This is the "assembly" step of your gadget.

You've got your core components.

You've got your ceremony and your disassembly.

Now - you need to put the parts together.

You'll need to make sure that your components work (independently), and then work well together.

⚠️ This is THE area where LLMs are worse (for now) than humans. ⚠️

If you're vibe-coding, this is the plateau in productivity where you'll need to start sifting through the code the agent(s) have generated to make it interoperate correctly.

Thankfully, because you've disassembled your gadget, you should have a good mental model of what's going on.

🔨 Add To Your Toolbox

  • A frame of reference - for object oriented systems, this may be SOLID principles. For other paradigms, this may be different.

5. QA and Iteration

A universal truth of software development is that you need to make sure that "the thing" works.

qa

Firstly - you'll need to make sure that your gadget is usable. What are it's ergonomics? What are the core interactions? Do they do what you wanted them to do?

Then, if you're sharing with others - you'll need to make sure that your gadget is safe to use. We wouldn't want to build a gadget poses a risk to anyone using it.

But - you'll also need to make sure that your gadget is fun to use.

This is the most important part of all of this.

If you can't enjoy using your own gadget, no one else will.

6. Use It, Throw It Away, Repeat

This is the best part.

You've built your gadget. But you haven't invested years in building it. Once it's served its purpose, you can choose to throw it away, or put it on a shelf somewhere to remind you of the journey.

throw-away

🔨 Add To Your Toolbox

  • The ability to let-go. Sometimes, software is meant to be ephemeral.

Want to find about more about how I'm building gadgets?

Check out the new AI area of this website. I talk about the tools I'm using, and the tools I've decided to stop using.

shivan.dev/ai

If you liked this post, you might like my previous post on AI literacy.

📚 Resources

Note

Shout-out to gpt-image-1 for the images on this post. Typos aside, it's a fun tool.