Learning Progress 2019

Learning is an eternal path. I wanted to share my own adventure primarily for the following practical reasons: to help me remember what I have supposedly been working on technology-wise and to help me practice a technique that is known as spaced repetition. This is really just a summary to motivate myself to keep on track and be reminded as often as possible to stay a bit more humble, as it becomes obvious that I don’t know much in the end. In the process, I hope you may find some inspiration too.


December

30

  • University of London
  • Discrete mathematics
    • Recursion: recurrence relations, structural induction.

29

  • University of London
  • Discrete mathematics
    • Mathematical induction, strong induction, well-ordering principle.

28

  • University of London
  • Discrete mathematics
    • Induction (proof by induction, strong induction), recursion.
  • Review Git concepts: branching workflows; rebasing; interactive staging; rewriting history; submodules.

27

  • University of London
  • Introduction to Programming II
    • Particle system and beat detector in p5.js.
  • Patching st to get scrollback and transparency.

26

  • University of London
  • Discrete mathematics
    • Review rules of inference, inferences with quantifiers, direct proof, proof by contraposition, proof by contradiction, proof by cases.
  • Introduction to Programming II
    • Working with a beat detector in p5.js.
  • Review Python: regex; zip function.
  • Setting up AUR in Manjaro.

25

  • University of London
  • Discrete mathematics
    • Introduction to proofs (direct, contrapositive, contradiction), mathematical induction, proof by induction.
  • Setting dual-screen workflow with i3.

23

  • University of London
  • Introduction to Programming II
    • JavaScript: Review IIFE, arrow functions, map, fill, reduce, filter, sort.
  • Discrete mathematics
    • Review rules of inference.

22

  • University of London
  • Introduction to Programming II
    • More on OOP in JavaScript, async and await functions.
  • Discrete mathematics
    • Review predicates and quantifiers, nested quantifiers and negations, rules of inference.

21

  • University of London
  • Introduction to Programming II
    • Dealing with memory leaks in JavaScript.
  • Discrete mathematics
    • Review predicates and quantifiers, nested quantifiers and negations, rules of inference.

20

  • University of London
  • Introduction to Programming II
    • Analyzing sounds in p5.js with fast Fourier transform.
  • Discrete mathematics
    • Review boolean algebra, predicate logic and quantifiers.
  • Common Gotchas from The Hitchhiker’s Guide to Python.
  • Using DeepSource static code analysis tool for Python and Go.
  • Using Vifm as terminal file manager.

19

  • University of London
  • Discrete mathematics
    • Review propositional logic: propositional satisfiability; logical equivalences.

18

  • University of London
  • Introduction to Programming II
    • JavaScript: delaying actions with setTimeout.
  • Discrete mathematics
    • Review propositional logic, implications (converse, inverse, contrapositive, biconditionals, compound propositions), propositional equivalences (tautology, contradictions, contingency).

17

  • University of London
  • Algorithms and Data Structures I
    • Sudoku assignment: Heap’s algorithm, recursive functions in Python.
  • Configuring and compiling DWM.

16

  • University of London
  • Algorithms and Data Structures I
    • Sudoku assignment: Recursive algorithm to set blank characters in solved puzzle.
  • Understanding window placement and tags in DWM.

15

  • University of London
  • Algorithms and Data Structures I
    • Sudoku assignment: Depth-search algorithm, symmetry in Sudoku.

14

  • University of London
  • Algorithms and Data Structures I
    • Sudoku assignment: Dancing links and backtracking algorithms.

13

  • University of London
  • Introduction to Programming II
    • Review JavaScript: arrow functions, loops with forEach structure, modules in ES6, IIFE.

12

  • University of London
  • Discrete mathematics
    • Working with LaTeX expressions with LibreOffice extension.
  • Getting to know Xmonad, bspwm and dwm.

11

  • University of London
  • Discrete mathematics
    • Review injective and surjective functions, bijective functions, inverse functions, exponential and logarithm functions.

10

  • University of London
  • Discrete mathematics
    • Review sets, set builder notation, functions, set partitions, injective and surjective functions, bijective functions, inverse functions.

9

  • University of London
  • Introduction to Programming II
    • Positioning elements in CSS3, fullscreen API, CSS3 hover effects.

8

  • University of London
  • Introduction to Programming II
    • Promises in JavaScript, adding autocompletion to forms elements, working with applications that toggle fullscreen.
  • Batch renaming files in Bash functions.

7

  • University of London
  • Introduction to Programming II
    • Add loading animations to p5.js application.
    • Work with p5.GUI library.

6

  • University of London
  • Introduction to Programming II
    • Working with sound files properties (pitch, volume, playback rate), conditional ternary operator, SweetAlert2 events, asynchronous functions.

5

  • University of London
  • Algorithms and Data Structures I
    • Sudoku assignment: Dancing links and backtracking algorithms, mathematics of Sudoku.

4

  • University of London
  • Algorithms and Data Structures I
    • Sudoku assignment: Working with a coordinate system inside vectors (pseudocode) and lists (Python).

3

  • University of London
  • Algorithms and Data Structures I
    • Sudoku assignment: Permuting elements with queues.

2

  • University of London
  • Algorithms and Data Structures I
    • Sudoku assignment: Converting Python functions to pseudo code and vice versa.

November

30

  • University of London
  • Introduction to Programming II
    • p5.js: Manipulating the DOM, working with media files, working with SweetAlert library.

29

28

  • University of London
  • Discrete mathematics
    • Review: Boolean algebra, Boolean functions, logic gates, combinational circuits, simplification of circuits.

27

  • University of London
  • Discrete mathematics
    • Review: Logic gates, postulates of Boolean algebra, Boolean functions.
  • Algorithms and Data Structures I
    • Comparing function growth, big O notation, worst-case time complexity, input size.
  • Solve permuted multiples, Project Euler.

26

  • University of London
  • Discrete mathematics
    • Review: Karnaugh maps, De Morgan’s Theorem, logic gates, combinational circuits, simplification of circuits, Boolean algebra, adders.
  • Algorithms and Data Structures I
    • Random-access machines.

25

  • University of London
  • Discrete mathematics
    • Review: Morgan’s laws in Boolean algebra, modular properties in Boolean algebra, laws of Boolean algebra, Karnaugh maps.

24

  • University of London
  • Introduction to Programming II

23

  • University of London
  • Introduction to Programming II
    • Finish JavaScript Fundamentals course at Pluralsight (programming the BOM and DOM, promises & error handling, data access using HTTP, forms, security and building for production).
    • Finish JavaScript Objects and Prototypes course at Pluralsight (creating JavaScript objects, object properties, prototypes and inheritance).
    • Practical Design Patterns in JavaScript course at Pluralsight (what design patterns are, objects, creational design patterns, structural design patterns, behavioral patterns).

22

21

  • University of London
  • Discrete mathematics
    • Finish watching Logic gates with The Organic Chemistry Tutor.
  • Algorithms and Data Structures I
    • Review: loops in JavaScript, bubble sort in JavaScript.

20

  • University of London
  • Algorithms and Data Structures I
    • Review: bubble sort & insertion sort, loops in JavaScript.
  • Discrete mathematics
    • Functional completeness in Boolean algebra, Logic gates with The Organic Chemistry Tutor.

19

18

  • University of London
  • Discrete mathematics
    • Boolean expressions, Boolean functions, identities of Boolean algebra, duality.
  • Algorithms and Data Structures I
    • Introduction to Node.js, insertion sort algorithm in JavaScript.

17

  • University of London
  • Introduction to Programming II
    • Software architecture patterns.
    • SOLID principle (Single Responsibility, Open Closed, Liskov substitution, Interface Segregation and Dependency Inversion Principles).

16

  • University of London
  • Discrete mathematics
    • Review: De Morgan’s laws for quantifiers; rules of inference.
    • Boolean algebra, postulates of Boolean algebra, Boolean functions.
  • Algorithms and Data Structures I
    • Insertion sort algorithm, loops in JavaScript, bubble sort in JavaScript.

15

  • University of London
  • Discrete mathematics
    • Review: De Morgan’s laws for quantifiers; rules of inference.
    • Propositional satisfiability.

14

  • University of London
  • Discrete mathematics
    • Review: laws of propositional logic; predicate logic; predicates; quantification; nested quantifiers; De Morgan’s laws for quantifiers; rules of inference with/without quantifiers.
  • Algorithms and Data Structures I
    • Review: Linked lists.
    • Bubble sort on a stack.

13

  • University of London
  • Discrete mathematics
    • Review: logical equivalences; predicates & quantifiers; De Morgan’s laws; rules of inference with/without quantifiers.
  • Algorithms and Data Structures I
    • Review: dynamic arrays; linear search algorithm; searching stacks and queues.
  • Introduction to Programming II

12

  • University of London
  • Discrete mathematics
    • De Morgan’s law for quantifiers, rules of inference with/without quantifiers.
  • Algorithms and Data Structures I
    • Review: discretisation; Euclidean algorithm; birthday party problem; vectors; queues; stacks; arrays.

11

  • University of London
  • Discrete mathematics
    • Predicates and quantifiers, De Morgan’s law for quantifiers.
  • Algorithms and Data Structures I
    • Implementing stacks and queues with linked lists, bubble sort.
  • Introduction to Programming II
    • Producing high-quality Gantt charts.

10

  • University of London
  • Algorithms and Data Structures I
    • Linked lists.

9

  • University of London
  • Discrete mathematics
    • Definition of predicates, quantifiers, logical operators and nested quantifiers.
  • Algorithms and Data Structures I
    • Linear search algorithm, searching stacks and queues.

8

  • University of London
  • Discrete mathematics
    • Review: logical implications; logical equivalence; laws of propositional logic.
    • Predicate logic, quantification (universal, existential, uniqueness quantifiers), nested quantifiers.
  • Algorithms and Data Structures I
    • Linear abstract data structures (stacks, queues, vectors, arrays, dynamic arrays).

7

  • University of London
  • Discrete mathematics
    • Review: logical implications; logical equivalence; laws of propositional logic.
  • Algorithms and Data Structures I
    • Queues, deques, linked lists.

6

  • University of London
  • Discrete mathematics
    • Logical implications, logical equivalence, laws of propositional logic.
  • Algorithms and Data Structures I
    • Using stacks to check for palindromes, dynamic sets (stack, queue).
  • Review how to use crontab to schedule tasks with Bash and Python scripts.

5

  • University of London
  • Algorithms and Data Structures I
    • Data structure: Queues; stacks.

4

  • University of London
  • Algorithms and Data Structures I
    • Data structure: vectors.
  • Read Awesome Command-Line Tools from Vim from Scratch.
  • Learn about z, a tool to jump around in the terminal by ‘frecency’ (frequency & recency).
  • Learn about bat, a cat with wings.
  • Use Forgit (fuzzy finder for Git).

3

  • University of London
  • Algorithms and Data Structures I
    • Examples in pseudocode.
  • Configure and use todo.txt.
  • Customize fzf with ag for Z Shell and Bash.

2

  • University of London
  • Introduction to Programming II
    • Using Function.prototype.bind() instead of that = this.
    • Software structure on Destroy All Software.
  • Piping Linux commands like a real plumber.

1

  • University of London
  • Discrete mathematics
    • Review: powerset of a set; set operations; sets representation with Venn diagrams; De Morgan’s laws; laws of sets.
  • Introduction to Programming II
    • p5.js sound: working with frequency bands, P5.gui.

October

31

  • University of London
  • Discrete mathematics
    • Review: powerset of a set; set operations; sets representation with Venn diagrams; De Morgan’s laws; laws of sets.
    • Propositional logic, propositions, truth tables, truth sets, compound propositions, logical implication (converse, contrapositive, inverse).
  • Introduction to Programming II
    • p5.js sound: amplitude; frequency, creating a “ridge plots” visualization. p5.js data.
  • Review basics of Flask web framework (routes, templates with Jinja2).
  • Vimwiki: managing tags, creating tables.

30

  • University of London
  • Discrete mathematics
    • Bijective functions, logarithmic functions, floor & ceiling functions.

29

28

  • University of London
  • Discrete mathematics
  • Git review: Merging branches (fast-forwarding), cherry picking, git push, git pull, tracking branches, aliases.

27

  • University of London
  • Discrete mathematics
    • Injective, bijective & surjective functions, inverse functions, composition of functions.
  • On Learn Git Branching: Working with remote branches, working with diverged history, pull --rebase, merging feature branches, remote-tracking branches, fetch arguments, pull arguments.

26

25

  • University of London
  • Discrete mathematics
    • Introduction to functions (one-to-one [injective] and onto [surjective] functions), plotting functions, set operations, set notations.
  • How patterns are matched in .gitignore.
  • New features in Python 8 (:= walrus operator, / positional-only parameters, {var_name=} self-documenting f-strings).

23

  • University of London
  • Discrete mathematics
    • Propositional equivalences, De Morgan’s laws, applications of satisfiability.
  • Review Git basics.

22

  • University of London
  • Discrete mathematics
    • Applications of propositional logic, propositional equivalences.

21

  • University of London
  • Discrete mathematics
    • Logic and proofs (propositional logic), applications of propositional logic, Set theory from scratch.
  • Introduction to Programming II
    • Documenting through SRS (software requirements specification), creating Gantt charts specifically for software development.
    • p5.js: Loading and playing a sound.

20

  • University of London
  • Introduction to Programming II
    • Making a website from Vimwiki.

19

  • University of London
  • Introduction to Programming II
    • Study case 2 (music visualizer): p5.dom (handling events), anonymous functions.

18

  • University of London
  • Discrete mathematics
    • Review aspects of set theory.
  • Introduction to Programming II
    • Study case 2 (music visualizer): Figure out how sound works with Fourier series in p5.js.

17

  • University of London
  • Discrete mathematics
    • Introduction to set theory, set builder method, powerset of a set, cardinality of powerset, set operations, De Morgan’s laws.

16

  • University of London
  • Algorithms and Data Structures I
    • Birthday Party problem, discretisation and pseudocode, pseudocode and functions, loops in pseudocode, Euclidean algorithm in pseudocode, converting flowcharts to pseudocode and vice versa.
    • Introduction to algorithms, flowcharts, Heron’s method, pseudocode.
  • Solve String subpattern recognition I on Codewars.

15

  • University of London
  • Introduction to Programming II
    • Study case 1: Drawing application – under the hood, introduction to p5.dom, handling events in p5.dom.
    • Study case 2: Music visualizer.
    • Asynchronous function calls, using callbacks, debugging skills (breakpoints and stepping), testing for stability, usability testing.
    • Interview with Christophe Rhodes.

14

13

  • University of London
  • Discrete mathematics
    • Set operations, set identities, set builder notation.

12

  • University of London
  • Discrete mathematics
    • Injective and surjective properties, introduction to functions, Heron’s method.

11

  • University of London
  • Discrete mathematics
    • Set theory: partition; set operations; set identities; set builder notation.

10

  • University of London
  • Discrete mathematics
    • Venn diagrams representations of sets, set representation and manipulation (complement of a set), De Morgan’s laws, Laws of sets (commutative, associative and distributive).
  • Introduction to Programming II
    • Public vs private properties.

9

  • University of London
  • Discrete mathematics
    • Introduction to set theory, set builder method, powerset of a set, cardinality of powerset, set operations.

8

  • University of London
  • Introduction to Programming II
    • Object orientation in practice, organizing code.
  • Algorithms and Data Structures I
    • Review Heron’s method.

7

  • University of London
  • Algorithms and Data Structures I
    • Problems, algorithms and flowcharts.

5

  • Version Control with Git on Coursera: Git overview (remote repository), Git’s graph model (Directed Acyclic Graph), Git IDs, Git references, branches, merging, resolving merge conflicts, tracking branches, fetch, pull, push.

4

  • Version Control with Git on Coursera: Git overview (remote repository).
  • Converting JSON to CSV through Vim macros.
  • Integrating Google Sheets with Slack, using Zapier.

3

2

  • Introduction to Algorithms, Third Edition: Standard notations and common functions.
  • Version Control with Git on Coursera: DevOps and Git in a Nutshell.

1

  • Introduction to Algorithms, Third Edition: Divide-and-conquer algorithms, growth of functions (asymptotic notation, big-o notation [asymptotic upper bound], big-omega notation [asymptotic lower bound], little-o notation [upper bound not asymptotically tight], little-omega notation [lower bound not asymptotically tight]).
  • YAML and TOML syntax.
  • Recursion ‘Super Power’ (in Python) with Computerphile.

September

30

  • Introduction to Algorithms, Third Edition: Insertion sort, analyzing algorithms (best, worst & average cases, running time, size of input, order of growth), designing algorithms (divide-and-conquer), merge sort algorithm.

29

  • Finish reading Pragmatic Programmer: Continuous development, pragmatic starter kit (version control, regression testing, full automation).
  • Introduction to Algorithms, Third Edition: The role of algorithms in computing.

28

  • Pragmatic Programmer: Security basic principles, naming things, software requirements, requirements documents, agile movement.
  • Solve Find the Torsional Angle challenge (Python) on HackerRank.

27

  • Pragmatic Programmer: Test-driven development, unit testing, property-based testing, security basic principles.
  • Develop Slack app locally with ngrok.
  • Solve Hex Color Code regex challenge (Python) on HackerRank.

26

25

  • Pragmatic Programmer: Inheritance; using external configuration in applications; concurrency and parallelism; tips on following instincts and programming deliberately; estimating algorithms speed; refactoring; testing code.
  • Read article How to Run and Control Background Processes on Linux on How To Geek.

24

23

21

  • Customizing zsh better.

20

  • Pragmatic Programmer: Prototyping; domain languages (internal, external languages); estimating; relying on systems with plain text files; using the command shell; making the most of your text editor; using VCS for everything; advice on debugging; manipulating text with dedicated tools and programming languages; how to work with engineering daybooks; killing programs early; when and when not to use assertions; balancing system resources; decoupling code (the one-dot rule of chaining method calls, avoiding global data).

19

  • Pragmatic Programmer: Design principles (ETC [easier to change]), DRY [Don’t Repeat Yourself]), orthogonality (independence of components), reversibility.

18

  • Git: Merge; rebase; branches.

17

  • Git: staging; unstaging; checkout; reset; rebase.

14

  • University of London
  • Web development
    • Working with Slick carousel, Lightbox plugin for Bootstrap, touch events in JavaScript, event handlers & event listeners.

13

  • University of London
  • Web development
    • General review of Bootstrap 4 framework, Slick JavaScript library, Lightbox library.

12

  • University of London
  • Web development
    • General review of Bootstrap 4 framework.

11

  • University of London
  • Web development
    • General review of Bootstrap 4 framework.
  • Using progress bars with Click, compiling SASS with ruby-sass Using Slick and Lightbox as JavaScript plugins.

10

  • University of London
  • Web development
    • Bootstrap 4 framework: List group items, badges, forms, input groups, alerts, progress bars, tables, pagination, cards, media objects, grid system flexbox, JavaScript widgets, collapse widget, accordion widget, tooltips, popovers, modals.
  • Gulp with node.js, Emmet syntax.

9

  • University of London
  • Web development
    • Review how Bootstrap 4 framework works: setup; typography; alignment; positioning; CSS breakpoints; buttons; nav bars.
  • Recursion in p5.js: Coding Challenge #77: Recursion.

8

  • University of London
  • Introduction to programming: Working with realistic physics in p5.js.

7

  • University of London
  • Introduction to programming: Working with realistic physics animations, particle systems (fireworks), working with the DOM inside p5.js.
  • Closures in JavaScript.

6

  • University of London
  • Introduction to programming: Layering canvases in p5.js, calling scripts dynamically.
  • Python: Unit testing, importing modules.

5

  • University of London
  • Introduction to programming: Splitting application into modules, working with sound in p5.js.

4

  • University of London
  • Introduction to programming: Constructor functions, working with sound and DOM functions in p5.js.
  • Logging in Python.
  • Setting up Mailgun with custom domains.

3

  • University of London
  • Numerical mathematics: Calculus, linear algebra, sequences & series, probability, number bases, modular arithmetic.
  • Creating a watchdog in Python.

2

  • University of London
  • Numerical mathematics: Calculus, linear algebra, sequences & series, probability, number bases, modular arithmetic.

1

  • University of London
  • Numerical mathematics: Graph transformations, probability, binomial probability, linear algebra, affine transformations, number bases, modular arithmetic.

August

31

  • University of London
  • Numerical mathematics: Sequences and series, modular arithmetic, number bases, probability.

30

  • University of London
  • Numerical mathematics: SUVAT equations, local minima and maxima with first derivative test, sequences and series.

29

  • University of London
  • Numerical mathematics: Calculus and derivatives, limits and continuous functions, inverse functions and their derivatives, SUVAT equations.

28

27

26

  • University of London
  • Numerical mathematics: Linear dependence and independence, linear subspaces, number bases, number base conversions, modular arithmetic, patterns in sequences.

25

  • University of London
  • Numerical mathematics: Systems of equations with matrices, inverse matrices, permutations in matrices, basic operations on vectors, linear combinations of vectors, span, linear independence.

24

  • University of London
  • Numerical mathematics: Law of sine, Law of cosine, triangles with ambiguous cases, matrices (linear transformations, systems of equations).

22

  • University of London
  • Numerical mathematics: Dot product and angle between two vectors, polar coordinates, SUVAT equations, derivatives.

21

  • University of London
  • Numerical mathematics: Inverse of matrices, probability of an event, mutually exclusive events, independent events, conditional probability, fundamental counting principle.

20

  • University of London
  • Numerical mathematics: Simple machine learning model, Bayes’ Theorem (likelihood, prior, evidence, posterior), Bayesian inference.

19

  • University of London
  • Introduction to programming: JavaScript arrays, debugging techniques, methods, vector objects in p5.js.
  • Numerical mathematics: Probability & statistics: independent events, complement of an event, averages (mean, median, mode), variance, standard deviation, conditional probability, sets.

17

  • University of London
  • Numerical mathematics: Introduction to combinatorics and probability, counting principles, independent events (multiplication law), permutations, mutually exclusive events, complement of an event, combinations.
  • Web development
  • JavaScript basics: Execution context, execution stack (creation and execution phases), hoisting, scoping and scoping chain, DOM manipulation and events, this keyword in practice, events handlers & events listeners.

16

  • University of London
  • Numerical mathematics: Affine transformations, kaleidoscopes and tilings, solving simultaneous equations using matrices, linear transformations of matrices, homogeneous coordinates.
  • Web development
  • JavaScript basics: basic operators, operator precedence, conditional statements, boolean logic, ternary operators, switch statement, truthy & falsy values, equality operators, functions, arrays, objects, properties and methods, loops and iterations, continue, break, ES5, ES2015+.

15

  • University of London

  • Numerical mathematics: Linear transformations of matrices.

  • Neovim: Using the dot command (dot formula).

  • Comments in Python: Best Practices with Real Python. -Equality testing, review JavaScript arrays on Execute Program.

14

  • University of London
  • Numerical mathematics: Multiplying matrices and column vectors, linear transformations of matrices, homogeneous coordinates.

13

12

  • University of London

  • Numerical mathematics: Homogeneous coordinates, cross product of two vectors, triple scalar product, vector product, inverse of a matrix with cofactor method and Jordan-Gauss method.

  • Using primary (Shift + Insert) and default (Ctrl + Shift + v) clipboard in terminal.

  • Git Fu Developing with Coding Tech: git aliases (Git aliases and aliases with Shell commands !), logs, reflogs, stash, bisect.

11

  • University of London

  • Numerical mathematics: Solving a matrix equation, inverse of a square matrix, system of linear equations.

  • Dot product and cross product in Python.

10

  • University of London

  • Numerical mathematics: matrices & systems of equations, elementary row operations, Gaussian elimination with back-substitution, Gauss-Jordan elimination, operations with matrices.

  • Introduction to programming: Working with this keyword, vectors in p5.js.

  • Python concepts: sys.path, creating packages and subpackages.

9

  • University of London

  • Numerical mathematics: matrices (linear combinations, multiplication), determinant.

  • Using git stash, git commit --amend, git diff, .gitignore and .git/info/exclude files, git blame.

8

  • University of London
  • Numerical mathematics: SUVAT equations in vector form, Operations with 2D vectors, dot product, angle between vectors, operations with 3D vectors.
  • Web development
  • More on Handlebars.js: Custom expressions, partials.

7

6

5

  • University of London

  • Introduction to programming: Working with this keyword.

  • Numerical mathematics: Vectors, dot product, matrices & determinants, elementary row operations, Gaussian elemination with back-substitution, matrices with row-echelon form, analytic geometry in three dimensions.

  • Review JavaScript arrays on Execute Program, forEach iterations.

4

  • University of London

  • Introduction to programming: More on constructor functions, creating a particle system with an emitter (holds, adds and removes particles), making platforms in a p5.js game.

  • Numerical mathematics: More on vectors, dot product.
  • Web development: Web template systems (Mustache and Handlebars.js).

  • JavaScript arrays on Execute Program.

3

  • University of London

  • Introduction to programming: Vector objects and adding sound in p5.js, factory pattern, constructor functions.

  • Numerical mathematics: Matrices, inverse matrices.

  • Solve digit fifth powers, Project Euler.

2

  • University of London
  • Numerical mathematics
    • Essence of linear algebra with 3Blue1Brown: Matrix multiplication as composition, three-dimensional linear transformations, the determinant, inverse matrices, column space and null space, nonsquare matrices as transformations between dimensions, dot products and duality, cross products.

1

  • University of London
  • Numerical mathematics: addition, subtraction, scalar product (dot product) with vectors and matrices.
    • Essence of linear algebra with 3Blue1Brown: vectors — what even are they, linear combinations, span, and basis vectors, linear transformations and matrices.

July

31

  • University of London
  • Numerical mathematics
    • Calculus: Differentiating exponential functions, find maxima, minima, turning points and asymptotes of graphs of trigonometric, exponential and logarithmic functions.

30

  • University of London
  • Numerical mathematics
    • Calculus: Using differentiation to analyse the behaviour of a function, differentiating trigonometric functions.

29

  • University of London
  • Numerical mathematics
    • MIT Highlights of Calculus by MIT: Limits and continuous functions, inverse funtions and the natural logarithm, derivatives of natural logarithms and sine inverse, growth rates & log graphs, linear approximation & Newton’s method, chains f(g(x)) and the chain rule.

28

  • University of London
  • Numerical mathematics
    • MIT Highlights of Calculus by MIT: Big picture of calculus, big picture of derivatives, max and min and second derivative, the exponential function, product rule, quotient rule, big picture of integrals, derivative of sin(x) and cos(x).

27

  • University of London
  • Numerical mathematics
  • Web development: On JavaScript: touch events, orientation events.
  • Introduction to programming: JavaScript methods.

26

  • University of London
  • Numerical mathematics
    • Calculus: The quotient rule, product rule, chain rule.

25

  • University of London
  • Numerical mathematics
    • Calculus: Differentiating compositions of functions with the chain rule, differentiation of polynomial, rational and algebraic functions.

24

23

  • University of London
  • Numerical mathematics
    • Calculus: Limits of functions, chords and lines tangent to graphs.

22

  • University of London
  • Numerical mathematics
    • Calculus: Limits of sequences, limits of summations, evaluating limits at infinity.

21

  • University of London
  • Numerical mathematics
    • Calculus: Limits at infinity & limits of sequences.

20

  • University of London

  • Numerical mathematics

    • Calculus: Introduction to limits.
  • Web development: On JavaScript: Event listeners.

  • How references work (HEAD, detached HEAD), git reflog, tags, annotated tags.

19

  • University of London
  • Numerical mathematics
    • Calculus: The quotient rule, product rule, chain rule, introduction to limits.

18

  • University of London

  • Numerical mathematics: The product rule.

    • Essence of Calculus with 3Blue1Brown: Higher order derivatives, Taylor series, what they don’t teach you in calculus.
  • Create Slack App with Zapier integrations.

  • Git: Modifying files on GitHub, git pull.

17

  • University of London

  • Numerical mathematics

    • Essence of Calculus with 3Blue1Brown: What’s so special about Euler’s number e, implicit differentiation, limits, l’Hopital’s rule & epsilon delta definitions, integration & the fundamental theorem of calculus and what does area have to do with slope.
  • Git: Configuring SSH, git status, staging, committing, git remote, git log, collaborating on GitHub.

16

  • University of London
  • Numerical mathematics

15

  • University of London
  • Introduction to programming: Create a simple yet complete game with p5.js.
  • Numerical mathematics: Introduction to calculus: limits and differentiation, exponential and logarithmic functions.
    • Essence of Calculus with 3Blue1Brown: Introduction; the paradox of the derivative; derivative formulas through geometry.

14

  • University of London
  • Numerical mathematics: Introduction to calculus: limits and differentiation, exponential and logarithmic functions.

13

  • University of London
  • Web development: Manipulating the DOM, events and events handlers, JavaScript syntax.

12

  • University of London
  • Numerical mathematics: Logarithmic functions.

11

  • University of London
  • Numerical mathematics: Logarithmic functions.

10

  • University of London

  • Introduction to programming: JavaScript: Nesting objects and arrays, search patterns, debugging techniques (common errors with data, iterative coding).

  • Numerical mathematics: Exponential & logarithmic functions.

  • Read article on new features in Python 3 at python-catalin.

9

  • University of London

  • Introduction to programming: JavaScript: Variables and scopes, two dimensional arrays.

  • Numerical mathematics: Exponential functions, logarithmic functions.

  • Vim global substitution features, tags stack, CTRL + F in command mode to search previous commands.

  • Classic Computer Science Problems in Python, by David Kopec: constraint-satisfaction problem framework.

8

  • University of London
  • Web development: Introduction to JavaScript for the web: client-side JavaScript, roles of the language.

7

  • University of London

  • Web development: Describe the experience of building a website with a remote team from multiple continents.

  • Learn the technical differences between Live CD/USB, persistent Live CD/USB, full installation on drive and inside virtual machines with fixed or dynamically allocated storage space.

6

  • University of London
  • Web development: More on building a responsive website from scratch.

5

4

  • University of London
  • Numerical mathematics: Exponential & logarithmic models, more on exponential and logarithmic functions.

3

  • University of London

  • Numerical mathematics: More on exponential and logarithmic functions.

  • Configure unclutter to hide cursor automatically.

  • Configure vim-gitgutter with Neovim.

2

1


June

30

  • University of London
  • Numerical mathematics: Steganography, RSA algorithm, sequences & series.

29

  • University of London
  • Numerical mathematics: Sequences & series.

28

27

  • University of London
  • Numerical mathematics: Sequences & series, transformation of graphs.

26

25

  • University of London
  • Numerical mathematics: RSA algorithm, transformation of graphs.

24

  • University of London
  • Web development: More on CSS grid layouts and redesigning a website from scratch.

23

  • University of London
  • Web development: CSS grid layouts, redesigning a website from scratch.

22

  • University of London
  • Numerical mathematics: RSA algorithm.

21

  • University of London
  • Numerical mathematics: Steganography, modular arithmetic, encryption & RSA algorithm, transformation of graphs.

20

19

18

17

16

15

14

13

  • University of London

  • Numerical mathematics: Polar coordinates, solving trigonometric equations, damped trigonometric graphs, trigonometric ratios and functions, number bases with rational and irrational numbers.

  • Matplotlib Tutorial (Part 4): Stack Plots with Corey Schafer.

12

11

10

9

8

  • University of London
  • Introduction to programming: JavaScript for loops, arrays.
  • Numerical mathematics: Trigonometry.
  • Web development: CSS grids and columns, CSS animations, accessibility in CSS.

7

  • University of London
  • Numerical mathematics: Trigonometry.

6

  • University of London
  • Numerical mathematics: Compositions with inverse trigonometric functions, inverse trigonometric functions, trigonometrical functions.
  • Web development: CSS box model, CSS layout.

5

  • University of London
  • Introduction to programming: Game project.
  • Numerical mathematics: Trigonometrical functions.

4

  • University of London
  • Numerical mathematics: Trigonometrical functions, identities & equations.
  • Web development: CSS colouring, CSS typography.

3

2

  • University of London
  • Web development: CSS selectors.

1

  • University of London
  • Numerical mathematics: Plotting, transformation of graphs.

May

31

  • University of London
  • Numerical mathematics: Angles and triangles, trigonometry.

30

29

28

  • University of London
  • Introduction to programming: Game project (working with extra canvas in p5.js).
  • Numerical mathematics: Trigonometry.

27

26

  • University of London
  • Introduction to programming: Conditionals with types, debugging techniques.
  • The Coding Train: nested loops, functions, function parameters & arguments, functions & returns, classes in JavaScript with ES6, constructor arguments with classes in JavaScript, web editor: adding JavaScript files, what is an array, arrays & loops, arrays of objects, for of loops, mouse interactions with objects, removing objects from arrays, while & for loops.

  • Web development: HTML body, introduction to CSS.

25

  • University of London
  • Introduction to programming: Conditional logic, template literals.
  • The Coding Train: checking objects intersection/collisions, object communication part 2, while & for loops.

24

  • University of London

  • Numerical mathematics: Kinematic equations, angles, triangles, trigonometry.

  • Custom commands with fzf in Linux terminal with Luke Smith.

  • Animating SVG images with CSS.
  • 23

    • University of London
    • Numerical mathematics: Plotting, transformation of graphs, Fibonacci spiral.

    22

    • University of London

    • Numerical mathematics: suvat equations.

  • Suckless’s dwm: So easy even a caveman could do it! with Luke Smith.

  • 21

    • University of London

    • Numerical mathematics: Polynomial and rational functions, motions (distance and speed, displacement and velocity, acceleration).

  • For Loops - JavaScript Programming Basics p.6 with sentdex.

  • 10 Ways to Learn Faster with Siraj Raval.
  • GitHub Workflow, working locally, Git status, saved changes, Git pull & push, Git reset, merge strategies, organizations & teams, integrations and changing history with GitHub Training & Guides.
  • 20

    • University of London
    • Numerical mathematics: Polynomial and rational functions.
  • Object Oriented Programming in js - JavaScript Programming Basics p.5 with sentdex.
  • JSON, not Jason with Computerphile.
  • The Plastic Ratio with Numberphile.
  • 19

    • University of London
    • Numerical mathematics: Distance formula, midpoint formula, linear extrapolation, step functions, transformations of functions, composition of functions, polynomial and rational functions, Criss Cross Factoring with Steven Kliemann.
  • Binding Keys Universally in Linux with Luke Smith.
  • Running functions on an Interval with setInterval - JavaScript Programming Basics p.3 with sentdex.
  • Conditionals (if statement) - JavaScript Programming Basics p.4 with sentdex.
  • Getting started with React.js: Simple todo list with Engineer Man.
  • 18

    • University of London
    • Introduction to programming: Type casting in JavaScript.
    • Numerical mathematics: Cartesian coordinates, 2D & 3D shapes in planes.

    17

    • University of London
    • Numerical mathematics: More on functions, graphs of functions, piecewise functions, composite functions.
  • Functions and more Canvas - JavaScript Programming Basics p.2 with sentdex.
  • 16

    15

    • University of London
    • Web development: HTML body.
    • Setting up VirtualBox on Manjaro.
    • Creating wireframes in Adobe XD.

    14

    • University of London
    • Introduction to programming: drawing more objects in p5.js.
    • Web development: HTML markup history, meta tags, open graphs tags, SEO.

    13

    • University of London
    • Introduction to programming: drawing more objects in p5.js.
    • Reconfigure hardware and software on macOS from scratch with external backup.

    12

    • University of London
    • Web development: Introduction to HTML.

    11

    • University of London
    • Numerical mathematics: Series, convergence, divergence.
    • Web development: Basics of HTML wireframes, CSS, PWA (Progressive Web App) & service workers.

    10

    • University of London
    • Numerical mathematics: Series, convergence, divergence.

    9

    • University of London
    • Numerical mathematics: Generating random numbers, arithmetic & geometric progressions.
    • Introduction to Data Science in Python on Coursera: Python fundamentals, Pandas.

    8

    7

    6

    5

    • University of London
    • Numerical mathematics: Infinite series, limits.
    • Setting up Neomake & Black with Neovim.

    4

    2

    • Changing compose key settings in .xinitrc.
    • BIOS settings: TPM (Trusted Platform Module), VT (Virtualization Technology), DEP (Data Execution prevention).

    1


    April

    30

    29

    28

    • University of London
    • Numerical mathematics: simplified RSA algorithm, finding encryption and decryption keys for any mod.
    • Introduction to Data Science in Python on Coursera: Introduction to NumPy.

    27

    26

    25

    24

    23

    22

    21

    • University of London
    • Numerical mathematics: Euclidean algorithm, extended Euclidean algorithm, modular inverses.
    • Skim through Automate the Boring Stuff with Python, by Al Sweigart: Python programming basics, regular expressions.

    20

    • University of London
    • Numerical mathematics: Euclidean algorithm, extended Euclidean algorithm, modular inverses.
    • Using string formatting to evaluate hexadecimal, binary, decimal and octal versions of a value (Stackoverflow answer).

    19

    • University of London
    • Numerical mathematics: Euclidean algorithm.

    18

    • University of London
    • Numerical mathematics: Modular arithmetic, number theory, Euclidean algorithm.
    • Configuring st (simple terminal) and dmenu.

    17

    • University of London
    • Introduction to programming: p5.js with functions, loops & objects.
    • Batch convert and rename images and videos in terminal with ImageMagick, ffmpeg and rename.

    16

    • University of London
    • Numerical mathematics: Modular arithmetic.

    15

    14

    • University of London
    • Numerical mathematics: Steganography, arithmetic in hexadecimal and octal.

    13

    • University of London
    • Numerical mathematics: Octal and hexadecimal.
    • Linking variables from different functions to print them (Stackoverflow answer).

    12

    • University of London
    • Numerical mathematics: Arithmetic in binary.

    11

    • University of London
    • Introduction to programming: JavaScript objects, conditionals and variable types.
    • Web development: How a web browser works; the importance of design; content, structure & storytelling.

    10

    • University of London
    • Introduction to programming: built-in variables, JavaScript objects.
    • Web development: Delivering Web content.

    9

    8

    • University of London
    • Introduction to programming: development environment, drawing in 2D.
    • Numerical mathematics: Introduction to number bases and modular arithmetic, number bases, octal and hexadecimal with fractional parts.

    7

    • University of London
    • Web development: Introduction to the Web.
    • How to fix SyntaxError in a module that gives an error upon import? (Stackoverflow answer).

    6

    5

    • Python: Checking dead links asynchronously.

    4

    • Python: Writing to files with asynchronous jobs in queue.

    3

    2

    1

    • Essence of Calculus with 3Blue1Brown: Limits; L’Hôpital’s rule; fundamental theorem of calculus; areas and slopes.

    March

    31

    30

    29

    • Essence of Calculus with 3Blue1Brown: Fundamentals of Calculus, derivatives.
    • Merging history in Git.
    • Importing existing GPG keys and setting Git to use them.

    28

    • Python for Everyday Life: Anatomy of a Web application, MVC frameworks, building and testing a simple website with Flask, working with SQLite in Python, ORMs (Django & SQLAlchemy), designing a bot deployed to Heroku.
    • Reworking history in Git (squash, pick).

    27

    • Finished AI For Everyone on Coursera: AI strategy, pitfalls to avoid, major application areas (computer vision, NLP, speech, robotics, machine learning), major AI techniques (unsupervised learning, transfer learning, reinforcement learning, Generative Adversarial Networks, knowledge graph), AI and society.

    26

    • AI For Everyone on Coursera: What is AI (machine learning, data, terminology, deep learning), building & choosing AI projects, technical tools.

    25

    • 10 Python Tips and Tricks For Writing Better Code with Corey Schafer: Ternary operators, underscores placeholders, string formatting in f-strings placeholders, using context managers, enumerate function in loops, zip function in loops, value unpacking, getting and setting attributes on objects (getattr, setattr), inputting sensitive information (getpass function), help and dir function.
    • SQL Joins Explained with Socratica.
    • Linux Cron Jobs with Engineer Man.
    • Python for Everyday Life: Interact with httpbin Test Service, fetching data from API, automating Internet tasks (Gmail, Twitter, Reddit).
    • Creating a Discord bot with custom commands.
    • Matching Brackets on Code Abbey.

    24

    23

    22

    21

    • Certifications on TestDome (Python, Linux, Numerical Reasoning).
    • Python review with Python for Everyday Life: Logging, regular expressions, function decorators, context managers, generator expressions & generators, magic methods, metaprogramming, functional programming, pythonic code, manipulation files & folders, handle common file formats.

    20

    • Following along Scrapy tutorial.
    • Modular arithmetic with negative divisors.

    19

    18

    • Setting a Discord server.
    • Setting up Slack channels and apps.

    17

    16

    15

    14

    13

    • Setting up a basic web application with Pyramid.
    • Review vim-fugitive features and mappings.
    • Review properties of CSS selectors and hierarchies.
    • Manage caching of CSS files with MD5 hashes.
    • Setting up CopyQ, a “Clipboard Manager with Advanced Features”.

    12

    11

    10

    • Tor network, Tor Browser, onion routes, deep/dark web.

    9

    • Read Learning Python, by Mark Lutz: Core data types, Python statements, assignments, expressions, if tests, syntax rules, ternary expressions, loops.

    8

    • Review data structures in Python.

    7

    6

    5

    4

    3

    2

    1


    February

    28

    • Mathematics for Computer Science on Coursera: Introduction to sequences and series, modified Josephus problem with any number, geometric progressions on A paper sizes.

    27

    26

    25

    24

    23

    22

    21

    20

    19

    • Mathematics for Computer Science on Coursera: Arithmetic in binary, working with octal and hexadecimal numbers (integers and fractions).
    • Mindshift on Coursera: Ideas on pace and style of learning.
    • 10 Days of JavaScript on HackerRank.com: Template literals, arrow functions.

    18

    17

    16

    • Learning How to Learn on Coursera: Motivation; overlearning; Einstellung (attitude, mindset); interweaving practice; procrastination; memory.

    15

    • Started Learning How to Learn on Coursera: Focused/diffused thinking, procrastination, memory, sleep, creativity & problem solving, chunking.
    • Manage a website remotely with rsync and SSH.

    14

    • Started Mathematics for Computer Science on Coursera, course offered by Goldsmiths, University of London: Number bases, converting between binary and decimals with fraction, rational and irrational numbers.
    • 10 Days of JavaScript on HackerRank.com: Classes, inheritance.

    13

    • Finished How Computers Work on Coursera, course offered by Goldsmiths, University of London: General concepts on networks, security and web.

    12

    • How Computers Work, Coursera: Abstractions; notional machines; application states; modularity.
    • 10 Days of JavaScript on HackerRank.com: Object initializers, dot notation, bracket notation.

    11

    10

    • Configure VirtualBox with all major Operating Systems (Windows, Mac, Linux, BSD).
    • Inkscape: Convert text to vector paths.

    9

    • 10 Days of JavaScript on HackerRank.com: Regular expressions, arrays, error handling, creating objects.

    8

    • Recreate structure of content/ folder in output/ with Pelican (Stackoverflow answer).
    • Managing submodules with Git.

    7

    • Set up dotfiles on GitHub.
    • Configure and use Z Shell (Zsh).
    • 10 Days of JavaScript on HackerRank.com: Arithmetic operators, functions, let & const, conditional statements (if-else, switch), strings, loops.

    6

    • Review SQL commands.
    • Started 10 Days of JavaScript on HackerRank.com.

    5

    • Git: branches; tags; commit revisions.
    • Review Vim and Qutebrowser shortcuts on ShortcutFoo.

    4

    3

    • Design a logo with the golden ratio.

    2

    • Review Git basics.

    January

    18

    17

    16

    15

    • JavaScript: Conditional statements, loops and functions.

    14

    • JavaScript: built-in variables and events.

    13

    • Creating abstract SVG paths in Inkscape.
    • Creating functions in JavaScript with Processing.js & p5.js.

    12

    • Finished Google IT Support Professional Certificate!
    • IT Security: Review (application policies, privacy policies, information policies, password policies, security recommendations on mobile & laptop, wireless security, authentication systems, network separation, firewalls, intrusion detection & prevention systems).

    11

    • Google IT

    • IT Security: Review of security measures.

    • Creating collapsible, responsive content in CSS with Bootstrap 4.

    10

    • Google IT
    • IT Security: Secure network architecture, wireless security, network monitoring, system hardening, application hardening, security model of Chrome OS.

    9

    • Google IT
    • IT Security: AAA (Authentication, Authorization, Accounting).

    8

    • Google IT
    • IT Security: Symmetric encryption, asymmetric encryption, hashing, cryptography applications.
    • Standard functions in SQL.

    7

    • Google IT
    • IT Security: Malicious software, network attacks, other types of attacks.
    • Statistics (Poisson distribution, geometric distribution, binomial distribution).

    6

    5

    • Google IT
    • Disaster recovery plans & post-mortems.
    • Statistics (conditional probability).

    4

    • Google IT
    • Setting a backup server (BackupPC) on Linux. Disaster recovery plans.
    • Bitwise operations (Python).

    3

    • Google IT
    • Data recovery plans, types of backups.
    • Primality testing algorithm in Python.

    2

    • Google IT
    • Active Directory (managing users and passwords, group policy), OpenLDAP.
    • Began reading Atomic Habits, by James Clear.

    1

    • Finish CSS Fundamentals Course on SoloLearn.
    • Finish SQL Fundamentals Course on SoloLearn.

    2018 and earlier