Skip to content

Instantly share code, notes, and snippets.

@magopian
magopian / gist:297d20e95b49daf3ad934e36b1855e82
Created November 28, 2018 16:56
elm decoder very helpful to debug decoders used in event handlers (thanks @JoelQ on the elm slack)
module Main exposing (main)
import Html exposing (Html, text)
import Json.Decode as Decode exposing (Decoder)
loggingDecoder : Decoder a -> Decoder a
loggingDecoder realDecoder =
Decode.value
|> Decode.andThen
@magopian
magopian / paste_table_data_parse_newlines.js
Created April 19, 2018 15:29
Paste table data from copying from excel/libreoffice, and change <br /> to newlines
/* Quick and dirty experiment:
* Copy cells from a spreadsheet document (excel, libreoffice), and paste in a web page.
* Replace the <br /> in the cells with new lines, so when getting the innerHTML or the textContent,
* the result is "formatted".
*/
document.addEventListener("paste", evt => {
const content = evt.clipboardData.getData("text/html");
console.log("content:", content);
const parser = new DOMParser();
const doc = parser.parseFromString(content, "text/html");
@magopian
magopian / example.elm
Created February 9, 2018 11:09
syntax gripes with Elm
{-
There's two ways to create a record in Elm: with the "type constructor" and with the "record syntax".
The fact that there's two ways to do the same thing is already a bit disconcerting, but the worst
part is that there's no way to do it and have the best of both worlds regarding naming (which is
great for clarity, maintenance and refactoring: think about grepping on names for example).
-}
type alias Person = {
firstName: String,
@magopian
magopian / mood.py
Created October 28, 2016 16:25
BBC micro:bit mood feedback
from microbit import *
def blink(img):
for i in range(5):
display.show(img)
sleep(200)
display.clear()
sleep(200)
@magopian
magopian / inscrits.py
Created October 12, 2016 17:43
Dirty script to get/filter attendees for the PyConFR 2016
# Needs the following libraries:
# requests==2.11.1
# unidecode
import csv
import requests
import sys
from collections import OrderedDict
from unidecode import unidecode
# Keys:
module Main exposing (..)
import Html
import Html.App
import Html.Events
import Http
import Json.Decode as Json exposing ((:=))
import Task
import Html
import Html.App
import Html.Events
import Http
import Json.Decode as Json exposing ((:=))
import Task
url : String
url = "http://swapi.co/api/people/1/?format=json"
@magopian
magopian / aiohttp + aiopg.py
Last active October 4, 2019 08:48
experiments with python asyncio (all three are roughly the same speed as the werkzeug+pg version, as it's CPU bound, not IO bound: asyncio doesn't help in such cases)
"""start with:
gunicorn utilery.views_aiohttp_aiopg:app -b 0.0.0.0:3579 -w 4 -k aiohttp.worker.GunicornWebWorker"""
import asyncio
import json
import math
import time
import psycopg2
import psycopg2.extras
@magopian
magopian / index.js
Created March 11, 2016 08:54
requirebin sketch
// require() some stuff from npm (like you were using browserify)
// and then hit Run Code to run it on the right
var Validator = require('jsonschema').Validator;
var v = new Validator();
var schema = { "allOf" : [
{"type": "boolean"},
{"type": "string"}
]}
console.log(v.validate("foobar", schema));
@magopian
magopian / watch_turtle.py
Last active August 29, 2015 14:25
Auto-reload turtle code on file save (https://docs.python.org/3/library/turtle.html)
"""Reloads the `my_turtle.py` code on save.
Put simple turtle instructions in the `my_turtle.py` file,
and they'll be re-run (on a clean window) on each file save.
Usage:
1/ put some turtle instructions in a `my_turtle.py` file
(eg `turtle.forward(100)`)
2/ run `python watch_turtle.py` on a commandline
(no dependencies needed)