<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[isma.fi | Agentic Developer, Indie Hacker, Problem Solver]]></title><description><![CDATA[Agentic developer and indie hacker building tools, running experiments and solving real problems on the internet.]]></description><link>https://dev.isma.fi</link><image><url>https://cdn.hashnode.com/uploads/logos/5cebf9b43fa8ebc16bdeb878/11aadee1-310f-48cf-b586-bf09891968a1.png</url><title>isma.fi | Agentic Developer, Indie Hacker, Problem Solver</title><link>https://dev.isma.fi</link></image><generator>RSS for Node</generator><lastBuildDate>Thu, 21 May 2026 01:17:46 GMT</lastBuildDate><atom:link href="https://dev.isma.fi/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Why MVPs in 2026 Are Not Ugly Anymore]]></title><description><![CDATA[I used to believe the classic MVP advice.
Ship fast. Cut corners. Design later.
For a long time, that logic made sense. Time was limited. Budgets were tight. Users were more forgiving.
That context doesn’t exist anymore.
Not because founders changed....]]></description><link>https://dev.isma.fi/why-mvps-in-2026-are-not-ugly-anymore</link><guid isPermaLink="true">https://dev.isma.fi/why-mvps-in-2026-are-not-ugly-anymore</guid><category><![CDATA[mvp]]></category><category><![CDATA[#ai-tools]]></category><dc:creator><![CDATA[Ismael]]></dc:creator><pubDate>Thu, 12 Feb 2026 17:30:02 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1770917230656/75f3fd12-4608-4fc3-b12b-6f95a9fc9f20.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I used to believe the classic MVP advice.</p>
<p>Ship fast. Cut corners. Design later.</p>
<p>For a long time, that logic made sense. Time was limited. Budgets were tight. Users were more forgiving.</p>
<p>That context doesn’t exist anymore.</p>
<p>Not because founders changed. Because users did.</p>
<p>Quietly.</p>
<h2 id="heading-the-assumption-that-no-longer-holds"><strong>The assumption that no longer holds</strong></h2>
<p>The old rule was simple: “An MVP can be ugly. People only care about the problem.”</p>
<p>I built more than one product with that mindset.</p>
<p>What I missed was what users were <em>actually</em> comparing us to.</p>
<p>Not other MVPs. Not early stage startups.</p>
<p>They were comparing us to the tools they already use every day.</p>
<p>Clean. Fast. Calm. Predictable.</p>
<p>That’s what software feels like to them now.</p>
<p>So when they open your product, they don’t ask: “Is this an MVP?”</p>
<p>They ask, often unconsciously: “Does this feel serious?”</p>
<h2 id="heading-users-dont-downgrade-expectations-anymore"><strong>Users don’t downgrade expectations anymore</strong></h2>
<p>Nobody thinks they’re “trying an early product.”</p>
<p>They’re just trying a product.</p>
<p>And their baseline is already set by years of using very good software.</p>
<p>When something feels clumsy, it doesn’t register as early. It registers as careless.</p>
<p>That difference matters more than we like to admit.</p>
<h2 id="heading-ai-quietly-removed-the-main-excuse"><strong>AI quietly removed the main excuse</strong></h2>
<p>For years, bad UX had a convenient justification.</p>
<p>“It’s expensive.” “It takes time.” “We’ll clean it up later.”</p>
<p>That excuse is mostly gone.</p>
<p>AI didn’t magically make products great. But it made acceptable quality much cheaper and much faster.</p>
<p>Layouts. Copy. Empty states. Basic flows.</p>
<p>Not perfect. But no longer an afterthought.</p>
<p>So when an MVP feels rough in 2026, users don’t think: "They’re early."</p>
<p>They think: "They didn’t bother.”</p>
<h2 id="heading-speed-isnt-the-bottleneck-anymore"><strong>Speed isn’t the bottleneck anymore</strong></h2>
<p>This part took me longer to accept.</p>
<p>We still talk about speed as if it’s the main advantage. Build faster. Ship faster. Iterate faster.</p>
<p>But most founders can already ship fast now.</p>
<p>The real constraint has shifted.</p>
<p>It’s taste. It’s judgment. It’s knowing what deserves attention and what doesn’t.</p>
<p>You can move fast and still learn nothing. I’ve done that more than once.</p>
<h2 id="heading-why-high-fidelity-mvps-teach-better-lessons"><strong>Why high fidelity MVPs teach better lessons</strong></h2>
<p>This was one of the biggest surprises for me.</p>
<p>When an MVP is rough, feedback is noisy.</p>
<p>Users complain about surface things:</p>
<ul>
<li><p>“I didn’t get it”</p>
</li>
<li><p>“It feels confusing”</p>
</li>
<li><p>“I got lost”</p>
</li>
</ul>
<p>You end up fixing friction instead of understanding the problem.</p>
<p>When an MVP is clean, feedback changes.</p>
<p>People talk about:</p>
<ul>
<li><p>What they expected</p>
</li>
<li><p>What they don’t need</p>
</li>
<li><p>Where value actually shows up</p>
</li>
<li><p>What feels unnecessary</p>
</li>
</ul>
<p>That’s product feedback, not polish feedback.</p>
<p>High fidelity MVPs don’t just convert better. They help you learn the right things sooner.</p>
<h2 id="heading-where-ai-genuinely-helps"><strong>Where AI genuinely helps</strong></h2>
<p>AI is very good at removing friction around thinking.</p>
<p>Drafting copy. Exploring layouts. Creating variations. Speeding up boring decisions.</p>
<p>Used well, it gives you more space to think about:</p>
<ul>
<li><p>The core flow</p>
</li>
<li><p>The moment of value</p>
</li>
<li><p>What really matters to the user</p>
</li>
</ul>
<p>It amplifies judgment when judgment is already there.</p>
<h2 id="heading-where-ai-still-fails"><strong>Where AI still fails</strong></h2>
<p>AI doesn’t feel confusion.</p>
<p>It doesn’t hesitate. It doesn’t get stuck. It doesn’t feel that subtle “something’s off” moment.</p>
<p>That still comes from watching real people use your product. And sitting with the discomfort of seeing where they struggle.</p>
<p>No prompt replaces that.</p>
<h2 id="heading-the-real-shift"><strong>The real shift</strong></h2>
<p>The shift isn’t “build beautiful MVPs.”</p>
<p>It’s this:</p>
<p>An MVP is no longer just a test of an idea. It’s a test of care.</p>
<p>Care in what you include. Care in what you remove. Care in how much you respect the user’s time.</p>
<p>Ugly MVPs used to buy you speed. Now they often just buy you the wrong conclusions.</p>
<h2 id="heading-where-im-still-unsure"><strong>Where I’m still unsure</strong></h2>
<p>I’m still navigating the line between:</p>
<ul>
<li><p>Moving fast</p>
</li>
<li><p>And being deliberate</p>
</li>
</ul>
<p>Between:</p>
<ul>
<li><p>Keeping things simple</p>
</li>
<li><p>And not cutting the wrong corners</p>
</li>
</ul>
<p>That tension doesn’t disappear.</p>
<p>But pretending that ugly MVPs still work in 2026 is how you spend months learning the wrong lessons.</p>
<p>I learned that the slow way. I’m Ismaël, and I run <a target="_blank" href="https://studio.mvpable.com/">MVPable</a>, a small product studio focused on shipping high-fidelity MVPs. This piece comes from mistakes I made while building and rebuilding products, not from theory.</p>
<p>I’m curious how other builders are thinking about this tradeoff right now.</p>
]]></content:encoded></item><item><title><![CDATA[I Didn’t Build MVPable to Save Time.]]></title><description><![CDATA[I Built It Because I Was Tired of Starting From Zero.
A few days ago I pushed a full refresh of MVPable.
Cleaner structure.Better defaults.Solid documentation.
It’s sitting at 150 stars now.
That number isn’t huge.But it’s real.
And it reflects somet...]]></description><link>https://dev.isma.fi/introducing-mvpable-the-saas-kit-to-launch-your-product-fast</link><guid isPermaLink="true">https://dev.isma.fi/introducing-mvpable-the-saas-kit-to-launch-your-product-fast</guid><category><![CDATA[SaaS]]></category><category><![CDATA[Web Development]]></category><category><![CDATA[Startups]]></category><category><![CDATA[Indie Maker]]></category><category><![CDATA[webdev]]></category><category><![CDATA[Laravel]]></category><dc:creator><![CDATA[Ismael]]></dc:creator><pubDate>Sun, 14 Jul 2024 22:00:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1721379119483/7dcd6fde-352c-4c87-9b6d-5c1e44468149.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I Built It Because I Was Tired of Starting From Zero.</p>
<p>A few days ago I pushed a full refresh of MVPable.</p>
<p>Cleaner structure.<br />Better defaults.<br />Solid documentation.</p>
<p>It’s sitting at 150 stars now.</p>
<p>That number isn’t huge.<br />But it’s real.</p>
<p>And it reflects something I didn’t expect when I first built it.</p>
<h2 id="heading-the-real-situation">The Real Situation</h2>
<p>For years, every SaaS project started the same way.</p>
<p>New repo.<br />Rewire auth.<br />Reconnect Stripe.<br />Rebuild admin logic.<br />Re-decide folder structure.</p>
<p>I kept telling myself that starting clean meant starting smart.</p>
<p>Most of the time, it just meant repeating myself.</p>
<h2 id="heading-what-i-expected">What I Expected</h2>
<p>I thought each project deserved a fresh foundation.</p>
<p>Custom decisions.<br />Tailored architecture.<br />More control.</p>
<p>Instead, I kept rebuilding the same 70 percent.</p>
<p>And losing weeks before even testing the core idea.</p>
<h2 id="heading-what-actually-happened">What Actually Happened</h2>
<p>At some point I stopped romanticizing setup.</p>
<p>I just wanted a base that:</p>
<ul>
<li><p>Works</p>
</li>
<li><p>Scales</p>
</li>
<li><p>Doesn’t fight me</p>
</li>
<li><p>Doesn’t require rethinking everything</p>
</li>
</ul>
<p>So I extracted what I kept rebuilding.</p>
<p>That became MVPable.</p>
<p>Not as a product launch.<br />More as a personal standard.</p>
<h2 id="heading-the-boring-truth">The Boring Truth</h2>
<p>The foundation of most SaaS products is not unique.</p>
<p>Auth.<br />Billing.<br />Roles.<br />Admin.<br />Basic SEO structure.</p>
<p>None of this differentiates you.</p>
<p>Execution does.</p>
<p>Iteration does.</p>
<p>Clarity does.</p>
<h2 id="heading-why-the-refresh-mattered">Why the Refresh Mattered</h2>
<p>The recent refresh wasn’t cosmetic.</p>
<p>It was about removing ambiguity.</p>
<p>Better documentation.<br />Clear setup steps.<br />Cleaner structure.<br />Less guessing.</p>
<p>Because friction doesn’t only exist in code.</p>
<p>It exists in onboarding builders too.</p>
<p>If someone clones your repo and feels lost,<br />you failed before they even start.</p>
<h2 id="heading-the-part-that-changed-my-thinking">The Part That Changed My Thinking</h2>
<p>Seeing 150 stars isn’t about validation.</p>
<p>It’s a signal.</p>
<p>It means other builders are also tired of rebuilding foundations.</p>
<p>And documentation matters more than clever abstractions.</p>
<p>People don’t need brilliance.</p>
<p>They need clarity.</p>
<h2 id="heading-what-surprised-me">What Surprised Me</h2>
<p>Speed didn’t just improve when I used it.</p>
<p>Confidence did.</p>
<p>When your base is stable and documented:</p>
<p>You don’t hesitate.<br />You don’t re-architect mid-build.<br />You don’t second-guess every structural choice.</p>
<p>You focus on what users will actually see.</p>
<p>That shift is subtle.</p>
<p>But it compounds.</p>
<h2 id="heading-the-tradeoff-im-still-aware-of">The Tradeoff I’m Still Aware Of</h2>
<p>There’s a danger in having a strong base.</p>
<p>You can confuse smooth setup with real progress.</p>
<p>Shipping infrastructure feels productive.</p>
<p>Shipping value is different.</p>
<p>So I try to treat <a target="_blank" href="https://github.com/ismaelfi/mvpable">MVPable</a> as scaffolding.</p>
<p>Not as the house.</p>
<h2 id="heading-what-im-doing-next">What I’m Doing Next</h2>
<p>I’m refining it based on real usage.</p>
<p>Removing what doesn’t earn its place.</p>
<p>Clarifying what causes hesitation.</p>
<p>And documenting decisions more than features.</p>
<p>Because future me will forget why I chose something.</p>
<p>And so will everyone else.</p>
<h2 id="heading-quiet-takeaway">Quiet Takeaway</h2>
<p>I used to think speed came from working harder.</p>
<p>Now I think speed comes from deciding once<br />and documenting it well.</p>
<p>Still testing that idea.</p>
<p>But the refresh feels like a step in the right direction.</p>
]]></content:encoded></item><item><title><![CDATA[The Ultimate Tech Stack for Indie Hackers]]></title><description><![CDATA[Introduction and Context
Hello, this is Ismael. Five years ago, I was working full-time as a telecom engineer. I decided to pivot my career and become a web developer. I started with vanilla JavaScript, then followed the trend and picked up React. Af...]]></description><link>https://dev.isma.fi/from-telecom-to-tech-my-journey-to-building-saas-products-with-the-tall-stack</link><guid isPermaLink="true">https://dev.isma.fi/from-telecom-to-tech-my-journey-to-building-saas-products-with-the-tall-stack</guid><category><![CDATA[Freelancing]]></category><category><![CDATA[Web Development]]></category><category><![CDATA[Laravel]]></category><category><![CDATA[Indie Maker]]></category><category><![CDATA[Beginner Developers]]></category><dc:creator><![CDATA[Ismael]]></dc:creator><pubDate>Fri, 10 Jun 2022 19:20:39 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1721310792910/43dc7d1c-da74-4921-8cdd-49803686fad0.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3 id="heading-introduction-and-context">Introduction and Context</h3>
<p>Hello, this is Ismael. Five years ago, I was working full-time as a telecom engineer. I decided to pivot my career and become a web developer. I started with vanilla JavaScript, then followed the trend and picked up React. After months of working on React projects, I landed my first freelance job 😎.</p>
<p>However, I realized that just working as a web developer wasn't fulfilling enough. I wanted to explore marketing, growth hacking, and business. Eventually, I found my true calling: creating software products. React is fantastic, but it's not always sufficient for delivering comprehensive software solutions, especially for SaaS.</p>
<p>After trying React + Express.js, I found it challenging to deliver high-quality, thoroughly tested products quickly as a solo developer. My college experience with PHP and OOP helped me get started with Laravel, and I fell in love with it. With Laravel, I had my app up and running in a few commands, complete with authentication, routing, views, and controllers.</p>
<p>If you don't have much web development experience, I recommend starting with PHP and then moving to Laravel to kickstart your next project. Don't like PHP? Rails, based on Ruby, is a good alternative.</p>
<p>Alright, let's dive in! 🚀</p>
<hr />
<h3 id="heading-design">Design</h3>
<p>I design everything in <a target="_blank" href="https://figma.com/"><strong>Figma</strong></a> and then implement it in <a target="_blank" href="https://tailwindcss.com/"><strong>Tailwind CSS</strong></a>, with the help of <a target="_blank" href="https://tailwindui.com/"><strong>Tailwind UI</strong></a>.</p>
<hr />
<h3 id="heading-development-tall-stack-for-tailwind-css-alpinejs-livewire-amp-laravel">Development (TALL Stack for Tailwind CSS, Alpine.js, Livewire &amp; Laravel)</h3>
<ul>
<li><p><strong>Language</strong>: PHP &amp; JavaScript</p>
</li>
<li><p><strong>Framework</strong>: Laravel &amp; Livewire (a full-stack framework for Laravel that makes building dynamic interfaces simple)</p>
</li>
<li><p><strong>Front-end</strong>: Alpine.js and Blade (template engine by Laravel)</p>
</li>
<li><p><strong>UI</strong>: Tailwind CSS</p>
</li>
<li><p><strong>Local Server</strong>: DBngin, Laravel Valet for my local webserver needs</p>
</li>
<li><p><strong>Admin Panels</strong>: <a target="_blank" href="https://filamentphp.com/">FilamentPHP</a></p>
</li>
<li><p><strong>Database Management</strong>: <a target="_blank" href="https://tableplus.com/">TablePlus</a></p>
</li>
<li><p><strong>Source Control</strong>: <a target="_blank" href="https://github.com/">GitHub</a></p>
</li>
<li><p><strong>Build Tools and Continuous Integration</strong>: CircleCI / Jenkins</p>
</li>
<li><p><strong>Certificates</strong>: <a target="_blank" href="https://github.com/laravel/valet">Valet</a> (one command: <code>valet secure</code>)</p>
</li>
<li><p><strong>Mail Testing</strong>: <a target="_blank" href="https://mailtrap.io/">Mailtrap</a></p>
</li>
</ul>
<hr />
<h3 id="heading-production">Production</h3>
<ul>
<li><p><strong>Servers and Databases</strong>: <a target="_blank" href="https://aws.amazon.com/">AWS</a></p>
</li>
<li><p><strong>Static Sites</strong>: <a target="_blank" href="https://netlify.com/">Netlify</a></p>
</li>
<li><p><strong>Error Tracking</strong>: <a target="_blank" href="https://www.larabug.com/">Larabug</a></p>
</li>
<li><p><strong>Downtime Tracking</strong>: <a target="_blank" href="https://ohdear.app/">Oh Dear</a></p>
</li>
<li><p><strong>Analytics</strong>: Google Analytics</p>
</li>
<li><p><strong>Mails</strong>: <a target="_blank" href="https://mailtrap.io/">Mailtrap</a></p>
</li>
<li><p><strong>No-Code and Integration</strong>: <a target="_blank" href="https://n8n.io/">n8n</a> – helps reduce my codebase by 20%. Let me know in the comments if you want to see a blog post on this topic.</p>
</li>
<li><p><strong>Server Management</strong>: <a target="_blank" href="https://ploi.io/">Ploi</a> – installs on the fly: NGINX, MySQL/PostgreSQL/MariaDB, Redis, Supervisor, PHP (multiple versions), Composer, Memcached, NodeJS, UFW Firewall, Fail2ban, and other basic packages.</p>
</li>
<li><p><strong>DNS Management</strong>: CloudFlare (integrates with <a target="_blank" href="https://ploi.io/">Ploi</a>)</p>
</li>
<li><p><strong>Code Generator</strong>: <a target="_blank" href="https://vemto.app/">Vemto</a> – an amazing tool that helps me focus on value rather than developing CRUD functionality. Let me know in the comments if you want to know more about it.</p>
</li>
</ul>
<p><a target="_blank" href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foh5bjwl0s6to3ze5s2z2.png"><img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foh5bjwl0s6to3ze5s2z2.png" alt="Vemto tool" /></a></p>
<hr />
<h3 id="heading-conclusion">Conclusion</h3>
<p>This is my go-to approach for creating software products:</p>
<ol>
<li><p><strong>Find a Framework</strong>: Choose one backed by a large community with an easy learning curve. This way, you can ask for help and progress faster.</p>
</li>
<li><p><strong>Keep Your Codebase Small</strong>: Fewer errors and more confidence.</p>
</li>
<li><p><strong>Don't Reinvent the Wheel</strong>: Pick a framework that offers essential building blocks like database/ORM, queues, WebSockets, and authentication.</p>
</li>
<li><p><strong>Monolithic Architecture</strong>: One codebase to manage everything.</p>
</li>
</ol>
<p>Next time, I'll share tactics on how to find product ideas and attract your first customers.</p>
<hr />
<h3 id="heading-about-me">About Me</h3>
<p>Hello everyone! I'm Ismael. I help entrepreneurs launch their MVPs by using both no-code and code tools to quickly create and launch digital products that are both scalable and easy to maintain, starting from the very beginning.</p>
<p>Any questions? You can DM me on Twitter <a target="_blank" href="https://twitter.com/intent/user?screen_name=ismael_fi">@ismael_fi 🐦</a>.</p>
]]></content:encoded></item></channel></rss>