When you should find yourself bored (and have nothing better to do), I suggest you take a look at the following books/articles:
While maybe redundant for people who have been programming for a long time already, I found it a very interesting read.
Not so much on programming, but a general overview over programming techniques used in Unix/Linux applications. Also contains a nice historic overview.
An introduction to (functional) programming, but also covers (very) advanced topics and some pretty neat stuff. If you're not into reading, the video lectures for the first edition of the book are here?
. Highly recommended!
A look at usability from an entirely different point of view -- the user's. The book isn't really about computers, but the general principles mentioned there also highly apply to computers. Whether you're a designer or programmer, you should take a look at this book.
You should also check out the IBM developer works articles:
- Writing a custom Dojo application
- Debug Java applications remotely with Eclipse
Perform application debugging remotely using the Eclipse built-in remote Java application configuration type. In this article, get real-world examples such as debugging programs on dedicated machines like Web servers, whose services cannot be shut down.
- New IBM Business Process Management Journal
In this journal's premier edition, discover how to develop a business event processing application and how to leverage BPM, SOA, and EA to align business and IT. Plus, get answers to some of your common questions about WebSphere Business Modeler.
- Dependency injection with Guice: Testable code with less boilerplate
Get better testing and modularity while taking away the pain of writing your own factories with Guice, Google's open source dependency injection framework for Java development. Take a tour of the most important concepts, which will leave you ready to Guice up your applications.
- XSLT as a language compiler: Use XSLT to produce PostScript from XML
Explore the concept of XSLT as a programming language compiler, specifically as you create an XML facade in front of PostScript, to produce PostScript files from XML documents. Learn about using a stylesheet as an implicit language definition, get the basics of PostScript, and see the layers of abstraction involved in creating an XML-to-PostScript compiler.
- Distributed computing with Linux and Hadoop
You don't have to work for Google to have access to distributed, parallel Web content processing. Hadoop is a reliable framework for rapidly manipulating large amounts of data, and it runs on commodity hardware.
- What's new in PHP V5.3: Closures and lambda functions
Find out how closures and lambda functions make programming easier by letting you define throwaway functions that can be used in different contexts. This article details how useful closures are as a functional programming construct within PHP V5.3 code.
If you don't feel like reading any "technical" literature, you could read some Terry Pratchett?
books, of which I'd recommend The Wee Free Men?
and A Hat Full Of Sky?