Pages from the fire

I came here to write software and chew bubblegum, and I'm all out of software.

Links and notes

Reading short list

(Because I’ll find a book or article series that is important and then life will get in the way)

Sketch algorithms – (Or streaming algorithms) are probabilistic algorithms that can provide answers to certain questions about extremely large sets of data in a short time with known error characteristics. To compute such answers exactly would require a prohibitively large about of time and memory.

Deep learning – Relatively new techniques for training neural networks that have many layers/long credit assignment paths.

Graphical models: Decently paced lecture notes on Bayesian networks.

The long list

Machine learning/statistics

  • IPAM video lectures
  • Tutorial on Bayesian programming: An interesting experiment for an interactive book. The book is a set of iPython notebooks, so you can run the code as you read. The source is on github, so you can modify it as you go along.
  • Random projection.  Johnson-Lindenstrauss dimension reduction: If you project data to a lower dimension using a random projection matrix, the pair-wise distances will largely be conserved if the new dimensionality is of the order of the log of the number of points.

Computer science

C++/low level programming details

  • Undefined behavior in C/C++ – John Reghr [1] [2] [3]
  • A survey of CPU caches (full pdf paper) – Cache lines, size, features, includes testing code.
  • Cache Oblivious algorithms – “Cache-oblivious algorithms work by recursively dividing a problem’s dataset into smaller parts and then doing as much computations of each part as possible. Eventually subproblem dataset fits into cache, and we can do significant amount of computations on it without accessing memory”
  • A guide to OpenMP – “OpenMP consists of a set of compiler #pragmas that control how the program works. The pragmas are designed so that even if the compiler does not support them, the program will still yield correct behavior, but without any parallelism.”
  • Online C++ disassembler – write your code in the left hand pane. The assembly code appears in the right hand side. Magic!
  • Xeus/Xeus-cling – C++ Jupyter notebook

Sites I find interesting

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.