I worked from 9:30 am till about 11:pm, got a LOT done for some new work that we had agreed, and it was hard stuff too. Then got up to an email from client that says after our meeting he spoke to his boss and "they understand the system much better" oh no... Turns out everything he had told me at meeting was nonsense and I need to redo it all again... FML
The annoying thing is, did he sit in our meeting and think "I'm bullshitting here... I better check what i said", and yep he was bullshitting
Oof, I hate it when games of telephone cause waves of miscommunication like that
Sounds like the boss needs to be in future meetings
Iteration is part of the job, transparency also... if he were not sure it should have said, but that's not the behavior of most people... in the other hand, sharing doubts are often not welcome when it come to the dev I work with
Today this jvm fuzzer popped up in HN https://github.com/CodeIntelligenceTesting/jazzer I've never completely understood what a fuzzer does (is it like :clj: generative testing? or much lower-level with a different reach?). Would this be of any use for us clojurists?
generative testing (aka property based testing) generates random structured data for testing, in order to do that is uses some description of the structure (types, clojure.spec, etc) to figure out what to generate
fuzzers tend to be at the level of generating random patterns of data in memory
which might lead one to describe fuzzers as "low level", but a lot of fuzzers are very sophisticated, doing analysis of either completed program runs, or even instrumenting the program to watch it run, to determine what inputs are likely to hit bugs
afl is, to my mind, magic https://github.com/google/AFL#2-the-afl-fuzz-approach
I am kind of curios about jazzer, just because fuzzing in my mind is very tied to making random arbitrary patterns of bytes in memory, and passing them to code that doesn't expect it, which is not something a managed runtime like the jvm which its runtime enforced typing typically lets you do
I don’t know specifically what jazzer does, but it’s possible to apply the same concept in a more structured way: function x takes an integer and a string, so run it with a bunch of random integers and random strings to see what happens
For those of you doing web development in CLJ - is it single-page applications? Microservices at server side? Are microservices and SPAs a good fit?
We have a mixture of SPAs and SSRs. Our main customer-facing app is a React/JS front end with a Clojure REST-like API on the backend, but our Login and Billing apps are SSR (with Selmer/Compojure and Selmer/Bidi respectively).
That React app also talks GraphQL to a separate backend Clojure app (for real-time chat).
"Microservices" is a bit of a nebulous buzzword in my opinion.
yes, which is what property testing or generative testing libraries like test.check or quickcheck do.
Not exactly a fuzzing library, but one I was delighted to read about — a repo of “naughty strings” that have high likelihood of crashing programs. https://twitter.com/i/web/status/1090631220029882369
by “delighted,” I mean, of course, “nervous laughter, thinking my code in all likelihood would crash, too.” 🙂
Wait, is it safe to click that link in my browser? 🙂