#Programming Talks
I watch a lot of talks that I love to share with my friends, fellows and coworkers. As I consider all Githubbers my friends(oh yeah!), I decided it's time to share the list.
There are talks on programming languages specifics as well as a more general section I call "theory", but do not expect to always get Theoretical Computer Science for every talk there, most of them are on the Architecture and Design of Software.
I welcome every contribution to the list!
Disclaimer: I did not give any of the talks on the list and am responsible neither for their content nor for their presentation. All links below will direct you to external sites(mostly YouTube, really), be aware of that. If you are one of the people responsible for the talks or the platform presenting it and want it removed, tell me and I'll sort it out with you.
###Names to look out for
To make choosing the right speakers a tad easier, let me give you a quick overview over my favourite speakers in no particular order:
- Scott Meyers(C++): Scott Meyers is one of the most entertaining and knowledgeable speaker when it comes to all things C++. His talks cover a variety of topics, from type inference to API design and cache lines.
- Rich Hickey(Clojure): I am not a Clojure programmer, but I like reasoning about and building programming languages. Even if you don't, Rich Hickeys talks are inspiring and thought-provoking. Whenever he talks about the fundamentals of programming and reasoning, you are sure to learn a ton. Oh, and if you program in Clojure, you have no excuse for not watching this guy speak.
- Reginald Braithwaite(Javascript): one of my favourite Javascript speakers. He also has a variety of talks on my list, but is more true to his realm (Javscript) than most of the other speakers on my list.
- David Nolen(Clojure/Clojurescript): The core maintainer of Clojurescript. His talks mostly focus on immutability and share a bit of their structure. He doesn't get boring, though, and is another very smart person with deep insights in such fields as immutability.
- David Beazley(Python): The person who singlehandedly made me a Pythonista. Need I say more? He has a lot of low-level knowledge about Python and makes poking at the Python interpreter seem more fun than it actually is.
- Joe Armstrong(Erlang): One of the few people I actually had the chance to see live already. He is a funny, witty and smart guy and if you want to learn about Erlang, watch his talks. Most of his talks are also very beginner-friendly.
###On Programming Languages
####C
- Advanced C Coding For Fun! by Rusty Russell
- Writing application fault handlers by Gilad Ben-Yossef
####Clojure
- Expert to Expert - Inside Clojure by Rich Hickey & Brian Beckman (it's not so much a talk as a conversation; awesome for beginners)
- Clojure Concurrency by Rich Hickey
- Persistent Data Structures and Managed References by Rich Hickey
- Design, Composition and Performance by Rich Hickey
- Making Games at Runtime with Clojure by Zach Oakes (He's a very funny guy!)
- Clojure Data Science by Edmund Jackson
- Machine Learning Live by Mike Anderson
- ClojureScript: Lisp's Revenge by David Nolen
- Clojure Library Core.async for Asynchronous Programming by David Nolen
- Make Your Own Lisp by Bodil Stokke
- ClojureScript + React.js: How I learned to stop worrying and love the browser by Norbert Wójtowicz
####C++
- C++17: I See A Monad In Your Future by Bartosz Milewski
- Using C++11 to speed up your Qt 5 programs by Marc Mutz
- Don't Help the Compiler by Stephan Lavavej
- The Effective C++11/14 Sampler by Scott Meyers
- The Last Thing D Needs by Scott Meyers
- Support for Embedded Programming in C++11 and C++14 by Scott Meyers
- Type Deduction and Why You Care by Scott Meyers
- C++ Seasoning by Sean Parent
- Efficiency with Algorithms, Performance with Data by Chandler Carruth
- Back to the Basics! Essentials of Modern C++ Style by Herb Sutter
- Lock-Free Programming (or, Juggling Razor Blades): This talk has two parts. I recommend taking a short break after watching the first part.
- Lock-Free Programming (or, Juggling Razor Blades), Part I by Herb Sutter
- Lock-Free Programming (or, Juggling Razor Blades), Part II by Herb Sutter
- Writing Quick Code in C++, Quickly by Andrei Alexandrescu
- Optimization Tips - Mo' Hustle Mo' Problems by Andrei Alexandrescu
- Optimizing the Emergent Structures of C++ by Chandler Carruth (somewhat annoyingly bad quality)
- Making C++ Code Beautiful by James McNellis & Kate Gregory
- C++11 Style - A Touch of Class by Bjarne Stroustrup
- Plain Threads are the GOTO of todays computing by Hartmut Kaiser
- Scaling with C++11 by Edouard Alligand
- On Static If, C++11 in 2012, Modern Libraries, and Metaprogramming by Andrei Alexandrescu, Scott Meyers & Herb Sutter
- Pragmatic Type Erasure: Solving OOP Problems with Elegant Design Pattern by Zach Laine
####CSS (yeah, I know, stylesheets are not traditionally programming)
- CSS Levels Up by Angelina Fabbro
- Your CSS is a Mess by Jonathan Snook
- CSS Performance Tooling by Addy Osmani
- Stuff About Cascading Style Sheets by Mark Otto & Connor Sears
- Your Very Own Component Library by Alex Sexton
####D
- High Performance Code Using D by Walter Bright
####Elixir
- Think Different by Dave Thomas
- Elixir: The Power of Erlang, the Joy of Ruby by Dave Thomas
- elixir Conf 2014 Keynote by Jose Valim
####Elm
- Controlling Time and Space: understanding the many formulations of FRP by Evan Czaplicki
####Erlang
- Writing Quality Code in Erlang by Garreth Smith
- Erlang: Evolution by Robert Virding
- Implementing Languages on the BEAM by Robert Virding
- How To Ship New Code Without Taking Your System Down by Martin Rehfeld
- Why The Cool Kids Don't Use Erlang by Garreth Smith
- 26 years with Erlang or How I got my grey hairs by Joe Armstrong
- The How and Why of Fitting Things Together by Joe Armstrong
- Using Logic Programming Tools to Drive Property-based Testing by Zachary Kessin
####Go
- Go Concurrency Patterns by Rob Pike
- The move from C to Go in the toolchain by Rob Pike
- Advanced Go Concurrency Patterns by Sameer Ajmani
- Parctical Go Programming by Andrew Gerrand
- Go for Pythonistas by Francesc Campoy Flores
- High Performance Systems in Go by Derek Collison
####Haskell
- Demystifying Haskell by Andrew Rademacher (for Beginners)
- The Algebra In Algebraic Data Types by Chris Taylor
- Writing a game in Haskell by Elise Huard
- Lenses, Folds, and Traversals by Edward Kmett
- Haskell Amuse-Bouche by Mark Lentczner (the audio quality is scarily bad)
- Enigmatic Haskell, Haskellish Enigma by Rishiyur S. Nikhil
- Pure Type Systems by Cody Roux
- Framing the Discussion with EDSLs by Anthony Cowley (There is a repository containing the slides and code here)
- Introduction to Low Level Haskell Optimization by Dan Doel
- Haste: Full-Stack Haskell for Non-PhD Candidates by Erin Swenson-Healey and James Cooper (the sound quality is really bad in the first 5:30 min or so, but it gets better, promise)
- Getting a Quick Fix on Comonads by Kenneth Foner (for best watching experience, watch it after the optimization talk by dan doel)
- Safe Zero-Cost Coercions for Haskell by Richard A. Eisenberg
- How Haskell is Changing my Brain by Alissa Pajer
####Java & Android
- Java - The Good, Bad and Ugly Parts by Josh Bloch
- A Few Ok Libraries by Jake Wharton
- Common crypto mistakes in Android by Isaax Potoczny-Jones
- Effective Java; Still Effective After All These Years by Joshua Bloch
- Functional Reactive Programming with RxJava by Ben Christensen
- Java 8 Lambda Expressions & Streams by Adib Saikali
- Java 8 Language Capabilities, What's in it for you? by Venkat Subramaniam
- Living in the Matrix with Bytecode Manipulation by Ashley Puls
- JVM Bytecode for Dummies (and the Rest of Us Too) by Charles O.o Nutter
- Recursion Schemes by Tim Williams
####Javascript (There is a good list of talks about JS to be found here)
- Node.js in 20 Minutes by Edmond Meinfelder
- Crockford on JavaScript by Douglas Crockford (it's 10 hours long!)
- Really. JavaScript. by Douglas Crockford
- Monads and Gonads by Douglas Crockford
- Introduction to Node.js by Ryan Dahl
- Is Node.js Better by Brian Ford
- Creating A Scalable JavaScript Application Architecture by Nicholas Zakas
- Large Scale JavaScript Application Architecture by Dan Lynch
- Dissecting WebGL by Justin Windle (you might want to take a look at the slides, you cannot really see them well)
- 10 Angular JS Patterns by John Papa
- Design Decisions in AngularJS by Brad Green & Miško Hevery
- Bringing Angular Apps to Life with Animation by Miško Hevery
- ES6 and 7, the future of JS by Brendan Eich
- What the heck is the event loop anyway? by Philip Roberts
- Build Production Ready Javascript Apps With Grunt by Shai Reznik
- Javascript Combinators by Reginald Braithwaite
- The Art of the Javascript Metaobject Protocol by Reginald Braithwaite
- The Art of the JavaScript Metaobject Protocol: Duck Typing, Compatibility, and the Adaptor Pattern by Reginald Braithwaite
- Functional programming patterns for the non-mathematician by Brian Lonsdorf (beware; the pace is somewhat high)
- Hey Underscore, You're Doing It Wrong! by Brian Lonsdorf
- Version 7: The Evolution of JavaScript by Jafar Husain
- Redemption from Callback Hell by Michael Jackson & Domenic Denicola
- Async JavaScript with Reactive Extensions by Jafar Husain
- Immutability, interactivity & JavaScript by David Nolen
- Raw WebGL by Nick Desaulniers
- How to effortlessly integrate Three.js into your projects by Jason Farrell (not as technical as the other *GL talks)
- Classical Inheritance is Obsolete - How to Think in Prototypal OO by Eric Elliott
- Reactive Game Development For The Discerning Hipster by Bodil Stokke
- Angular + React = Speed by Dave Smith
- j2me.js - a multi-threaded Java VM in JavaScript by Andreas Gal
####Julia
- Python and Julia. Why do we need another language? by Dwight J. Browne
- Crossing Language Barriers with Julia, SciPy,IPython by Stephen G. Johnson
- Convex Optimization in Julia by Madeleine Udell
####Objective C
- RACify Non-Reactive Code by Dave Lee
####OCaml
- Caml Trading by Yaron Minsky
####PureScript
- PureScript (Maybe This Time We Get JavaScript Right) by Bodil Stokke
####Python (There is a good list of talks about Python to be found here)
- Stop Writing Classes by Jack Diederich
- Super Advanced Python by Raymond Chandler
- Python 3 Metaprogramming by David Beazley
- Discovering Python by David Beazley
- Generators: The Final Frontier by David Beazley
- Understanding the Python GIL by David Beazley
- Inside the Python GIL by David Beazley
- Learn Python Through Public Data Hacking by David Beazley
- Python Concurrency From the Ground Up: LIVE! by David Beazley
- The Cython Compiler for Python by Dr. Stefan Behnel
- Python Metaprogramming for Mad Scientists and Evil Geniuses by Walker Hale
- pandas: Powerful data analysis tools for Python by Wes McKinney
- Loop like a native: while, for, iterators, generators by Ned Batchelder
- Decorators: A Powerful Weapon in your Python Arsenal by Colton Myers (only about function decorators)
- Transforming Code into Beautiful, Idiomatic Python by Raymond Hettinger
- Beyond PEP 8 - Best practices for beautiful intelligible code by Raymond Hettinger
- Super considered super! by Raymond Hettinger
- A Python Æsthetic: Beauty and Why I Python by Brandon Rhodes
- Python Epiphanies by Stuart Williams (PDF version/code can be found here)
- PyPy.js: What? How? Why? by Ryan Kelly (2014 version)
- PyPy.js: What? How? Why? by Rian Kelly (2015 version)
- Type Hints by Guido van Rossum
- Terminal whispering by Thomas Ballinger
- Serialization formats are not toys by Tom Eastman
- Slightly Advanced Python: Some Python Internals by Alex Martelli
- Getting Hy on Python: How to implement a Lisp front-end to Python by Paul Tagliamonte
- Fast Python, Slow Python by Alex Gaynor
- Flask by Example by Miguel Grinberg
####Ruby
- Programming With Nothing by Tom Stuart
- Y Not - Adventures in Functional Programming by Jim Weirich
- Make awesome command line apps with Ruby by Dave Copeland
####Rust
- Concurrency in Rust by Alex Crichton
####Scala
- Scala Monads: Declutter Your Code With Monadic Design by Dan Rosen
- Scala Versus Java by Dan Rosen
- What's Next for Scala by Martin Odersky
- Scala Collections: Why Not? by Paul Phillips (beware: not very optimistic!)
- Concurrency Anti-Patterns in Scala by Blake Matheny
- Run free with the monads: Free Monads for fun and profit by Ken Scrambler
####Swift
- Swift Programming Language for JavaScript Developers by J.P. Simard
- Thinking in Swift by Abizer Nasir
####VimL
- Vim - I Wish I Knew How To :q You by Chris Maiden (not really about VimL, more of a general introduction into vim)
- More Instantly Better Vim by Damian Conway
- Write code faster: expert-level vim by Ben Orenstein (not really expert level)
####Miscellaneous
- WAT by Gary Bernhardt
- Linus Torvalds on git by Linus Torvalds
- Linux Sucks - 2014 by Bryan Lunduke
- You can be a kernel hacker! by Julia Evans
###On theory ####Thoughts on the Industry/Community
- PyCon 2015 Keynote by Jacob Kaplan-Moss
- What can programmers learn from pilots? by Andrew Godwin
- Being Human by Brian J. Brennan (not technical, but very important)
####Thoughts on Languages
- Why C++ Sails When the Vasa Sank by Scott Meyers
- Make Simple Tasks Simple! by Bjarne Stroustrup
- Running a startup on Haskell by Bryan O'Sullivan
- Dan Friedman - Cool Ideas by Guy Steele
####Software Development
- Programming is terrible - Lessons learned from a life wasted by Thomas Figg
- Growing a Language by Guy Steele
- The Mess We're In by Joe Armstrong
- Are We There Yet? by Rich Hickey
- Simple Made Easy by Rich Hickey
- Simplicity Matters by Rich Hickey (Simple Made Easy revisited)
- Hammock Driven Development by Rich Hickey
- The Value Of Values by Rich Hickey
- The Language of the System by Rich Hickey
- The Future of Programming by Bret Victor
- The Most Important Design Guideline by Scott Meyers
- CPU Caches and Why You care by Scott Meyers (written in C++, reasonable for almost every software developer)
- Thinking Above the Code by Leslie Lamport
- I have a good feeling about this - Why tooling is poised to make the jump to hyperspace by Reginald Braithwaite
- The Not-So-Big Software Design by Reginald Braithwaite
- The Future Doesn't Have to Be Incremental by Alan Kay
- The S.O.L.I.D. Principles of Agile OO Design by Robert C. Martin (way more interesting than it sounds)
- Whence Complexity? by Michael Nygard
- What does it mean to be Reactive? by Erik Meijer
####Compilers/Interpreters
- Parsing with Derivatives by Matthew Might
- The Clang AST by Manuel Klimek
- Writing a Nanopass Compiler by Andy Keep
- Superoptimizing LLVM by John Regehr
- Papers We Love: Fundamental Concepts in Programming Languages by John Myles White
- Implementing Domain Specific Languages with LLVM by David Chisnall
- PTX Back-End: GPU Programming With LLVM by Justin Holewinski
- Intel OpenCL SDK Vectorizer by Natav Rotem
- Rise of the Transpilers by Jeremy Ashkenas
####Databases
- Introduction to NoSQL by Martin Fowler
- Deconstructing the Database by Rich Hickey
####Functional Programming
- Functional Principles for Object-Oriented Developers by Jessica Kerr
- Adventures in Functional Programming by Jim Weirich
- Deconstructing Functional Programming by Gilad Bracha
- Living in a Post-Functional World by Daniel Spiewak
- Tangible Functional Programming by Conal Elliott
- Faith, Evolution, and Programming Languages by Phillip Wadler
- Don't fear the Monad by Dr. Brian Beckman
- Papers We Love: Composable and Compilable Macros by Sam Tobin-Hochstadt
- Functional Programming; What? Why? When? How? by Robert C Martin
- The Functional Final Frontier by David Nolen
- Functional Principles for Object Oriented Development by Jessica Kerr
####Computer Graphics
- Principles of Lighting and Rendering by John Carmack
- Making WebGL Dance by Steven Wittens
- Making things with maths by Steven Wittens
####Computer Vision
- OpenCV and High-Performance Vision on GPU by Victor Eruhimov
####Robotics
- Robots: You're Still Doing It Wrong by Katy Levinson (not very formal, DefCon)
####UX/UI
- User Interface (UX) Techniques by Janne Jul Jensen
- We Will All Be Game Programmers by Hunter Loftis
####Web Development
- Go To There and Back Again by Douglas Crockford
- The Birth & Death of JavaScript by Gary Bernhardt
- Hey Underscore, You're Doing It Wrong! by Brian Lonsdorf
- Community.js by Chris Williams
- An End to Negativity by Chris Williams
- Life is Terrible: Let's Talk About the Web by James Mickens
- Virtual Machines, JavaScript and Assembler by Scott Hanselmann
- HTML5 Boilerplate by Paul Irish
- Delivering the goods by Paul Irish
- Parallax Performance by Paul Irish
- Unlock the next era of UI development with Polymer by Rob Dodson
- React: Rethinking best practices by Pete Hunt
- React: RESTful UI Rendering by Pete Hunt
- Hacker Way: Rethinking Web App Development at Facebook by Tom Occhino, Jing Chen & Pete Hunt (it starts pretty slow and marketingy, but gets much better over time)
- Reactive Programming Overview by Jafar Husain (very concise and dense)
- Immutability: Putting The Dream Machine To Work by David Nolen
- How I learned to Code by Making 180 websites in 180 days by Jennifer De Walt
####System Architecture
- Keeping a System Running Forever by Fred Hebert
- Scalability at YouTube by Mike Solomon (long intro; starts about 8 minutes in)
####Distributed Programming
- Distributed Eventually Consistent Computations by Christopher Meiklejohn
####Theoretical Computer Science
- Church's Coincidences by Philip Wadler
- Programming the Turing Machine by Barbara Liskov
- Turing and the Riemann zeta function by Andrew Odlyzko
- Lambda Calculus Then and Now by Dana S. Scott
- Papers We Love: An Axiomatic Basis for Computer Programming by Jean Yang
####DevOps
- Chef Style DevOps Kungfu by Adam Jacob
####Mathematics Those are not necessarily programming-related and possibly very advanced mathematics.
- Category Theory by Tom LaGatta
- The Continuum Hypothesis and the search for Mathematical Infinity by W. Hugh Woodin
- Field of Rationality and Category Theory by Michał Heller
####Misc
- How To Shut Down Tolkien by Brandon Rhodes (for the fun)