The Engineer’s Dilemma

Engineers, architects, and developers share a common flaw: we hate ambiguity. We build systems based on logic, predictable inputs, and measurable outputs. Yet, the most important metric of our existence—Happiness—is usually treated as a vague, ethereal concept that "just happens."

I don't like things that "just happen." I like things I can track, optimize, and debug.

If life is a system, then Happiness is the output. If the output is inconsistent, the code is buggy. To fix it, I realized I needed to stop treating happiness like magic and start treating it like math.

I developed a simple mental model called the Happiness Formula, and then I wrote a script to run it.

The Algorithm: H = ΣV - ΣF

The core philosophy is binary. There are things that charge your battery, and things that drain it.

The formula is simple:

$$H = (V_1 + V_2 + V_3...) - (F_1 + F_2 + F_3...)$$

You rate every item on a scale of 0 to 100 based on intensity.

If you have a Variable like "Deep Work" that gives you immense satisfaction, it might be a 90. If you have a Friction like "Chronic Back Pain," that might be a -80.

Visualizing the Logic

The goal isn't just to "be happy." The goal is to maximize H.

When you visualize it this way, "getting happier" stops being an abstract wish and becomes an engineering ticket. You either need to push a feature update (add a new Variable) or patch a bug (remove a Friction).

The Build: A JavaScript H-Calculator

I didn't just want a theory; I wanted a tool. I whipped up a high-contrast, dark-mode calculator that allows me to input these values dynamically.

You can host this on GitHub Pages for free. The logic is lightweight. Here is the core function that drives the score:

function calculateHappiness() {
    // 1. Sum up the Variables (The Good)
    let vSum = 0;
    document.querySelectorAll('.v-score').forEach(input => {
        let val = parseFloat(input.value);
        if (!isNaN(val)) vSum += val;
    });

    // 2. Sum up the Frictions (The Bad)
    let fSum = 0;
    document.querySelectorAll('.f-score').forEach(input => {
        let val = parseFloat(input.value);
        if (!isNaN(val)) fSum += val;
    });

    // 3. The Formula
    let h = vSum - fSum;

    // 4. Render the Reality Check
    const resultArea = document.getElementById('result-area');
    
    if (h > 0) {
        // Green: System is stable
        resultArea.style.borderColor = '#00ff00'; 
        msg = "POSITIVE H. Your drivers outweigh your friction.";
    } else {
        // Red: System critical
        resultArea.style.borderColor = '#ff0000'; 
        msg = "NEGATIVE H. Focus on minimizing your top frictions.";
    }
}

Interpreting Your Data (My Score: 35)

I ran my own life through the calculator. I listed my drivers (creative work, family) and subtracted my frictions.

My H-Score came out to 35.

This is a positive integer, which means my system is stable. However, it’s not 100. This tells me that while my variables are strong, my frictions are likely creating too much drag.

If your score is Negative: You are in technical debt. No amount of "positive thinking" (adding small Variables) will fix a massive Friction score. You need to refactor. If your job causes you 90 points of friction, and your weekend hobby only brings 20 points of joy, the math will never work in your favor. You have to remove the friction.

If your score is Positive: You have a surplus. You can now afford to take risks, invest in new skills, or optimize your Variables to push that number higher.

Conclusion

We spend all day optimizing code, refactoring architectures, and cleaning up databases. Why do we accept spaghetti code in our personal lives?

Fork the repo. Run the numbers. Debug your life.

https://github.com/damianwgriggs/The-Happiness-Formula

My Favorite Part: The Art

I made the header image today whilst thinking about this article and my formula. I wanted to have the canvas be yellow to represent happiness. The other colors, black, blue, (and some others I am unsure about) were selected to form a piece that conveys the messiness of happiness. Sometimes there are black spots, sometimes we are blue, but what matters most is that we are yellow (not cowardly lol) more than the splotches that can appear in our life. Below is the original image without the crop:

I would also encourage you to upload to socials and share your results. You can tag me @damianwgriggs!