<?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[GigaDev]]></title><description><![CDATA[Software engineering journal by Bonaventura Sunu.

Sharing real-world lessons and practical tips on building secure, scalable, and production-ready software.]]></description><link>https://gigadev.space</link><generator>RSS for Node</generator><lastBuildDate>Thu, 09 Apr 2026 02:36:56 GMT</lastBuildDate><atom:link href="https://gigadev.space/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[How can I write better code, faster?]]></title><description><![CDATA[After 5 years of working in software development, I’ve come to realize that this journey is a continuous learning process. No matter how much I’ve grown, there’s always more to learn — especially from other people.
These lessons are the result of my ...]]></description><link>https://gigadev.space/how-can-i-write-better-code-faster</link><guid isPermaLink="true">https://gigadev.space/how-can-i-write-better-code-faster</guid><category><![CDATA[Software Engineering]]></category><dc:creator><![CDATA[GigaDev]]></dc:creator><pubDate>Sun, 13 Apr 2025 17:34:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1744564356758/7482ce77-01a3-438c-bf73-b80c9a0aeae1.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>After 5 years of working in software development, I’ve come to realize that this journey is a continuous learning process. No matter how much I’ve grown, there’s always more to learn — especially from other people.</p>
<p>These lessons are the result of my own experiences, mistakes, and reflections. I believe they can guide not only your growth as a developer, but also help shape you into a better person.</p>
<p>I’m still working on applying these principles consistently in my day-to-day life, and I hope they can be useful for you too.</p>
<p>Here are my lessons:</p>
<ul>
<li><p><strong>Focus Mode</strong> — Eliminate distractions and give problems your full attention.</p>
</li>
<li><p><strong>Go Deep</strong> — Understand the <em>why</em>, not just the <em>how</em>.</p>
</li>
<li><p><strong>Leave No Bugs</strong> — Fix issues properly, not temporarily.</p>
</li>
<li><p><strong>Domain Knowledge</strong> — Understanding the domain — the business logic, industry, and real-world problem you're solving — will help you write better, more meaningful code.</p>
</li>
<li><p><strong>Make Things a Little Better Each Time</strong> — Small improvements add up.</p>
</li>
<li><p><strong>Plan and Coordinate</strong> — Think ahead, align with others.</p>
</li>
<li><p><strong>Take Ownership</strong> — Be the go-to person for a part of the codebase or product.</p>
</li>
<li><p><strong>Level Up Debugging</strong> — Treat debugging as a skill, not just a task.</p>
</li>
<li><p><strong>Google-Fu + Prompt Whisperer</strong> — Master the art of asking the right questions, whether it’s Google or AI.</p>
</li>
</ul>
<p>I’ve also collected some of the resources that helped me along the way below.</p>
<hr />
<p>Related resources</p>
<ul>
<li><p><a target="_blank" href="https://hackernoon.com/how-to-become-a-10x-dev-an-essential-guide">https://hackernoon.com/how-to-become-a-10x-dev-an-essential-guide</a></p>
</li>
<li><p><a target="_blank" href="https://www.reddit.com/r/SoftwareEngineering/comments/11jd084/is_it_really_possible_to_be_a_10x_engineer/">https://www.reddit.com/r/SoftwareEngineering/comments/11jd084/is_it_really_possible_to_be_a_10x_engineer/</a></p>
</li>
<li><p><a target="_blank" href="https://www.jointaro.com/question/ciE9a2TZ7rZNyYP8HbeJ/how-can-i-write-great-code-faster/?apiKey=AIzaSyA1BAvF6y4lXt9hCCbT7iTzJbnFD_pSqZw&amp;oobCode=RwN7cFn9RpfsncePvb5mJYEulfx0qJAtV5ltW6z8gqgAAAGWL_oIMw&amp;mode=signIn&amp;lang=en">https://www.jointaro.com/question/ciE9a2TZ7rZNyYP8HbeJ/how-can-i-write-great-code-faster/?apiKey=AIzaSyA1BAvF6y4lXt9hCCbT7iTzJbnFD_pSqZw&amp;oobCode=RwN7cFn9RpfsncePvb5mJYEulfx0qJAtV5ltW6z8gqgAAAGWL_oIMw&amp;mode=signIn&amp;lang=en</a></p>
</li>
<li><p><a target="_blank" href="https://www.freecodecamp.org/news/focus-and-deep-work-your-secret-weapons-to-becoming-a-10x-developer-8e203a6ad291/">https://www.freecodecamp.org/news/focus-and-deep-work-your-secret-weapons-to-becoming-a-10x-developer-8e203a6ad291/</a></p>
</li>
<li><p><a target="_blank" href="https://medium.com/@themodernistman/7-tips-to-become-a-10x-software-engineer-413b06383be7">https://medium.com/@themodernistman/7-tips-to-become-a-10x-software-engineer-413b06383be7</a></p>
</li>
</ul>
]]></content:encoded></item><item><title><![CDATA[SQLite for Web Apps: Distributed, Fast, and Production-Ready?]]></title><description><![CDATA[Lately, I’ve been intrigued by a simple but important question: How can we make databases less painful and more affordable for small-scale web applications? Surprisingly, the answer might just be SQLite.
This question arose while I was thinking about...]]></description><link>https://gigadev.space/sqlite-for-web-apps-distributed-fast-and-production-ready</link><guid isPermaLink="true">https://gigadev.space/sqlite-for-web-apps-distributed-fast-and-production-ready</guid><category><![CDATA[SQLite]]></category><category><![CDATA[Software Engineering]]></category><dc:creator><![CDATA[GigaDev]]></dc:creator><pubDate>Sat, 05 Apr 2025 04:20:12 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1743823604355/cbc6fa47-12fd-4dac-a58e-60b5a1f3481a.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Lately, I’ve been intrigued by a simple but important question: <strong>How can we make databases less painful and more affordable for small-scale web applications?</strong> Surprisingly, the answer might just be <strong>SQLite</strong>.</p>
<p>This question arose while I was thinking about the digitalization journey of startups, small and medium enterprises (SMEs) in Indonesia. Many SMEs want to build apps to make their business operations smoother, but they often face three main challenges: <strong>cost</strong>, <strong>security</strong>, and <strong>maintainability</strong>.</p>
<p>In most cases, these businesses don’t have a dedicated software team to manage their applications. That means they need a solution that’s simple, low-maintenance, secure, and — most importantly — affordable. This led me to a deeper exploration:<br /><strong>Can SMEs in Indonesia run a secure, maintainable, and useful web application for under $10 per month?</strong></p>
<h3 id="heading-the-stack-lightweight-and-cost-effective">The Stack: Lightweight and Cost-Effective</h3>
<p>Popular web frameworks like <strong>Django</strong>, <a target="_blank" href="http://ASP.NET"><strong>ASP.NET</strong></a>, or <strong>Laravel</strong> are excellent choices to get started. But one of the most critical components is the <strong>database</strong> — especially when you consider security and backups. Running a separate server just for the database adds complexity and cost, both of which are hard to justify for SMEs with limited resources.</p>
<p>So the next logical question was:<br /><strong>Can we host the entire application — including the database — on a single server, while keeping it secure, easy to update, and maintain?</strong></p>
<h3 id="heading-the-new-wave-serverless-sqlite-modern-infrastructure">The New Wave: Serverless SQLite + Modern Infrastructure</h3>
<p>In today’s cloud-native world, we have more options than ever. Tools like <strong>Docker</strong>, and newer serverless database providers such as <strong>Cloudflare D1</strong> or <strong>Turso</strong>, offer compelling solutions. These services are significantly more affordable compared to traditional cloud providers like AWS or DigitalOcean.</p>
<p>With a $5 server and a free or low-cost tier from services like Turso, you can easily keep your monthly cost under <strong>$10</strong>.</p>
<p>But I kept wondering:<br /><strong>Can we go even cheaper and still maintain reliability?</strong></p>
<h3 id="heading-rediscovering-sqlite-for-production">Rediscovering SQLite for Production</h3>
<p>That’s when <strong>SQLite</strong> re-entered the picture. Known for its simplicity and speed, SQLite can be a great production-ready option — especially when paired with modern tools that address its traditional limitations. SQLite is zero-config, and can run as a library inside your app.</p>
<p>By running the SQLite database on the same server using Docker, and integrating tools like <strong>Litestream</strong> (for real-time streaming backups to the cloud) or <strong>LiteFS</strong> (for distributed SQLite with replication), we can build systems that are both <strong>resilient</strong> and <strong>cost-effective</strong>.</p>
<h3 id="heading-sample-architecture-sqlite-for-production-on-a-single-server">Sample Architecture: SQLite for Production on a Single Server</h3>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1743832567178/bb188227-0258-4bb5-a18e-2602ba8cb5cc.png" alt="Sample Architecture - SQLite, ASP.NET, Docker, Traefik, and Litestream" class="image--center mx-auto" /></p>
<p>To make SQLite production-ready and reliable on a single server setup, here’s the architecture I use:</p>
<ul>
<li><p><strong>Traefik</strong> as an internal load balancer and reverse proxy. It handles routing to different containers and supports automatic HTTPS via Let's Encrypt.</p>
</li>
<li><p><strong>Docker</strong> to containerize and orchestrate the application components.</p>
</li>
<li><p><a target="_blank" href="http://ASP.NET"><strong>ASP.NET</strong></a> <strong>Core</strong> as the web framework — lightweight, fast, and perfect for container deployment.</p>
</li>
<li><p><strong>SQLite</strong> as the main relational database, running inside the same container or alongside the app container for fast local access.</p>
</li>
<li><p><strong>Litestream</strong> for real-time replication of the SQLite database to an <strong>S3-compatible storage</strong>. This ensures disaster recovery and backup capabilities with minimal setup and cost.</p>
</li>
</ul>
<p>This setup allows me to:</p>
<ul>
<li><p>Run the entire application stack on a <strong>single $5/month VPS</strong>.</p>
</li>
<li><p>Achieve <strong>high performance and low latency</strong> by colocating the app and database.</p>
</li>
<li><p>Maintain <strong>data durability and backup</strong> using Litestream with minimal operational overhead.</p>
</li>
<li><p>Scale horizontally later if needed, by adding replicas or using <strong>LiteFS</strong> for distributed reads.</p>
</li>
</ul>
<h3 id="heading-benefits">Benefits</h3>
<p>There are several benefits to using <strong>SQLite</strong> for web apps in production. SQLite is fast because there’s no network latency for local reads — the database resides on the same server as your application. This setup also improves simplicity, as developers can focus on the application server without the need to manage a separate database server. Additionally, data resilience and replication can be achieved in a straightforward way using tools like <strong>Litestream</strong> and <strong>LiteFS</strong>.</p>
<h3 id="heading-tradeoffs">Tradeoffs</h3>
<p>Using SQLite with Litestream or LiteFS is honestly pretty compelling for web apps—especially if you want a simpler, faster setup without managing heavy database infrastructure. With Litestream, you get continuous backups via WAL streaming (usually to S3), and LiteFS gives you distributed reads with a single write-primary model. But there are tradeoffs. Writes still go through one node, so it won’t scale well for high-write apps. Reads on replicas can be slightly stale due to async replication, which might matter depending on your use case. You also lose some features you'd get with Postgres—like stricter types, better JSON support, parallel queries, and more advanced indexing. And while you avoid running a DB server, you take on the operational complexity of managing replication, failover, and consistency yourself. So yeah, it works great for read-heavy apps and edge deployments—but if you need strong consistency, real-time updates, or lots of writes, you’ll probably feel the limits.</p>
<hr />
<h3 id="heading-final-thoughts">Final Thoughts</h3>
<p>SQLite isn’t just for local apps or side projects anymore. With the right setup, it can power real-world web applications — especially those built for SMEs looking for a balance between <strong>affordability</strong>, <strong>performance</strong>, and <strong>simplicity</strong>.</p>
<p>This journey has opened up new possibilities, and I’m excited to explore more about how SQLite can be leveraged in distributed and production-grade environments — without breaking the bank.</p>
]]></content:encoded></item></channel></rss>