Skip to content

Instantly share code, notes, and snippets.

@giner
giner / gist:cbc8b0902a94f7ad6e50a1e83fa88a05
Last active April 6, 2026 03:39
Workflow to test Truthy and Falsy expressions in GitHub Actions conditionals
on:
push:
jobs:
test-github-actions-expressions-in-conditionals:
runs-on: ubuntu-latest
steps:
# Note that in conditionals, falsy values (false, 0, -0, "", '', null) are coerced to false and truthy (true and other non-falsy values) are coerced to true.
# See https://docs.github.com/en/actions/reference/workflows-and-actions/expressions#literals
- run: "echo \"if: always() && 0 == false\""
@giner
giner / gist:dbf695c0a35ed948cf686820662508dd
Created March 22, 2026 13:50
Compile and install bccmd
curl -O https://www.kernel.org/pub/linux/bluetooth/bluez-5.55.tar.xz
tar -xf bluez-5.55.tar.xz
cd bluez-5.55
gcc tools/{bccmd,csr*,ubcsp}.c -o tools/bccmd -I. $(pkg-config --cflags --libs bluez)
mkdir -p ~/bin
cp tools/bccmd ~/bin/
@giner
giner / read-vars.sh
Last active December 9, 2025 18:19
Read values for specified environment variables from user input if they are not already set or not exported and print export commands
# Moved to https://github.com/giner/bash-libs/blob/main/read-vars.sh
@giner
giner / configure_bash_prompt_for_git.sh
Created January 30, 2025 03:44
Add Git info to Bash prompt
#!/bin/bash
set -eu
# Add Git info to Bash prompt
bash_prompt_configuration=(
'PS1="${PS1%\\$ }\$(__git_ps1)\\$ "'
'GIT_PS1_SHOWDIRTYSTATE=1'
)
@giner
giner / xorg_remap_play_to_micmute.sh
Last active November 30, 2021 03:46
Remap Play button to Mic Mute (primarily for Bluetooth Headsets)
#!/bin/sh
# NOTE: This change won't persist if package xkb-data is reinstaled or updated
sudo sed -i '/key <I208>/s/\bXF86AudioPlay\b/XF86AudioMicMute/' /usr/share/X11/xkb/symbols/inet
@giner
giner / HelloFeignmTLS.java
Last active March 2, 2025 14:10
Java: Feign Client mTLS (by enabling custom keystore and truststore for a specific enpoint)
// How to test
//
// Update uriPrefix, keystoreFile, keystorePassword, truststoreFile, truststorePassword with your values and run:
// curl -L -O https://repo1.maven.org/maven2/io/github/openfeign/feign-core/11.6/feign-core-11.6.jar
// java -cp feign-core-11.6.jar HelloFeignmTLS.java
// Feign
import feign.Feign;
import feign.RequestLine;
@giner
giner / java-mtls-client.sh
Last active August 29, 2021 12:33
Java: Enable client side mTLS without modifying application
# Notes:
# - option javax.net.ssl.trustStore replaces default java truststore
# i.e. TLS connections other than mTLS won't be possible unless
# the new truststore contains Common CA certificates
# - The custom CA certificate from truststore.pkcs12 will be used by
# all TLS connections initiated from the app. Make sure you can
# fully trust this CA in your specific case.
# - Generation of the keystores is not a part of this snippet and can
# be easily found on other resources
#
@giner
giner / HelloWorldJava
Last active August 29, 2021 13:35
Java: Run Java code without compiling (JEP 330)
#!/usr/bin/env -S java --source 11
class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
@giner
giner / HelloFeign.java
Last active August 29, 2021 11:39
Java, OpenFeign: Minimalistic quick start example
// Usage:
// curl -L -O https://repo1.maven.org/maven2/io/github/openfeign/feign-core/11.6/feign-core-11.6.jar
// java -cp feign-core-11.6.jar HelloFeign.java
import feign.Feign;
import feign.RequestLine;
public class MyFeignClient {
private static final String uriPrefix = "https://github.com";
@giner
giner / cache.py
Last active September 2, 2022 18:48
Python: Simple way to cache function result using decorator
#!/usr/bin/python
def cache(func):
def wrapper(*args, **kwargs):
if hasattr(func, "cache"):
return func.cache
func.cache = func(*args, **kwargs)
return func.cache
return wrapper