ETOOBUSY 🚀 minimal blogging for the impatient
All series - from latest back to the first.
Romeo
- Fun with Romeo
- Romeo - xxd
- Romeo - slice
- Romeo - slice build
- PNG Attachments in Romeo
- Romeo is growing
- Romeo time
- Romeo - interface consistency
- Romeo teepee gets looping option
PlantUML
Fantasy Name Generator
- Fantasy Name Generator - a grammar
- Fantasy Name Generator - a parser
- Global matching in scalar context
- nayme - a Fantasy Name Generator
- Fantasy Name Generator
Advent of Code 2022
- AoC 2022/1 - Caloric snacks
- AoC 2022/2 - Rock Paper Scissors cheat guide
- AoC 2022/3 - Misplaced supplies and where to find them
- AoC 2022/4 - Poor planning
- AoC 2022/5 - Insane crane
- AoC 2022/6 - Canned diversity
- AoC 2022/7 - ENOSPC - no space left on device
- AoC 2022/8 - Messy tree patch
- AoC 2022/9 - That little tail...
- AoC 2022/10 - Cathode Ray Tube
- AoC 2022/11 - Monkey business
- AoC 2022/12 - Human-machine interface solution
- AoC 2022/13 - Nested lists
- AoC 2022/14 - Sand accumulation
- AoC 2022/15 - Diamonds are squares in disguise
- AoC 2022/16 - Pressured shame
- AoC 2022/17 - Tetris-ish accumulation
- AoC 2022/18 - Cooling surface
- AoC 2022/19 - Head cracking
- AoC 2022/20 - Merry go round
- AoC 2022/21 - When Wolfram Alpha failed me...
- AoC 2022/22 - Dicey assumptions
- AoC 2022/23 - Unstable diffusion
- AoC 2022/24 - These elves require a lot of patience...
- AoC 2022/25 - Wind down, hot air up!
- AoC 2022/16 - Paying a debt
- AoC 2022/16 - OMG what an improvement
PDF musings
Cryptopals
- Cryptopals
- Cryptopals 1 - Convert hex to base64
- Cryptopals 2 - Fixed XOR
- Cryptopals 3 - Single-byte XOR cipher
- Cryptopals 4 - Detect single-character XOR
- Cryptopals 5 - Implementing repeated-key XOR
- Cryptopals 6 - Break repeated-key XOR
- Cryptopals 7 - AES in ECB mode
- Cryptopals 8 - Detect AES in ECB mode
- Cryptopals 9 - Implement PKCS#7 padding
- Cryptopals 10 - Implement CBC mode
- Cryptopals 11 - An ECB/CBC detection oracle
- Cryptopals 12 - Byte-at-a-time ECB decryption (Simple)
- Cryptopals 13 - ECB cut-and-paste
- Cryptopals 14 - Byte-at-a-time ECB decryption (Harder)
- Cryptopals 15 - PKCS#7 padding violation
- Cryptopals 16 - CBC bitflipping attacks
- Cryptopals 17 - The CBC padding oracle
- Cryptopals Diversion 1 - A counter
- Cryptopals 18 - Implement CTR, the stream cipher mode
- Cryptopals 19 - Break fixed-nonce CTR mode using substitutions (part 1)
- Cryptopals 19 - Break fixed-nonce CTR mode using substitutions (part 2)
- Cryptopals 19 - Break fixed-nonce CTR mode using substitutions (part 3)
- Cryptopals 20 - Break fixed-nonce CTR statistically
- Cryptopals 21 - Implement the MT19937 Mersenne Twister RNG
- Cryptopals 22 - Crack an MT19937 seed
- Cryptopals 23 - Clone an MT19937 RNG from its output
- Cryptopals 24 - Create the MT19937 stream cipher and break it
- Cryptopals 25 - Break "random access read/write" AES CTR
- Cryptopals 26 - CTR bitflipping
- Cryptopals 27 - Recover the key from CBC with IV=Key
- Cryptopals 28 - Implement a SHA-1 keyed MAC
- Cryptopals 29 - Break a SHA-1 keyed MAC using length extension
- Cryptopals 30 - Break an MD4 keyed MAC using length extension
- Cryptopals Diversion 2 - Simulating Time Leaks
- Cryptopals 31 - Implement and break HMAC-SHA1 with an artificial timing leak
- Cryptopals 32 - Break HMAC-SHA1 with a slightly less artificial timing leak
- Cryptopals 33 - Implement Diffie-Hellman
- Cryptopals 34 - Implement a MITM key-fixing attack on Diffie-Hellman...
- Cryptopals 35 - Implement DH with negotiated groups...
- Cryptopals 36 - Implement Secure Remote Password (SRP)
- Cryptopals Diversion 3 - SRP server and client
- Cryptopals 37 - Break SRP with a zero key
- Cryptopals 38 - Offline dictionary attack on simplified SRP
- Cryptopals 39 - Implement RSA
- Cryptopals 40 - Implement an E=3 RSA Broadcast attack
- Cryptopals 38 - New insights from a kind reader
Passphrases
- Passphrases
- Diceware
- Nuovo vocabolario di base della lingua italiana
- Extract words from the NVdB PDF file
- Expanding words in NVdB
- Expanding verbs in NVdB
- Expanding nouns and adjectives in NVdB
- Grouping in NVdB
- Compactification in NVdB
- Pass4me
A toy AES implementation
- AES is doable
- AES - SubBytes
- AES - ShiftRows
- AES - multiplications in GF(256)
- AES - MixColumns
- AES - Key stuff
- AES - Cipher
- AES - Higher level functions
Codeberg
App::Easer
- App::Easer
- App::Easer example
- App::Easer "multilevel" example
- App::Easer released on CPAN
- App::Easer - new example
- App::Easer gets DWIM-mer
- Feature creeping in App::Easer
- App::Easer V2 is out... and can be improved!
- App::Easer validations
skfold
- Restart from skfold
- skfold is usable!
- skfold - getting started with simple files
- skfold - repeated files
- skfold - one-off files
- Fatpacked skfold
- skfold - documentation
- skfold - a Docker image
- Docker image generation for skfold reshaped
- A long due interface change in skfold
- A skfold module for Mojolicious applications
Terminal data viewer
- Curses::UI data viewer
- ESC like a Vim
- Curses::UI data viewer becomes dew
- Dew - running a command, lazily
- Naming items in dew
QRate
- QRate
- QRate - High Level Design (provisional)
- QRate - encoding
- QRate - iterators for encoding
- QRate - decoding
Netcat in Perl
ASCII QR codes
xmpl
- xmpl - an example web application
- xmpl - the key/value API
- xmpl - in-memory key/value store
- xmpl - on-file key/value store
- xmpl - remote key/value store
- xmpl - the API for browsers
- xmpl - the "healthz" API
- xmpl - the metrics API
- xmpl - the API for everything else
- xmpl - remote key/value store healthz revisited
- xmpl - visibility API
- xmpl - the identity API
- xmpl - the page configuration API
- xmpl - enhancements by Mark Lawrence
Double Dobble
- Double Dobble - constraints
- Quest for Double Dobbles
- Double Dobble - easy optimization
- Double Dobble - slight improvement
Perl Weekly Challenge 108
- All positive integer sums
- All positive integer sums, as iterator
- All partitions of a set - preliminary considerations
- All partitions of a set - rearranging addends
- Combinations iterator
- All partitions of a set into same-sized subsets
- All partitions of a set into differently arranged subsets
- All partitions of a set
- All partitions of a set - W. Luis Mochán style
Josephus problem (AoC 2016/19)
Radioisotope Thermoelectric Generators (AoC 2016/11)
- AoC 2016/11 - Introduction
- AoC 2016/11 - Input parsing
- AoC 2016/11 - Initial data structure
- AoC 2016/11 - Initial algorithm: Dijkstra
- AoC 2016/11 - Part 1 solution
- AoC 2016/11 - Part 2 introduction
- AoC 2016/11 - New algorithm: A*
- AoC 2016/11 - New representation
- AoC 2016/11 - New parsing
- AoC 2016/11 - New identifier
- AoC 2016/11 - New heuristic
- AoC 2016/11 - New successors
- AoC 2016/11 - Part 2 solution
- AoC 2016/11 - Optimization
Conway's Game of Life
- Conway's Game of Life
- Multidimensional Conway's Game of Life
- Multidimensional Conway's Game of Life - the NestedLoops way
- The Definitive Conway's Game of Life
Base64
Playing Cards with SVG
- A card layout
- A card layout - extended
- A card layout - in Perl
- Some SVG cards
- Cardstom
- Cardstom - more flexible
Algorithm::Loops
- Algorithm::Loops
- A simplified recursive implementation of NestedLoops
- A simplified iterative implementation of NestedLoops
- Benchmarking simplified implementations of NestedLoops
- Iterator from loop
- Loop from iterator
- Iterator for NestedLoops
- Support of dynamic dimensions for nested loops
Bounding Box for SVG Paths
- Parsing SVG paths
- Why all this SVG?
- SVG path bounding box: segments
- SVG path bounding box: merge multiple boxes
- SVG path bounding box: quadratic BĂ©zier curves
- SVG path bounding box: cubic BĂ©zier curves
- Ellipses (for SVG): parameter and angles
- Ellipses (for SVG): mapping to SVG representation
- Ellipses (for SVG): finding the center
- Ellipses (for SVG): parameter values
- Ellipses (for SVG): transformation implementation
- SVG path bounding box: arcs of ellipses
BĂ©zier curves
Ordeal::Model
- Global string matching quirks
- A parser for Ordeal::Model
- Ordeal::Model::Parser: grammar
- Ordeal::Model::Parser: entry point
- Ordeal::Model::Parser: parsing generics
- Ordeal::Model::Parser: parsing generics, 2
- Ordeal::Model::Parser: parsing
Transforming Randomization
- A 4-faces die from a 6-faces die
- A D4 from a D6, with time guarantees
- A D4 from a D6 - squeeze more
- Rejection method
- Same rejection method?
- Unbounding the x axis in the rejection method
Tournaments games allocation
- Allocating games in tournaments
- Allocating games in tournaments - example
- Allocating games in tournaments - premium games and players
- Allocating games in tournaments - 3 players practicalities
- Allocating games in tournaments - 6 players matches
- Allocating games in tournaments - 6 players matches, again
- Allocating games in tournaments - 6 players matches, premium
- Allocating games in tournaments - a program
- Torneo - a tournament management system
Autobiographical numbers
- Autobiographical numbers
- Autobiographical numbers constraints - basic
- Autobiographical numbers constraints - last is zero
- Autobiographical numbers constraints - weighted sum
- Autobiographical numbers constraints - luckier weighted sum
- Autobiographical numbers constraints - step up
Aquarium
- Aquarium - parse puzzle input
- Aquarium - print puzzle
- Aquarium - constraints
- Aquarium - search the solution space
- Aquarium - cooperating constraint
- Aquarium - more cooperation from constraints
- Aquarium - search differently
- Aquarium - exploiting redundant constraints
Shell Tricks
- A shell approach
- Shell script help
- Rich’s sh (POSIX shell) tricks
- Shell quoting for exec
- Building shell arguments list dynamically
- Shell logging helpers
- Shell variables tests: is it defined?
- Shell variables tests: is it true?
- Shell variables tests: is it lengthy?
- Shell scaffolding script
Command-line Docker Applications
Playing with CAs
- Bare-bones Root CA
- Bare-bones Web Server
- Intermediate CAs are hard!
- Example on Certificates
- Generating "Example on Certificates"
- Going Back on Alpine Linux 3.6
- Intermediate CA Investigation
- Easy dumping of OpenSSL "stuff"
- Intermediate CA Solution
- ekeca
- Certificate example now with ekeca
- Certificate example on GitHub