joshuago’s programming Bookmarks

29 SEP 2010
Why you should know just a little Awk

A really great introduction to awk for anyone who only uses sed and grep.

13 AUG 2010
Criminal Overengineering « yield thought

The extra effort caused by our overengineering carries a hefty opportunity cost.

20 JUL 2010
[Ruby Fleebie] An introduction to modules: Part 2

A really good explanation of Ruby modules as mixins, bundles of functionality.

20 JUL 2010
[Ruby Fleebie] An introduction to modules: Part 1

An excellent explanation of one of the main purposes of Ruby modules: namespacing, and a fun read.

27 MAY 2010
[Alarming Development] Mea Culpa

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.

27 MAY 2010
[Fuel Your Coding] One Sure-Fire Way to Improve Your Coding

If you want to dramatically increase your programming skills you need to be reading other people’s code.

24 MAY 2010
Advanced programming languages for compilers, interpreters, games, artificial intelligence (AI), servers

A good survey of good, non-mainstream but powerful programming languages. Gives overview of Haskell, Scala, Standard ML, OCaml, and Scheme.

22 APR 2010
[Six Revisions] How to Make an HTML5 iPhone App

Great tutorial on how to create an offline HTML5 iPhone application. Does so through the process of building a Tetris game.

12 JAN 2010
[Jeff Duntemann] Assembly Language Step By Step, Third Edition

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.

22 DEC 2009
Ruby & WebSockets: TCP for the Browser - igvita.com

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.