Skip to content

Instantly share code, notes, and snippets.

@majk-p
majk-p / aws.scala
Last active January 10, 2024 08:47
Reproduction of bug where using AT_TIMESTAMP kinesis iterator breaks Localstack
import cats.effect.IO
import cats.Endo
import cats.implicits.*
import io.laserdisc.pure.kinesis.tagless.KinesisAsyncClientOp
import software.amazon.awssdk.core.async.AsyncRequestBody
import software.amazon.awssdk.services.kinesis.model.GetRecordsRequest
import software.amazon.awssdk.services.kinesis.model.GetShardIteratorRequest
import software.amazon.awssdk.services.kinesis.model.ListShardsRequest
import software.amazon.awssdk.services.kinesis.model.ShardIteratorType
@majk-p
majk-p / weaver.test.scala
Created December 15, 2023 14:03
Workaround for "Scala211 doesn't support inline modifiers" when printing scala meta tree and weaver
//> using scala "2"
//> using dep "org.scalameta::scalameta:4.8.14"
//> using test.dep "com.disneystreaming::weaver-cats:0.8.3"
//> using testFramework "weaver.framework.CatsEffect"
import cats.Eq
import cats.Show
import weaver._
import scala.meta._
@majk-p
majk-p / weaver-scala-meta.test.scala
Created December 15, 2023 12:24
Reproduction example of "Scala211 doesn't support inline modifiers" when printing scala meta tree and weaver
//> using scala "2"
//> using dep "org.scalameta::scalameta:4.8.14"
//> using test.dep "com.disneystreaming::weaver-cats:0.8.3"
//> using testFramework "weaver.framework.CatsEffect"
import scala.meta._
import scala.meta.contrib._
import scala.meta.dialects.Scala3
import weaver._
@majk-p
majk-p / main.scala
Created December 15, 2023 11:35
Reproduction example of "Scala211 doesn't support inline modifiers" when printing scala meta tree
//> using scala "2"
//> using dep "org.scalameta::scalameta:4.8.14"
import scala.meta._
import scala.meta.dialects.Scala3
object Codegen {
def codeWithInline =
source"""
object Generated {
@majk-p
majk-p / optics.sc
Created July 11, 2023 21:29
Introduction to Optics
//> using scala "3.3.0"
//> using dep "dev.optics::monocle-core:3.2.0"
//> using dep "dev.optics::monocle-macro:3.2.0"
import monocle.syntax.all._
case class Product(id: String, name: String, price: Double)
case class Shelf(id: String, product: Product)
case class Display(id: String, kind: "Ambient" | "Chilled", shelves: List[Shelf] )
case class Alley(id: String, displays: List[Display])
@majk-p
majk-p / error.scala
Created July 3, 2023 08:38
MatchError: null with endpoint output initialized after endpoint definition - http4s server interpreter
//> using scala "3.3.0"
//> using dep "org.typelevel::cats-effect:3.5.1"
//> using dep "com.softwaremill.sttp.tapir::tapir-core:1.6.0"
//> using dep "com.softwaremill.sttp.tapir::tapir-cats:1.6.0"
//> using dep "com.softwaremill.sttp.tapir::tapir-http4s-server:1.6.0"
//> using dep "com.softwaremill.sttp.tapir::tapir-swagger-ui-bundle:1.6.0"
//> using dep "org.http4s::http4s-ember-server:0.23.22"
//> using dep "org.slf4j:slf4j-simple:1.7.36"
import cats.effect.ExitCode
@majk-p
majk-p / error.scala
Last active July 3, 2023 08:38
MatchError: null with endpoint output initialized after endpoint definition - swagger interpreter
//> using scala "3.3.0"
//> using dep "org.typelevel::cats-effect:3.5.1"
//> using dep "com.softwaremill.sttp.tapir::tapir-core:1.6.0"
//> using dep "com.softwaremill.sttp.tapir::tapir-cats:1.6.0"
//> using dep "com.softwaremill.sttp.tapir::tapir-swagger-ui-bundle:1.6.0"
import cats.effect.ExitCode
import cats.effect.IO
import cats.effect.IOApp
@majk-p
majk-p / derive-show.scala
Last active April 23, 2023 20:26
Scala-cli script to demostrate Show typeclass derivation with kittens
//> using dep "org.typelevel::kittens:3.0.0"
//> using dep "org.typelevel::cats-core:2.9.0"
import cats.Show
import cats.implicits.given
import cats.derived.*
case class Person(name: String, surname: String, age: Int)
given Show[Person] = semiauto.show
@majk-p
majk-p / type-bounds.scala
Last active December 16, 2022 15:42
Type bounds <: vs <:<
//> using scala "2.13"
sealed trait SampleTrait
case class SampleValue(v: String) extends SampleTrait
object SampleSingleton extends SampleTrait
def f[X <: SampleTrait](x: X): Unit =
println(x)
def g[X](x: X)(implicit ev: X <:< SampleTrait): Unit =
@majk-p
majk-p / main.scala
Last active November 5, 2022 20:48
ArraySeq based GoL grid model
//> using scala "3"
//> using lib "org.typelevel::cats-effect:3.3.12"
//> using lib "co.fs2::fs2-core:3.3.0"
package net.michalp.conway
import cats.effect.IO
import cats.effect.IOApp
import fs2.Stream