Pinned toot

Domain (business) logic is related to your type system usage. As a programmer, the less you use your type system, the more you have to keep the domain logic in your head. The domain logic in your head is like the global state: opaque, ever-changing and informal, i.e., something to minimise and avoid as much as possible. If there is a requirement to acquire a big global state before you delve into the code, you know the type system is used sparingly.

Blog: The Instagram ads Facebook won't show you -
signal.org/blog/the-instagram-

Signal cleverly revealed what data on you owns and then Facebook blocked Signal's ad account.

I'm quite happy how a combination of `Control.Monad.when` and `Polysemy.Error.note` allowed me to flatten the heavily nested code layout: framagit.org/mdimjasevic/conne

Worth noting is that there is no cheating like using partial functions; every possibility of failure is communicated via error types.

Stack Overflow watching your keystrokes: "Once we set up a system to react every time someone typed Command+C [...]"
~
stackoverflow.blog/2021/04/19/
I've disliked proprietary software, including proprietary JavaScript running on my machine in a web browser.

A tip for : if you want to open external web links from other applications in Firefox in a private browsing mode by default, open "about:config" in a Firefox tab and set to true the following option:

browser.privatebrowsing.autostart

« Exploiting vulnerabilities in #Cellebrite UFED and Physical Analyzer from an app's perspective » signal.org/blog/cellebrite-vul via @signalapp

I write about algebraic effects (in ) as a means to break down software into manageable units that can then be composed back: dimjasevic.net/marko/2021/04/0

I find the IO monad too powerful to work with.

Haven't tried it out, but perhaps this could be a good use case for linear types in 9: when passing in a record to a function, but only one or two of the record's fields are going to be used, the callee could accept a parameterized record :: e, and accessors f :: e %1-> x and g :: e %1-> y. This would ensure the record is being read from at the two specified fields, and avoid creating values of types x and y by ignoring the record.

In case you missed it, Google Play recently removed the @Tusky Mastodon app without proper explanation.

Tusky is one of the best Android Mastodon apps, with nothing controversial in it at all. It's quite disturbing that Google can and does act like this.

An alternative and much better way of getting Tusky onto your Android device is by using the independent FOSS app store @fdroidorg

You can find instructions for installing F-Droid here: switching.software/replace/goo

#FediTips #MastoTips #Tusky

After closing for desktop GNU/Linux, 3.7 GB of memory was released back to the OS. Desktop applications implemented in perhaps is not one of the best ideas programmers have had lately.

With some experience in the web framework under my belt, it is so refreshing and such a joy to work in ! This library got so many things right that Yesod didn't. In Servant things get handled at the appropriate level of abstraction, e.g., there is a clear separation of data serialization and de-serialization from higher-level tasks. Of course, the type system plays a crucial role in facilitating abstraction.

code like this always makes my day:

a :: A
a = A False False False False False False False False False False False False False False False

If you weren't among the 33,600 people 😮 at online #FOSDEM this weekend, be advised: 100% #FOSS for online conferences is production ready *today*. Say NO to any Zoom (or other proprietary software) online events from now on. Demand software freedom! sfconservancy.org/blog/2021/fe

Just ditched the last service proprietary app that I was using, which I successfully replaced with . This feels great! Free software for the win!

Show older
La Quadrature du Net - Mastodon - Media Fédéré

Mamot.fr est une serveur Mastodon francophone, géré par La Quadrature du Net.