Skip to content

Instantly share code, notes, and snippets.

@etaque
etaque / clientImplicits.scala
Last active January 31, 2018 06:30
404 recovering for http4s v0.17 client. Thanks helpful folks from https://gitter.im/http4s/http4s
import cats._
import cats.implicits._
import org.http4s._
import org.http4s.client._
object clientImplicits {
implicit class ClientSyntax[F[_], E](val client: Client[F]) extends AnyVal {
def expectOption[A](
req: F[Request[F]])(implicit dec: EntityDecoder[F, A], E: ApplicativeError[F, E]): F[Option[A]] = {
client.expect[A](req).map[Option[A]](Some(_)).recover {
trait Persisted {
def id: UUID
}
trait BasicDoobieTable[M <: Persisted] {
def table: String
def columns: Seq[String]
implicit def composite: Composite[M]
@etaque
etaque / Main.elm
Created February 1, 2017 06:17 — forked from nmk/Main.elm
module Main exposing (..)
import Form exposing (..)
import Form.Input as Input
import Form.Validate exposing (..)
import Html exposing (..)
type Color
= Red
package dao
import scalaz.concurrent.Task
import scalaz.stream.Process
import doobie.imports._
import scalaz._
import Scalaz._
import models.Persisted
@etaque
etaque / windowMouseDrags.js
Created January 30, 2016 08:03
Mouse drag and drop for Elm ports
const sendWindowMouseDrags = port => {
let mouseDown = false;
let mousePosition = { x: null, y: null };
const getPoint = e => ({ x: e.pageX, y: e.pageY });
document.addEventListener('mousedown', e => {
mousePosition = getPoint(e);
mouseDown = true;
port.send([mousePosition, null]);
@etaque
etaque / OnMouseWheel.elm
Created January 12, 2016 09:02
Mouse wheel with Elm
onMouseWheel : Address a -> (Float -> a) -> Attribute
onMouseWheel address toAction =
let
handler v = Signal.message address (toAction v)
in
onWithOptions "wheel" defensiveOptions decodeWheelEvent handler
defensiveOptions : Options
defensiveOptions =
{ stopPropagation = True
@etaque
etaque / sendMouseDrags.js
Created January 7, 2016 14:48
Send window mouse drag events to Elm port
const sendMouseDrags = port => {
let mouseDown = false;
let mousePosition = { x: null, y: null };
const getPoint = e => ({ x: e.pageX, y: e.pageY });
document.addEventListener('mousedown', e => {
mousePosition = getPoint(e);
mouseDown = true;
@etaque
etaque / indentation.elm
Last active December 31, 2015 14:33
Elm indentation for HTML
-- which style do you prefer?
-- commas/brackets first
rowView : Chart -> Html
rowView chart =
tr []
[ th []
[ text chart.label ]
, td
[ class "toggle"
@etaque
etaque / gist:117b31bd61f4d4a008d4
Created December 14, 2015 10:42
Install DL-100 on Arch
# yaourt displaylink
# sudo systemctl enable displaylink.service
# sudo systemctl start displaylink.service
# xrandr --listproviders
# xrandr --setprovideroutputsource 1 0
# sudo modprobe udl
# sudo vim /etc/modules-load.d/udl.conf
udl
@etaque
etaque / Foo.elm
Created October 1, 2014 15:54
Reproduction for Elm bug #793
module Foo where
type Bar = { baz : Maybe Float }