Haskell Legacy: Extracting business logic and introducing effects
One of the issue of our API is the direct implementation of the "business logic" (which is quite thin and coupled to the persistence) direct… ...more
One of the issue of our API is the direct implementation of the "business logic" (which is quite thin and coupled to the persistence) direct… ...more
In the previous log, we have seen a legacy API to create trains and book/withdraw tickets. Whenever I land in a new codebase I have to work on, I try … ...more
A long time ago, I was asked to write on polysemy and Yesod integration, on another hand, I was also asked on the best way to migrate from regular, st… ...more
Few weeks ago I was Software teamming/mob programming on the Poker Hands kata. I'm used to doing pair programming with entry/mid-level software develo… ...more
When I was younger, I was focused on competitive programming, not a lot, but way more than in the last decade, at some point, I have attended to Prolo… ...more
Ten days ago I have attended to Haskell Ecosystem Workshop followed by ZuriHac. It was my first participation to both events (last year, due to confli… ...more
A while ago I have decided to do a 666 days streak of contributions on GitHub. It was mostly for fun, but also to have a call-to-action for contribut… ...more
In my previous log, I have focused on an annoying aeson, I have mentioned that it was involving some GHC's Generics code which were too complex for th… ...more
In Haskell, we have aeson which is a library providing reading and writing JSON. It's mainly done through two type classes: ToJSON/FromJSON. We can ea… ...more
A well known code kata is the fizzbuzz, it can be described as follows: For any strictly positive number, if the number is a multiple of 3 display Fi… ...more
Few days ago, I was watching a talk in which the speaker was presenting the history of the software engineering field of the last fifty years. At some… ...more
Since I have introduced Type-Driven Development, I have applied it to business logic, to tests, to interfacing, now I want to distinguish types by usa… ...more
In a previous log, I have introduced librarian, as an example of Type-Driven Development. For a reminder, we had "complex" types: -- GADTs d… ...more
In the previous log, I have introduced librarian, as an example of Type-Driven Development. Last log ended up with time-related feature. For reference… ...more
In my previous log I have introduced Type-Driven Development, it was an overview of how I practice. I feel the need to show concretely how it works. A… ...more
There is a bit of hype around Test-driven development (TDD) these years (I am clearly biased since that's one of my meetup group focus). The idea behi… ...more
A while ago, I have continued with YNIA, which is a set of patterns I set up before really need them. I work a lot (and enjoy working with) Event Sour… ...more
Haskell modules are defined with: Imports Exports Extensions/flags Code When I build a module, I think in terms of interface, that's why I enumerate… ...more
I was looking through Martin Fowler's refactorings list which is heavily OOP/Imperative-oriented. There are currently 66 refactorings: 27 are focused… ...more
I have talked in an earlier log that I have set up business monitoring which has led to interesting conversations with the stakeholders. I have used p… ...more
Few months ago, I have joined GDCR, ending the day with a software teaming in F#, with one letter identifiers as a constraint. The goal was to work on… ...more
A long time ago I was watching another version of Romeu Moura's Prescriptivism vs Descriptivism. The idea is illustrated by the point of view you can … ...more
A while ago, I had a meetup with Woody Zuill, after the Software Teaming session, he has stated that "most companies are bad at Software Inventor… ...more
During my participation to the last Global Day of Code Retreat one of the participant came into our room (where we were doing some software teaming, b… ...more
Few days ago I was reading again Kent Beck's Extreme Programming Explained, and I have recalled How to make your team read your mind. While I have nev… ...more
Sometimes ago I have stated I was using ViM. After Bram Moolenaar's death, ViM's future was changed and I could not hope for Tree-sitter integration a… ...more
Some times ago we have seen Capabilities, the idea is simple: you have a token (e.g. a string), you provide as a key to to lookup associated permissio… ...more
In the last log, we have studied Open Policy Agent which introduced Policy-as-code, sadly, we cannot easily represent ReBAC with it. That's where topa… ...more
After introducing DAC, we have proposed capabilities. Our implementation was really simple and purely in-memory. Hopefully there are implementations w… ...more
In the previous log, we have introduced DAC, I have stated that ownership is not the only way to do it. Let's introduce Capabilities. The basic idea i… ...more
We have seen many schemes since the first log of the series. Most of the time, our draft implementations were focused on the user/actor. That's called… ...more
Finally, here comes the scheme I have discovered and mentioned in the first log of the series: Relationship-based Access control. This idea is simple:… ...more