All series - from latest back to the first.

Cryptopals

  1. Cryptopals
  2. Cryptopals 1 - Convert hex to base64
  3. Cryptopals 2 - Fixed XOR
  4. Cryptopals 3 - Single-byte XOR cipher
  5. Cryptopals 4 - Detect single-character XOR
  6. Cryptopals 5 - Implementing repeated-key XOR
  7. Cryptopals 6 - Break repeated-key XOR
  8. Cryptopals 7 - AES in ECB mode
  9. Cryptopals 8 - Detect AES in ECB mode
  10. Cryptopals 9 - Implement PKCS#7 padding
  11. Cryptopals 10 - Implement CBC mode
  12. Cryptopals 11 - An ECB/CBC detection oracle
  13. Cryptopals 12 - Byte-at-a-time ECB decryption (Simple)
  14. Cryptopals 13 - ECB cut-and-paste
  15. Cryptopals 14 - Byte-at-a-time ECB decryption (Harder)
  16. Cryptopals 15 - PKCS#7 padding violation
  17. Cryptopals 16 - CBC bitflipping attacks
  18. Cryptopals 17 - The CBC padding oracle
  19. Cryptopals Diversion 1 - A counter
  20. Cryptopals 18 - Implement CTR, the stream cipher mode
  21. Cryptopals 19 - Break fixed-nonce CTR mode using substitutions (part 1)
  22. Cryptopals 19 - Break fixed-nonce CTR mode using substitutions (part 2)
  23. Cryptopals 19 - Break fixed-nonce CTR mode using substitutions (part 3)
  24. Cryptopals 20 - Break fixed-nonce CTR statistically
  25. Cryptopals 21 - Implement the MT19937 Mersenne Twister RNG
  26. Cryptopals 22 - Crack an MT19937 seed
  27. Cryptopals 23 - Clone an MT19937 RNG from its output
  28. Cryptopals 24 - Create the MT19937 stream cipher and break it
  29. Cryptopals 25 - Break "random access read/write" AES CTR
  30. Cryptopals 26 - CTR bitflipping
  31. Cryptopals 27 - Recover the key from CBC with IV=Key
  32. Cryptopals 28 - Implement a SHA-1 keyed MAC
  33. Cryptopals 29 - Break a SHA-1 keyed MAC using length extension
  34. Cryptopals 30 - Break an MD4 keyed MAC using length extension
  35. Cryptopals Diversion 2 - Simulating Time Leaks
  36. Cryptopals 31 - Implement and break HMAC-SHA1 with an artificial timing leak
  37. Cryptopals 32 - Break HMAC-SHA1 with a slightly less artificial timing leak
  38. Cryptopals 33 - Implement Diffie-Hellman
  39. Cryptopals 34 - Implement a MITM key-fixing attack on Diffie-Hellman...
  40. Cryptopals 35 - Implement DH with negotiated groups...
  41. Cryptopals 36 - Implement Secure Remote Password (SRP)
  42. Cryptopals Diversion 3 - SRP server and client
  43. Cryptopals 37 - Break SRP with a zero key

A toy AES implementation

  1. AES is doable
  2. AES - SubBytes
  3. AES - ShiftRows
  4. AES - multiplications in GF(256)
  5. AES - MixColumns
  6. AES - Key stuff
  7. AES - Cipher
  8. AES - Higher level functions

Codeberg

  1. Codeberg
  2. Codeberg - signing up
  3. Codeberg Pages
  4. ETOOBUSY on Codeberg
  5. Codeberg Pages - Custom domains

App::Easer

  1. App::Easer
  2. App::Easer example
  3. App::Easer "multilevel" example
  4. App::Easer released on CPAN
  5. App::Easer - new example
  6. App::Easer gets DWIM-mer
  7. Feature creeping in App::Easer
  8. App::Easer V2 is out... and can be improved!
  9. App::Easer validations

skfold

  1. Restart from skfold
  2. skfold is usable!
  3. skfold - getting started with simple files
  4. skfold - repeated files
  5. skfold - one-off files
  6. Fatpacked skfold
  7. skfold - documentation
  8. skfold - a Docker image
  9. Docker image generation for skfold reshaped
  10. A long due interface change in skfold
  11. A skfold module for Mojolicious applications

Terminal data viewer

  1. Curses::UI data viewer
  2. ESC like a Vim
  3. Curses::UI data viewer becomes dew
  4. Dew - running a command, lazily
  5. Naming items in dew

QRate

  1. QRate
  2. QRate - High Level Design (provisional)
  3. QRate - encoding
  4. QRate - iterators for encoding
  5. QRate - decoding

Netcat in Perl

  1. Netcat... in Perl
  2. Reinventing Netcat in Perl
  3. Proxy setup for Netcat in Perl
  4. AnyEvent for Netcat?

ASCII QR codes

  1. QRcode.show
  2. Term::QRCode

xmpl

  1. xmpl - an example web application
  2. xmpl - the key/value API
  3. xmpl - in-memory key/value store
  4. xmpl - on-file key/value store
  5. xmpl - remote key/value store
  6. xmpl - the API for browsers
  7. xmpl - the "healthz" API
  8. xmpl - the metrics API
  9. xmpl - the API for everything else
  10. xmpl - remote key/value store healthz revisited
  11. xmpl - visibility API
  12. xmpl - the identity API
  13. xmpl - the page configuration API
  14. xmpl - enhancements by Mark Lawrence

Double Dobble

  1. Double Dobble - constraints
  2. Quest for Double Dobbles
  3. Double Dobble - easy optimization
  4. Double Dobble - slight improvement

Perl Weekly Challenge 108

  1. All positive integer sums
  2. All positive integer sums, as iterator
  3. All partitions of a set - preliminary considerations
  4. All partitions of a set - rearranging addends
  5. Combinations iterator
  6. All partitions of a set into same-sized subsets
  7. All partitions of a set into differently arranged subsets
  8. All partitions of a set
  9. All partitions of a set - W. Luis Mochán style

PlantUML

  1. PlantUML
  2. PlantUML Online Server
  3. PlantUML Docker image

Josephus problem (AoC 2016/19)

  1. AoC 2016/19 - Josephus problem
  2. AoC 2016/19 - Halving Josephus
  3. AoC 2016/19 - Dynamic Josephus

Radioisotope Thermoelectric Generators (AoC 2016/11)

  1. AoC 2016/11 - Introduction
  2. AoC 2016/11 - Input parsing
  3. AoC 2016/11 - Initial data structure
  4. AoC 2016/11 - Initial algorithm: Dijkstra
  5. AoC 2016/11 - Part 1 solution
  6. AoC 2016/11 - Part 2 introduction
  7. AoC 2016/11 - New algorithm: A*
  8. AoC 2016/11 - New representation
  9. AoC 2016/11 - New parsing
  10. AoC 2016/11 - New identifier
  11. AoC 2016/11 - New heuristic
  12. AoC 2016/11 - New successors
  13. AoC 2016/11 - Part 2 solution
  14. AoC 2016/11 - Optimization

Conway's Game of Life

  1. Conway's Game of Life
  2. Multidimensional Conway's Game of Life
  3. Multidimensional Conway's Game of Life - the NestedLoops way
  4. The Definitive Conway's Game of Life

Fantasy Name Generator

  1. Fantasy Name Generator - a grammar
  2. Fantasy Name Generator - a parser
  3. Global matching in scalar context
  4. nayme - a Fantasy Name Generator

Base64

  1. Base64
  2. Base64 in Perl
  3. A POSIX shell-only Base64 decoder

Playing Cards with SVG

  1. A card layout
  2. A card layout - extended
  3. A card layout - in Perl
  4. Some SVG cards
  5. Cardstom
  6. Cardstom - more flexible

Algorithm::Loops

  1. Algorithm::Loops
  2. A simplified recursive implementation of NestedLoops
  3. A simplified iterative implementation of NestedLoops
  4. Benchmarking simplified implementations of NestedLoops
  5. Iterator from loop
  6. Loop from iterator
  7. Iterator for NestedLoops
  8. Support of dynamic dimensions for nested loops

Bounding Box for SVG Paths

  1. Parsing SVG paths
  2. Why all this SVG?
  3. SVG path bounding box: segments
  4. SVG path bounding box: merge multiple boxes
  5. SVG path bounding box: quadratic BĂ©zier curves
  6. SVG path bounding box: cubic BĂ©zier curves
  7. Ellipses (for SVG): parameter and angles
  8. Ellipses (for SVG): mapping to SVG representation
  9. Ellipses (for SVG): finding the center
  10. Ellipses (for SVG): parameter values
  11. Ellipses (for SVG): transformation implementation
  12. SVG path bounding box: arcs of ellipses

BĂ©zier curves

  1. BĂ©zier curves
  2. Derivatives of BĂ©zier curves
  3. Extremes for BĂ©zier curves

Ordeal::Model

  1. Global string matching quirks
  2. A parser for Ordeal::Model
  3. Ordeal::Model::Parser: grammar
  4. Ordeal::Model::Parser: entry point
  5. Ordeal::Model::Parser: parsing generics
  6. Ordeal::Model::Parser: parsing generics, 2
  7. Ordeal::Model::Parser: parsing

Transforming Randomization

  1. A 4-faces die from a 6-faces die
  2. A D4 from a D6, with time guarantees
  3. A D4 from a D6 - squeeze more
  4. Rejection method
  5. Same rejection method?
  6. Unbounding the x axis in the rejection method

Tournaments games allocation

  1. Allocating games in tournaments
  2. Allocating games in tournaments - example
  3. Allocating games in tournaments - premium games and players
  4. Allocating games in tournaments - 3 players practicalities
  5. Allocating games in tournaments - 6 players matches
  6. Allocating games in tournaments - 6 players matches, again
  7. Allocating games in tournaments - 6 players matches, premium
  8. Allocating games in tournaments - a program
  9. Torneo - a tournament management system

Autobiographical numbers

  1. Autobiographical numbers
  2. Autobiographical numbers constraints - basic
  3. Autobiographical numbers constraints - last is zero
  4. Autobiographical numbers constraints - weighted sum
  5. Autobiographical numbers constraints - luckier weighted sum
  6. Autobiographical numbers constraints - step up

Aquarium

  1. Aquarium - parse puzzle input
  2. Aquarium - print puzzle
  3. Aquarium - constraints
  4. Aquarium - search the solution space
  5. Aquarium - cooperating constraint
  6. Aquarium - more cooperation from constraints
  7. Aquarium - search differently
  8. Aquarium - exploiting redundant constraints

Shell Tricks

  1. A shell approach
  2. Shell script help
  3. Rich’s sh (POSIX shell) tricks
  4. Shell quoting for exec
  5. Building shell arguments list dynamically
  6. Shell logging helpers
  7. Shell variables tests: is it defined?
  8. Shell variables tests: is it true?
  9. Shell variables tests: is it lengthy?
  10. Shell scaffolding script

Command-line Docker Applications

  1. Command-line Docker Applications
  2. Command-line Docker Applications - A way forward

Playing with CAs

  1. Bare-bones Root CA
  2. Bare-bones Web Server
  3. Intermediate CAs are hard!
  4. Example on Certificates
  5. Generating "Example on Certificates"
  6. Going Back on Alpine Linux 3.6
  7. Intermediate CA Investigation
  8. Easy dumping of OpenSSL "stuff"
  9. Intermediate CA Solution
  10. ekeca
  11. Certificate example now with ekeca
  12. Certificate example on GitHub

MojoX::Twitter

  1. Getting started with MojoX::Twitter
  2. Tweets from a user
  3. Thread of tweets via API