Skip to content

Instantly share code, notes, and snippets.

View kubukoz's full-sized avatar
😱
I might take a week to respond. Or a month.

Jakub Kozłowski kubukoz

😱
I might take a week to respond. Or a month.
View GitHub Profile
@kubukoz
kubukoz / move-calendar-events.scala
Last active May 21, 2025 21:48
Move all events between two Google Calendars
//> using toolkit default
//> using option -no-indent
import sttp.client4.quick.*
import util.chaining.*
import upickle.default.*
import sttp.model.MediaType
case class Event(
id: String,
summary: String = "<no summary>",
@kubukoz
kubukoz / tuples.scala
Created May 11, 2025 00:24
Smithy / Smithy4s encoding of typescript-like tuples
//> using scala 3.7.0
//> using dep software.amazon.smithy:smithy-model:1.57.1
//> using dep com.disneystreaming.smithy4s::smithy4s-dynamic:0.18.35
import software.amazon.smithy.model.Model
import software.amazon.smithy.model.selector.Selector
import software.amazon.smithy.model.shapes.ShapeId
import scala.jdk.CollectionConverters._
import software.amazon.smithy.model.transform.ModelTransformer
import software.amazon.smithy.model.shapes.ServiceShape
import software.amazon.smithy.model.shapes.OperationShape
@kubukoz
kubukoz / settings.jsonc
Last active May 10, 2025 22:34
Zed theme
// Zed settings
//
// For information on how to configure Zed, see the Zed
// documentation: https://zed.dev/docs/configuring-zed
//
// To see all of Zed's default settings without changing your
// custom settings, run the `open default settings` command
// from the command palette or from `Zed` application menu.
{
"theme": "One Dark Pro",
@kubukoz
kubukoz / tg.scala
Created March 29, 2025 13:31
reviving an old concept for a new tagless final encoding in scala 3, thanks to inspiration from Noel Welsh's scalar 2025 talk
//> using dep org.typelevel::cats-effect:3.6.0
import cats.effect.IO
import cats.effect.unsafe.IORuntime
import cats.effect.IOApp
enum Permission {
case View
case Edit
case Both(p1: Permission, p2: Permission)
}
@kubukoz
kubukoz / finally-noel.scala
Last active March 29, 2025 13:19 — forked from arosien/finally-noel.scala
tagless final implementation from noel welsh's talk "tagless final for humans" https://noelwelsh.com/talks/tagless-final-for-humans
// https://noelwelsh.com/talks/tagless-final-for-humans
trait Algebra:
type Ui[_]
trait Controls extends Algebra:
def text(prompt: String): Ui[String]
def choice(prompt: String, options: (String, Boolean)*): Ui[Boolean]
// etc...
@kubukoz
kubukoz / ws.scala
Created September 21, 2024 18:09
WebSocket server in http4s that forwards messages from each client to the others
//> using dep org.http4s::http4s-ember-server::0.23.28
import cats.effect.IO
import cats.effect.IOApp
import cats.effect.std.UUIDGen
import cats.syntax.all.*
import fs2.concurrent.Topic
import org.http4s.HttpApp
import org.http4s.ember.server.EmberServerBuilder
import org.http4s.websocket.WebSocketFrame
@kubukoz
kubukoz / .scalafmt.conf
Last active February 1, 2025 19:53
How to disable significant indentation in Scala
runner.dialect = scala3
runner.dialectOverride.allowSignificantIndentation = false
# allows `if x then y`
runner.dialectOverride.allowQuietSyntax = true
//> using option -Ykind-projector
trait Demo {
type LA
type LB
type RA
type RB
def x(using
laEqLb: LA =:= LB,
raEqRb: RA =:= RB
@kubukoz
kubukoz / SagemakerMock.scala
Created July 26, 2024 13:43
Sagemaker invocation mock with http4s and records4s
//> using dep org.http4s::http4s-ember-server:0.23.27
//> using dep org.http4s::http4s-dsl:0.23.27
//> using dep org.http4s::http4s-circe:0.23.27
//> using dep com.github.tarao::record4s-circe:0.13.0
//> using option -Wunused:all
import cats.effect.IO
import cats.effect.IOApp
import com.comcast.ip4s.*
import com.github.tarao.record4s.%
import com.github.tarao.record4s.select
@kubukoz
kubukoz / compile.sh
Created January 13, 2024 00:46
Primitive Playdate game built with clang
#!/bin/bash
set -euo pipefail
# You'll have to change this, also see note about caveat below
SDK_PATH=/Users/kubukoz/Developer/PlaydateSDK/C_API
rm -rf HelloWorld.pdx || true
rm Source/pdex.elf || true