Skip to content

Instantly share code, notes, and snippets.

View jessitron's full-sized avatar
🚀
"I'm in"

Jessica Kerr jessitron

🚀
"I'm in"
View GitHub Profile
@jessitron
jessitron / CoreWebVitals.ts
Last active March 26, 2023 21:39
OpenTelemetry instrumentation for JavaScript in the Browser: it sends a trace with a span for each CWV (Core Web Vitals) metric. By Purvi Kanal
import { onFID, onLCP, onCLS, onINP, onTTFB } from 'web-vitals'; // you'll need to install this
import { InstrumentationBase, InstrumentationModuleDefinition } from '@opentelemetry/instrumentation';
import { trace, context } from '@opentelemetry/api';
import { hrTime } from '@opentelemetry/core';
export class WebVitalsInstrumentation extends InstrumentationBase {
constructor() {
super('web-vitals-instrumentation', 'v0.1.0');
}
protected init(): void | InstrumentationModuleDefinition<any> | InstrumentationModuleDefinition<any>[] {
@jessitron
jessitron / values.yaml
Created July 8, 2022 18:04
Configure the opentelemetry-collector helm chart to receive traces from a front end and send them to Honeycomb
mode: deployment
config:
exporters:
otlp/honeycomb:
endpoint: api.honeycomb.io:443
headers:
"x-honeycomb-team": YOUR-HONEYCOMB-API-KEY-HERE
logging:
loglevel: debug
@jessitron
jessitron / package.json
Created June 2, 2022 23:03
Send Node.js instrumentation to Honeycomb
{ ...
"dependencies": {
"@grpc/grpc-js": "^1.5.7",
"@opentelemetry/api": "^1.1.0",
"@opentelemetry/core": "^1.1.1",
"@opentelemetry/exporter-trace-otlp-grpc": "^0.27.0",
"@opentelemetry/instrumentation": "^0.27.0",
"@opentelemetry/instrumentation-express": "^0.28.0",
"@opentelemetry/instrumentation-http": "^0.27.0",
"@opentelemetry/resources": "^1.1.1",
@jessitron
jessitron / fix-stderr.ps1
Last active March 17, 2021 20:28
Unwrapping STDERR in Powershell
<#
.Synopsis
STDERR strings get wrapped in an ErrorRecord. Unwrap those back into strings.
#>
function Convert-StderrString {
# Why can this not be an advanced function with [CmdletBinding()] ?
# Somehow it doesn't work if I put that in.
@jessitron
jessitron / gist:e1a3fc188b63b5baf0817114731ea8cf
Created March 7, 2018 13:35
Atomist command to find out who is reviewing
import { commandHandlerFrom } from "@atomist/automation-client/onCommand";
import { HandleCommand } from "@atomist/automation-client";
import { Parameters } from "@atomist/automation-client/decorators";
import * as _ from "lodash"
@Parameters()
export class WhoIsBusyParameters {
}
function readConfig(): Promise<DeletionCriteria> {
return promisify(fs.readFile)("config/deletionCriteria.json", { encoding: "utf8" })
.then(configFileContent =>
JSON.parse(configFileContent));
}
@jessitron
jessitron / Properties.elm
Created April 17, 2016 00:04
An Elm program using elm-check that is compatible with elm-test (the Node module)
module Main (..) where
import ElmTest
import Check exposing (Evidence, Claim, that, is, for)
import Check.Test
import Check.Producer as Producer
import List
import Signal exposing (Signal)
import Console exposing (IO)
import Task
module CarrotPotato where
import StartApp
import Task exposing (Task)
import Signal exposing (Signal, Address)
import Effects exposing (Effects, Never)
import Html exposing (Html)
--
-- StartApp boilerplate
@jessitron
jessitron / EffectsTest.elm
Last active September 22, 2015 15:08 — forked from urfolomeus/EffectsTest.elm
The send Task can turn into the NoOp effect
module EffectsTest where
import Html exposing (..)
import Html.Events exposing (onClick)
import StartApp exposing (App)
import Task exposing (Task)
import Effects exposing (Effects, Never)
@jessitron
jessitron / Failure.elm
Created August 16, 2015 00:07
An Elm Error: declaring a type equal to another doesn't make sense
module Failure where
import InnerComponent
--- ACTION
type InnerAction = InnerComponent.Action -- oops, meant type alias
type Action = Passthru InnerAction
-- MODEL