Project Nayuki

Recent pages

Page Last updated
November 2021
QR Code generator library
October 2021
My Mario Kart 64 time trial records
September 2021
Disjoint-set data structure
Nintendo 64 over S-video
Triangle solver (JavaScript)
August 2021
Cryptographic primitives in plain Python
PNG file chunk inspector
June 2021
Practical guide to XHTML
Project Euler solutions
May 2021
Overview of Project Nayuki software licenses
Image unshredder by annealing
April 2021
Free small FFT in multiple languages
February 2021
Poor feedback from readers
January 2021
DWITE programming contest solutions
MATLAB language pet peeves
Tap to measure tempo (JavaScript)
Brainfuck interpreter (JavaScript)
Fast Fourier transform in x86 assembly
December 2020
The versatile sieve of Eratosthenes
Binary indexed tree
Convex hull algorithm
AVL tree list
Smallest enclosing circle
November 2020
My favorite YouTube video channels
July 2020
Skill levels in Scalable Vector Graphics (SVG)
May 2020
Decent feedback from readers
April 2020
Ending my support for Python 2
March 2020
Time-based One-Time Password tools
Analog vs. digital games
February 2020
Common mistakes when using the metric system
My code style
Web site notes
January 2020
BitTorrent bencode format tools
November 2019
Summary of C/C++ integer rules
September 2019
Being a polyglot programmer
B-tree set
August 2019
Lowest SHA-512 value by brute force
July 2019
Barrett reduction algorithm
Montgomery reduction algorithm
Fast QR Code generator library
Transcription of Pokémon Game Boy music
June 2019
Gauss-Jordan elimination over any field
Reed-Solomon error-correcting code decoder
Sliding window minimum/maximum algorithm
Subtle ways to lose data
May 2019
Self-encrypted cache structure
December 2018
Don’t share commented-out code
November 2018
Simple DEFLATE decompressor
Canada Tax-Free Savings Account simulator (JavaScript)
GIF optimizer (Java)
Creating a QR Code step by step
October 2018
Factorize Gaussian integer (JavaScript)
Binary array set
Forcing a file’s CRC to any value
Sorting algorithms demo (Java)
Random password generator (JavaScript)
Calculate GCD (JavaScript)
Animated floating graph nodes
Bitcoin cryptography library
September 2018
Optimal text segmentation for QR Codes
Fast discrete cosine transform algorithms
Full screen clock (JavaScript)
Panel de Pon puzzle solver (JavaScript)
July 2018
Propositional sequent calculus prover
AA tree set
TTC fare guide for tourists
1D barcode generator (JavaScript)
Chemical equation balancer (JavaScript)
June 2018
Reference Huffman coding
Reference arithmetic coding
Tiny PNG Output
sRGB transform library
Knuth-Morris-Pratt string matching
Next lexicographical permutation algorithm
How to implement the discrete Fourier transform
May 2018
Elliptic curve point addition in projective coordinates
April 2018
Pervasive Displays e-paper panel hardware driver
March 2018
Problems with plurals in English
February 2018
Unsigned int considered harmful for Java
December 2017
Near-duplicate features of C++
Binomial heap
September 2017
ProFont (Nayuki’s version)
July 2017
Manufactoria solutions
Java SE 5 is the most significant release
Casio fx-991MS tips and tricks
June 2017
Number-theoretic transform (integer DFT)
Patchouli Knowledge laptop sticker
May 2017
Good Java idioms
April 2017
Some bit-twiddling functions explained
March 2017
Simple GUI FLAC player (Java)
FLAC library (Java)
Git library (Java)
Designing better file organization around tags, not hierarchies
February 2017
Benchmark of Nayuki’s FLAC encoder
Simple FLAC implementation
Undefined behavior in C and C++ programs
December 2016
GO Train acceleration analyzed by video
November 2016
Band-limited square waves
October 2016
CSC258 computer debugger
Gaussian blur demo
September 2016
Java BigInteger was made for RSA cryptography
July 2016
Supplement to my résumé
DEFLATE library (Java)
June 2016
Fast skipping in a linear congruential generator
Karatsuba multiplication
Batch up new messages in Gmail for better productivity
May 2016
AES cipher internals in Excel
Tablet desk clock
NetPerSec (Nayuki’s version)
Java Native Interface compared to Python/C API
Knuth’s -yllion number notation
March 2016
Encrypted backup client for Dropbox
February 2016
Computing Wikipedia’s internal PageRanks
January 2016
Lyrics of Mahou Shoujo Pixy Misa Shouka
Large arrays proposal for Java
MamIRC, the headless IRC client
A fundamental introduction to x86 assembly programming
December 2015
Angles in elastic two-body collisions
What are binary and text files?
November 2015
Simulated annealing demo
October 2015
Variations on Japanese romanization
Symmetry sketcher (JavaScript)
September 2015
JSON library (Java)
Handling physical quantities in math formulas
August 2015
RollerCoaster Tycoon saved games
July 2015
Numerically stable law of cosines
May 2015
Overwriting confidential handwritten text
April 2015
Compact hash map (Java)
March 2015
NotepadCrypt format decrypter (Java)
Fast Fibonacci algorithms
GIF89a specification (HTML)
January 2015
Nanoblock modeling in POV-Ray
November 2014
Huffman-coding English words
The photographic exposure equation
Native hash functions for Java
October 2014
Gamma-aware image dithering
Absolute and relative lens apertures
September 2014
Fast SHA-2 hashes in x86 assembly
Sinc-based image resampler
Windows timestamp accessor library
E-Trade: An expensive, rigid brokerage
August 2014
Portable FloatMap format I/O (Java)
Tiny Encryption Algorithm in x86 assembly
Transcript of “New Money (Filling the Void)”
July 2014
Iterated popcount results in 0 or 1
April 2014
Approximating Euler’s number correctly
Optimizing brainfuck compiler
March 2014
RC4 cipher in x86 assembly
Full transcription of Ichigo Mashimaro – Main Theme
February 2014
Extending the use of logarithmic scales
Boolean algebra laws
January 2014
Guide to Canada income tax by successive approximation
I type in Dvorak
DES cipher internals in Excel
December 2013
Fast Whirlpool hash in x86 assembly
Fast SHA-1 hash implementation in x86 assembly
Fast MD5 hash implementation in x86 assembly
Graphic overview of Canada income tax, RRSP, and TFSA
November 2013
Java’s signed byte type is a mistake
So you want to be a day trader? Bad idea.
Master theorem solver (JavaScript)
October 2013
A math/programming view of Canada GST/HST credit calculation
September 2013
Galois linear feedback shift register
August 2013
Resizing images by area
Automatic Caesar cipher breaker (JavaScript)
Frog Fractions guide
Primitive recursive functions
July 2013
Example of simplifying and improving code
June 2013
Site map
My university courses
May 2013
Recommended articles from Canadian Couch Potato investment blog
April 2013
Polynomial arithmetic shorthand
March 2013
Public transit and monotonicity
February 2013
Understanding Facebook IDs
Dvorak keyboard in use warning sign
January 2013
Is there an ideal comparison sort?
December 2012
Transcription of Hare Tokidoki Egao
Unusual chemical symbols in English
Automatic Minesweeper solver
November 2012
Facebook anniversary ray trace
Prayer brackets
September 2012
Unspecified edge cases in the DEFLATE standard
July 2012
Dumb PNG output (Java)
April 2012
Sister Princess Winamp skins
Transcription of Crystal Energy – Guitar solo
Transcription of Nyanyanyanyanyanyanya!
December 2011
How to batch-tag photos on Facebook
November 2011
Binary counter in brainfuck
September 2011
Transcription of Chasse – Instrumental solo
Transcription of Miracle∞Hinacle
August 2011
BMP I/O library (Java)
Transcription of o-Hanabatake
July 2011
Calculate divisors (JavaScript)
Calculate prime factorization (JavaScript)
Transcription of Every Day
Transcription of Kana’s Theme
June 2011
A septillion CPU cycles a year
Finding dust by lighting from a grazing low angle
Next-hop routing in real life
國內 doesn’t mean domestic
May 2011
Vigenère cipher (JavaScript)
Caesar cipher (JavaScript)
Countable sets and Kleene star