A software engineer website

Blockchain

Plutus: Pioneers Program 4th cohort - Lecture 10 - Built with plutus -

Plutus: Pioneers Program 4th cohort - Lecture 9 - Stablecoin -

Plutus: Pioneers Program 4th cohort - Lecture 8 - Staking -

Plutus: Pioneers Program 4th cohort - Lecture 7 - Marlowe and hosted smart contracts -

Plutus: Pioneers Program 4th cohort - Lecture 6 - Testing -

Plutus: Pioneers Program 4th cohort - Lecture 5 - Minting -

Plutus: Pioneers Program 4th cohort - Lecture 4 - On-chain/Off-chain smart contract code and indexers -

Plutus: Pioneers Program 4th cohort - Ouroboros -

Plutus: Pioneers Program 4th cohort - lecture 3: Tests, Times, and Dapps -

Plutus: Pioneers Program 4th cohort kick start -

career

The end of a 666 days streak -

Code practice

Fizzbuzz kata: branchless version -

Game of Life kata: branchless Grid -

TDD: optimizing for inputs vs for outputs -

GDCR 2022: My feedback -

GDCR 2023: My participation summary -

Design

Write for debug -

dev

Introduction to GHC's Generics -

Fix aeson ToJSONKey/FromJSONKey derivation -

NeoViM: Improve Telescope (last edited) find files -

Access Control: Biscuit -

Access Control: topaz -

Access Control: Open Policy Agent -

Access Control: Capabilities -

Access Control: Mandatory vs Discretionary -

Access Control: Relationship-based Access control -

Access Control: Organisation-based Access control -

Access Control: Graph-based Access control -

Access Control: Attribute-based Access control -

Access Control: Role-based Access control -

Access Control: Context-based Access control -

Access Control: ACL -

From custom Monad to Polysemy -

Implementation-oriented Monad -

Haskell Type Reflection Anti-pattern -

QuasiQuoting Smart Constructors -

Nix: optimizing Haskell build size -

Witness functions -

Test-Driven Development Freedom -

What a good design is -

My history with ViM -

Dependencies management -

A case against Haskell immersion -

My encounter with Caddy -

Bloodhound redesign progress -

Haskell macros -

Nix: optimizing Haskell-based Docker-size -

New library: kill-bool -

Abaks: OpenAPI -

Abaks: Views -

Abaks: A word on testing -

Abaks: Drivers -

Abaks: Interface Adapters - API -

Abaks: Testing Use Cases -

Abaks: Use Cases -

Abaks: testing core domain -

Abaks: commands -

Abaks: events -

Abaks: initial requirements -

Zsh: debugging git remotes completion -

Language tourist -

FOSS

Hacktoberfest 2023: My contributions -

Haskell contributions kick-start -

Contributors management -

Hacktoberfest 2022: My feedback -

Hacktoberfest 2022: My contributions -

Haskell

Polysemy: Scoped -

Polysemy: Opaque -

Polysemy: Onion architecture -

Polysemy: Design heuristics: Hiding vs Exposing -

Polysemy: Design heuristics: Dispatcher -

Plutus: Pioneers Program 4th cohort - Lecture 10 - Built with plutus -

Polysemy: Design heuristics: Hiding interpreters -

Plutus: Pioneers Program 4th cohort - Lecture 9 - Stablecoin -

Plutus: Pioneers Program 4th cohort - Lecture 8 - Staking -

Polysemy: 1.9.0.0 released! -

Plutus: Pioneers Program 4th cohort - Lecture 7 - Marlowe and hosted smart contracts -

Plutus: Pioneers Program 4th cohort - Lecture 6 - Testing -

Polysemy: Design heuristics: Grouping interpreters -

Plutus: Pioneers Program 4th cohort - Lecture 5 - Minting -

Polysemy: Design heuristics: Effects layering -

Plutus: Pioneers Program 4th cohort - Lecture 4 - On-chain/Off-chain smart contract code and indexers -

Polysemy: Design heuristics: Split by responsibility -

Plutus: Pioneers Program 4th cohort - Ouroboros -

Polysemy: Design heuristics: IO hunting -

Plutus: Pioneers Program 4th cohort - lecture 3: Tests, Times, and Dapps -

Polysemy: Async gotchas -

Plutus: Pioneers Program 4th cohort kick start -

Polysemy: Strategy internals -

Polysemy: Changing return -

Polysemy: IO -

Polysemy: NonDet -

Polysemy: AtomicState -

Polysemy: Fixpoint -

Polysemy: Bundle -

Polysemy: Higher order Effects and combined interpreters -

Polysemy: Final vs Embed -

Polysemy: Tactics binding deprecated workaround -

Polysemy: Tactics binding -

Polysemy: Strategies binding -

Polysemy: Async -

Polysemy: Higher-order effects with Final -

Polysemy: Final -

Polysemy: Higher-order effects introductions -

Polysemy: Input -

Polysemy: Embed -

Polysemy: Interceptors to buffer -

Polysemy: Introduction to Interceptors -

Polysemy: Tagged effects -

Polysemy: Interpretation and effects inline injection -

Polysemy: Interpretation and effects injection -

Polysemy: Introduction to Effect interpretation -

Polysemy: Introduction to Effect definition -

Polysemy: EffectRow design -

Polysemy: EffectRow -

Polysemy: Introduction to interpreters -

Polysemy: An introduction -

ops

Homelab: Monthly certificate regeneration deployment issue -

Homelab: client certificates CRL regeneration -

Homelab: Monitoring Withings -

Announcing grafana-dashboards.nix -

Homelab: Monitoring alerting through AlertManager -

Homelab: Monitoring alerting -

Homelab: Monitoring dashboards -

Homelab: Monitoring introduction -

Homelab: Secrets management -

Homelab: Regenerating certificates -

Homelab: Intermediate CA -

Homelab: client certificates -

Homelab: server certificates -

Homelab: current state and plan -

Software engineering

OOP has not invented encapsulation -

Types for building and types for running -

Types strengthening -

eDSLs for tests -

Type-driven development applied: librarian -

Types and Tests -

Architecture Heuristic YNIA: Events metadata -

Haskell: imports vs exports -

Haskell refactorings -

Bypassing Prometheus SDK push model -

Naming has a social convention -

Prescriptivism and Descriptivism -

Software inventory -

Screaming Architecture -

Personal README -

Architecture Heuristic YNIA: Participants -

Architecture Heuristic YNIA: Queues -

Team owned architecture -

Design for collaboration -

A reasonable hiring process -

Retrospective of my first CTO experience -

Local vs Global optimum -

Problems before solution -

User Driven Design -

Time sensitive

Initial log -