Skip to content

Instantly share code, notes, and snippets.

View igor-ramazanov's full-sized avatar

Igor Ramazanov igor-ramazanov

View GitHub Profile
@igor-ramazanov
igor-ramazanov / lsp.kak
Last active March 13, 2024 15:19
kakoune-lsp config, save it as `~/.config/kak/autoload/lsp.kak`
eval %sh{kak-lsp/target/release/kak-lsp --kakoune --session $kak_session}
hook global WinSetOption filetype=(scala|java|nix|rust|smithy|terraform|c|python|nu|unison|cpp) %{
lsp-enable-window
# Show signature in the insert mode.
lsp-auto-signature-help-enable
# Indent guides
# WIP: https://github.com/kakoune-lsp/kakoune-lsp/pull/720
@igor-ramazanov
igor-ramazanov / tmux-formats-cheatsheet.md
Created October 27, 2023 10:26
Tmux FORMATs cheatsheet

Tmux cheatsheet

Conditionals

? - Conditionals, if a variable exists and non-zero, then the first is chosen, otherwise second.
Example: #{?session_attached,attached,not attached}.

Comparisons

==:, !=:, <:, >:, <=:, >=: - String comparisons.\

//> using scala 3.3.1
//> using options -Wnonunit-statement, -Wunused:all, -Wvalue-discard, -Yno-experimental, -Ysafe-init, -deprecation, -feature, -new-syntax, -unchecked,
//> using platform native
//> using nativeGc none
//> using nativeLto thin
//> using nativeMode release-full
//> using nativeEmbedResources false
@igor-ramazanov
igor-ramazanov / partition-tmpfs.sh
Last active July 26, 2023 10:33
Amnesaic NixOS installer script using tmpfs
#!/usr/bin/env bash
set -xeuo pipefail
DISK=/dev/nvme0n1
parted $DISK -- mklabel gpt
parted $DISK -- mkpart ESP fat32 1MB 512MB
parted $DISK -- set 1 esp on
@igor-ramazanov
igor-ramazanov / partition.sh
Last active July 26, 2023 09:05
Partition and format NVMe SSD drive for Amnesaic NixOS setup
#!/usr/bin/env bash
set -xeuo pipefail
DISK=/dev/nvme0n1
parted $DISK -- mklabel gpt
parted $DISK -- mkpart ESP fat32 1MB 512MB
parted $DISK -- set 1 esp on
parted $DISK -- mkpart primary linux-swap 512MB 32GB
@igor-ramazanov
igor-ramazanov / csc
Last active September 2, 2022 10:10
#!/usr/bin/env -S zsh --interactive --login
set -eo pipefail
search() {
local DEP=""
local CS_PREFIX="cs complete-dep"
# Returns two lines:
# 1) fzf query
@igor-ramazanov
igor-ramazanov / IO.scala
Created May 19, 2022 13:57
Toy IO/Fiber system
import java.util.concurrent.atomic.AtomicInteger
import java.util.concurrent.Executors
import java.util.{Timer, TimerTask}
import scala.concurrent.duration._
import scala.concurrent.{Await, ExecutionContext, ExecutionContextExecutor, Promise}
import scala.util.chaining._
import scala.util.{Failure, Success, Try}
class Context(private val timer: Timer, private val threadPool: ExecutionContext) {
def schedule(task: => Unit, fd: FiniteDuration): Unit = {
import java.net._
import java.nio.ByteBuffer
import java.nio.channels.{
AsynchronousChannelGroup,
AsynchronousServerSocketChannel,
AsynchronousSocketChannel,
CompletionHandler
}
import java.util.concurrent.{ExecutorService, Executors}
@igor-ramazanov
igor-ramazanov / free-monad-from-scratch.scala
Last active January 28, 2019 11:45
Implementation of Free monad from scratch
import $plugin.$ivy.`org.spire-math::kind-projector:0.9.9`
import $ivy.`org.typelevel::cats-core:1.5.0`
import java.nio.file.{Files, Paths}
import cats.{Eval, Monad}
import cats.arrow.FunctionK
import cats.data.State
import scala.io.Source
@igor-ramazanov
igor-ramazanov / initial-and-final-encodings.scala
Last active March 29, 2022 11:26
Small notes I took during reading of Oleg Kiselyov's papers about Tagless Final: http://okmij.org/ftp/tagless-final/course/lecture.pdf
//==============================
//Part 1: Introduction
//==============================
//Introduction to the "initial" encoding (also called Free monads/applicatives)
//and the "final" encodings (also called "Tagless Final")
//Main purpose of the both ways:
//1. create a strict and statically typed DSL languages
//2. write a "description" of a program using these languages