Skip to main content
Baldur Bjarnason

I am Uncluttered (Yellow): an ebook on doom-prepping web dev

Baldur Bjarnason

Back in late 2023, I published two separate projects. Uncluttered was a course that promised solve a problem nobody had – how to do test-driven web dev with no framework whatsoever – and the other, Yellow, was a series of recordings that boiled some of the principles that apply to software development down to a series of aphorisms.

Neither project was outright bad or broken, but they were like a knife cutting at the wrong angle. There was nothing wrong with the tool, I was just telling people to use it wrong, so neither worked particularly well for their target audience.

Yellow lacked concrete examples that would have helped drive home the importance of the principles being described.

Uncluttered lacked the theories and principles that demonstrated the broad applicability of the ideas it outlined.

That I originally published both at the same time, without realising my mistake, is outright embarrassing, but it’s a mistake I’m fixing.

The cover to 'I am Uncluttered (Yellow)'. It is very yellow

Later this week I’ll be publishing I am Uncluttered (Yellow): doom-prepping web dev through disdain, disrespect, and doing the right thing, which is a revised and substantially extended combined second edition for Uncluttered and Yellow.

I dropped the course and recording aspect of both and treated the original texts as very rough first drafts that got edited, rewritten, and revised into a new book that is over 37 000 words or 221 pages, substantially longer than Uncluttered and Yellow combined, and the it tackles a much simpler question:

The web dev industry is in ruins. Funding is gone for open source. Team sizes are collapsing. Everybody’s job is degrading into becoming the meat puppet for a stochastic parrot. The job market is a shambles. We’re fucked…

Now what?

Well, you figure out how to rebuild and to do that you need to do an inventory.

I am Uncluttered (Yellow) has an overview of some of the most important principles in management, software development, and systems-thinking, combined with a study of the feature of JavaScript that is simultaneously its greatest advantage and its greatest disadvantage, a high level overview of some of the basic principles of test-driven development as applied to web dev, some ideas how to tackle JavaScript dependency hell, as well as an appendix that outlines some of the simplest possible dev tools that still might work for you.

But, more importantly, it does not engage in false positivity.

We are fucked. These are genuinely horrendously bad. Trying to pretend that something as neat as import maps or something as useful as test-driven development can pull the industry out of the hole its in serves nobody.

The book is forthright to a fault. If something is shit, you get to hear why it’s shit. There will be no pretending that using this framework or knowing that tool will save your job. It might be useful in the next job, but the shit that’s happening this year is baked in and all we can do is decide for ourselves how long it’ll be safe for us to stay on this particular career roller-coaster.

Whatever happens next, the ideas and practices here will be helpful and, more importantly, they are ways of doing more with less: fewer team members, fewer resources, less code, and less work.

It’s geared towards web and Node developers as over half the book covers issues specific to JavaScript.

It’s the spiritual successor to my first book Out of the Software Crisis, except this time the target audience is specifically people like me: those who are getting screwed over by a sinking web industry.

I’ll be releasing the book later this week at €35 (PDF and EPUB formats included). This week’s ongoing theme of “doom DOOOOOM!” fits the vibe of the book perfectly.

I’ll announce the release both on my website and on the newsletter so you shouldn’t miss it if you’re seeing this. But if you want to get a series of preview excerpts over the next few days, you can subscribe to the launch announcement mailing list.

Subscribers to either the main newsletter or to the announcement mailing list below will get a €5 “early adopter” discount on their purchase.

Subscribe to the launch announcement mailing list:

    The cover #

    The cover to 'I am Uncluttered (Yellow)'. It is very yellow

    Preliminary Table of Contents #

    (I reserve the right to change any of the chapter or section titles if I think of something smarter or funnier (to me, funnier to me (wow this is turning into an S-expression bonanza (please send me my honorary Comp. Sci degree for inventing yet another bullshit LISP to… (see, this is why they invented a bunch of other punctuation marks for print (this shit is absolutely unreadable, how did anybody think this was even remotely okay? (there’s something seriously wrong with this entire field)))))))

    PART ONE: INTRODUCTION #

    1. What this book is for
    2. Let’s be honest, this industry is a joke anyway
    3. Worse is better, but it’s also how we made this mess
    4. Sometimes software just isn’t right

    PART TWO: PRINCIPLES AND SHIT #

    1. Fear is a signal
    2. Always maximise your understanding
    3. Technology changes more slowly than you think
    4. Gall’s Law
    5. Widely used standards
    6. Correct and incorrect
    7. Just-in-time research
    8. Don’t tinker
    9. Don’t try to solve every problem
    10. Don’t over-engineer basic setup
    11. You’re going to need a web server
    12. The browsers are our runtime
    13. On code smell and gut feeling
    14. Avoid state management
    15. UX bugs versus complexity
    16. Throwaway prototypes
    17. Don’t be a correctness bully
    18. Premature optimisation

    PART THREE: LATE FUCKING BINDING #

    1. The mess we’ve made with JavaScript
    2. The mess we’ve made with TypeScript
    3. JavaScript modules are great, but also a little bit broken
    4. The troubled history of standard JavaScript modules
    5. We can do better than this shit
    6. Managing dependencies in code is bad
    7. Import maps make ES modules late-bound
    8. We can use import maps today
    9. A new primitive for decoupling JavaScript modules

    PART FOUR: BEING TEST-DRIVEN #

    1. The two questions
    2. WTF is test-driven development? (Really)
    3. Planning
    4. Where to begin?
    5. The actual code is just a small part of the job
    6. And we’re d—oh, wait, there’s more?
    7. Classicist testing
    8. Mockist testing
    9. Which school to choose?

    PART FIVE: FUCKING DEPENDENCIES #

    1. We have to talk about dependencies
    2. Consider avoiding external dependencies altogether
    3. Implicit dependency testing
    4. The Mockist approach
    5. Update and test one module at a time
    6. Split your dependencies into layers

    PART SIX: IN THE END IT’S ALL PRACTICE #

    1. I am Uncluttered
    2. (Yellow)

    APPENDIX: TECHNICAL SHIT #

    1. Set up a web server (or, don’t just curl|sh random scripts)
    2. Browser Launch Scripts
    3. An HTML File for Launching Mocha
    4. Mocking Sources of Randomness and Time with Import Maps