programming literature topic home

Though most programming resources are now online, it still makes sense to read books and magazines about it. Editors assemble related topics into an information-packed special magazine issue, authors help you digest complex matters by slicing and building up chapter after chapter. But maybe it's just because you experience a regular read in a quite, comfortable place differently from a quick, directed web search.

I've kept up with the rapid progress through these works:

Mike Gancarz, Linux and the Unix Philosophy; a characterization of the principles underlying Unix (and its second, modern incarnation Linux), where small programs that each do one thing well can be combined in flexible ways (in shell pipelines or scripts); this is contrasted with other operating systems (like MS Windows) which favor big monolithic programms that are predominantly controlled via a captive graphical user interface; liked the combination of a historic review together with the modern application and the connection with the open source movement; the tenets are well motivated, but I found some examples not very convincing; overall not groundbreaking stuff, and not the best presentation, but still an enlightening read; Digital Press, 2003

Federico Biancuzzi, Shane Warden, Masterminds of Programming; Conversations with the Creators of Major Programming Languages; similar in style to the ... at Work books, but most interesting (to me) because of the programming language topic, providing interesting background history but also useful design tips and wisdom from the language creators, with popular languages (C++, Python, Java, C#), historic (APL, Forth, Basic), and obscure (but interesting: AWK, ML, PostScript) - I only found it a bit unfair that UML got a lot of coverage because all three authors were interviewed separately; O'Reilly, 2009

Susan Lammers, Programmers at Work; Interviews with 19 Programmers Who Shaped the Computer Industry; interesting interviews with luminaries from the early PC age, covering spreadsheets (VisiCalc, Lotus 1-2-3), Microsoft (Charles Simonyi, Bill Gates), Apple (Jef Raskin and Andy Hertzfeld) in particular, but also delving into arts (the Pac Man developer) and movies; interesting perspectives of the early history from the (nowadays mostly unknown) people who shaped it; Tempus Books, 1986

Peter Seibel, Coders at Work; reflections on the craft of programming; similarly structured interviews with prominent contemporary programmers (Brendan Eich, Jamie Zawinski), from the beginnings of computing (Bernie Cosell, Ken Thompson), and academia (Simon Peyton Jones, Donald Knuth), that mostly recount history, the person's outlook on IT, and how it applies to modern programming; interesting parallels on debugging and troubleshooting techniques (that apparently haven't changed that much), and who's cut out to be a good programmer; Apress, 2009

Brian Christian and Tom Griffith, Algorithms to Live By; an entertaining (and also understandable by only moderately technical common people) stroll around practical applications of mathematics and computer algorithms in particular, like when to stop looking (for a job, partner, house, parking spot), how to sort (socks or books), the trade-offs involved in caching or scheduling, predicting the future based on limited information (and why knowing less or even nothing at all may be good for you); touches on many important computer science concepts, from the traveling salesman to packet network collision detection; too shallow in technical terms to be directly applicable, but a well-rounded recollection of CS stuff, peppered with amusing anecdotes nonetheless; William Collins, 2016

Fabien Sanglard, Game Engine Black Book DOOM; a follow-up to the Wolfenstein 3D book that updates the hardware description to the 486DX processor, providing additional background on the challenges without repeating in-depth information from the previous book, followed by a great chapter on the mostly unheard-of NeXT computer family used to develop the game and its assets; together with insider information of and many quotes from the original team, the meat again is in the in-depth description of the new game engine; the book is concluded by an unexpectedly instructive characterization of the 6 ports to common gaming consoles, each with their own technical challenges during a time of fierce innovation among the Japanese manufacturers, so this is a suitable end in resonance with DOOM's overall theme of portability and abstraction layers; free e-book, 2018

Fabien Sanglard, Game Engine Black Book Wolfenstein 3D; an in-depth look at the first famous 3D first person shooter on the personal computer, looking at the team at id software and how it came to be, a recap of the hardware capabilities of 1992 PC architecture (especially the VGA modes and sound standards), and mostly reviewing the main (assembly and C) code fragments and algorithms that enabled smooth gameplay; the author's deep technical analyses are spot-on, enhanced with trivia and quotes from the original programmers, and illustrate the problems at the time and how the team overcame them by exploiting obscure details of the platform (or by cheating a bit); the book is both great look at important PC gaming history and a timeless story about a talented team, whose decision to open source the engines' codes inspired many clones and ports (and make this book possible in the first place); free e-book, 2017

Sam Newman, Monolith to Microservices; Evolutionary Patterns to Transform Your Monolith; a critical look about the perceived and real benefits of adopting micro services (instead of doing it just for the hype), combined with a catalog of patterns to decompose and migrate to it, with a special focus on the critical database; nicely complements Chris Richardson's book by not going into details on topics like messaging and Sagas, but rather looking at trade-offs and organizational issues while still providing valuable high-level technical advice; O'Reilly, 2020

Dustin Boswell and Trevor Foucher, The Art of Readable Code; Simple and Practical Techniques for Writing Better Code; the authors manage to condense a broad set of recommendations on modern programming style in a language-agnostic way, from surface level (naming, line breaks, comments) over logic and code organization to testing and readability, with practical examples that are up to the point and a concluding full problem; though there have been few individual new topics for me, the book provides value as a refresher and compact reference book, on the same top tier as Effective Java; O'Reilly, 2011

Alex Soto Bueno, Andy Gumbrecht, Jason Porter, Testing Java Microservices Using Arquillian, Hoverfly, AssertJ, JUnit, Selenium, and Mockito; uses an example application to showcase unit-, component-, integration, contract-, and end-to-end testing, exclusively through the Arquillian toolkit (nicely showcasing its capabilities, but also giving the book a clear bias), also in the context of Docker, Kubernetes and CI pipelines; very hands-on and practical advice (including recommendations of lesser-known libraries such as AssertJ), but doesn't cover the whole picture; in particular, only REST-style web services are covered, and the equally important message-based collaboration (and sagas) are excluded; Manning, 2018

Keith Houston, Sh@dy Charac†ers; The Secret Life of Punctuation, Symbols & Other Typographical Marks; individual chapters explore the history of individual symbols, both commonplace (#&@*-“”) and obscure (¶‽†☞), in a meticulously researched yet also entertaining and highly accessible text, along with a good serving of Greek, Roman, and middle-age history, and connecting this with modern phenomena like the printing press, mechanical typewriters (both of which served as catalysts to cut down a rank growth in symbols due to their technical limitations), and eventually offset printing and electronic communication; the author's enthusiasm can be felt in each sentence, as well as in the beautiful typesetting of the book (even in the paperback edition); Norton, 2014

Cristina Videira Lopez, Exercises in Programming Style; implements a simple problem with 33 variants (each 1-2 pages long), all programmed in Python, but each using a distinctive style (e.g. as a pipeline, via message-passing, using a Monad, via map-reduce); though most of those styles are deeply familiar, this unique approach highlights each style's features (though sometimes the implementation in modern Python looks a bit forced and artificial); great idea (actually adapted from novel writing), though beginners and students probably won't grasp the complete range yet; CRC Press, 2014

Chris Richardson, Microservices Patterns; comprehensive discussion on interprocess communication (REST or asynchronous messaging), distributed transactions (via sagas), using DDD for business logic (and event sourcing), and CQRS, using an example application in Java (the story around it feels a bit forced, but many great books now use this story format), as well as overall architecture themes like decomposition strategies, deployment options (also containerized via Kubernetes and even covering current-hype themes like service mesh and serverless), and two full chapters on testing; great scope and depth (this could be a future classic); Manning, 2019

Mark Mitchell, Jeffrey Oldham, Alex Samuel, Advanced Linux Programming; brief overviews of compiling, debugging, profiling, and coding guidelines, the book makes a broad sweep over processes, threads, IPC (and the synchronization via shared memory, semaphores, mmap, pipes, or sockets) and IO, then delves into devices, /proc file system, and system calls, briefly touching on inline assembly and security; nice recap with many small demo programs, New Riders Publishing, 2001

iX Developer Machine Learning; collection of tutorials employing various deep learning frameworks (TensorFlow, Keras, Apache Spark, mostly with quite similar character recognition examples through a neural network; compares frameworks, programming languages, CPU vs. GPU processing; nice overview of the current state of the art in this newly hyped field, the framework usages look more like witchcraft (and examples are very stripped down and poorly structured - partially due to the required brevity); Verlag Heinz Heise, Winter 2018

Alan A. A. Donovan, Brian W. Kernighan, The Go Programming Language; introduction (with the right depth and breadth for me) to the "improved C" language, with an emphasis on its differences (multiple return values in place of exceptions, identifer case for public / private scope, duck-typing interfaces, low-level testing support built-in) and defining new features (concurrency through Goroutines and channels as an alternatives to the classic Mutexes); Addison-Wesley, 2016

Michael DiBernardo (editor), 500 Lines or Less; Experienced programmers solve interesting problems; 22 articles (of varying quality) about small projects (in scripting languages, often Python); my highlights are a visual, block-based programming toolkit, graph database, web spreadsheet, and template engine; the limited scope in general makes for an interesting read and easy-to-reproduce solutions, giving insights into how programmers tackle problems; 2016

Tavish Armstrong, The Performance of Open Source Applications; 12 essays on optimizing code (e.g. parsers) and choosing the appropriate runtime environments (e.g. Erlang and Haskell with green threads and little shared state) for high-throughput applications; 2013

Tony Narlock, The Tao of tmux and Terminal Tricks; booklet about uses, coarse design and some configuration tricks; quick read for overview, but nothing more; Leanpub, 2016

Diomidis Spinellis, Code Reading; The Open Source Perspective; approaches for familiarizing oneself with unknown code (and how to structure the code to make this easier for others) and a short recap of (C / C++ / Java) programming techniques commonly used in popular open source programs; unique (but somewhat dated) approach, mainly for intermediate programmers; Pearson Education, 2003

Ralf Westphal, The Architect's Napkin - Der Schummelzettel; defines software "cells", and how (horizontal or vertical) division cater for (non-functional or specialization) requirements, then defines four dimensions of a "software universe" (host, container, domain, flow) as architectural views, and finally (again, like in other booklets by the author; he tried really hard to sell his ideas) details a flow-based design focused on data, not control flow, using mutual oblivion between producer and consumer, implemented via either functions, continuations, or events, hiding complexity on a leaf-level operations layer with integration layer(s) on top; Leanpub, 2014

Ralf Westphal, The Incremental Architect's Napkin places an emphasis on data flow (modeled declaratively as a one-dimensional pipeline, introducing branches via continuations or events, finally extending into the third dimension by nesting complex flows) that models data as material that runs through a number of processing steps, and can be viewed at different levels of abstraction, which is better than traditional layering; the author calls this stratum, each consisting of a DSL, achieved by separating logic in leaf-level operations and aggregating integrations; illustrations all follow a drawn-on-napkin theme; unfortunately, that (and the frequent typos) hampers readability a bit; Leanpub, 2014

Ralf Westphal, Messaging as a Programming Model; inspired by a set of blog posts of Steve Bate, in which a pipes-and-filters architecture is successfully applied in a simple single-process application, with separation and AOP features achieved by composition of a pipeline executor interface that takes a single message argument; the author emphasizes one-way communication, Principle of Mutual Oblivion (units don't know each other and are connected by supervisor) and Integration Operation Segregation Principle (operations contain logic, integrations aggregate operations and other integrations; they are never mixed), and exemplifies interaction flow design using pipes or a bus; though the author makes all of this sound like big and important principles, it just looks like common good practices to me; Leanpub, 2016

Tomek Kaczanowski, Practical Unit Testing with JUnit and Mockito; hands-on summary of how to write good tests in the context of TDD, offering many hints and best practices from a dedicated practitioner; not a lot of new information (or stuff that isn't available elsewhere), but nicely packaged into a book that makes for a good table reference; self-published, 2013

Brent Laster, Jenkins 2 Up & Running; covering both legacy Freestyle projects (based primarily on filling out UI forms), and the newer scripted and declarative pipelines, together with modern project types like multiconfiguration, GitHub Organization, Docker containers, and the new Blue Ocean UI; a thick book that aims to cover all of Jenkins (but has to refer to outside resources partially due to the newness of Jenkins 2, and because it's not a reference book), but also bloated by screenshots, duplication, and sometimes poor editing; it covers many topics, but I had wished for more practical advice and best practices, but that lack may be due to the evolution and design weaknesses of Jenkins itself, and not the author's fault; O'Reilly, 2018

Sandi Metz, Practical Object-Oriented Design in Ruby; SOLID priciples shown with practical examples and an agile approach; though not fully applicable to statically typed languages, very interesting to see dynamic languages' approaches like Duck Typing and modules applied for a clean design and cost-effective tests without duplication; Pearson Education, 2013

Kai Spichale, API-Design; Praxishandbuch für Java- und Webservice-Entwickler; a broad sweep across design, naming, fluent interfaces, immutability, design patterns, documentation, scalability, and architecture that either requires a lot of prerequisite knowledge or many side quests to study the material in depth; the book's saving grace is that it provides a compact overview, a kind of checklist for senior developers; I personally learned more from the REST part; dpunkt.verlag, 2018

Christoph Fehling et al, Cloud Computing Patterns; Fundamentals to Design, Build, and Manage Cloud Applications; A pattern language that covers all essential cloud properties (on-demand self-service, broad network access, pay-per-use, resource pooling, rapid elasticity) of application workloads, Infrastructure / Platform / Software as a Service, with many similarities to Enterprise application and messaging patterns. Each pattern is documented separately, with many cross-links, which makes it a good work of reference, but (combined with sub-par editing) tedious to read through from cover to cover; does not contain many new insights if you're familiar with AWS or Kubernetes (which is expected for a pattern book), the benefit is in the standardized pattern names; Springer, 2014

Joshua Bloch, Effective Java, Third Edition; worthwhile read for both beginners (who need to carefully study it) and experts (as a refresher and to still learn a bit here and there, if only for the interesting background stories and great illustrating examples, which will help them teach others, too). There are so many books about grammar and vocabulary of programming languages, but way too few on these important idioms (Modern Perl (see below) is another one). Packed with information, no fluff or fillers, every page worth its read. I'd buy this kind of book for every programming language on earth! Pearson Education, 2018

Brian Goetz et al., Java Concurrency in Practice; deeply technical and well-written book about Java thread safety, synchronization, JRE classes (especially those new in Java 5 and 6) that covers virtually all you need to know about robust and effective multi-threading; Pearson Education, 2006

David Chelimsky et al., The RSpec Book; Behaviour-Driven Development with RSpec, Cucumber, and Friends; great examples motivate the different view that makes BDD a successor of TDD, and show the practices of customer-facing scenarios that are then spec'ed out in detail; though the book uses Ruby-centric tools and covers Ruby on Rails web development in detail, too, it really covers the general practices for any (modern) language; the Ruby language just makes this very fluent and beautiful; Pragmatic Bookshelf, 2010

Roy Osherove, The Art of Unit Testing with Examples in .NET; an in-depth look into the technical side of mocks, stubs, and frameworks, plus design and process tips; extolls the virtues of clean code, but itself uses suboptimal code examples; frequently refers to Michael Feather's Working Effectively with Legacy Code, and xUnit Test Patterns by Gerard Meszaros; I feel that after reading those, there's not much left in this one, especially because the .NET library references are dated by now; Manning, 2009

Kent Beck, Smalltalk; Praxisnahe Gebrauchsmuster; coding style and design guidelines, with a whiff of design patterns, and one of the first mentions of refactorings; the stuff is Smalltalk-centric and dated, but still provides valuable advice and historical perspective on object orientation; Deutsche Ausgabe, Prentice Hall Verlag, 1997

Alan C. Kay, The Real Computer Revolution hasn't happened yet; memo that highlights the analogies of learning mathematics by reading and understanding the physical world through simulation, and how a computer-aided tools (such as etoys) can enable children, creating a teaching revolution similar to what the printing press did centuries ago; VPRI Memo, 2007

Meilir Page-Jones, What Every Programmer Should Know About Object-Oriented Design; written from an age of early adoption, it's dated in its description of OO design notation (a rather cumbersome predecessor of UML), but this is outweighed by precise, language-agnostic thoughts of encapsulation, connascence (important to understand the impact on maintainability), encumbrance, and cohesion; Dorset House, 1995

Rebecca Wirfs-Brock and Alan McKean, Object Design; Roles, Responsibilities, and Collaborations; theory and practical discovery and modeling (via CRC cards, use cases, etc.) of the original interpretation of object orientation, with a distribution of functionality based on roles and object responsibilities; collaborations, control style, architecture, and how it affects flexibility and reuse; the role of documentation (via UML); Pearson Education, 2003

David West, Object Thinking; Long historical and philosophical introduction into OO from the Smalltalk context, didn't know it was so closely linked to the Agile / XP movement; Object Cubes as an extension of good old CRC cards; objects build from behaviorism and anthropomorphism; design practices and modeling terms; found myself in full agreement with most of the book's statements, but left a bit helpless because the (dated and perfunctory) examples didn't really drive home the points made; Microsoft Press, 2004

Yegor Bugayenko, Elegant Objects Vol. 2; More recommendations on what to avoid to achieve a good object-oriented design; a bit less thought-through than the first volume, but still thought-provoking, but one must be careful to gloss over the obvious fundamentalism of the author; Amazon Fulfillment, 2017

Alan C. Kay, The Early History Of Smalltalk, Formative ideas, a motivation of building a learning and simulation environment for children, hardware limitations, politics in Xerox PARC, the elegance of the pure object-oriented paradigm in Smalltalk; ACM SIGPLAN Notices, Volume 28, March 1993

chromatic, Modern Perl 4th edition; a short yet astoundingly complete introduction to Perl how it is supposed to be used today; covers syntax, built-ins, how to do testing, exception handling, object-orientation and Unicode properly, frequently recommends CPAN modules (and alternatives), and even has recommendations; Onyx Neo Press (free e-book), 2016

Yegor Bugayenko, Elegant Objects Vol. 1; 23 recommendations on good object-oriented design, many of which are broken by current languages and libraries; no embellishments, up to the point, but also controversial (also the corresponding discussions on the author's blog) and suffering a bit from the non-native language; enlightening, and makes me wonder what the author thinks of Smalltalk...; Amazon Fulfillment, 2017

c't Programmieren: Android and iOS programming, JavaScript vs. AppleScript, CMake and Python; Verlag Heinz Heise, 2017

c't Raspberry Pi: New Pi 3, available operating systems; hardware, GPIO, comparisons with commercial routers and NAS; various projects; Verlag Heinz Heise, 2016

Lowell Jay Arthur & Ted Burns, UNIX Shell Programming; very dated book about sh, Korn Shell, Bash, and csh, just as the Internet and CGI programming became real; First half is an introduction of basic commands, second half contains software engineering rambling about rapid prototyping and reuse; Wile, 1997

Roger Sessions, COM+ and the Battle for the Middle Tier; introduction to components and transaction processing monitors, and their contribution to scaling modern three-tier applications; description of Microsoft technologies: DCOM, MSMQ, Cluster Service, and a preview of the Windows 2000 architecture; comparison of Microsoft's COM+, Sun's EJB, and CORBA, including case studies; dated, but still interesting to see what survived and what predictions went wrong, and to compare this with the current favorite web services architectures; Wiley, 2000

iX Developer Effektiver entwickeln; continuous delivery through Jenkins and Liquibase, DevOps - culture and automation tools like Chef, Puppet, Ansible; micro services architecture and enterprise IT; containers with Docker and Kubernetes; Verlag Heinz Heise, 2/2016

Harvey M. Deitel, An Introduction to Operating Systems; processes, synchronization, deadlock prevention, storage and virtual memory, job and processor scheduling, multiprocessing, networks and security; typical topics for university courses; case studies in Unix, VAX, CP/M, MVS, and VM; dated, but interesting, especially for the historical perspective and comparison with modern Linux and microcomputer virtualization like VMware; Addison-Wesley, 1984

David Rensin, Kubernetes; scheduling the future at cloud scale; short booklet about cloud application deployment via Docker containers and the Google's Kubernetes cloud management software; entertaining introduction at the right level; O'Reilly, 2015

c't Linux: Long-term and rolling releases, Wayland, Docker containers; Verlag Heinz Heise, 2015

Fred Zlotnick, The POSIX.1 Standard A Programmer's Guide; complete discussion of all C functions for a basic API (mostly for shells), with historical motivations; Benjamin/Cummings, 1991

Jan Goyvaerts, Steven Leviathan, Regular Expressions Cookbook; all details (and differences) of .NET, Java, Perl, PCRE, JavaScript, Python, and Ruby (unfortunately missing POSIX and Vim) via practical recipes; O'Reilly, 2009

Dale Dougherty, Arnold Robbins, sed & awk 2nd Edition; a full run-down of all commands, including the (now mostly historical) differences between different awk versions; many practical examples and reviews of submitted samples; O'Reilly, 1997

Steve Freeman, Nat Pryce, Growing Object-Oriented Software, Guided by Tests; developing a demo application TDD-style with Hamcrest matchers from the authors of the jMock framework; explains the importance of clean, expressive tests and shows how to actually achieve this (and with it, good software design); Pearson Education, 2010

c't Linux: Raspberry Pi and other ARM boards, installation on modern hardware, esp. current notebooks, DBUS; Verlag Heinz Heise, 2014

Neil Bradley, The XML companion; Third Edition; a full description of XML, DTDs vs. Schema, and how to model various documents, including hyperlinks and surrounding standards like XInclude, XLink, XPointer, XPath, XSLT; parsing via SAX and DOM, historical background (with SGML) and comparison with HTML and CSS; Addison-Wesley, 2002

iX Developer JavaScript heute; asm.js, TypeScript, CoffeeScript, Dart - alternatives?; MVVM with Knockout.js, Backbone,js, AngularJS, or Ember.js, Meteor and jQuery Mobile; Node.js, Grunt, Mocha; HTML 5 frontend development; Verlag Heinz Heise, 1/2014

Simson Garfinkel, PGP: Pretty Good Privacy; Though dated, the motivation for public key encryption is particularly relevant in times of Snowden's NSA leak; PGP's history also provides a great story about patents and export restrictions, plus all the technical details of key management, the web of trust, and encrypting and signing email messages; O'Reilly, 1995

C. Michael Pilato, Ben Collins-Sussman, Brian W. Fitzpatrick, Version Control with Subversion (Second Edition, Subversion 1.5); A comprehensive reference of the Subversion commands and specialties like branches, properties, locking, peg revisions; O'Reilly, 2008

Sonatype, Maven: The Definitive Guide; advantages of the project-centric, declarative Maven POM over predecessor build systems like Ant, examples introducing Maven followed by a comprehensive reference, rounded off with the advanced topics repository management and writing plugins; O'Reilly, 2008

c't Hardware Hacks: Arduino vs. Android (TV sticks) vs. Raspberry microcontroller boards; hacker spaces and open source; various small electronics projects; Verlag Heinz Heise, 2/2013

c't Linux: UEFI and new hardware, Ubuntu tips, Gaming on Linux; Verlag Heinz Heise, 2/2013

c't Android: high-end smart phones vs. tablets; Android security, backup, LTE; Verlag Heinz Heise, 1/2013

c't kompakt Programmieren: new web technologies Canvas, web workers, CSS animations; mobile apps; D vs. Smalltalk vs. Haskell; Verlag Heinz Heise, 3/2012

c't kompakt Linux: SSDs and other hardware; Linux Mint 13 as an alternative to Ubuntu; OwnCloud and AWS, UEFI book and Btrfs; Verlag Heinz Heise, 2/2012

Gerard Meszaros, xUnit Test Patterns Refactoring Test Code; Goals, Patterns and Smells for test automation with xUnit and mock frameworks; this tome gives names to and acknowledges the many good practices in test automation in design pattern form; Pearson Education, 2007

c't kompakt Linux: Ubuntu 11.10 and the new Unity desktop, server hardening, management and DIY-cloud; Verlag Heinz Heise, 1/2012

Miŝko Hevery, Guide: Writing Testable Code; Guide and set of lectures about designing for testability, split object creation from logic, avoid work in the constructor and global state, solve almost all problems via dependency injection; Google, 2011

c't kompakt Programmieren: Comparison of C#, C++, ObjC, Java, Scala, Perl, Python, Python 3, JavaScript and PHP; development tutorials for iOS, Windows Phone 7 and Android; Verlag Heinz Heise, 2/2011

c't praxis Android: Hardware, Tablets, a base set of useful apps, rooting and alternative firmware, Android architecture and app development; Verlag Heinz Heise, 1/2011

c't kompakt Linux Server-Praxis: RHEL 6; NFS, VPN and NAS, Virtualization with KVM vs. Xen, system management; Verlag Heinz Heise, 1/2011

iX Developer Programmieren heute: Mobile App-Entwicklung mit iOS, Android und Windows Phone; Visual Studio 2010 vs. Eclipse 4.0; moderne Sprachen (Clojure, Scala, Go, Groovy) und Trends (parallel computing, NoSQL, Saas, BPM); Verlag Heinz Heise, 12/2010

c't kompakt Linux: Ubuntu 10.04 LTS; system start and booting with Grub, Kernel vs. user mode and libc; proprietary drivers; Verlag Heinz Heise, 1/2010

c't kompakt Security; anti-virus, cybercrime; securing Windows, web, online payment, email and privacy; Verlag Heinz Heise, 2/2009

Web on Rails iX magazine special; comparison of web frameworks for ASP.Net, Java, PHP, Perl, Python, Ruby and Smalltalk; Ruby on Rails, Groovy on Grails and Adobe Flex vs. Silverlight tutorials; Verlag Heinz Heise, 2/2009

c't kompakt Linux Ubuntu 9.04; booting; special Linuxes; Verlag Heinz Heise, 4/2009

Andrew Oram and Greg Wilson (editors), Beautiful Code (Theory in Practice) - Leading programmers explain how they think and what they deem beautiful; O'Reilly, 2007

Michael Howard, David LeBlanc, John Viega, 19 Deadly Sins of Software Security - Programming flaws and how to fix them; McGraw-Hill, 2005

Mark Jason Dominus, Higher Order Perl - Transforming programs with programs: caching, memoization, recursion, iterators, streams, higher-order functions and currying, functional programming in conjunction with OO; Morgan Kaufmann, 2007

Programmieren mit .Net 2.0 iX magazine special, Verlag Heinz Heise, 1/2006

Bruce Eckel, Chuck Allison, Thinking in C++ Volume Two: Practical Programming, Prentice Hall, 2004

Douglas R. Hofstadter, Gödel, Escher, Bach; ein Endloses Geflochtenes Band: investigating a recurring theme of recursion, self-reference, contradiction and paradox, and how it applies to logic and programming; dtv, 1991

Dov Bulka, Java Performance and Scalability Volume 1, Addison-Wesley, 2000

Bruce Eckel, Thinking in Java Second Edition: The definitive introduction to object-oriented programming, Prentice Hall, 2000

Bruce Eckel, Thinking in C++ Second Edition: Volume One: Introduction to Standard C++, Prentice Hall, 2000

Andrew Koenig, Barbara Moo; Ruminations on C++: a decade of programming insight and experience, AT&T, 1997

Teach Yourself C Programming in 21 Days, SAMS Publishing
Teach Yourself C++ Programming in 21 Days, SAMS Publishing
Teach Yourself Visual C++ 6 Programming in 21 Days, SAMS Publishing

Aho, Kernighan, Weinberger, The AWK Programming Language, Addison-Wesley, 1988
Randal L. Schwartz, Learning Perl (4.0), O'Reilly

Roger Penrose, Computerdenken: Die Debatte um Künstliche Intelligenz, Bewußtsein und die Gesetze der Physik; Exploring algorithms, fractal geometry, Turing machines, quantum physics and neuronal networks to evaluate the future of AI; Spektrum der Wissenschaft, 1991

Hilger Kruse, Roland Mangold, Bernhard Mechler, Oliver Penger, Programmierung Neuronaler Netze, eine Turbo Pascal Toolbox; Learning different neuronal network models (interactive, perceptron, backpropagation, Kohonen, Hopfield, Boltzmann) based on libraries and sample applications; Addison-Wesley, 1991

Das große Buch zu Turbo Pascal 6.0: Pascal class libraries, BGI graphics programming, object-oriented GUI programming with TurboVision, DATA Becker, 1991