Skip to content

Instantly share code, notes, and snippets.

View maelvls's full-sized avatar

Maël Valais maelvls

View GitHub Profile
@maelvls
maelvls / README.md
Last active July 13, 2020 13:38
[MOVED] Ngroker — a tiny helper for creating an ngrok session for pairing with my colleagues → https://github.com/maelvls/ngroker
@maelvls
maelvls / README.md
Last active April 21, 2020 15:12
VSCode conf and plugins
% code --list-extensions | pbcopy
adamhartford.vscode-base64
ahebrank.yaml2json
alexdima.copy-relative-path
aliariff.auto-add-brackets
anseki.vscode-color
aprilandjan.ascii-tree-generator
bierner.markdown-preview-github-styles
codezombiech.gitignore

v1.f()

  v1.f()
  0x109959d		488d059c1a0500		LEAQ go.itab.*main.concrete,main.abstract(SB), AX
  0x10995a4		8400			TESTB AL, 0(AX)
  0x10995a6		488d05eba40f00		LEAQ runtime.zerobase(SB), AX
  0x10995ad		48890424		MOVQ AX, 0(SP)
  0x10995b1		e81a000000		CALL main.(*concrete).f(SB)
@maelvls
maelvls / gracefully_shutdown.go
Last active September 23, 2019 07:05
Graceful shutdown with Context + channels (https://play.golang.org/p/ZBxNMddpbj2)
// The point of this snippet is to showcase how to handle gracefully any incoming
// SIGINT (manual ctrl-c) or SIGTERM (process is killed) for a long-running task
// such as a server.
package main
import (
"context"
"fmt"
"log"
"os"
@maelvls
maelvls / README.md
Last active September 8, 2019 16:54
Creating a gcloud project and service account for Rob Pike's upspin
gcloud projects create upspin42
gcloud iam service-accounts create --project  upspin-service-account
gcloud iam service-accounts create --project upspin42 upspin-service-account
gcloud projects add-iam-policy-binding upspin42 --role=roles/owner --member=serviceAccount:upspin-service-account@upspin42.iam.gserviceaccount.com
gcloud iam service-accounts keys create json_key.json --iam-account upspin-service-account@upspin42.iam.gserviceaccount.com --project upspin42
gcloud alpha billing projects link --billing-account $(gcloud alpha billing accounts list --format json | jq -r '.[0].name') upspin42

gcloud dns record-sets transaction start --zone maelvls
gcloud dns record-sets transaction add --project august-period-234610 --zone=maelvls --type=A --ttl 300 --name upspin.maelvls.dev. 34.89.156.68

How to work with the authorization.go middleware

I wanted to make sure no one gets slowed down in their PRs because of the introduction of authorization.go. It has been added to all the services and all HTTP endpoints are affected. Here is how to get around that.

The current impl of authorization.go is algorithm-agnostic regarding the verification. The gateway or sidecar proxy (Envoy/Istio) will handle the verification.

@maelvls
maelvls / openapi.yml
Last active July 29, 2019 09:38
OpenAPI example with discriminator (union types or 'inheritance')
openapi: 3.0.2
info:
title: Dogs and cats
description: some dogs and some cats
version: 1.0.0
paths:
/pets:
patch:
requestBody:
@maelvls
maelvls / README.md
Last active July 22, 2019 08:54
My setup

Software (I run macOS):

  • USB overdrive (the default macOS mouse acceleration drives me crazy; also allows me to invert up/down scolling for the mouse only; I keep "natural scrolling" turned on in the system settings)
  • HyperSwitch for switching between windows with alt+tab (cmd+tab only allows to switch between apps)
  • iTerm 2 + zsh + antigen + async prompt theme (agkozak-zsh-prompt) + tons of stuff around command line

Desk setup:

@maelvls
maelvls / README.md
Last active July 4, 2019 08:48
Resources I gathered about remote work things
  • 📖 Remote: Office Not Required (2003, by 37signals/Basecamp): amazon
  • 📺🇫🇷 Aussi efficace à la maison qu'au bureau (Jean-Laurent de Morlhon): youtube
  • 🎙Remote Work Podcast (by trackly.com): apple podcast
@maelvls
maelvls / README.md
Last active November 27, 2020 08:20
What I dislike about Java
  • We can't throw exceptions from a lambda.

    Arrays.asList(sort_by.split(",")).stream()
      .reduce(new ArrayList<com.couchbase.client.java.query.dsl.Sort>(), (acc, str) -> {
      	String[] a = str.split(":");
      	if (a == null || a.length != 2) {
      		return acc;
      	}

if ("asc".equals(a[1])) {