Skip to content

Instantly share code, notes, and snippets.

@cwensel
cwensel / .envrc
Created April 4, 2024 18:31
direnv config allowing DataDog dd-trace-java to build when using SDKMan
[[ -s "${SDKMAN_DIR}/bin/sdkman-init.sh" ]] && source "${SDKMAN_DIR}/bin/sdkman-init.sh"
export JAVA_8_HOME=$(sdk home java 8.0.362-zulu)
export JAVA_11_HOME=$(sdk home java 11.0.21-zulu)
export JAVA_17_HOME=$(sdk home java 17.0.9-graalce)
export JAVA_21_HOME=$(sdk home java 21.0.1-graalce)
export JAVA_HOME=$JAVA_8_HOME
@cwensel
cwensel / ParseApache.java
Created November 9, 2023 23:57
Asked CoPilot to write a Cascading application
import cascading.flow.Flow;
import cascading.flow.FlowDef;
import cascading.flow.hadoop.HadoopFlowConnector;
import cascading.operation.regex.RegexParser;
import cascading.operation.text.DateFormatter;
import cascading.pipe.Each;
import cascading.pipe.Pipe;
import cascading.scheme.hadoop.TextDelimited;
import cascading.scheme.hadoop.TextLine;
import cascading.tap.SinkMode;
@cwensel
cwensel / DurationConverter.java
Created November 9, 2023 20:52
Uses mini-parsers-temporal library to add duration strings to config files
import heretical.parser.temporal.DurationParser;
import org.eclipse.microprofile.config.spi.Converter;
import java.time.Duration;
/**
* Uses <a href="https://github.com/Heretical/mini-parsers">Mini-Parsers</a> to parse a duration string
* in a config file.
*/
public class DurationConverter implements Converter<Duration> {
{
"app": "${PROJECT_HOME}/gradlew -q run ${GRADLE_OFFLINE_OPTION}",
"output": "build/cdk.out"
}
@cwensel
cwensel / cdk.json
Last active October 11, 2023 18:29
{
"app": "${PROJECT_HOME}/gradlew -q run ${GRADLE_OFFLINE_OPTION}",
"output": "build/cdk.out"
}
@cwensel
cwensel / cliw.sh
Created March 11, 2021 17:53
Docker CLI Wrapper
#!/usr/bin/env sh
APP_NAME="app"
USER_OPT=$(id -u $(logname)):$(id -g $(logname))
if [ -n "${ENTRY_BASH}" ]; then
ENTRY_OPT="--entrypoint /bin/bash"
fi
@cwensel
cwensel / Export all.omnijs
Created April 10, 2020 17:20
Export all Omnigraffle canvases as images
/*{
"type": "action",
"description": "Export images from current document.",
"label": "Export Canvases",
"paletteLabel": "Export Canvases"
}*/
var _ = function () {
var action = new PlugIn.Action(function (selection) {
@cwensel
cwensel / S3LogsViaKafka.java
Last active September 15, 2017 21:23
Two Cascading Flows, first to read from S3 into a Kafka queue, second to read from the queue to a partitioned directory structure.
public class S3LogsViaKafka
{
public static final String DD_MMM_YYYY = "dd-MMM-yyyy";
public static final TimeZone UTC = TimeZone.getTimeZone( "UTC" );
public static final DateType DMY = new DateType( DD_MMM_YYYY, UTC );
public static final Fields KEY = new Fields( "date", DMY );
public static final Fields LINE = new Fields( "line", String.class );
public static final Fields KEY_LINE = KEY.append( LINE );
public static void main( String[] args )
@cwensel
cwensel / tupleStreams.java
Last active March 22, 2017 06:12
Tuple Streams
long count = TupleEntryStream.entryStream( tap, flowProcess ).count();
assertEquals( 20, count );
int sum = TupleEntryStream.entryStream( tap, flowProcess )
.mapToInt( TupleEntryStream.fieldToInt( Fields.FIRST ) )
.sum();
assertEquals( 210, sum );
import java.io.IOException;
import java.lang.reflect.Type;
import java.util.List;
import java.util.Map;
import cascading.CascadingException;
import cascading.tuple.coerce.Coercions;
import cascading.tuple.type.CoercibleType;
import cascading.util.Util;
import com.fasterxml.jackson.core.JsonProcessingException;