Skip to content

Instantly share code, notes, and snippets.

View geon's full-sized avatar

Victor Widell geon

View GitHub Profile
@geon
geon / async-iterator-server.ts
Created November 30, 2018 08:47
How to build a socket server with async and for-await.
import { createServer, Socket } from "net";
// Promisified socket.write().
const write = (socket: Socket, data: Buffer | string) =>
new Promise((resolve, reject) =>
socket.write(data as Buffer, (error: Error | undefined) => {
if (error) {
reject();
} else {
resolve();
@geon
geon / Main.asm
Created August 1, 2021 20:47
Modified version of the interrupt handling in https://www.youtube.com/watch?v=LpG9gqPtNLo
; 10 SYS (4096)
*=$0801
BYTE $0E, $08, $0A, $00, $9E, $20, $28, $34, $30, $39, $36, $29, $00, $00, $00
*=$1000
start
@geon
geon / recursive-iterator.zig
Last active November 21, 2024 09:10
Implementing simple recursion as an iterator in Zig 0.11.0.
const std = @import("std");
const Buffer = std.ArrayList(u8);
const source = [_]u8{ 1, 2, 3, 4, 5 };
const expectedOrder = [_]u8{ 1, 2, 3, 4, 5, 5, 4, 3, 2, 1 };
fn recursive(read: []const u8, write: *Buffer) !void {
if (read.len > 0) {
try write.append(read[0]);
@geon
geon / signal.zig
Created June 18, 2024 18:51
Experiment with sending messages between theads.
const std = @import("std");
fn Signal(comptime T: type) type {
return struct {
message: T,
readyToRecieveMessage: std.Thread.Semaphore,
messageHasBeenSet: std.Thread.Semaphore,
const Self = @This();