Skip to content

Instantly share code, notes, and snippets.

View olso's full-sized avatar
🏠
Working from home

Martin Olsansky olso

🏠
Working from home
View GitHub Profile
@olso
olso / my-spotify.json
Last active July 5, 2023 08:51
sziget festival 2023 music artists (376) - created 04.07.2023
["011eVl0FyqNUnk3QYmk8WL","01p7Homi0d4XxZ06f2NYYD","022EiWsch2zvty0qBUksDO","023YMawCG3OvACmRjWxLWC","02BMnlA7rSCkmRL0bk5yBI","02kJSzxNuaWGqwubyUba0Z","03izpJLcUsyHBRo8B0VmpV","03r4iKL2g2442PT9n2UKsx","041iTeoMIwXMlShuQPIVKo","04c4aSTmNl9PZenyKf9HAZ","04ei5kNgmDuNAydFhhIHnD","04sdYA6aRRrgtQbIj2Z8Fm","04tBaW21jyUfeP5iqiKBVq","053q0ukIDRgzwTr4vNSwab","057qREWR4HFblc9ghFDqZn","066X20Nz7iquqkkCW6Jxy6","06xa1OLBsMQJFXcl2tQkH4","07EcmJpfAday8xGkslfanE","07MxlqJkTQAH8jHkTLii9l","07RLNeraLVTmD306R6en8j","07W5P7XeF76KG9QecpdSCC","07d5etnpjriczFBB8pxmRe","085pc2PYOi8bGKj0PNjekA","0AkpPlFLnr0VQwZQeMGht0","0C0XlULifJtAgn6ZNCW2eu","0CbbftseLRwYyUdmOXvH6l","0CfkmCl2XN2IWxYcMzPMlq","0D4Wk6S4YE9fbVSozQ6vq2","0DGAOR3KtqWwWSwDzhzqOa","0EEHriKw0Gzrmb2ZII2apY","0GZP8QBchHTcjn9jFtLDtK","0HlxL5hisLf59ETEPM3cUA","0IF46mUS8NXjgHabxk2MCM","0JlTFsR41vwvQTppOR3yio","0KvmdoRMUgAuHqgVJGuIMd","0L8ExT028jH3ddEcZwqJJ5","0NDElNqwGRCmsYIQFapp6K","0NTJ337UEOc4nerp6w7msP","0NbfKEOTQCcwd6o7wSDOHI","0O7NhieDairfQvi9jr66Cx","0O98jlCaPzvsoei6U5jfEL
@olso
olso / LottieWebReact.tsx
Last active January 19, 2023 01:38
Lottie web example with react, styled components, hooks, typescript, ssr, without memory leaks (hopefully)
import * as React from "react";
import styled from "styled-components";
import lottie from "lottie-web";
import { up } from "styled-breakpoints";
import { isServer } from "client/consts/env";
const Container = styled.div`
width: 100vw;
height: 100vh;
@olso
olso / gist:78634c1f87f523fbcf5455c1b4e4fc52
Created June 24, 2020 11:12
Gitlab multiple runners on the same host and limit one job per runner, due to node module caching. Also separated runner per repo
concurrent = 4
check_interval = 0
[session_server]
session_timeout = 1800
[[runners]]
name = "hoeapp"
url = "https://gitlab.com/"
token = ""
build_go:
docker run --rm \
-v `pwd`/src:/game \
--env GOOS=js --env GOARCH=wasm \
golang:1.12-rc \
/bin/bash -c "go build -o /game/game.wasm /game/main.go; cp /usr/local/go/misc/wasm/wasm_exec.js /game/wasm_exec.js"
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1.0" />
<style>body{height:100%;width:100%;padding:0;margin:0;background-color:#000000;color:#FFFFFF;font-family:Arial,Helvetica,sans-serif}</style>
<script type="text/javascript" src="./wasm_exec.js"></script>
<script type="text/javascript">
async function run(fileUrl) {
try {
package main
import (
// https://github.com/golang/go/tree/master/src/syscall/js
"syscall/js"
)
var (
// js.Value can be any JS object/type/constructor
window, doc, body, canvas, laserCtx, beep js.Value
func main() {
setup()
// declare renderer at compile time
var renderer js.Func
// looks like JS callback, right 😌
renderer = js.FuncOf(func(this js.Value, args []js.Value) interface{} {
updateGame()
// for the 60fps anims
window.Call("requestAnimationFrame", renderer)
func main() {
// https://stackoverflow.com/a/47262117
// creates empty channel
runGameForever := make(chan bool)
setup()
// attempt to receive from empty channel
// since noone ever sends anything on it, it's essentially a blocking forever operation
// we basically have a daeomon/service/background program
func updatePlayer(event js.Value) {
mouseX := event.Get("clientX").Float()
mouseY := event.Get("clientY").Float()
// basically threads/async/parallelism
// TODO difference with Web Workers
// TODO difference with Service Workers
// https://gobyexample.com/goroutines
go log("mouseEvent", "x", mouseX, "y", mouseY)
1. resend all rides to your email throught app (manual clicking but not so bad)
2. in gmail, go to settings and disable conversation mode view
3. select all emails from bold and right click to send as attachement
4. send this email to yourself
5. download all attachements
6. (optinal) revert settings in step 2.
download invoices using bash:
for f in * ; do
URL=`grep -roh "$f" -e 'https:\/\/invoice.taxify.eu\/[^"]*'`