Skip to content

Instantly share code, notes, and snippets.

View bblfish's full-sized avatar

Henry Story bblfish

View GitHub Profile
@bblfish
bblfish / StateMonadExamples.sc
Last active May 1, 2019 10:52
Code from blog post on the State Monad
// Code from blog post on the State Monad
// http://blog.tmorris.net/posts/memoisation-with-state-using-scala/index.html
type Memo = Map[Long, BigInt]
object FibNaïve {
def fibnaïve(n: Long): BigInt =
if (n <= 1)
BigInt(n)
else {
val r = fibnaïve(n - 1)
@bblfish
bblfish / FibMemo2.scala
Created April 30, 2019 13:09
Example 2 code from blog post "Memoisation with State"
case class State[S, A](run: S => (A, S))
//Fix FibMemo2 in
// http://blog.tmorris.net/posts/memoisation-with-state-using-scala/index.html
// Again the results were not being memoised. (Added debug option to see what
// gets calculated
object FibMemo2 {
type Memo = Map[BigInt, BigInt]
def fibmemo2(n: BigInt, debug: Boolean=false): BigInt = {
@bblfish
bblfish / FibMemo1.scala
Created April 30, 2019 12:41
Memoisation with state using Scala
// Fixes memorization bug from code in
// http://blog.tmorris.net/posts/memoisation-with-state-using-scala/index.html
// Also adds little debugging tool to allow one to see how state evolves.
// returns the memorisation map, to help see that it has been altered.
object FibMemo1 {
type Memo = Map[BigInt, BigInt]
def fibmemo1(n: BigInt, debug: Boolean = false): (BigInt,Memo) = {
def fibmemoR(z: BigInt, memo: Memo): (BigInt, Memo) =
if(z <= 1)
@bblfish
bblfish / akkaHttp.sc
Created July 10, 2017 16:46
attempt to get some linked data code working with akka http and streams
import coursier.core.Authentication, coursier.MavenRepository
interp.repositories() ++= Seq(MavenRepository(
"http://bblfish.net/work/repo/snapshots/"
))
@
import scala.concurrent.ExecutionContext
$ openssl pkcs12 -clcerts -nokeys -in ~/Certificates.p12 | openssl x509
Enter Import Password:
MAC verified OK
-----BEGIN CERTIFICATE-----
MIIDITCCAgmgAwIBAgIGAUwZZ+oFMA0GCSqGSIb3DQEBBQUAMB0xDjAMBgNVBAMM
BVdlYklEMQswCQYDVQQKDAJ7fTAeFw0xNTAzMTQxNzM5NDJaFw0xOTAzMTMxNzQ5
NDJaMBwxGjAYBgNVBC4TEWhlbnJ5QGJibGZpc2gubmV0MIIBIDALBgkqhkiG9w0B
AQEDggEPADCCAQoCggEBANq50elB9vhaCGMWnQ22Mo0dShWnHf/j1PTQh1KlL7FF
TXNY5KXs81AeOSS8AlLzAEsLshoNa2TKBT8PvLWlTsk+vi3JuR5MQyuCeITEzCrY
oQK0bSogF79F2dTIilZNQgI0SEobLkRtu0zUOOecJGbOMQ8yd3OnedJO17YKBaYY
package net.bblfish.test
import japgolly.scalajs.react._
import japgolly.scalajs.react.vdom.ReactVDom._
import japgolly.scalajs.react.vdom.ReactVDom.all._
import net.bblfish.test.hlistaux.SelectNOrder
import org.scalajs.dom.{Node, document}
import shapeless.PolyDefns._
import shapeless._
import shapeless.ops.hlist.Mapper
@bblfish
bblfish / extractor.scala
Created August 13, 2014 16:50
This extractor works. It starts from a very simple base
package shapeless.examples
import shapeless.PolyDefns._
import shapeless._
import shapeless.ops.hlist.At
import scala.math.Ordering
/**
@bblfish
bblfish / ScalaJSExample.scala
Created December 25, 2013 10:08
A simple ajax call using scala-js
package example
import scala.language.dynamics
import scala.scalajs.js
import js.Dynamic.{ global => g }
import org.scalajs.jquery.{jQuery => jQ, JQueryXHR, JQueryAjaxSettings}
//import scala.scalajs.js.{Dictionary, String, Any}
@bblfish
bblfish / CORSProxy.scala
Last active December 20, 2015 00:19
simple CORSProxy with Play2.2 - does not quite work. It blocks the HTTP connection, even though the URL is correctly fetched...
/*
* Copyright 2012 Henry Story, http://bblfish.net/
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
@bblfish
bblfish / crashCompiler.scala
Last active December 11, 2015 22:58
This code crahes the scala 2.10.0 compiler on OSX with java "1.7.0_11"
//Using library from "net.sf.uadetector" % "uadetector-resources" % "2012.12"
import net.sf.uadetector.service._
import net.sf.uadetector.UserAgentFamily._
import net.sf.uadetector.UserAgent
val agentParser = UADetectorServiceFactory.getResourceModuleParser
val UA = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.45 Safari/53.22"
val agent = agentParser.parse(UA)