<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>kubuszok.com</title>
    <description>&lt;p&gt;Personally, just a &quot;developer&quot; without X in front of it, currently working with Scala.&lt;/p&gt;
&lt;p&gt;I blogged, gave &lt;a href=&quot;/presentations/&quot; style=&quot;text-decoration: underline;&quot;&gt;talks on conferences and meetups&lt;/a&gt;, wrote &lt;a href=&quot;https://leanpub.com/jvm-scala-book&quot; style=&quot;text-decoration: underline;&quot;&gt;&quot;Things you need to know about JVM (that matter in Scala)&quot;&lt;/a&gt;, co-created &lt;a href=&quot;https://chimney.readthedocs.io/&quot; style=&quot;text-decoration: underline;&quot;&gt;Chimney&lt;/a&gt; and created &lt;a href=&quot;https://scala-hearth.readthedocs.io/&quot; style=&quot;text-decoration: underline;&quot;&gt;Hearth&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I enjoy learning new things, especially more abstract like mathematics or algorithmics.&lt;/p&gt;
&lt;p&gt;If you want to know about new posts/talks/releases, follow me on &lt;a href=&quot;https://twitter.com/MateuszKubuszok&quot;&gt;Twitter&lt;/a&gt;, &lt;a href=&quot;https://bsky.app/profile/kubuszok.com&quot;&gt;BlueSky&lt;/a&gt; or &lt;a href=&quot;https://fosstodon.org/@MateuszKubuszok&quot;&gt;Mastodon&lt;/a&gt;!&lt;/p&gt;
</description>
    <link>https://kubuszok.com//</link>
    <atom:link href="https://kubuszok.com//feed.xml" rel="self" type="application/rss+xml" />
    <pubDate>Wed, 26 Nov 2025 17:59:56 +0100</pubDate>
    <lastBuildDate>Wed, 26 Nov 2025 17:59:56 +0100</lastBuildDate>
    <generator>Jekyll v4.3.2</generator>
    
      
      <item>
        <title>Sanely-automatic derivation - or how type class derivation works and why everyone else is doing it wrong</title>
        <description>&lt;p&gt;In Scala, we generate quite a lot of code. A lot of that involves the compiler generating so-called type class instances. This mechanism is quite widespread, yet, very few people actually understand it. As a result, we, the community, settled for suboptimal practices, resulting in suboptimal performance and user experience.&lt;/p&gt;
</description>
        <pubDate>Mon, 03 Nov 2025 16:37:00 +0100</pubDate>
        <link>https://kubuszok.com/2025/sanely-automatic-derivation/</link>
        <guid isPermaLink="true">https://kubuszok.com/2025/sanely-automatic-derivation/</guid>
        
        <category>scala</category>
        
        <category>type classes</category>
        
        <category>derivation</category>
        
        <category>implicits</category>
        
        <category>macros</category>
        
        
        <category>Random about Scala</category>
        
      </item>
      
    
      
      <item>
        <title>Modeling in Scala, part 1: modeling your domain</title>
        <description>&lt;p&gt;Scala gives us a lot of power. We can easily model things with classes and OOP, we can pull in functional libraries and model everything with functions and values, we can implement a stateless monolith or a distributed system. And today we have a lot of books and tutorials that cover these topics: how to glue the code together to create a maintainable application with raw Futures/&lt;a href=&quot;https://www.oreilly.com/library/view/applied-akka-patterns/9781491934876/&quot;&gt;Akka&lt;/a&gt;/&lt;a href=&quot;https://leanpub.com/pfp-scala&quot;&gt;Cats ecosystem&lt;/a&gt;/&lt;a href=&quot;https://www.zionomicon.com/&quot;&gt;Zio ecosystem&lt;/a&gt;/&lt;a href=&quot;https://www.handsonscala.com/&quot;&gt;Scala as typed Python&lt;/a&gt;.&lt;/p&gt;
</description>
        <pubDate>Thu, 12 Dec 2024 13:30:00 +0100</pubDate>
        <link>https://kubuszok.com/2024/modeling-in-scala-part-1/</link>
        <guid isPermaLink="true">https://kubuszok.com/2024/modeling-in-scala-part-1/</guid>
        
        <category>scala</category>
        
        <category>modeling</category>
        
        <category>domain</category>
        
        
        <category>Modeling in Scala</category>
        
      </item>
      
    
      
      <item>
        <title>IO monad: which, why and how</title>
        <description>&lt;p&gt;In many discussions about FP - especially about purely functional programming - there are talks about IO monad, IO type and so on. Its users argue that it is better than your standard imperative approach, that it helps reason, encapsulate side-effects and design more elegant programs. On the other hand, its opponents argue that programs are side-effectful by nature, so you would end up with something that needs IO for like 80% of the codebase while learning curve for newcomers would go up, so what’s the benefit? Let’s try to figure out.&lt;/p&gt;
</description>
        <pubDate>Mon, 27 May 2019 00:00:00 +0200</pubDate>
        <link>https://kubuszok.com/2019/io-monad-which-why-and-how/</link>
        <guid isPermaLink="true">https://kubuszok.com/2019/io-monad-which-why-and-how/</guid>
        
        <category>scala</category>
        
        <category>io</category>
        
        <category>monad</category>
        
        <category>cats</category>
        
        <category>scalaz</category>
        
        <category>zio</category>
        
        <category>effect</category>
        
        <category>eff</category>
        
        <category>free</category>
        
        <category>freer</category>
        
        <category>ttfi</category>
        
        
        <category>Mathematics and Computer Science</category>
        
      </item>
      
    
      
      <item>
        <title>AST playground: recursion schemes and recursive data</title>
        <description>&lt;p&gt;So, we parsed an input - file, stream of characters or string - and we got nicely structured data in the form of a tree and/or an algebraic data type. What now?&lt;/p&gt;
</description>
        <pubDate>Mon, 06 May 2019 00:00:00 +0200</pubDate>
        <link>https://kubuszok.com/2019/ast-playground-recursion-schemes-and-recursive-data/</link>
        <guid isPermaLink="true">https://kubuszok.com/2019/ast-playground-recursion-schemes-and-recursive-data/</guid>
        
        <category>recursive scheme</category>
        
        <category>ast</category>
        
        <category>recursion</category>
        
        <category>corecursion</category>
        
        <category>fold</category>
        
        <category>unfold</category>
        
        <category>refold</category>
        
        <category>catamorphism</category>
        
        <category>anamorphism</category>
        
        <category>hylomorphism</category>
        
        <category>matryoshka</category>
        
        <category>trampoline</category>
        
        <category>gadt</category>
        
        
        <category>Mathematics and Computer Science</category>
        
      </item>
      
    
      
      <item>
        <title>From String to AST: parsing</title>
        <description>&lt;p&gt;Whether you have to do with data in the form of CSV, JSON or a full-blooded programming language like C, JavaScript, Scala, or maybe a query language like SQL, you always transform some sequence of characters (or binary values) into a structured representation. Whatever you’ll do with that representation depends on your domain and business goals, and is quite often the core value of whatever you are doing. With a plethora of tools doing the parsing for us (including the error-handling), we might easily overlook how complex and interesting a process it is.&lt;/p&gt;
</description>
        <pubDate>Mon, 29 Apr 2019 00:00:00 +0200</pubDate>
        <link>https://kubuszok.com/2019/from-string-to-ast-parsing/</link>
        <guid isPermaLink="true">https://kubuszok.com/2019/from-string-to-ast-parsing/</guid>
        
        <category>regular expression</category>
        
        <category>regular language</category>
        
        <category>finite state machine</category>
        
        <category>context-free grammar</category>
        
        <category>pushdown automata</category>
        
        <category>parser</category>
        
        <category>parser combinator</category>
        
        <category>ast</category>
        
        
        <category>Mathematics and Computer Science</category>
        
      </item>
      
    
      
      <item>
        <title>ADT through the looking glass - lenses, prims and other optics</title>
        <description>&lt;p&gt;Algebraic data structures are invaluable in functional programming. With immutable data structures reasoning about the code is easy. Concurrency requires little effort as you don’t have to be worried about locking, mutexes and semaphores - nobody can change your data anyway. If you need to update something you can just create an updated copy and use it from now on. Except if you have a nested structure and need to update something deep, deep inside.&lt;/p&gt;
</description>
        <pubDate>Mon, 24 Dec 2018 00:00:00 +0100</pubDate>
        <link>https://kubuszok.com/2018/adt-through-the-looking-glass/</link>
        <guid isPermaLink="true">https://kubuszok.com/2018/adt-through-the-looking-glass/</guid>
        
        <category>lens</category>
        
        <category>prism</category>
        
        <category>optional</category>
        
        <category>iso</category>
        
        <category>get</category>
        
        <category>set</category>
        
        
        <category>Mathematics and Computer Science</category>
        
      </item>
      
    
      
      <item>
        <title>Different ways to understand a monad</title>
        <description>&lt;p&gt;As soon as you start mentioning functional programming, monads pop out as something that you have to know. However, hardly anyone is good at explaining what a monad is. That is why we’ll try to get some intuition about it without defining it.&lt;/p&gt;
</description>
        <pubDate>Mon, 17 Dec 2018 00:00:00 +0100</pubDate>
        <link>https://kubuszok.com/2018/different-ways-to-understand-a-monad/</link>
        <guid isPermaLink="true">https://kubuszok.com/2018/different-ways-to-understand-a-monad/</guid>
        
        <category>monad</category>
        
        <category>circuit breaking</category>
        
        <category>for comprehension</category>
        
        <category>free</category>
        
        <category>transformer</category>
        
        <category>comonad</category>
        
        
        <category>Mathematics and Computer Science</category>
        
      </item>
      
    
      
      <item>
        <title>The F-words: functor and friends</title>
        <description>&lt;p&gt;While algebras are something we (programmers) rely on in our everyday work, we don’t always use them knowingly. Functional programming, however, has a relatively high number of programmers who care about correctness and mathematical formalism, that leads to it. It is no surprise that it was FP that explored the idea that if you perceive your program as a pipeline of operations, you could provide stronger guarantees if you had tools to define such pipelines mathematically.&lt;/p&gt;
</description>
        <pubDate>Mon, 10 Dec 2018 00:00:00 +0100</pubDate>
        <link>https://kubuszok.com/2018/the-f-words-functors-and-friends/</link>
        <guid isPermaLink="true">https://kubuszok.com/2018/the-f-words-functors-and-friends/</guid>
        
        <category>functor</category>
        
        <category>cofunctor</category>
        
        <category>invariant</category>
        
        <category>phantom</category>
        
        <category>bufunctor</category>
        
        <category>profunctor</category>
        
        <category>natural transformation</category>
        
        <category>functionk</category>
        
        <category>yoneda lemma</category>
        
        
        <category>Mathematics and Computer Science</category>
        
      </item>
      
    
      
      <item>
        <title>Algebras we love</title>
        <description>&lt;p&gt;If you work with anything that can be modeled mathematically, you most likely know that many things you work on can be expressed with algebras. However, if you are not a graduate of a &lt;em&gt;computer science course or similar&lt;/em&gt; you might not know how ubiquitous they are and how often you rely on some of them. (And I don’t mean F-algebras and FP-concepts). So what are algebras and where can we meet some most common of them?&lt;/p&gt;
</description>
        <pubDate>Mon, 03 Dec 2018 00:00:00 +0100</pubDate>
        <link>https://kubuszok.com/2018/algebras-we-love/</link>
        <guid isPermaLink="true">https://kubuszok.com/2018/algebras-we-love/</guid>
        
        <category>algebra</category>
        
        <category>magma</category>
        
        <category>semigroup</category>
        
        <category>monoid</category>
        
        <category>free</category>
        
        <category>group</category>
        
        <category>symmetry</category>
        
        <category>permutation</category>
        
        <category>abelian</category>
        
        <category>ring</category>
        
        <category>ideal</category>
        
        <category>quotient</category>
        
        <category>field</category>
        
        <category>boolean</category>
        
        <category>galois</category>
        
        
        <category>Mathematics and Computer Science</category>
        
      </item>
      
    
      
      <item>
        <title>It&apos;s all about relations</title>
        <description>&lt;p&gt;In FP we talk a lot about algebras, functions, and types. But types are sets, and functions are also sets. Algebras are types with operations that fulfill some conditions, which means they are also sets. So how &lt;em&gt;low&lt;/em&gt; should we get if we want to start from the beginning? I would say we should start with finitary relations.&lt;/p&gt;
</description>
        <pubDate>Mon, 26 Nov 2018 00:00:00 +0100</pubDate>
        <link>https://kubuszok.com/2018/its-all-about-relations/</link>
        <guid isPermaLink="true">https://kubuszok.com/2018/its-all-about-relations/</guid>
        
        <category>relation</category>
        
        <category>preorder</category>
        
        <category>equivalence</category>
        
        <category>partial order</category>
        
        <category>linear order</category>
        
        <category>lattice</category>
        
        <category>function</category>
        
        
        <category>Mathematics and Computer Science</category>
        
      </item>
      
    
  </channel>
</rss>
