[{"data":1,"prerenderedAt":281},["ShallowReactive",2],{"post-\u002Fblog\u002Fbuilding-with-intention":3},{"id":4,"title":5,"body":6,"date":269,"description":270,"extension":271,"featured":139,"image":272,"meta":273,"navigation":139,"path":274,"readingTime":108,"seo":275,"stem":276,"tags":277,"updated":279,"__hash__":280},"blog\u002Fblog\u002Fbuilding-with-intention.md","Building with intention, one small step at a time",{"type":7,"value":8,"toc":263},"minimark",[9,17,20,25,28,31,47,53,57,60,63,187,191,194,197,201,204,256,259],[10,11,12,13],"p",{},"Good software starts before the first line of code. It starts with a question: ",[14,15,16],"strong",{},"what should be easier for the person using this?",[10,18,19],{},"This journal is a place for exploring that question. These opening notes are examples of the topics this blog will cover: thoughtful engineering, small experiments, and the lessons hidden in everyday development.",[21,22,24],"h2",{"id":23},"start-with-a-problem-you-can-explain","Start with a problem you can explain",[10,26,27],{},"An idea becomes much easier to build when you can describe the problem in a single sentence. If that sentence needs three paragraphs of context, spend more time understanding the problem before choosing a framework.",[10,29,30],{},"A useful starting point is a short list:",[32,33,34,38,41,44],"ul",{},[35,36,37],"li",{},"Who experiences the problem?",[35,39,40],{},"What are they trying to accomplish?",[35,42,43],{},"What gets in the way today?",[35,45,46],{},"How will we know that our solution helped?",[48,49,50],"blockquote",{},[10,51,52],{},"Clarity is a feature. It makes every decision that follows a little easier.",[21,54,56],{"id":55},"build-the-smallest-useful-version","Build the smallest useful version",[10,58,59],{},"Small does not have to mean careless. A focused first version can still have accessible controls, understandable errors, and a clear path through the interface.",[10,61,62],{},"The goal is to reduce the number of assumptions you need to make. Deliver one complete journey, learn from it, and use that feedback to decide what comes next.",[64,65,70],"pre",{"className":66,"code":67,"language":68,"meta":69,"style":69},"language-ts shiki shiki-themes github-light github-dark","const iteration = {\n  problem: 'Make one task easier',\n  scope: 'One complete user journey',\n  feedback: 'Observe, ask, and improve',\n}\n\nfunction nextStep(learning: string) {\n  return { ...iteration, learning }\n}\n","ts","",[71,72,73,93,106,117,128,134,141,167,182],"code",{"__ignoreMap":69},[74,75,78,82,86,89],"span",{"class":76,"line":77},"line",1,[74,79,81],{"class":80},"szBVR","const",[74,83,85],{"class":84},"sj4cs"," iteration",[74,87,88],{"class":80}," =",[74,90,92],{"class":91},"sVt8B"," {\n",[74,94,96,99,103],{"class":76,"line":95},2,[74,97,98],{"class":91},"  problem: ",[74,100,102],{"class":101},"sZZnC","'Make one task easier'",[74,104,105],{"class":91},",\n",[74,107,109,112,115],{"class":76,"line":108},3,[74,110,111],{"class":91},"  scope: ",[74,113,114],{"class":101},"'One complete user journey'",[74,116,105],{"class":91},[74,118,120,123,126],{"class":76,"line":119},4,[74,121,122],{"class":91},"  feedback: ",[74,124,125],{"class":101},"'Observe, ask, and improve'",[74,127,105],{"class":91},[74,129,131],{"class":76,"line":130},5,[74,132,133],{"class":91},"}\n",[74,135,137],{"class":76,"line":136},6,[74,138,140],{"emptyLinePlaceholder":139},true,"\n",[74,142,144,147,151,154,158,161,164],{"class":76,"line":143},7,[74,145,146],{"class":80},"function",[74,148,150],{"class":149},"sScJk"," nextStep",[74,152,153],{"class":91},"(",[74,155,157],{"class":156},"s4XuR","learning",[74,159,160],{"class":80},":",[74,162,163],{"class":84}," string",[74,165,166],{"class":91},") {\n",[74,168,170,173,176,179],{"class":76,"line":169},8,[74,171,172],{"class":80},"  return",[74,174,175],{"class":91}," { ",[74,177,178],{"class":80},"...",[74,180,181],{"class":91},"iteration, learning }\n",[74,183,185],{"class":76,"line":184},9,[74,186,133],{"class":91},[21,188,190],{"id":189},"leave-room-to-learn","Leave room to learn",[10,192,193],{},"Architecture is a set of decisions made with incomplete information. Keep boundaries clear, name things carefully, and avoid making every choice permanent before you have evidence.",[10,195,196],{},"A small module with an explicit input and output is often a better starting point than a flexible abstraction nobody needs yet.",[21,198,200],{"id":199},"write-down-the-tradeoffs","Write down the tradeoffs",[10,202,203],{},"A short decision note is a gift to your future self. Capture the context, the option you chose, and the reason it made sense at the time.",[205,206,207,220],"table",{},[208,209,210],"thead",{},[211,212,213,217],"tr",{},[214,215,216],"th",{},"Question",[214,218,219],{},"What to capture",[221,222,223,232,240,248],"tbody",{},[211,224,225,229],{},[226,227,228],"td",{},"What changed?",[226,230,231],{},"The problem or constraint",[211,233,234,237],{},[226,235,236],{},"What did we choose?",[226,238,239],{},"The smallest viable decision",[211,241,242,245],{},[226,243,244],{},"Why this approach?",[226,246,247],{},"Benefits and known tradeoffs",[211,249,250,253],{},[226,251,252],{},"When should we revisit it?",[226,254,255],{},"A concrete signal",[10,257,258],{},"The result is more than working software. It is a system you can understand, change, and keep improving.",[260,261,262],"style",{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":69,"searchDepth":95,"depth":95,"links":264},[265,266,267,268],{"id":23,"depth":95,"text":24},{"id":55,"depth":95,"text":56},{"id":189,"depth":95,"text":190},{"id":199,"depth":95,"text":200},"2026-09-19","A practical approach to turning a rough idea into useful software — without losing sight of the problem you set out to solve.","md","\u002Fsocial-card.png",{},"\u002Fblog\u002Fbuilding-with-intention",{"title":5,"description":270},"blog\u002Fbuilding-with-intention",[278],"Software engineering",null,"TRzvOwuLNJf5pE80Qg2z7vIz-hKcTUzWuasvpQTakBg",1789824594651]