Skip to content

Instantly share code, notes, and snippets.

View carterpeel's full-sized avatar
O(logn) enthusiast

Carter carterpeel

O(logn) enthusiast
  • Grand Rapids, Michigan
  • 06:53 (UTC -05:00)
View GitHub Profile
carterpeel / tickpool.go
Created February 28, 2022 14:45
Ticker Pool
View tickpool.go
package tickpool
import (
func init() {
mu = &sync.Mutex{}
pool = &sync.Pool{
carterpeel / asyncio.go
Created February 7, 2022 20:32
Async IO in go
View asyncio.go
package asyncio
import (
type AsyncMultiWriter struct {
mu *sync.Mutex
carterpeel / play.go
Created January 30, 2022 18:54
View play.go
func (p *audioPlayer) Play(session *rtsp.Session) {
log.Logger.WithField("category", "AirPlay Player").Warnf("Starting new session")
p.curSession = session
decoder := codec.GetCodec(session)
go func(dc *codec.Handler) {
var ok bool
for {
select {
/* Is using a pre-allocated buffer for a chan receiver more ideal than:
[buf, ok := <- session.DataChan]? */
carterpeel / binary_read.go
Created January 30, 2022 16:46
View binary_read.go
// Read reads structured binary data from r into data.
// Data must be a pointer to a fixed-size value or a slice
// of fixed-size values.
// Bytes read from r are decoded using the specified byte order
// and written to successive fields of the data.
// When decoding boolean values, a zero byte is decoded as false, and
// any other non-zero byte is decoded as true.
// When reading into structs, the field data for fields with
// blank (_) field names is skipped; i.e., blank field names
// may be used for padding.
carterpeel / fastbinary_test.go
Created January 30, 2022 16:38
Binary type switch is slow
View fastbinary_test.go
package fastbinary
import (
func BenchmarkInternalBinary_Read(b *testing.B) {
carterpeel / boyer-moore.go
Created August 1, 2021 18:33
Boyer-More algorithm, ingests a []byte slice and returns the index of the first occurrence of `substr`. (this is particularly useful for large `substr` values)
View boyer-moore.go
package bm
import "bytes"
func BoyerMooreIndex(s, substr []byte) int {
d := CalculateSlideTable(substr)
return IndexWithTable(&d, s, substr)
func IndexWithTable(d *[256]int, s, substr []byte) int {
View gist:c410e7f09269f46b03833c9b4c3c5f97
This file has been truncated, but you can view the full file.
carterpeel / Syslog-Aggregator.xml
Created June 24, 2021 16:09
Example XML definition for a syslog aggregator virtual machine
View Syslog-Aggregator.xml
<domain type='kvm'>
<libosinfo:libosinfo xmlns:libosinfo="">
<libosinfo:os id=""/>
<memory unit='KiB'>14336000</memory>
<currentMemory unit='KiB'>14336000</currentMemory>
carterpeel / types.go
Created June 21, 2021 18:13
KVMTop Struct
View types.go
package main
type systemMetrics struct {
Domains []struct {
UUID string `json:"UUID"`
CPUCores int64 `json:"cpu_cores"`
CPUOtherSteal int64 `json:"cpu_other_steal"`
CPUOtherTotal int64 `json:"cpu_other_total"`
CPUSteal int64 `json:"cpu_steal"`
CPUTotal int64 `json:"cpu_total"`
carterpeel /
Created October 31, 2020 01:56 — forked from idear1203/
Play .mp4 video using Java MediaPlayer for 5 seconds. After that, the video will be closed.
import javafx.application.Application;
import javafx.beans.binding.Bindings;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
import javafx.util.Duration;