Skip to content

Instantly share code, notes, and snippets.

View krishnabhargav's full-sized avatar

Krishna Vangapandu krishnabhargav

View GitHub Profile
@krishnabhargav
krishnabhargav / FlowPlay.kt
Last active October 17, 2019 03:14
Using Flow to simulate a pull sequence
import kotlinx.coroutines.FlowPreview
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.*
import kotlinx.coroutines.runBlocking
import kotlin.random.Random
@FlowPreview
fun main() = runBlocking {
val events = eventStoreProducer()
val messages = kafkaProducer()
import infrastructure.Json
import io.javalin.Javalin
import io.javalin.http.Context
import io.javalin.http.HandlerType
import io.javalin.plugin.json.FromJsonMapper
import io.javalin.plugin.json.JavalinJson
import io.javalin.plugin.json.ToJsonMapper
fun main() {
val app: Javalin = Javalin.create().start(7000)
import infrastructure.Json
import io.javalin.Javalin
import io.javalin.plugin.json.FromJsonMapper
import io.javalin.plugin.json.JavalinJson
import io.javalin.plugin.json.ToJsonMapper
sealed class Device {
data class Laptop(val model: String) : Device()
data class Phone(val model: String, val carrier: String): Device()
}
@krishnabhargav
krishnabhargav / EventstoreExample.kt
Created September 27, 2019 01:00
Example of using Eventstore.JVM client from a kotlin program without fully subscribing to Akka actors.
import akka.actor.ActorSystem
import eventstore.core.*
import eventstore.j.EsConnectionFactory
import eventstore.j.SettingsBuilder
import kotlinx.coroutines.future.await
import kotlinx.coroutines.runBlocking
import scala.compat.java8.FutureConverters
import scala.concurrent.Future
import java.net.InetSocketAddress
import java.util.*
@krishnabhargav
krishnabhargav / Retry.kt
Last active September 25, 2019 23:01
An attempt to support retry functions in Kotlin
import Retry.retry
import Retry.retryForever
import kotlinx.coroutines.*
import kotlin.math.pow
import kotlin.math.roundToLong
import kotlin.random.Random
private fun funcThatFails(i: Int): Int {
if (i > 100 || Random.nextBoolean())
@krishnabhargav
krishnabhargav / kotlin-sealedclass-serialization.kt
Last active March 21, 2024 14:41
Using GSON to support serialization and deserialization of Kotlin Sealed Classes.
import com.google.gson.Gson
import com.google.gson.GsonBuilder
import com.google.gson.TypeAdapter
import com.google.gson.TypeAdapterFactory
import com.google.gson.reflect.TypeToken
import com.google.gson.stream.JsonReader
import com.google.gson.stream.JsonWriter
import kotlin.jvm.internal.Reflection
import kotlin.reflect.KClass
@krishnabhargav
krishnabhargav / some commands
Created February 6, 2019 16:02
Git Repo Summary
git log --pretty=format:"%ad - %an: %s" --after="2018-01-01" --until="2019-01-31" --author="Krishna Vangapandu" --date=format:'%Y-%m' > c:\temp\krishna-prs.txt
bin\windows\kafka-topics.bat --create --topic consumer-topic --partitions 3 --replication-factor 1 --zookeeper localhost
bin\windows\kafka-server-start.bat config\server.properties
bin\windows\zookeeper-server-start.bat config\zookeeper.properties
bin\windows\kafka-producer-perf-test.bat --topic joker-walmart-order-injection --payload-file "C:\\temp\\small.json" --num-records 200 --throughput 100 --producer-props acks=1 bootstrap.servers=localhost:9092
bin\windows\kafka-consumer-groups.bat --bootstrap-server shared.kafka.eastus2.qa.jet.network:9092 --group mytopic-consumer-group --reset-offsets --to-earliest --topic mytopic --execute
@krishnabhargav
krishnabhargav / maths.fsx
Created April 21, 2017 14:08
Snippet to download Math textbooks from APSCERT .. for personal use only.
let path r c =
[
sprintf "http://apscert.gov.in/ebookapp/NewServlet?name=/home/wscontent/apscert/ebooks/pdf/English/%s/maths/Mathematics%%20%d/cover.pdf" r c, sprintf "%s-cover.pdf" r
sprintf "http://apscert.gov.in/ebookapp/NewServlet?name=/home/wscontent/apscert/ebooks/pdf/English/%s/maths/Mathematics%%20%d/introduction.pdf" r c, sprintf "%s-intro.pdf" r
] @
(['a'..'z']
|> List.take 15
|> List.map (fun ch ->
sprintf "http://apscert.gov.in/ebookapp/NewServlet?name=/home/wscontent/apscert/ebooks/pdf/English/%s/maths/Mathematics%%20%d/unit%%20%c.pdf" r c ch,
sprintf "%s-unit-%c.pdf" r ch))
@krishnabhargav
krishnabhargav / Validations.fs
Last active April 18, 2017 22:04
a quick validation description library in F#
type ValidationResult<'a> =
| Success of 'a
| Failure of string array //you can also make a ValidationFailure DU which is more "typesafe"
type Validate<'a> = ValidationResult<'a> -> ValidationResult<'a>
module Validators =
let bind<'a,'b> (f : 'a -> ValidationResult<'b>) =
function
| Success x ->