Avoid Negativity: Crucial Career Advice

2025-06-20

This article emphasizes the importance of avoiding negativity echo chambers in one's career. While acknowledging that some complaining is normal, it warns against prolonged immersion in groups filled with negativity, impacting both career progression and mental/physical well-being. The author suggests focusing on positive aspects and striving for improvement if career advancement is desired, or dedicating energy to personal enjoyment if not. The article advocates finding positive communities and role models for genuine progress, rather than dwelling on endless complaints. Actively participating in and protecting cherished communities, while setting a positive example, is key to building a constructive environment.

Read more

Versioning vs. Coordination in Distributed Databases: Coordination's Killer

2025-02-08

This article explores the advantages of versioning over coordination mechanisms when building highly available, low-latency, and scalable distributed database systems. Through a concrete example, the author demonstrates how versioning avoids concurrency issues and scalability bottlenecks caused by locking. Versioning creates multiple versions of data, allowing concurrent transactions to access data without blocking each other, thus improving system performance and throughput. The article delves into version selection and management mechanisms, explaining how Aurora DSQL uses physical clocks to avoid coordination, ultimately achieving a high-performance and highly available distributed database system.

Read more
Development versioning coordination

Formal Methods: Just Good Engineering Practice?

2025-01-10

Marc Brooker, an engineer at Amazon Web Services, argues in his TLA+ conference keynote that formal methods are not a costly overhead but a time and money saver for large-scale, distributed systems, or critical low-level systems. By reducing rework and the cost of change, formal design significantly improves software development efficiency. Not all software benefits; agile development is better suited for areas sensitive to changing user requirements, such as UIs or pricing logic. However, for large systems with well-defined requirements, formal methods effectively reduce bug rates and improve performance. Brooker recommends various tools, including specification languages like TLA+, P, and Alloy, model checkers, and verification-aware programming languages. He emphasizes that formal methods not only ensure correctness but also help explore optimization options, avoiding the difficult trade-off between correctness and performance.

Read more
Development formal methods