We implement Craig Reynolds' Boids simulator using vanilla JavaScript and HTML5 Canvas, and explain the vector math required to drive the particle simulation.
What are databases? What are the similarities and differences from file systems? What is a SQL vs No-SQL database and the pros and cons of each for a given application?
Tries are a hybrid data structure combining a tree and hash table to provide O(k) lookup for k-character words, popular for use cases like typeahead and autocomplete.
Binary Heaps are binary-tree based data structures that can be used to implement a Priority Queue and provide O(1) insert and find-minimum performance.
Binary space partitioning recursively subdivides a space. It is an application of binary trees and often used for procedurally generated game levels or computational art.
Binary Search Trees are are a data structure allowing O(log(N)) lookup of entries. We implement insertion, traversal, and search methods for Binary Search Trees.
The Singly Linked List is a classic data structure. We implement length, insert, remove, and search methods, and compare the Linked List's big-O complexity to arrays.
Introducing memoization, a technique to speed up computation by re-using previously computed results. Shows an exasmple using factorial and considers the time/space tradeoffs involved with memoization.
A full-featured, 5-part tutorial on creating a pixel art editor using JavaScript and HTML5 Canvas. Supports saving and loading images, color selection, transparent backgrounds, and more.
JavaScript is a fundamentally event-driven programming language. Learn about the event loop, adding handlers to events with listeners, and debouncing for limiting the number of times those handlers are called.
Introduces the Document Object Model view of a webpage, covering how we can use Selectors to select objects of interest on the page and manipulate them.
Closures allow a function to retain information about its context after the function has returned. We provide examples and cases where closures can be useful.
We create a weather application using the National Weather Service API to learn about Asynchronous code using Promises and Application Programming Interfaces (APIs).
Even though CBC is more secure than ECB, it is still vulnerable to attacks without taking additional precautions like using a Message Authentication Code (MAC). Cryptopals Set 2 Challenge 16.
Yet Another demonstration of why you shouldn't use ECB, even when some random-sized block of padding is prepended to the message. Cryptopals Set 2 Challenge 15.
Yet Another demonstration of why you shouldn't use ECB, even when some random-sized block of padding is prepended to the message. Cryptopals Set 2 Challenge 14.
We demonstrate how to perform ECB decryption one byte at a time, a good demonstration of why ECB should not be used in practice. Instead, use CBC! Cryptopals Set 2 Challenge 12.