Skip to content

Instantly share code, notes, and snippets.

@wesleybliss
wesleybliss / IQueue.kt
Created February 28, 2020 22:42
IQueue - simple queue interface
import java.util.concurrent.ConcurrentLinkedQueue
interface IQueue {
val tasks: ConcurrentLinkedQueue<String>
val hasTasks: Boolean
var isRunning: Boolean
fun addTask(url: String)
@wesleybliss
wesleybliss / BrotherPrinterTriageNonsense1.kt
Created December 2, 2019 20:17
Diagnosing some Brother printer SDK search weirdness
fun publicGetUniqueDevSet() : Vector<DevSet?>? {
val finder = DeviceFinder()
val uniqueDevSet: Vector<DevSet?> = Vector()
val devSets = if (Printer.getUserPrinterInfo() == null) {
finder.discoverDevice(false)
} else {
finder.discoverDevice(Printer.getUserPrinterInfo().enabledTethering)
}
@wesleybliss
wesleybliss / PersistedLiveData.kt
Created November 22, 2019 16:49
LiveData implementation that reads/writes it's values to SharedPreferences via Hawk
import android.content.SharedPreferences
import androidx.lifecycle.MutableLiveData
import androidx.preference.PreferenceManager
import com.orhanobut.hawk.Hawk
import com.splashthat.host.extensions.Plank
/**
* A [LiveData] implementation that reads and persists
* it's value using [SharedPreferences] via [Hawk]
*/
@wesleybliss
wesleybliss / git-prune
Last active January 12, 2022 16:55
Git Prune
#!/usr/bin/env node
const shell = require('shelljs')
const inquirer = require('inquirer')
const chalk = require('chalk')
/**
* Gets a list of Git branches
*
* @return {Array[String]}
import android.graphics.Canvas
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.graphics.drawable.Drawable
import androidx.recyclerview.widget.ItemTouchHelper
import androidx.recyclerview.widget.RecyclerView
import com.splashthat.host.R
import com.splashthat.host.api.Identifiable
import com.splashthat.host.extensions.getColorDrawable
@wesleybliss
wesleybliss / KBus.kt
Created December 3, 2018 21:18
Kotlin event bus example
import io.reactivex.disposables.CompositeDisposable
import io.reactivex.subjects.PublishSubject
/**
* Created by adrielcafe on 20/12/17.
*/
object KBus {
val disposables = mutableMapOf<Any, CompositeDisposable>()
val publishSubject = PublishSubject.create<Any>()!!
@wesleybliss
wesleybliss / memoized_fib.js
Created August 31, 2018 19:43
Memoized Fibonacci
const fib = n => (n < 2) ? n : fib(n - 1) + fib(n - 2)
const fibSexy = (() => {
const cache = {}
const f = n => {
const value = (n in cache)
? cache[n]
@wesleybliss
wesleybliss / filter-keys.js
Created June 1, 2018 06:30
Filters an object returning only properties specified
/**
* Filters an object returning only properties specified
*
* @param {Object} obj Source object
* @param {Array} keys List of (strings) properties to keep
* @return {Object} Object with only props specified in `keys`
*/
export const filterKeys = (obj, keepKeys, dropKeys) => {
if (typeof obj !== 'object')
@wesleybliss
wesleybliss / debounce.js
Created April 28, 2018 09:33
Debounce a function
/**
* Creates a debounced monad to allow a method to be called
* many times, but only execute after N seconds has elapsed
*
* @param {Function} func Method to call
* @param {Number} wait Timeout, in milliseconds
* @param {Boolean} [immediate] Optionally skip the wait
* @return {Function} Debounced monad that can be called multiple times
*/
export function debounce(func, wait, immediate) {
@wesleybliss
wesleybliss / throttle.js
Created April 23, 2018 08:06
Throttle (not debounce) a method - similar to lodash, but simpler
const throttle = (fn, delay) => {
let lastCall = 0
return (...args) => {
const now = (new Date).getTime()
if (now - lastCall < delay) return
lastCall = now
return fn(...args)
}
}