Skip to content

Instantly share code, notes, and snippets.

@michiel
michiel / get_secret.yaml
Created May 16, 2025 00:57
Re-usable CodeFresh build step to access GCP Secrets Manager secrets
version: "1.0"
name: Secure Secret Run with GCP
description: |
Securely runs a user-provided shell script/command with a secret fetched from GCP Secret Manager.
The secret is provided directly to the script's standard input (stdin).
This step is designed to prevent the secret value from being exposed in environment variables,
Codefresh logs (by this step itself), or unintentionally written to disk *by this step*.
Security Considerations:
- Shared Responsibility: The ultimate security of the secret, once it is piped to the
@michiel
michiel / clone-jira-epic.py
Last active March 2, 2025 19:20
Deep clone Jira epic
from atlassian import Jira
# Jira Configuration
JIRA_URL = "https://your-jira-instance.atlassian.net"
JIRA_USER = "[email protected]"
JIRA_API_TOKEN = "your-api-token"
# Initialize Jira connection
jira = Jira(url=JIRA_URL, username=JIRA_USER, password=JIRA_API_TOKEN, cloud=True)
@michiel
michiel / arch.dot
Created July 29, 2021 23:23
Architecture concerns (graphviz)
digraph architecture {
layout="neato";
node [fontname = "Helvetica"];
edge [fontname = "Helvetica"]; splines=true;
overlap=false;
nodesep="0.2";
ranksep="0.4";
label="Architecture";
labelloc="t";
fontname="Lato";
@michiel
michiel / clean-git.sh
Created October 27, 2020 11:07
clean out git directories to free up space
#!/bin/bash
# Clean out git repos to save space
for d in `find . -maxdepth 1 -type d`
do
pushd . > /dev/null
cd "$d"
echo "Trying $d"
@michiel
michiel / latency.txt
Created October 4, 2020 06:12 — forked from jboner/latency.txt
Latency Numbers Every Programmer Should Know
Latency Comparison Numbers (~2012)
----------------------------------
L1 cache reference 0.5 ns
Branch mispredict 5 ns
L2 cache reference 7 ns 14x L1 cache
Mutex lock/unlock 25 ns
Main memory reference 100 ns 20x L2 cache, 200x L1 cache
Compress 1K bytes with Zippy 3,000 ns 3 us
Send 1K bytes over 1 Gbps network 10,000 ns 10 us
Read 4K randomly from SSD* 150,000 ns 150 us ~1GB/sec SSD
@michiel
michiel / weasel-words.json
Created July 30, 2020 10:50
List of weasel words
[
"all the time",
"as much as",
"believe",
"best practice",
"can",
"can be",
"claim",
"could",
"cutting-edge",
@michiel
michiel / cisq-model.puml
Created July 2, 2020 01:23
CISQ Quality Model
@startuml
skinparam linetype poly
rectangle "Quality Dimension" {
agent Reliability
agent Security
agent Efficiency
agent Maintainability
agent Size
import svgwrite
import math
import json
class Pyramid:
def __init__(self, data, filename, height=500):
self.data = data
self.filename = filename
self.height = height
self.width = 2 * height
@michiel
michiel / list-active-cloudfront-deployments.sh
Created April 8, 2020 03:27
List active cloudfront deployments with AWS CLI and jq
#!/bin/sh
AWS_PROFILE=my-profile
AWS_REGION=ap-southeast-2
aws --profile=$AWS_PROFILE \
--region=$AWS_REGION \
cloudfront list-distributions \
| jq '.DistributionList.Items[].Origins.Items[] | {Id: .Id, OriginPath: .OriginPath}'
@michiel
michiel / transport-dynamodb-data.sh
Created March 26, 2020 00:13
Export and import DynamoDB data across environments
#!/bin/sh
SOURCE_TABLE=xxx-mydata-accp
TARGET_TABLE=xxx-mydata-prod
AWS_PROFILE=default
AWS_REGION=ap-southeast-2
# Step 1 - export and transform
aws --profile=$AWS_PROFILE \