Skip to content

Instantly share code, notes, and snippets.

View DanielOaks's full-sized avatar

Daniel Oaks DanielOaks

View GitHub Profile
@DanielOaks
DanielOaks / irc_fuzz.py
Last active April 12, 2020 15:28
Little IRC server fuzzer
#!/usr/bin/env python3
# IRC Server fuzzing, made easy!
import time
import socket
import select
import random
# settings
hostname = '127.0.0.1'
@DanielOaks
DanielOaks / message-modification.md
Last active April 9, 2020 17:16
IRCv3 message modification very drafty proposal
title layout work-in-progress copyrights
IRCv3 Message Modification
spec
true
name email period
Daniel Oakley
daniel@danieloaks.net
2017

IRC Client Registration

 ->  means lines that the client sends to the server.
<-   means lines that the server sends to the client.

Normal Registration

IRC Roleplay Commands

Daniel Oaks daniel@danieloaks.net


Introduction

People like to use IRC to roleplay. In other words, to act out characters as part of a channel and between clients. Often, this means it's desirable to send messages with names other than the client's nickname, and to send messages not explicitly attached to a name at all.

<limit> is defined by the server/bouncer by default, but the client can optionally ask for a different limit.

CHATHISTORY #ircv3 BEFORE id=ytNBbt565yt4r3err3 [<limit>]
    - get up to <limit> number of messages before the given id/time
CHATHISTORY #ircv3 AFTER id=ytNBbt565yt4r3err3 [<limit>]
    - get up to <limit> number of messages after the given id/time
CHATHISTORY #ircv3 LATEST id=ytNBbt565yt4r3err3 [<limit>]
    - get the most recent (up to `<limit>`) messages that have been sent since the given id/time
    - if * is given instead of a specific ID, just the most recent messages with no limit

CHATHISTORY #ircv3 AROUND id=ytNBbt565yt4r3err3 []

@DanielOaks
DanielOaks / writing-a-spec.md
Last active March 8, 2019 01:47
proposed IRCv3 writing-a-spec document draft

How to write an IRCv3 Specification

This rough guide aims to take you through the process of writing an IRCv3 specification and getting it accepted! It doesn't lay out exactly what you must do for a document to get accepted, but should be a useful set of suggestions and considerations to keep in mind as you go through the process.

Why write a spec?

There are a few main reasons why you'd want to write up a spec for inclusion within the IRCv3 Working Group:

  • You'd like to change an aspect of the IRC protocol, and write down in very exact detail how that change works.
  • You have a cool, interesting, and/or useful feature in your software and think that other software should include it.

title: "ACC Multi-Factor Authentication" layout: spec copyrights:

name: "Daniel Oaks"
period: "2019"
email: "daniel@danieloaks.net"

name: "Shivaram Lingamneni"

package main
import (
"log"
"fmt"
"strings"
"sync"
"strconv"
"net"
// thanks to https://www.glennklockwood.com/electronics/max7219.html and http://www.gammon.com.au/forum/?id=11516 for help
// and to the data sheet
#include <SPI.h>
#define selectPin D2
#define REG_NOOP 0x00
#define REG_DIGIT_0 0x01
#define REG_DIGIT_1 0x02
#define REG_DIGIT_2 0x03

How to stay motivated and constantly learn new things

words words words

How do I stay motivated when life sucks?

Everyone's life sucks sometimes. It's a long, hard slog of good times and bad.

When those bad times come, it's really easy to tell yourself that everyone else is going well. You see everything flowing by on Twitter, Facebook or maybe even just day-to-day in life. Nothing is crumbling, nothing's falling down, but your life is.