Borgmarks - Merlin Corey at Github dot I/O
Table of Contents
- 1. Borgmarks
- 2. Theory of organization
- 3. Algorithms
- 3.1. Books
- 3.2. Programming Exercises
- 3.3. Visualizing Algorithms bostocks visualization algorithms
- 3.4. Solving pocket Rubik's cube (2 * 2 * 2) using Z3 and SAT solver algorithms simplified rubiks cube solver
- 3.5. Bubble Sort: An Archaeological Algorithmic Analysis algorithms bubble sort analysis
- 3.6. The Archive of Interesting Code algorithms datastructures archive examples
- 3.7. Accidentally Quadratic blog algorithms complexity big o
- 3.8. Hexagonal Grids algorithms datastructures examples hexagonal grids
- 3.9. Pytudes - Python programs to practice or demonstrate skills. norvig python etudes algorithms datastructures problem solving
- 3.10. mandliya/algorithmsanddatastructures :algorithms:datastructures:c:++:
- 3.11. Are statecharts the next big UI paradigm? algorithms visualization state machines state charts
- 3.12. Welcome to the (unfinished) world of Statecharts algorithms visualization state machines state charts
- 3.13. Functional, Stateless JS Finite State Machines and Statecharts algorithms state machines state charts
- 3.14. Forde's Tenth Rule, or, "How I Learned to Stop Worrying and ❤ the State Machine" algorithms state machines
- 3.15. Reading bits in far too many ways (part 1) algorithms encoding decoding bits and bytes 2018
- 3.16. Reading bits in far too many ways (part 2) algorithms encoding decoding bits and bytes 2018
- 3.17. Bit Twiddling Hacks algorithms encoding decoding bit twiddling 2005
- 3.18. Dynamic Programming – 7 Steps to Solve any DP Interview Problem algorithms dynamic programming recurrence 2018
- 3.19. trekhleb/javacript-algorithms algorithms datastructures javascript 2018
- 3.20. High-Performance Matrix Multiplication algorithms matrix multiplication 2018
- 4. Artificial Life
- 4.1. Build a working game of Tetris in Conway's Game of Life artificial life computer tetris in game of life
- 4.2. Conwayz—"A new rendition of Conway's vital cellular automaton." artificial life game of ife web explorer
- 4.3. Conway Life: A community for Conway's Game of Life and reluated cellular automata artificial life forum
- 5. Build Systems
- 5.1. Recursive Make Considered Harmful build systems paper make 2002
- 5.2. GNU Make: Rules of Makefiles build systems make 2002
- 5.3. A Tutorial on Portable Makefiles build systems portable make 2017
- 5.4. Build System Rules and Algorithms paper shal build systems 2009
- 5.5. tup build systems tup shal reverse dag
- 5.6. Some nice and accurate CMake tips build systems cmake 2018
- 6. Compilers
- 7. Cryptography
- 8. Crypto currencies
- 8.1. Mining Bitcoin with pencil and paper: 0.67 hashes per day cryptography currency bitcoin 2014
- 8.2. Hidden surprises in the Bitcoin blockchain and how they are stored: Nelson Mandela, Wikileaks, photos, and Python software cryptography currency blockchain creative hacking 2014
- 8.3. List Of High Profile Cryptocurrency Hacks So Far cryptography currency crime and theft 2017
- 8.4. Can you really hack Ethereum smart contracts? cryptography currency ethereum hate 2017
- 8.5. Roll your Own Bitcoin Exchange in Haskell cryptography currency exchange haskell
- 8.6. Why Everyone Missed the Most Important Invention in the Last 500 Years cryptography accounting triple entry bookkeeping
- 8.7. Triple Entry Accounting - Ian Grigg Systemics, Inc. paper 2005
- 8.8. Miners Aren’t Your Friends: Miners and Consensus: Part 1 of 2 cryptography currency 2018
- 8.9. Write your next Ethereum Contract in Pyramid Scheme cryptography currency 2017
- 8.10. DSLs for Ethereum Contracts cryptography currency 2018
- 8.11. EtherFiddle cryptography currency ethereum solidity ide
- 8.12. RED: a full-stack, open-source toolchain for simple smart contracts and decentralized apps development paper cryptography currency smart contracts language 2018
- 8.13. AxLang: Formally Verifiable Smart Contracts for the Ethereum Ecosystem cryptography currency smart contracts language 2018
- 8.14. Ethereum Smart Contract Best Practices: Static Analysis cryptography currency ethereum smart contracts 2018
- 8.15. How to Secure Your Smart Contracts: 6 Solidity Vulnerabilities and how to avoid them (Part 1) cryptography currency ethereum smart contracts 2018
- 8.16. Inside an Ethereum transaction cryptography currency ethereum 2017
- 8.17. The ultimate guide to audit a Smart Contract + Most dangerous attacks cryptography currency smart contracts 2017
- 8.18. Writing upgradable contracts in Solidity cryptography currency smart contracts 2018
- 9. Datastructures, Databases, and Filesystems
- 9.1. Multi-Dimensional Analog Literals datastructures analog literals 2006
- 9.2. Datastructures for Coding Interviews datastructures python interviews
- 9.3. The Lost Art of C Structure Packing datastructures c packing esr 2014
- 9.4. Let's Build a Simple Database datastructures databases c language sql sqlite
- 9.5. We need tool support for keyset pagination datastructures databases sql pitfall pagination offset
- 9.6. ZFS from a MySQL perspective datastructures databases filesystems mysql zfs 2017
- 9.7. Demystifying Floating Point Precision datastructures floating point numbers 2017
- 9.8. Design Patterns in Dynamic Programming datastructures design patterns norvig 1996
- 9.9. Clojure Design Patterns datastructures design patterns 2017
- 9.10. 6.851 MIT Open Courseware - Advanced Datastructures mit open courseware advanced datastructures 2012
- 9.11. Cache Oblivious Datastructures datastructures cache obliious 2017
- 9.12. SQL Pivot — Rows to Columns databases sql pivot
- 9.13. Parsing JSON is a Minefield datastructure parsing json 2016 2018
- 9.14. The memory models that underlie programming languages datastructures programming languages memory models 2016
- 9.15. A new fast hash table in response to Google’s new fast hash table datastructures hash table 2018
- 9.16. Architecture of a Database System paper databases architecture 2007
- 9.17. Functional Data Structures book datastructures functional
- 9.18. Alembic
- 9.19. postgres
- 10. Development Environments and Editors
- 10.1. A Brief Glance at How Various Text Editors Manage Their Textual Data editors data structures text representation 2015
- 10.2. ZSH, tmux, Emacs and SSH: A copy-paste story environments editors copy paste compatibility
- 10.3. Emacs
- 10.3.1. Emacs Wiki emacs xemacs emacs lisp wiki
- 10.3.2. OrgMode Manual emacs orgmode manual
- 10.3.3. How to use Emacs Org as a Basic Day Planner emacs orgmode day planner 2007
- 10.3.4. Using org-mode as a Day Planner emacs orgmode org day planner 2007
- 10.3.5. David O'Toole Org tutorial emacs orgmode tutorial todo agenda
- 10.3.6. Writing Non-Beamer presentations in org-mode emacs orgmode presentations
- 10.3.7. Portacle - Portable Common Lisp IDE emacs slime sbcl common lisp
- 10.3.8. helm - Emacs incremental completion and selection narrowing framework emacs package incremental completion search
- 10.3.9. projectile - Project Interaction Library for Emacs emacs package project management
- 10.3.10. notmuch for emacs emacs package notmuch integration
- 10.3.11. Emacs configuration for C++/CMake/git emacs configuration c language integrated development environment explained
- 10.3.12. A CEO's Guide to Emacs emacs configuration exposition 2015
- 10.3.13. fountain-mode - Emacs major mode for screenwriting in Fountain plaintext markup emacs package screenwriting
- 10.3.14. Literate Devops emacs orgmode devops
- 10.3.15. eshell as a main shell emacs eshell 2017
- 10.3.16. Emacs for Writers emacs video writers 2015
- 10.3.17. melling/EditorNotes: Emacs emacs writers
- 10.3.18. Emacs 26 Brings Generators and Threads emacs threads 2018
- 10.3.19. Use Emacs Org Mode and REST APIs for an up-to-date Stock Portfolio emacs orgmode 2018
- 10.3.20. C/C++ Development Environment for Emacs emacs c cplusplus 2015
- 10.3.21. Packages
- 10.3.22. Kanban
- 11. Emulators and Game Consoles
- 11.1. codeslinger Emulation Basics emulator 2008
- 11.2. Emulator 101 emulator arcade tutorial 2016
- 11.3. GBATek - Gameboy Advance / Nintendo DS / DSi - Technical Info nintendo gameboy nintendo dsi documentation
- 11.4. Nintendo Entertainment System
- 11.4.1. blanham/ChickeNES nintendo entertainment system emulator c 2013 2015
- 11.4.2. I made an NES emulator. Here’s what I learned about the original Nintendo. nintendo entertainment system emulator 2015
- 11.4.3. Writing your own NES emulator - overview nintendo entertainment system emulator cpp 2018
- 11.4.4. How to Program an NES game in C programming nintendo entertainment system 2017
- 11.4.5. The strange and wonderful world of homebrew games for the original Nintendo Entertainment System. nintendo entertainment system homebrew 2018
- 11.4.6. NES Development Day 1: Creating a ROM nintendo entertainment system rom programming 2018
- 11.4.7. NES Dev Wiki nintendo entertainment system dev wiki
- 11.5. Nintendo Gameboy
- 11.5.1. Game Boy CPU Manual nintendo gameboy manual
- 11.5.2. Gameboy Dev Wiki nintendo gameboy wiki
- 11.5.3. PANDOCS: Everything You Always Wanted to Know about GAMEBOY nintendo gameboy documentation 2001
- 11.5.4. Blargg's Gameboy Tests nintendo gameboy test suite 2013
- 11.5.5. djhworld/gomeboycolor nintendo gameboy emulator golang 2013
- 11.5.6. The Ultimate Game Boy Talk (33c3) video nintendo gameboy 2016
- 11.5.7. Why did I spend 1.5 months creating a Gameboy emulator? nintendo gameboy emulator java 2017
- 12. Free Books (TODO: REMOVE)
- 13. Great Talks
- 13.1. Brian Kernighan - How to succeed at language design without really trying talk kernighan language design awk
- 13.2. Gerald Sussman - We Don't Really Know how to Compute talk sussman computation
- 13.3. William Byrd - The Most Beautiful Program Ever Written talk byrd interpreters provers solvers minikanren
- 13.4. SQLite: The Database at the Edge of the Network with Dr. Richard Hipp talk hipp database sqlite
- 13.5. Ron Garret - The Remote Agent Experiment: Debugging Code from 60 Million Miles Away talk garret lisp in space
- 13.6. Brian Cantril talks
- 13.7. Rich Hickey
- 13.7.1. Are we there yet? talk hickey clojure design
- 13.7.2. Hammock Driven Development talk hickey design
- 13.7.3. Simple Made Easy talk hickey complexity
- 13.7.4. The Value of Values talk hickey
- 13.7.5. The Language of the System talk hickey distrubuted language design
- 13.7.6. Design, Composition, and Performance talk hickey
- 13.7.7. Effective Programs - 10 Years of Clojure - Rich Hickey talk hickey effectiveness 2017
- 13.8. Pycon
- 14. Frontend Web Design
- 14.1. CSS Flexbox Froggy css flexbox tutorial game
- 14.2. CSS Grid Garden css grid tutorial game
- 14.3. 7 Practical Tips for Cheating at Design ui design tips
- 14.3.1. Use color and weight to create hierarchy instead of size
- 14.3.2. Don't use grey text on colored backgrounds
- 14.3.3. Offset your shadows
- 14.3.4. Use fewer borders
- 14.3.5. Don't blow up icons that are meant to be small
- 14.3.6. Use accent borders to add color to a bland design
- 14.3.7. Not every button needs a background color
- 14.4. Resilient CSS: How to Write CSS That Works in Every Browser, Even the Old Ones 2018
- 14.4.1. Hacker News discussion #16546725
- 14.4.2. Introduction to Resilient CSS – 1/7 video 9 minutes 2018
- 14.4.3. The Secrets of ‘Can I Use’ – 2/7 Resilient CSS video 10 minutes 2018
- 14.4.4. How Browsers Handle Errors in CSS – 3/7 Resilient CSS video 7 minutes 2018
- 14.4.5. Unlocking the Power of CSS Overrides – 4/7 Resilient CSS video 8 minutes 2018
- 14.4.6. The Magic of Feature Queries, Part 1 – 5/7 Resilient CSS video 9 minutes 2018
- 14.4.7. The Magic of Feature Queries, Part 2 – 6/7 Resilient CSS video 5 minutes 2018
- 14.4.8. Making Your CSS Fail Excellently – 7/7 Resilient CSS video 5 minutes 2018
- 14.5. EnderJS - The no library library javascript browser 2018
- 14.6. Tachyons - Responsive CSS framework css framework
- 14.7. BEM - Block Element Modifier css methodology
- 15. Functional Programming
- 15.1. Metacircular Adventures in Functional Abstraction functional programming common lisp clojure
- 15.2. Clojure from the ground up functional programming clojure
- 15.3. Reducers, transducers, and core.async in clojure functional programming clojure
- 15.4. Functors, Applicatives, And Monads In Pictures functional programming functors monads visualizations
- 15.5. The Haskell Pyramid functional programming haskell
- 15.6. Professor Frisby's Mostly Adequate Guide to Functional Programming book functional programming javascript
- 16. Game Development
- 17. Game Theory
- 18. Graphics
- 19. Hardware
- 20. Home Automation and Internet of Things
- 21. Locksmithery and Lockpickery
- 22. Machine Learning
- 22.1. The Neural Network Zoo machine learning neural networks
- 22.2. Machine Learning 101 machine learning 2017
- 22.3. Google Machine Learning: Crash Course machine learning crash course
- 22.4. glouw/tinn machine learning neural network library
- 22.5. Few Machine Learning Problems (with Python implementations) machine learning neural networks 2018
- 23. Mazes
- 24. Networking
- 24.1. Everything You Always Wanted to Know About Optical Networking – But Were Afraid to Ask networking optical fiber 2017
- 24.2. Beej's Guide to Network Programming networking programming c unix sockets beejs guide
- 24.3. Modern IRC Client Protocol networking protocol living documentation irc
- 24.4. VPN in a Nutshell networking linux vpn per application
- 24.5. Network latencies and the speed of light networking physics 2018
- 24.6. The case of the 500 mile long email networking physics statistics
- 24.7. 16 Tips to Better Network Diagrams networking diagrams
- 24.8. Fitting Square Pegs Through Round Pipes: Unordered Delivery Wire-Compatible with TCP and TLS networking protocols minion 2011
- 24.9. Minion - Wire Protocol paper networking protocols minion 2013
- 24.10. TCP Hollywood networking protocols 2016
- 24.11. Linux Raw Sockets networking raw sockets linux 2018
- 24.12. Start your own (wireless) ISP networking wisp 2018
- 24.13. The headers we don't want networking http headers 2018
- 24.14. The Two-Napkin Protocol networking bgp history 1989 2018
- 24.15. HTTP Made Really Easy networking http 2012
- 24.16. Playing battleships over BGP networking bgp games 2018
- 24.17. Broadcom vs Mellanox based platforms: 100 Gbps networking networking performance 2018
- 24.18. NAPALM (Network Automation and Programmability Abstraction Layer with Multivendor support) networking python 2018
- 24.19. Oldest domains in the .com, .net, and .org TLDs networking history dns 2018
- 24.20. Software-Defined Radio for Engineers, 2018 book networking sdr 2018
- 25. Object Oriented Programming and Design
- 26. Operating Systems
- 27. Papers
- 27.1. As We May Think paper 1945
- 27.2. A Mathematical Theory of Communication paper networking 1948
- 27.3. Computing Machinery and Intelligence paper turing artificial intelligence 1950
- 27.4. Error Detecting and Error Correcting Codes paper hamming 1950
- 27.5. Recursive Functions of Symbolic Expressions and their Computation by Machine paper mccarthy lisp 1960
- 27.6. How do Committees Invent paper design organization 1968
- 27.7. New Directions in Cryptography paper cryptography diffie hellman 1976
- 27.8. Time, Clocks, and the Ordering of Events in a Distributed System paper distributed 1978
- 27.9. Reflections on Trusting Trust paper security trust unix 1984
- 27.10. The Limits of Corrrectness paper 1985
- 27.11. Communicating Sequential Processes paper concurrent 1985
- 27.12. The Rendering Equation paper graphics rendering pipeline 1986
- 27.13. StateCharts: A Visual Formalism for Complex Systems paper state machine 1987
- 27.14. A Sample of Brilliance paper randomness sampling 1987
- 27.15. On Visual Formalisms paper state machine 1988
- 27.16. A Cookbook for an Emacs paper emacs 1991
- 27.17. CONS Should Not CONS Its Arguments, Part II: Cheney on the M.T.A. paper lisp scheme tail recursion c 1994
- 27.18. State in Haskell paper haskell state 1995
- 27.19. Purely Functional Data Structures paper functional programming data structures 1996
- 27.20. Constructive Logic paper logic 2000
- 27.21. Making Reliable Distributed Systems in the Presence of Software Errors paper distributed systems 2003
- 27.22. Out of the Tarpit paper design complexity 2006
- 27.23. Dynamo: Amazon’s Highly Available Key-value Store paper distrubted database dynamodb 2007
- 27.24. Bitcoin: A Peer-to-Peer Electronic Cash System paper cryptography currency bitcoin 2008
- 27.25. Generic Top-down Discrimination for Sorting and Partitioning in Linear Time paper sorting 2010
- 27.26. In Search of an Understandable Consensus Algorithm paper distributed consenus 2014
- 28. Physics
- 28.1. So You Want to Learn Physics… physics susan flower 2016
- 28.2. Physics Travel Guides physics study tool
- 28.3. Physics Course Notes with Simulations physics course javascript simulations 2018
- 28.4. Math and Physics Simulations physics java script simulations
- 28.5. PhET: Interactive (Physics) Simulations physics simulations
- 29. Programming Languages
- 29.1. APL
- 29.2. Assembly
- 29.2.1. Introduction to Computer Organization: ARM Assembly Language Using the Raspberry Pi assembly arm raspberry pi
- 29.2.2. ICTeam28/PiFox assembly arm raspberry pi 2014
- 29.2.3. Compiling Python syntax to x86-64 assembly for fun and (zero) profit assembly x86 python static 2017
- 29.2.4. JIT compiling a subset of Python to x86-64 assembly x86 python jit 2017
- 29.3. C
- 29.4. C++
- 29.4.1. C++ FQA language cpp98 fqa
- 29.4.2. C++ Truths blog language cpp 2017
- 29.4.3. lefticus/cppbestpractices language cpp best practices 2015 2018
- 29.4.4. rigtorp/awesome-modern-cpp language cpp awesome list 2016
- 29.4.5. Microsoft: Welcome back to C++ - Modern C++ language cpp11 cpp14 2016
- 29.4.6. Google C++ Style Guide language cpp style guide
- 29.4.7. isocpp/CppCoreGuidelines language cpp11 cpp14 cpp17 guidelines 2018
- 29.4.8. Microsoft/GSL language cpp11 cpp14 cpp17 2016 2018
- 29.4.9. ISO CPP: C++ FAQ Super FAQ language cpp11 cpp14 faq
- 29.4.10. HackerNews Discussion #16535886: Ask HN: Best way to learn modern C++? language cpp learning modern hacker news 2018
- 29.4.11. clang-format: Automated formatting for C and C++ language cpp clang formatter
- 29.4.12. conan - The C / C++ package manager for developers language cpp library package manager
- 29.4.13. Parsing C++ is literally undecidable language cpp compilers decideability 2013
- 29.4.14. Examples of Parallel Algorithms From C++17 language cpp cpp17 algorithms parallel 2018
- 29.4.15. Libraries
- 29.4.16. Videos
- 29.5. Go
- 29.6. Erlang
- 29.7. Javascript
- 29.8. Lisp
- 29.8.1. (How to Write a (Lisp) Interpreter (in Python)) norvig implementing lisp in python 2010
- 29.8.2. Lisp In Less Than 200 Lines Of C implementing lisp in c 2017
- 29.8.3. Faust Programming Language dsp programming compiling to cpp 2016
- 29.8.4. HackerNews discussion about Faust 2017-12-02
- 29.8.5. HackerNews discussion about Faust 2016-11
- 29.8.6. What did Alan Kay mean by, "Lisp is the greatest single programming language ever designed"? Answer by Alan Kay alan kay programming language design lisp 2017
- 29.8.7. Robust Clojure: The best way to handle nil programming language lisp clojure nil null handling 2018
- 29.8.8. How to Design Programs 2 book programming language lisp scheme 2014
- 29.8.9. Teach Yourself Scheme in FIXNUM days book programming language lisp scheme
- 29.9. Python
- 29.9.1. Automate the Boring Stuff with Python book python programming automation
- 29.9.2. Explore Flask python programming web site api
- 29.9.3. Some thoughts on asynchrous API design in a post async/await world python asynchronous 2016
- 29.9.4. On Incomplete HTTP Reads and the Requests Library In Python python requests 2018
- 29.9.5. Programming in the Debugger python jupyter 2018
- 29.9.6. Libraries
- 30. Reverse Engineering
- 30.1. Open Security Training YouTube Channel videos binary reverse engineering
- 30.2. Colourful visualization tool for binary files binary data visualization
- 30.3. Binary Ninja reverse engineering platform
- 30.4. Trail of Bits: Binary Ninja reverse engineering platform
- 30.5. radareorg/cutter github reverse engineering platform
- 30.6. Reverse engineering Animal Crossing's developer mode reverse engineering 2018
- 31. Revision Control
- 31.1. Git Book (v2) git book
- 31.2. git ready git tips tricks
- 31.3. GitAlias/gitalias/gitalias.txt git alias aliases tricks
- 31.4. Understanding git filter-branch git advanced branch tricks
- 31.5. A successful Git branching model git workflow branch model
- 31.6. Atlassian's comparing workflows and tutorials git workflow branch model
- 31.7. HGFlow - Generalized Driessen's Branching Model hg workflow branch model
- 31.8. Understanding the Github Flow git github workflow branch model
- 31.9. tig git porcelain curses
- 31.10. Magit git porcelain emacs
- 31.11. gittup git linux distribution
- 31.12. ohshitgit git oh shit pitfalls remedies
- 31.13. scottnonnenberg/.gitconfig with GPG signing and other goodies git config 2018
- 31.14. Five Key Git Concepts Explained the Hard Way 2018
- 31.15. esr/reposurgeon revision control repository surgery 2018
- 31.16. The Biggest and Weirdest Commits in Linux Kernel Git History revision control git linux 2017
- 31.17. Git Log: The Good Parts revision control git log 2018
- 32. Shells and Terminals
- 32.1. Zsh Configuration From the Ground Up zsh configuration tutorial 2013
- 32.2. Eschewing Zshell for Emacs Shell zsh emacs eshell
- 32.3. Termux android terminal emulator
- 32.4. anordal/shellharden: How to do things safely in bash bash shell safety 2018
- 32.5. Shell Magic: Set Operations with uniq shell scripting 2018
- 33. Software Engineering
- 33.1. Python API Checklist python api programming checklist 2017
- 33.2. Python Packaging Pitfalls python packaging 2014
- 33.3. Less known (python) packaging features and tricks python packaging talk video 2015
- 33.4. Migrating to Python 3 with pleasure python 3 migration features
- 33.5. Zeal is an offline documentation browser for software developers. software engineering programming languages offline documentation reference
- 34. Systems Engineering
- 34.1. Logging user-data Script Output on EC2 Instances systems cloudinit logging aws ec2
- 34.2. Linux Load Averages: Solving the Mystery systems linux load average algorithm history
- 34.3. SSH Escape Sequences systems linux ssh escape sequences 2011
- 34.4. NginX systems backwards proxy web mail
- 34.5. In defence of swap: common misconceptions systems swap memory 2018
- 34.6. Terraform
- 35. Uncategorized Otherwise
- 35.1. Advanced SQL Recipes to jumpstart your Analysis sql tricks data analysis
- 35.2. The TTY Demystified unix history tty
- 35.3. How to Interview Engineers hiring engineers
- 35.4. The Eye's ROM Section open index emulation nes snes gba n64
- 35.5. Evolution of a Haskell Programmer haskell humor
- 35.6. FarmOS open source farm management
- 35.7. Destroy All Monsters role dungeons and dragons 2006
- 35.8. Doomsday planning for less crazy folk planning for life
- 35.9. Frameless Geodesic Dome construction design geodesic dome
- 35.10. The Most Officialest SkiFree Home Page! software history skifree
- 35.11. What makes a good REPL? programming language interpreter design clojure
- 35.12. Side Project Marketing Checklist open source marketing checklist 2017
- 35.13. Software Engineering ≠ Computer Science software engineering architecture design 2009
- 35.14. Worldbuilding world building
- 35.15. Eckkehard The German Butcher youtube channel charcutery butchery
- 35.16. Topposting and Bottomposting opinion holy war email netiquette
- 35.17. Basic security precautions for non-profits and journalists in the United States computer security guidelines precautions 2017
- 35.18. Neural Symphony - Neuromodulated Tinnitus Relief audio neural tinnitus relief
- 35.19. Game Design FAQs game design frequently asked questions
- 35.20. An Invitation to Live Consciously in Business fred kofman linkedin conscious business academy 2015
- 35.21. 17776-football digital novel artificial intelligence artificial life 2017
- 35.22. CS 007 - Personal Finance for Programmers personal finance programmers course 2017
- 35.23. How to Read Mathematics mathematics reading how to
- 35.24. standupmaths - Why is TV 29.97 frames per second? mathematics color television video ntsc
- 35.25. Learn ffmpeg the hard way video ffmpeg tutorial
- 35.26. The GNU C Programming Tutorial gnu c programming tutorial
- 35.27. snaptoken C utility
- 35.28. Sunday Morning Breakfast Comics: The Talk 3 web comic quantum mechanics
- 35.29. Programmer's Guide to Polynomials and Splines mathematics guide splines
- 35.30. How to Study Mathematics mathematics study tool
- 35.31. The Benjamin Franklin Method of Reading Programming Books programming study method 2018
- 35.32. Let’s talk about usernames programming foibles usernames 2018
- 35.33. So you want to Abolish Time Zones time zones 2015
- 35.34. Akin's Laws of Spacecraft Design engineering spacecraft design axioms
- 35.35. 12 Manager READMEs from Silicon Valley's Top Tech Companies management 2018
- 35.36. Completely Silent Computer computer hardware 2018
- 35.37. How to be a Manager management 2018
- 35.38. Github: kanboard/kanboard kanban 2015 2018
- 36. UNIX and BSD
- 36.1. My BSD Sucks Less Than Yours talk unix openbsd freebsd
- 36.2. “Has Linux lost its way?” comments prompt a Debian developer to revisit FreeBSD after 20 years unix linux comparison 2015
- 36.3. Practical UNIX Manuals - mdoc: structure, style, and composition book unix man pages mdoc
- 36.4. FreeBSD - a lesson in poor defaults freebsd defaults security 2017
- 37. Video Series
- 38. Web Comics
1 Borgmarks
Bookmarks in emacs org-mode.
Curated, categorized, and tagged by hand.
2 Theory of organization
2.1 Categorization through headings
- Top-level headings represent broad categories of related links.
- Tagging is used for exposing topics related to a particular link.
2.2 Subcategorization through subheadings
- Subheadings are used to represent narrower subcategories within a particular category.
- Subheadings must come after the sibling links.
2.3 Tags for metadata
- Tags should be single words so they can be categorized automatically without a full NLP engine
- Tags should include the publish year and last update year if available
2.4 Master list vs Category pages
Currently there is only a single page master list, but it is getting very large to manage and read.
2.4.1 Roadmap
In the future we will want to have to category and potentially even subcategory pages.
This will mean either compiling those pages from the master list, or compiling the master list from those pages. Compiling the master list from the categories and subcategories seems most appropriate.
2.4.2 History
Originally, Borgmarks was a single index.org file with some example elisp code.
2.5 Theory of operation
- Links should be their own headings followed by tags.
- Optional properties with CREATED date.
- Description.
2.5.1 Managing web bookmarks with Org-mode emacs orgmode bookmarks
Well written post linked to from this discussion on reddit and elsewhere.
(setq org-capture-templates
'(
;; many more capture templates
("b" "Bookmark" entry (file+headline "~/share/all/org-mode/notes.org" "Bookmarks") "* %?\n:PROPERTIES:\n:CREATED: %U\n:END:\n\n" :empty-lines 1)
;; many more capture templates
)
)
2.5.2 Org Card :emacs:orgmode:reference:card
3 Algorithms
3.2 Programming Exercises
3.2.1 Project Euler programming exercise math
3.2.2 Codewars programming exercise
3.2.3 Exercism programming exercise opensource
3.3 Visualizing Algorithms bostocks visualization algorithms
Great overview of various algorithms with visualizations from visualization master Mike Bostocks.
3.4 Solving pocket Rubik's cube (2 * 2 * 2) using Z3 and SAT solver algorithms simplified rubiks cube solver
3.5 Bubble Sort: An Archaeological Algorithmic Analysis algorithms bubble sort analysis
3.6 The Archive of Interesting Code algorithms datastructures archive examples
3.7 Accidentally Quadratic blog algorithms complexity big o
3.8 Hexagonal Grids algorithms datastructures examples hexagonal grids
3.9 Pytudes - Python programs to practice or demonstrate skills. norvig python etudes algorithms datastructures problem solving
3.10 mandliya/algorithmsanddatastructures :algorithms:datastructures:c:++:
3.11 Are statecharts the next big UI paradigm? algorithms visualization state machines state charts
3.12 Welcome to the (unfinished) world of Statecharts algorithms visualization state machines state charts
3.13 Functional, Stateless JS Finite State Machines and Statecharts algorithms state machines state charts
3.14 Forde's Tenth Rule, or, "How I Learned to Stop Worrying and ❤ the State Machine" algorithms state machines
3.15 Reading bits in far too many ways (part 1) algorithms encoding decoding bits and bytes 2018
3.16 Reading bits in far too many ways (part 2) algorithms encoding decoding bits and bytes 2018
3.17 Bit Twiddling Hacks algorithms encoding decoding bit twiddling 2005
3.18 Dynamic Programming – 7 Steps to Solve any DP Interview Problem algorithms dynamic programming recurrence 2018
3.18.1 Refdash Demystifying Interviews - Dynamic Programming video algorithms dynamic programming recurrence 2018
3.19 trekhleb/javacript-algorithms algorithms datastructures javascript 2018
3.19.1 Hacker News Discussion #17134831 discussion algorithms datastructures javascript 2018
The documentation and code quality is all good.
The implementation choices leave some things to be desired. The Queue and Stack implementations are Linked Lists instead of array backed, the hash table is closed instead of (the only barely more complicated) open Robin hood hash table scheme, the union-find/disjoint-set implementation doesn't have path compression or rank unions.
Overall very good, but it could be Great (tm) with just a little bit of work.
> I thought array-based queues resulted in O(n) queue/dequeue.
Not necessarily. A circular buffer[1] can be used as a queue with O(1) queue/dequeue. C++ implementations (gcc?), IIRC, uses an interesting array-of-arrays approach; it also has O(1) queue/dequeue. I'm not sure why the array-of-arrays approach is better than a circular buffer, though.
Array based designs can result is less allocations, and maybe less overhead. For example, if you have a circular buffer with space for 16 items, it only needs to allocate space if you need more room, whereas a linked list queue would allocate for each and every item placed into it. Linked lists also require space for the pointer to the next link, for each link in the list. (And, if you keep them, back pointers, though these aren't necessary for just a queue.) Arrays might have some unused slack space, however.
Resizing a fully contiguous circle buffer would cause a copy every element as well forcing you to make a single contiguous memory section. Array of arrays just needs to resize the top level array.
But the copy only has to move n items, but was constructed with m items, where n < m (and usually n << m). Where n is the max size of the queue and m is the total number of items that will ever be enqueued.
On the other hand, an array of arrays (no recursion) doesn’t change the big-O complexity cost, just the constant multiplier. That should definitely improve performance of the uncommon operation (the copy), but hypothetically might slow down the actual queuing operations (and drastically reduce throughout)
But maybe you meant the array of arrays to be recursive? That seems like it would alter the big-O (from n+m to log(n)+m). But typically m>>n, so the net result is the same.
3.20 High-Performance Matrix Multiplication algorithms matrix multiplication 2018
4 Artificial Life
4.1 Build a working game of Tetris in Conway's Game of Life artificial life computer tetris in game of life
The underlying idea of this project is abstraction. Rather than develop a Tetris game in Life directly, we slowly ratcheted up the abstraction in a series of steps. At each layer, we get further away from the difficulties of Life and closer to the construction of a computer that is as easy to program as any other.
- OCTA Meta Pixels as first level of abstraction
- Wireworld and the Wireworld Computer as inspiration
From here we developed an architecture for our processor. We spent significant effort on designing an architecture that was both as non-esoteric and as easily-implementable as possible. Whereas the Wireworld computer used a rudimentary transport-triggered architecture, this project uses a much more flexible RISC architecture complete with multiple opcodes and addressing modes. We created an assembly language, known as QFTASM (Quest for Tetris Assembly), which guided the construction of our processor.
4.2 Conwayz—"A new rendition of Conway's vital cellular automaton." artificial life game of ife web explorer
4.3 Conway Life: A community for Conway's Game of Life and reluated cellular automata artificial life forum
4.3.1 Elementary Knightship artificial life game of life discovery 2018
- Elementary
- Cannot be broken down into smaller pieces
- Knightship
- Glider that moves 2 horizontal and 1 vertical unit in its lifecycle
x = 31, y = 79, rule = B3/S23 4b2o$4bo2bo$4bo3bo$6b3o$2b2o6b4o$2bob2o4b4o$bo4bo6b3o$2b4o4b2o3bo$o9b 2o$bo3bo$6b3o2b2o2bo$2b2o7bo4bo$13bob2o$10b2o6bo$11b2ob3obo$10b2o3bo2b o$10bobo2b2o$10bo2bobobo$10b3o6bo$11bobobo3bo$14b2obobo$11bo6b3o2$11bo 9bo$11bo3bo6bo$12bo5b5o$12b3o$16b2o$13b3o2bo$11bob3obo$10bo3bo2bo$11bo 4b2ob3o$13b4obo4b2o$13bob4o4b2o$19bo$20bo2b2o$20b2o$21b5o$25b2o$19b3o 6bo$20bobo3bobo$19bo3bo3bo$19bo3b2o$18bo6bob3o$19b2o3bo3b2o$20b4o2bo2b o$22b2o3bo$21bo$21b2obo$20bo$19b5o$19bo4bo$18b3ob3o$18bob5o$18bo$20bo$ 16bo4b4o$20b4ob2o$17b3o4bo$24bobo$28bo$24bo2b2o$25b3o$22b2o$21b3o5bo$ 24b2o2bobo$21bo2b3obobo$22b2obo2bo$24bobo2b2o$26b2o$22b3o4bo$22b3o4bo$ 23b2o3b3o$24b2ob2o$25b2o$25bo2$24b2o$26bo!
5 Build Systems
5.1 Recursive Make Considered Harmful build systems paper make 2002
5.2 GNU Make: Rules of Makefiles build systems make 2002
5.3 A Tutorial on Portable Makefiles build systems portable make 2017
5.4 Build System Rules and Algorithms paper shal build systems 2009
5.5 tup build systems tup shal reverse dag
In a typical build system, the dependency arrows go down. Although this is the way they would naturally go due to gravity, it is unfortunately also where the enemy's gate is. This makes it very inefficient and unfriendly. In tup, the arrows go up. This is obviously true because it rhymes. See how the dependencies differ in make and tup:
Make Tup
---- ---
hello-world hello-world
V V ^ ^
foo.o bar.o foo.o bar.o
V V V V ^ ^ ^ ^
foo.c foo.h bar.c bar.h foo.c foo.h bar.h bar.c
See the difference? The arrows go up. This makes it very fast. In fact, in at least one case, tup is optimal. See the Build System Rules and Algorithms (PDF) paper for more detailed information.
5.6 Some nice and accurate CMake tips build systems cmake 2018
6 Compilers
6.1 GCC
6.1.1 StackOverflow: "-ftrapv" and "-fwrapv": Which is better for efficiency? compilers gcc 2016
hvd answers:
The whole point of both of these options is to give the optimiser less leeway than it normally has. Therefore, unless you encounter a bug in the optimiser, the fastest should be to use neither, where the optimiser assumes your code doesn't have any overflows and doesn't emit code to handle overflows.
> What what does it mean when the
-ftrapvdefinition says it generates "traps?" Does this mean exceptions?It doesn't mean a C++ exception. It's target-dependent, but assuming x86, it means the GCC runtime libraries cause
SIGABRTto be raised that will normally abort your program. On other platforms, it might use special CPU instructions that cause a hardware exception. It's mainly useful for debugging purposes and perhaps in a few cases for safety, where the risk of continuing after overflow is greater than the risk of the program suddenly terminating.
7 Cryptography
7.1 Advanced Introduction to GnuPG cryptography tutorial gnupg
7.2 GCHQ CyberChef cryptography tools
Forked on my own github merlincorey/CyberChef.
7.3 Cryptopals cryptography ctf
8 Crypto currencies
8.1 Mining Bitcoin with pencil and paper: 0.67 hashes per day cryptography currency bitcoin 2014
8.2 Hidden surprises in the Bitcoin blockchain and how they are stored: Nelson Mandela, Wikileaks, photos, and Python software cryptography currency blockchain creative hacking 2014
8.3 List Of High Profile Cryptocurrency Hacks So Far cryptography currency crime and theft 2017
8.4 Can you really hack Ethereum smart contracts? cryptography currency ethereum hate 2017
8.5 Roll your Own Bitcoin Exchange in Haskell cryptography currency exchange haskell
8.6 Why Everyone Missed the Most Important Invention in the Last 500 Years cryptography accounting triple entry bookkeeping
8.6.1 Yuji Ijiri's obituary at CMU obituary 2017
Former Carnegie Mellon University professor Yuji Ijiri, founder of the transitional momentum accounting practice, also known as triple-entry accounting, died on Jan. 18. He was 81.
Born Feb. 24, 1935, educated and employed as an accountant in his native Japan, Ijiri later adopted the Graduate School of Industrial Administration (GSIA), now the Tepper School of Business, and Carnegie Mellon University as his workplace and home for the final half-century of his life. He earned a Ph.D. in industrial administration at Carnegie Mellon in 1963 and, after four years at the Stanford Graduate School of Business, joined the faculty of GSIA. He remained a central Carnegie Mellon figure from 1967 until his death.
Until his retirement in 2011, Ijiri was the R.M. Trueblood University Professor of Accounting and Economics, emeritus. During his time in this position he collaborated and taught alongside such notables as Nobel laureate Herb Simon, former university president Richard Cyert, global operations and accounting visionary Bill Cooper, Ijiri’s thesis adviser James March, political scientist and co-author of the Behavioral Theory of the Firm, and global economics expert and Federal Reserve historian Allan Meltzer.
“Yuji played an instrumental role in the history of the Tepper School and is considered one of the intellectual giants of his era,” said Robert Dammon, dean of the Tepper School and professor of financial economics, who remembers his own 1984 arrival at the school, meeting the luminaries such as Simon and Ijiri. “Throughout his career, Yuji was an intellectual leader who had tremendous impact on the field of accounting, his colleagues, and the legions of Ph.D. students he worked with over the years. His influence and contributions have left an enduring legacy of research productivity and impact that sets one of the highest standards for academic achievement.”
Ijiri was named to the Accounting Hall of Fame in 1989, an honor afforded just 94 people through its 67-year history at Ohio State University. He authored 200 published papers and 25 books, some translated into Spanish, French and Japanese, but none more important to him than his 1989 work about triple-entry accounting. He was among the founding members of the Journal of Accounting and Public Policy in the early 1980s, as well as the only four-time winner of the American Accounting Association (AAA) Notable Contributions to Accounting Lecturer Award: 1966, 1967, 1971 and 1976. Ijiri served the AAA as vice president in the mid-1970s and president in the 1980s.
Ijiri, by his own description a “constant gardener” in education, once said, “Carnegie Mellon has indeed been ‘small gardens’ of learning blessed with exceptional teachers and students. Yet there seems to be something more. The gardens seem to have a special way of letting people grow.”
Ijiri was 6 years old when he attended the Abacus Math School in Kobe, Japan, and by the 10th grade was doing the bookkeeping for his father’s bakery. In 1952, before even graduating from the Nara High School of Commerce, he passed a test that allowed him to take the CPA examination without a college degree. He passed the CPA exam in 1953, while attending Doshisha Junior College at night. He finished three years at Ritsumeikan University, also in Kyoto, with a bachelor’s of law degree. Thus, he had completed all requirements for a CPA certificate at age 21, the youngest on record in Japan.
He worked at a small accounting firm and then with Price Waterhouse & Co. before leaving in 1959 to attend graduate school at the University of Minnesota, where he received a master’s degree in 1960. From there, he attended Carnegie Mellon, where he remained except for four years at Stanford.
Ijiri also was recognized internationally in accounting for aggregation theory, firm size distributions, accounting measurement theory, computer languages, and quantitative models in business and economics. Fair value accounting in the early 2000s brought his concepts to the forefront again, and among his final papers were works exploring connections between triple-entry accounting and quantum physics and quantum computing. At Carnegie Mellon, his service included academic councils, dean policy advisory and more. He was awarded the Weil Prize for faculty research in 2009-10. Established in 1990, the Yuji Ijiri Award for Excellence in Accounting is awarded to an MBA student during the school’s diploma ceremony each year.
Surviving are his wife of 54 years, Tomoko, of Oberlin, Ohio; and two daughters, Yumi (Oberlin, Ohio) and Lisa (Boston, Massachusetts).
8.7 Triple Entry Accounting - Ian Grigg Systemics, Inc. paper 2005
8.8 Miners Aren’t Your Friends: Miners and Consensus: Part 1 of 2 cryptography currency 2018
8.9 Write your next Ethereum Contract in Pyramid Scheme cryptography currency 2017
8.10 DSLs for Ethereum Contracts cryptography currency 2018
8.11 EtherFiddle cryptography currency ethereum solidity ide
8.12 RED: a full-stack, open-source toolchain for simple smart contracts and decentralized apps development paper cryptography currency smart contracts language 2018
8.13 AxLang: Formally Verifiable Smart Contracts for the Ethereum Ecosystem cryptography currency smart contracts language 2018
8.14 Ethereum Smart Contract Best Practices: Static Analysis cryptography currency ethereum smart contracts 2018
8.15 How to Secure Your Smart Contracts: 6 Solidity Vulnerabilities and how to avoid them (Part 1) cryptography currency ethereum smart contracts 2018
8.15.1 How to Secure Your Smart Contracts: 6 Solidity Vulnerabilities and how to avoid them (Part 2) cryptography currency ethereum smart contracts 2018
8.16 Inside an Ethereum transaction cryptography currency ethereum 2017
8.17 The ultimate guide to audit a Smart Contract + Most dangerous attacks cryptography currency smart contracts 2017
8.18 Writing upgradable contracts in Solidity cryptography currency smart contracts 2018
9 Datastructures, Databases, and Filesystems
9.1 Multi-Dimensional Analog Literals datastructures analog literals 2006
9.2 Datastructures for Coding Interviews datastructures python interviews
9.3 The Lost Art of C Structure Packing datastructures c packing esr 2014
9.4 Let's Build a Simple Database datastructures databases c language sql sqlite
Writing a sqlite clone from scratch in C
9.5 We need tool support for keyset pagination datastructures databases sql pitfall pagination offset
9.6 ZFS from a MySQL perspective datastructures databases filesystems mysql zfs 2017
9.7 Demystifying Floating Point Precision datastructures floating point numbers 2017
9.8 Design Patterns in Dynamic Programming datastructures design patterns norvig 1996
9.9 Clojure Design Patterns datastructures design patterns 2017
9.10 6.851 MIT Open Courseware - Advanced Datastructures mit open courseware advanced datastructures 2012
9.11 Cache Oblivious Datastructures datastructures cache obliious 2017
9.12 SQL Pivot — Rows to Columns databases sql pivot
9.13 Parsing JSON is a Minefield datastructure parsing json 2016 2018
9.14 The memory models that underlie programming languages datastructures programming languages memory models 2016
9.15 A new fast hash table in response to Google’s new fast hash table datastructures hash table 2018
9.15.1 skarupke/flathashmap datastructures hash table 2018
9.16 Architecture of a Database System paper databases architecture 2007
9.17 Functional Data Structures book datastructures functional
9.18 Alembic
9.18.1 A Practical Guide to using Alembic database migrations sqlalchemy alembic
9.18.2 Schema Migrations with Alembic, Python, and PostgreSQL databse migrations sqlalchemy alembic postgres
10 Development Environments and Editors
10.1 A Brief Glance at How Various Text Editors Manage Their Textual Data editors data structures text representation 2015
10.2 ZSH, tmux, Emacs and SSH: A copy-paste story environments editors copy paste compatibility
10.3 Emacs
10.3.1 Emacs Wiki emacs xemacs emacs lisp wiki
10.3.2 OrgMode Manual emacs orgmode manual
10.3.3 How to use Emacs Org as a Basic Day Planner emacs orgmode day planner 2007
10.3.4 Using org-mode as a Day Planner emacs orgmode org day planner 2007
10.3.5 David O'Toole Org tutorial emacs orgmode tutorial todo agenda
10.3.6 Writing Non-Beamer presentations in org-mode emacs orgmode presentations
10.3.7 Portacle - Portable Common Lisp IDE emacs slime sbcl common lisp
10.3.8 helm - Emacs incremental completion and selection narrowing framework emacs package incremental completion search
10.3.9 projectile - Project Interaction Library for Emacs emacs package project management
10.3.10 notmuch for emacs emacs package notmuch integration
Searchable and scriptable email in shell and emacs, yes please.
10.3.11 Emacs configuration for C++/CMake/git emacs configuration c language integrated development environment explained
10.3.12 A CEO's Guide to Emacs emacs configuration exposition 2015
10.3.13 fountain-mode - Emacs major mode for screenwriting in Fountain plaintext markup emacs package screenwriting
10.3.14 Literate Devops emacs orgmode devops
- YouTube: Literate Devops emacs orgmode devops youtube video
10.3.15 eshell as a main shell emacs eshell 2017
10.3.16 Emacs for Writers emacs video writers 2015
- Hackernews Discussion #17048907 2018
- incandescentman/Emacs-Settings emacs configuration
10.3.17 melling/EditorNotes: Emacs emacs writers
10.3.18 Emacs 26 Brings Generators and Threads emacs threads 2018
10.3.19 Use Emacs Org Mode and REST APIs for an up-to-date Stock Portfolio emacs orgmode 2018
10.3.20 C/C++ Development Environment for Emacs emacs c cplusplus 2015
10.3.21 Packages
- pashky/restclient emacs package rest 2016 2018
- ReadTheDocs: projectile emacs package
- Open a terminal with projectile in emacs emacs package 2017
;; Enable Projectile globally (projectile-global-mode) (defun projectile-term () "Create an ansi-term at the project root" (interactive) (let ((root (projectile-project-root)) (buff-name (concat " [term] " (projectile-project-root)))) (if (get-buffer buff-name) (switch-to-buffer-other-window buff-name) (progn (split-window-sensibly (selected-window)) (other-window 1) (setq default-directory root) (ansi-term (getenv "SHELL")) (rename-buffer buff-name t))))) (global-set-key (kbd "C-x M-t") 'projectile-term)
- Open a terminal with projectile in emacs emacs package 2017
10.3.22 Kanban
- Emacs, org-mode, Kanban, Pomodoro… Oh my… emacs orgmode kanban 2011
- El Kanban Org: parse org-mode todo-states to use org-tables as Kanban tables emacs orgmode kanban 2012
- Kanban in Emacs Org-Mode to Get More Work Done emacs orgmode kanban 2016
- Kanban workflow with Emacs, and org-mode emacs orgmode kanban 2017
- Github: hagmonk/org-kanban emacs orgmode kanban 2017 2018
- Github: gizmomogwai/org-kanban emacs orgmode kanban 2016 2018
11 Emulators and Game Consoles
11.1 codeslinger Emulation Basics emulator 2008
11.1.1 Study of the techniques for emulation programming paper emulation 2001
11.1.2 codeslinger chip8 emulator emulator chip8 2008
11.2 Emulator 101 emulator arcade tutorial 2016
11.3 GBATek - Gameboy Advance / Nintendo DS / DSi - Technical Info nintendo gameboy nintendo dsi documentation
11.4 Nintendo Entertainment System
11.4.1 blanham/ChickeNES nintendo entertainment system emulator c 2013 2015
11.4.2 I made an NES emulator. Here’s what I learned about the original Nintendo. nintendo entertainment system emulator 2015
- fogleman/nes nintendo entertainment system emulator golang 2015 2018
11.4.3 Writing your own NES emulator - overview nintendo entertainment system emulator cpp 2018
- yizhang82/neschan nitendo entertainment system emulator cpp 2018
11.4.4 How to Program an NES game in C programming nintendo entertainment system 2017
11.4.5 The strange and wonderful world of homebrew games for the original Nintendo Entertainment System. nintendo entertainment system homebrew 2018
11.4.6 NES Development Day 1: Creating a ROM nintendo entertainment system rom programming 2018
11.4.7 NES Dev Wiki nintendo entertainment system dev wiki
11.5 Nintendo Gameboy
11.5.1 Game Boy CPU Manual nintendo gameboy manual
11.5.2 Gameboy Dev Wiki nintendo gameboy wiki
- Gameboy Dev Wiki: Gameboy sound hardware nintendo gameboy sound
11.5.3 PANDOCS: Everything You Always Wanted to Know about GAMEBOY nintendo gameboy documentation 2001
11.5.4 Blargg's Gameboy Tests nintendo gameboy test suite 2013
11.5.5 djhworld/gomeboycolor nintendo gameboy emulator golang 2013
11.5.6 The Ultimate Game Boy Talk (33c3) video nintendo gameboy 2016
11.5.7 Why did I spend 1.5 months creating a Gameboy emulator? nintendo gameboy emulator java 2017
- trekawek/coffee-gb nintendo gameboy emulator java 2017
12 Free Books (TODO: REMOVE)
Books can be categorized by tags to generate a general Books section/page.
12.1 Software Foundations Series (books) books logic math computer science proofs coq
12.2 Certified Programming with Dependent Types book logic types proofs coq 2017
13 Great Talks
13.1 Brian Kernighan - How to succeed at language design without really trying talk kernighan language design awk
Mentions Alan Perlis' Epigrams in Programming
13.2 Gerald Sussman - We Don't Really Know how to Compute talk sussman computation
13.3 William Byrd - The Most Beautiful Program Ever Written talk byrd interpreters provers solvers minikanren
The first half is an overview of Scheme and writing an interpreter in scheme. The second half goes into using an advanced interpreter along with logic programming in minikanren to find programs that match test constraints.
13.4 SQLite: The Database at the Edge of the Network with Dr. Richard Hipp talk hipp database sqlite
13.5 Ron Garret - The Remote Agent Experiment: Debugging Code from 60 Million Miles Away talk garret lisp in space
13.6 Brian Cantril talks
13.7 Rich Hickey
Creator of Clojure known for many great talks.
13.7.1 Are we there yet? talk hickey clojure design
13.7.2 Hammock Driven Development talk hickey design
13.7.3 Simple Made Easy talk hickey complexity
13.7.4 The Value of Values talk hickey
13.7.5 The Language of the System talk hickey distrubuted language design
13.7.6 Design, Composition, and Performance talk hickey
13.7.7 Effective Programs - 10 Years of Clojure - Rich Hickey talk hickey effectiveness 2017
14 Frontend Web Design
14.1 CSS Flexbox Froggy css flexbox tutorial game
14.2 CSS Grid Garden css grid tutorial game
14.3 7 Practical Tips for Cheating at Design ui design tips
14.3.1 Use color and weight to create hierarchy instead of size
- Try using color or font weight to do the same job to differentiate importantness
- Stay away from font weights under 400 for UI work
14.3.2 Don't use grey text on colored backgrounds
- Reduce the opacity of white text
- Hand-pick a color that's base don the background color
14.3.3 Offset your shadows
14.3.4 Use fewer borders
- Use a box shadow
- Use two different background colors
- Add extra spacing
14.3.5 Don't blow up icons that are meant to be small
14.3.6 Use accent borders to add color to a bland design
14.3.7 Not every button needs a background color
14.4 Resilient CSS: How to Write CSS That Works in Every Browser, Even the Old Ones 2018
14.4.1 Hacker News discussion #16546725
- CSS and HTML are extremely resilient, they ignore your typos and unsupported features gracefully and never crash, so just daring to use them in your code, no need for exception handling comparing to JS, in that sense, if you can do it in CSS, avoid JS.
- Leverage CSS override
- Use browser devtools to test all browsers. No need install all older browser to check CSS. icanuse helps greatly too.
- Use feature-queries for CSS.
These indeed can make your CSS code work for both the stone age and hottest browsers, all at the same time, without much hacking. Great videos.
14.4.2 Introduction to Resilient CSS – 1/7 video 9 minutes 2018
14.4.3 The Secrets of ‘Can I Use’ – 2/7 Resilient CSS video 10 minutes 2018
14.4.4 How Browsers Handle Errors in CSS – 3/7 Resilient CSS video 7 minutes 2018
14.4.5 Unlocking the Power of CSS Overrides – 4/7 Resilient CSS video 8 minutes 2018
14.4.6 The Magic of Feature Queries, Part 1 – 5/7 Resilient CSS video 9 minutes 2018
14.4.7 The Magic of Feature Queries, Part 2 – 6/7 Resilient CSS video 5 minutes 2018
14.4.8 Making Your CSS Fail Excellently – 7/7 Resilient CSS video 5 minutes 2018
14.5 EnderJS - The no library library javascript browser 2018
14.6 Tachyons - Responsive CSS framework css framework
14.7 BEM - Block Element Modifier css methodology
15 Functional Programming
15.1 Metacircular Adventures in Functional Abstraction functional programming common lisp clojure
15.2 Clojure from the ground up functional programming clojure
15.3 Reducers, transducers, and core.async in clojure functional programming clojure
15.4 Functors, Applicatives, And Monads In Pictures functional programming functors monads visualizations
15.5 The Haskell Pyramid functional programming haskell
15.6 Professor Frisby's Mostly Adequate Guide to Functional Programming book functional programming javascript
16 Game Development
16.1 Books I had to read to develop a game engine game development game engine 2018
16.2 Sin & Cos: The Programmer's Pals! game development mathematics trigonometry
16.2.1 Conclusion
In this article I set out to answer some of the most common questions on sine and cosine, or trigonometry in general. I could give you a more mathematical explanation of sine and cosine, but I wanted this article to be of practical use to game programmers, especially to Allegro game programmers, not to give an encyclopedic description of abstract mathematics. I hope that this has been of some use to you, my dear reader. Please send me an e-mail if you have something to say about this article, whether you like it, dislike it, find it useful, or just want to say hi. If you have any questions you can ask them on the forums at http://www.allegro.cc/. It is very likely that I'll see it there. And if you ever write an effect in a demo or game using the explanations in this article, I would very much like to see the result.
Amarillion E-mail: amarillion@yahoo.com Home page: http://www.helixsoft.nl/
16.3 Confessions of an Unreal Engine 4 Engineering Firefighter game development unreal engine fire fighting 2018
17 Game Theory
17.1 Ward Farnsworth's Predator at the Chessboard gametheory book chess
17.2 mindsports.nl gametheory gamedesign puzzles
18 Graphics
18.1 Lou's Psuedo 3d Page graphics 3d rendering
18.2 3D Rendering without shaders graphics 3d rendering shaders
Hackernews discussion with some interesting discourse and links such as The Barycentric Conspiracy.
18.3 I Am Graphics And So Can You graphics 3d rendering vulkan
18.4 Íñigo Quílez' Demo and Shader Graphics Articles graphics demo scene shaders
19 Hardware
19.1 The Amazing $1 Microcontroller
Exploration of 21 different microcontrollers each costing less than $1 to help familiarize oneself with all the major ecosystems out there.
While some projects that come across my desk are complex enough to require a hundreds-of-MHz microcontroller with all the bells and whistles, it’s amazing how many projects work great using nothing more than a $1 chip — so this is the only rule I established for the shoot-out. 1
I wanted to explore the $1 pricing zone specifically because it’s the least amount of money you can spend on an MCU that’s still general-purpose enough to be widely useful in a diverse array of projects.
Any cheaper, and you end up with 6- or 8-pin parts with only a few dozen bytes of RAM, no ADC, nor any peripherals other than a single timer and some GPIO.
Any more expensive, and the field completely opens up to an overwhelming number of parts — all with heavily-specialized peripherals and connectivity options.
These MCUs were selected to represent their entire families — or sub-families, depending on the architecture — and in my analysis, I’ll offer some information about the family as a whole.
If you want to scroll down and find out who the winner is, don’t bother — there’s really no sense in trying to declare the “king of $1 MCUs” as everyone knows the best microcontroller is the one that best matches your application needs. I mean, everyone knows the best microcontroller is the one you already know how to use. No, wait — the best microcontroller is definitely the one that is easiest to prototype with. Or maybe that has the lowest impact on BOM pricing?
I can’t even decide on the criteria for the best microcontroller — let alone crown a winner.
What I will do, however, is offer a ton of different recommendations for different users at the end. Read on!
19.2 Implementing Fizbuzz on an FPGA 2018
19.3 Disambiguating the first computer hardware history
20 Home Automation and Internet of Things
20.1 Bruh Automation home automation tutorials reviews
Lots of resources including their github for various home automation things.
20.1.1 The BEST Digital LED Strip Light Tutorial - DIY, WIFI-Controllable via ESP, MQTT, and Home Assistant home automation led strip mqtt 2016
21 Locksmithery and Lockpickery
21.1 A FAILURE OF IMAGINATION: Kwikset Smartkey® and Insecurity Engineering physical security lockpicking kwikset smart key
22 Machine Learning
22.1 The Neural Network Zoo machine learning neural networks
22.2 Machine Learning 101 machine learning 2017
22.3 Google Machine Learning: Crash Course machine learning crash course
22.4 glouw/tinn machine learning neural network library
The tiny neural network library
22.5 Few Machine Learning Problems (with Python implementations) machine learning neural networks 2018
23 Mazes
23.1 Maze Generation Algorithm Recap maze algorithms
Nice recap of maze generation algorithms from a minecraft modder. Check out his minecraft maze generator.
24 Networking
24.1 Everything You Always Wanted to Know About Optical Networking – But Were Afraid to Ask networking optical fiber 2017
24.2 Beej's Guide to Network Programming networking programming c unix sockets beejs guide
Famous and extensive introductory text to programming with unix sockets. Only really touches on simple synchronous socket servers for the most part.
TODO - recategorize as their own links See also:
24.3 Modern IRC Client Protocol networking protocol living documentation irc
24.4 VPN in a Nutshell networking linux vpn per application
24.5 Network latencies and the speed of light networking physics 2018
24.6 The case of the 500 mile long email networking physics statistics
24.7 16 Tips to Better Network Diagrams networking diagrams
24.8 Fitting Square Pegs Through Round Pipes: Unordered Delivery Wire-Compatible with TCP and TLS networking protocols minion 2011
24.9 Minion - Wire Protocol paper networking protocols minion 2013
24.10 TCP Hollywood networking protocols 2016
24.11 Linux Raw Sockets networking raw sockets linux 2018
24.12 Start your own (wireless) ISP networking wisp 2018
24.13 The headers we don't want networking http headers 2018
24.13.1 Hacker News Discussion #17074721 2018
- Importance of Via
Via is not safe to remove and Fastly know this as well as Akamai, Cloudflare and others.
A very cheap attack is to chain CDNs into a nice circle. This is what Via protects against: https://blog.cloudflare.com/preventing-malicious-request-loops/
Just because a browser doesn't use a header does not make the header superfluous.
- Expires tricks
#+BEGINQUOTE
cache-control doesn't completely replace Expires for some use cases.
If you have a scheduled task that generates data every hour, you can set Expires accordingly so all clients will refresh the data as soon as the hour rolls over.
You can do this using max-age but then you have to dynamically calculate this header per request which means you can't do things like upload your data to s3 and set the cache-control header on it.
With expires, I can upload a file to s3 and set
Expires: … 17:00
and then not have to touch it again for an hour.
you can work around this client side with per hour filenames or the other usual cache busting tricks, but that's annoying. #+ENDQUO
24.14 The Two-Napkin Protocol networking bgp history 1989 2018
24.15 HTTP Made Really Easy networking http 2012
24.16 Playing battleships over BGP networking bgp games 2018
24.16.1 benjoho/bgp-battleships github networking bgp games 2018
24.16.2 /r/networking/Playing Battleship over BGP discussion networking bgp games 2018
24.17 Broadcom vs Mellanox based platforms: 100 Gbps networking networking performance 2018
24.18 NAPALM (Network Automation and Programmability Abstraction Layer with Multivendor support) networking python 2018
24.19 Oldest domains in the .com, .net, and .org TLDs networking history dns 2018
24.20 Software-Defined Radio for Engineers, 2018 book networking sdr 2018
25 Object Oriented Programming and Design
25.1 Wizards and Warriors: Part One object oriented design
25.1.1 Wizards and Warriors: Part Two object oriented design
25.1.2 Wizards and Warriors: Part Three object oriented design
25.1.3 Wizards and Warriors: Part Four object oriented design
25.1.4 Wizards and Warriors: Part Five object oriented design
27 Papers
27.1 As We May Think paper 1945
Some musings on hypertext and what we might build after the conclusion of World War II.
27.2 A Mathematical Theory of Communication paper networking 1948
Defines the term "bit" for Binary digIT.
27.3 Computing Machinery and Intelligence paper turing artificial intelligence 1950
27.4 Error Detecting and Error Correcting Codes paper hamming 1950
27.5 Recursive Functions of Symbolic Expressions and their Computation by Machine paper mccarthy lisp 1960
27.6 How do Committees Invent paper design organization 1968
Apparently this some of the inspiration for Mythical Man Month.
27.7 New Directions in Cryptography paper cryptography diffie hellman 1976
27.8 Time, Clocks, and the Ordering of Events in a Distributed System paper distributed 1978
27.9 Reflections on Trusting Trust paper security trust unix 1984
27.10 The Limits of Corrrectness paper 1985
27.11 Communicating Sequential Processes paper concurrent 1985
27.12 The Rendering Equation paper graphics rendering pipeline 1986
27.13 StateCharts: A Visual Formalism for Complex Systems paper state machine 1987
27.13.1 Are statecharts the next big UI paradigm? blog post statemachine 2017
27.14 A Sample of Brilliance paper randomness sampling 1987
27.15 On Visual Formalisms paper state machine 1988
27.16 A Cookbook for an Emacs paper emacs 1991
27.17 CONS Should Not CONS Its Arguments, Part II: Cheney on the M.T.A. paper lisp scheme tail recursion c 1994
27.18 State in Haskell paper haskell state 1995
27.19 Purely Functional Data Structures paper functional programming data structures 1996
27.20 Constructive Logic paper logic 2000
27.21 Making Reliable Distributed Systems in the Presence of Software Errors paper distributed systems 2003
27.22 Out of the Tarpit paper design complexity 2006
27.23 Dynamo: Amazon’s Highly Available Key-value Store paper distrubted database dynamodb 2007
27.24 Bitcoin: A Peer-to-Peer Electronic Cash System paper cryptography currency bitcoin 2008
27.25 Generic Top-down Discrimination for Sorting and Partitioning in Linear Time paper sorting 2010
27.26 In Search of an Understandable Consensus Algorithm paper distributed consenus 2014
28 Physics
28.1 So You Want to Learn Physics… physics susan flower 2016
28.2 Physics Travel Guides physics study tool
28.3 Physics Course Notes with Simulations physics course javascript simulations 2018
28.4 Math and Physics Simulations physics java script simulations
28.5 PhET: Interactive (Physics) Simulations physics simulations
29 Programming Languages
29.2 Assembly
29.2.1 Introduction to Computer Organization: ARM Assembly Language Using the Raspberry Pi assembly arm raspberry pi
29.2.2 ICTeam28/PiFox assembly arm raspberry pi 2014
29.2.3 Compiling Python syntax to x86-64 assembly for fun and (zero) profit assembly x86 python static 2017
29.2.4 JIT compiling a subset of Python to x86-64 assembly x86 python jit 2017
29.3 C
29.3.1 Tearing apart printf() c language low level 2018
29.3.2 Minimalist C Libraries c language libraries 2018
29.3.3 iso-9899 wiki: Alignment wiki c language 2017
29.3.4 Massacring C Pointers c language 2018
- Code Listing from Massacring C Pointers c language 2018
29.4 C++
29.4.1 C++ FQA language cpp98 fqa
A bit dated now, especially with regards to consistency between implementations and support for modern features. However, many of the general concerns still ring true today.
29.4.2 C++ Truths blog language cpp 2017
A blog exploring C++ features and best practices with articles posted between 2005 and 2017.
- I love C++ Programming blog language cpp 2005
- Fun with Lambdas: C++14 Style (part 1) blog language cpp 2014
- Fun with Lambdas: C++14 Style (part 2) blog language cpp 2014
- Fun with Lambdas: C++14 Style (part 3) blog language cpp 2014
- Fun with Lambdas: C++14 Style (part 4) blog language cpp 2015
29.4.3 lefticus/cppbestpractices language cpp best practices 2015 2018
- GitBook: C++ Best Practices book language cpp best practices 2018
29.4.4 rigtorp/awesome-modern-cpp language cpp awesome list 2016
29.4.5 Microsoft: Welcome back to C++ - Modern C++ language cpp11 cpp14 2016
29.4.6 Google C++ Style Guide language cpp style guide
29.4.7 isocpp/CppCoreGuidelines language cpp11 cpp14 cpp17 guidelines 2018
C++ core guidelines maintained by Dr. Bjarne Stroustrup.
- ISO CPP: C++ Core Guidelines language cpp11 cpp14 cpp17 guidelines 2018
29.4.8 Microsoft/GSL language cpp11 cpp14 cpp17 2016 2018
The Microsoft reference Guideline SUpport Library.
29.4.9 ISO CPP: C++ FAQ Super FAQ language cpp11 cpp14 faq
29.4.10 HackerNews Discussion #16535886: Ask HN: Best way to learn modern C++? language cpp learning modern hacker news 2018
29.4.11 clang-format: Automated formatting for C and C++ language cpp clang formatter
(load "<path-to-clang>/tools/clang-format/clang-format.el") (global-set-key [C-M-tab] 'clang-format-region)
29.4.12 conan - The C / C++ package manager for developers language cpp library package manager
29.4.13 Parsing C++ is literally undecidable language cpp compilers decideability 2013
29.4.14 Examples of Parallel Algorithms From C++17 language cpp cpp17 algorithms parallel 2018
29.4.15 Libraries
- Testing
- catchorg/Catch2 language cpp test framework 2018
Modern test framework in a header (or few, with extensions).
- catchorg/Catch2 language cpp test framework 2018
- Command Line Argument Parsing
- kmurray/libargparse language cpp argument parsing library 2017
A C++11 command-line parsing single-header library inspired by Python's
argparse. - catchorg/Clara language cpp argument parsing library 2018
A simple to use, composable, command line parser for C++ 11 and beyond in a single-header library.
int width = 0; std::string name; bool doIt = false; std::string command; auto cli = Opt( width, "width" ) ["-w"]["--width"] ("How wide should it be?") | Opt( name, "name" ) ["-n"]["--name"] ("By what name should I be known") | Opt( doIt ) ["-d"]["--doit"] ("Do the thing" ) | Arg( command, "command" ) ("which command to run"); - meullan/clipp language cpp argument parsing library 2018
Easy to use, powerful and expressive command line argument handling for C++11/14/17 contained in a single header file.
#include <iostream> #include "clipp.h" using namespace clipp; using std::cout; using std::string; int main(int argc, char* argv[]) { bool rec = false, utf16 = false; string infile = "", fmt = "csv"; auto cli = ( value("input file", infile), option("-r", "--recursive").set(rec).doc("convert files recursively"), option("-o") & value("output format", fmt), option("-utf16").set(utf16).doc("use UTF-16 encoding") ); if(!parse(argc, argv, cli)) cout << make_man_page(cli, argv[0]); // ... }
- kmurray/libargparse language cpp argument parsing library 2017
- Terminal Colors
- agaunival/rang language cpp terminal colors library 2018
A Minimal, Header only Modern c++ library for colors in your terminal.
- agaunival/rang language cpp terminal colors library 2018
- Formatting
- fmtlib/fmt language cpp string formatting 2018
Pythonic and C-style stand-alone and efficient (compile and runtime). Implements P0645 Text Formatting C++ standards proposal.
- fmtlib/fmt language cpp string formatting 2018
- Functional
- beark/ftl language cpp functional 2015
- beark/ftl language cpp functional 2015
29.4.16 Videos
- CppCon 2015: Herb Sutter "Writing Good C++14… By Default" video talk language cpp sutter 2015
- CppCon 2017: Bjarne Stroustrup “Learning and Teaching Modern C++” video talk language cpp stroustrup 2017
29.7 Javascript
29.7.1 mozilla/narcissus javascript circular interpreter 2012
29.7.2 Professor Frisby introduces composable functional Javascript video course javascript functional programming
29.7.3 isomorphic-git/isomorphic-git javascript git implementation 2018
29.8 Lisp
29.8.1 (How to Write a (Lisp) Interpreter (in Python)) norvig implementing lisp in python 2010
29.8.2 Lisp In Less Than 200 Lines Of C implementing lisp in c 2017
29.8.3 Faust Programming Language dsp programming compiling to cpp 2016
29.8.6 What did Alan Kay mean by, "Lisp is the greatest single programming language ever designed"? Answer by Alan Kay alan kay programming language design lisp 2017
Alan Kay, I am the Alan Kay in question. Updated 2017 October 29.
First, let me clear up a few misconceptions from the previous answers. One of them said “Try writing an operating system with Lisp”, as though this would be somehow harder. In fact, one of the nicest operating systems ever done was on “The Lisp Machines” (in Zeta-Lisp), the hardware and software following the lead of “The Parc Machines” and Smalltalk — and we in turn had been very influenced by the Lisp model of programming and implementation. (These operating systems in both Smalltalk and Lisp were both better (claim) and easier to write (simpler to demonstrate) than the standard ones of today.)
Another interesting answer assumed that “the test of time” is somehow a cosmic optimization. But as every biologist knows, Darwinian processes “find fits” to an environment, and if the environment is lacking, then the fits will be lacking. Similarly, if most computer people lack understanding and knowledge, then what they will select will also be lacking. There is abundant evidence today that this is just what has happened.
But neither of these has anything to do with my praise of Lisp (and I did explain what I meant in more detail in “The Early History of Smalltalk”).
To start with an analogy, let’s notice that a person who has learned calculus fluently can in many areas out-think the greatest geniuses in history. Scientists after Newton were qualitatively more able than before, etc. My slogan for this is “Point of view is worth 80 IQ points” (you can use “context” or “perspective” etc.). A poor one might subtract 80 IQ points! (See above). A new more powerful one makes some thinking possible that was too difficult before.
One of our many problems with thinking is “cognitive load”: the number of things we can pay attention to at once. The cliche is 7±2, but for many things it is even less. We make progress by making those few things be more powerful.
This is one of the reasons mathematicians like compact notation. The downside is the extra layers of abstraction and new cryptic things to learn — this is the practice part of violin playing — but once you can do this, what you can think about at once has been vastly magnified. There were 20 Maxwell’s Equations in their original form (in terms of partial differentials and cartesian coordinates). Today the four equations we can think about all at once are primarily due to their reformulation by Heaviside to emphasize what is really important about them (and what is likely to be problematic — e.g. the electric and magnetic fields should probably be symmetric with respect to movement, etc).
Modern science is about experiencing phenomena and devising models whose relationships with the phenomena can be “negotiated”. The “negotiation” is necessary because what’s inside our heads, and our representations systems etc have no necessary connection to “what’s out there?”.
Taking this point of view, we can see there can be a “bridge science” and “bridge scientists” because engineers build bridges and these furnish phenomena for scientists to make models of.
Similarly, there can be a “computer science” and “computer scientists” because engineers build hardware and software and these furnish phenomena for scientists to make models of. (In fact, this was a large part of what was meant by “computer science” in the early 60s — and it was an aspiration — still is — not an accomplished fact).
The story behind Lisp is fun (you can read John McCarthy’s account in the first History of Programming Languages). One of the motivations was that he wanted something like “Mathematical Physics” — he called it a “Mathematical Theory of Computation”. Another was that he needed a very general kind of language to make a user interface AI — called “The Advice Taker” — that he had thought up in the late 50s.
He could program — most programs were then in machine code, Fortran existed, and there was a language that had linked lists.
John made something that could do what any programming language could do (relatively easy), but did it in such a way so that it could express the essence of what it was about (this was the math part or the meta part or the modern Maxwell’s Equations part, however you might like to think of it). He partly did this — he says — to show that this way to do things was “neater than a Turing Machine”.
Another observation about this is that the “slope” from the simplest machine structures to the highest level language was the steepest ever — meaning that the journey from recognizable hardware to cosmic expression is a rocket jump!
As is often the case — especially in engineering — a great scientific model is often superior to what exists, and can lead to much better artifacts. This was certainly true here. Steve Russell (later famous for being the main inventor and programmer of “SpaceWar”) looked at what John had done, and said: “That’s a program. If I coded it up we’d have a running version”. As John remarked: “He did, and we did”!
The result was “unlimited programming in an eyeful” (the bottom half of page 13 in the Lisp 1.5 manual). The key was not so much “Lisp” but the kinds of thinking that this kind of representational approach allowed and opened up regarding all kinds of programming language schemes.
A fun thing about it this is that once you’ve grokked it, you can think right away of better programming languages than Lisp, and you can think right away of better ways to write the meta descriptions than John did. This is the “POV = 80 IQ points” part.
But this is like saying that once you’ve seen Newton, it becomes possible to do electrodynamics and relativity. The biggest feat in science was Newton’s!
This is why “Lisp is the greatest!”
29.8.7 Robust Clojure: The best way to handle nil programming language lisp clojure nil null handling 2018
29.8.8 How to Design Programs 2 book programming language lisp scheme 2014
29.8.9 Teach Yourself Scheme in FIXNUM days book programming language lisp scheme
29.9 Python
29.9.1 Automate the Boring Stuff with Python book python programming automation
29.9.2 Explore Flask python programming web site api
29.9.3 Some thoughts on asynchrous API design in a post async/await world python asynchronous 2016
29.9.4 On Incomplete HTTP Reads and the Requests Library In Python python requests 2018
29.9.5 Programming in the Debugger python jupyter 2018
29.9.6 Libraries
- npyscreen Documentation python library terminal ui 2014
- prompt-toolkit Documentation python library terminal ui 2014 2018
30 Reverse Engineering
30.1 Open Security Training YouTube Channel videos binary reverse engineering
30.2 Colourful visualization tool for binary files binary data visualization
30.3 Binary Ninja reverse engineering platform
30.4 Trail of Bits: Binary Ninja reverse engineering platform
30.5 radareorg/cutter github reverse engineering platform
30.6 Reverse engineering Animal Crossing's developer mode reverse engineering 2018
31 Revision Control
31.1 Git Book (v2) git book
31.2 git ready git tips tricks
31.3 GitAlias/gitalias/gitalias.txt git alias aliases tricks
31.4 Understanding git filter-branch git advanced branch tricks
31.5 A successful Git branching model git workflow branch model
Original post from 2010. Also check out Van Driessen's git flow plugin.
31.6 Atlassian's comparing workflows and tutorials git workflow branch model
31.7 HGFlow - Generalized Driessen's Branching Model hg workflow branch model
31.8 Understanding the Github Flow git github workflow branch model
31.9 tig git porcelain curses
31.10 Magit git porcelain emacs
31.10.1 Magit User Manual - Getting Started git magit user manual
31.10.2 magit walk through git magit walkthrough 2017
31.11 gittup git linux distribution
31.12 ohshitgit git oh shit pitfalls remedies
31.13 scottnonnenberg/.gitconfig with GPG signing and other goodies git config 2018
[alias] prune = fetch --prune # Because I constantly forget how to do this # https://git-scm.com/docs/git-fetch#git-fetch--p undo = reset --soft HEAD^ # Not quite as common as an amend, but still common # https://git-scm.com/docs/git-reset#git-reset-emgitresetemltmodegtltcommitgt stash-all = stash save --include-untracked # We wanna grab those pesky un-added files! # https://git-scm.com/docs/git-stash glog = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' # No need for a GUI - a nice, colorful, graphical representation # https://git-scm.com/docs/git-log # via https://medium.com/@payload.dd/thanks-for-the-git-st-i-will-use-this-4da5839a21a4 [merge] ff = only # I pretty much never mean to do a real merge, since I use a rebase workflow. # Note: this global option applies to all merges, including those done during a git pull # https://git-scm.com/docs/git-config#git-config-mergeff conflictstyle = diff3 # Standard diff is two sets of final changes. This introduces the original text before each side's changes. # https://git-scm.com/docs/git-config#git-config-mergeconflictStyle [commit] gpgSign = true # "other people can trust that the changes you've made really were made by you" # https://help.github.com/articles/about-gpg/ # https://git-scm.com/docs/git-config#git-config-commitgpgSign [push] default = simple # "push the current branch back to the branch whose changes are usually integrated into the current branch" # "refuse to push if the upstream branch’s name is different from the local one" # https://git-scm.com/docs/git-config#git-config-pushdefault followTags = true # Because I get sick of telling git to do it manually # https://git-scm.com/docs/git-config#git-config-pushfollowTags [status] showUntrackedFiles = all # Sometimes a newly-added folder, since it's only one line in git status, can slip under the radar. # https://git-scm.com/docs/git-config#git-config-statusshowUntrackedFiles [transfer] fsckobjects = true # To combat repository corruption! # Note: this global option applies during receive and transmit # https://git-scm.com/docs/git-config#git-config-transferfsckObjects # via https://groups.google.com/forum/#!topic/binary-transparency/f-BI4o8HZW0 # A nice little github-like colorful, split diff right in the console. # via http://owen.cymru/github-style-diff-in-terminal-with-icdiff/ [diff] tool = icdiff [difftool] prompt = false [difftool "icdiff"] cmd = /usr/local/bin/icdiff --line-numbers $LOCAL $REMOTE
31.14 Five Key Git Concepts Explained the Hard Way 2018
Author of the book Learn Git The Hard Way offers some git exercises.
31.14.1 References
HEADHEADis a special reference that always points to where the git repository is.- tag
- A tag is a reference that points to a specifi commit.
- branch
- A branch is like a tag, but will move when the
HEADmoves. - remote reference
- A remote reference is a reference to code that’s from another repository.
Type out these commands and explain what’s going on. Take your time:
mkdir lgthw_origin cd lgthw_origin git init echo 1 > afile git add afile git commit -m firstcommit git log --oneline --decorate --all --graph git branch otherbranch git tag firstcommittag git log --oneline --decorate --all --graph echo 2 >> afile git commit -am secondcommit git checkout otherbranch git log --oneline --decorate --all --graph echo 3 >> afile git commit -am thirdcommit git log --oneline --decorate --all --graph
31.14.2 Detached Head
git checkout firstcommit # You are in 'detached HEAD' state. git log --oneline --decorate --all --graph git checkout -b firstcommitbranch git log --oneline --decorate --all --graph
31.14.3 Remote Reference
cd .. git clone lgthw_origin lgthw_cloned cd lgthw_cloned git remote -v git log --oneline --decorate --all --graph git branch -a git checkout master # Branch master set up to track remote branch master from origin. Switched to a new branch 'master' cd ../lgthw_origin git checkout master echo origin_change >> afile git commit -am 'Change on the origin' cd ../lgthw_cloned git fetch origin git log --oneline --decorate --all --graph
31.14.4 Fast Forward
git merge origin/master git log --oneline --decorate --all --graph
31.14.5 Rebase
cd ../lgthw_origin git status echo origin_change_rebase >> afile git commit -am 'origin change rebase' git log --oneline --decorate --all --graph cd ../lgthw_cloned echo cloned_change_rebase >> anewfile git add anewfile git commit -m 'cloned change rebase in anewfile' git log --oneline --decorate --all --graph git fetch origin git log --oneline --decorate --all --graph git rebase origin/master git log --oneline --decorate --all --graph
31.15 esr/reposurgeon revision control repository surgery 2018
31.16 The Biggest and Weirdest Commits in Linux Kernel Git History revision control git linux 2017
31.17 Git Log: The Good Parts revision control git log 2018
31.17.1 Hacker News Discussion #16677308 discussion revision control git log 2018
32 Shells and Terminals
32.1 Zsh Configuration From the Ground Up zsh configuration tutorial 2013
32.2 Eschewing Zshell for Emacs Shell zsh emacs eshell
32.3 Termux android terminal emulator
32.4 anordal/shellharden: How to do things safely in bash bash shell safety 2018
32.5 Shell Magic: Set Operations with uniq shell scripting 2018
33 Software Engineering
33.1 Python API Checklist python api programming checklist 2017
33.2 Python Packaging Pitfalls python packaging 2014
33.3 Less known (python) packaging features and tricks python packaging talk video 2015
33.4 Migrating to Python 3 with pleasure python 3 migration features
33.5 Zeal is an offline documentation browser for software developers. software engineering programming languages offline documentation reference
34 Systems Engineering
34.1 Logging user-data Script Output on EC2 Instances systems cloudinit logging aws ec2
34.2 Linux Load Averages: Solving the Mystery systems linux load average algorithm history
34.3 SSH Escape Sequences systems linux ssh escape sequences 2011
- ~.
- terminate connection (and any multiplexed sessions)
- ~B
- send a BREAK to the remote system
- ~C
- open a command line
- ~R
- Request rekey (SSH protocol 2 only)
- (no term)
- ~Z:: suspend ssh
- ~#
- list forwarded connections
- ~&
- background ssh (when waiting for connections to terminate)
- ~?
- this message
- ~~
- send the escape character by typing it twice
34.4 NginX systems backwards proxy web mail
I have been using NginX since version 0.5.x and have been involved in the community here and there.
These are some great resources mostly from the docs I commonly share:
34.5 In defence of swap: common misconceptions systems swap memory 2018
34.6 Terraform
34.6.1 Terraform Infrastructure Design Patterns systems terraform 2015
34.6.2 Self-invented “how to Terraform” rules systems terraform 2017
35 Uncategorized Otherwise
35.1 Advanced SQL Recipes to jumpstart your Analysis sql tricks data analysis
35.2 The TTY Demystified unix history tty
35.3 How to Interview Engineers hiring engineers
35.4 The Eye's ROM Section open index emulation nes snes gba n64
The Eye's Rom Section is a project dedicated towards the preservation and archival of video games. All game versions present on the site are already out of production and are unavailable in the primary market.
35.5 Evolution of a Haskell Programmer haskell humor
35.6 FarmOS open source farm management
35.7 Destroy All Monsters role dungeons and dragons 2006
35.8 Doomsday planning for less crazy folk planning for life
35.9 Frameless Geodesic Dome construction design geodesic dome
35.10 The Most Officialest SkiFree Home Page! software history skifree
35.11 What makes a good REPL? programming language interpreter design clojure
35.12 Side Project Marketing Checklist open source marketing checklist 2017
35.13 Software Engineering ≠ Computer Science software engineering architecture design 2009
35.14 Worldbuilding world building
Resource on all things world-building with lots of interesting information and pointers to more information about world building.
35.15 Eckkehard The German Butcher youtube channel charcutery butchery
35.16 Topposting and Bottomposting opinion holy war email netiquette
35.17 Basic security precautions for non-profits and journalists in the United States computer security guidelines precautions 2017
35.18 Neural Symphony - Neuromodulated Tinnitus Relief audio neural tinnitus relief
Sounds purported to help provide temporary relief to tinnitus sufferers.
35.19 Game Design FAQs game design frequently asked questions
35.20 An Invitation to Live Consciously in Business fred kofman linkedin conscious business academy 2015
35.21 17776-football digital novel artificial intelligence artificial life 2017
A most intriguing story about Football in the year 17776.
35.22 CS 007 - Personal Finance for Programmers personal finance programmers course 2017
35.23 How to Read Mathematics mathematics reading how to
35.24 standupmaths - Why is TV 29.97 frames per second? mathematics color television video ntsc
35.25 Learn ffmpeg the hard way video ffmpeg tutorial
35.26 The GNU C Programming Tutorial gnu c programming tutorial
35.27 snaptoken C utility
These tutorials walk you through writing medium-size software projects from scratch, step by step. The projects are based on real open-source software projects, and most of the tutorials stay true to the original source code. Every line of code is explained in detail, allowing you to thoroughly understand the project’s entire codebase.
- kilo
- Guide for building text editor in C based on antirez's 1000 line editor
35.28 Sunday Morning Breakfast Comics: The Talk 3 web comic quantum mechanics
35.29 Programmer's Guide to Polynomials and Splines mathematics guide splines
35.30 How to Study Mathematics mathematics study tool
35.31 The Benjamin Franklin Method of Reading Programming Books programming study method 2018
35.32 Let’s talk about usernames programming foibles usernames 2018
35.33 So you want to Abolish Time Zones time zones 2015
A thought experiment about why abolishing time zones is a generally bad idea.
- You need to know what solar time (daylight) a remote area is for reasons
- Calendaring becomes more complicated with many places have split-day schedules
- UTC already exists for synchronizing times regardless of time zone
- The past will still have timezones and each region will switch at different times so you'll still need
zoneinfodatabases
35.34 Akin's Laws of Spacecraft Design engineering spacecraft design axioms
35.35 12 Manager READMEs from Silicon Valley's Top Tech Companies management 2018
35.36 Completely Silent Computer computer hardware 2018
35.36.1 Hacker News Discussion #17075489 2018
One can make a passive build much more powerful.
NSG S0, once out, will most likely be the go-to case for such setups. Until then, an HDPLEX H5 is cool.
My desk has a H5 on it, housing an i7 8700 (non-K) and a GTX 1060. The TIM under the heatspreader is replaced with Thermal Grizzly Conductonaut and Thermal Grizzly Kryonaut is used as every other TIM that the case setup needs. The CPU is on stock clocks with a voltage offset of -30 mV. The GPU has the power target reduced to 90% and clocks increased by 130 MHz, so that it is effectively undervolted as well. The PSU is a Seasonic Ultra Prime Titanium 650. Prime95 with AVX throttles really, really fast, under a minute, perhaps, but is a very unrealistic load. Non-AVX stress tests and FurMark take a while to start throttling (20 minutes?), as the thermal capacity of the aluminum case is quite big. After hours of gaming, the GPU and CPU float around 80 C while providing full stock performance. I don't do 3D rendering (other than in-game) or video en/decoding, so have not had long, real-world, full loads to see how temperatures behave with those.
From the discussion I've had and forums I've read, I think that people are afraid of putting more power in passive cases and having their components at "high" temperatures, despite those being rated for them.
35.37 How to be a Manager management 2018
35.38 Github: kanboard/kanboard kanban 2015 2018
Open source kanban board web application in PHP with MySQL database.
36 UNIX and BSD
36.1 My BSD Sucks Less Than Yours talk unix openbsd freebsd
36.2 “Has Linux lost its way?” comments prompt a Debian developer to revisit FreeBSD after 20 years unix linux comparison 2015
36.3 Practical UNIX Manuals - mdoc: structure, style, and composition book unix man pages mdoc
36.4 FreeBSD - a lesson in poor defaults freebsd defaults security 2017
37 Video Series
37.1 Professor Leonard video mathematics lectures
37.2 3Blue1Brown video series mathematics
37.3 Little Bits of Lisp with Baggers video series common lisp
37.4 Rewriting BSD 4.4 Shell Commands (part 1: cat)
According to learnto.computer/courses not all of the episodes are intended to be free, but at least at one time they were.