[{"data":1,"prerenderedAt":263},["ShallowReactive",2],{"article-what-happens-when-a-designer-opens-xcode":3},{"page":4,"related":217},{"id":5,"title":6,"slug":7,"date":8,"_updatedAt":9,"external":10,"categories":11,"featuredMedia":16,"blocks":35,"menu":18,"foot":18,"seo":212},"M3oZgDF_SuG0I63r7_W8KA","How We Build: What Happens When a Designer Opens Xcode","what-happens-when-a-designer-opens-xcode","2026-05-11","2026-05-29T18:46:13+01:00","",[12],{"id":13,"slug":14,"title":15},"MRKCA8y-RtSXQRHCBbP9Og","innovation","Innovation",{"id":17,"alt":18,"title":18,"focalPoint":19,"width":21,"height":22,"thumbnail":23,"small":24,"medium":25,"responsiveImage":26,"video":18},"FasUvCJPQV2wCOGxCUbmfA",null,{"x":20,"y":20},0.5,3840,2720,"https://www.datocms-assets.com/157026/1780023529-how-we-build-jesper-hero-image.png?auto=format&fit=max&h=800&q=95&w=800","https://www.datocms-assets.com/157026/1780023529-how-we-build-jesper-hero-image.png?auto=format&fit=max&h=1440&q=95&w=1440","https://www.datocms-assets.com/157026/1780023529-how-we-build-jesper-hero-image.png?auto=format&fit=max&h=2000&q=95&w=2000",{"srcSet":27,"webpSrcSet":10,"sizes":28,"src":29,"width":30,"height":31,"aspectRatio":32,"alt":18,"title":18,"base64":33,"bgColor":34},"https://www.datocms-assets.com/157026/1780023529-how-we-build-jesper-hero-image.png?auto=format&dpr=0.25&fit=max&h=2880&q=95&w=2880 720w,https://www.datocms-assets.com/157026/1780023529-how-we-build-jesper-hero-image.png?auto=format&dpr=0.5&fit=max&h=2880&q=95&w=2880 1440w,https://www.datocms-assets.com/157026/1780023529-how-we-build-jesper-hero-image.png?auto=format&dpr=0.75&fit=max&h=2880&q=95&w=2880 2160w,https://www.datocms-assets.com/157026/1780023529-how-we-build-jesper-hero-image.png?auto=format&fit=max&h=2880&q=95&w=2880 2880w","(max-width: 2880px) 100vw, 2880px","https://www.datocms-assets.com/157026/1780023529-how-we-build-jesper-hero-image.png?auto=format&fit=max&h=2880&q=95&w=2880",2880,2040,1.411764705882353,"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAoHBwgHBgoICAgLFQoVDhsXFQ0WDhoNDg4PFx8ZGBYVFhUaHysjGh0oHRUWJDUlKC0vMjIyGSI4PTcwPCsxMi8BCgsLDg0OHBAKHS8oFhw7Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL//AABEIABEAGAMBIgACEQEDEQH/xAAZAAADAQEBAAAAAAAAAAAAAAAABAUGAwH/xAAhEAACAQQBBQEAAAAAAAAAAAAAAQIDBBFBEhMUMTIzBf/EABkBAAIDAQAAAAAAAAAAAAAAAAIEAQUGAP/EABkRAAMBAQEAAAAAAAAAAAAAAAABAgMyEv/aAAwDAQACEQMRAD8Afr3FZ28sLRm7e+rw/Qaa2aSpUcIuLRH6ce75cdlWjIY1LkpK4qTw2enNSeUkgBYpo59DF35Ja+4AcgsORyHsAAQxe+j/2Q==","#2fd062",{"id":36,"type":37,"blocks":38},"b1E08kHTSYugpeivh7Ey0Q","blocks_select",[39,56,60,70,73,95,97,116,118,135,144,146,160,162,177,179,187,189,204,206],{"id":40,"type":41,"eyebrow":42,"breadcrumb":18,"title":43,"titleSize":44,"titleAlignment":45,"label":46,"text":47,"media":48,"mediaMobile":18,"mediaSmall":18,"theme":51,"aligned":55},"HHGas1JVRrS7-aIER98o0g","media_hero_expanded_block","By Fantasy","The Case for Software That Builds Itself","h3","items-center justify-center","How We Build","\u003Cp dir=\"ltr\">\u003Cspan>Jesper Ellesson is a UX Designer at Fantasy. Over a weekend, he built a gym tracker for iOS using Claude Code and Xcode. He'd never opened Xcode before.\u003C/span>\u003C/p>\n\u003Cp>\u003C/p>",{"id":17,"alt":18,"title":18,"focalPoint":49,"width":21,"height":22,"thumbnail":23,"small":24,"medium":25,"responsiveImage":50,"video":18},{"x":20,"y":20},{"srcSet":27,"webpSrcSet":10,"sizes":28,"src":29,"width":30,"height":31,"aspectRatio":32,"alt":18,"title":18,"base64":33,"bgColor":34},{"id":52,"background":53,"text":55},"bhb_-mrYQIaZYl6DiitqOA",{"hex":54},"#000000",false,{"id":57,"type":58,"space":59},"PG7-xEY4Sfmy0ltfn-z9rQ","space_block","large",{"id":61,"type":62,"eyebrow":10,"title":63,"text":64,"cta":18,"list":65,"stats":66,"theme":67},"VwwFa1BfQ2yZyAFFyA4UkA","text_block","\u003Cp>The problem\u003C/p>","\u003Cp dir=\"ltr\">\u003Cspan>Designers spend their days building things people can look at but never touch. Static prototypes get clicked through in meetings. They cannot answer the question clients actually care about: how does this feel in use? Jesper wanted to close that gap himself, on his own time, with tools that were finally good enough to let a designer ship real software.\u003C/span>\u003C/p>",[],[],{"id":68,"background":69,"text":55},"cuEAm281TQGxJXoD122fNw",{"hex":54},{"id":71,"type":58,"space":72},"a08FvuoeRaG5hI5tTl-TsQ","small",{"id":74,"type":75,"title":76,"text":77,"media":78,"caption":10,"theme":92,"reverse":55},"aAomJCFuS3yimzdaf8kg7Q","media_text_block","\u003Ch2 dir=\"ltr\">\u003Cspan>What made you actually do this?\u003C/span>\u003C/h2>","\u003Cp dir=\"ltr\">\u003Cspan>&ldquo;I saw colleagues around me building real things with AI tools, and I wanted to try it for myself. I&rsquo;ve been hacking together websites since I was a teenager, but I always found the technical side too complicated and too long to learn properly. When I saw how quickly people were going from idea to working software, I realized I could finally start taking my own ideas into reality.\u003C/span>\u003C/p>\n\u003Cp dir=\"ltr\">\u003Cspan>&ldquo;I&rsquo;ve always wanted to create an iOS app. And I realized there was nothing stopping me. So I found some time and got to work.\u003C/span>\u003C/p>\n\u003Cp dir=\"ltr\">\u003Cspan>&ldquo;As to why this particular project: it was a combination of FOMO, curiosity, and personal need. I&rsquo;ve tried plenty of gym apps that do the same thing, but you always hit a paywall or there are just too many features I don&rsquo;t need. I wanted something very simple and genuinely useful. When I go to the gym I just need my routine, my weights, and a timer. That&rsquo;s basically it.&rdquo;\u003C/span>\u003C/p>\n\u003Cp dir=\"ltr\">\u003C/p>",{"id":79,"alt":18,"title":18,"focalPoint":80,"width":81,"height":82,"thumbnail":83,"small":84,"medium":85,"responsiveImage":86,"video":18},"RVn5-FF8Th-ca-QcHYHtwA",{"x":20,"y":20},1316,1755,"https://www.datocms-assets.com/157026/1780024494-how-we-build-jesper-detail-crop.png?auto=format&fit=max&h=800&q=95&w=800","https://www.datocms-assets.com/157026/1780024494-how-we-build-jesper-detail-crop.png?auto=format&fit=max&h=1440&q=95&w=1440","https://www.datocms-assets.com/157026/1780024494-how-we-build-jesper-detail-crop.png?auto=format&fit=max&h=2000&q=95&w=2000",{"srcSet":87,"webpSrcSet":10,"sizes":88,"src":89,"width":81,"height":82,"aspectRatio":90,"alt":18,"title":18,"base64":91,"bgColor":34},"https://www.datocms-assets.com/157026/1780024494-how-we-build-jesper-detail-crop.png?auto=format&dpr=0.25&fit=max&h=2880&q=95&w=2880 329w,https://www.datocms-assets.com/157026/1780024494-how-we-build-jesper-detail-crop.png?auto=format&dpr=0.5&fit=max&h=2880&q=95&w=2880 658w,https://www.datocms-assets.com/157026/1780024494-how-we-build-jesper-detail-crop.png?auto=format&dpr=0.75&fit=max&h=2880&q=95&w=2880 987w,https://www.datocms-assets.com/157026/1780024494-how-we-build-jesper-detail-crop.png?auto=format&fit=max&h=2880&q=95&w=2880 1316w","(max-width: 1316px) 100vw, 1316px","https://www.datocms-assets.com/157026/1780024494-how-we-build-jesper-detail-crop.png?auto=format&fit=max&h=2880&q=95&w=2880",0.7498575498575498,"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAZCAIAAACza+nDAAAC80lEQVR42k1Ui3LcOAwDqYe97dxP3a/d96bZZLONZYlkQSeduR2OrFkTJghQqv/Gf+GGjxVvJ15GvAyuuJ94LBkuBhHRVmRvuldhbEWK1GUTp8eYGJNrHLnB9+qyICpqRcIVJmHiBUXr+XHEMDxXPM54HPEYeD/iPavhMFmBr2pblYPVivQLdtyfGB7PGfcz7iNejysInvFpWCEQVE1uXwwTJvV8/cRpwd5eR/w6nBiuvwYLxu+FGeCvCDphBazZFJW9vY0LNilJvA2/X8jXw99OJ4Xp4XHBFBthJWEkKU8jDM8M1pSPS9XHjPfpz5Ntu0co0DQ2zZoJk9pOwamRIVx9iA6xQ/yAfMKOAHESUQNnoAe+YLfoCIt8wx9TzGKZLzPjwxZNFQdfgDlgmgtU6s+65391RtWo4hVeYlXQqqVqWpathEXCaF76B9Qf/QY4eoutkn1sYozO0NXKWufCMn648HMS1EaVrdZt2yEuc4GYXWKH77AbQ9ep04vpWu5Zpko0IaMkWTqfLpuA8D3i5gzbY+2hI5TjpUXdCMsJa7gKSvUGCZEu2tMczgH2yqkte43R2FNK4EwJLWCpqAjCRllSQoqX6tpCOtDhG0MyFmWUFJNyZHu4YKgftKlEYVQrbWlb0j26+xaLsXzB0xD4N4xUCXvXg9qUGrV6bURO6ZTHYjPbjLCJy0Saq/E/WD1oRFnRWrRudbOyL9nNd/fTqSFpTvpO2/WbZ0ry6KcqmqOt6CPaD6s8nUeOEueFRSbdp3es9rc9alh/3xZFWTy6nANmsYlTdAqPsgenhKancSv3yTPIkwfw/InC7MYzjAIpxiuAY3PN6DXBHICY3Jnndy5VCLN/FLSgc3CU/jE5fXHueBtAKvQQkkkT6AVTqAQloYjXKRQevryl0qbIO8eVKFLiGCiHmopcME5yVmM6rktNbnzHVlBmKGWi8JbvqLgnSeXJQ5bKA1RTzqSjwuuPHTJ6aAdNV/o+OZCepD0z2C2R7PAPrNxz+CyK8DEAAAAASUVORK5CYII=",{"id":93,"background":94,"text":55},"R9ueiOSSRz6t0epqcB06-Q",{"hex":54},{"id":96,"type":58,"space":72},"bz3JO9h-TmeFpU4aLFURRg",{"id":98,"type":75,"title":99,"text":100,"media":101,"caption":10,"theme":112,"reverse":115},"Q1vCyOfLTnaZdJinRFZCjA","\u003Ch2 dir=\"ltr\">\u003Cspan>The first hour in Xcode\u003C/span>\u003C/h2>","\u003Cp dir=\"ltr\">\u003Cspan>&ldquo;I went to YouTube and typed &ldquo;Xcode + Claude&rdquo; and found a great beginner&rsquo;s video from a YouTuber named Alex Finn. That made the setup fairly easy.\u003C/span>\u003C/p>\n\u003Cp dir=\"ltr\">\u003Cspan>&ldquo;But I hit a wall when I tried to run the app on my phone for the first time. I was like, how do I see what Claude has made? I want to put it on my phone. How the hell do I put it on my phone? This seemingly obvious thing was not obvious at all. I had to troubleshoot with ChatGPT to figure out how to set my iPhone into Developer Mode and actually install the app on my device.\u003C/span>\u003C/p>\n\u003Cp dir=\"ltr\">\u003Cspan>&ldquo;That was the hardest part of the whole experience. The environment setup, every bit of it.&rdquo;\u003C/span>\u003C/p>\n\u003Cp dir=\"ltr\">\u003C/p>",{"id":102,"alt":18,"title":18,"focalPoint":103,"width":81,"height":82,"thumbnail":104,"small":105,"medium":106,"responsiveImage":107,"video":18},"SMyosH23QoC89fbO7SHj1g",{"x":20,"y":20},"https://www.datocms-assets.com/157026/1780024525-media-container.png?auto=format&fit=max&h=800&q=95&w=800","https://www.datocms-assets.com/157026/1780024525-media-container.png?auto=format&fit=max&h=1440&q=95&w=1440","https://www.datocms-assets.com/157026/1780024525-media-container.png?auto=format&fit=max&h=2000&q=95&w=2000",{"srcSet":108,"webpSrcSet":10,"sizes":88,"src":109,"width":81,"height":82,"aspectRatio":90,"alt":18,"title":18,"base64":110,"bgColor":111},"https://www.datocms-assets.com/157026/1780024525-media-container.png?auto=format&dpr=0.25&fit=max&h=2880&q=95&w=2880 329w,https://www.datocms-assets.com/157026/1780024525-media-container.png?auto=format&dpr=0.5&fit=max&h=2880&q=95&w=2880 658w,https://www.datocms-assets.com/157026/1780024525-media-container.png?auto=format&dpr=0.75&fit=max&h=2880&q=95&w=2880 987w,https://www.datocms-assets.com/157026/1780024525-media-container.png?auto=format&fit=max&h=2880&q=95&w=2880 1316w","https://www.datocms-assets.com/157026/1780024525-media-container.png?auto=format&fit=max&h=2880&q=95&w=2880","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAZCAIAAACza+nDAAACN0lEQVR42mVUwXbjMAgEJMtObnvZ///NxgJ2GDlx9lWPqpLMMDDQ9j9/+9a3fT8ej+dxPLZtN2sRcp7nz88L9nqdEaGqrbVt61hw6M16u1dveNWmmhHZWtBSFTCprzTDzxij9w0ktDEuNrhiV5iIka1gvVzJNgYS6/v+WDbGsWBmUwS0DT7hF+xKEifU01kbDsfxHANsnRlO1S6K2Hdt/7Et2BjPLzYhW09ppogSghgF2wgz/N55OVgb9gsmMiOsast2sxWKMLNBcbbWBm3DIyqBJzSkAVJhGmWn+K1DqCpd2josGQATiXXlATnql2frmVAZsQWHTOEVlu+D0FS0kOuK1edE3ukOi+nZHIiSYHr4lxVZBvuOAdA+3VVtTgfesVtYtTfniRc/z7IIR5rgxw5D0A5XlQXDcuhuJgUDZl5rsaGEVaRZIkm0VR3oWtirWuZ8RbphxFydQALuVvm/F6KC7R1oxQr6SxgilsoFy7SMKoCG4RCyLcBc70iNMhqcqzb4cRpm5kRFEegkyki+87EOJSCb1PCl2DIh+awdTsU8icm8Hp3pxFISL5Vaki2rrSejYm/VoMj39WQK6IrdMLC5n1AcAsIDZ/dKg7WdLAzdBBiexhmyi839hUDwdt9+wV7uJCTsI0lG3mxzLjZ86ByoyevpF9v6HwGwYRgLpoS9nQDLT5JrzxqQ+gtC5UgbDYQ3pklXGe8pEUriVGUpWXNFKlybWTnFsprf66yEfa7VDcpYAXm1fzmk1AWTWOfpAAAAAElFTkSuQmCC","#44a1f2",{"id":113,"background":114,"text":55},"SuEri1tpSKmECjQRKyhwiw",{"hex":54},true,{"id":117,"type":58,"space":72},"fhOijzjoTEuo0fR7MlVHRg",{"id":119,"type":75,"title":120,"text":121,"media":122,"caption":10,"theme":132,"reverse":55},"WCBASkY3QkWpPHnE3SNLqg","\u003Ch2 dir=\"ltr\">\u003Cspan>The prompt\u003C/span>\u003C/h2>","\u003Cp dir=\"ltr\">\u003Cspan>&ldquo;The initial prompt went something like this:\u003C/span>\u003C/p>\n\u003Cp dir=\"ltr\">\u003Cem>\"I want to build a simple iPhone app in Xcode that helps me at the gym. I need it to be able to create routines. I need to be able to add exercises within that routine. I need to be able to search from a library of common exercises to add to a routine. I need to be able to input what weight and how many reps I did for that exercise. I need to be able to see the weight and sets I did previously. I need to be able to reorder the exercises within the routine. I want to be able to start a routine, and when I start a routine I need a rest timer between each set. Once I&rsquo;m finished with the routine I want a list view of all my previous routines I finished.\u003C/em>\u003C/p>\n\u003Cp dir=\"ltr\">\u003Cspan>&ldquo;A colleague recommended I use the Planner inside Claude Code. That was mega helpful. I sent it that long paragraph of features and some very light art direction, it asked me a few clarifying questions, I approved the plan, and in a ridiculously short amount of time I had a working app on my iPhone.&rdquo;\u003C/span>\u003C/p>\n\u003Cp dir=\"ltr\">\u003C/p>",{"id":123,"alt":18,"title":18,"focalPoint":124,"width":81,"height":82,"thumbnail":125,"small":126,"medium":127,"responsiveImage":128,"video":18},"JcvIA0k4QniYpaAJNtLi1A",{"x":20,"y":20},"https://www.datocms-assets.com/157026/1780024578-media-container-1.png?auto=format&fit=max&h=800&q=95&w=800","https://www.datocms-assets.com/157026/1780024578-media-container-1.png?auto=format&fit=max&h=1440&q=95&w=1440","https://www.datocms-assets.com/157026/1780024578-media-container-1.png?auto=format&fit=max&h=2000&q=95&w=2000",{"srcSet":129,"webpSrcSet":10,"sizes":88,"src":130,"width":81,"height":82,"aspectRatio":90,"alt":18,"title":18,"base64":131,"bgColor":34},"https://www.datocms-assets.com/157026/1780024578-media-container-1.png?auto=format&dpr=0.25&fit=max&h=2880&q=95&w=2880 329w,https://www.datocms-assets.com/157026/1780024578-media-container-1.png?auto=format&dpr=0.5&fit=max&h=2880&q=95&w=2880 658w,https://www.datocms-assets.com/157026/1780024578-media-container-1.png?auto=format&dpr=0.75&fit=max&h=2880&q=95&w=2880 987w,https://www.datocms-assets.com/157026/1780024578-media-container-1.png?auto=format&fit=max&h=2880&q=95&w=2880 1316w","https://www.datocms-assets.com/157026/1780024578-media-container-1.png?auto=format&fit=max&h=2880&q=95&w=2880","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAZCAIAAACza+nDAAACn0lEQVR42k1UC3YaMQyUZC/5vDS36Nl6+TQlEBLYXWs6IzevAT1jFo1nNJLpP/HLzMIQH4j3jHOtF/gHfIXtsATc0Cr6TLXOx4RhRa5pzON6S7um38AQjG8HU4nBTrAT2XPdfUdeeXzirMgT2ZJf7RvMxOZChhXsuBGm45l6HsT4adj7+A9LzFR0/yby9wr+9pl2GXba7W0Idh72MaRWsGL4V5tzIza8rPwNn0oFYccNb7v2ly8YZImVQisYwru9bLaRbeC859uGY8Vpx2UnDJtgFpW9eMHKkngd2JKScN7suOLPlsdVeLJdB8oS5gkwYQz33t7AI/OSdho4DnulTla422XHdUwnxTABE0mR/d2wWV4w3oEz1INTuSK2qs3MJ2wJX0hbliw3z9Xz6vbJsBn+aWDczHajHWRz8qR7uo3JNhqGjRH2FT4iK2yYi4xreLJf7hoWTpr15k3+elJKRXCNyOqV5s75ajyfQalRtfGzB9jQnlhaLK0t3Q6JOxNzwEkYBaPIg9aaSZ5wHzyYwnwNf2jx2GztlK30A1gMUaSiH7JxOsklHwML+QI8fmN0H5CyQ8bGqggreQXTcHVV18eT5aaah0VmA5LzTjF+Nd8lMyLUt8mz1MXhdnuuvukM2SJLWrM7d7lP61iJ2Ob4K1qxrc+aEiz1PZQUi8VDqGkjSm5MTOoGIAPfYAerGyHTuGevfXUMti1SIq1gYI/TC3b7URO0MGF67Y3V37PgarEk0nRRZeMI0LjkmPbtCbo4XbDSqNL9zpOFDT3I0GyIKmLn8FS9fXugb0Wl6y+l5MzFyUYEG+MFmzyjRjLVgDtVJcHsAGdieKrJ9CBUvs4jTH8nlJyF4ch1tLq/uvCY/4S6/DLDWD47otGNQtZ+wv4CRRkWpu95UwUAAAAASUVORK5CYII=",{"id":133,"background":134,"text":55},"bCnXChwTQVej2QcGX0v11Q",{"hex":54},{"id":136,"type":62,"eyebrow":10,"title":137,"text":138,"cta":18,"list":139,"stats":140,"theme":141},"U4fYB0BCRsavLYmibP4dGw","\u003Cp>Where it broke down\u003C/p>","\u003Cp dir=\"ltr\">\u003Cspan>&ldquo;Mostly it just worked. But as I tested the app I started to notice small bugs. When I tapped the input field to type the weight for an exercise, there was no way to dismiss the keyboard. I described the problem to Claude in plain language and it sorted it out immediately.\u003C/span>\u003C/p>\n\u003Cp dir=\"ltr\">\u003Cspan>&ldquo;The surprise was how conversational the debugging felt. I didn&rsquo;t need to understand the code to explain what was wrong, and Claude understood the context because it had built the thing in the first place.&rdquo;\u003C/span>\u003C/p>\n\u003Cp dir=\"ltr\">\u003C/p>",[],[],{"id":142,"background":143,"text":55},"Ywb1HqpnTGS7y-M_i8ZImw",{"hex":54},{"id":145,"type":58,"space":72},"HqZqzju0Qn6wLlATnZr05A",{"id":147,"type":75,"title":148,"text":149,"media":150,"caption":10,"theme":18,"reverse":115},"TpF6UJiwSga-O2pf31Dq_g","\u003Ch2 dir=\"ltr\">\u003Cspan>The moment it shifted\u003C/span>\u003C/h2>","\u003Cp dir=\"ltr\">\u003Cspan>\"The moment I opened the app the second or third time after fixing some bugs, I realized it was going to work. I had discovered that I could just iterate and improve infinitely. At that point I couldn't go to sleep. I was up until 4am going back and forth, adding features and starting to see that I could create more of an experience: an intro splash screen, an animation after the workout was finished.\u003C/span>\u003C/p>\n\u003Cp dir=\"ltr\">\u003Cspan>\"That's when it stopped being an experiment.\"\u003C/span>\u003C/p>",{"id":151,"alt":18,"title":18,"focalPoint":152,"width":81,"height":82,"thumbnail":153,"small":154,"medium":155,"responsiveImage":156,"video":18},"Ai2gwEIkTveDgllPMAWWfw",{"x":20,"y":20},"https://www.datocms-assets.com/157026/1780029616-image.png?auto=format&fit=max&h=800&q=95&w=800","https://www.datocms-assets.com/157026/1780029616-image.png?auto=format&fit=max&h=1440&q=95&w=1440","https://www.datocms-assets.com/157026/1780029616-image.png?auto=format&fit=max&h=2000&q=95&w=2000",{"srcSet":157,"webpSrcSet":10,"sizes":88,"src":158,"width":81,"height":82,"aspectRatio":90,"alt":18,"title":18,"base64":159,"bgColor":34},"https://www.datocms-assets.com/157026/1780029616-image.png?auto=format&dpr=0.25&fit=max&h=2880&q=95&w=2880 329w,https://www.datocms-assets.com/157026/1780029616-image.png?auto=format&dpr=0.5&fit=max&h=2880&q=95&w=2880 658w,https://www.datocms-assets.com/157026/1780029616-image.png?auto=format&dpr=0.75&fit=max&h=2880&q=95&w=2880 987w,https://www.datocms-assets.com/157026/1780029616-image.png?auto=format&fit=max&h=2880&q=95&w=2880 1316w","https://www.datocms-assets.com/157026/1780029616-image.png?auto=format&fit=max&h=2880&q=95&w=2880","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAZCAIAAACza+nDAAACtklEQVR42k1UyY4dNxCrTf0GMHJIgvyEv8yf7oNtGEEA9yKRZnW/QwYcTXVJLNVCTX3++iUO1n8YP9f4vurbrB/T/532a4Jcg/NTXH/m/Luuf2r9Vfij+IriApf2gXu9DcSCyRbP5TQul5PzfVKewrnsIi7IWOeMc/o5raEACmXr1JYOGC7HGTIYrHVMnvQdcSzsU5+2X9y19nWAoWLtxG7YHYdAWpSOmoIdwN40/Lq8OZP7EmtNW+nY8dAobEay7FimADok6OZDxsRzG7oMVnA37mGHjODmJp+dUG1+0h4ckMcP8IB3iuaDfrg8jRNxgm6V0+JGG9d71SfVJzAU+fK4KPAy68YYUzREgAVLoOD6FHy5IdRHF285b8iQP9qOGpZhSDMZw5U04vaobphpbOp3x2cGYzHZiKrIcP2qz15KOnrfXflp2u5Os3iwLN2CNyojItWtviLbgEIo14emMwynTkSYh7v22igPXUZPi4ZCpIprWuoeC2Wmw/3z/tMJuFen3cm7qT6tdSNvWDt7K4Q+BrdWqVlNFZPqGFcqyW5O31xqjmtmSKI7pubdelbNnRvqktq7YCVz9165lVTQDYOknx1OoWdAWAG4xsI6Y6l1StXuqXlpiGpwD6QnJE5hll3pM0VbK+4XcOTMLkC5MaSjQRvMQY6e8EzOwaso8pUQE9mZ15kruw2tvXggjb8kDmnfFHtt1sxh12gyVHN5nYVSR1sjNjerly9xXpKSJqis+hNybvbGIIaXjkqusfUGtj6BV/iHukUqRVXyIl5aHdtD7idXa2g6himOCK5D/Ih+QaBNtqo+aB9N03+eG+LrdY9+U+gYwWH9Cjea8kQPUNqwDaaMtvgfWiUaeytD87XRRfa71Kqr3FqA7ZQntCul3/B69M14FNQieqvs1mp73p9SZTyG1t8JNUdzy80iHgAAAABJRU5ErkJggg==",{"id":161,"type":58,"space":72},"ODgFWSouT8iEYzpDbg3kBA",{"id":163,"type":75,"title":164,"text":165,"media":166,"caption":10,"theme":18,"reverse":55},"KynUVjdxQgG4Eif0MRRGew","\u003Ch2 dir=\"ltr\">\u003Cspan>What I'd do different\u003C/span>\u003C/h2>","\u003Cp dir=\"ltr\">\u003Cspan>&ldquo;I&rsquo;d try React Native so it would work on Android as well. And I&rsquo;d plan more. I&rsquo;d really think through the features in a much more comprehensive way before building, rather than figuring it out as I went.\u003C/span>\u003C/p>\n\u003Cp dir=\"ltr\">\u003Cspan>&ldquo;That&rsquo;s the part that felt most familiar to me, actually. Defining what the app should do, thinking through the user flows, understanding how someone would actually use this thing at the gym. That&rsquo;s what I do every day as a designer. I just didn&rsquo;t realize until this project that the same thinking could take me all the way to a working app.&rdquo;\u003C/span>\u003C/p>\n\u003Cp>\u003C/p>",{"id":167,"alt":18,"title":18,"focalPoint":168,"width":81,"height":82,"thumbnail":169,"small":170,"medium":171,"responsiveImage":172,"video":18},"Qfws3TBcQGqkF-BwtFv0cw",{"x":20,"y":20},"https://www.datocms-assets.com/157026/1780025080-media-container-2.png?auto=format&fit=max&h=800&q=95&w=800","https://www.datocms-assets.com/157026/1780025080-media-container-2.png?auto=format&fit=max&h=1440&q=95&w=1440","https://www.datocms-assets.com/157026/1780025080-media-container-2.png?auto=format&fit=max&h=2000&q=95&w=2000",{"srcSet":173,"webpSrcSet":10,"sizes":88,"src":174,"width":81,"height":82,"aspectRatio":90,"alt":18,"title":18,"base64":175,"bgColor":176},"https://www.datocms-assets.com/157026/1780025080-media-container-2.png?auto=format&dpr=0.25&fit=max&h=2880&q=95&w=2880 329w,https://www.datocms-assets.com/157026/1780025080-media-container-2.png?auto=format&dpr=0.5&fit=max&h=2880&q=95&w=2880 658w,https://www.datocms-assets.com/157026/1780025080-media-container-2.png?auto=format&dpr=0.75&fit=max&h=2880&q=95&w=2880 987w,https://www.datocms-assets.com/157026/1780025080-media-container-2.png?auto=format&fit=max&h=2880&q=95&w=2880 1316w","https://www.datocms-assets.com/157026/1780025080-media-container-2.png?auto=format&fit=max&h=2880&q=95&w=2880","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAZCAIAAACza+nDAAAC30lEQVR42jVUCZIaMRDry7BXvpO35dGpPQhkx+M+oh4ImCmDLUsttbGf9Stm+HWuz+/4mPm5yzVs8jntScYJ72E8pIxcYnE4RVCabyt3xzO25duec8kMnuyRLiROHMlxh6WzL4oEbF6+c3qzXTa/bPW1+Bo5qdKYvcaIMWRwKrkGME7ebPP9FoD9gcgtPrb8gsgMwMJIRtrAm43zLpL8EIkqft8ebA2bByxyYw5lGaRgUzZJK+fY2b0OtnjfAIvrHp8TbPW11zVlQwWKU8OCDDAcUi6g8lWoLUwuTtPl6pjUJTAgUiZJkLAIKK3IMCuUynQM1H36y7mLfPfITWpTUNnGp9AzVKqoSbNJ4hQmBjyK7dVP6XFUmiiWgiXSErnpiexEqEwIKWjCj51klXZtP/gZWoPVWZKVEK3kED7XARMDH+QG52Lfa+EZEPlDX5B5qIVpmtFwHTnAJnYmGzrMhLRFwsYF2N3JV3tKqBuWcLn76ICVnMPObCcdqg9Ys7WTnsgUC6mKJkAy3RhDbNCpDjYeDUMASgcsDGx0iIS1MLdUGEX0U9VIA84busP6K2CMwpFAUlHBzDBvPxPdmYyFEsZqwWzsyJ7A8h6YYLWIsioJCdWCk0WetIgdngXD8CRkxH2GcWGWh5NQ+BB541noJDQ7YLRAY9zhYR/YolsfP1BQOR2WgAB7bjILumWlLlIXiSFo9s60t2LH0WbRly2QG56B2r6HV0UNz+EITUb4gGiYjNqAJ7Mk+Cx1V/jIbX+GjYVXrqI90TyZ1YXBJtQv4eicDgCwvqa4AQ3LV6mBg+HqMWAnnEEY0Z2GHAotCRjXYloFMHTgL+LNYARhDfZmx0KwDvXhhkEGGlR7FYLbpMOGDkDeRkfADWEUj8gAhXmOj0Ef2qAJEUm/qk/HuryM2jt9dqq+GN0P3TkOfX1J+5ZJZ8iNQSitx3ATO/yh3fY9qkdilzSM5T8Mgo4ZqIv+AVZNcqMD99rbAAAAAElFTkSuQmCC","#2174cf",{"id":178,"type":58,"space":72},"L1VQUn3YSoOvYQH260b9_A",{"id":180,"type":62,"eyebrow":10,"title":10,"text":181,"cta":18,"list":182,"stats":183,"theme":184},"C-1L6-3pQBGhD2wtEHi1-g","\u003Cp dir=\"ltr\">\u003Cspan>Jesper spent a weekend building an app he now uses at the gym every week. Claude Code handled the Swift. The hardest part of the whole experience was environment setup: developer mode, device provisioning, getting the build onto his phone. \u003C/span>\u003C/p>\n\u003Cp dir=\"ltr\">\u003Cspan>Once that was sorted, the rest was the work he already does every day: defining features, thinking through flows, deciding what the experience should feel like in someone&rsquo;s hand. The skill that carried the project was the one Jesper already had.\u003C/span>\u003C/p>\n\u003Cp>\u003C/p>",[],[],{"id":185,"background":186,"text":55},"AF3yyww4QnuOoyP4nfIcDA",{"hex":54},{"id":188,"type":58,"space":72},"OzJ_64juTa6kGPpg9EXWMA",{"id":190,"type":62,"eyebrow":10,"title":191,"text":192,"cta":18,"list":193,"stats":194,"theme":18},"aJ4poPEqRv2zIuX4sgzZtg","\u003Cp>What to try this week\u003C/p>","\u003Cp dir=\"ltr\">\u003Cspan>Install Claude Code and open the native IDE for whatever platform you actually use. Pick one flow from a recent prototype that has always felt thin in static form, the one you keep wishing you could hand a client with real interactions attached. \u003C/span>\u003C/p>\n\u003Cp dir=\"ltr\">\u003Cspan>Rebuild it as working software over a weekend, scoped small enough to install on your own device by Sunday night.\u003C/span>\u003C/p>\n\u003Cp dir=\"ltr\">\u003Cspan>Start with the Planner inside Claude Code, the way Jesper did, and write the feature list as one long paragraph before you touch the IDE. The planning is the design work, and the tools handle everything else.\u003C/span>\u003C/p>\n\u003Cp dir=\"ltr\">\u003C/p>",[],[195,198,201],{"id":196,"stat":10,"text":197,"decrease":115},"EL0vmrGiQ6KYU0d0-RdcoA","What in your current design process stops at the artifact because the tooling couldn’t take it further?",{"id":199,"stat":10,"text":200,"decrease":115},"YUDfGLy2QXmdgiF8Akp3Jw","If you had a working build of your next concept on your phone by Monday morning, how would that change the conversation with your client?",{"id":202,"stat":10,"text":203,"decrease":115},"F5kddfq_Q2CSKejMKWdh4g","What would you build this weekend if you knew the hardest part was getting your phone into Developer Mode?",{"id":205,"type":58,"space":72},"TjPJ4bEPRUaabXWkQNC1rA",{"id":207,"type":62,"eyebrow":10,"title":10,"text":10,"cta":18,"list":208,"stats":209,"theme":18},"NG--NyI4R6iPhk4vUShsXg",[],[210],{"id":211,"stat":10,"text":10,"decrease":55},"OXu-vTCUTNa_NVK4fMT7Nw",{"title":213,"description":214,"image":215},"The Case for Software That Builds Itself | Fantasy","This is the first installment of How We Build, a series where people at Fantasy share what they built with AI tools, how they built it, and what surprised them.",{"url":216},"https://www.datocms-assets.com/157026/1780029714-link-preview.png",[218,242],{"id":219,"slug":220,"title":221,"date":18,"categories":222,"featuredMedia":227},"QXkFDqyKR8GC_81NFBV8bA","what-running-ai-augmented-design-sprints-teaches-about-creative-work","What Running AI-Augmented Design Sprints Teaches About Creative Work",[223],{"id":224,"slug":225,"title":226},"aalQatdPTmyOp4H56va7TQ","read-it-on-forbes","Read it on Forbes",{"id":228,"alt":18,"title":18,"focalPoint":229,"width":230,"height":231,"thumbnail":232,"small":233,"medium":234,"responsiveImage":235,"video":18},"H-l0LWRXSuOxt9sCdN2lLw",{"x":20,"y":20},1920,1080,"https://www.datocms-assets.com/157026/1779124790-untitled-11.png?auto=format&fit=max&h=800&q=95&w=800","https://www.datocms-assets.com/157026/1779124790-untitled-11.png?auto=format&fit=max&h=1440&q=95&w=1440","https://www.datocms-assets.com/157026/1779124790-untitled-11.png?auto=format&fit=max&h=2000&q=95&w=2000",{"srcSet":236,"webpSrcSet":10,"sizes":237,"src":238,"width":230,"height":231,"aspectRatio":239,"alt":18,"title":18,"base64":240,"bgColor":241},"https://www.datocms-assets.com/157026/1779124790-untitled-11.png?auto=format&dpr=0.25&fit=max&h=2880&q=95&w=2880 480w,https://www.datocms-assets.com/157026/1779124790-untitled-11.png?auto=format&dpr=0.5&fit=max&h=2880&q=95&w=2880 960w,https://www.datocms-assets.com/157026/1779124790-untitled-11.png?auto=format&dpr=0.75&fit=max&h=2880&q=95&w=2880 1440w,https://www.datocms-assets.com/157026/1779124790-untitled-11.png?auto=format&fit=max&h=2880&q=95&w=2880 1920w","(max-width: 1920px) 100vw, 1920px","https://www.datocms-assets.com/157026/1779124790-untitled-11.png?auto=format&fit=max&h=2880&q=95&w=2880",1.7777777777777777,"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAoHBwgHBgoICAgLDQoLDhUaDg0ODhQNEA4YHBUdGBYfFhUaHysjGh0oHSEWJDUlKC0vMjIyGSI4PTcwPCsxMi8BCgsLDg0OHBAOHC8cFh0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL//AABEIAA4AGAMBIgACEQEDEQH/xAAWAAEBAQAAAAAAAAAAAAAAAAAGBQD/xAAeEAAABgIDAAAAAAAAAAAAAAAAAQIDBAUGERMhIv/EABUBAQEAAAAAAAAAAAAAAAAAAAEA/8QAGBEAAgMAAAAAAAAAAAAAAAAAAAECAxL/2gAMAwEAAhEDEQA/AIdXC5pJdhE7Rp8q2ANfdPsu7IUXsumEskihaDgi3ZEcRGiMYEbPIJDydqGC7Qwj/9k=","#3a6685",{"id":243,"slug":244,"title":245,"date":246,"categories":247,"featuredMedia":252},"Mr_aUGjiTT6TSG_x2J2mPA","ai-is-rewriting-business-in-real-time-and-most-leaders-arent-ready","AI is rewriting business in real time—and most leaders aren’t ready","2026-03-19",[248],{"id":249,"slug":250,"title":251},"DyewnagRR_iVnChZL92zWA","read-on-fast-company","Read on Fast Company",{"id":253,"alt":18,"title":18,"focalPoint":254,"width":230,"height":231,"thumbnail":255,"small":256,"medium":257,"responsiveImage":258,"video":18},"W9n9y6mUTiuvJ9Cpm__WzQ",{"x":20,"y":20},"https://www.datocms-assets.com/157026/1779124247-untitled-9.png?auto=format&fit=max&h=800&q=95&w=800","https://www.datocms-assets.com/157026/1779124247-untitled-9.png?auto=format&fit=max&h=1440&q=95&w=1440","https://www.datocms-assets.com/157026/1779124247-untitled-9.png?auto=format&fit=max&h=2000&q=95&w=2000",{"srcSet":259,"webpSrcSet":10,"sizes":237,"src":260,"width":230,"height":231,"aspectRatio":239,"alt":18,"title":18,"base64":261,"bgColor":262},"https://www.datocms-assets.com/157026/1779124247-untitled-9.png?auto=format&dpr=0.25&fit=max&h=2880&q=95&w=2880 480w,https://www.datocms-assets.com/157026/1779124247-untitled-9.png?auto=format&dpr=0.5&fit=max&h=2880&q=95&w=2880 960w,https://www.datocms-assets.com/157026/1779124247-untitled-9.png?auto=format&dpr=0.75&fit=max&h=2880&q=95&w=2880 1440w,https://www.datocms-assets.com/157026/1779124247-untitled-9.png?auto=format&fit=max&h=2880&q=95&w=2880 1920w","https://www.datocms-assets.com/157026/1779124247-untitled-9.png?auto=format&fit=max&h=2880&q=95&w=2880","data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAoHBwgHBgoICAgLEBYXDhAPDQ0NDh0NFhENFx8ZGCITIhUaHysjHR0oKRUWJDUlKC0vMjIyGSI4PTcwPCsxMi8BCgsLAg0OHBANHDscFh0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL//AABEIAA4AGAMBIgACEQEDEQH/xAAYAAACAwAAAAAAAAAAAAAAAAAABgEDBf/EAB0QAAICAwADAAAAAAAAAAAAAAEEAAMCBRIRITL/xAAWAQEBAQAAAAAAAAAAAAAAAAABAgD/xAAaEQACAgMAAAAAAAAAAAAAAAAAAQIFAxIV/9oADAMBAAIRAxEAPwDM11a97Pg5CWXa1TF7z2Ira1q2tr1kZDezYOxA6MmM7ZC+axkZoUwY+hCK7TNuVgPZhM81uOlYf//Z","#968434",1780076808814]