Skip to content

Instantly share code, notes, and snippets.

@ccampo133
ccampo133 / duck.go
Last active August 21, 2024 16:33
Duck Typing (horror) in Go
package main
import "fmt"
type Duck interface {
Swim()
Quack()
}
type Mallard struct{}
@ccampo133
ccampo133 / merge_channels.go
Created September 12, 2022 19:19
Generic function to merge multiple channels into a single channel (fan-in)
package main
import (
"sync"
)
// Adapted from https://go.dev/blog/pipelines
func mergeChannels[T any](channels ...<-chan T) chan T {
var wg sync.WaitGroup
wg.Add(len(channels))
@ccampo133
ccampo133 / CHANGE_MAC_COMPUTER_NAME.md
Last active May 2, 2022 14:50
Change Mac computer and host name

Change a Mac computer name:

sudo scutil --set ComputerName "newname"
sudo scutil --set LocalHostName "newname"
sudo scutil --set HostName "newname"
dscacheutil -flushcache

Reboot.

@ccampo133
ccampo133 / README.md
Created May 4, 2021 21:21
SQS Exponential Backoff

Usage

I recommend using a virtualenv:

$ python -m venv venv
# ... assuming that 'python' points to a Python 3.7 installation

Then activate it:

$ source venv/bin/activate

@ccampo133
ccampo133 / ULID.kt
Last active August 24, 2022 19:06
ULID in Kotlin
/**
* Adopted from https://github.com/JonasSchubert/kULID
*
* MIT License
*
* Copyright (c) 2021 GuepardoApps (Jonas Schubert), Christopher J. Campo
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
@ccampo133
ccampo133 / bbpr
Last active July 10, 2020 14:38
Script to create Bitbucket Cloud PR
#!/usr/bin/env sh
# Create a Bitbucket Cloud PR from the command line. Expects the following
# environment variables:
# * BITBUCKET_CLIENT_ID
# * BITBUCKET_CLIENT_SECRET
#
# These can be obtained by creating a Bitbucket "OAuth Consumer". See:
# https://support.atlassian.com/bitbucket-cloud/docs/use-oauth-on-bitbucket-cloud
#
@ccampo133
ccampo133 / dynamic_version.md
Created May 11, 2020 15:28
Dynamically set a Maven project version from the command line

Here's a little trick to set a Maven project's version from the command line and environment variables, using a build profile.

Assuming your POM looks something like this:

<artifactId>example</artifactId>
<version>${project.version}</version>
...
<properties>
 1.0.0
@ccampo133
ccampo133 / install_helm2.sh
Created April 8, 2020 15:10
Installing Helm 2 on Mac (w/ Homebrew)
brew install helm@2
brew link --force helm@2
@ccampo133
ccampo133 / TimeZoneRule.java
Created March 27, 2020 15:59
JUnit rule to set system. default time zone.
import org.junit.rules.TestRule;
import org.junit.runner.Description;
import org.junit.runners.model.Statement;
import java.util.TimeZone;
/**
* Sets the default time zone to be used for JUnit tests. The system default time zone is reset
* after each test method. Use it like any other JUnit rule.
*
@ccampo133
ccampo133 / logbook.sh
Created March 26, 2020 22:54
Logbook
function lb() {
local dir="$HOME/daily-log/$(date '+%Y')/$(date '+%m')"
mkdir -p $dir
# 'code' is your text editor of choice... in this case VS Code
code $HOME/daily-log/
code $dir/$(date '+%Y-%m-%d').md
}