Issue #118
Java is under-hyped, SQLite is what you need, Queues are considered harmful, Programming is hard, Distributed systems with Aquamarine.
You never really learn much from hearing yourself speak.
― George Clooney
Posts
There is no One True Way to build applications, but I think that Java doesn't get enough attention particularly among startups and the newbie programming community. Untyped languages are useful tools, but I don't think they should be the default choice for building large applications. If you're a full-stack dev and have never extensively used Java, I think you'll be pleasantly surprised should you try it for your next project. - #jackson
SQLite the only database you will ever need in most cases
In contrast to many other database management systems, SQLite is not a client-server database engine, but you actually very rarely need that. Because the database consists of a single file, a write access can only be satisfied if no other accesses are currently writing to the database. A client-server approach is better suited for large datasets because the database will split files up into smaller files whereas SQLite only works with a single file. You can split up your database into multiple separate databases, and you can even give each user his/hers own database on the server. - #unixsheikh
The Architecture Behind A One-Person Tech Startup
This is a long-form post breaking down the setup I use to run a SaaS. From load balancing to cron job monitoring to payments and subscriptions. - #anthonynsimon
The Evolution of Distributed Systems on Kubernetes
Modern distributed applications have needs around lifecycle, networking, binding, and state management that cloud-native platforms must provide.
Kubernetes has great support around lifecycle management but relies on other platforms using the sidecar and operator concepts to satisfy the networking, binding, and state management primitives.
Future distributed systems on Kubernetes will be composed of multiple runtimes where the business logic forms the core of the application, and sidecar “mecha” components offer powerful out-of-the-box distributed primitives.
This decoupled mecha architecture offers the benefits of cohesive units of business logic and improves day-2 operations, such as patching, upgrades, and long-term maintainability.
- #siddharthsarda
How Dynamo and other dynamo like systems use vector clocks
How Spanner provides the highest level of consistency using Truetime API.
- #siddharthsarda
It’s surprising how often queues are used when there’s actually little reason to do so. The primary reason queues make sense is switching from synchronous to asynchronous requests. There are other times to reach for one, of course, but they’re often viewed as something helpful. They should be viewed as something potentially dangerous. - #tedinski
Controlling concurrency in distributed systems using AWS Step Functions
In this blog post, you learn how to control concurrency in a distributed system. You implement a semaphore using Step Functions and DynamoDB Conditional Expressions. Finally, you use EventBridge to trigger lock cleanup when you encounter failure. - #amazon
Most beginners in programming eventually end up with the same ingratiating message: “Programming is easy, everyone can do it”, with some threatening message that people doing the gatekeeping should stop doing that. I’m here to tell you that that is not true. - #dorinlazar
My Go Executable Files Are Still Getting Larger (What’s New in 2021 and Go 1.16)
if we combine the Go internal bytes (both “dark” and non-“dark”) with the optional symbol tables and debugging information, we see a growing proportion of executable files encoded as non-code, non-data, currently at 70%. - #cockroachlabs #blog
Everyone Is Still Terrible At Creating Software At Scale
As soon as you start to involve more than one person, you can either try to have them all work on the same mental representation (like in pair programming), or you need to introduce some restrictions on the area of responsibility, so that everyone can mind their own business, or at least work more independently. - #margint #blog
Computers and software are complex. When it comes to performance and optimizations, always be measuring. The issues I described could be manifesting in your software and environments but the effort to address them may not be worth the reward. Computers and software, like life, are full of trade-offs. Performance is just one trade-off. Please don’t cargo cult my advice without measuring and applying critical thinking first. -#gregoryszorc #blog
Achieving reliable dual writes in distributed systems
Are you using the famous Saga pattern to solve for distributed transactions, but wondering how to reliably publish events to your broker system corresponding to each database write? - #razorpay #engineering #blog
Retries in distributed systems: good and bad parts
Retries, if employed without careful thought can be pretty devastating for a system as they can lead to retry storms. Let’s break down what happens during a retry storm with a real-world example. - #shubheksha
Videos
Programming Distributed Systems with Aquamarine
Contributors
Sagar Patil
Suvarna Chavan
Kanchan Mahajan
Sandip Ghane