Eventual Consistency Primer

The Eventual Consistency primer introduces eventual consistency and explains some ways to use it. This primer uses the CAP Theorem to highlight the challenges of maintaining data consistency across a distributed system and explains how eventual consistency can be a viable alternative. In an eventually consistent database, simultaneous requests for the same data value can […]

Continue Reading

Game Design: Howard’s Law of Occult Game Design

Howard’s Law of Occult Game Design (or just The Law of Occult Game Design or Howard’s Law) can be expressed as a formula: “Secret Significance ? Seeming Innocence × Completeness.” Translated into everyday speech, this equation means that the power of secret significance is directly proportional to the apparent innocence and completeness of the surface […]

Continue Reading

Leadership Principles

Leadership is founded on holding and executing certain principles—namely, the notions of trust, vision, safety, and clarity. Establish Trust Leadership is a learned skill. Some people have a natural tendency to lead, whereas for others it is a struggle. Leadership is all about trust. Trust is in the examples we set for others and the […]

Continue Reading

Skyscrapers Aren’t Scalable

WE OFTEN HEAR SOFTWARE ENGINEERING COMPARED to building skyscrapers, dams, or roads. It’s true in some important aspects. The hardest part of civil engineering isn’t designing a building that will stand up once it is finished, but figuring out the construction process. The construction process has to go from a bare site to a finished […]

Continue Reading

Make the Invisible More Visible

MANY ASPECTS OF INVISIBILITY are rightly lauded as software principles to uphold. Our terminology is rich in invisibility metaphors—mechanism transparency and information hiding, to name but two. Software and the process of developing it can be, to paraphrase Douglas Adams, mostly invisible: Source code has no innate presence, no innate behavior, and doesn’t obey the […]

Continue Reading

Clever Code Is Hard to Maintain

DEVELOPERS ARE OFTEN ASKED TO CREATE MIRACLES. They must find clever ways to make today’s project code work with yesterday’s antiquated legacy software containing multiple patches. And through skill and ingenuity, they may create numerous lines of clever code that finally get the job done. But clever code may only create future maintenance problems due […]

Continue Reading

A Project Depends on Teamwork

A PROJECT IS AN ENDEAVOR OF A MULTIDISCIPLINARY NATURE. It can be seen as a collective effort, jointly performed by people of great diversity. Once deployed according to their own unique skills and competencies, and properly coordinated, team members are able to produce major results and fulfill the expectations of the project’s stakeholders. If we […]

Continue Reading

Great Software Is Not Built, It Is Grown

AS AN ARCHITECT, you are tasked with providing the initial structure and arrangement of software systems that will grow and change over time, will have to be reworked, and will have to talk to other systems—and almost always in ways you and your stakeholders did not foresee. Even though we are called architects, and we borrow […]

Continue Reading

How to make good decisions

In the process of writing this article, I interviewed more than a dozen project managers. One question I asked was how to make good decisions. Their answers included weighing options, defining criteria, and seeking out different ways to resolve the situation at hand. But when I asked how many decisions they made a day, and […]

Continue Reading

DRY Don’t Repeat Yourself

OF ALL THE PRINCIPLES OF PROGRAMMING, Don’t Repeat Yourself (DRY) is perhaps one of the most fundamental. The principle was formulated by Andy Hunt and Dave Thomas in The Pragmatic Programmer, and underlies many other well-known software development best practices and design patterns. The developer who learns to recognize duplication, and understands how to eliminate […]

Continue Reading

Monogame: Particle systems

Understanding particle systems In its simplest form, a particle system is a collection of primitives. The primitives within a particle system are known as particles. All the particles in a particle system have a common set of properties, such as life span, size, rate of change in size, and speed. By manipulating these properties in […]

Continue Reading

Before You Refactor

AT SOME POINT, every programmer will need to refactor existing code. But before you do so, please think about the following, as this could save you and others a great deal of time (and pain): The best approach for restructuring starts by taking stock of the existing codebase and the tests written against that code. This will […]

Continue Reading