Markus Schirp Profile picture
Oct 14 24 tweets 3 min read Read on X
Mutant story/news time, thread:
Mutant, my brainchild in the Ruby ecosystem, was born out of sheer frustration in 2012 while I was deep in the trenches of the DataMapper 2 (DM2) project, an ORM built on the Axiom relational algebra engine.
I was working alongside the datamapper team most notably Dan Kubb (@dkubb), the author of Axiom, which used heckle, an older (1.8 only) mutation testing engine. Heckle was not up for the task to efficiently handle a project as big as Axiom or DataMapper 2.
@dkubb In particular Heckle couldn't handle Ruby 1.9, leaned on the lossy ripper parser, and its source-to-source transformations were too leaky for the precision mutation testing demands.
@dkubb Also important features such as automated test selection, incremental mutation testing and concurency where absent. So, I set out to build Mutant, pouring my energy into creating a tool that could deliver sharp, reliable mutations for Ruby's wild syntax and dynamic types.
@dkubb I started to use the rubinius parser with a custom `to_source` gem, which later evolved into using `parser` ( and `unparser` (also my project), a round-tripping code generator that, to my knowledge, remains the most complete of its kind.
@dkubb Unparser was and is was no small feat, but it laid the groundwork for Mutant's precision. Only tool that I know that can round trip rubyspec ;)

In addition unparser is used for lots of commercial code generators outside of mutation testing, but I digress.
@dkubb At first, Mutant was a deeply personal project, built for my own needs and those of my tight-knit group of collaborators. It wasn't about mass appeal, it was about getting the job done right for high-stakes Ruby projects.
@dkubb I was in my early 20ies, had an early kid, some bad paying EU software contracts and lots of OSS (datamapper).

Things where good, but not as good as they should have been with that skillset.
@dkubb Now mutant usage increased and a certain US-based consultancy used it a lot to rescue Ruby projects, bug reports came in, feature request and in the end they just hired me. I finally made good money ;)
@dkubb Mutant proved its worth, not just as a tool but as a career-defining asset that since that moment replaced the need for formal interviews, I've never done any, nor submitted a CV or even applied for a job.
@dkubb That consultancies projects pushed Mutant to mature, spawning or hardening features automated test selection, git-integrated incremental testing, and rock-solid parallelism. While Mutant became a trusted ally in expert circles, its broader adoption stalled.
@dkubb Due to my focus on functionality over marketing and onboarding. Being open-source, it consumed my time, but it was always about solving real problems for me and my crew. So I rigorously optimized mutant for my own group not giving a 2nd thought about adoption.
@dkubb Over time my consulting business shifted away from Ruby so I transitioned mutant to a commercial license.

This allowed me to have a reason to still support it, and it accumulated a small but productive / professional userbase I did not want to let sit in the cold.
@dkubb Now, as Mutant evolved into a commercial product I've been slowly building back the "medieval fortress" onboarding mutant was, but my own efforts are not enough I need help.
@dkubb Thanks to countless chats with Andrzej (@andrzejkrzywda), whose infectious enthusiasm for Ruby's potential has always inspired me: The solution is clear: A partnership.

He and @arkency have a strong history in not just writing Ruby but actually explaining advanced tools!
@dkubb @andrzejkrzywda @arkency Not only has Arkency written the majority of all Mutant content out there, mutant was for years part of their courses.
@dkubb @andrzejkrzywda @arkency They've spent years turning complex ideas like Rails Event Store, CQRS, and DDD into real-world, production-grade patterns for teams worldwide.

So whats going to happen:
@dkubb @andrzejkrzywda @arkency Together, we're building not just onboarding material, but a knowledge base and ecosystem that helps Ruby developers, new and experienced alike, master mutation testing. Their track record is exactly what Mutant needs to reach its next phase.
@dkubb @andrzejkrzywda @arkency So what is the next phase:
@dkubb @andrzejkrzywda @arkency My vision is for Mutant to become a cornerstone for Ruby teams, human or AI-driven, who care about bulletproof code.
@dkubb @andrzejkrzywda @arkency In a world where AI churns out code faster than we can blink, Mutant's ability to rigorously test and verify that code against specs, bacting as a high-performance self-tes, feels like its next calling.
@dkubb @andrzejkrzywda @arkency </story>

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Markus Schirp

Markus Schirp Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @_m_b_j_

Jan 15, 2021
Okay so I cannot resist to do another thread on what mutation testing does for a development cycle.

Probably this should be a blog post.

I'll use a Ruby example, but the takeaway is valid for other mutation testing engines.

The example is here.
Lets explain the Ruby APIs for a sec, for the non Ruby followers.

`Hash.new` takes a block (think of it like a lambdaish thing), with 2 arguments, the hash itself and a key.

This block gets invoked whenever you read a missing key from the hash.
The return value of the block will be returned to re call side of `#[]`. The block can have side effects (Ruby is not pure).
Read 14 tweets
Apr 4, 2020
I'm 10y remote now and 99% of all interactions with my heavy remote / async teams are NOT done with calls / video.

It almost all in writing.

Everyone right now trying to optimize for voice / video communication is optimizing into the wrong thing.
Human voice communication, especially for software development has the following flaws:

* Cannot be directly searched without transcribing, which ads more overhead.
* Cannot express code examples
* Does not scale efficiently with the number of people communicating
The latter is mostly because human voice communication is not multiplexable. Communication efficiency using human voice as medium goes down far faster than writing.
Read 19 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us!

:(