Skip to content

Instantly share code, notes, and snippets.

@DrewCarlson
DrewCarlson / V1__Create_database.sql
Last active December 8, 2023 20:58
Jooq + Flyway Kotlin Gradle Setup
# src/main/resources/db/migration/V1__Create_database.sql
CREATE TABLE IF NOT EXISTS my_table
(
id INTEGER PRIMARY KEY NOT NULL,
name TEXT NOT NULL
);
@DrewCarlson
DrewCarlson / Confetti.kt
Created June 27, 2023 05:16
Confetti modifier for Jetpack Compose
import androidx.compose.runtime.Immutable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateMapOf
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.runtime.withFrameNanos
import androidx.compose.ui.Modifier
import androidx.compose.ui.composed
@DrewCarlson
DrewCarlson / 01-publishing.gradle.kts
Last active July 14, 2022 19:17
Kotlin publishing configuration for maven central
import java.net.URL
import java.net.HttpURLConnection
import java.util.Base64
apply(plugin = "maven-publish")
apply(plugin = "signing")
apply(plugin = "org.jetbrains.dokka")
System.getenv("GITHUB_REF")?.let { ref ->
if (ref.startsWith("refs/tags/v")) {
@DrewCarlson
DrewCarlson / Result.kt
Created November 8, 2018 23:22
Stable kotlin.Result alternative
sealed class Result<V>(
private val successValue: V?,
private val error: Exception?
) {
fun get() = successValue!!
fun getOrNull() = successValue
fun exception() = error!!
fun errorOrNull() = error
@DrewCarlson
DrewCarlson / carthage.groovy
Last active September 16, 2018 19:50
Carthage mangment tasks
/** Carthage Tasks **/
task checkCarthageInstalled(type: Exec) {
executable = "carthage"
standardOutput = new ByteArrayOutputStream()
ignoreExitValue = true
doLast {
if (execResult.exitValue != 0) {
throw new GradleException("Please install Carthage with `brew install carthage`")
}
@DrewCarlson
DrewCarlson / cloud-config.yml
Created July 14, 2017 04:18
cloud-config.yml
ssh_authorized_keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC/WNEpThUYGu3rE+MRlZgAOCQH+4wE+YKc1M6/sCzavFnd4GBMduZyCn/ai9fpvkM5FIRtdMUH+1FhsBrQaJW5qco1TfdXX3D+Vm2T6eMVma5w/1ghrUYaK/iZKqUL1x7c8vnt3MwZsacXyt41+mQCoCsHcjauMVk+oYiSmLBJVY9cxB9oDw1uMfk+s0cm/ln4aWi8n0QGrbdWV9/RN/dqFqVwYbcSx2XUmdg/ilnxUIgIWv9BUKgsQpFfSAw5p53bdfhHzyLVmfaihZvlgRFj8Dm3egEazN0X47Ajc1xDhubA4P+n/VgZjymjKGnmbBhTW0xDyqpmPj3ztUWaYGOGSQdWI7B77ptgW6YVhe+aUeaLmt0MeLWxQ5xXaeuT81LyMnFQS55J0A3Q2kmpSR5IfF44HbVhAYMt/aDyPD4gWDD5ZYqfNxTx/4E6+XJkJBzPvT3is9y3165mVq67HmPgB2EhTQrGsW4pBwTUdyiCHG21YpLw4WECkvg5aOYCeDuCfjaXBO92qTlvXncOFWoWMrDTbaoP8879pHUNch0dtTz75/M7+V8OKGvgUut/Vz6Kg2/fKHOiwDTLMb7mchgi+uvwaKDRD7nAX2XGM1lNXL7bU/pLEBemPFIZXhSRbduhNAqnJnzm3DE0DXpuCf2Tk4v1hDkffLtbhxNijESNTQ== rotexdev@gmail.com
### Keybase proof
I hereby claim:
* I am drewcarlson on github.
* I am drewcarlson (https://keybase.io/drewcarlson) on keybase.
* I have a public key ASCEZY_7Cu26eFyb6LOU1tzLyhNkxB9dceiag_7JBh8v9Qo
To claim this, I am signing this object:
@DrewCarlson
DrewCarlson / ViewExtensions.kt
Created March 30, 2016 23:13
View extensions for ViewCompat helpers.
import android.content.res.ColorStateList
import android.graphics.PorterDuff
import android.graphics.Rect
import android.support.v4.view.ViewCompat
import android.support.v4.view.ViewPropertyAnimatorCompat
import android.support.v4.view.WindowInsetsCompat
import android.support.v4.view.accessibility.AccessibilityNodeProviderCompat
import android.view.View
fun View.animateCompat(): ViewPropertyAnimatorCompat {
@DrewCarlson
DrewCarlson / DrawableExtensions.kt
Created March 30, 2016 18:38
Drawable extensions for DrawableCompat helpers.
import android.content.res.ColorStateList
import android.graphics.PorterDuff
import android.graphics.drawable.Drawable
import android.support.v4.graphics.drawable.DrawableCompat
fun Drawable.getLayoutDirectionCompat(): Int {
return DrawableCompat.getLayoutDirection(this)
}
fun Drawable.isAutoMirrorCompat(): Boolean {
@DrewCarlson
DrewCarlson / ContextExtensions.kt
Created March 30, 2016 18:09
Context extensions for ContextCompat helper methods.
import android.content.Context
import android.content.Intent
import android.content.res.ColorStateList
import android.graphics.drawable.Drawable
import android.os.Bundle
import android.support.v4.content.ContextCompat
import java.io.File
fun Context.checkSelfPermissionCompat(permission: String): Int {
return ContextCompat.checkSelfPermission(this, permission)