Sign in

borar

@borar.bsky.social
84 followers 56 following 181 posts
PostsRepliesMedia
Reposted by borar
Haskell programming language @haskell.org · 02/07/2026
Hyperbole 0.7 has been released! The HTMX-inspired framework for interactive web applications now supports multipart file uploads. discourse.haskell.org/t/ann-hyperb... #Haskell
discourse.haskell.org
[ANN] Hyperbole 0.7 - Multipart form file uploads, immediate triggers
hyperbole.live github hackage There were many changes and improvements, but the biggest new feature is Multipart Form file uploads. It works with the default settings using a secure configuration, bu...
0103
Reposted by borar
gabby @fullmoon.id · 23/06/2026
I wrote up a post that explains how type inference for anonymous records works, including row polymorphism The post is also a gentle introduction to type theory for newcomers: haskellforall.com/2026/06/reco...
haskellforall.com
Record type inference for dummies
Gentle tour of type inference for records
18412
borar @borar.bsky.social · 19/06/2026
Another approach for early returns in #fsharp, but specifically for Async computations: gist.github.com/Savelenko/5e...
gist.github.com
Async with early return capability CE for F#
Async with early return capability CE for F#. GitHub Gist: instantly share code, notes, and snippets.
252
borar @borar.bsky.social · 09/06/2026
Blog: Basic principles of record storing systema10.org/posts/basic-... #eventsourcing
systema10.org
Basic principles of record storing
110
borar @borar.bsky.social · 08/06/2026
A new blog article where I go against the de facto normal: "Event sourcing is record storing" #eventsourcing systema10.org/posts/event-...
systema10.org
Event sourcing is record storing
111
borar @borar.bsky.social · 27/11/2025
I think #eventsourcing is a bit of a misnomer resulting in much noise and confusion. I've always used the terms "record" and "journal" and propose "record storing" (RS) instead.
000
borar @borar.bsky.social · 02/04/2025
While I understand the good intentions behind such reocurring statements, I am less careful and "politically" balanced: #fsharp is absolutely inherently better. The "needs" are irrelevant, objective properties are what matters in engineering. Just like precise power tools vs manual mediaval tools.
260
borar @borar.bsky.social · 10/03/2025
Functional programming and its idioms are the most fitting and sensible interpretation/realization of #eventsourcing. Fold multiple composable values of types provided by the layered model, alongside the use-case specific version, apply model logic, store a new record. "Aggregates" are a mistake.
020
Reposted by borar
Anupam 🇮🇳《ミ》λ≡ @aj.social.id1.in.ap.brid.gy · 09/03/2025
Why would people use other programming languages for frontend dev when #PureScript is just right there? #FunctionalProgramming
111
borar @borar.bsky.social · 10/03/2025
I think I understood the popularity of "modern" as a term. It embodies the implicit and unconcious understanding that most of the (visible online) software industry is a web of ad-hoc, anti-fundamental knowledge, hype-driven, half-assed ideas which break easily. Then its on to the next "modern".
010
borar @borar.bsky.social · 27/02/2025
My 5c about this, as always somewhat heretical. "Bounded context" is vague and not really interesting/useful. Vertical slice architecture is not an architecture, but a principle *within* an architecture. In particular, in the Onion architecture (my default). #DDD 🔽
110
borar @borar.bsky.social · 21/02/2025
Only if you are making a fat client and the back-end is merely a thin layer between it and the DB and other infra.
000
borar @borar.bsky.social · 20/02/2025
Maybe thou pure just followeth m, returneth to sanity of m.
000
Reposted by borar
Alexandru Nedelcu @alexn.org · 10/02/2025
Why Blog If Nobody Reads It? “You write because you think, because you observe, because you need to put it somewhere.” andysblog.uk/why-blog-if-nobody-rea…
031
borar @borar.bsky.social · 30/01/2025
Planning to write a blog post "Using row types for handling events raised by Web Components". #purescript
010
borar @borar.bsky.social · 21/01/2025
I wrote about using GADTs in a design for #eventsourcing API in a #haskell back-end. Somewhat related to the recent post by @mattoflambda.bsky.social systema10.org/posts/making...
systema10.org
Making my life easier with two GADTs
020
borar @borar.bsky.social · 15/01/2025
Working on refining my #eventsourcing design/template for #haskell applications. Using GADTs we can turn on or off optimistic concurrency check using "global" journal versions. Depending on the on/off setting, the "concurrent change detected" outcome becomes impossible and need not be handled.
040
borar @borar.bsky.social · 10/01/2025
Streams per entity are fundamentally in conflict with the basic essence of #eventsourcing. The essence being that we can compute *anything* by folding all records. Counter-example: find all customers in a system where each customer has a dedicated journal/stream by customer ID.
100
borar @borar.bsky.social · 10/01/2025
I made a demo about working with different error types and the Result type in F#. #fsharp gist.github.com/Savelenko/23...
gist.github.com
F# Result error merging with IWSAMs
F# Result error merging with IWSAMs. GitHub Gist: instantly share code, notes, and snippets.
0142
borar @borar.bsky.social · 01/01/2025
Is the cabal 'data-files' machinery useful for static files needed by a Haskell Web application, for example CSS, JS and similar? What are best practices for "packaging" together the latter and the build product of cabal? A build system on top of cabal? #haskell
010
borar @borar.bsky.social · 28/12/2024
Beyond basic programs, HM-like type systems can be quite mysterious and awesome. The definitions and types of the #purescript functions below look strange at the first sight. I wonder how IWSAMs will fare when ported to #fsharp.
030
Reposted by borar
gabby @fullmoon.id · 20/12/2024
Just uploaded a new release of the `foldl` package. This release has a bunch of new instance and utilities added by one very helpful outside contributor (Topsii): hackage.haskell.org/package/fold...
hackage.haskell.org
Changelog for foldl-1.4.18 | Hackage
0121
Reposted by borar
Tomas Latal @tomaslatal.cz · 19/12/2024
We are looking for Haskell developers for Scrive as well :) EU based dev - Remote. careers.scrive.com/jobs/5365423...
careers.scrive.com
Haskell Developer - Scrive
Join Scrive and be part of an international, fast-growing company headquartered in Stockholm, Sweden. Collaborate with smart, caring, and driven colleagues across Europe as we shape the Scrive stor...
085
borar @borar.bsky.social · 16/12/2024
Some heated discussions below. I am working with something similar right now. In 2013 I made an in-house message broker at work with my own algorithm for historical + real time event stream generation. We are still using it now. 🔽
110
borar @borar.bsky.social · 14/12/2024
I am planning to write about my ES approach (which is quite contrarian compared to common wisdom) on my blog systema10.org #eventsourcing
systema10.org
130
borar @borar.bsky.social · 12/12/2024
Another suspicious property of aggregates is that they (I think) collapse the application and model layers of the application. If an aggregate is essentially the scope/boundary of everything which is allowed to happen (consistently) within a use-case, then it means that the model layer 🔽
100
borar @borar.bsky.social · 11/12/2024
I am following the Lit tutorial. It is striking how the combination of reactice properties, declarative event listeners and the properties object inside of the web component class are essentially like a Halogen component! #purescript
010
borar @borar.bsky.social · 08/12/2024
I studied Web components for the first time and succeeded in using Shoelace with PureScript Halogen. Somehow working with "raw" HTML seems too low-level now, a step forward. #purescript #shoelace
030
borar @borar.bsky.social · 29/11/2024
My perspective, much more focused: at its core, #EventSourcing is a storage mechanism where the application persists records about observations or conclusions and computes various values by folding them from past records, interpreting the sequence of records in different ways.
100