Skip to content

Instantly share code, notes, and snippets.

View kimathie's full-sized avatar

kimathie kimathie

  • @reddiant
  • Kenya
View GitHub Profile
@kimathie
kimathie / future.go
Created April 12, 2023 18:19
An implementation of a future in go
import (
"context"
"time"
)
type Task[t any] func() (t, error)
type result[t any] struct {
Error error
Success t
@kimathie
kimathie / CoreClient.java
Last active May 20, 2021 13:27
A simple ActiveMQ Artemis Core API Client
try (ServerLocator locator = ActiveMQClient.createServerLocator("tcp://localhost:61617");
ClientSessionFactory factory = locator.createSessionFactory();
ClientSession session = factory.createSession(true, true, 0)) {
String queueName = "router::hornetq";
/**
* In reference to the question
* https://stackoverflow.com/questions/67606298/how-to-configure-an-activemq-artemis-queue-not-be-created-again
* Just catch the Exception and handle it quietly and proceed executing the rest of the code.
* Hopefully this wont be necessary in future versions.
@kimathie
kimathie / TimerWheel.java
Last active December 16, 2020 21:01
Hash timing wheel
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.TimeUnit;
/**
* A timing wheel is a data structure that that provides the ability to manage
* an event/action that should take place within a specified time window. The
* idea is to have a time facility that schedules and manage timeouts
* efficiently as described by George Varghese and Tony Lauck.
*
@kimathie
kimathie / httpserver.js
Created December 9, 2020 08:23
A vanilla node js http server
const fs = require('fs');
const http = require('http');
const path = require('path');
const process = require('process');
const server = http.createServer();
const corsHeaders = {
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Methods": "*",
"Access-Control-Max-Age": 2592000
};
@kimathie
kimathie / WSSEUtil.java
Last active December 9, 2020 08:09
Web Services Security SOAP message generator
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.SecureRandom;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.Base64;
/**
* Web Services Security (WS-Security) enhancement to SOAP messaging to provide
* quality of protection through message integrity, message confidentiality, and
@kimathie
kimathie / SocketUtil.java
Last active December 19, 2020 14:54
A socket client utility
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketException;
import java.net.SocketTimeoutException;
@kimathie
kimathie / UdpServer.java
Last active December 21, 2020 08:37
A NIO UDP server
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.DatagramChannel;
import java.nio.channels.SelectionKey;
import java.nio.channels.Selector;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.Iterator;
@kimathie
kimathie / TcpServer.java
Last active December 21, 2020 08:40
A NIO TCP Server
import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.ClosedChannelException;
import java.nio.channels.SelectionKey;
import java.nio.channels.Selector;
import java.nio.channels.ServerSocketChannel;
import java.nio.channels.SocketChannel;
import java.util.concurrent.ExecutorService;
@kimathie
kimathie / SendbeeAuthToken.java
Last active April 17, 2020 22:34
step-by-step-auth-token
import java.math.BigInteger;
import java.nio.charset.StandardCharsets;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import javax.xml.bind.DatatypeConverter;
/**
*