joshuago’s programming Bookmarks
A really great introduction to awk for anyone who only uses sed and grep.
The extra effort caused by our overengineering carries a hefty opportunity cost.
A really good explanation of Ruby modules as mixins, bundles of functionality.
An excellent explanation of one of the main purposes of Ruby modules: namespacing, and a fun read.
In programming as in the rest of life, attitude trumps intelligence. It is in the crucible of practical problems that great new ideas can form.
If you want to dramatically increase your programming skills you need to be reading other people’s code.
A good survey of good, non-mainstream but powerful programming languages. Gives overview of Haskell, Scala, Standard ML, OCaml, and Scheme.
Great tutorial on how to create an offline HTML5 iPhone application. Does so through the process of building a Tetris game.
Duntemann starts at the beginning -- the real beginning -- and explains what computers are and what they do. Assembly language must take the hardware into account (at least as far as memory addressing is concerned) so he talks at length about the Intel/AMD x86 hardware architecture. When he finally gets down to teaching assembly language itself, the emphasis is on memory addressing. If you know where your operands are, you're three quarters of the way to anywhere else you might want to go.
Over the course of the past decade we have invented a dozen technologies to solve the problem of asynchronous and bi-directional communication between the browser and the server: AJAX, Comet & HTTP Streaming, BOSH, ReverseHTTP, WebHooks & PubSubHubbub, and Flash sockets amongst many others. Having said that, it does not take much experience with any of the above to realize that each has a weak spot and none solve the fundamental problem: web-browsers of yesterday were not designed for bi-directional communication.