[{"data":1,"prerenderedAt":144},["ShallowReactive",2],{"article-\u002Fblog\u002Fbuilding-small-tools-to-test-an-idea":3,"related-\u002Fblog\u002Fbuilding-small-tools-to-test-an-idea":23,"mdc-x832z7-key":24},{"slug":4,"title":5,"description":6,"body":7,"category":8,"sources":9,"date":13,"tags":14,"language":19,"draft":20,"project":21,"path":22},"building-small-tools-to-test-an-idea","Building small tools to test an idea","A carousel-maker experiment, and what a small working tool can teach before it becomes a larger project.","\nI posted an Instagram carousel maker and asked whether I should open-source it. That public update describes an experiment, not a released product or a measured result.\n\nThe useful idea behind it is broader: a small tool can make a product question concrete.\n\n## Build around one piece of work\n\nA carousel has a simple job. It turns a sequence of points into a set of readable slides.\n\nA focused prototype can ask whether the same spacing, type hierarchy and layout rules are useful across several slides. It can also reveal where a template stops helping: a long title, a code example or an image with an awkward crop.\n\nThose are clearer questions than whether a general-purpose design tool should have another feature.\n\n## Make the output easy to react to\n\nA description asks someone to imagine an interaction. A working output gives them something to inspect.\n\nFor a carousel maker, that output could be a short sequence of slides. Feedback can then become specific: the heading is too small, a slide needs fewer words, or the export does not fit the platform.\n\nThe prototype does not need to solve every case to reveal the next constraint.\n\n## Keep the experiment’s status visible\n\nShowing something in public creates expectations. A clear label helps distinguish a prototype, an open-source package and a product that someone can use today.\n\nThe question in my post was whether to open-source the experiment. It should not be read as a claim that the tool has already been released.\n\nThat distinction lets the work stay exploratory while still making it useful to discuss.\n\n## Let an idea earn its next step\n\nA useful next step might be a smaller scope, another iteration or simply a note about what did not work.\n\nThe larger projects in my workshop, such as [Nuxt Charts](\u002Fprojects\u002Fnuxt-charts), also started with a specific problem. A prototype provides a way to understand that problem before committing to a much larger system.\n\nSee [small experiments](\u002Fprojects\u002Fsmall-experiments) for the place these ideas occupy alongside the bigger projects.\n","Building products",[10],{"label":11,"url":12},"My carousel-maker experiment on X","https:\u002F\u002Fx.com\u002FDennisAdriaans\u002Fstatus\u002F2091175741769531766","2026-10-12",[15,16,17,18],"side projects","prototypes","carousels","product development","en",false,"small-experiments","\u002Fblog\u002Fbuilding-small-tools-to-test-an-idea",[],{"data":25,"body":26},{},{"type":27,"children":28},"root",[29,37,42,49,54,59,64,70,75,80,85,91,96,101,106,112,117,131],{"type":30,"tag":31,"props":32,"children":33},"element","p",{},[34],{"type":35,"value":36},"text","I posted an Instagram carousel maker and asked whether I should open-source it. That public update describes an experiment, not a released product or a measured result.",{"type":30,"tag":31,"props":38,"children":39},{},[40],{"type":35,"value":41},"The useful idea behind it is broader: a small tool can make a product question concrete.",{"type":30,"tag":43,"props":44,"children":46},"h2",{"id":45},"build-around-one-piece-of-work",[47],{"type":35,"value":48},"Build around one piece of work",{"type":30,"tag":31,"props":50,"children":51},{},[52],{"type":35,"value":53},"A carousel has a simple job. It turns a sequence of points into a set of readable slides.",{"type":30,"tag":31,"props":55,"children":56},{},[57],{"type":35,"value":58},"A focused prototype can ask whether the same spacing, type hierarchy and layout rules are useful across several slides. It can also reveal where a template stops helping: a long title, a code example or an image with an awkward crop.",{"type":30,"tag":31,"props":60,"children":61},{},[62],{"type":35,"value":63},"Those are clearer questions than whether a general-purpose design tool should have another feature.",{"type":30,"tag":43,"props":65,"children":67},{"id":66},"make-the-output-easy-to-react-to",[68],{"type":35,"value":69},"Make the output easy to react to",{"type":30,"tag":31,"props":71,"children":72},{},[73],{"type":35,"value":74},"A description asks someone to imagine an interaction. A working output gives them something to inspect.",{"type":30,"tag":31,"props":76,"children":77},{},[78],{"type":35,"value":79},"For a carousel maker, that output could be a short sequence of slides. Feedback can then become specific: the heading is too small, a slide needs fewer words, or the export does not fit the platform.",{"type":30,"tag":31,"props":81,"children":82},{},[83],{"type":35,"value":84},"The prototype does not need to solve every case to reveal the next constraint.",{"type":30,"tag":43,"props":86,"children":88},{"id":87},"keep-the-experiments-status-visible",[89],{"type":35,"value":90},"Keep the experiment’s status visible",{"type":30,"tag":31,"props":92,"children":93},{},[94],{"type":35,"value":95},"Showing something in public creates expectations. A clear label helps distinguish a prototype, an open-source package and a product that someone can use today.",{"type":30,"tag":31,"props":97,"children":98},{},[99],{"type":35,"value":100},"The question in my post was whether to open-source the experiment. It should not be read as a claim that the tool has already been released.",{"type":30,"tag":31,"props":102,"children":103},{},[104],{"type":35,"value":105},"That distinction lets the work stay exploratory while still making it useful to discuss.",{"type":30,"tag":43,"props":107,"children":109},{"id":108},"let-an-idea-earn-its-next-step",[110],{"type":35,"value":111},"Let an idea earn its next step",{"type":30,"tag":31,"props":113,"children":114},{},[115],{"type":35,"value":116},"A useful next step might be a smaller scope, another iteration or simply a note about what did not work.",{"type":30,"tag":31,"props":118,"children":119},{},[120,122,129],{"type":35,"value":121},"The larger projects in my workshop, such as ",{"type":30,"tag":123,"props":124,"children":126},"a",{"href":125},"\u002Fprojects\u002Fnuxt-charts",[127],{"type":35,"value":128},"Nuxt Charts",{"type":35,"value":130},", also started with a specific problem. A prototype provides a way to understand that problem before committing to a much larger system.",{"type":30,"tag":31,"props":132,"children":133},{},[134,136,142],{"type":35,"value":135},"See ",{"type":30,"tag":123,"props":137,"children":139},{"href":138},"\u002Fprojects\u002Fsmall-experiments",[140],{"type":35,"value":141},"small experiments",{"type":35,"value":143}," for the place these ideas occupy alongside the bigger projects.",1794481660969]