Keith Douglas' Web Page

About me Find out who I am and what I do.
My resumé A copy of my resumé and other documentation about my education and work experience for employers and the curious.
Reviews, theses, articles, presentations A collection of papers from my work, categorized and annotated.
Current research projects What I am currently working on, including some non-research material.
Interesting people People professionally "connected" to me in some way.
Interesting organizations Organizations I am "connected" to. (Some rather loosely.)
Intellectual/professional influences Influences on my work, including an organization chart. Here you can also buy many good books on philosophy and other subjects via amazon.com. I have included brief reviews of hundreds of books.
Professional resources Research sources, amazon.com associates programs, etc.
What is the philosophy of computing? A brief introduction to my primary professional interest.
My intellectual heroes A partial list of important people. Limited to the dead.
My educational philosophy As a sometime teacher I've developed one. Includes book resources.

Book Influences - Computing: Design and Architecture

Design Patterns: Elements of Reusable Object-Oriented Software Gamma, Helm, Johnson and Vlissides I think, at long last, I finally see how object oriented software ought to be built, thanks to this book. That said, I am not convinced OOP is the way to go for even all GUI programs. My next goal: see what is included in .NET (work related ...) from here. It is interesting, also, reading this book from a historical perspective: many of the examples are now very very dead (THINK C, MacApp, Dylan, Presentation Manager, ...) Interesting that there were (almost?) no references from Microsoft OSes, tools, etc. (Note that even Windows 95 was in the future at the time this book was written.)
Enterprise Integration Patterns: Designing, Building and Deploying Messaging Solutions Hohpe and Woolf (primarily) How to join different software systems together in reliable, safe, efficient and effective ways. Includes a convenient diagramming system, examples in several environments and languages and many discussions of pitfalls. The only broad weaknesses are (1) there is no discussion of WCF, which cannot be faulted because it did not exist when the book was written and (2) insufficient attention to transactions. The latter is a difficult topic; the book does broach the subject and analyzes why it IS hard, but only provides one approach ("pattern").
Foundations of BizTalk Server 2006 Woolston I got interested in how BizTalk functions after acting as a DBA assistant and general troubleshooter on a large distributed system which involved some BizTalk parts. This little book consolidates and documents about at the level I was able to figure out with the help of my colleagues, including our BizTalk expert. BizTalk promises to be used increasingly where I work, so I figured a small reference was good to have around. This well written walkthrough is a good introduction. One typo so far marrs an otherwise good production, however I have yet to test the ideas to any great extent. I would also have liked a bit more on what database objects and such BizTalk server makes use of and a bit about how to DBA for such a beast.
Fundamentals of Object-Oriented Design in UML Page-Jones This is more than an introduction to UML (unlike what the title first suggested to me). More correctly, the title is really drawing attention to the discussion of the fundamentals of object oriented design. This is in essence both a textbook and a very extended glossary, as part of the novelty of extended programming is its expansive vocabulary of new terms like polymorphism, encapsulation, etc. For those of you who are looking to accumulate uses of state space across fields, there is an ample discussion of this as applied to designing good classes and so on. Warning: it is both good and bad that the book has so much whitespace.
Human Values and the Design of Computer Technology Friedman (ed.) Not the same Friedman as the one in the programming languages context. This volume is a little collection of papers on the ethics of computing.
Learning WCF: A Hands-on Guide Bustamente A dense introduction to Microsoft's .NET based distributed application framework. Might be a bit too much for total beginners as it moves very quickly. Warning: the book has a website with updated material for .NET 3.5 SP1; the book is for 3.0.
Management of Information Technology, 3e Frenzel This book is a little out of date computingwise, though I suspect the management principles are still a useful starting point. The book also suffers from technical errors of various kinds in the computing sections. Usefully for the philosopher, though briefly, it includes a discussion of ethics.
Planning Extreme Programming Beck I've heard about Extreme Programming (XP) from various places and so picked this one up used to see what it was about. Turns out that this volume is part of a series. Focus in this volume is on the planning aspects of XP and not much in the way of implementation details. The planning methodology of XP is basically "be flexible and continually revise one's plans".
Principles of Object-Oriented Analysis and Design Martin Recommended to me a while back, this book is almost 20 years old. Subsequently some is still applicable: most notably the importance of a good notation and diagramming style. Details of actually sketching out classes and inheritance hierarchy are missing, so the age doesn't matter here either; on the other hand this is an interesting omission. The novelty of having a detailed discussion of business modelling with ultimate end users (not just "use cases") is valuable. However, the book suggests modelling entire swathes of your enterprise at once, which seems to be a recipe for too big a task, even if it would promote (hopefully!) lots of reuse. Some of the non-OOAD predictions look rather quaint, but that's expected. What has not come to pass on the OOAD front is code generation everywhere, with proofs of correctness to go with. I leave it to the pundits (or my philosophy hat) to figure out why ... Not a bad book, just in a way a bit superficial, but valuable all the same for the unique contributions mentioned.
Professional BizTalk Server 2006 Jefford, Smith and Fairweather Details and references to more details about everything to do with BizTalk Server 2006. Most useful are the database administrator's guide to BizTalk and the guidelines for both tuning and debugging.
Software Project Survival Guide McConnell A bit more detailed than the Extreme Programming book, above, but covers many of the same topics, albeit in an incompatable fashion. Organizing programming teams, planning development cycles, coordinating test strategies, etc. are all discussed herein in outline. Each of these topics would also fill a book or more, but having an overview is helpful. Also in passing mentions some of the limitations of the analysis. Philosophers can take note that the author thinks that there is an ethical reason for having different approaches to software development if the system is more critical in certain ways.
The Mythical Man-Month Brooks Famous collection of essays on software design and engineering. Most famous of these defends the idea that adding manpower to a late project often makes it later.
The UX Book: Processes and guidelines for ensuring a quality user experience Hartson and Pyla A textbook on HCI in the broadest sense of the word, though focused on, as the subtitle suggests, process rather than product. Hence one will find more about interviewing users, using prototypes, capturing stories, etc. than of specific use of UI elements, etc. A good complement to the usual use case books, though a very dense and challenging one. Complaint: the lack of details of how exactly to lay out UIs etc. is troublesome, though it would require another few hundred pages. In that sense the division of labour is welcome. The book does illustrate well that my employer, which already does survey and such design, is ideally placed to make more use of these notions in software design ... (Warning: At present I have not reviewed the exercises.)
Use Case Modelling Bittner, Spence A brief (though it is 330 or so pages) introduction to the use case approach to (some of) requirements analysis. It answers all the basic questions, and well, however, it is sorely lacking on anything deeper. For one, I wanted to know how to write use cases for modern UIs - the guides here and in the RUP documentation all seem to presuppose sequential processing. Also, the stuff on diagramming isn't very helpful - diagrams can be very valuable, but just stick figures of actors and a system part don't seem to convey very much to me.