The Franconian
Coder Studio

Header Background Header Background Header Background Header Background Sebastian

Explore a curated collection of technical topics, from software architecture and web development to programming languages and AI experiments. Each category offers insights, tutorials, and deep dives for developers and tech enthusiasts. Find the topics that spark your curiosity and join the journey to master the art and science of software development.

10 articles

Languages & Runtimes

Evaluating programming languages and execution environments for modern development needs.

Balancing Function Splitting and Performance in Go

Writing maintainable code often means breaking logic into smaller functions, but does this abstraction come with a performance penalty? In Go, the compiler aggressively optimizes by inlining functions, blurring the line between clean code and efficient execution. To understand the real-world impact, I dissected how Go handles closures, standalone functions, and forced non-inlined calls—down to the assembly level. The results reveal when splitting code matters, and when it’s effectively free. Let’s dive into the compiler’s behavior and what it means for practical design decisions.

PGO in Go: Optimizing AOT Code Like JIT

We often think of JIT-compiled languages like Java or JavaScript as the kings of runtime optimization, dynamically adapting to usage patterns. But what if I told you Go—a strictly AOT-compiled language—can achieve similar optimizations without runtime overhead? Thanks to Profile-Guided Optimization (PGO), introduced in Go 1.20, we can now give the compiler a 'cheat sheet' of how our code behaves in production. This isn’t just theoretical: real-world cases show measurable gains, especially for long-running services. Let’s explore how PGO works, when to use it, and why it might change how you think about AOT compilation.

Why Go Isn’t Always Ideal for Beginners

Go has earned its reputation as a robust, cloud-native language—fast, simple, and reliable. But as its adoption grows, so does the mismatch between its design and the expectations of newcomers. Many assume Go’s minimalism means ease of use, only to encounter its unique error handling, goroutines, and lack of familiar abstractions. This isn’t just about syntax; it’s about how the language shapes problem-solving. Whether you’re considering Go for a team or as a learner, understanding these nuances early can save frustration later.

Why C Still Matters:
Learning from the Fundamentals

While modern programming languages like Go offer abstractions that make development easier and safer, I remain a fan of C for its simplicity and control. C forces you to understand how things work under the hood, offering unparalleled freedom—and the potential to break everything. In this article, I’ll discuss why learning from C and other low-level concepts is crucial for writing efficient, resource-conscious code, even in higher-level languages. From Go’s `sync.Pool` to the inner workings of slices, understanding the fundamentals can set you apart as a developer and help you deliver superior results.

Why Bun Has Become My Go-To
JavaScript Runtime

For years, my JavaScript setup relied on Node, npm, and various bundlers. But since discovering Bun, my workflow has become faster and more streamlined. Bun combines a high-performance JavaScript runtime, native TypeScript support, a package manager, and a bundler—all in one tool. Its compatibility with Node and additional features, like the integrated Postgres client, make it a superior choice for modern web development. In this article, I’ll share how Bun, alongside Go and Zig, has become a cornerstone of my development stack and how it’s simplified my workflow for personal projects and my Astro-based website hosted on Cloudflare.

Memory-Safe Languages and the Future of Software Development

The White House’s call to adopt memory-safe programming languages highlights a critical shift in software development, particularly for security-sensitive domains. While languages like Rust, Go, and Swift offer robust safety features, this transition raises concerns about the erosion of foundational programming knowledge. Over-reliance on tools and AI-generated code can lead to a lack of understanding of core principles, potentially compromising maintainability and security. In this article, I’ll discuss the importance of balancing modern tools with a deep understanding of software architecture and the risks of losing sight of fundamental programming skills.

My Dilemma with
Modern Programming Languages

Over the past 30 years, I’ve seen programming languages evolve from niche tools for enthusiasts to mainstream technologies driven by speed and convenience. While I still love Go for its simplicity and tooling, and C for its control and transparency, the rise of Rust and Zig has introduced new contenders. Rust, with its growing ecosystem and adoption in major systems, is often hailed as the ultimate language. Zig, on the other hand, offers minimalism and a powerful compiler. In this article, I’ll share my thoughts on these languages, the challenges of modern programming culture, and why I continue to value the classics like Go and C.

Why Go and Zig Are My Go-To
Tools for Web Development

Web development offers unparalleled freedom, especially when it comes to choosing the right tools for your back-end. Over the years, I’ve worked with PHP, Ruby, Python, Java, and C#, but it was Go that truly won me over. Its simplicity, static binaries, and brilliant concurrency model made it a perfect fit for my needs. And when I needed to go even deeper, Zig stepped in, offering low-level power without sacrificing ease of use. In this article, I’ll share why Go and Zig have become my go-to tools for web development and why they might be worth exploring for your next project.