Chapter 14: 2021 ->

The Tale of a Startup, a Keyboard, and a New Language

Listen to the Chapter and Follow Along with the Transcript


A Unique Start

My journey with this FinTech began with an unexpected twist. The interview process kicked off smoothly with the CTO—a warm, approachable person who made a strong first impression. The first round felt like a breeze, mainly conversational without delving too deeply into technicalities. Then came the second round.

Picture this: It’s a remote interview, and I’m ready to ace it. Except, the Zoom app on my trusty Linux machine decided not to cooperate. In a last-minute scramble, I grabbed my wife’s iMac, blissfully unaware of the Hungarian keyboard layout it was set to. For those unfamiliar, Hungarian keyboards swap some essential coding characters and even letters like z and x.

What ensued during the coding task in React.js was both comical and nerve-wracking. Every time I tried to write code, an unexpected character would pop up. Combine this with a rising stress level, and by the time the backend lead’s questions rolled in, I wasn’t at my best. I even told the recruiter afterward that I wasn’t confident about my performance. But to my pleasant surprise, the offer letter followed shortly.

Settling In

The onboarding process was smooth and welcoming. My initial tasks focused on React.js, but soon I shifted to backend work—a space I’m more passionate about. The PHP framework in use wasn’t my personal favorite, but I understood its merits for the business. It was reliable, though whispers in the community hinted that its updates might not last forever.

Meanwhile, the company culture was exceptional. Team collaboration thrived, leadership was approachable, and the remote work-life balance was ideal. I felt at home.

Exciting Developments

Change was in the air. There were murmurs of something significant. Soon, the news broke: our little FinTech was being acquired by one of the UK’s largest banks! Excitement mingled with apprehension—would this merger erase our beloved startup culture? Thankfully, leadership reassured us that our way of working would remain intact.

Post-merger, opportunities blossomed. With newfound resources, the company aimed higher and decided to reimagine the entire platform. Enter: Golang.

The Big Leap: Embracing Golang

The decision to rewrite the platform in Golang was monumental. Developers, including myself, were offered a chance to upskill. I embraced it wholeheartedly, diving into Golang beyond work, experimenting with open-source projects, and falling in love with its simplicity and performance.

This led to a new personal mission: sharing my knowledge with the wider community through videos.

What’s Next? Join My Journey!

I’m embarking on an exciting adventure to create a series of videos showcasing tools, techniques, and projects in Golang. Here’s exactly what you can expect:

Database Schema Migration Tool: A utility similar to Laravel's artisan:migrate, designed to handle database migrations efficiently in Golang.

High-Speed CSV Data Import: Watch as we import 2 million rows from a CSV file into a database in under 40 seconds. We’ll leverage concurrency, batched inserts, and transactions while profiling performance across four different database engines.

Effortless Export: We’ll also explore optimized methods for exporting data back into CSV files.

Log Debugging Made Beautiful: Discover a simple tool to tail, debug, and prettify your logs in real-time.

Dependency Injection in Golang: Learn how to achieve dependency injection, discuss its pros and cons, and even explore autowiring possibilities.

A Laravel-Like Framework for Golang: Introducing a feature-rich framework I’ve created, inspired by Laravel. It comes with:

Core Features:

  • Controllers
  • Middlewares
  • Commands
  • Jobs
  • Events
  • Mailer
  • Views
  • Migrations

Additional Features:

  • Automatic dependency injection in controllers, middlewares, jobs, commands, and event consumers

  • Queue system

  • Logger

  • SQL Builder

  • Configuration management

  • Request handling

  • Router

  • Session support

  • Storage support (file, Memcached, Redis, and database)

  • Built-in artisan commands Audio Processing: Let’s play with audio files—analyzing, manipulating, and converting them into various formats.

  • Event-Driven Architectures: We’ll dive deep into working with Kafka, designing event-driven systems, and implementing AWS-compatible architectures using SNS, SQS, Lambda, and EC2. Write once, deploy everywhere!

  • Breaking Down SOLID Principles: Learn the benefits of following SOLID, but also explore when breaking the rules might make sense. Together, we’ll analyze readability, performance, maintainability, and trade-offs.

  • Domain-Driven Design (DDD): We’ll explore this approach to structuring complex software, discussing its practical applications.

  • Test-Driven Development: Discover how TDD can transform your workflow with test doubles, mocks, spies, and more.

  • The CQRS Pattern: Learn how to separate reads and writes to optimize your system’s architecture.

  • Monoliths vs. Microservices: Evaluate architectural decisions, and explore various structuring patterns like MVC, Onion, and beyond.

  • Creating a Programming Language: We’ll develop a custom language with features like mathematical expressions, variables, scopes, loops, and conditions, all powered by a Golang-based interpreter.

And that’s just the beginning!

Follow Along Join me on this journey as I delve into personal projects and knowledge-sharing initiatives. These videos will focus on open-source tools, techniques, and my learnings—all separate from my professional work. Let’s explore, learn, and build something extraordinary together!

Keyboard