Skip to content

Instantly share code, notes, and snippets.

View awwsmm's full-sized avatar

Andrew awwsmm

View GitHub Profile
@awwsmm
awwsmm / allvars.sh
Last active June 6, 2019 14:25
Get all environment and shell variables
#!/bin/bash
set | grep "^[A-Z]" | sed -e 's/[[:space:]].*//' -e 's/=.*//'
# tested on bash, ksh, tcsh, zsh
# Sources:
# https://askubuntu.com/a/275972/360539
# https://stackoverflow.com/a/20348145/2925434
# https://www.tutorialspoint.com/unix/unix-regular-expressions.htm
@awwsmm
awwsmm / printargs.sh
Last active June 23, 2019 07:42
Easily print arguments passed to a `bash` script
#!/usr/bin/env bash
#-------------------------------------------------------------------------------
#
# print_args - easily inspect arguments passed to a bash script
#
# sources:
# https://unix.stackexchange.com/a/332126/183920
#
#-------------------------------------------------------------------------------
@awwsmm
awwsmm / array_contains.sh
Last active June 22, 2019 23:05
Merge all Java-like "classpath"s in arguments into a single valid classpath, keep other arguments intact
#!/usr/bin/env bash
#-------------------------------------------------------------------------------
#
# array_contains - returns 0 if array contains the specified value, else 1
#
# $1 : term to search for
# $2+ : array to inspect
#
# sources:
@awwsmm
awwsmm / modalModule.R
Created July 12, 2019 13:19
An R Shiny Modal in a Module
# define the module UI
moduleUI <- function(id) {
# create the namespace from the id
ns <- NS(id)
# As this is a function, the last statement will be the return value.
# Make sure it contains all of the UI elements you want to display
fluidPage(
@awwsmm
awwsmm / clickableValueBoxModule.R
Created July 12, 2019 15:48
Clickable valueBox in R Shiny which opens a modal with reactive inputs, in a module
# define the UI of the module
clickableValueBoxUI <- function(id) {
# create the namespace
ns <- NS(id)
# define the UI components
fluidRow(
valueBoxOutput(ns("my_valueBox"))
)
@awwsmm
awwsmm / 🤯.scala
Created June 25, 2020 15:10
Type classes and implicit conversions in Scala
// this is a type class
trait Eq [A] {
def === (x: A)(y: A): Boolean
def =/= (x: A)(y: A): Boolean
}
// it is a reasonable translation of this Haskell code (Wiki)
// class Eq a where
// (==) :: a -> a -> Bool
// (/=) :: a -> a -> Bool
@awwsmm
awwsmm / gotta_click.R
Created October 30, 2020 18:42
Minimal Idle / Incremental Clicking "Game" in R Shiny
library(shiny)
ui <- basicPage(
actionButton("theButton", "gotta click"),
verbatimTextOutput("theNumber")
)
server <- function(input, output, session) {
vals <- reactiveValues(counter = 0)
@awwsmm
awwsmm / another-example.scala
Last active July 23, 2021 20:25
Finite State Machine with state-specific commands in Scala using Akka
import akka.actor.typed.Behavior
import akka.actor.typed.scaladsl.Behaviors
object Test extends App {
sealed trait AnimalCommand
sealed trait DogCommand extends AnimalCommand
object Bark extends DogCommand
@awwsmm
awwsmm / music.scala
Last active November 6, 2021 12:23
Create audio from raw bits in Scala
package com.awwsmm
import javax.sound.sampled.{AudioFormat, AudioSystem, SourceDataLine}
// Inspired by https://community.oracle.com/tech/developers/discussion/1273219/example-code-to-generate-audio-tone
// and https://stackoverflow.com/questions/1932490/java-generating-sound/47916383
// still some "crackling" / "popping" at the end of the tune, but most of the way there
object Main extends App {
@awwsmm
awwsmm / tryWIthResources.scala
Created November 8, 2021 12:04
Java's try-with-resources pattern, but in Scala.
trait SourceUtils {
/**
* Opens a `resource`, passes it to the given function `f`, then
* closes the resource, returning the value returned from `f`.
*
* Example usage:
* {{{
* val myString: String =
* using(scala.io.Source.fromFile("file.name")) { source =>