Skip to content

Instantly share code, notes, and snippets.

View MateuszKubuszok's full-sized avatar
🏠
Vacationing from OSS at an actual work

Mateusz Kubuszok MateuszKubuszok

🏠
Vacationing from OSS at an actual work
View GitHub Profile
@MateuszKubuszok
MateuszKubuszok / FList.scala
Created October 27, 2020 16:06
List of Functions
sealed trait FList[F[_]] extends Product with Serializable
object FList {
final case class Last[F[_], A, B](f: A => F[B]) extends FList[F]
final case class Cons[F[_], A, B, Tail <: FList[F]](f: A => F[B], tail: Tail) extends FList[F]
}
implicit class FunOps[F[_], A, B](f: A => F[B]) extends AnyVal {
def toFList: FList.One[F, A, B] = FList.One(f)
@MateuszKubuszok
MateuszKubuszok / speeches.md
Last active May 16, 2023 14:12
My public speeches, presentations and and stuff

My public speeches

Actually, more like hall of shame because I cannot watch/listen to myself without cringe, but in this time and age everyone has to be a salesman. Well, not really, but it kind of help with self-development and getting confidence, so whatever. Remember kids! You don't have to be competent to be a public speaker! (Or write a book. Or blog. Or OSS. Or get a job.)

Optimizing Heavy Web Service presentation

@MateuszKubuszok
MateuszKubuszok / algebras.scala
Last active March 2, 2021 14:34
Algebras implementation which isn't based on nested type hierarchy
import scala.language.reflectiveCalls
type Nullary[A] = Unit
type Unary[A] = A
type Binary[A] = (A, A)
trait Algebra {
type Set
type Operation[F[_]] = F[Set] => Set
@MateuszKubuszok
MateuszKubuszok / TypedSliding.scala
Created March 15, 2021 16:03
Safe sliding in Scala
trait TypedSlide[F[_], I <: Int] {
type Out[A]
def sliding[A](fa: F[A]): F[Out[A]]
}
object TypedSlide {
type Arbitrary
class Helper[F[_], I <: Int] {
def apply[OOut[_]](f: F[Arbitrary] => F[OOut[Arbitrary]]) = new TypedSlide[F, I] {
type Out[A] = OOut[A]
@MateuszKubuszok
MateuszKubuszok / reinstall.sh
Last active January 7, 2022 09:47
Migrate brew from Intel to M1 after transfer
#!/bin/bash
brew bundle dump --file Brewfile
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)"
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew bundle install
type ~>[F[_], G[_]] = [A] => F[A] => G[A]
final case class <~>[F[_], G[_]](to: F ~> G, from: G ~> F):
val mapAsTo: [A, B] => (G[A] => G[B]) => (F[A] => F[B]) =
[A, B] => (f: (G[A] => G[B])) => to[A].andThen(f).andThen(from[B])
val mapAsFrom: [A, B] => (F[A] => F[B]) => (G[A] => G[B]) =
[A, B] => (f: (F[A] => F[B])) => from[A].andThen(f).andThen(to[B])
extension [F[_], A](fa: F[A])
transparent inline def mapAs[G[_]]: [B] => (G[A] => G[B]) => F[B] =
@MateuszKubuszok
MateuszKubuszok / automatic-optional.md
Last active August 7, 2023 00:39
Chimney implementation ideas

Separate automatic derivation from semiautomatic

Directly solves:

General idea of the solution

Currently Chimney attempts to derive as much as possible with a single expression. It inline results on Scala 2 it uses an approach where when implicit is summoned it is expected that only user-provided implicit would be used. This is done because:

@MateuszKubuszok
MateuszKubuszok / github-badge-cache-buster.sh
Last active April 15, 2024 10:49
Basically, a fork of https://github.com/sbts/github-badge-cache-buster bacause original stopped working on my setup
#!/bin/bash
defaultURL='https://github.com/ledgersmb/LedgerSMB'
defaultFILE=''
HELP() {
cat <<-EOF
usage: github-badge-cache-buster.sh [ -h | --help | [ repoURL | "auto" [ badgeFile ] ] ]
repoURL defaults to '$defaultURL'