Tried to read book of The Phoenix Project (Devops), but just found out that it is a novel and give up
4 posts were split to a new topic: Been asked to do a presentation about Elixir - what should I include?
I have been reading books about Ansible recently.
I hope this still counts as dev-related but today was the big day for me when I was presenting to engineers from our various branches about functional programming, Erlang and Elixir I’m trying to get permission to share the recording publicly and if successful, I’ll post it in the thread that was created yesterday!
After being recommended so many amazing resources and talks about Elixir, I’ve been recently spending an obscene amount of time on YouTube listening to all the smart people I really liked this one that I watched a few days ago, not related to a single language in particular, but damn is it a great one!
Oooo I’m going to have to watch that! @russolsen is one of my fave authors and programming heroes
I’ve been doing small projects in Go. It looks really promising for DevOps-stuff, as it’s easy to package everything to a single binary vs. trying to cobble together a zip with Python packages and wondering if the target system has Python 3.1 or 3.8.
The Go AWS SDK is not as intuitive as Boto3 (at least not yet for me), but looks like it will make more sense once I get firmer grasp on the language.
I’ve been investing every tiny bit of spare time (seems that recently, there is a severe lack of those) into finishing the second generation of the Slack translation bot we use in the company, as I’ve seen some fun things happening in production with the first version I guess nothing teaches you about the intricacies and variability of user input than to see what craziness your users come up with
The project is open-source, so feel free to take a look or join me, if this is something that would sound interesting to you!
Let us know what you think! I’m especially interested in how CRC resonates with you.
A probable plurality of my dev time over last week was taken up by analyzing what we could have done better for http://tddconf.com/ (pardon the plug), trying to put it all into words, updating our idea-wiki, and coming up with an idea for a relevant talk of my own for next year. (I was one of the few organizers who didn’t do a talk, I only introduced speakers and rambled on a bit about Mutation Testing to fill some time.) So far I’m thinking a demo of ping-pong pair programming.
Speaking of which, I still don’t see the value of mutation programming. It seems like a program that modifies your program to code that you might never write… so what’s the value of running static tests against such mutating code?
I was able to finish all the features I wanted to have in the next release and while it was quite scary, I deployed the reworked bot into production in the middle of a workday Fortunately, everything went well (so far ) and so my company is now enjoying the new version of a Slack translation bot
The value of mutation testing is in spotting two things: holes in your test suite, and redundant code. If a given mutant (slightly changed version of your code) doesn’t make at least one test fail, you probably have one of these problems.
Now you might think “so a slightly changed version of my code still passes my tests, so what?”. In many cases you’re right, there are often a lot of false alarms. These come from changing code that doesn’t really contribute to the correctness, like the text of a debugging message.
However, if it changed anything that’s really important, then the changed version just might be what you really meant – and might return different answers than your code, for some realistic inputs. (Or, have different side effects – whatever it is your tests look at.) In other words, a bug.
As for redundant code, well, that’s just a drag on the maintenance, more junk to slog through, inspect for bugs, maybe maintain a test suite for, etc. etc. etc.
Still not sure I follow well. The way you present it, it seems mutation testing is used to perfect your unit tests? Kind of shrink them to the minimum viable test that will still reliably pass or fail when presented with the right / wrong input?
I’m also seeing a lot of intersection with property tests, or maybe I’m imagining it. When you do those you directly attack the expected invariants of your function and then you are presented with the exact offending input – so you can change your actual code (not the test).
Haven’t thought about the aspect of getting a slightly reduced test code that still passes and that might mean that the original test is more heavyweight – that one sounds pretty interesting. It’s just that I’m skeptical; how likely is it that you will get that randomly improved test in reality? Did you have such occurrences while using mutation testing?
Well the weather has gone rubbish here again so I’ve been busy catching up with stuff - 1 of the 2 projects that will be getting the Devtalk portal system is done, and I’m halfway through the second one. But I also just started another dev-related project and I hope to share details with you all soon
Just spent some time updating my page to the latest phoenix version and tried the new live view file upload function. Like it a lot
About to finish reading through Elixir in Action (such an amazing book!) and wondering what should I read next
I ordered the paperback edition of this book, will get it by 16 August. Great to see the reviews are all good
Not sure if this system notifies you of replies that create new topics rather than staying in this one, so just popping the link in here: Mutation Testing