# Bookmarks This page will be my effort to migrate bookmarks out of my web browsers and onto this page. Because why should these great links be locked away in Mozilla's heavily encrypted Sync service? I can probably keep track of them better myself, and this way I won't have to worry about losing them to a browser glitch! Also, some of these links may be helpful to others. If you want to bookmark my bookmarks, then bookmark _this_ page, as I may be reorganizing some of these onto sub-pages when this list gets too long. * [Development](#development) * [Bash](#bash) * [C/C++](#c-c) * [HTML/CSS](#html-css) * [Game Dev](#game-dev) * [Git](#git) * [Go](#go) — Golang * [JavaScript](#javascript) * [PHP](#php) * [Programmer Humor](#programmer-humor) * [Python](#python) * [Technology](#technology) — Hadoop, MongoDB, etc. * [Google Ban Hammer](#google-ban-hammer) — Because people don't believe me without examples. * [Tutorials](#tutorials) * [Unicode](#unicode) * [Web Development](#web-development) — HTML, JavaScript & CSS * [API Design](#api-design) * [Web Dev Tools](#web-dev-tools) * [Gaming](#gaming) * [Introversion](#introversion) — Topics about introverts. * [Network Security](#network-security) — Encryption, OpSec, & hacking topics. * [NSA](#nsa) — Stories of the NSA, Edward Snowden, and related OpSec topics. * [Philosophy](#philosophy) * [Short Stories](#short-stories) * [Reddit](#reddit) — Miscellaneous cool Reddit threads and comments. # Development * [40 Key Computer Science Concepts Explained in Layman's Terms](http://carlcheo.com/compsci) * [Programming Sucks](http://www.stilldrinking.org/programming-sucks) * Joel on Software * [Back to Basics](https://www.joelonsoftware.com/2001/12/11/back-to-basics/) — A look back at C and how our high-level software actually works. * [The Law of Leaky Abstractions](https://www.joelonsoftware.com/2002/11/11/the-law-of-leaky-abstractions/) — Leaky abstractions in SQL engines and everywhere else. * [What Color is Your Function?](http://journal.stuffwithstuff.com/2015/02/01/what-color-is-your-function/) — Synchronous vs. asynchronous functions in languages and what a pain they are. * [Talks that changed the way I think about programming](http://www.opowell.com/post/talks-that-changed-the-way-i-think-about-programming/) ## Bash * [Better Bash Scripting in 15 Minutes](https://robertmuth.blogspot.it/2012/08/better-bash-scripting-in-15-minutes.html) * [Use the Unofficial Bash Strict Mode (Unless You Looove Debugging)](http://redsymbol.net/articles/unofficial-bash-strict-mode/) ## C/C++ * [How to C (in 2016)](https://matt.sh/howto-c) ## HTML/CSS * [The 30 CSS Selectors you Must Memorize](https://code.tutsplus.com/tutorials/the-30-css-selectors-you-must-memorize--net-16048) * [The CSS that you don't know about](https://medium.com/@mjtweaver/the-css-that-you-dont-know-about-d5945cea1c94) — More CSS selectors * [`flex-grow` is weird. Or is it?](https://css-tricks.com/flex-grow-is-weird/) ## Game Dev * Post-mortems and Tales * [Super Merryo Trolls](http://garote.bdmonkeys.net/merryo_trolls/) — or An Adventure From The Days Before VRAM * [The SCUMM Diary: Stories behind one of the greatest game engines ever made](https://www.gamasutra.com/view/feature/196009/The_SCUMM_Diary_Stories_behind_one_of_the_greatest_game_engines_ever.php) * [Why I've Said Goodbye to Mobile in Favor of PC](https://www.gamasutra.com/blogs/ThomasHenshell/20140807/222732/Why_Ive_Said_Goodbye_to_Mobile_in_Favor_of_PC.php) * [A Trip Down the Graphics Pipeline](http://doc-ok.org/?p=1057) * [Your greatest bug ever?](https://www.reddit.com/r/gamedev/comments/2k767e/your_greatest_bug_ever/) — A discussion on Reddit full of good stories. * [Designing a "playable" UI that secretly teaches you how to play](http://juicybeast.com/2014/10/28/designing-a-playable-ui-that-secretly-teaches-how-to-play/) * [The Evolution of **RollerCoaster Tycoon**](http://www.nicscorner.com/evo_of_rct.htm) * Anti-Cheat * [EarthBound's Copy Protection](http://media.earthboundcentral.com/2011/05/earthbounds-copy-protection/index.html) * Breakdowns & Reverse Engineering * [An Analysis of **Super Metroid's Camera Code**, and using it for a 360-degree aiming 2D platform shooter](http://suppressivefiregames.tumblr.com/post/85891843723/an-analysis-of-super-metroids-camera-code-and) * [Spoofing *Pokémon* trades with the Stellaris LaunchPad](http://www.adanscotney.com/2014/01/spoofing-pokemon-trades-with-stellaris.html) — A hardware hack for the original GameBoy games. * [How *Zelda* Gets Lock And Key Puzzles Right](http://howtomakeanrpg.com/a/how-zelda-gets-lock-and-key-puzzles-right.html) * [Writing a GameBoy Advance Game](https://www.reinterpretcast.com/writing-a-game-boy-advance-game) * [Making a GameBoy Game in 2017](https://www.gamasutra.com/blogs/DoctorLudos/20171207/311143/Making_a_Game_Boy_game_in_2017_A_quotSheep_It_Upquot_PostMortem_part_12.php) * Multiplayer & Networking * [Fast-Paced Multiplayer](http://www.gabrielgambetta.com/client-server-game-architecture.html) — Client-Server Game Architecture * [Game Server Protocols](https://1024monkeys.wordpress.com/2015/01/03/game-server-protocols-part-1-starting-out/) * [64 Network DO's and DON'Ts for Game Engine Developers](http://ithare.com/64-network-dos-and-donts-for-game-engine-developers-part-i-client-side/) * Minecraft-likes * [An Analysis of Minecraft-like Engines](https://0fps.net/2012/01/14/an-analysis-of-minecraft-like-engines/) * [Perlin Noise Generator in **Python**](http://www.pygame.org/project-Perlin+Noise+Generator-1044-.html) * [**Python** 3D Cube World Demo](http://www.danomagnum.com/wiki/Python3dCubeWorld) * [Pixels and voxels, the long answer](https://medium.com/retronator-magazine/pixels-and-voxels-the-long-answer-5889ecc18190#.brplcilxj) * Tutorials * [So you want to be a **pixel artist?**](http://gas13.ru/v3/tutorials/sywtbapa_almighty_grass_tile.php) — 11-part series on Pixel Art * [Game Programming Patterns](http://gameprogrammingpatterns.com/) — Free e-book * [The A-ha! Moment of being a game development beginner](https://antjanus.com/blog/web-development-tutorials/ha-moment-game-development-beginner/) * [The guide to implementing **2D platformers**](http://higherorderfun.com/blog/2012/05/20/the-guide-to-implementing-2d-platformers/) * [HD Index Painting in Photoshop](http://danfessler.com/blog/hd-index-painting-in-photoshop) — Pixel art * [2D Game Art for Programmers](http://www.2dgameartguru.com/) — Guides on vector art using Inkscape, GIMP & co. * [Developer's **Music Making** Guide](http://ruoyusun.com/2017/08/29/make-some-music.html) * [Tips for Building Mobile Games in HTML5](https://thomashunter.name/blog/tips-for-building-mobile-games-in-html5/) * Tools * [Game Mechanic Explorer](https://gamemechanicexplorer.com/) — Interactive demos and code samples for common game mechanics. * [GifCam](http://blog.bahraniapps.com/gifcam/) — Like FRAPS, to make gifs from your games ## Git * [Git Flight Rules](https://github.com/k88hudson/git-flight-rules/blob/master/README.md) — A guide for what to do when things go wrong. *"Flight Rules are the hard-earned body of knowledge recorded in manuals that list, step-by-step, what to do if X occurs, and why. Essentially, they are extremely detailed, scenario-specific standard operating procedures. [...]"* * [Most common git screwups/questions and solutions](http://41j.com/blog/2015/02/common-git-screwupsquestions-solutions/) ## Go * [Learning Go (golang)](https://medium.com/go-go-go/learning-go-golang-47127a796323) * [Practical Golang: Using **Protobuffs**](https://jacobmartins.com/2016/05/24/practical-golang-using-protobuffs/) * [Go Best Practices, Six Years In](https://peter.bourgon.org/go-best-practices-2016/) (2016) * [Common Comments in Go Code Reviews](https://github.com/golang/go/wiki/CodeReviewComments) * [Go **channels** are bad and you should feel bad](https://www.jtolds.com/2016/03/go-channels-are-bad-and-you-should-feel-bad/) * [**godoc:** Tips & Tricks](https://elliot.land/post/godoc-tips-tricks) * Project Organization * [What is a sensible way to layout a Go project?](https://stackoverflow.com/questions/14867452/what-is-a-sensible-way-to-layout-a-go-project) * [Architecture for a Golang Web App](https://larry-price.com/blog/2015/06/25/architecture-for-a-golang-web-app/) * [Structuring Applications in Go](https://medium.com/@benbjohnson/structuring-applications-in-go-3b04be4ff091) * [The Project Directory Structure](http://www.nguyenanhdung.info/2017/11/golang-project-directory-structure.html) * Makefiles * [Make and Go for Fun and Profit](https://unwiredcouch.com/2016/05/31/go-make.html) * Interoperability * [Mobile Go, part 1: Calling Go functions from **C**](https://medium.com/using-go-in-mobile-apps/using-go-in-mobile-apps-part-1-calling-go-functions-from-c-be1ecf7dfbc6) * [Building **Python** modules with Go 1.5](https://blog.filippo.io/building-python-modules-with-go-1-5/) * [See **Python**, See Python Go, Go Python Go](https://blog.heroku.com/see_python_see_python_go_go_python_go) — Running a Go web server in Python * [Turning Go code into an npm module with GopherJS (**JavaScript**)](https://github.com/mdp/bluemonday-js/blob/601f63ea62b2771b20ff2057dc504dacd8659e31/README.md#turning-golang-code-into-an-npm-module-with-gopherjs) * Tutorials * [Build Your Own Web Framework in Go](https://www.nicolasmerouze.com/build-web-framework-golang/) * [Building Go Web Applications and Microservices Using **Gin**](https://semaphoreci.com/community/tutorials/building-go-web-applications-and-microservices-using-gin) * [**HTML Templates** in Go](https://www.calhoun.io/html-templates-in-go/) * [**Job Queues** in Go](https://www.opsdash.com/blog/job-queues-in-go.html) * [Using Go's **context** library for making your logs make sense](https://blog.gopheracademy.com/advent-2016/context-logging/) ## JavaScript * [JavaScript Module Pattern: In-Depth](http://www.adequatelygood.com/JavaScript-Module-Pattern-In-Depth.html) — How to write self-contained JavaScript modules in raw ES5. * [Deploying ES2015+ Code in Production Today](https://philipwalton.com/articles/deploying-es2015-code-in-production-today/) — Using `