View Sealed.scala
package sealing
import com.tersesystems.capabilities.Brand
// Brands allow for "flexible private fields" where
// you have lexical scoping or all of the classes may
// be of the same type and so you can't use access modifiers.
object Main {
sealed trait Message
View Gemfile
source "https://rubygems.org"
gem "jekyll", "~> 3.6.0"
# If you have any plugins, put them here!
group :jekyll_plugins do
gem "jekyll-feed", "~> 0.9.2"
gem 'jekyll-paginate'
gem 'jekyll-redirect-from'
gem 'jekyll-sitemap'
View Gatekeeper.scala
package gatekeeper
import java.io.{BufferedReader, BufferedWriter, InputStream, OutputStream}
import java.nio.charset.StandardCharsets
import java.nio.file.{Files, _}
import com.tersesystems.capabilities._
import scala.util._
View Repository.scala
package repository
import java.util.UUID
import cats._
import cats.implicits._
import scala.util._
/**
View gist:b0451fbd6e33ed2dc6d93773eefb2abd
"play-dev-mode-akka.actor.default-dispatcher-3@12379" prio=5 tid=0x4c nid=NA waiting for monitor entry
java.lang.Thread.State: BLOCKED
waiting for application-akka.actor.default-dispatcher-5@17283 to release lock on <0x473f> (a play.core.server.DevServerStart$$anon$1)
at play.core.server.DevServerStart$$anon$1.get(DevServerStart.scala:122)
at play.core.server.AkkaHttpServer.modelConversion(AkkaHttpServer.scala:184)
at play.core.server.AkkaHttpServer.handleRequest(AkkaHttpServer.scala:190)
at play.core.server.AkkaHttpServer.$anonfun$createServerBinding$3(AkkaHttpServer.scala:107)
at play.core.server.AkkaHttpServer$$Lambda$383.1818878724.apply(Unknown Source:-1)
at akka.stream.impl.fusing.MapAsync$$anon$23.onPush(Ops.scala:1172)
at akka.stream.impl.fusing.GraphInterpreter.processPush(GraphInterpreter.scala:499)
View doc.md
View gist:04b93bf0dcd40474e17961186333b871
[error] com.typesafe.play#sbt-plugin;2.6.0-SNAPSHOT!sbt-plugin.jar origin location must be absolute: C:\Users\wsargent\.ivy2\local\com.typesafe.play\sbt-plugin\scala_2.10\sbt_0.13\2.6.0-SNAPSHOT\jars\sbt-plugin.jar
java.lang.IllegalArgumentException: com.typesafe.play#sbt-plugin;2.6.0-SNAPSHOT!sbt-plugin.jar origin location must be absolute: C:\Users\wsargent\.ivy2\local\com.typesafe.play\sbt-plugin\scala_2.10\sbt_0.13\2.6.0-SNAPSHOT\jars\sbt-plugin.jar
at org.apache.ivy.util.Checks.checkAbsolute(Checks.java:57)
at org.apache.ivy.core.cache.DefaultRepositoryCacheManager.getArchiveFileInCache(DefaultRepositoryCacheManager.java:387)
at org.apache.ivy.core.cache.DefaultRepositoryCacheManager.download(DefaultRepositoryCacheManager.java:851)
at org.apache.ivy.plugins.resolver.BasicResolver.download(BasicResolver.java:835)
at org.apache.ivy.plugins.resolver.RepositoryResolver.download(RepositoryResolver.java:282)
at org.apache.ivy.core.resolve.ResolveEngine.downloadAr
View .zshrc
export DEFAULT_USER=wsargent
source $HOME/.antigen/antigen.zsh
# Load the oh-my-zsh's library.
antigen use oh-my-zsh
# Bundles from the default repo (robbyrussell's oh-my-zsh).
antigen bundle git
antigen bundle pip
View win10-dev.md

Windows 10 Development Environment for Scala

This is a guide for Scala and Java development on Windows, using Windows Subsystem for Linux, although a bunch of it is applicable to a VirtualBox / Vagrant / Docker subsystem environment. This is not complete, but is intended to be as step by step as possible.

Sadly, much of this pertains to Git, GPG, SSH, and Windows all not working, rather than Windows Subsystem for Linux. There is no unified command line experience for native Windows still -- instead, there's a bunch of different conflicting programs which all bring along their own environment and need to be told about each other.

Harden Windows 10

Read the entire Decent Security guide, and follow the instructions, especially:

View gh-clone
# Usage: gh-clone lagom lagom to checkout lagom/lagom
function gh-clone() {
OWNERNAME=$1;
PROJNAME=$2;
cd $WORKDIR;
mkdir $PROJNAME;
cd $PROJNAME;
hub init -g
hub clone $OWNERNAME/$PROJNAME master;
cd master;