Skip to content
View stroiman's full-sized avatar

Organizations

@gost-dom

Block or report stroiman

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don't include any personal information such as legal names or email addresses. Markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
stroiman/README.md

Hi 👋

I'm Peter Strøiman, a senior freelance software developer with 25+ years of professional experience (yes, getting old).

I'm a long time TDD practitioner. Learning TDD has by far been the most important skill I've learned. But I was never taught TDD properly; I had to discover that for myself over the course of many years.

My most recent project, Gost-DOM is born from the lack of a tool for a proper TDD process.

  • 🔭 I’m currently working on
    • Gost-DOM - A Headless browser for Go. Off-shot projects
      • webref - Expose Web IDL specs as native Go objects (used for codegen in Gost-DOM)
      • generators - Code generation helper library
      • Surgeon - Surgically replace dependencies for test cases
    • Muxify - A tool for managing TMUX sessions.
    • Speed - An OCaml unit test framework. Ok, hasn't had updates for some time ...
  • 🤔 I’m looking for help with Gost-DOM. Although I have a lot of web experience, having experts on the topic of how browsers work internally could help me avoid mistakes.
  • ❤️ What I love
    • Open source software
    • Making solutions that solve real problems.
      • No, I don't give a s*** about requirement specs
      • I care about what the users actually needs, what problems they have that we can solve with software.
    • Finding simple solutions to complex problems
    • Eliminating unnecessary complexity
    • TDD - I believe this is the most important skill you can learn to increase productivity.
  • 💬 Ask me about ...
    • Anything programming related
    • TDD - Too many get it wrong, making it hard to learn (you learn the wrong things)

TDD

The fast feedback cycle allows you to work in small increments, discovering invalid assumptions early, and truncating an unproductive path.

Modern web development frameworks typically have live-reload functionality meaning, you see the changes as soon as you save your work.1 This is invaluable when working with UI code; as you get immediate visual feedback on every file save.

It's the feedback loop that's important; and that's the essence of TDD, setting up a feedback loop. But instead of a visual feedback loop; you set a set of logical expectations, something describing the desired behaviour of the system, preferably with sub-second feedback.

The short feedback encourages short small increments, which in turn increases productivity. That is why TDD isn't just about preventing the feature today from breaking tomorrow. It is about working more effectively already from day one.

All the same, they allow you to refactor safely. You can extract abstractions when you discover them; or remove them when they are no longer useful.

Gost-DOM

Gost-DOM is my most ambitious open-source project to date, and was started, as I lacked a tool to provide fast and relevant feedback for HTMX applications.

Gost-DOM is a headless browser written in Go, i.e., a Go module (or library) that produces a browser-like environment including a JavaScript engine. By cutting out the overhead of a real browser, Gost-DOM is so fast, that it can provide usefule feedback while implementing the behaviour of web applications written in Go;

Lover of Open-Source

The software development ecosystems has seen a dramatic change during my career. In the early days, development tools were typically commercial products, as were 3rd party components. Updates were months in between, and software was delivered on physical media, Compact Disk or even Floppy Disk. And you didn't get the source code.

Today, you can build higly scalable web applications, as well as native GUI applications, exclusively using free and open-source software. This is a dramatic change to the life a software developer;

I owe so much to open-source, and I do what I can to give something back!


Footnotes

  1. I remember working with NCrunch, a Visual Studio plugin that would execute your test suite as you were typing, didn't even need to save the files. Pretty awesome, but an unfortunate side effect was that we often forgot to save after the test passed. This was a little too fast (Ps, if anyone from that company read this, and you still maintain the product. Run the tests; but don't show the result until the user saves. Gives the impression of an even faster test run).

Pinned Loading

  1. gost-dom/browser gost-dom/browser Public

    Headless browser for Go for TDD workflows

    Go 236 9

  2. muxify muxify Public

    tmux session organiser

    Go 12

  3. opam-speed opam-speed Public

    Unit test framework for OCaml

    OCaml 12 1

  4. obsidian-dev-publish obsidian-dev-publish Public

    Obsidian plugin to publish to dev.to

    TypeScript 6 1

  5. obsidian-frontmatter-smith obsidian-frontmatter-smith Public

    Obsidian plugin to automate often used and trivial frontmatter values

    CSS 4