Domain: bfast.com
Stories and comments across the archive that link to bfast.com.
Stories · 774
-
Assembly Language for Intel-Based Computers, 4th edition
Alexander Moskalyuk writes "Most of the people I know have a love-hate relationship with Kip Irvine's Assembly Language for Intel-based Computers. Ask any student who used this textbook and you will either get a cheerful 'I've used it, it's great, I learned Assembly, and it has lots of useful examples' or resentful 'The book is horrible, hard to follow and full of code that is irrelevant to the contents of a specific chapter.'" Alexander's review of the book (below) concentrates on its role as an instructional aid, and on the differences between the third and fourth editions. Assembly Language for Intel-Based Computers, 4th edition author Kip R. Irvine pages 676 publisher Prentice Hall rating 8/10 reviewer Alexander Moskalyuk ISBN 0130910139 summary Authoritative source on Intel assembly programming and Assembly language fundamentals
Popularity Contest of One A quick search on Amazon, however, reveals that for the keyword 'Assembly' Irvine's book is still the bestseller. The fourth edition of the text tops the list and the same was the case with the third edition. The university where I teach uses Irvine's textbook for its introductory Assembly courses. We've used third edition throughout last year, and decided to stick to the third edition (with fourth recommended) during this academic year as well, just to avoid having students cash out for a newer version of the same text. Since this is a Prentice Hall textbook targeted mostly towards Computer Science and Engineering programs, welcome to the world of academic pricing -- the list price of fourth edition is $76.
Third vs. FourthThe first natural thing to do is to see whether the fourth edition of the text is superior to 1999's third edition. Just looking at the table of contents, you can see that a lot of new material has been added, even in the introductory chapters. Furthermore, fourth edition has a new version of the first Assembly program introduced to the reader. Instead of the notorious 'Hello, World' example, it's now adding three numbers. Hello, World would usually be the thing to introduce first in classes with C++ or Perl being primary languages. However, in Intel Assembly the example just confused students more, since printing the phrase "Hello, World" to the screen involved dealing with interrupts, and that topic would not be covered until later in the course.
Irvine also got rid of his "Using the Assembler" chapter, which might be a nuisance for some of the readers and relief for others. The book comes with Microsoft ASM and thus all examples assume using MASM for their compilation needs. In my class, however, NASM has always been the compiler of choice, partly because it's easier to introduce to novice programmers who have not been exposed to Assembly before, and partly because of the tradition -- NASM was the compiler that previous instructors used, and thus was available on university servers and familiar to tutors in the labs. Vaguely named "Advanced Topics" chapters are almost gone and now changed into much more informative "16-bit MS-DOS programming," "Expert MS-DOS programming," "BIOS level programming," "32-bit Windows programming" and "High-level language interface." The last chapter of the book is now the only one bearing the name "Advanced Topics" and discusses things like "Hardware control with I/O ports," "Intel instruction encoding" and "Floating-Point arithmetic."
Some appendices are gone as well. The third edition included such topics as "Binary and Hexadecimal tutorial" (now moved to be a part of the introductory chapters), "Using debug" (tutorial on using debug.exe on Microsoft platforms to trace the Assembly code -- it's a shame the appendix is pulled out of the book, since now either students have to learn the commands for debug.exe themselves or additional class time needs to be spent on that), "Microsoft CodeView" and "Borland TurboDebugger" (both gone for good) as well as "Guide to the sample programs" (in this new edition, that successfully migrated into "Installing and using the assembler").
Except for the shocking absence of debug.exe tutorial appendices, the fourth edition looks much more straightforward and useful. Speaking of appendices, there are four of them now - "Installing and using the assembler," which few people ever bother to read when in class, "Intel instruction set," which is the mother of all useful appendices (in fact, I've seen good students get by on nothing else but this appendix), "BIOS and MS-DOS interrupts" and "MASM reference." The CD by the way, includes MASM, source code and macros for the book, as well as evaluation version of TextPad.
Academic valueKip Irvine is usually accused of bringing up examples that confuse novice readers and trying to show off with his knowledge of IA-32 Assembly. Read the Amazon reviews to find out more. Personally I have never had problems with his style of writing. There were, though, some mistakes in the third edition of the book that would make an instructor pull his hair to pieces. Typos, grammatical errors and words that did not get picked up by the spellchecker were acceptable, but when the sequence of operations during code execution was described incorrectly, you can hardly be accused of being too picky, since you get students relying on the book for knowledge and being mad at you for flagging their code wrong on the test.
If you have the third edition handy, pages 234 and 235 describe the RCL and RCR operations, providing the incorrect order of operations and thus forcing students who use this textbook to learn these instructions to arrive at incorrect results when given a snippet of code to trace. Page 232 in the fourth edition now has the correct sequence of operations.
I would lie to you if I told you that I've read the whole book. Very few people would actually need to go through seven hundred pages, and some of the things discussed might never be useful even if you spent the rest of your life programming Intel Assembly 40 hours a week. But from the information that I got after reading the chapters that interested me (mostly introductory material and all chapters that cover instruction set and interrupts), the text seemed to present material in a clear and straightforward manner, with abundant examples.
A nice addition to Chapter 1 was an explanation of how virtual machines work, since the university uses Java as its core programming language. The second chapter goes on smoothly with careful introduction into the architecture principles and then switches into overdrive, presenting students with information on "Multi-stage pipelining" followed by reasonably simple material on "How programs run."
The book jumps into IA-32 architecture, although I wish that for introductory class the text would stick to 8086 architecture, and then have the 32-bit registers introduced. But generally it's a thorough and informative text for anyone deciding to learn programming Assembly language on Intel platforms, or just beginning Computer Science majors deciding to find out how the stuff really works as opposed to playing with high-level APIs.
The table of contents can be found at publisher's Web site. There's also a Web page for the book, where the author has posted some chapters in PDF format. The chapters published for free include Chapter 1 - Basic Concepts, Chapter 2 - IA-32 Processor Architecture, Chapter 6 - Conditional Processing, Chapter 11 - 32-bit Windows Programming, Chapter 15 - BIOS-level programming as well as Preface and Table of contents.
You can purchase Assembly Language for Intel-Based Computers, 4th edition from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
C# for Java Developers
joefrench writes: "It might seem strange to review a C# book on Slashdot, especially one published by Microsoft, but I felt that there must be a lot of readers like me -- programmers who know Java, but want/need to learn something about C# and .NET. C# for Java Developers aims to teach experienced Java programmers how to write in C#." Joe outlines what he considers the book's good points (many) and weak points (few) in the rest of his review, below. C# for Java Developers author Allen Jones, Adam Freeman pages 548 publisher Microsoft Press rating 9 reviewer Joe French ISBN 0735617791 summary A comprehensive C# from Java tutorial
First things first First of all, let's deal with the Microsoft issue. I was surprised to find that this book even existed given the problems MS has had in the courts recently. I was even more surprised to find that C# for Java Developers is very balanced and does not hype up C# at the expense of Java -- throughout the book there are places where the authors say that "Java is better at this" or "We have no idea what the C# designers were thinking." A refreshing attitude from a company that is not known to be an admirer of Java.I was reluctant to pay for a Microsoft book, but I have to admit that I am impressed. This is the first MS book I have ever purchased, and it is clearly written, well thought-out and very, very comprehensive. One of the best features for me is that all of the instructions for compiling and managing code assume that you are using the command-line tools, rather than Visual Studio. For someone on a tight budget, this was a real bonus.
The ScoopThe first part of the book is an overview of .NET, and contains the boiler-plate description that you get from the .NET web site. Not that useful, but pretty short. There is a chapter that compares .NET to Java (J2SE and J2EE), but again, there is nothing new or important there.
The second part of the book covers the C# language, using Java as a starting point. The coverage seems comprehensive, and explains where the two languages are the same (quite often), where they are different (now and then) and when they appear to be the same, but you are likely to spend a couple of hours tracking down something weird (more often than I would like). I had started playing around with C# before buying this book, and all of the problems that I had in the early days were detailed here with clear explanations.
Part three delves into the .NET class library, covering basic topics such as collections, IO and handling XML. Once again, I was impressed with the depth of coverage and the way in which the authors use Java classes to explain the workings of .NET. It was while I was reading through this section that I realized just how different C#/.NET and Java can be.
The last part of the book covers "advanced" topics. There seems to be little reason for the division between basic and advanced topics, but chapters cover areas such as threading, security and networking. The one thing that is consistent in this part of the book is that there is less of a parallel between Java and C#. For example, "Windows Forms" is used to build client UI applications, but is very different toolkit from Swing/AWT.
The appendix list is a little dull, covering topics like GC and configuration files. There are some interesting snippets, but I got the impression that these were topics that the authors thought were important, but didn't know where else they should go. The exception is the "Java to .NET API Reference" which, for me at least, sets this book apart from the competition. Every class from the J2SE class library is mapped to an equivalent .NET class and a reference to where the topic is covered in the book -- having something like this has saved me hours of searching.
What's to Consider?This book uses a lot of C# fragments to demonstrate how classes are used, but contains very few full "working" examples. I found this to be great once I knew the basics of C# (because I could focus on the topic), but difficult at first (because I could not play with complete code).
C# for Java Developers covers much more of the .NET Framework than the other books in my local bookstore, but because of this the text can be dense at times, as the authors try and pack in a bit too much detail.
I can't find major fault with this book, and a (small) part of me admires Microsoft for publishing such an unbiased book.
SummaryIf you are a Java programmer who wants or needs to learn about C# and .NET, then this is a great book. Don't be put off by the Microsoft logo, and bear in mind that you don't need a copy of Visual Studio to follow the examples.
The book effectively uses Java as a tool to teach C# and explain the workings of .NET. If you are like me, then you will find this book invaluable and will likely keep it close at hand for quick reference.
Table of Contents
- Introducing .NET
- Introduction to Microsoft .NET
- Comparing Java and .NET Technologies
- The C# Language
- Creating Assemblies
- Language and Syntax Features
- Data Types
- Advanced Language Features
- Programming .NET with C#
- Strings and Regular Expressions
- Numbers and Dates
- Collections
- Streams, Files, and I/O
- XML Processing
- Advanced Topics
- Reflection
- Threading and Synchronization
- Networking
- Remoting
- Database Connectivity
- Security and Cryptography
- Graphics and UI
- Introduction to XML Web Services
- Appendices
- Platform Integration
- Shared Assemblies
- Configuring Applications
- Garbage Collection
- Cross-Language Code Interoperability
- Java to .NET API Reference
You can purchase C# for Java Developers from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
The Darwinian Revolution: Science Red in Tooth and Claw
stemnitsa writes: "Michael Ruse is, somewhat unusually, a professor of both philosophy and zoology. In this book he looks at how evolutionary thought developed between 1830 and 1875. The book was originally published in 1979; the text has not been revised for the new edition but Ruse has included an Afterword in which he looks at new research that has come out in the intervening years. There has been an immense outpouring of publications about Darwin and the Darwinian Revolution since his book first appeared but it still merits an honourable place, both for its insights and for its readability, enhanced by touches of humour. To some extent it covers the same territory as Peter Bowler's "Evolution: the history of an idea", but its focus is narrower in time while providing more in-depth discussion of the philosophical and religious ideas of Darwin's contemporaries." The remainder of stemnitsa's review follows; this book sounds like a good one to pair with Patterns and Processes of Vertebrate Evolution, reviewed last week by Danny Yee. The Darwinian Revolution: Science Red in Tooth and Claw author Michael Ruse pages xiv + 346 publisher The University of Chicago Press rating 7 reviewer Anthony Campbell ISBN 0226731693 summary Darwin's ideas did not emerge from a vacuum; there were important forerunners. Ruse provides a valuable insight into the intellectual climate of the time. He makes it clear that to think of science and religion as being mutually opposed in the nineteenth century is an over-simplification; there were important ways in which religion actually helped the cause of science.Ruse is particularly good on the personalities of those involved. They were indeed a colourful bunch. They included William Whewell, Adam Sedgwick, Baden Powell (father of the founder of the Scout movement), John FW Herschel (son of the famous astronomer William Herschel), Charles Lyell, Richard Owen, and Charles Babbage, better known for his invention of the calculating engine, as well as Charles Darwin and Thomas Henry Huxley. Many of these, especially those belonging to the older generation, were clergymen; it was impossible to be a Fellow of a college at Oxford or Cambridge at the time unless one was in Holy Orders. This inevitably coloured their views on evolution, though not always in the way one might expect.
Popular accounts of the debate about evolutionary thought in the nineteenth century often convey the impression of a straightforward conflict between secularism and religion, in which scientific secularism emerged triumphant. As Ruse makes clear, this is a considerable over-simplification: the relation between religion and science was in fact very complex, and in some ways religion actually helped the cause of science. Other factors, philosophical and social, were also involved, and Ruse's claim is that all of these elements have to be given due weight if the development of evolutionism is to be understood.
That profound changes in intellectual attitudes occurred in the nineteenth century there can be no doubt. In 1844, when Robert Chambers published his "Vestiges of the Natural History of Creation", in which he argued the case for organic evolution, hardly any serious scientists accepted its main message, but when Charles Darwin published "The Origin" in 1859 his main claim was quickly accepted by almost all scientists concerned with the origin of organisms. In part, this was a consequence of the difference in the scientific standing of the two authors, but there were other reasons as well and it is these that Ruse seeks to elucidate.
First, there were scientific reasons to accept evolution. It made sense of the geographical distribution of species, such as finches and tortoises on the Galapagos Islands, which Darwin described and which was hard to explain on any other assumption. Also, by the 1860s more was known about the fossil record than had been known in 1844, and it was becoming increasingly difficult to doubt that progression had occurred during geological time. Darwin was therefore able to draw on a more ample arsenal of scientific facts; indeed, he had made significant contributions to that arsenal himself.
Of course, Darwin was not merely advocating evolution as a process, he put forward a mechanism by which it could occur. Chambers had not provided a plausible cause for evolution, but Darwin did, with his mechanism of natural selection. However, this idea had its problems: estimates of the age of the earth seemed not to allow enough time for evolution, and many people doubted if natural selection could be powerful enough to produce new species as opposed to mere variations. Even T.H.Huxley, "Darwin's bulldog", was relatively uninterested in natural selection and tended to downplay its importance. But field naturalists such as Henry Walter Bates found it invaluable as an explanation for insect mimicry and his work was cited by Darwin in later issues of "The Origin".
The second area of change was in philosophy. Many of the older scientists were idealists, Platonists, who favoured the view that species were immutable Types. Huxley, on the other hand, was not a Platonist and criticized his older colleagues on that ground. This change was both a cause and a consequence of other changes, in religious thought and in society at large, that were occurring at this time. Ruse points to innovations in the educational system leading to a reduced emphasis on the Classics and a weakening in the influence of religion. Not surprisingly in view of his professional background, Ruse pays considerable attention to the philosophical principles espoused by the main participants in the debate. There was a prevailing assumption, to which Darwin himself largely subscribed, that physics, and especially astronomy, provided the explanatory model to which other sciences ought to aspire.
The third class of change affected religion. Chambers had been attacked on religious grounds: he was held to have threatened the special position of man and to have left no room for God's design. Similar criticisms were made of Darwin but less strongly. However, religion, Ruse believes, also helped Darwinism. The argument from design prepared people's minds for evolutionism, while thinkers such as Baden Powell thought of God as working through unbroken natural laws rather than through miracles.
In the 1830s and 1840s religion was a thorny problem for many people. Partly this was a reaction to science; Ruse thinks that the attempt to reconcile science and revelation was a particularly British preoccupation (as perhaps it still is). And conventional religion was also under threat from another source: German Biblical criticism. As a result, some prominent clergymen, including Lyell, had moved a long way towards Deism (natural as opposed to revealed religion).
Lyell is a particularly interesting figure in the present context. His "Principles of Geology" accompanied Darwin on his voyage in the Beagle and had a major influence on his thought. As a Deist, he was unhappy about introducing miracles to explain the origin of species; unlike Whewell, who thought it was compatible with science. Ruse sums this up neatly by saying that Lyell wanted a world left alone by God, in which organisms struggle for survival under the threat of extinction, whereas Whewell wanted to see God hovering protectively over his creation.
Fourthly, there were social and political influences. In the 1830s there was a real fear that revolution might spread to Britain from abroad; by 1860 this was no longer the case. And in the second half of the century it was possible for a man to become a professional scientist without private means and without taking Holy Orders: a change that helped to weaken the influence of religion.
It is difficult to describe all these developments without falling into circularity, because each type of cause influenced, and was influenced by, the others, but in a way this is precisely Ruse's point. He insists that there were many different threads intertwining among themselves and that it is misleading to oversimplify the argument by concentrating on what appear to be the "real" issues. I think he makes a convincing case for this claim. He finds no need to alter his views in this reissue of the book, as he explains in the Afterword, though I was glad to see that he softens his earlier criticism of Huxley, whom I have always rather liked. I was even more glad to read that he strongly dissociates himself from "social constructivism" in the history of science. He states emphatically that "Charles Darwin was telling us real truths about a real world". There is no question of organic evolution being a human-created fiction.
Ruse is, however, rather despondent about the present position of evolution studies as an academic discipline. He is concerned that evolution is often seen to be "popular science" and is usually linked with ecology, instead of being accorded the importance it deserves. There is indeed a paradox here, which Ruse perhaps fails to bring out fully. He mentions that in the USA today there are ten times as many departments of molecular biology as of evolution, but he does not point out that it is impossible to understand molecular biology adequately unless it is seen in an evolutionary context. The interesting question, therefore, is why this fact is not always recognized.
Much the same failure to take account of Darwinism exists within medicine. The origins of many diseases can only be understood from an evolutionary viewpoint (Charlton BG; Nesse RM, Williams GC). Immunology, which is basic to modern medicine, is an evolutionary science through and through (Tauber AI). And yet "Darwinian medicine" is hardly a dozen years old; even today, few doctors are familiar with the term. There is a sense in which the Darwinian revolution has still hardly begun.
You can purchase The Darwinian Revolution from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
Developing Applications with Java and UML
BShive writes "Developing Applications with Java and UML focuses on building and modeling industrial-strength Java applications. The book takes you step-by-step through a product lifecycle and software process. You do not need to know UML or OO Design, as both new and experienced Java developers will benefit from reading this book. It is highly focused on process, so developers will have to put aside the 'jump in and code' attitude." Read on below for the remainder of his review. Developing Applications with Java and UML author Paul R. Reed, Jr. pages 463 publisher Addison-Wesley rating 9 reviewer Ben Shive ISBN 0201702525 summary Developing Applications with Java and UML focuses on building and modeling industrial-strength Java applications. The book takes you step-by-step through a product lifecycle and software process.Each chapter begins with a brief summary and a list of the goals. After reading the book through, both should be useful. Each chapter also closes with a 'checkpoint' that summarizes what has been covered in the chapter and what is to come.
The first chapter sets up the entire book by outlining some of the project problems encountered in software development. Once the author gets into development models, the Unified Process from Rational Software, a huge and detailed software process, is introduced. The book focuses on only using the elements that provide the biggest 'bang for the buck'. The Unified Process is the focal process of the book, but the Synergy Process is a free alternative, only lacking some additional guidelines and how-to's. A short overview of UML is covered, along with its' place is in the software process. He notes that a project that just uses UML in a vacuum without a sound process and plan will fail.
The second chapter briefly discusses the Java language alongside the concept of Object Oriented Programming. Experienced Java programmers could skip this section if they wished. The section is worth skimming as a lead-in to the explanation of how Java and UML are a good fit.
Chapter three, Starting the Project is the first time the book delves into the meat of how to structure a project. The example scenario that is followed through the book is introduced, and throughout the book real-world examples are used that relate to the sample project. Every theory in the book that is translated into some kind of example the reader can pull apart and examine.
Through the next few chapters use-cases and class diagrams are covered, leading up to building a user interface (UI) prototype. Personally, I've never used UML for anything but sculpting class diagrams for export. This is the point in the book where I started to see how the rest of the project is able to use UML and tie it all together. Being able to model the classes and easily export them is very powerful, but even more so when combined with the rest of the ways you can employ UML in your project.
The following chapters are much like the first few that began to talk about the sample project. There is no Java code until chapter 9, halfway through the book. This is not the book to get if you are only interested in how to use UML as a base to dump out some code.
Throughout the book the content remained interesting, and relevant. Do not expect to sit down and read it from beginning to end. There is a great deal of material covered and no topic that was inadequately explored. Using the sample project consistently throughout the process was invaluable, along with the samples and source code provided. Alongside the process, the real life anecdotes and comments provided were a welcome addition instead of an intrusion. The author is someone who's seen the mistakes that could be avoided. For example, an application with 70,000 lines of Java code that only contained two classes.
Having talked about the depth and detail of the book, this was also one of the bad points as well simply since it takes so long to get through. People already well experienced in running a project with similar phases will find it much faster reading. The other issue is the expense of the tools and products involved. Rational Rose, the Rational Unified Process and WebLogic are rather expensive products. Thankfully there are alternatives that he mentions in the book, and others as well. Visio, the Synergy Process and Tomcat are all possible alternates. Surprisingly, Tomcat is used in his example setup.
I had left the rating at 8 throughout most of my reading while considering the positives and negatives. However, when I finished the book I bumped the rating up to 9 simply because of the wealth of information I learned. Anyone aspiring to run a team project with Java should read this book. In the corporate arena, most of the battle is not the code, but understanding what the users want and what will be created. Following any kind of process will improve the result, even if only a few key elements are used.
Chapters:
1. The Project Dilemma
2. Java, Object-Oriented Analysis and Design, and UML
3. Starting the Project
4. Use-Cases
5. Classes
6. Building a User Interface Prototype
7. Dynamic Elements of the Application
8. The Technology Landscape
9. Data Persistence: Storing the Objects
10. Infrastructure and Architecture Review
11. Constructing a Solution: Servlets, JSP and JavaBeans
12. Constructing a Solution: Servlets, JSP and Enterprise JavaBeansAppendix:
A. The Unified Project Plans
B. The Synergy Process Project Plan
C. Estimating Projects on the Basis of Use-Cases
D. Sample Project Output
E. BEA WebLogic Application Server
You can purchase Developing Applications with Java and UML from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
Project Orion: The True Story of the Atomic Spaceship
Johnzo writes: "It seems ludicrous to imagine that a spaceship could ascend into orbit and beyond by riding the impulses produced by a series of external atomic explosions. Such an idea would perhaps be more properly confined to science fiction -- like the Niven & Pournelle classic Footfall. But Footfall drew its inspiration from a real-life project, a project that, according to George Dyson's Project Orion: The True Story of the Atomic Spaceship, continues to offer exciting possibilities for space exploration." This sounds like a fascinating book; read on below for johnzo's full review. Project Orion: The True Story of the Atomic Spaceship author George Dyson pages 345 publisher Henry Holt & Company rating 9/10 reviewer johnzo ISBN 0805059857 summary An excellent high-level introduction to the characters, engineering, culture, and future of the Orion project, and an ideal jumpoff point to other readings about the atomic age.The chief advantage of an Orion-style spaceship can be explained in terms of specific impulse, which is the time during which a mass of fuel will produce enough mass x g thrust. Conventional chemical rockets, constrained by exhaust temperature, can produce specific impulses of about 430 seconds. Orion-style engines promised a specific impulse that was an order of magnitude higher than that--"2000 to 3000 seconds for first-generation designs, 4000 to 6000 for larger vehicles using existing bombs." The combination of long specific impulse and high thrust was unique to Orion, and would have allowed for the sustained high-acceleration maneuvers necessary for long-range manned space flight. And, like nuclear bombs in general, Orion scaled up more easily than it scaled down. The original Orion reference design massed 4,000 tons, and unlike the Apollo missions, which sent 600 lbs into space for every pound that came home, more than half of Orion's launch weight would have returned to Earth from a voyage to Saturn. Had it fulfilled its promises, Orion would have enabled manned space travel on a grand scale, with thousands of tons of payload and year-plus mission durations. It would have let us go into deep space in spaceships instead of mere disposable, unmanned spacecraft.
From 1958 to 1965, a team of physicists and engineers at General Atomic in California pursued the Orion dream. Project Orion tells their story ably. Dyson explores high-minded science and baroque bureaucracies in short, manageable, anecdote-loaded chapters. It's a terrifically easy read; with just freshman physics and a passing knowledge of 1950's America, I was able to follow along with no problems. The book begins by explaining the basics of Orion, the 1950's atomic establishment, the dot-com-like culture at General Atomic, the experiments that gave rise to the Orion idea, and the seed funding from ARPA. Dyson moves on to introduce us to some of Orion's chief characters, notably Stanislaw Ulam, who originally patented the atomic-pulse-drive idea, Ted Taylor, the Orion project leader and namer (he "just picked a name out of the sky," says the book) and Freeman Dyson, the celebrated scientist who was on board for the first two years -- and, who, not coincidentally, is George Dyson's father.
From there, it's on to the fun parts, beginning with the chapters detailing the engineering problems that Orion's designers faced. Most obviously, how do you design a pusher plate that won't shake itself apart or ablate under repeated impacts of nuclear plasma? (answer: with a thin coat of oil, reapplied between each atomic pulse.) How do you cushion the crew from the hundred-g shock of the pulse-unit explosions? (answer: with two-stage shock absorbers.) How do you shape the expansion of the propellant plasma so that you hit the pusher plate right? (answer: you take advantage of directed-energy weapons research to shape your atomic charges.) How do you eject your atomic charges from around the rim and orient them so that they explode correctly? (answer: you talk to Coca-Cola about bottling plant design.) And how do you cope with a pulse-unit misfire that sprays your pusher plate with jagged shrapnel instead of friendly plasma? (no answer given.)
Since GA's Orion program was a small shop that wasn't straightjacketed by job descriptions, the physicists were free to envision operational details and space missions for their baby. After concluding its engineering coverage, Project Orion looks at some of these missions. Freeman Dyson proposed a mission that would have landed on the moon, orbited Venus, Earth, and Mars, and then gone out to to Enceladus, Saturn's second-innermost satellite. The mission would have made clever use of tricks like planetary gravity boosts, in-atmosphere decelerations, and propellant harvesting to stretch its range. The senior Dyson was vexed by the problem of atomic contamination, though; even if it used the cleanest bombs available in the late fifties, an Orion launch would still introduce considerable amounts of toxic fission products into the Earth's magnetosphere. Dyson estimated that about ten people would die from atomic contamination for every Orion launch. This was about one percent of the estimated fatalities attributed to the atomic tests of the day. Instead of waiting for cleaner bombs to solve this problem, GA collaborated with friendly factions inside NASA--including rocket pioneer Wernher von Braun, who was an enthusiastic supporter of Orion--to discuss rocket-boosted Orion models. Proposals were made to either loft Orion into orbit wholesale or to boost it in pieces and conduct final assembly in orbit. Rocket-powered auxiliaries were also discussed; these would serve as landing craft and inter-Orion taxis.
In the end, of course, all of this work amounted to nothing. For various reasons -- nuclear test bans, lack of funding, and indifferent brass -- the Orion project was never permitted to conduct any of the nuclear test shots necessary to advance its work. The Orion staff made only a single successful test flight during the entire duration of the project, and this was conducted with 1m-diameter model powered by C4 charges. By 1959, Freeman Dyson had left the effort; he had seen that NASA wasn't going to budge away from Von Braun's giant rockets, and he knew that NASA was the only agency that would be able to support Orion. The project staggered on for four more years under Air Force funding, but the Air Force wasn't the right fit for Orion; no one could figure out a clear and present military use for all that lifting power. The USAF repeatedly approached NASA for money, but NASA was interested only in the conservatively incrementing known technologies, not in wholesale revolution. Orion was orphaned by 1965, its knowledge scattered through hundreds of classified documents and dozens of scientist's brains.
The book ends on a fascinating note, with modern-day retrospectives from various Orion staff. Some of them--including Ted Taylor--have renounced the idea of atomic weapons entirely. Some of them are convinced that Orion could never be made to work safely and reliably. Others believe that Orion is an idea whose time will come. NASA agrees with them, in some small measure; they're looking at Orion again as a space-exploration and asteroid-intercept technology. They're having a tough time finding details and data from the General Atomic project, though -- much of Orion's data is still classified. Dyson has had more success in hunting down those documents than NASA. When he contacted them in the course of his research, they begged him for copies!
I greatly enjoyed reading Project Orion. The only disappointment it held for me was its heavy reliance on Freeman Dyson's recollections, and the consequent weighting of the book towards Dyson's year of involvement. I suspect there's a lot of interesting detail missing from the latter six years of the project. That aside, Project Orion is an excellent high-level introduction to the characters, engineering, culture, and future of the Orion project, and an ideal jumpoff point to other readings about the atomic age.
You can purchase Project Orion: The True Story of the Atomic Spaceship from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
Evolution - Beyond the Popular Science
ny writes: "Patterns and Processes of Vertebrate Evolution is not popular science, but as a broad overview of the processes of evolutionary change it is reasonably accessible to non-specialists. I recommend it to anyone who has read Gould and Dawkins and Ridley and so forth and now wants something more substantial." This sounds like a book to interest anyone interested in current ideas in evolution -- read on below for Danny's complete review. Patterns and Processes of Vertebrate Evolution author Robert L. Carroll pages 448 publisher Cambridge University Press rating 9 reviewer Danny Yee ISBN 0-521-47809-X summary An uncompromising but accessable overview of modern evolutionary theory.In Patterns and Processes of Vertebrate Evolution Carroll undertook an ambitious project - nothing less than to update George Gaylord Simpson's classic works from the 1940s and 50s, Tempo and Mode in Evolution and The Major Features of Evolution. The result is a "broad picture" overview of the processes of evolutionary change, centred on paleontology but attempting to integrate that with the rest of biology. Patterns and Processes is aimed at students of paleontology and specialists in that and related fields, but it should also be considered by general readers: while it goes into quite involved details, they are always used to illustrate broader ideas and there is solid motivation for persevering with them. It is especially recommended to those unhappy with the lack of substance in popular debates over the theory of punctuated equilibrium, which Carroll critically appraises. Patterns and Processes is effectively illustrated with line-drawings and figures and has a useful glossary.
Carroll begins with an overview of current problems in evolutionary theory and in particular of the "gap" between short- and long-term processes in evolution, and between paleontology and other disciplines. He also discusses the choice of the vertebrates as a testing ground (which is picked up at the end of the book in a brief comparison with invertebrate metazoa, prokaryotes, protists, and vascular plants). He then provides an overview of theories of evolution, at the level of populations and species, from Darwin through Dobzhansky and Mayr to Gould and Eldredge.
Two chapters present some essential background. The first looks at evolution in modern populations, in particular at rates of evolution among the Galapagos island finches, where significant directional change does occur and doesn't appear to be correlated with speciation. The second considers some of the limitations of fossil evidence, the irregularity of fossilization and other stratigraphic issues and problems with the dating of events and processes and the measurement of rates of evolution.
Next come two case studies. The rates and directions of change among late Cenozoic mammals are examined with an eye to testing theories of punctuated equilibrium and species selection. Many lineages exhibit stasis "of particular characters and character complexes," but in none is there stasis of all characters and phyletic evolution is common. And "no major trends involving a complex of character changes can be demonstrated as having resulted from species selection." In contrast, the rapid radiation of the cichlid fish of the East African Great Lakes provides some evidence for species level evolution, and a bridge between macroevolution and microevolution.
Four separate chapters focus on related disciplines, in an attempt to reunify different fields. Taxonomy influences our basic concepts of evolutionary patterns as well as providing tools for discovering them; phylogenetic systematics (cladistics) has been particular influential, offering "an objective way to compare patterns of large-scale evolution from group to group and within groups over time" and forcing reconsideration of traditional naming schemes in the vertebrates. With evolutionary genetics Carroll presents some basic models, focusing on quantitative traits; he touches on the enigma of low selection coefficients and on genetic constraints.
Turning to developmental biology, Carroll surveys heterochrony, homeobox and Hox genes, and the phylotypic stage. He then applies this to the origin of craniates and skull and axial skeleton development, but above all to tetrapod limbs, to their origins, developmental processes, morphogenesis, and evolution. He also considers the integration of developmental biology with the evolutionary synthesis and its possible connections with macroevolution. Other constraints are imposed by physics: Carroll considers vertebrate locomotion in water, in the air, and on land, and touches on membrane transport, heat transfer, and size scaling.
Three chapters then look at large scale structure and patterns in evolution. A chapter on "major transitions" focuses on movements between environments: the most detailed study is of the origin of birds, but others cover the origins of terrestrial vertebrates, mosasaurs, and whales. Critical periods saw rates of change exceeding those in ancestral and descendant groups, but not those observed in modern populations; more importantly, directions of change were sustained for long periods. Turning to radiations, Carroll treats at length the Cambrian explosion and the radiation of early Cenozoic mammals: occurring in intervals of 10 million years or less; these differ from other, slower radiations into already occupied environments and "can certainly be attributed to factors that were not considered by Darwin". At the largest scales, vertebrate evolution has been irregular, driven by "forces" that can't be extrapolated from those operating at the level of populations and species: among them sustained evolutionary trends, continental drift, and mass extinctions.
Among Carroll's overall conclusions:
"Evolutionary forces that can be studied in modern populations are sufficiently powerful to account for the amount and rate of morphological change throughout the entire course of vertebrate history."
and
"Transitions between environments governed by major differences in physical constraints do not necessarily require special evolutionary processes."
but at the same time
"Large-scale patterns of evolution cannot be fully explained by processes that are directly observable at the level of modern populations and species.
... the patterns, rates, and controlling forces of evolution are much more varied than had been conceived by either Darwin or Simpson."
And macroevolution is essentially historical, with each major event "unique and worthy of detailed study in its own right".
Patterns and Processes in Vertebrate Evolution combines clear exposition of details - and what appears to be an encyclopedic knowledge of vertebrate history - with a willingness to tackle big questions. Sometimes Carroll seems to take both sides of debates, but that is a reflection of respect for complexity, not of unengaged fence-sitting. The result is a useful overview for students or outsiders; it also seems to have established itself as a minor classic within the field.
You might want to purchase Patterns and Processes in Vertebrate Evolution from bn.com or read some of Danny's other evolution book reviews. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
Perl and XML
prostoalex writes: "In the world of information technology, information, as the name suggests, is as important as technology itself. Erik T. Ray's and Jason McIntosh's Perl and XML is an attempt to take a look at perhaps the most popular languages for data processing. XML is an open-standard specification for documents, while Perl's natural powers lie in the area of data processing, and, as the name suggests, practical extracting and reporting." Prostalex has reviewed Perl & XML below; read on for his take on the book. Perl and XML author Erik T. Ray, Jason McIntosh pages 216 publisher O'Reilly rating 4/5 reviewer Alex Moskalyuk ISBN 059600205X summary Introduction to XML processing with PerlWith qualities like these, one might think that the marriage of Perl and XML would be total bliss, and the two languages would live happily ever after. In reality, however, the marriage has been far from perfect, and has produced an enormous number of kids: some uglier, some prettier, some simpler, some more sophisticated. Perl & XML is a good attempt to provide an overview of XML processing techniques existing nowadays in the Perl world.
The book does not even make an attempt to give you a brief introduction to Perl, and thus eliminates the weak point of trying to be another Camel book, as many publications in the field attempt to do. The logical assumption is that you know Perl and have heard something about XML. The first chapter of the book tells you why there are so many variations of Perl modules for XML processing, who is behind the well-known modules and why the interaction of Perl with XML has been rather disorganized. Indeed, a short visit to the XML section of CPAN brings up dozens of available modules, most of which characterized by some intimidating or non-descriptive names like SAX, Grove, YAWriter, etc.
The second chapter is titled "XML Recap"; the contents of the chapter, though, are good enough to be called "Concise but Informative Introduction to XML". Don't get your expectations too high -- O'Reilly has a whole bundle of books related just to learning XML, and thus a single chapter can barely touch the surface of what you might need to know, but it provides a good introduction to the world of markup, elements, namespaces, character encoding, processing instructions, schemas and transformations in XML.
Chapter 3 goes from theory to practice, and gives the reader an opportunity to try his first Perl script on XML data. The parsers covered in this chapter are XML::Parser, XML::LibXML, XML::XPath and XML::Writer. Document validation and well-formedness are also explained, and luckily enough this exact chapter is what O'Reilly Publishing decided to publish as a free chapter available on the Web. In this chapter, the authors make a distinction between stream-based and tree-based XML processing, and thus it doesn't come as a big surprise that the next four chapters are dedicated to examples of such processing.
Chapter 4, Event Streams, discusses the issues of processing XML document as a stream of data, where your application has to react to various input without really knowing where the end of the document is. XML::PYX and XML::Parser are covered in this chapter.
Chapter 5 shows examples of using SAX for XML processing with Perl, and also provides an overview of SAX history, which in a nutshell tells you that SAX has been designed for Java with its strong type checking and interface classes. It goes to explain that using it in Perl, which is known for its forgiving nature, thus requires a certain responsibility on the part of programmer. XML::Handler::YAWriter is also discussed in this chapter.
From stream processing, the authors take you to parsing XML trees. In this case, the document is assumed to be loaded into memory and Perl script can safely assume that the whole XML document has been loaded. XML::Simple, XML::SimpleObject, XML::TreeBuilder and XML::Grove are discussed in this chapter, with XML::Parser revisited.
DOM (Document Object Model) is another standard recommended by W3C and it is mostly concerned with how an XML document is stored in computer's memory. XML::DOM is discussed in this chapter with XML::LibXML revisited. The authors also provide a good overview of DOM standard.
The last three chapters deal with applications of Perl in XML data processing that go beyond stream and tree processing -- XPath and XSLT are explained with copious examples. Remember though, that both technologies have several-hundred-page books written about them, and thus several pages in a Perl and XML book can serve at best as good introduction. Chapter 9 deals with RSS and writing SOAP with Perl and XML, with XML::RSS and SOAP::Lite being explained. The last chapter deals with such issues as namespacing, subclassing and for Web designers provides a handy tutorial on converting your XML data into HTML via XSLT stylesheets.
The table of contents is posted on the publisher's Web site.
The first three chapters of the book are easy to read, since they provide a general overview of the data-processing world, history of XML with reference to appropriate events in the Perl community. However, data processing can hardly be called an exciting topic and thus bulk of the book is about routinely introducing particular modules, telling you what you can do with each, and then giving you an example of Perl code processing some XML document. The examples are apt and relate to some of data processing that some us had to do, i.e. shopping lists, address books, recipes, diaries of mad professors, etc.
The code examples are numerous, and if you get tired after looking at pages and pages of Perl lines, you better plan accordingly, as sometimes the subchapter consists of nothing more than an XML file and related Perl processing code with author's notes. For a 200-page book Perl and XML provides a great introduction into the area, provided you have good knowledge of Perl, using CPAN modules and just general knowledge about data processing. The book would probably have a more exact title if it had the word "Cookbook" in its name -- some might consider it a good reference. However, for those just getting acquainted with XML, another tutorial might be needed to get a full comprehension of XML's power.
You can purchase Perl & XML from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
Vi IMproved -- Vim
Craig Maloney writes: "Bram Moolenaar's Vim editor has quickly become the clone of choice for users of the venerable vi editor. Unfortunately, until recently finding documentation for the features of Vim meant spending quality time with the help files that come with Vim. While the help files are very good, a manual/tutorial of the Vim editor was needed. Other vi books included scant pages about the improvements of Vim over standard vi, but Vim isn't only a slight improvement to vi. Vi IMproved -- Vim is the manual Vim users need to help them get the full benefit out of Vim." Read on for more of Craig's review of this book below. Vi IMproved -- Vim author Steve Oualline pages 572 publisher New Riders rating 7.5/10 reviewer Craig Maloney ISBN 0735710015 summary The first and only published book covering the basic and advanced usage of Vi IMproved.
Learning to crawlBooks describing editors generally fall into two categories. The first category of books will describe a particular function (like moving through a file) with all the known ways for performing that function, ad nauseum. The second category distills the myriad of ways to perform that function into a handful of the most common or most useful ways. Vi IMproved -- Vim combines both methods with good results.
The first section of the book is entitled Basic Editing; this section introduces the reader to starting and using Vim effectively without getting too bogged down in the gory details of Vim's vi heritage. In the chapter on moving around, the author begins with two methods of movement. In the details portion, the author has the reader performing more complex movements. This is a good approach, much like learning how to walk before learning how to hop, skip, jump, and dance through your document. Unfortunately this approach makes using this book as a reference very difficult. I would read sections that I wanted to use later, only to realize I couldn't find the section again. Vi IMproved -- Vim more than makes up for this shortcoming with a generous appendix detailing the Normal Mode, Command Mode, and Visual Mode commands along with a well-designed quick-reference section.
Made to OrderOne of the strengths of Vim over other vi clones is Vim's ability to be used as a regular GUI application, and not just as an xterm-enhanced application.
Vi -- IMproved Vim shows not only how to use the GUI, but also how to customize the GUI to fit the reader's preferences. A good portion of this book deals with customizing Vim to suit the reader's style through the various parameters, menus, and GUI elements. Users who like their editors as stock as possible will find themselves skipping a lot of pages in this book. However even they will be tempted to try out some of the neat functions that pop up as they flip through the pages. The author conveys a sense of exploration, inviting users to experiment and try out new things with Vim.
ErrataUnfortunately, with vi and its clones, a single letter can mean the difference between moving through the document and deleting half of it by accident. Vi IMproved -- Vim is plagued with typos and errors, making this a difficult book for newbies to get into without having the errata sheet from http://vim.sf.net handy. It's understandable why a book like this would have some errors, especially with vi and Vim's terse keyboard commands.
ConclusionUsers of Vim will no doubt be thrilled with Vi IMproved -- Vim. Having a reference outside of the help menus in the program is a godsend for any user of Vim. Unfortunately the errors in this book mar what could have been the definitive book for Vim users, but for those who are starting out with Vim, or who would like to know more about Vim, this book is the perfect starting point and reference. The book covers the 5.x series of editors, but that shouldn't be a problem for most people looking to get started with the 6.x series.
If you're using Vim, you need Vi IMproved -- Vim.
You can purchase Vi IMproved from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
Perl & LWP
When direct database access to the information you need isn't available, but web pages with the right data are, you might pursue "screen-scraping" -- fetching a web page and scanning its text for the appropriate pieces of text in order to do further processing. LWP (Library for WWW access in Perl) is a collection of module to help you do this. mir writes: " Perl & LWP is a solid, no-nonsense book that will teach you how to do screen-scraping using Perl. It describes how to automatically retrieve and use information from the web. An introduction to LWP and related modules from simple to advanced uses and various ways to extract information from the returned HTML." Perl & LWP author Sean M. Burke pages 264 publisher O'Reilly and Associates rating 9 reviewer mir ISBN 0596001789 summary Excellent introduction to extracting and processing information from web sites.
The good: The book has a nice style and good coverage of the subject, includes introduction to all the modules used, reference material and includes good, well-developed examples. I really liked the way the authors describe the basic methodology to develop screen-scraping code, from analyzing an HTML page to extracting and displaying only what you are interested in.
The bad: Not much is bad, really. Some chapters are a little dry, though, and sometimes the reference material could be better separated from the rest of the text. The book covers only simple access to web sites; I would have liked to see an example where the application engages in more dialogue with the server. In addition, the appendixes are not really useful. More Info:If it had not been published by O'Reilly, Perl and LWP could have been titled Leveraging the Web: Object-Oriented techniques for information re-purposing, or Web Services, Generation 0. An even better title would have been Screen-scraping for fun and profit: one day we might all use Web Services and easily get the information we need from various providers using SOAP or REST, but in the meantime the common way to achieve this goal is just to write code to connect to a web server, retrieve a page and extract the information from the HTML. In short, "screen-scraping." This will teach you all about using Perl to get Web pages and extract their "substantifique moëlle" (the pith essence, the essentials) for your own usage. It showcases the power of Perl for that kind of job, from regular expressions to powerful CPAN modules.
At 200 pages, plus 40 pages of appendices and index, this one is part of that line of compact O'Reilly books which covers only a narrow topic in each volume but which covers those topics well. Just like Perl & XML , its target audience is Perl programmers who need to tackle a new domain. It gives them a toolbox and basic techniques that to provide a jump start and avoid many mistakes.
Perl & LWP starts from the basics: installing LWP, using LWP::Simple to retrieve a file from a URL, then goes on to a more complete description of the advanced LWP methods for dealing with forms and munging URLs. It continues with five chapters on how to process the HTML you get, using regular expressions, an HTML tokenizer and HTML::TreeBuilder, a powerful module that builds a tree from the HTML. It goes on with an explanation of how to allow your programs to access sites that require cookies, authentication or the use of a specific browser. The final chapter wraps it all up in a bigger example: a web-spider.
The book is well-written and to-the-point. It is structured in a way that mimics what a programmer new to the field would do: start from the docs for a module, play with it, write snippets of code that use the various functions of the module, then go on to coding real-life examples. I particularly liked the fact that the author often explains the whys, and not only the hows, of the various pieces of code he shows us.
It is interesting to note that going from regular expressions to ever more powerful modules is a path followed also by most Perl programmers, and even by the language itself: when Perl starts being applied to a new domain first there are no modules, then low-level ones start appearing, then, as the understanding of the problem grows, easier-to-use modules are written.
Finally I would like to thank the author for following his own advice by including interesting examples and above all for not including anything about retrieving stock-quotes.
Another recommended book on the subject is Network Programming with Perl by Lincoln D. Stein, which covers a wider subject but devotes 50 pages to this topic and is also very good.
Breakdown by chapter:- Introduction to Web Automation (15 pages): an overview of what this book will teach you, how to install Gisle Aas' LWP, some interesting words of caution about the brittleness of screen-scraping code, copyright issues and respect for the servers you are about to hammer, and finally a very simple example that shows the basic process of web automation.
-
Web Basics (16p): describes how to use LWP::Simple, an easy way to do some simple processing.
-
The LWP Class Model (17p): a slightly steeper read, closer to a reference than to a real introduction that lays out the ground work for the good stuff ahead.
-
URLs (10p): another reference chapter, this one will teach you all you can do with URLs using the URI module. Although the chapter is clear and complete it includes little explanation as to why you will need to process URLs and it is not even mentioned in the introduction roadmap.
-
Forms (28p): a complete and easy to read chapter. It includes a long description of HTML form fields that can be used as a reference, 2 fun examples (how to get the number of people living in any city in the US from the Census web site and how to check that your dream vanity plate is available in California) and how to use LWP to upload files to a server. It also describes the limits of the technique. I appreciated a very educative section showing how to go from a list of fields in a form to more and more useful code that queries that form.
-
Simple HTML processing with Regular Expressions (15p): how to extract info from an HTML page using regexps. The chapter starts with short sections about various useful regexp features, then presents excellent advice on troubleshooting them, the limits of the technique and a series of examples. An interesting chapter, but read on for more powerful ways to process HTML. On the down side, I found the discussion of the s and m regexp modifiers a little confusing.
-
HTML processing with Tokens (19p): using a real HTML parser is a better (safer) way to process HTML than regexps. This chapter uses HTML::TokeParser. It starts with a short, reference-type intro, then a detailed example. Another reference section describes the methods an alternate way of using the module, with short examples. This is the kind of reference I find the most useful, it is the simplest way to understand how to use a module.
-
Tokenizing walkthrough (13p) a long Example showing step-by-step how to write a program that extracts data from a web site, using HTML::TokeParser. The explanations are very good, showing _why_ the code is built this way and including alternatives (both good and bad ones). This chapter describes really well the method readers can use to build their code.
-
HTML processing with Trees (16p): even more powerful than an HTML tokenizer: HTML::TreeBuilder (written by the author of the book) builds a tree from the HTML. This chapter starts with a short reference section, then revisits 2 previous examples of extracting information from HTML using HTML::TreeBuilder.
-
Modifying HTML with Trees (17p): More on the power of HTML::TreeBuilder: a reference/howto on the modification functions of HTML::TreeBuilder, with snippets of code for each function I really like HTML::TreeBuilder BTW, it is simple yet powerful.
-
Cookies, Authentication and Advanced Requests (13p): Back to that LWP business... this chapter is simple and to-the-point: how to use cookies, authentication and referer to access even more web-sites. I just found that it lacked a description on how to code a complete session with cookies.
-
Spiders (20p): a long example describing how to build a link-checking spider. It uses most of the techniques previously described in the book, plus some additional ones to deal with redirection and robots.txt files.
-
Appendices
I think the Appendices are actually the weakest part of the book, most of them are not really useful, apart from the ASCII table (every computer book should have an ASCII table IMHO ;--).
- A. LWP modules (4p): the list and one line description of all modules in the LWP library, long and impressive! But not very useful,
- B. HTTP status (2p): available elsewhere but still pretty useful,
- C. Common MIME types (2p): lists both the usual extension and the MIME type,
- D. Language Tags (2p): the author is a linguist ;--)
- E. Common Content Encodings (2p): character set codes,
- F. ASCII Table (13p): a very complete table, includes the ascii/unicode code, the corresponding HTML entity, description and glyph,
- G. User's View of Object-Oriented Modules (11p): this is a very good idea. A lot of Perl programmers are not very familiar with OO, and in truth they don't need to be. They just need the basics of how to create an object in an existing class and call methods on it. I found the text too be sightly confusing though, in fact I believe it is a little too detailed and might confuse the reader.
- Index (8p): I did not think the index was great (code is listed with references to 5 seemingly random pieces of code, type=file, HTML input element is listed twice, with and without the comma...), but this is not the kind of book where the index is the primary way to access the information. The Table of Content is complete and the chapters are focused enough that I have never needed to use the index.
-
User Friendly 1.0
Craig Maloney writes with the review below of the latest release from User Friendly, laughware which finally hit 1.0 earlier this year. Read on for Craig's impressions of the book, which is loaded with more than just reprints of the UF comics you've seen on the web. User Friendly 1.0 author J.D. "Illiad" frazer pages 112 publisher Plan Nine Publishing rating 9/10 reviewer Craig Maloney ISBN 1929462395 summary An �autobiographical� look at the thoughts and ideas that make up the User Friendly comic strip and community.
Greetings Cave DwellersArguably one of the most successful and popular online comics is User Friendly. With three full-length books in print, a community of dedicated readers, and merchandise that has been featured on major computer celebrities globally, one would have a hard time disputing the popularity and the success of User Friendly. Over the past four years, User Friendly has grown from a small inter-office comic into an internet destination and a community of loyal readers. User Friendly 1.0 collects not only the comics that have not been published before (O'Reilly didn't include them in the previous books because of layout and other considerations), but also various essays, thoughts, illustrations, and other comics not necessarily related to User Friendly.
It All Began HereThe first section of the book contains the comics that didn't make it in the first User Friendly book (User Friendly, published by O'Reilly and Associates). These are the comics that introduce the crew of Columbia Internet (the friendliest, hardest-working and most neurotic little internet service provider), and births Dust Puppy (from a server that hasn't been upgraded in a year). The drawings are more primitive, with four frames of story rather than the three we enjoy today, but don't let that detract you from the humor and the sheer fun of the comics. Sure, they're not the same as what you're expecting from the current dailies, but they have a certain charm all their own.
Introduce Yourself / Essay ContestThe latter half of the book introduces the characters of User Friendly and their real-world analogues. Yes folks, the secret is out and revealed for the first time; User Friendly is based on real-people, although Illiad is quick to point out the people the characters are based on aren't QUITE as neurotic as their cartoon counterparts. Illiad also takes the latter part of the book to talk about his views on art, drawing women, community schisms, and the practical joke of 1999 and its aftermath. These essays show Illiad as a cartoonist who is not only humbled and flattered by the acceptance of his work, but also an artist who appreciates the community that has evolved from that work. Illiad appreciates his fans, and it's that appreciation of the fans that makes a book like User Friendly 1.0 not only possible, but also readable.
BonusAs an added bonus, User Friendly 1.0 also features several SuSE Friendly comics (strips done for SuSE) and the crossover between User Friendly and Sluggy Freelance (in case you missed it). The strips are a nice treat for the fans and I have User Friendly to thank for my Sluggy Freelance addiction. :)
For the fansIf you don't like User Friendly, you've already skipped this review, and won't buy this book. That's quite all right, as this book isn't meant for you anyway. For the people who are fans of the comic, or who have a passing interest in the behind the scenes thoughts and ideas of User Friendly (or who want to see the early comics and the crossover appearances), this book is a no-brainer purchase. The writing is genuine, and having the rest of the comics in print is a bonus. User Friendly 1.0 is a labor of love for the community, and the community won't be disappointed.
You can purchase User Friendly 1.0 from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
Python Programming with the Java Class Libraries
David Kennedy contributes the review below of Richard Hightower's new book Python Programming with the Java Class Libraries, subtitled A Tutorial for Building Web and Enterprise Applications with Jython, writing "This book tries to be suitable for both new and experienced programmers, and suffers from this decision. However, it presents all the central programming concepts clearly and is a decent primer on Jython. It is illustrated with copious code, and covers plenty of advanced topics. Worth reading if you're interesting in the Jython language. Oh, and ignore the sub-title." Python Programming with the Java Class Libraries author Richard Hightower pages 448 publisher Addison-Wesley rating B+ reviewer David Kennedy ISBN 0201616165 summary Solid technical primer on Jython. Probably best for those with some comp. sci. experience.
First Impressions We all know not to judge a book by its cover, but let's be honest; when looking at a bookshelf groaning with Learn ${technology} in 21 Days! and ${technology} for Utter Fools, it can be useful to have a filter to apply.I have the following book-cover rules:
- Ignore everything with a cluttered cover. If I find the cover confusing, I doubt the content will be better.
- Look for an O'Reilly "animal" cover.
- Look for an "Addison-Wesley Professional Computing Series" cover. These tend to be white, with a blue stripe down the side, usually accented with magenta. C++ programmers especially should have several titles from this excellent series on their shelves.
Given my third rule, I am dismayed to see that Addison-Wesley have chosen to go with a cartoonish cover featuring a luminescent python constricting a brown sack marked "Java Beans." It's not the worst cover art I've ever seen, but I have to admit that I probably wouldn't have noticed it on the shelf. I know this seems like a minor criticism, but it is a crowded market.
Target audience So, who is this book targeted at? The blurb and publicity material make it clear that the volume has a split personality, seeking to satisfy both new programmers and experienced programmers.I find this an odd decision, and while I can understand how it can be tempting to address both audiences at once, the end result feels more than a little fragmented. Let's have a look at the two cases.
If I was a new programmer, or was merely new to Python, would I choose this book over something more obviously targeted to me like the O'Reilly title, Learning Python (Mark Lutz and David Ascher)? I think I'd go with the O'Reilly title here if I was a novice, I mean, doesn't "building Web and Enterprise Applications" sound a little ambitious? Would a new programmer even understand the sub-title? (I've been working for over four years and I'm still not sure what exactly Enterprise is supposed to mean!)
Similarly, if I was an experienced programmer, perhaps in Java, would I pick up this book to get a handle on Python? Well, I might, but I might be dismayed at the amount of material on simple matters like if statements.
This is a pity, as the book probably works better for an experienced programmer, or at least one who has done some work in other languages. The sidebars are usually interesting and technically dense, delivering maximum information in limited space.
I think my main problem with the decision to deliberately split the readership into two target audiences is that I've seen it done better. For example, as mentioned above, Learning Python is probably the main competing title. It too addresses both the novice and experienced programmers, but does so in a much more transparent way. Rather than prefixing sections with "Advanced topic," thus alienating some readers, the more natural box-out approach is used. This gives a much less schizophrenic feel to the text, with the reader able to read the box-outs as and when they feel interested and able to understand the material. When reading Python Programming with ..., I sometimes felt like I was being directed in what to read.
I've been quite negative about this split up to this point, and would like to emphasize that the latter part of the book doesn't really suffer from this problem. Once assured that the new programmer has the basics under his belt, the text assumes a much more natural flow, with the standard optional box-outs. However, I should say that some of the material in the later chapters is non-trivial, and the smoother presentation of the more difficult material leads me to suggest that the author would have been better served by targeting the experienced programmer alone.
Let's look at the publicity blurb and contents in more detail:
" The goal of this 'first of its kind' book is to teach new programmers some of the basics of Python programming. Using skill-based exercises and interactive programming sessions, it helps new programmers develop an understanding of concepts and practical techniques. For experienced programmers, the book demonstrates Python's breadth of capabilities and demonstrates the ways that Python interfaces with the Java APIs for professional application development.
Topics include:
- Fundamental programming concepts, including statements, expressions, interpreters, and compilers.
- Python basics, including operators, string formatting, namespaces, classes, errors, and exceptions.
- Object-oriented programming concepts.
- File input/output.
- Python's intrinsic functions.
- Formatting, parsing, and manipulating strings.
- Interfacing with the Java APIs and working with Java Streams.
- Using Python and Java Swing to create GUIs.
- Working with SQL and JDBC.
- Python and Java applets."
This is a fair representation of the contents. As you can see the poor new programmer is soon expected to work with some non-trivial examples, with the streaming, database and applet sections all being welcome. The material presented particularly benefits from the fairly long example applications.
In addition, I feel that the appendices are interesting and worthy of mention.
- Installing Jython on Windows
-
Installing Jython on Linux.
Both installation guides are comprehensive and ensure that installation of the language itself shouldn't present any barrier to the novice, or those who are used to having a sysadmin install their work environment.
-
The Power of Scripting.
This is a nice section discussing the blurry distinction between programming and scripting languages, why you might want to script and use Java at the same time, what alternative languages are out there, and why the author feels Jython is interesting and useful.
-
Java and Python: A Comparison
This is an interesting section driving home why Jython is a nice alternative to Java for some applications. It presents some mini-applications, weighted towards Jython's end of the toolbox. They are a small GUI application, a statistics application and some string parsing.
-
Regular Expressions.
A decent workshop on Jython's regular expression facilities.
I know that having a few mistakes is unavoidable, but there are a few howlers that slipped past the editing process. I particularly dislike this in an introductory book as it causes confusion in the reader and impedes his absorption of the material.
Some of the errors are typographical, and more than a few involve tabbing in code samples. Normally this would be merely irritating, but forgivable. Unfortunately, the significance of tabbing in Python makes this a much bigger problem for the novice reader!
There are also some properly editorial errors. As an example, the first time we see a user-defined function is in Chapter 4, on control flow. One of the canonical examples is wheeled out, a function to return (min, max, range) given a sequence of numbers.
This example is a nice one and is a good indication of why I generally like this book -- it has the user working with collections and mixed types right from the start, doesn't make a big deal out of defining a function, and includes a nice little box-out on efficiency. It also jumps right to a discussion on intrinsic operations and making sure to use them as they're more efficient and well-tested. It also blows up right after that, confusing the name of the argument list with the intrinsic function name and the name of the rewritten function. I wasn't able to untangle the paragraph until I saw the code. Bad editor, no treats!
So, is this book any good? Yes.Python Programming with the Java Class Libraries is a well above average introduction to using Jython, best suited to interested readers already possessing some Java experience and a decent computer science background. It doesn't hesitate to tackle more complex topics, often with significant amounts of code (good thing), and the author demonstrates a wide knowledge of the field with many interesting box-outs often leading to further reading.
Readers completely new to the programming field will still find this book useful, but may well be intimidated by the advanced material scattered all over the first few chapters and the steep learning curve.
If that is the case, I would recommend that they stick with something like Learning Python should they wish to learn Python specifically, or any of the many other introductory texts on the market if they don't.
Those new to the field who choose to stick with this book will find that there is sufficient advanced material to ensure that the book remains valuable to them for some time to come.
Disclaimer There are two things I'd like to make clear:- I did not pay for this book. I was given a review copy by the nice people at Addison-Wesley publishers. The author put my name on his list following a review of his previous title. This was decent of him as my previous review had some negative comments.
- I'm not a experienced Python developer. My background is C++ and J2EE. A more experienced Python user may have additional issues with the coding style presented. I did not feel particularly able to judge beyond the basics.
You can purchase Python Programming with the Java Class Libraries from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
Python Programming with the Java Class Libraries
David Kennedy contributes the review below of Richard Hightower's new book Python Programming with the Java Class Libraries, subtitled A Tutorial for Building Web and Enterprise Applications with Jython, writing "This book tries to be suitable for both new and experienced programmers, and suffers from this decision. However, it presents all the central programming concepts clearly and is a decent primer on Jython. It is illustrated with copious code, and covers plenty of advanced topics. Worth reading if you're interesting in the Jython language. Oh, and ignore the sub-title." Python Programming with the Java Class Libraries author Richard Hightower pages 448 publisher Addison-Wesley rating B+ reviewer David Kennedy ISBN 0201616165 summary Solid technical primer on Jython. Probably best for those with some comp. sci. experience.
First Impressions We all know not to judge a book by its cover, but let's be honest; when looking at a bookshelf groaning with Learn ${technology} in 21 Days! and ${technology} for Utter Fools, it can be useful to have a filter to apply.I have the following book-cover rules:
- Ignore everything with a cluttered cover. If I find the cover confusing, I doubt the content will be better.
- Look for an O'Reilly "animal" cover.
- Look for an "Addison-Wesley Professional Computing Series" cover. These tend to be white, with a blue stripe down the side, usually accented with magenta. C++ programmers especially should have several titles from this excellent series on their shelves.
Given my third rule, I am dismayed to see that Addison-Wesley have chosen to go with a cartoonish cover featuring a luminescent python constricting a brown sack marked "Java Beans." It's not the worst cover art I've ever seen, but I have to admit that I probably wouldn't have noticed it on the shelf. I know this seems like a minor criticism, but it is a crowded market.
Target audience So, who is this book targeted at? The blurb and publicity material make it clear that the volume has a split personality, seeking to satisfy both new programmers and experienced programmers.I find this an odd decision, and while I can understand how it can be tempting to address both audiences at once, the end result feels more than a little fragmented. Let's have a look at the two cases.
If I was a new programmer, or was merely new to Python, would I choose this book over something more obviously targeted to me like the O'Reilly title, Learning Python (Mark Lutz and David Ascher)? I think I'd go with the O'Reilly title here if I was a novice, I mean, doesn't "building Web and Enterprise Applications" sound a little ambitious? Would a new programmer even understand the sub-title? (I've been working for over four years and I'm still not sure what exactly Enterprise is supposed to mean!)
Similarly, if I was an experienced programmer, perhaps in Java, would I pick up this book to get a handle on Python? Well, I might, but I might be dismayed at the amount of material on simple matters like if statements.
This is a pity, as the book probably works better for an experienced programmer, or at least one who has done some work in other languages. The sidebars are usually interesting and technically dense, delivering maximum information in limited space.
I think my main problem with the decision to deliberately split the readership into two target audiences is that I've seen it done better. For example, as mentioned above, Learning Python is probably the main competing title. It too addresses both the novice and experienced programmers, but does so in a much more transparent way. Rather than prefixing sections with "Advanced topic," thus alienating some readers, the more natural box-out approach is used. This gives a much less schizophrenic feel to the text, with the reader able to read the box-outs as and when they feel interested and able to understand the material. When reading Python Programming with ..., I sometimes felt like I was being directed in what to read.
I've been quite negative about this split up to this point, and would like to emphasize that the latter part of the book doesn't really suffer from this problem. Once assured that the new programmer has the basics under his belt, the text assumes a much more natural flow, with the standard optional box-outs. However, I should say that some of the material in the later chapters is non-trivial, and the smoother presentation of the more difficult material leads me to suggest that the author would have been better served by targeting the experienced programmer alone.
Let's look at the publicity blurb and contents in more detail:
" The goal of this 'first of its kind' book is to teach new programmers some of the basics of Python programming. Using skill-based exercises and interactive programming sessions, it helps new programmers develop an understanding of concepts and practical techniques. For experienced programmers, the book demonstrates Python's breadth of capabilities and demonstrates the ways that Python interfaces with the Java APIs for professional application development.
Topics include:
- Fundamental programming concepts, including statements, expressions, interpreters, and compilers.
- Python basics, including operators, string formatting, namespaces, classes, errors, and exceptions.
- Object-oriented programming concepts.
- File input/output.
- Python's intrinsic functions.
- Formatting, parsing, and manipulating strings.
- Interfacing with the Java APIs and working with Java Streams.
- Using Python and Java Swing to create GUIs.
- Working with SQL and JDBC.
- Python and Java applets."
This is a fair representation of the contents. As you can see the poor new programmer is soon expected to work with some non-trivial examples, with the streaming, database and applet sections all being welcome. The material presented particularly benefits from the fairly long example applications.
In addition, I feel that the appendices are interesting and worthy of mention.
- Installing Jython on Windows
-
Installing Jython on Linux.
Both installation guides are comprehensive and ensure that installation of the language itself shouldn't present any barrier to the novice, or those who are used to having a sysadmin install their work environment.
-
The Power of Scripting.
This is a nice section discussing the blurry distinction between programming and scripting languages, why you might want to script and use Java at the same time, what alternative languages are out there, and why the author feels Jython is interesting and useful.
-
Java and Python: A Comparison
This is an interesting section driving home why Jython is a nice alternative to Java for some applications. It presents some mini-applications, weighted towards Jython's end of the toolbox. They are a small GUI application, a statistics application and some string parsing.
-
Regular Expressions.
A decent workshop on Jython's regular expression facilities.
I know that having a few mistakes is unavoidable, but there are a few howlers that slipped past the editing process. I particularly dislike this in an introductory book as it causes confusion in the reader and impedes his absorption of the material.
Some of the errors are typographical, and more than a few involve tabbing in code samples. Normally this would be merely irritating, but forgivable. Unfortunately, the significance of tabbing in Python makes this a much bigger problem for the novice reader!
There are also some properly editorial errors. As an example, the first time we see a user-defined function is in Chapter 4, on control flow. One of the canonical examples is wheeled out, a function to return (min, max, range) given a sequence of numbers.
This example is a nice one and is a good indication of why I generally like this book -- it has the user working with collections and mixed types right from the start, doesn't make a big deal out of defining a function, and includes a nice little box-out on efficiency. It also jumps right to a discussion on intrinsic operations and making sure to use them as they're more efficient and well-tested. It also blows up right after that, confusing the name of the argument list with the intrinsic function name and the name of the rewritten function. I wasn't able to untangle the paragraph until I saw the code. Bad editor, no treats!
So, is this book any good? Yes.Python Programming with the Java Class Libraries is a well above average introduction to using Jython, best suited to interested readers already possessing some Java experience and a decent computer science background. It doesn't hesitate to tackle more complex topics, often with significant amounts of code (good thing), and the author demonstrates a wide knowledge of the field with many interesting box-outs often leading to further reading.
Readers completely new to the programming field will still find this book useful, but may well be intimidated by the advanced material scattered all over the first few chapters and the steep learning curve.
If that is the case, I would recommend that they stick with something like Learning Python should they wish to learn Python specifically, or any of the many other introductory texts on the market if they don't.
Those new to the field who choose to stick with this book will find that there is sufficient advanced material to ensure that the book remains valuable to them for some time to come.
Disclaimer There are two things I'd like to make clear:- I did not pay for this book. I was given a review copy by the nice people at Addison-Wesley publishers. The author put my name on his list following a review of his previous title. This was decent of him as my previous review had some negative comments.
- I'm not a experienced Python developer. My background is C++ and J2EE. A more experienced Python user may have additional issues with the coding style presented. I did not feel particularly able to judge beyond the basics.
You can purchase Python Programming with the Java Class Libraries from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
Genome
No One You Know writes "I just finished reading an excellent book by Matt Ridley called Genome. The book is divided into 23 chapters, one for each chromosome. The author picks a significant gene from each chromosome to focus on, and explores a myriad of topics such as why we age, how life forms assemble themselves into full-grown adults starting from a blob of cells, how we form and store new memories, and how gene therapy works. I found the book very well-written, highly interesting, and quite accessible. Anyone that is interested in knowing more about themselves and all life on Earth would do themselves a service to read it." Read on below for the remainder of NOYK's review. Genome author Matt Ridley pages 352 publisher Harper-Collins rating Excellent reviewer No One You Know ISBN 0060932902 summary The author selects one gene from each chromosome, and uses it to explain who we are and where we came from.One thing Ridley discusses is how closely related humans are to many other species that seem quite unrelated. We share 99% of our genetic code with chimpanzees, which is more or less common knowledge. But we are also very similar to many other organisms, such as fruit flies. By comparing the genomes of different life forms, we can tell not only what creatures (and plants) we are related to, but historically when the genome split. Ridley explores possible explanations and ramifications of this knowledge (it's pretty hard to refute evolution with the facts he presents).
One of my favourite chapters in the book deals with self-assembly. How in God's green Earth do we develop into full-grown adults with a trillion cells, having started out as a tiny blob of a handful of cells? There are some really surprising discoveries here, such as the fact that the genes that lay out the general physical form of the body are laid out in order -- the gene for the head first, then the upper body, etc., ending with the rear. Another interesting fact is that the genes that define the front and back of a fruit fly also exist in humans, but are switched around. So the gene that defines the back of a fruit fly defines the front of a human, and vice versa. This means that at some point in our evolutionary history, one creature decided to walk on its front, and another decided to walk on its back.
Another chapter deals with why we age. Less than 50 cell divisions are required for us to grow into adults, but throughout life cell divisions are necessary for maintenance and repair. Each cell contains a complete copy of the genome; when a cell divides, it must make another copy for the new cell. However, the very beginning and end of each chromosome are not copied. In order to not lose important data, each chromosome has a long string of junk at the beginning and end. But with each cell division, a little more of the junk is lost and you get closer to cutting off the real data in the middle. In this way we've got a kind of built-in obsolescence; we are designed to live just long enough to bear and rear children.
One chapter is devoted to memory: how we create new memories and how we store them. Also discussed is the difference between instinct and learned knowledge, and why we need both. It turns out that language is a genetic thing; we have an instinctive capacity for language and we pick it up very easily as we develop. But then why is the vocabulary of a language not in our genes? Vocabulary is learned knowledge because if it weren't, it would be difficult for us to incorporate new words since they wouldn't be instinctive. Basically, as I understand it, static knowledge is often recorded in our genes (therefore becoming instinct), while dynamic knowledge must be learned.
Ridley dedicates one chapter to gene therapy and modification: how it works and the ethical concerns. I was curious as to how injecting a new or repaired gene into the cell of an organism could affect anything but that one cell. It turns out there are enzymes that will replicate the new DNA strand and go around distributing it to other cells -- a virus! Geneticists use the code from a virus that causes replication (leaving the bad stuff of course) and combine it with the DNA they want to repair or replace in an animal. They then "infect" the animal with the new code.
In short, I found Matt Ridley's "Genome" a fascinating book. The mapping of the human genome was a huge milestone in human history, and Ridley does an excellent job of using it to explain in layman's terms who and what we are. What we don't know about the genome dwarfs what we do know of course, and Ridley makes no bones about that point. But the bit that we do know just makes you sit back in awe. Ridley has a talent for translating his own enthusiasm for the subject to the written word.
You can purchase Genome from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
Web Development with Apache and Perl
davorg writes "In the dim and distant past when I first started doing web development, there was a book that everybody had a copy of. It was called 'How to Set Up and Maintain a Web Site' and it was by Lincoln Stein. The reason why everyone owned (and, more importantly, read) it was that it contained a complete high-level snapshot of everything you needed to know in order to run a web site at that time. Unfortunately, after a second edition in 1997 the book hasn't been updated. I suppose that the subject area has grown so much that no-one thought that a complete overview would be too high-level to be useful. They were probably right." davorg's review continues below. Web Development with Apache and Perl author Theo Petersen pages 400 publisher Manning rating 8 reviewer davorg ISBN 1-930110-06-5 summary Good Overview of the State of the Art in Open Source Web DevelopmentI mention Stein's book because that's what this new book reminded me of most (that, by the way, is a huge compliment). Petersen realises that an overview of the whole web development area would be difficult to write (and, ultimately, unhelpful) so he restricts himself to a subset of the available technologies - Perl and Apache - and gives a thorough review of the state of the art of web development in these areas.
But before he gets into the details of Apache and Perl, in chapter 1 Petersen takes a look at the wider world of Open Source Software and in the process presents one of the best arguments I've seen in print for why a company should choose Open Source Software. In chapters 2 and 3 he takes the same approach with web servers and scripting languages, giving compelling reasons for choosing Apache and Perl.
Having chosen his architecture, in part 2, Petersen moves on to looking at some common tools for web development. Chapter 4 looks at databases. The two main Open Source Databases (MySQL and PostgreSQL) are compared and MySQL is chosen as the basis for the rest of the examples. Chapter 5 discusses the shortcomings of the standard CGI architecture and introduces mod_perl as an alternative. This is a good introduction to a technology that some people can find hard to get to grips with. Petersen takes us through the use of Apache::Registry before moving on to the complexity and power of mod_perl handlers.
Chapter 6 looks at the importance of security in web applications and discusses in some depth the problems of user authentication and the use of SSL for secure data transmission. Chapter 7 looks at ways to separate content from presentation. First we look briefly at server-side includes, but the majority of the chapter is taken up with a review of the various templating systems that are available for Perl. The chapter finishes with a detailed look at two of the most popular templating solutions - HTML::Mason and Template Toolkit.
Part 3 of the book looks at three different types of web site in great detail. In each case Petersen uses the examples to take a brief survey of a number of the existing tools. For example chapter 9 looks at a community web site and contains information about a number of web-based forums and chat rooms. It also takes an extended look at Slashcode the software that runs Slashdot. Chapter 9 takes a similar approach for intranet sites and Chapter 10 for online stores.
In part 4 we take a longer term view of a web site. Chapter 11 looks at content management systems and chapter 12 lookat at performance tuning. Both of these chapters are full of useful advice on how to make running a web server as painless as possible.
I think this is a very useful book to have on your bookshelf. Anyone who is developing web applications using Apache and Perl will find something useful in the book. It should be obvious that in order for a single book to cover so much ground, sometimes there isn't quite as much technical detail as you might like, but there is a good bibliography that will show you where to go for more information. In my opinion the high-level approach makes the book particularly useful for a couple of groups of potential readers. Firstly I think it makes a great introduction to the subject for someone coming to Apache and Perl for the first time. Secondly (and perhaps most importantly) I can see the book (in particular the first three chapters) being very useful reading material for a manager who is making a decision between using Open Source Software or some proprietary technology.
You can purchase Web Development with Apache and Perl from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
Tracking Hackers
Anton Chuvakin submitted this review of Lance Spitzner's Honeypots: Tracking Hackers. Spitzner has previously contributed to a book and many online documents about the Honeynet Project. Chuvakin starts off, "If you liked "Know Your Enemy" by the Honeynet Project, you will undoubtedly like Lance Spitzner's (the Honeynet Project founder) new book "Tracking Hackers" much more. In fact, even if you did not quite like "Know Your Enemy", you will likely be deeply impressed with the new book on honeypots and their use for tracking hackers." "Honeypots: Tracking Hackers" author Lance Spitzner pages 480 publisher AWL rating 5/5 reviewer Anton Chuvakin, Ph.D, GCIA ISBN 0321108957 summary using honeypots to track electronic intrudersThe structure of the book is different from the "Know Your Enemy": Lance starts from the very beginning - namely, his first honeypot penetration experience and then goes on to talk about all aspects of honeypots. In-depth and structured background on honeypot technology is provided. Honeypots are sorted by the level of interaction with attacker they are able to provide.
In addition, the book covers the business benefits of using honeypots. By classifying the value of honeypots into prevention, detection and response (exactly as done in Honeynet Project white papers) Lance Spitzner analyzes the honeypot technology contributions to an overall security posture. Also, the book describes the differences between the research and production honeypots and demonstrates the benefits of both for various deployment scenarios.
A good part of the book is devoted to particular honeypot solutions: 'honeyd' by Niels Provos and several commercial honeypots with detailed explanation of how they work. For example, there is a clear description of ARP spoofing and how it is used by the 'honeyd' honeypot daemon. An interesting chapter on "homegrown" honeypot solutions (such as the ones used to capture popular worms of 2001) sheds some light on the simplest honeypots that can be built for specific purposes, such as to capture a popular attack by means of a simple port listener. Use of UNIX chroot() jail environment for honeypots is also analyzed.
Of course, a special chapter is devoted to honeynets - Project's primary weapon in a war against malicious hackers. The Generation II (GenII) honeynet technology is first introduced in a book. The chapter not only lists honeynet deployment and maintenance suggestions, but also talks about the risks of honeynets.
Another great feature of the book is a chapter on honeypot implementation strategies and methods, such as using NAT to forward traffic to a honeypot and DMZ honeypot installation. The information is then further demonstrated using the two full honeypot case studies, from planning to operation.
What is even more important, maintaining the honeypot architecture is covered in a separate chapter. Honeypots are a challenge to run, mainly since no 'lock it down and maintain state' is possible. One has to constantly build defenses and hide and dodge attacks that cannot be defended against.
"Tracking hackers" also has a "Legal Issues" chapter, written with a lot of feedback from the DoJ official. It dispels some of the misconceptions about the honeypots such as the "entrapment" issue, summarizes wiretap laws and related data capture problems.
The book describes an almost cutting edge of the honeypot research and technology. To truly get the cutting edge and to know about the Honeynet Project latest activities in detail, wait for the second edition of "Know Your Enemy" (coming out next year). In "Tracking Hackers" Lance makes some predictions about honeypots in "Future of Honeypots" chapter. Honeypot-based early warning system and distributed deployments, analysis of new threats and expanding research applications, making honeypots easier to deploy and maintain are all in this chapter.
To conclude, Marcus Ranum's enthusiastic preface is not an overstatement, it is indeed a great book for both security professionals and others interested in this exciting technology. While I was already familiar with most of the information in the book, it was a fascinating read! This is the kind of book you don't want or even cannot put down until the last page is turned.
Anton Chuvakin, Ph.D., GCIA (http://www.chuvakin.org) is a Senior Security Analyst with a major security company.
You can purchase Honeypots: Tracking Hackers from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
Economy of Errors
Andrew Marlatt, the mind behind the insidious, sarcastic SatireWire, has finally gone Onion. Fans of that fine news source, in fact, are probably the first ones who should check out this new compendium -- 183 magazine-size pages -- of SatireWire stories. SatireWire is a deadpan Fortune/Forbes/CIO Magazine (with a touch of Adbusters) to the Onion's USAToday/Newsweek/Times. The book is called Economy of Errors, and puts a virtual bathroom library of stories from BusinessMonth Weekly (published semiannually every day) into one volume. (Read on for the rest of my review.) Economy of Errors: SatireWire Gives Business The Business author Andrew Marlatt pages 183 publisher Broadway Books rating 7.83 reviewer timothy ISBN 0767908872 summary Satire for anyone whose paycheck ends in "dot.com" First, I grinned. The pin-headed suit pictured on the cover of Economy of Error (against a backdrop of sensible, neutral mottled gray) would have been right at home on the cover of a conventional business magazine, and with a different headline would probably even have made perfect sense -- this sense of ritualized news interchangeability is the same one that The Daily Show has been successfully mocking for years. Marlatt has a keen sense of the business-cheerleader media culture's inertia-driven , obsessively imitative tone and style, and apes both well throughout the book in a patois familiar to anyone reduced to buying magazines in airport news-standsWhile parody sites draw their subject matter from whatever their creators find worthy of skewering, the most famous obvious comparison (The Onion) is basically a general news source, for a certain value of "news." The stories in Economy of Errors are (you guessed it) more about the Nu-Economy, and swipes at the buzzword laden, sense-deprived world of corporate idiocy and technological myopia -- the world of new startups, old-line companies pretending to be startups, last-year's startups pretending to be old-line companies and so on, not to mention dangerous "Click Houses" cropping up in the suburbs.
After I grinned, I started chuckling, then really laughing. "CDNow Wins Patent for Loss-Based Revenue Model." "Manufacturers' Lobby Says Small Children Defective.""Yahoo! beats Analysts' Estimates, Dogs."
I particular enjoyed the piece titled "Judge Denies Bias Against 'Guilty Microsoft Bastards,'" which quotes Judge Thomas Penfield Jackson explaining that his rulings in the Microsoft trial over which he presided were fair, and that he was never biased against "those guilty, lying bastards." Or, pick your poison, "Microsoft Says Linux Has No Future, So Linux Firms Will Stop." Say, these headlines are probably good for another 3 to 5 years at least!
Without giving away too much, I think you can safely read these headlines, too:
- "House Sends Spam Bill to Senate; Senate Spam Filter Deletes It"
- "Shooting at Virtual Office Leaves 3 as Good as Dead, 6 Tantamount to Wounded"
- "Cubists Launch Unnavigable Web Site"
And of course, you can read these pieces on the SatireWire site as well, if you'd like too much to be given away anyhow.
Besides the stories (of which the full pagers ike "New HP Chief Can do Straddle Jump," seem to me much funnier than the shorter disinfo-blurb scattered throughout), there are a hefty selection of ads, most of which stick close enough to seeming real that I'd love to see a few scattered into a real business publication, just to see how many people notice. The spread on pages 88-89 of ads for various online trading companies certainly makes me laugh, or at least makes my face settle into a disturbing rictus. ("Thanks to Ameritrade, I quit my job as a bartender and bought that French villa I always wanted.") Maybe this is because I'm in that select group of people with a few handfuls of options on stock that costs far less than my special discounted strike price.
There are a few flat spots. For one thing, some of the parody ads no longer seem like parody, though this is hardly Marlatt's fault. (One ad shows the standard grey wash of newspaper stock listings, with enough stocks bolded to outline the familiar Absolut bottle shape, and says that the reason stocks will never fall is "Absolut Denial." Suddenly, too late -- it's like a mock gravestone for a living person, when the target suddenly drops dead.)
The same is true of two stories about the crisis that went away quietly, the Y2K bug. I wished as I was reading "Y2K survivors Devolve Ahead of Schedule" (about pre-survivors who started watching cannibalism tapes early) that each story was marked with a "first run on" date to establish more context. The undated story about the trend started by Microsoft Bob could use some context too, for when our children one day ask us seriously "What was Microsoft Bob?"
A few of the stories and ads in the book just didn't make me laugh, and small number didn't even stir a chuckle. Things like the full-pager for FamilyFetch.com ("Rent a life. Virtual Family in under an hour. Guaranteed.") seemed to take up valuable reading space, but didn't turn me on. YMMV.
On the other hand, both in the book and on the site, Marlatt makes a few forays into irreverent cultural and religious humor which may infuriate the culturally sensitive and leave those who would like to be culturally sensitive scratching their heads, not sure if they're allowed to laugh or not. I found myself in that second boat, but mostly laughed anyhow. Does anyone take real offense at a story suggesting that "Judiasm may be Y2K solution" because of the offset in years of the Jewish calendar versus the western one?
An impossible request for Marlatt when the next compilation comes out (as I'm sure it will) -- please include an index! Trying to look for an example of possibly offensive story, it would have been much faster to look for the word "Hinjew" in an index, but I think that story was too late to make the book, and is instead only on the site.
Now, I admit it -- I usually can't stand humor sites, because when they're not funny (to humor-impaired me), they're really not funny. There's no accounting for taste, which goes double for humor. This book, though, has spurred me to finally bookmark SatireWire and forced me to hand the book over temporarily to friends and family members prompted by my maniacal laughter to ask what I was reading. I look forward to the next round.
You can purchase Economy of Errors from bn.com, or from the SatireWire site. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
JavaScript : The Definitive Guide, 4th Edition
briandonovan writes "A new edition? Given all of the changes in the web programming landscape since the 1998 publication of the previous edition, David Flanagan's JavaScript : The Definitive Guide (JS:TDG4), 4th Edition was overdue. Flanagan delivers a book that more than measures up to its predecessor - JS:TDG4 includes a substantial amount of new material and, as a whole, has been extensively updated. The crushing gain in browser market share by Microsoft's Internet Explorer offering, the maturation of the Netscape 6.x,7.x / Mozilla browser suite and its entry into the fray along with a slew of other Gecko-based browsers, promulgation of newer versions of the ECMAScript specification (accompanied by new implementations in JavaScript and JScript), and the publication of successive W3C DOM Recommendations are all reflected in this edition." JavaScript : The Definitive Guide, 4th Edition author David Flanagan pages 916 publisher O'Reilly rating 9 reviewer Brian Donovan ISBN 0596000480 summary The latest edition of JavaScript : The Definitive Guide brings the popular reference up to date with extensive coverage of W3C DOM Level 1 and 2 and a much-improved and expanded set of appendices.
The Book in a NutshellAlthough much of the core of the language, addressed in Part I, has changed relatively little since JS:TDG3, Flanagan has added coverage of new issues that have emerged in the past several years, like the discussion of ASCII, Latin-1, and 16-bit Unicode in the beginning of Chapter 2 (ECMA-262 Edition 1, the spec that defined ECMAScript, included Unicode support for il8n purposes, so ECMAScript compliance requires Unicode support), and pruned away quite a bit of material related to NS 4.x-proprietary features, like the explanation of import and export (previously found in Chapter 6), that are naturally of increasingly less interest to developers as that line of browsers recedes into history. Much of Part II, which considers client-side JavaScript and DOM in all its glory, is entirely new or has been completely re-written. Where the chapter on the Document Object model in the 3rd edition only covered the "Level 0" DOM (the objects, properties, and methods first exposed by the 4.0 browsers), JS:TDG4 tackles the Level 0 DOM and the W3C DOM Recommendations through level 1 Core and HTML and touches on some DOM Level 2 topics, including the Range and Traversal APIs. "Cascading Style Sheets and Dynamic HTML" and "Events and Event Handling" are two other chapters in the Client-Side JavaScript section that have really come into their own in this edition.
The large (more than 300 pages), but somewhat muddled "JavaScript Reference" in the 3rd edition (it had commingled the objects, properties, and methods included in the core of the JavaScript language with those of the Level 0 DOM) has been split into 4 discrete appendices ("Core JavaScript Reference", "Client-Side JavaScript Reference", "W3C DOM Reference", and "Class, Property, Method, and Event Handler Index") that, taken together, comprise more than 400 more pages of information. NS 4.x fans can take comfort from the fact that, while much NS 4.x-specific information has been culled from the body of the text, Netscape 4.x still shows up in some screen captures (along with Microsoft Internet Explorer and Netscape 6).
What was GreatException handling (using throw and try/catch/finally) is covered in greater detail. In Chapter 15, "Forms and Form Elements", JavaScript interactions with buttons, toggle buttons (checkbox and radio elements), text fields, hidden elements, and fieldset elements are addressed individually in new sections not present in the corresponding chapter in JS:TDG3 and the section on select and option elements goes into more detail than in the previous edition. Throughout the book, improvements have been made to figures and tables - like the addition of the "Supported by" column in Table 19-1 : "Event handlers and the HTML elements that support them", which now helpfully lists the elements for which the event handlers can be triggered after identifiers for the versions of Netscape and Internet Explorer in which the behavior is observed. Finally, the book as a whole is significantly more readable. The type used for the text of the code examples and tables was too "light" in the 3rd edition (at least in my copy), and I was glad to see that it's a bit heavier in the 4th.
What was Not so GreatI nearly came up empty-handed in my search for defects in this book, but noticed that, in tables 11-1 and 11-3, "Automatic data type conversions" and "Data type manipulation in JavaScript" respectively, information relating to the treatment of arrays and functions present in the corresponding tables in the 3rd edition has been removed. That's really my only gripe. Some might wish that Flanagan had included more compatibility information, but, realistically, the task of fully documenting the intricacies of what's supported by which browser (or, in the case of Win MSIE, which JScript dll is installed) could probably fill a separate book all of its own. Moreover, Chapter 20 ("Compatibility Techniques"), may be brief at only 11 pages, but it does a good job of tackling best practices in dealing with JavaScript and DOM cross-browser compatibility challenges.
To Buy or Not to BuyIf you're in the market for a good JavaScript (or JavaScript+DOM) book, then JavaScript : The Definitive Guide should undoubtedly be your first choice. Although my 3rd edition was so tattered from long use that I really had no choice but to upgrade, even owners of the 3rd edition who've managed to keep their copies in near-mint condition will probably still want to get their hands on the 4th edition if they haven't already done so - for the meatier and updated reference appendices if for no other reason.
Table of ContentsPreface
- Chapter 1. Introduction to JavaScript
Part I : Core JavaScript
- Chapter 2. Lexical Structure
- Chapter 3. Data Types and Values
- Chapter 4. Variables
- Chapter 5. Expressions and Operators
- Chapter 6. Statements
- Chapter 7. Functions
- Chapter 8. Objects
- Chapter 9. Arrays
- Chapter 10. Pattern Matching with Regular Expressions
- Chapter 11. Further Topics in JavaScript
Part II : Client-Side JavaScript
- Chapter 12. JavaScript in Web Browsers
- Chapter 13. Windows and Frames
- Chapter 14. The Document Object
- Chapter 15. Forms and Form Elements
- Chapter 16. Scripting Cookies
- Chapter 17. The Document Object Model
- Chapter 18. Cascading Style Sheets and Dynamic HTML
- Chapter 19. Events and Event Handling
- Chapter 20. Compatibility Techniques
- Chapter 21. JavaScript Security
- Chapter 22. Using Java with JavaScript
Part III : Core JavaScript Reference
Part IV : Client-Side JavaScript Reference
Part V : W3C DOM Reference
Part VI : Class, Property, Method, and Event Handler Index
Index
You can purchase JavaScript: The Definitive Guide from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
I'm Just Here for the Food
MattE writes: "Alton Brown, for those who aren't familiar, has a cooking show on the Food Network called Good Eats. His new book isn't so much a cookbook, in the current sense of a book that contains a heck of a lot of recipes. (It does, in fact, contain recipes, but it really isn't what the book is about.) See the Perl cookbook, for a translation of this idea to programming. It is a book about cooking that covers science and technique first; Recipes are only example code. He says he is a 'culinary cartographer.'" This sounds like a fun book -- for the rest of Matt's review, read on below. I'm Just Here for the Food author Alton Brown pages 287 pages publisher Stewart, Tabori & Chang rating 9/10 reviewer Matt Eberle ISBN 1-58479-083-0 summary This is a book about cooking, by a geek, for geeks. If you code and you cook, this is the book.Rather than giving precise directions about how many rights and how many lefts, Alton aims to give you the lay of the land. "Cooking is not defined by seasonings ... it is defined by the application of heat." That is why the first six chapters are devoted to a single heating method each: searing, grilling, roasting, frying, boiling, and braising. This first book doesn't cover baking, or other manufactured food. Another book, in a similar vein, by a chemist, Cookwise: The Hows and Whys of Successful Cooking , actually begins with baking.
As partial proof of the author's geekiness, I present an excerpt from the introduction to the grilling chapter:
I am typing on a Macintosh G4 Titanium Powerbook, which is roving through my MP3 collection like a digital whirling dervish. When I need to speak to someone, which isn't very often since the G4 is wirelessly connected to the Web through a device in the house, I do so on a Nokia cell phone capable of trading files with my Palm V, which I really should replace since it's so 1999.
He's got his own web site, complete with blog. Throughout the book, he describes approaches to cooking that have everything to do with good food and geekiness, and nothing to do with the manufacturer's instructions. Back to the grill, he's removed one of the plates on the side of his grill and fitted it with a piece of tailpipe. Then, when he's grilling, he sticks a hair dryer in the tailpipe and uses it to whip the coals into an inferno. Which might explain why he gets his oven mitts from the hardware store in the form of welding gloves. When talking about ovens, he describes how he builds an oven out of firebricks, and how he uses a large terra cotta pot to cook a chicken in his oven. It's all in the name of even heat distribution. He's also not above rewiring his electric skillet to provide a greater range of temperatures. You know you've read something good when the author includes a mini-disclaimer to the effect of "if you try this at home kids, I and the publisher are not responsible."
Alton encourages improvisation, suggesting you hold a refrigerator roulette party: everybody brings three ingredients and then everybody has to make something of it. Now there's a team building exercise for the daring. Basically, a recipe is like an open source app that nobody's willing to muck with -- you either eat it when somebody else has already prepared it, or you compile (I mean prepare) it yourself, but follow the directions exactly. This just ruins the whole point of making the source (or the recipe) available. Tinker with it, make it better, make it awful, hey, it's just food.
From Alton's Rules I Cook By: If the food is an existing hunk or hunks of something to be cooked, you can generally mess with seasonings, herbs, spices, and so on to your heart's content. The book is filled throughout with examples of Alton's own improvisations -- like the recipe he used to win a cheap chili competition he and some friends dreamed up while sitting around on somebody's porch. In this case, the ingredients were tomato paste, chili powder, cumin, and salt he had in his pantry, some cheap beef stew meat and some lamb stew meat from the supermarket, and the cheapest beer available from the local taqueria and the chips and salsa that came with it. Total cost: $7.74
The end of the book includes appendices with a Critter Map, which shows where different cuts of meat come from, and The Basic Culinary Toolbox, where he describes necessary tools, from heat resistant spatulas and all kinds of thermometers to what makes a good knife. Also included are a very brief selection of suppliers for various dry goods and a selection on cleanliness that has some tips on recognizing a good meat and produce department. The one weakness of the book may be its index. Again, since this isn't really a cookbook per se, it might not matter so much that all the chicken recipes in the book are not listed in the index under Chicken, or that his great recipe for microwave popcorn is listed under M, but not P. As for the popcorn recipe itself, here's a hint: popcorn, paper bag, and 2 staples.
If you are reading this I highly recommend I'm Just Here For the Food as well as the show Good Eats. This is the book on cooking I've been waiting for someone to write ever since I started cooking. It gives you the tools and the principles so that you can cook what you want and experiment with flavors and ingredients you like.
Appetite whetted? You can purchase I'm Just Here for the Food from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
I'm Just Here for the Food
MattE writes: "Alton Brown, for those who aren't familiar, has a cooking show on the Food Network called Good Eats. His new book isn't so much a cookbook, in the current sense of a book that contains a heck of a lot of recipes. (It does, in fact, contain recipes, but it really isn't what the book is about.) See the Perl cookbook, for a translation of this idea to programming. It is a book about cooking that covers science and technique first; Recipes are only example code. He says he is a 'culinary cartographer.'" This sounds like a fun book -- for the rest of Matt's review, read on below. I'm Just Here for the Food author Alton Brown pages 287 pages publisher Stewart, Tabori & Chang rating 9/10 reviewer Matt Eberle ISBN 1-58479-083-0 summary This is a book about cooking, by a geek, for geeks. If you code and you cook, this is the book.Rather than giving precise directions about how many rights and how many lefts, Alton aims to give you the lay of the land. "Cooking is not defined by seasonings ... it is defined by the application of heat." That is why the first six chapters are devoted to a single heating method each: searing, grilling, roasting, frying, boiling, and braising. This first book doesn't cover baking, or other manufactured food. Another book, in a similar vein, by a chemist, Cookwise: The Hows and Whys of Successful Cooking , actually begins with baking.
As partial proof of the author's geekiness, I present an excerpt from the introduction to the grilling chapter:
I am typing on a Macintosh G4 Titanium Powerbook, which is roving through my MP3 collection like a digital whirling dervish. When I need to speak to someone, which isn't very often since the G4 is wirelessly connected to the Web through a device in the house, I do so on a Nokia cell phone capable of trading files with my Palm V, which I really should replace since it's so 1999.
He's got his own web site, complete with blog. Throughout the book, he describes approaches to cooking that have everything to do with good food and geekiness, and nothing to do with the manufacturer's instructions. Back to the grill, he's removed one of the plates on the side of his grill and fitted it with a piece of tailpipe. Then, when he's grilling, he sticks a hair dryer in the tailpipe and uses it to whip the coals into an inferno. Which might explain why he gets his oven mitts from the hardware store in the form of welding gloves. When talking about ovens, he describes how he builds an oven out of firebricks, and how he uses a large terra cotta pot to cook a chicken in his oven. It's all in the name of even heat distribution. He's also not above rewiring his electric skillet to provide a greater range of temperatures. You know you've read something good when the author includes a mini-disclaimer to the effect of "if you try this at home kids, I and the publisher are not responsible."
Alton encourages improvisation, suggesting you hold a refrigerator roulette party: everybody brings three ingredients and then everybody has to make something of it. Now there's a team building exercise for the daring. Basically, a recipe is like an open source app that nobody's willing to muck with -- you either eat it when somebody else has already prepared it, or you compile (I mean prepare) it yourself, but follow the directions exactly. This just ruins the whole point of making the source (or the recipe) available. Tinker with it, make it better, make it awful, hey, it's just food.
From Alton's Rules I Cook By: If the food is an existing hunk or hunks of something to be cooked, you can generally mess with seasonings, herbs, spices, and so on to your heart's content. The book is filled throughout with examples of Alton's own improvisations -- like the recipe he used to win a cheap chili competition he and some friends dreamed up while sitting around on somebody's porch. In this case, the ingredients were tomato paste, chili powder, cumin, and salt he had in his pantry, some cheap beef stew meat and some lamb stew meat from the supermarket, and the cheapest beer available from the local taqueria and the chips and salsa that came with it. Total cost: $7.74
The end of the book includes appendices with a Critter Map, which shows where different cuts of meat come from, and The Basic Culinary Toolbox, where he describes necessary tools, from heat resistant spatulas and all kinds of thermometers to what makes a good knife. Also included are a very brief selection of suppliers for various dry goods and a selection on cleanliness that has some tips on recognizing a good meat and produce department. The one weakness of the book may be its index. Again, since this isn't really a cookbook per se, it might not matter so much that all the chicken recipes in the book are not listed in the index under Chicken, or that his great recipe for microwave popcorn is listed under M, but not P. As for the popcorn recipe itself, here's a hint: popcorn, paper bag, and 2 staples.
If you are reading this I highly recommend I'm Just Here For the Food as well as the show Good Eats. This is the book on cooking I've been waiting for someone to write ever since I started cooking. It gives you the tools and the principles so that you can cook what you want and experiment with flavors and ingredients you like.
Appetite whetted? You can purchase I'm Just Here for the Food from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
Perl for Web Site Management
PerlDiver writes: "Perl for Web Site Management by John Callender is for web professionals -- designers, editors, HTML jockeys -- who have never programmed before, but who now find themselves with the need to create their own site-management tools, automated web clients, and web-based applications. The title is an understatement; the book covers not just Perl programming but the bulk of what a novice needs to learn to function in a UNIX environment, from pwd and man to installing software packages from source tarballs. If you or anyone you know wants to cross the chasm from 'content' to 'code,' get this book." Read on for the rest of his review. Perl for Web Site Management author John Callender pages 528 publisher O'Reilly and Associates rating 8 reviewer perldiver ISBN 1565926471 summary Superb introduction to Perl for "accidental programmers"In his preface, Callender describes his own transition from a writer and editor to the kind of one-man-band that, back in the '90's, we called a "webmaster". He characterizes himself and others in the same boat as "accidental programmers", and justly praises Larry Wall for creating a programming language that enables such novice coders to do useful things right away. "Like natural languages, one of the ways in which Perl makes easy things easy is that it is designed to let you get by using only a small subset of the language. As Larry puts it, Perl lets you talk baby talk, and in Perl such baby talk is officially okay."
For non-programmers, this is a better Learning Perl than Learning Perl. The latter title, by Schwartz and Phoenix, is explicitly intended for established programmers seeking to add Perl to their existing tool belt of languages. Perl for Web Site Management is for the folks Apple used to call "the rest of us". Callender assumes no knowledge on the part of his reader beyond some familiarity with HTML and the web; this starting-from-zero approach makes the book maximally inclusive, while his ability to convey a lot in a small space brings the newbies a long way in the space of a couple chapters. He provides thorough redirection to the standard sources of Perl and Internet lore (the perl* man pages, the standard Perl programming texts, and others).
Virgin programmers, when they're through with Perl for Web Site Management, will find themselves able to make effective use of Perl programs to automate a plethora of tasks, including mass manipulation and modification of a site's files; server log analysis (using Perl's powerful regular expression facility); link checking (using the LWP module); and auto-generating an annotated site map from the <META> tags in the site's HTML files. The latter part of the book introduces server-side web application programming using CGI (examples include coding a site Guestbook and integrating with the SWISH-E site search facility), along with more advanced lore like the CPAN code archive, Perl's object-oriented features, storing user data in DBM databases, and publishing modules for reuse by others. Along the way, the book teaches a respectable amount about UNIX, as well; the main text, as well as the many informative sidebars, contain concise and clear explanations of necessities like stdin/stdout redirection; chmod and file permissions; shell filename globbing; tab completion in bash; network troubleshooting with traceroute; and much more.
Callender's writing style provides the right mix of hand-holding, humor, and clarity for the book's target audience. He simplifies without dumbing down, and he proves that he picked up a considerable amount of hacker culture on his own journey up the learning curve, which he shares with his pupils, citing sources from Neal Stephenson's In the Beginning Was the Command Line to Jon Udell's Practical Internet Groupware. He also does a good job of evangelizing the culture of sharing and open systems that created Perl, Apache, and the Internet as we know it, giving abundant proper credit to the authors and creators of all the tools and references to which he refers his readers. He concludes by listing, and providing jumping-off points for, the wide variety of logical "next steps" that go beyond the scope of the book: Python and other programming languages for the web, Apache configuration, mod_perl, system administration, and relational database integration.
As you may have guessed by now, I recommend this book highly, especially for anyone who finds him- or herself with responsibility for maintaining a web site but feeling a bit underequipped to do so. The book has a limitation (which is not the same as a shortcoming): it's a tutorial, not a reference work; though the index is quite serviceable, this isn't the book to turn to when you need to remember the order of the arguments to substr. This is a book to sit down and read through, once or multiple times, to help build a framework of knowledge and begin populating it with pearls of wisdom that can be put to immediate use.
Additional information about the book, including code for the examples given, is available on the web at the author's web site, O'Reilly's page for the book, and at the online bookseller site of your choice. Table of Contents:
Preface
1. Getting Your Tools in Order
Open Source Versus Proprietary Software
Evaluating a Hosting Provider
Web Hosting Alternatives
Getting Started with SSH/Telnet
Meet the Unix Shell
Network Troubleshooting
A Suitable Text Editor2. Getting Started with Perl
Finding Perl on Your System
Creating the "Hello, world!" Script
The Dot Slash Thing
Unix File Permissions
Running (and Debugging) the Script
Perl Documentation
Perl Variables
A Bit More About Quoting
"Hello, world!" as a CGI Script3. Running a Form-to-Email Gateway
Checking for CGI.pm
Creating the HTML Form
The <FORM> Tag's ACTION Attribute
The mail_form.cgi Script
Warnings via Perl's -w Switch
The Configuration Section
Invoking CGI.pm
foreach Loops
if Statements
Filehandles and Piped Output
die Statements
Outputting the Message
Testing the Script4. Power Editing with Perl
Being Careful
Renaming Files
Modifying HREF Attributes
Writing the Modified Files Back to Disk5. Parsing Text Files
The "Dirty Data" Problem
Required Features
Obtaining the Data
Parsing the Data
Outputting Sample Data
Making the Script Smarter
Parsing the Category File
Testing the Script Again6. Generating HTML
The Modified make_exhibit.plx Script
Changes to &parse_exhibitor
Adding Categories to the Company Listings
Creating Directories
Generating the HTML Pages
Generating the Top-level Page7. Regular Expressions Demystified
Delimiters
Trailing Modifiers
The Search Pattern
Taking It for a Spin
Thinking Like a Computer8. Parsing Web Access Logs
Log File Structure
Converting IP Addresses
The Log-Analysis Script
Different Log File Formats
Storing the Data
The "Visit" Data Structure9. Date Arithmetic
Date/Time Conversions
Using the Time::Local Module
Caching Date Conversions
Scoping via Anonymous Blocks
Using a BEGIN Block10. Generating a Web Access Report
The &new_visit and &add_to_visit Subroutines
Generating the Report
Showing the Details of Each Visit
Reporting the Most Popular Pages
Fancier Sorting
Mailing the Report
Using cron11. Link Checking
Maintaining Links
Finding Files with File::Find
Looking for Links
Extracting
Putting It All Together
Using CPAN
Checking Remote Links
A Proper Link Checker12. Running a CGI Guestbook
The Guestbook Script
Taint Mode
Guestbook Preliminaries
Untainting with Backreferences
File Locking
Guestbook File Permissions13. Running a CGI Search Tool
Downloading and Compiling SWISH-E
Indexing with SWISH-E
Running SWISH-E from the Command Line
Running SWISH-E via a CGI Script14. Using HTML Templates
Using Templates
Reading Fillings Back In
Rewriting an Entire Site15. Generating Links
The Docbase Concept
The CyberFair Site's Architecture
The Script's Data Structure
Using Data::Dumper
Creating Anonymous Hashes and Arrays
Automatically Generating Links
Inserting the Links16. Writing Perl Modules
A Simple Module Template
Installing the Module
The Cyberfair::Page Module17. Adding Pages via CGI Script
Why Add Pages with a CGI Script?
A Script for Creating HTML Documents
Controlling a Multistage CGI Script
Using Parameterized Links
Building a Form
Posting Pages from the CGI Script
Running External Commands with system and Backticks
Race Conditions
File Locking
Adding Link Checking18. Monitoring Search Engine Positioning
Installing WWW::Search
A Single-Search Results Tool
A Multisearch Results Tool
The map Function19. Keeping Track of Users
Stateless Transactions
Identifying Individual Users
Basic Authentication
Automating User Registration
Storing Data on the Server
The Register Script
The Verification Script20. Storing Data in DBM Files
Data Storage Options
The tie Function
A DBM Example Script
Blocking Versus Nonblocking Behavior
Storing Multilevel Data in DBM Files
An MLDBM-Using Registration Script
An MLDBM-Using Verification Script21. Where to Go Next
Unix System Administration
Programming
Apache Server Administration and mod_perl
Relational Databases
AdvocacyIndex
You can purchase Perl for Web Site Management from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
The Chronoliths
Brooks Peck writes: "The Chronoliths, by the underappreciated* Robert Charles Wilson, is a finalist for the 2001 Hugo Award and Campbell Award. The tale begins in 2021 with the abrupt arrival of the first Chronolith, a 200-foot-high monument of unknown composition that memorializes a military victory. It's dated twenty years in the future. More Chronoliths follow, blinking into existence with explosive force--usually in the centers of cities. Each is grander than the last, and each lauds another victory by a leader who does not currently exist." The Chronoliths author Robert Charles Wilson pages 301 publisher Tor Books rating 8.5 reviewer Brooks Peck ISBN 0812545249 summary Big honking monoliths beam in from the future.Witness to it all is our narrator, Scott Warden. There's nothing special about this guy. He's no clever scientist, no tough soldier. He's just a computer programmer who happens to be close to the location of the first arrival. After that he's pulled into the Chronolith investigation by a series of seeming coincidences. But where the manipulation of time is involved, coincidence becomes a slippery concept--something his co-investigators are well aware of.
I consider this quiet, unassuming novel to be on the cutting edge of science fiction for this reason: it creates a literary metaphor for our current view (and fears) of the near future. Just as giant, mutant bugs stood for our fear of the bomb in the '50s, the Chronoliths represent our fear of what's just around the corner today. But today we can no longer easily predict what the future holds. Science changes things too quickly--so quickly that we can only say with confidence that we cannot say what the future will be like.
Science fiction writers have devised a variety of means to cope with this threat to their livelihood. Vernor Vinge pulls off a plausible (and excellent) space opera in A Fire Upon the Deep by having the universe limit how far science can progress depending on its location in the galaxy. Other writers retreat to the very near future. The rise in popularity of alternate history stories could be another byproduct of this dilemma.
But in The Chronoliths Wilson doesn't resort to any tricks. The novel is all about the unknowableness of the future, as represented by the Chronoliths themselves: impenetrable, unstoppable, and, most importantly, of our own making.
*Perhaps one reason Wilson isn't as well known as he should be is that his novels are not as strong as his short fiction. The Chronoliths, interestingly, is his first novel written in first-person, the point of view he chose for many of his best short stories including "The Perseids" and "The Inner Inner City."
You can purchase The Chronoliths from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
Perl & XML
dooling writes: "Perl & XML is a well-written book that accomplishes what it sets out to do. It states in the preface that it is written for Perl programmers who want to learn about XML and what is available in Perl for XML processing. It achieves this goal, but little else. When you are done reading this book you will have been given an overview of Perl and XML, know where to begin to attack an XML document, and know where to look to find more information." For dooling's more complete review, read on below. Perl & XML author Erik T. Ray & Jason McIntosh pages 202 publisher O'Reilly and Associates rating 6 reviewer dooling ISBN 059600205X summary Good introduction to XML for Perl programmers.The book starts out with a brief explanation of why XML and Perl are well-suited for each other. It then provides a teaser of things to come: an explanation of how to use the XML::Simple module. The first chapter concludes with some warnings and gotchas that seem a little premature since they have not really explained XML. Fortunately, most of these gotchas are covered in context later in the book.
The second chapter provides a whirlwind overview of XML -- covering its structure, DTDs, schemas, and XSLT (transformation). The discussion of XML in general, its history, and parts of an XML document are well done. They give someone who is familiar with static HTML the needed background to understand the structure of an XML document and the vocabulary used to describe it. Unfortunately, the discussion of where XML begins to distinguish itself from HTML, namely with DTDs, the new replacement for DTDs called schemas, and the transformation language XSLT, is too brief. They gloss over these topics with little explanation and few examples. That said, there are other books that do provide more in-depth coverage of XML (this book only promises an introduction).
The next five chapters cover Perl modules designed to process XML, starting with simple parsers and writers. Only methods and syntax relating to XML processing are explained. Therefore, if you are considering reading this book, you should be fairly comfortable with Perl and object-oriented (OO) interfaces to CPAN modules (nearly all the modules discussed provide OO APIs). Again, there are other books and perldoc documentation that cover Perl and it's OO features; so read them first if you are not familiar with OO Perl. If you are familiar with OO Perl, these chapters provide a good overview of the different ways XML can be processed (stream- and tree-based approaches), the advantages and disadvantages of each, and the Perl modules best suited for each approach. These chapters are the biggest strength of this book. The modules discussed in these chapters are by no means an exhaustive list of XML-related modules available from CPAN nor do the explanations of each module cover everything the module does. These chapters do, however, provide the reader with enough information that she can begin to process XML documents intelligently and know where to turn when she needs more information.
The next chapter, Chapter 8, covers XML tree iterators, XPath, XSLT, and XML::Twig. All of these topics are covered in a span of 16 pages (with only slightly over two pages dedicated to XSLT). Indeed, after reading the chapter, you may get the feeling that it was only included so the authors could cram more trite colloquialisms into the book. The short shrift given to these topics creates the impression, which is strengthened in the chapters that follow, that this book was rushed a bit to press.
Chapter 9 discusses applications of XML, including RSS and SOAP, and Chapter 10 is mostly example code. These chapters are intended to give you a feeling for what is possible without really giving you enough information to make it happen. The main problem with these chapters are the examples: the examples are long and the explanations are short. Thus, they are more useful as templates or a quick reference than for learning these topics in detail. Of course, the authors never promised you would be programming SOAP applications when you were done reading this book. And again, there are other books out there which discuss these topics in more detail. So the authors stay true to their promise throughout the book: they will introduce you to XML and tell you how to interact with XML using Perl, no more.
Personally, I found this book did, in general, give me enough information to get started using XML and pointed me where I needed to go to get more information. I am an experienced Perl programmer who is new to XML and comfortable with on-line documentation. This book seems to be written for people who fit this profile and who want to learn by doing (finding the answers to the "hard" questions as they arise). It does introduce a wide variety of XML-related topics and the Perl modules used to interact with them, which is what the authors promised to do in the preface. While it is by no means an authoritative text on Perl and XML, there is something to be said for keeping promises ...
Index As with most first-edition books, the index was adequate but not complete. For example, XML::Twig, which has an entire section covering it, does not appear in the index at all.
Contents
Preface
- Perl and XML
- Why Use Perl with XML?
- XML Is Simple with XML::Simple
- XML Processors
- A Myriad of Modules
- Keep in Mind ...
- XML Gotchas
- An XML Recap
- A Brief History of XML
- Markup, Elements, and Structure
- Namespaces
- Spacing
- Entities
- Unicode, Character Sets, and Encodings
- The XML Declaration
- Processing Instructions and Other Markup
- Free-Form XML and Well-Formed Documents
- Declaring Elements and Attributes
- Schemas
- Transformations
- XML Basics: Reading and Writing
- XML Parsers
- XML::Parser
- Stream-Based Versus Tree-Based Processing
- Putting Parsers to Work
- XML::LibXML
- XML::XPath
- Document Validation
- XML::Writer
- Character Sets and Encodings
- Event Streams
- Working with Streams
- Events and Handlers
- The Parser as Commodity
- Stream Applications
- XML::PYX
- XML::Parser
- SAX
- SAX Event Handlers
- DTD Handlers
- External Entity Resolution
- Drivers for Non-XML Sources
- A Handler Base Class
- XML::Handler::YAWriter as a Base Handler Class
- XML::SAX: The Second Generation
- Tree Processing
- XML Trees
- XML::Simple
- XML::Parser's Tree Mode
- XML::SimpleObject
- XML::TreeBuilder
- XML::Grove
- DOM
- DOM and Perl
- DOM Class Interface Reference
- XML::DOM
- XML::LibXML
- Beyond Trees: XPath, XSLT, and More
- Tree Climbers
- XPath
- XSLT
- Optimized Tree Processing
- RSS, SOAP, and Other XML Applications
- XML Modules
- XML::RSS
- XML Programming Tools
- SOAP::Lite
- Coding Strategies
- Perl and XML Namespaces
- Subclassing
- Converting XML to HTML with XSLT
- A Comics Index
You may also want to check out Erik T. Ray's home page, Jason McIntosh's home page, or O'Reilly's page for the book. You can purchase Perl & XML from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
High Score
Remember Pong, Raid on Bungeling Bay, or Earthworm Jim? E-games are now both historic and significant, representations of the birth of a culture. They embody a value system, mind-boggling inspiration, common language and experience. And they are finally getting their due. It is unbelievable how far video games have come in the past 30 years, from pinball systems to the console wars raging between Sony, Nintendo and Microsoft, or how important they are culturally. In these games are the stories of the transition from one age to another. Electronic games have spread the psychology of interactivity, re-defined narrative, and are a huge and growing swath of pop culture. They are a gazillion-dollar business, already surpassing films in revenues. They have altered the consciousness and cognitive traits of at least one generation, perhaps two. High Score: the illustrated history of electronic games, by Rusel Demaria and Johnny L. Wilson, is a beautifully organized history of this astounding and little-chronicled phenomenon, from primitive pinballs to the powerful new 3-D entertainment consoles. High Score: the illustrated history of electronic games author Rusel Demaria and Johnny L. Wilson pages 326 publisher McGraw Hill/Osborne rating 8/10 reviewer Jon Katz ISBN 0072224282 summary history of e-gamesThe authors take us through the making of Space-Invaders and Pac-Man up to Myst and Tomb Raider.
Apart from a chronicle of the early games, High Score focuses not only on the technological wizardry of e-games, but on the business and cultural context in which they appeared: when Sega introduced the Dreamcast, perhaps their best machine at the time, it was almost too late -- they were already up against PlayStation and N64. Even the Tamogochi-like memory card which incubated eggs for pet creatures in Sonic Adventure couldn't quite save them.
The book is succinctly organized. It's actually beautifully presented in a publishing context -- short, well-reported, informative and illustrated chunks. Section One is "Before the Beginning," a tour of the "pre-history" of video games, including an homage to some of the earliest pinball machines and the various breakthroughs like integrated circuits that ultimately made e- games possible.
Section Two focuses on the 70s, and the true birth of the gaming industry, sparked by Ralph Baier and Nolan Bushnell and Pong, one of the first games to become a household word. In the 80s, hit after hit spread through the country's video game arcades (many now closed due to the power of personal computing), and private homes were invaded by Atari, Intellevision and ColecoVision's gaming systems. As the authors point out, the PC and the floppy made it possible for anybody to become a game developer.
In the 90s, write DeMaria and Wilson, the CD-ROM, 3D graphics and broadband revolutionized gaming. "New rivalries" -- and enormous investments from giant companies like Sony and Microsoft -- "create rapidly escalating technologies, immersive realism, and and wide range of crossovers and tie-ins. Developmental budgets skyrocket, interactive games become very big business, and the companies themselves begin to merge and consolidate."
Many gamers are now old enough to appreciate that they have a history. But many people still don't grasp how significant gaming has become. Where else will you read about Dave Perry's launch of Shiny Entertainment in l993, after years of creating games overseas? Perry, who slept in the parking lot at Virgin, won Game of the Year on the Genesis with Global Gladiators.
The authors describe the rise of Tomb Raider and its journey to Hollywood, but that story is well-known. It's the game-by-game, breakthrough-by-breakthrough historical context that makes the book so compelling, and so important. Gaming isn't just about entertainment. It's a common language, value system and way of thinking for millions of younger Americans, something the older and more mainstream culture has yet to appreciate. It's way past time society recognized the astonishing creativity and technology that went into the making of e-games, both in terms of game creators and the games themselves. As you read through High Scores, you get the sense of a history that transcends entertainment. What you see is the birth of a culture. This book does, and in the most readable way imaginable. It's tough to imagine anybody under 40 who reads this site - gamer or not -- who wouldn't love it.
You can purchase High Scores from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
Two Books from Haruki Murakami
David Mazzotta writes: "The jacket copy of these novels declares the writer, Haruki Murakami, to be 'a Japanese Philip K. Dick with a sense of humor.' That's pretty accurate. But while Murakami shares Dick's inventive imagination and plots that containing fantastic, near-mystical overtones, these novels are populated with deeper, more identifiable characters." If that's an intriguing idea for you, read on for the rest of David's review. A Wild Sheep Chase and Dance, Dance, Dance author Haruki Muarkami pages 304 / 393 publisher Vintage Books rating 8.5 reviewer David Mazzotta ISBN 037571894X / 0679753976 summary The real and surreal clash in post-modern Japan.In A Wild Sheep Chase (1989) the main character and narrator lives a mediocre existence. He is passionless; seemingly unaffected by his wife's betrayal and subsequent divorce, and only attracted to his current girlfriend because he finds her ears to be "marvels of creation" that can incite irresistible desire in any man who sees them. This shallow view of life is further emphasized by the fact that, throughout the book, no characters are referred to by proper names.
When the "Rat," a nomadic friend of the narrator, sends him a photograph of some sheep from Hokkaido, a chain of events is set in motion. The sheep picture comes to the attention of a shadowy figure simply known as the "Boss" -- a mythically powerful underworld kingpin -- who has a dire need to get a hold of one of the sheep in the photo. The Boss sends a messenger to the narrator making it clear that unless he finds that sheep, he will face financial ruin, if not worse.
What follows is a surreal journey from Tokyo to Sapporo and points north, including a hotel that could be right out of a Kubrick film and creature known as the Sheep-Man, who is worthy of David Lynch. In the course of this journey, and in the face of extraordinary events, our narrator confronts his superficial world view and the affect it has had on his life.
Set six years later, Dance, Dance, Dance (1994) is murder mystery, but one in which the clues are revealed by chance rather than dogged investigation - often by a seemingly random psychic encounter. Our narrator has resumed a normal life as a freelance copywriter. He refers to this as "shoveling cultural snow" -- doing the thoughtless and thankless work that needs to be done to clear the path. He is fairly well disengaged from humanity, spending a lot of time alone doing absolutely nothing. Yet, in the midst of this anti-social life, he finds that his long missing girlfriend, the one with the amazing ears -- is calling to him as if in a dream, and she is weeping.
Once again, a chain of events is set in motion. He travels back to the strange hotel to find it modernized and corporate. He has another encounter with the Sheep-Man who tells him to "keep dancing." In the course of story he encounters, and finds sympathy for, a disaffected adolescent girl from a dysfunctional family, and an old high-school acquaintance who has become a famous movie star. Through his relationship with these characters he solves the mystery of his missing girlfriend, not through directed investigation but just by staying engaged with life and society -- by keeping up the "dance."
As a Westerner reading these novels, I was struck by how different the Japan portrayed here is from the hyper-efficient, sanitized, sexless and safe Japan of common impression. This is late twentieth-century post-modern Japan. References to Western pop culture are incessant. Call girls abound. Characters find themselves entangled in confusing, neurotic relationships worthy of HBO original programming. And nobody is practicing Kendo.
These books are hard-boiled -- that is to say, they are written in the hard-boiled style defined in the mid-twentieth century by U.S. mystery writers Raymond Chandler and Dashiell Hammet. There is a stark contrast between the blunt, gritty realism of hard-boiled style and the surreal, supernatural events that occur. This causes the stories to seem solidly planted in the real world, despite the occasional bizarre episodes.
There are certain shortcomings; the camera's eye perspective of the hard-boiled school lends itself to a bit too much dwelling on the details of setting. This is primarily in evidence at the beginning of A Wild Sheep Chase. And one suspects something is lost in the translation from the original Japanese. For example, this passage from Dance, Dance, Dance:
"... and if you consider the telephone as an object, it has this truly weird form. Ordinarily, you never notice it, but if you stare at it long enough, the sheer oddity of its form hits home. The phone either looks like it's dying to say something, or else it's resenting that it's trapped inside its form. Pure idea vested with a clunky body. That's the telephone."
There is a certain vagueness that may not be intentional. One is left with the feeling that "form" doesn't quite convey the same meaning it did in the original language.
Reading Murakami has been described feeling like you've just awakened from a deep sleep and you aren't sure if you're still dreaming. These are fascinating, engrossing books that will leave you full of ideas and impressions to dwell on for a long time to come.
You can purchase A Wild Sheep Chase and Dance,Dance,Dance from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
Two Books from Haruki Murakami
David Mazzotta writes: "The jacket copy of these novels declares the writer, Haruki Murakami, to be 'a Japanese Philip K. Dick with a sense of humor.' That's pretty accurate. But while Murakami shares Dick's inventive imagination and plots that containing fantastic, near-mystical overtones, these novels are populated with deeper, more identifiable characters." If that's an intriguing idea for you, read on for the rest of David's review. A Wild Sheep Chase and Dance, Dance, Dance author Haruki Muarkami pages 304 / 393 publisher Vintage Books rating 8.5 reviewer David Mazzotta ISBN 037571894X / 0679753976 summary The real and surreal clash in post-modern Japan.In A Wild Sheep Chase (1989) the main character and narrator lives a mediocre existence. He is passionless; seemingly unaffected by his wife's betrayal and subsequent divorce, and only attracted to his current girlfriend because he finds her ears to be "marvels of creation" that can incite irresistible desire in any man who sees them. This shallow view of life is further emphasized by the fact that, throughout the book, no characters are referred to by proper names.
When the "Rat," a nomadic friend of the narrator, sends him a photograph of some sheep from Hokkaido, a chain of events is set in motion. The sheep picture comes to the attention of a shadowy figure simply known as the "Boss" -- a mythically powerful underworld kingpin -- who has a dire need to get a hold of one of the sheep in the photo. The Boss sends a messenger to the narrator making it clear that unless he finds that sheep, he will face financial ruin, if not worse.
What follows is a surreal journey from Tokyo to Sapporo and points north, including a hotel that could be right out of a Kubrick film and creature known as the Sheep-Man, who is worthy of David Lynch. In the course of this journey, and in the face of extraordinary events, our narrator confronts his superficial world view and the affect it has had on his life.
Set six years later, Dance, Dance, Dance (1994) is murder mystery, but one in which the clues are revealed by chance rather than dogged investigation - often by a seemingly random psychic encounter. Our narrator has resumed a normal life as a freelance copywriter. He refers to this as "shoveling cultural snow" -- doing the thoughtless and thankless work that needs to be done to clear the path. He is fairly well disengaged from humanity, spending a lot of time alone doing absolutely nothing. Yet, in the midst of this anti-social life, he finds that his long missing girlfriend, the one with the amazing ears -- is calling to him as if in a dream, and she is weeping.
Once again, a chain of events is set in motion. He travels back to the strange hotel to find it modernized and corporate. He has another encounter with the Sheep-Man who tells him to "keep dancing." In the course of story he encounters, and finds sympathy for, a disaffected adolescent girl from a dysfunctional family, and an old high-school acquaintance who has become a famous movie star. Through his relationship with these characters he solves the mystery of his missing girlfriend, not through directed investigation but just by staying engaged with life and society -- by keeping up the "dance."
As a Westerner reading these novels, I was struck by how different the Japan portrayed here is from the hyper-efficient, sanitized, sexless and safe Japan of common impression. This is late twentieth-century post-modern Japan. References to Western pop culture are incessant. Call girls abound. Characters find themselves entangled in confusing, neurotic relationships worthy of HBO original programming. And nobody is practicing Kendo.
These books are hard-boiled -- that is to say, they are written in the hard-boiled style defined in the mid-twentieth century by U.S. mystery writers Raymond Chandler and Dashiell Hammet. There is a stark contrast between the blunt, gritty realism of hard-boiled style and the surreal, supernatural events that occur. This causes the stories to seem solidly planted in the real world, despite the occasional bizarre episodes.
There are certain shortcomings; the camera's eye perspective of the hard-boiled school lends itself to a bit too much dwelling on the details of setting. This is primarily in evidence at the beginning of A Wild Sheep Chase. And one suspects something is lost in the translation from the original Japanese. For example, this passage from Dance, Dance, Dance:
"... and if you consider the telephone as an object, it has this truly weird form. Ordinarily, you never notice it, but if you stare at it long enough, the sheer oddity of its form hits home. The phone either looks like it's dying to say something, or else it's resenting that it's trapped inside its form. Pure idea vested with a clunky body. That's the telephone."
There is a certain vagueness that may not be intentional. One is left with the feeling that "form" doesn't quite convey the same meaning it did in the original language.
Reading Murakami has been described feeling like you've just awakened from a deep sleep and you aren't sure if you're still dreaming. These are fascinating, engrossing books that will leave you full of ideas and impressions to dwell on for a long time to come.
You can purchase A Wild Sheep Chase and Dance,Dance,Dance from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
XML and Java, Developing Web Applications
WrinkledShirt writes: "There's a whole lot of posturing going on in the world on Internet programming right now, and with all of Microsoft's slick marketing for .NET there's never been a better time to remind the industry which platform got it right first. Enter XML and Java, Developing Web Applications (2nd Ed.) , a book that promises to show just how much of a heavy-hitter Java still is in the enterprise world. Because of the variety of technologies available for Java, Addison Wesley took the approach of bringing in a bunch of experts in the field to cover the different ways that Java and XML can work together. Considering the effort that went into coordinating this collaborative work, it couldn't possibly miss, right?" Read on to see how true that is, in Wrinkled's estimation. XML and Java, Developing Web Applications (2nd Ed.) author Hiroshi Maruyama, Kent Tamura, Naohiko Uramoto, Makoto Murata, Andy Clark, Yuichi Nakamura, Ryo Neyama, Kazuya Kosaka, Satoshi Hada pages 661 publisher Addison Wesley rating 6.5 reviewer WrinkledShirt ISBN 0-201-77004-0 summary An ambitious book, covers a fair amount of material, but lacks continuity.Unfortunately, they might have put a little more thought into the bigger picture with this approach, because what they have ended up with is a book that reads like a play with two completely different acts: the second showing a wide variety of applications of XML for the Java platform, which works well enough, and the first, which attempts to teach the basics of working with XML and Java, which isn't quite so strong.
The GoodOne look at the table of contents should convince you that the book rates pretty highly on buzzword compliance (XML, DOM, SAX, SOAP, XLST, WSDL, UDDI, JSP, EJB, etc.). When it comes to content that should impress your manager, you could do worse. The accompanying CD-ROM also comes with some neat stuff, like Tomcat, Jakarta and Xerces, and trial versions of WebSphere and DB2. As an added bonus, the code within has been tested on both Windows and Linux.
For the most part, the progression through the topics is well-directed, with in-depth discussion about the different means of XML parsing and generation using both DOM and SAX early on, and after going through the early chapters the reader should already have a decent idea about what techniques might fit their own personal projects. Tamura's chapters on DOM and SAX in particular stand out, not just for the coverage he gives the two, but also for his comparisons of one versus the other. They serve as a decent enough primer to prepare for the latter chapters, although the reader might be better equipped if they gained some extra foundation from other sources (more on this in a bit).
Despite the breadth of topics, they don't throw in the kitchen sink. Readers are expected to get their introductions to XML and Java elsewhere, and while one can probably get away with a surface understanding of XML and still get what they need out of the book, the same cannot be said for the needed Java knowledge. However, for someone who has a good understanding of Java and the various surrounding technologies (JavaBeans, Java Server Pages, and so on), there's some pretty good coverage of the different ways that XML can be incorporated. They've even taken care to provide appropriate supporting material, talking about where the various standards may be headed, some coverage on the theory behind Schema design, and there's even an appendix that explains JDBC, to serve as a counterpart to the chapter on XML and databases.
This book is in many ways an example of the way second editions should be. This book has double the chapters of the original, and efforts have been made to cover as much additional (but still relevant) material as possible, including XML Schemas, namespaces, messaging, web services with SOAP, and security. Some of these topics were in the first edition, but bunched together into a single chapter. In this book, they get individualized treatment.
The Not-So-GoodIt's a hopeful endeavor to bring together nine authors and expect that there can still be stylistic continuity, and this book is a good example of what happens when the editor doesn't lay a heavy enough hand. There are inconsistencies from one chapter to the next in the way code snippets, method lists and diagrams are incorporated (in particular, the use of line numbering by Uramoto and others is unintelligible to the point of inspiring wrath). Furthermore, because each author handles their subject matter just a little bit differently, it's hard to get into any sort of a learning rhythm. In this case, the whole is probably weaker than the sum of its parts. A good section, like the one contributed by Tamura for instance, loses some of its luster if the chapters preceding it or following it aren't up to snuff, as is sometimes the case throughout the book.
To be fair, things do improve in the latter chapters when the authors are focusing on more specialized cases, and such expectations of continuity become somewhat moot. However, even then, the authors obviously have different opinions on how steep the learning curve needs to be. The chapter on JSP, for instance, eases you in and begins with simple examples, despite the fact that embedding programming code within HTML is pretty intuitive, comparatively speaking. The chapter on WSDL, on the other hand, makes no such assumptions of a beginner's audience, and it's trial by fire, with long stretches of code and in some cases nary a comment in sight. It's understandable that talking about distributed programming necessitates long code listings, but a newbie is going to experience some serious hymen-breaking here.
If there is any consistency, it's a pretty clear editorial bias towards Xerces over JAXP early in the book, including a special chapter on parser tricks specifically for Xerces. No real surprise there, as several of the others have been key contributors to IBM's open source project. Still, it's poor form to be using the pages of a learning guide to talk smack about one over the other, if for no other reason than the fact that it becomes a distraction to somebody who's trying to learn with an open mind towards all the possibilities. If a comparison is absolutely necessary, it deserves its own chapter away from the rest of the learning material. This brings up another problem, in that by mixing JAXP and Xerces techniques together early on, you run the risk of overwhelming a neophite who'd be glad to figure out just one way of doing things. There's already a marked difference between DOM and SAX parsing, and doubling this with the duality of JAXP vs. Xerces makes for an introduction that's a little too busy.
Also, what was mentioned in the previous section as one of this book's strengths is also a bit of an audience-limiter. If you try coming to this book without a solid founding in Java, there's a decent chance you'll find it difficult to get into this book. People who are already soured on Java will likely find their distaste further entrenched, and it's doubtful that anything beyond the most conceptual of the subject matter will be portable.
ConclusionThere's something to be said for bringing in the biggest authorities in the field to present a subject -- however, it's one thing to know a subject and another thing completely to know how to teach that subject well. John Madden once said that the best teachers are the ones who got C in school because they're the ones who best understand the intellectual bumps and bruises that can come from learning a new subject, and can help prepare and guide a student through them. There are no C students in this bunch -- readers are left to their own devices to keep up with the authors and fight through the numerous obstacles to get at the core knowledge within, which is admittedly impressive enough. Far be it for a lowly Slashdot contributor to tell the folks at Addison Wesley how to do their job, but on a third edition they might want to put the material through a stronger editorial filter to make things a little easier on the reader. This is definitely a book to preview in the bookstore very carefully before considering a purchase.
Table of Contents Preface.
1. Web Application, XML, and Java.
2. Parsing XML Documents.
3. Generating XML Documents.
4. Working with DOM.
5. Working with SAX.
6. Parser Tricks.
7. XPath and XSLT.
8. Bridging Application Data Structure and XML.
9. Working with Schemas: Datatypes and Namespaces.
10. XML Application Server.
11. XML and Database.
12. XML Messaging.
13. Web Services.
14. Security.
15. Data Binding.
16. Principles of Schema Languages.
Appendix A. About the CD-ROM.
Appendix B. Useful Links and Books.
Appendix C. XML-Related Standardized Activities.
Appendix D. JDBC Primer. Related Links Addison-Welsey website
W3C's XML page
Sun's Java page
You can purchase XML and Java, Developing Web Applications from bn.com. Slashdot welcomes readers' book reviews -- to submit yours, read the book review guidelines, then visit the submission page. -
Managing and Using MySQL: Second Edition
Geekboy(Wizard) writes: "MySQL has been used as a database for many sites and products. The U.S. Census Bureau, Slashdot, Yahoo Finance, and many other high-traffic web sites use MySQL for their database needs. It is a popular choice for databases, as it is GPL'd and thus free from costly licenses. If you need to use it in a proprietary application, you can purchase a non-GPL'd version from MySQL AB." Read on for Geekboy's review of Managing and Using MySQL: Second Edition, which he describes as "the only thing you /need/ to make a usable database." Managing and Using MySQL: Second Edition author George Reese, Randy Jay Yarger and Tim King, with Hugh E. Williams pages 425 publisher O'Reilly & Associates rating 9/10 reviewer Peter Hessler ISBN 0596002114 summary Step by step tutorial to using MySQL, with included tools, and your favorites.Managing and Using MySQL: 2nd Edition assumes that the reader has a little knowledge of databases, although some of the commands are difficult to get your head around until you have a database to test them on. Sample commands, and output for them are shown in the book, but a sample database isn't shown until chapter 9. MySQL took me through 'MySQL land' with the greatest of ease. Aside from the lack of a test database in the beginning, everything was very well laid out. It started with the basics, and worked up to full implementation and administration.
Part I introduces the reader to MySQL. It begins with a nice history, design elements, features and what you would want to use MySQL with. Nicely detailed instructions for downloading, and installing the current version. Information is provided for Unix, and Windows systems, with examples for FreeBSD 4 and Windows 2000. Basic SQL commands are presented, with sample queries and relevant results.
Part II introduces the reader to tuning, securing and designing the database. Several pitfalls are described, along with instructions for avoiding them. The realm of tuning is divided into application tuning, database tuning, and operating system/hardware tuning. Security is discussed from all aspects, but a database that has security concerns will need extensive testing and evaluation. Database design starts with the design on paper, with both the theoretical, and practical aspects. Once the paper design is drawn out, MySQL assists the reader through the actual making of the database.
Part III describes integrating the database into your favorite programming/scripting language. In the opening paragraph of chapter 12, The C API, the author states: "In this book, we examine several different programming languages: Python, Java, Perl, PHP and C. Among these languages, C is by far the most challenging." The information was presented in a way that readers who are new to C would have small difficulties with, and that intermediate and advanced users would find quite useful. The authors presented enough information, that I was able to write programs that interfaced with MySQL in less than 10 minutes. Perl scripts are presented in the same way. Knowledge of the language you will be integrating MySQL into is necessary, but the book presents and explains the rest of the information.
Part IV is the reference portion of the book. All great books that teach contain a reference section, and this book is no exception. The basic SQL syntax and command set are described, as well as the data types, numeric, string, date, and complex. Operations and functions are explained, as well as their order preference. The PHP API, the C API, and the Python DB-API are also fleshed out in nice detail.
Overall, the authors have an excellent introduction to SQL databases, and MySQL. Full examples are included for each topic, with full explanations. The only things I would change, would be to have a sample database in the beginning of the book, and to have a copy of that database online.
Table of Contents
Part I (Chapters 1 - 4) Introduction
1 MySQL
2 Installation
3 SQL According to MySQL
4 Database Administration
Part II (Chapters 5 - 7) MySQL Administration
5 Performance Turning
6 Security
7 Database Design
Part III (Chapters 8 - 14) MySQL Programming
8 Database Applications
9 Perl
10 Python
11 PHP
12 C API
13 Java
14 Extending MySQL
Part IV (Chapters 15 - 20) MySQL Reference
15 SQL Syntax for MySQL
16 MySQL Data Types
17 Operations and Functions
18 MySQL PHP API Reference
19 C Reference
20 The Python DB-API
Index
You can purchase Managing and Using MySQL: Second Edition from bn.com. Slashdot welcomes readers' book reviews -- to submit yours, read the book review guidelines, then visit the submission page. -
802.11 Networks, The Definitive Guide
cpfeifer writes with the review below of O'Reilly's 802.11 Wireless Networks: The Definitive Guide; he warns that this is not a book for everyone setting up a casual home wireless network, but says it's excellent for its intended audience. Read on for his complete review. 802.11 Wireless Networks : The Definitive Guide author Matthew S. Gast pages 443 publisher O�Reilly & Associates rating 9/10 reviewer cpfeifer ISBN 0-596-00183-5 summary A thorough survey of the features, issues and potential solutions of deploying 802.11 based wireless networks.
The ScenarioFor a lot of folks, implementing an 802.11 network involves selecting and purchasing an access point and adapter cards, and installing or compiling the proper drivers. From there, we are off and running, usually in under an hour. However for the few, the proud, the sysadmins of the world it's a whole different ballgame. Sysadmins need a deeper understanding of network technologies to be able effectively design, deploy and debug them.
What's Bad?Most of the book is right on the mark when it comes to the sysadmin audience, however chapters 8 (the PCF, for contention free service), 10 (the ISM PHYs) and 11 (802.11a overview) are only of interest to folks who are implementing 802.11 hardware, IMHO. These chapters contain very low-level material about the 802.11 transmission protocol, and will not be generally useful since equipment manufacturers do not provide access to this layer. A dead giveaway that you can skip over chapter 8 is the phrase "The PCF has not been widely implemented." If it's not widely implemented, chances are you won't have the option of using it in a deployment.
After this bellycrawl through the weeds, chapters 12 and 14 give click-by-click instructions for installing two commercially available 802.11 access point/client adapter pairs on your Windows box. The selected products are Nokia's A032 Access Point along with their C110/C111 and Lucent's Orinoco (formerly WaveLan) Access Point and client adapter. It's worth noting that these are two of the most expensive 802.11 solutions available on the market and have enhanced features that are not present in other models. These chapters are simply rehashed vendor installation documentation for these products and provide very little added value. There's nothing that I hate more than paying $30-$50 for a book which repackages documentation that is freely available on the web. Skip these chapters; the rest of the book is excellent.
What's Good?This book starts off with six strong chapters that cover the 802.11 protocol specification, why WEP is vulnerable, and some upcoming security specifications. The first six chapters are invaluable reading for any sysadmin that is planning (or already responsible) for an 802.11 deployment. This is your ammunition when users come and ask why the wireless network is slower than the wired network with fewer users (preventing contention adds more overhead in wireless) or why they really really should tunnel every wireless connection over SSH (because WEP is fundamentally flawed). The chapter that covers the current WEP implementation demystifies the "40 bit" vs. "64 bit" key-length sleight of hand that some vendors play. The standard WEP key length is 64 bits. However, 24 of those bits are used as WEP's initialization vector for the RC4 cipher. These bits aren't encrypted in an 802.11 packet, so by sniffing 802.11 traffic you can examine the IVs of the packets and see how many distinct keys are in use, and even retrieve the actual key once you have captured enough packets. AirSnort retrieves WEP keys by implementing the Fluhrer/Martin/Shamir attack (orig paper, Stubblefield paper). Chapter 16 covers using tools such as Airsnort and Ethereal to analyze the 802.11 traffic on your network. Remember to use your powers for good and not evil.
The final 3 chapters address deployment, analysis and tuning of 802.11 networks. These chapters, combined with the first six are the heart of this book and the whole motivation for buying the book. The analysis chapter has a particularly wonderful section about gathering user requirements with respect to 802.11 specific issues (security requirements, roaming ...) and a very practical section about physical installation that clearly illustrates the author's mastery of integrating 802.11 technologies into an existing infrastructure.
So What's In It For Me?If you're an sysadmin and implementing 802.11 technologies is on the horizon, this book is a solid reference of the current state of 802.11 solutions, both good and bad. It pulls no punches in presenting issues and weaknesses with the current solutions and documents forthcoming standards that are being proposed or developed to address them. If you're considering a smaller deployment at home, the security aspects of the text are still applicable, but the design/deployment sections are more rigorous than you will need. There is a bit of starch (repackaged vendor installation documentation) and unnecessary details (knowing that 802.11 frequency hopping uses Gaussian frequency shift keying is good for impressing women at parties, but doesn't really impact the design/deployment of an 802.11 network) but the other chapters redeem themselves and make this a very valuable text.
Table of Contents- Preface
- Introduction to Wireless Networks
- Overview of 802.11 Networks
- The 802.11 MAC
- 802.11 Framing in Detail
- Wired Equivalent Privacy (WEP)
- Security, Take 2: 802.1x
- Management Operations
- Contention-Free Service with the PCF
- Physical Layer Overview
- The ISM PHYs: FH, DS, and HR/DS
- 802.11a: 5-GHz OFDM PHY
- Using 802.11 on Windows
- Using 802.11 on Linux
- Using 802.11 Access Points
- 802.11 Network Deployment
- 802.11 Network Analysis
- 802.11 Performance Tuning
- The Future, at Least for 802.11
- 802.11 MIB
- 802.11 on the Macintosh
- Glossary
- Index
You can purchase 802.11 Wireless Networks : The Definitive Guide from bn.com. Slashdot welcomes readers' book reviews -- to submit yours, read the book review guidelines, then visit the submission page. -
Built For Use
Teresa Esser writes "Karen Donoghue's new book, Built for Use: Driving Profitability Through the User Experience was clearly written for marketing professionals and upper level managers. Slashdot readers may find that some of the material in this book is intuitively obvious. But it's great to have a book like this on your shelf when you're trying to have a discussion with a co-worker who doesn't understand why corporate Web sites need to be user-friendly." Read on for the rest of her below. Built for Use: Driving Profitability Through the User Experience author Karen Donoghue pages 262 publisher McGraw Hill rating 9 -- great for its intended audience reviewer Teresa Esser ISBN 0071383042 summary Provides important information about how to make corporate Web sites user-friendlyBuilt for Use is the kind of book that can be slipped under a door or surreptitiously dropped into a mailbox to make a point without wasting time on yet another useless conversation.
The book is filled with tidbits like:
- The best Web sites don't necessarily come from the best designers.
- Frustrated artists with nose rings and black turtlenecks should not be allowed to turn a company's Web site into a piece of experimental non-performance art.
- Flashing lights are great for Las Vegas, but who wants to work in Las Vegas?
Usability is not, and never has been, sexy. Grayscale sites like Yahoo! deliver value to their users because they load almost instantly and provide access to the things that people want.
This is basic, logical, intuitively obvious stuff. Yet it seems like a lot of this material is completely foreign to many of the people who make the final decisions about what corporate Web sites are going to look like.
As we move forward into a world where EZ-Passes will be used to finance fast-food purchases and where nanotechnologies will be woven into the threads of our jeans, it's important to learn -- and learn quickly -- that sexier is not always better.
Before companies sink millions of dollars into the development of yet another annoying and impossible-to-use Web site, they need to ask themselves:
- Can the site be used by its intended audience?
- Do the customers understand the language on the site?
- Are the customers' computers fast enough to download all of the relevant material?
- Are the customers savvy enough to find their way to the cash register?
- Will the cash register accept the customers' money?
- Is the system completely integrated with the company's back-end software?
- If you call the company on the phone, will you get the same experience that you get when you visit the corporate Web site?
If you say that you have sold me something, and you charge my credit card, then you had better deliver that thing to my door, and soon, or you will lose my trust.
Slapping a Good Housekeeping Seal of Approval type "trust" sticker on some Web site does not build customer loyalty. Customer loyalty needs to be earned, one transaction at a time.
Could you imagine how annoying the world would be if retail clothing chains like The Gap put invisible trip-wires in front of their clothing racks, so that whenever you reached for a pair of khakis you crashed to the ground?
Could you imagine how annoying the world would be if retail stores covered all of their cash registers with a layer of Saran Wrap?
That's basically what some Web sites are doing now. If a retail site looks great but you can't use it to buy anything, or to access interesting content, then the site stinks.
If you work with marketers who desperately need to know a thing or two about user-experience strategy -- or maybe all nine -- hand them a copy of Built for Use. It will save time, and they'll praise you for allowing them to discover the truth on their own.
This book has a website, located at http://www.humanlogic.com/. You can purchase Built for Use from bn.com. Slashdot welcomes readers' book reviews -- to submit yours, read the book review guidelines, then visit the submission page. -
Learning Wireless Java
prostoalex writes: "Teaching developers to program for wireless platforms is probably not an easy task, since there are just so many focus groups in your audience. This book assumes that reader is already familiar with J2EE concepts, has programmed Java and knows the basic APIs for string manipulation and mathematical operations. Learning Wireless Java was a part of my first-month Safari subscription, and since learning to program for Java-enabled phones was a specific task I set for myself, there were some other books on the list that taught you the details of J2ME." Learning Wireless Java (1st Ed.) author Qusay Mahmoud pages 262 publisher O'Reilly rating 9 reviewer Alex Moskalyuk ISBN 0596002432 summary Java developers� guide to programming wireless devicesQusay Mahmoud's text starts off with an introduction to the Java wireless platform, which includes learning about a good deal of four-letter abbreviations, among which are J2ME, CLDC, and MIDP. In fact, the first three chapters of the book offer a detailed explanation of what those platforms are, what they provide, and how they differ. For those who have done some J2ME programming before, this might seem a bit too detailed, but for beginners venturing into the wireless world these chapters offer helpful information on where to start, what software to download on your machine and what different software packages represent.
In fact, the author goes into detailed explanations of each software package that you need to download in order to start developing for J2ME, and most of the examples, such as setting the path and required system variables, provide step-by-step information for both Windows and Linux platforms.
You don't get to write your own MIDlet until chapter 4, and by that time you should be pretty comfortable with the terminology and abbreviations used throughout the book. Most of the examples in the early chapters of the book involve working with the command-line compiler, and only in section 4.2.6 does the author introduce the J2ME Wireless Toolkit IDE.
The rest of the chapters are concentrate heavily on the classes provided with the J2ME platform. Chapter 5 gives an overview of MIDP GUI programming with abundant examples and source code. Chapter 6 goes into MIDP event handling, where you learn about the ways users interact with their cellular phones and how all those button pushes are interpreted by the K Virtual Machine. Chapter 7 deals with networking issues (you actually get to write your own J2ME application for accessing the server), and Chapter 8 provides an introduction to database programming and storing non-volatile data on J2ME phones. While the application examples are definitely helpful, well-written and commented, I wish the author would spend more time discussing the hardware implementation of server-client communications, since it's not precisely clear how you can test your J2ME Internet-enabled applications on a real phone without calling your cellular operator and using up valuable minutes.
There is also a chapter on Palm OS programming, which was of limited value to me, and thus cannot be properly evaluated in this review. The appendices are very nice, and include the information that most of the developers would probably find very relevant. Appendices A, B, C, D, E, F and G include descriptions of such J2ME API libraries as java.io, java.lang, and java.util (even though the names are the same as J2EE versions, don't be tricked -- to save space, a lot of classes didn't make it to J2ME) as well as complete javax.microedition reference.
The book is a worthwhile read, easy to understand and follow if you have a good knowledge of Java behind you, and can definitely give you a good introduction to wireless development.
You can purchase Learning Wireless Java from bn.com. Slashdot welcomes readers' book reviews -- to submit yours, read the book review guidelines, then visit the submission page. -
Virtual Machine Design and Implementation in C/C++
wackybrit writes: "The concept of the virtual machine is one of the most important concepts in computer science today. Emulators use virtual machines, operating systems use virtual machines (Microsoft's .NET), and programming languages use virtual machines (Perl, Java)". Read on for his review of Virtual Machine Design and Implementation in C/C++, an attempt to examine and explain virtual machines and the concepts which allow them to exist. Virtual Machine Design and Implementation in C/C++ author Bill Blunden pages 670 publisher Wordware Publishing rating 9 reviewer Peter Cooper ISBN 1-55622-903-8 summary An in-depth look at virtual machines, assemblers, debuggers, and system architecture in general.Virtual machines are, in effect, a software model of a whole system architecture and processor. They take in bytecode (formed of opcodes, operands, and other data) and execute it, much in the same way a real system executes code. Running these operations in software, however, gives you more security, and total control over how the system works.
Virtual machines are popular for a number of reasons. The first is that they give programmers a third compiler option. You don't have to either go the dynamic interpreted route or the static compiled route, you can compile for a virtual machine instead. Another is that virtual machines aid portability. If you compile your code for a virtual machine, you can run that binary on any system to which the virtual machine has been ported.
Few books have been written on virtual machines, with only a few Java Virtual Machine titles available. Virtual Machine Design and Implementation by Bill Blunden is therefore a landmark book for anyone with an interest in virtual machines, or even system and processor architecture as a whole.
What's to Like?Blunden makes sure to cover every topic related to virtual machines in extreme depth. The beauty of this is that you're not left in the dark, but that experts can simply skip sections. The book is well divided up, and off topic rants or notes are clearly marked with dividers. This is an easy book to read, even though it runs to some 650 pages.
To lead the reader through the entire production of a virtual machine, Blunden showcases the development of his own 'HEC' virtual machine (HEC being one of the fictional companies in 'CPU Wars'). Initially he starts slowly, and introduces the reader to how CPUs work, how memory works, how paging works, and how almost any other system process you can imagine works. Nothing is missed out. Multitasking, threads, processes, porting.. he covers it all. This is excellent for those new to some of these topics, and makes this an advanced book that's actually quite readable by someone with a modicum of computer science experience.
After laying down the foundations for the design of the virtual machine, the actual development starts in Chapter 3. All of the code in this book is in C or C++, and nearly all of the code is talks about is actually printed on the right pages in the book. No more flipping between code on your computer and the book, it's all just where it should be!
Further on in the book, a number of extremely advanced concepts are introduced, but even these need not be out of the reach of an intermediate programmer. Blunden presents the most vivid insight into how assemblers and debuggers are created, and the book is worth it for this information alone.
Another important thing about this book is that it looks at creating a register based virtual machine. Stack based virtual machines are covered, but the author makes a compelling argument for using registers. This makes a refreshing change from the Java Virtual Machine books that ram stack based theory down your throat. It's also useful if you're interested in the Perl 6 'Parrot' project, which is also an in-development register based virtual machine, and bound to become rather important over the next few years.
What's to Consider?Virtual machines aren't for everyone. If you're a high level programmer working with database apps, this isn't really for you. This book is primarily for system engineers, low level programmers, and hobbyists with an interest in compilation, assembler, and virtual machine theory.
This is not a book for beginners. You need to have a reasonable knowledge of C to understand the plentiful examples and source code in the book. C++ is also useful, although OOP is clearly explained, so even a standard C programmer could follow it. That said, this is an excellent book for intermediate programmers or computer science students, as a number of advanced topics (garbage collection, memory management, assembler construction, paging, token parsing) are dealt with in a very easy to understand way.
The SummaryReleased in March 2002, this book is extremely up to date. This is good news, as virtual machines are clearly going to take up a good part of future compiler and operating system technology, and this makes it important to learn about their construction and operation now. These technologies are already in the marketplace; Microsoft's .NET, and JVM, for example. Perl 6's 'Parrot' is also going to become a big player, with languages like Ruby, Python, and Scheme being able to run on it in the future.
Whether you want to learn about system architecture, assembler construction, or just have a reasonably fun programming-related read, this book is great.
Table of Contents- History and Goals
- Basic Execution Environment
- Virtual Machine Implementation
- The HEC Debugger
- Assembler Implementation
- Virtual Machine Interrupts
- HEC Assembly Language
- Advanced Topics
You can purchase Virtual Machine Design and Implementation in C/C++ from bn.com. Slashdot welcomes readers' book reviews -- to submit yours, read the book review guidelines, then visit the submission page. -
The Practical SQL Handbook: Using SQL Variants (4th ed.)
Continuing the grand tradition of reviewing computer texts sent to us by publishers, Slashdot author chrisd has read the book The Practical SQL Handbook: Using SQL Variants and written up a review. If you are interested, read on ... The Practical SQL Handbook, 4th Edition, SQL Variant author Judith S. Bowman, Sandra L. Emerson, Marcy Darnovsky pages 512 publisher Addison Wesley rating 9 reviewer chrisd ISBN 0201703092 summary An indispensable introduction to SQL. This is probably one of the best books I've read for those new to SQL. It's the kind of book I wish I had many years ago when I was first learning about databases. The only problem is the SQL variants are not really for me, a developer uninterested in Oracle, MS-SQL, Sybase or Informix. That said, this is a minor part of the book and doesn't really detract from it, and I can even come up with any number of reasons why a developer would want to have that information. A comparative text would be useful by itself, but I think that trying to teach SQL and several SQL variants is too big a job for any one book.The books introductory text on SQL is clear and concise. I also found its treatment of normalization to be as close to perfect as can be with one exception: It doesn't tell when you can go too far with normalization. In an introductory text this is acceptable, and perhaps wise considering what many new to relational databases consider acceptable database design.
And while the introductory chapter is great, the chapters on selects and joins is so clear and useful that I would even call it exciting. The terrific thing about this book is when you have finished reading it you should come away with a feel for how the underlying DB actually works and what it is doing to produce the data for you.
I personally found this book very useful, even though I am using MySQL for the application I'm writing. But the feature set that MySQL chooses to support will logically limit the usefulness of the this book for the MySQL user. Programmers developing for Postgres, Firebird, and others will obviously get much more out of the book and its treatments on subqueries and views than will MySQL users.
One thing that did turn me off is the inclusion of a CD-ROM. The CD has a copy of Sybase for the user to work with. I don't need to explain that the internet is a superior place to put such things. That said, at least it wasn't glued to the back cover (a pet peeve) and was instead bound into the book like a magazine reply card. Many publishers perceive that they can charge more for a book that has a CD, but I just find it annoying and wasteful. But that's hardly a reason not to buy this book and place it on your bookshelf in a prominent position, not on the bottom ghetto shelves next to the stack of paper for your printer.
In short, those looking for an book about SQL, that won't teach them bad habits would be well served by this book (and likely by its sister book, The Practical SQL Handbook: Using Structured Query Language by the same authors) and those who think they know SQL will find it a useful text to have handy as well.
You can purchase The Practical SQL Handbook: Using SQL Variants from bn.com. Slashdot welcomes readers' book reviews -- to submit yours, read the book review guidelines, then visit the submission page. -
Memoirs Found in a Bathtub
Brooks Talley writes: "Stanislaw Lem's Memoirs Found in a Bathtub is vaguely reminiscent of Heller's Catch-22 and positively reminiscent of Kafka's The Castle. If you like dystopian works that expose the inherent absurdity of authoritarian bureaucracies, MFiaB is a book for you. I really can't recommend this alternately funny, sad, astonishing, silly, and disturbing book highly enough." Read on for the rest of Brooks' review. Memoirs Found in a Bathtub author Stainislaw Lem pages 200 publisher Harvest Books rating 9 reviewer Brooks Talley ISBN 0156585855 summary A dizzying voyage into the world of a paranoid bureaucracyI have some history with Lem's work. Years back, I went on a serious Stanislaw Lem bender. I read and loved pretty much all of his stuff. So it came as a surprise to me to run across Memoirs Found in a Bathtub (hereafter MFiaB). It was published in 1971, so it was certainly out and available when I was reading Lem left and right; I must have just missed it somehow.
And in a way I'm happy that I left accidentally left my future self this treat. MFiaB is a fantastic piece of work. I won't give away any spoilers that happen after the first ten pages or so. The setup alone, though, is pretty representative of what you're in for if you pick up this book.
MFiaB is perhaps the most overtly political thing I've read from Lem, which is saying a lot: Lem specializes in parables and satire that expose the absurdity of modern life in general and politics in particular. MFiaB tells the first-person story of a man who lives in "the Building." The Building is an entirely self-contained society that the book explains was built when the United States and Russia both relocated their critical governmental functions to isolated bunkers after the appearance of a paper-eating bacteria destroyed civilization as we know it.
It seems that the Building is at war with the Anti-Building, and it's a fierce war between two incredible bureaucracies. Everyone is a potential spy, most people could be double agents, triple agents aren't uncommon, and the recent appearance of quadruple, quintuple, sextuple and even septuple agents has really increased the confusion and paranoia level. Of course, agents aren't just working for the Building or anti-Building -- the various departments and fiefdoms within the Building itself spy on each other and attempt to unmask each others' agents.
The story is told in the first-person by a cadet of some sort in the Building. His name is never mentioned in the book, a parallel to Kafka's The Castle where the protagonist is referred to only as "K." As with The Castle, our protagonist is sometimes very sympathetic and sometimes very frustrating; it's clear who we're following, but I was never quite clear what to think of the fellow.
In marked contrast to The Castle, though, our protagonist in MFiaB starts out by receiving a Mission. A Secret Mission, from the Commander in Chief himself. Or maybe it was the Chief Commander - or maybe someone else entirely. Problem is, his superiors won't tell him what the mission is, let alone the proper chain of command to clarify it. Through accidental subterfuge and persistence, he finally corners someone into providing his mission briefing, however some part of the officialdom steals it back before he can read more than the first somewhat disturbing page. (According to the one page he has time to read, phase one of his mission involves cornering his superiors and forcing them to provide the mission briefing.) However, it's possible that pursuing the ambiguity of the mission is his mission, so he's duty-bound to get on about it. Besides, he really doesn't know what else to do.
It goes on from there. A serious reflection of cold-war paranoia and partisanship, MFiaB is an exploration of how a closed, bureaucratic, paranoid society can become dependent on its own closed, bureaucratic, paranoid ways to the point where any attempt to introduce sanity is an act of treason.
While the book centers on the claustrophobic / claustrophilic society in the Building, it's not at all abstract and detached -- there are several fairly violent scenes, and at least one suicide. Not to mention numerous arrests, betrayals which might actually be assistance, and other more ambiguous but just as disturbing events. MFiaB really succeeds in bringing home the mental-health effects of constant vigilance and its inevitable descent into paranoia. Again like Catch-22 or The Castle, MFiaB succeeds as a comedy, a tragedy, a farce, and a cautionary tale. I found myself reading some sentences a couple of times and getting completely different feelings from them each time.
If you haven't read Lem before, this may or may not be a good place to start. MFiaB is dense, and dizzying. If you've got a penchant for traditional literature, MFiaB is probably an excellent introduction to Lem. The use of language, neologisms, and wordplay is amazing, the more so because the book is translated from Lem's native Polish.
If you're looking for a lighter and quicker read that is still representative of Lem at his best, I'd probably recommend the also-excellent Futurological Congress. For short story fans, Tales of Prix the Pilot is an good choice. If you're willing to put some energy into it, though, MFiaB is certainly well worth the investment of time and energy, and really puts all of Lem's formidable skills to use in service of a great story. Highly recommended.
You can purchase Memoirs Found in a Bathtub from bn.com. Slashdot welcomes readers' book reviews -- to submit yours, read the book review guidelines, then visit the submission page. -
The Owner-Builder Book
Jeff Lewis writes: My first house was a simple tract home that did not even have phone lines in two of the three bedrooms. A few months after I moved into this first house, a friend of mine invited us over to the house they were building. For $20,000 more than I had paid to purchase this little 1,500 SF tract home, my friend had built a 4,400 SF custom home. And he had not done any of the work himself." If you're considering home ownership, and especially if you want to design in the things which ordinary houses don't take into account (here are two more related stories: one, two), this sounds like a useful resource. Read on for the rest of Jeff's review. The Owner-Builder Book author Mark and Elaine Smith pages 314 publisher Consensus Group, Inc. rating 9 reviewer Jeff Lewis ISBN 0966142837 summary How to save money by being your own general contractor.So a few years latter when I decided that I could afford a new home, I asked my friend how he had built such an amazing house for so little. He pointed me to "The Owner-Builder Book." When I saw the subtitle to the book, I was a little suspicious: "How you can save over $100,000 in the building of your custom home." I had seen a few too many infomercials making similar promises, but my friend had done it, so I figured that I could too.
Now, a year later, I have completed building my $550,000 home for $320,000. Much of my 41% savings can be directly attributed to this book:
Chapter 1: You Can Save $100,000
Chapter 2: Learn The Wealth-Building Secret
This is the pep-talk part of the book written to give you incentive to read the next 300 or so pages. This chapter talks about how custom homebuilders know and use the ideas in this book all the time. Ever seen an ad for a "builder's own home"? Why are they always the upper-end homes? Hmm.Chapter 3: Contractors Aren't What You Think They Are
Chapter 4: You Can Manage Better Than a Contractor
Chapter 5: You Will Profit By Building a True Custom House
These chapters dispel myths about contractors. Hint: A contractor is very simply a project manager, and usually not a very good one at that. Among other things, they rarely shop around for better material prices. They usually use the same lumberyard that they have always gone to. I saved over $20,000 just by telling my framer that I was going to purchase the materials from a different lumberyard, all he had to do was give me the list.Chapter 6: Conquer Details Room By Room and Save 20%
Chapter 7: How to Get the Subs on Your Side
Chapter 8: How to Build a Budget That is a Powerful Miracle Tool
Chapter 9: Commando Shopping Techniques
Chapter 10: How to Schedule the Work at a Savings
These chapters talk about how to actually save money: The key points are planning, getting down the details of exactly what you want, (i.e. I want two phone outlets in every room with two strands of cat5 and coax.), and make sure to shop around. As an example, I had bids ranging from $5,000 to $15,000 for my electrical. One would assume that with 5G's you would get less than with 15G's, right? Not necessarily: for $5,000 I got everything that I wanted, plus I was able to add a bunch of outlets that I hadn't thought of at the last minute for free cause the subcontractor was a nice guy. Now I love that TV above Jacuzzi tub.Chapter 11: How to Make Your Lender Swoon
Chapter 12: Paperwork Before You Begin
Chapter 13: Six Months to Victory
These chapters help you get the paperwork ready that you will need throughout the process. Remember contracts with liquidated damages and lien release forms! I only had problems with one subcontractor that my wife had been responsible to get fill out our contract with and had never done it. But, luckily their own contract, which my wife had signed with them, covered most of what we needed. I even got to keep an extra $2,000 dollars because they didn't have time to come back and stain the stairs. Let's see, $50 in stain and supplies, 3 hours time. Yeah, I'll take the $2,000.Chapter 14: Smooth Execution Saves Money and Improves Quality
Chapter 15: Mistakes You Can Avoid And Successes You Can Achieve
These chapters drill into your head what planning and details mean. I had one major problem over the course of building my home. The truss company built my trusses wrong. It took them three more tries and fourweeks to get me a completed set. Because of my contracts and planning, I cut the cost of the trusses by almost half, but the time hit was the most damaging. My total time to completion was 7.5 months. I had planned for 6.Chapter 16: If You Decide to Use a Contractor
The final chapter discusses how to choose and work with a general contractor if you decide that being your own general is too much for you.Conclusion
Don't leave with any illusions: this book will not build a custom home for you. By planning and following through on the information in this book, you too can build your dream home.
The first page of each chapter is available online at: http://ownerbuilderbook.com/book/Ch1.cfm, and a free CD-ROM with software templates for budgets, contracts, the entire book in MP3 format, and a previous edition of the eBook in PDF format is available. You can purchase The Owner-Builder Book from bn.com. Slashdot welcomes readers' book reviews -- to submit yours, read the book review guidelines, then hit the submission page. -
Java Meets XP: Two Reviews
Peter Wayner writes: "In a world where Ali had to meet Frazier and Luke had to meet his father, it was only a matter of time before buzzwords like Java and eXtreme Programming found themselves together on the same marquee. A pair of new books examines some open source Java development tools and outlines how they can be put to use by those trying to master their workload by adopting the techniques of eXtreme programming." Read on for his latest review, which is really two reviews in one. (see each) author (see each) pages (see each) publisher (see each) rating (see each) reviewer Peter Wayner ISBN (see each) summary Two books which explore the use of Ant in Java software developmentThe two books are excellent examples of how the book industry organizes and disciplines the often crazy explosion of new tools, approaches, structures and metaphors developed by the software industry. Ant: The Definitive Guide by Jesse Tilly and Eric Burke comes from O'Reilly, the masters of producing missing manuals for open source projects. The other, Java Tools for eXtreme Programming: Mastering Open Source Tools including Ant, JUnit, and Cactus by Richard Hightower and Nicholas Lesiecki was published by John Wiley and Sons. Both provide a clear, example-driven exploration of the tools at hand.
The books are probably driven by the success of Kent Beck's Extreme Programming Explained: Embrace Change , a manifesto that outlined Beck's belief that the best way to develop code was with small teams of programmers and users who constantly reworked the software. His most controversial and attention grabbing notion demanded that the programmers work in pairs sharing one computer, one mouse and one keyboard. The constant interaction forced everyone to actually communicate with each other without sending emails and that, more than anything else, may be responsible for the success of his vision. His book spawned a few others on how programmers can plan to apply his vision.
Meanwhile, on the other side of the buzzword galaxy, the Apache group was quietly creating some of the coolest Java development and deployment tools around. Ant was and still is one of the most revolutionary, even though it was just a simple reworking of the classic UNIX make command. Its creator, James Davidson, grew so frustrated with the shell interface of the make command that he wrote a Java-centric version that moved all of the compilation, compression, and distribution inside one Java process. Now, no one has to wait for another Java Virtual Machine to start up to compile each class file independently.
While Davidson's Ant isn't much different than make at first glance, it's hard to overestimate the power of giving programmers a clever tool with plenty of hooks into the development process. Anyone can write new tasks for Ant, and some clever folks have built great new widgets that do things like enforce style guidelines or grab new code from a CVS tree. The structure of Ant lets the programmer dig deeply into the build process. The organic growth and dynamic flexibility shows how close Java can be to Lisp.
Tilly and Burke do a good job capturing the spirit of the tool. Their book follows O'Reilly's time-tested and market-proven simple-examples technique to illustrate how to use Ant for your projects. The chapters in the first half of the book outline how to use and extend Ant for your project. The strength of the book may be the way the authors casually include practical advice about the bugs and idiosyncracies of the tool. While Ant is quite capable, there are a number of little limitations to the XML parser that can drive new users a bit nuts. The second half of the book is a detailed description of the API, the data types and the other practical documentation.
In one sense, it's not really fair to lump this book in with all of this gloss about Extreme Programming. because it's just another methodical O'Reilly book with Dover artwork on the cover. It's important to realize that these tools aren't directly tied to the extreme programming movement. Ant was just created by a Java programmer who hated to wait. Everything else came afterwards when he opened the API.
Ant: The Definitive Guide author Jesse Tilly & Eric M. Burke pages 260 publisher O'Reilly rating 7 ISBN 0-597-00184-3 summary A methodical, in-depth look at the Java tool.The other book, however, explicitly illustrates how some popular open source tools can help the process of extreme programming. Hightower and Lesiecki's book is much broader than Tilly and Burke's because they want to tackle so much more. They don't want to just provide a missing manual for the tool-- they want to give the world a road map on how they use Ant and its cousins JUnit, HTTPUnit, and Cactus to build better applications. It should be noted that Hightower and Lesiecki work for a consulting group called eBlox and a number of other eBlox programmers are listed as contributors to the book. I think it's fair to say that anyone who hires eBlox will get eXtreme Programming results built with this methodology.
The best part about this book is the wide scope. Ant remains the central taskmaster responsible for building the software, but the book explains how to incorporate other tools for testing the software. The authors embrace one of the extreme programming central beliefs that programmers should define how to test their code before it is actually written. The book explains how to use JUnit, Cactus, and HTTPUnit to set up rules to test every class file. After ANT fires up the compiler, it turns around and runs the tests on the code.
Java Tools for eXtreme Programming author Richard Hightower and Nicholas Lesiecki pages 513 publisher John Wiley and Sons rating 7 ISBN 0-471-20708-X summary How to use some Java tools to transform extreme programming theory into reality.I don't think that eXtreme Programming or any of these tools is the last word on the subject. The biggest problem is that testing a piece of code is guaranteed to be fairly rudimentary. No programmer can come up with test cases to push all of buttons in all possible combinations. The structure and discipline provided by this approach can help, but the book makes it clear that no amount of pairs programming or extremism will remove the need for the guidance of good programmers.
If anything these tools and the books about them should serve as inspiration for the next round of tools even more focused on extreme programming. The tools are impressive, but there is plenty of room for more innovation. None of them is aimed at explicitly coordinating the work of multiple developers and none of them is designed to provide much structure to the refactoring process. These areas are still very much arts, but there's no reason why tool suites like Ant can't evolve some rational approach to solving them. Perhaps the Slashdot audience can provide some informative postings with pointers to the next generation of cool tools.
Hightower and Lesiecki's book feels a bit more rudimentary and basic than Tilly and Burke's, in part because they cover so much more ground. Although their book is broader, it doesn't go into as much depth about Ant as Tilly and Burke's. The examples are simpler, too, and Hightower and Liesiecki seem mainly interested in getting you excited about building and testing software with the tools. There just isn't as much room for details. If you're interested in learning as much as you can about Ant, choose the book devoted to it. If you want to learn how to use a diverse set of tools to build and test your program in an extreme way, go for that book.
Peter Wayner blends the buzzwords of security, privacy, and data warehousing together in his latest book, Translucent Databases. It shows how to ensure that only the right people see the right information and the wrong people get nothing. His other new book, Disappearing Cryptography, mixes the buzzwords of being, nothingness, steganography, and cryptography. You can purchase both Ant: The Definitive Guide and Java Tools for eXtreme Programming from bn.com. Slashdot welcomes readers' book reviews -- to submit yours, read the book review guidelines, then hit the submission page. -
Java Meets XP: Two Reviews
Peter Wayner writes: "In a world where Ali had to meet Frazier and Luke had to meet his father, it was only a matter of time before buzzwords like Java and eXtreme Programming found themselves together on the same marquee. A pair of new books examines some open source Java development tools and outlines how they can be put to use by those trying to master their workload by adopting the techniques of eXtreme programming." Read on for his latest review, which is really two reviews in one. (see each) author (see each) pages (see each) publisher (see each) rating (see each) reviewer Peter Wayner ISBN (see each) summary Two books which explore the use of Ant in Java software developmentThe two books are excellent examples of how the book industry organizes and disciplines the often crazy explosion of new tools, approaches, structures and metaphors developed by the software industry. Ant: The Definitive Guide by Jesse Tilly and Eric Burke comes from O'Reilly, the masters of producing missing manuals for open source projects. The other, Java Tools for eXtreme Programming: Mastering Open Source Tools including Ant, JUnit, and Cactus by Richard Hightower and Nicholas Lesiecki was published by John Wiley and Sons. Both provide a clear, example-driven exploration of the tools at hand.
The books are probably driven by the success of Kent Beck's Extreme Programming Explained: Embrace Change , a manifesto that outlined Beck's belief that the best way to develop code was with small teams of programmers and users who constantly reworked the software. His most controversial and attention grabbing notion demanded that the programmers work in pairs sharing one computer, one mouse and one keyboard. The constant interaction forced everyone to actually communicate with each other without sending emails and that, more than anything else, may be responsible for the success of his vision. His book spawned a few others on how programmers can plan to apply his vision.
Meanwhile, on the other side of the buzzword galaxy, the Apache group was quietly creating some of the coolest Java development and deployment tools around. Ant was and still is one of the most revolutionary, even though it was just a simple reworking of the classic UNIX make command. Its creator, James Davidson, grew so frustrated with the shell interface of the make command that he wrote a Java-centric version that moved all of the compilation, compression, and distribution inside one Java process. Now, no one has to wait for another Java Virtual Machine to start up to compile each class file independently.
While Davidson's Ant isn't much different than make at first glance, it's hard to overestimate the power of giving programmers a clever tool with plenty of hooks into the development process. Anyone can write new tasks for Ant, and some clever folks have built great new widgets that do things like enforce style guidelines or grab new code from a CVS tree. The structure of Ant lets the programmer dig deeply into the build process. The organic growth and dynamic flexibility shows how close Java can be to Lisp.
Tilly and Burke do a good job capturing the spirit of the tool. Their book follows O'Reilly's time-tested and market-proven simple-examples technique to illustrate how to use Ant for your projects. The chapters in the first half of the book outline how to use and extend Ant for your project. The strength of the book may be the way the authors casually include practical advice about the bugs and idiosyncracies of the tool. While Ant is quite capable, there are a number of little limitations to the XML parser that can drive new users a bit nuts. The second half of the book is a detailed description of the API, the data types and the other practical documentation.
In one sense, it's not really fair to lump this book in with all of this gloss about Extreme Programming. because it's just another methodical O'Reilly book with Dover artwork on the cover. It's important to realize that these tools aren't directly tied to the extreme programming movement. Ant was just created by a Java programmer who hated to wait. Everything else came afterwards when he opened the API.
Ant: The Definitive Guide author Jesse Tilly & Eric M. Burke pages 260 publisher O'Reilly rating 7 ISBN 0-597-00184-3 summary A methodical, in-depth look at the Java tool.The other book, however, explicitly illustrates how some popular open source tools can help the process of extreme programming. Hightower and Lesiecki's book is much broader than Tilly and Burke's because they want to tackle so much more. They don't want to just provide a missing manual for the tool-- they want to give the world a road map on how they use Ant and its cousins JUnit, HTTPUnit, and Cactus to build better applications. It should be noted that Hightower and Lesiecki work for a consulting group called eBlox and a number of other eBlox programmers are listed as contributors to the book. I think it's fair to say that anyone who hires eBlox will get eXtreme Programming results built with this methodology.
The best part about this book is the wide scope. Ant remains the central taskmaster responsible for building the software, but the book explains how to incorporate other tools for testing the software. The authors embrace one of the extreme programming central beliefs that programmers should define how to test their code before it is actually written. The book explains how to use JUnit, Cactus, and HTTPUnit to set up rules to test every class file. After ANT fires up the compiler, it turns around and runs the tests on the code.
Java Tools for eXtreme Programming author Richard Hightower and Nicholas Lesiecki pages 513 publisher John Wiley and Sons rating 7 ISBN 0-471-20708-X summary How to use some Java tools to transform extreme programming theory into reality.I don't think that eXtreme Programming or any of these tools is the last word on the subject. The biggest problem is that testing a piece of code is guaranteed to be fairly rudimentary. No programmer can come up with test cases to push all of buttons in all possible combinations. The structure and discipline provided by this approach can help, but the book makes it clear that no amount of pairs programming or extremism will remove the need for the guidance of good programmers.
If anything these tools and the books about them should serve as inspiration for the next round of tools even more focused on extreme programming. The tools are impressive, but there is plenty of room for more innovation. None of them is aimed at explicitly coordinating the work of multiple developers and none of them is designed to provide much structure to the refactoring process. These areas are still very much arts, but there's no reason why tool suites like Ant can't evolve some rational approach to solving them. Perhaps the Slashdot audience can provide some informative postings with pointers to the next generation of cool tools.
Hightower and Lesiecki's book feels a bit more rudimentary and basic than Tilly and Burke's, in part because they cover so much more ground. Although their book is broader, it doesn't go into as much depth about Ant as Tilly and Burke's. The examples are simpler, too, and Hightower and Liesiecki seem mainly interested in getting you excited about building and testing software with the tools. There just isn't as much room for details. If you're interested in learning as much as you can about Ant, choose the book devoted to it. If you want to learn how to use a diverse set of tools to build and test your program in an extreme way, go for that book.
Peter Wayner blends the buzzwords of security, privacy, and data warehousing together in his latest book, Translucent Databases. It shows how to ensure that only the right people see the right information and the wrong people get nothing. His other new book, Disappearing Cryptography, mixes the buzzwords of being, nothingness, steganography, and cryptography. You can purchase both Ant: The Definitive Guide and Java Tools for eXtreme Programming from bn.com. Slashdot welcomes readers' book reviews -- to submit yours, read the book review guidelines, then hit the submission page. -
Web Database Applications with PHP & MySQL
Brian Donovan contributes this review of Web Database Applications with PHP & MySQL, the most recent of several books geared toward helping people use the common Linux, Apache, MySQL and PHP combination to produce database-backed websites. Read on for the review. Web Database Applications with PHP & MySQL author Hugh E. Williams and David Lane pages 563 publisher O'Reilly rating 9 reviewer Brian Donovan ISBN 0596000413 summary A comprehensive, tutorial-style roadmap for building data-driven web applications with PHP and MySQL.PHP's speed of execution, gentle learning curve, and ease of development have contributed to its popularity, especially when teamed with MySQL, as a tool for building dynamic sites. Williams and Lane have written a thorough step-by-step guide to building web database applications with PHP and MySQL.
The Meat of the Book
Part I (Chpts 1-3) of Web Database Applications with PHP & MySQL (Web DB Apps) introduces the "Hugh and Dave's Online Wines" case study that's used to highlight the points made throughout the text and treats readers to the fundamentals of PHP, MySQL, and SQL - appropriate since the book assumes only some prior programming experience (not necessarily in PHP) and a general familiarity with HTML.
Chapters 4-9 (Part II) deal with the aspects of web application logic common to practically all data-driven sites : querying and writing to databases, maintaining state, and security. Chapter 4, "Querying Web Databases", includes a good explanation (Ex. 4-1) of the mechanics of connecting to and querying a MySQL db via PHP - numbered blocks of the example script correspond to sections in the accompanying text detailing what's happening at each point in the process (connect, query, retrieve results, process results, and close connection- unless you're using persistent db connections).
Chapter 5, "User-Driven Querying", explains how to pass data to PHP scripts using HTTP GET and POST. Although readers are initially shown parameters and parameter values being passed directly (as they are when register_globals is turned on in php.ini), the authors later explain why the same param:value pairs should instead be accessed through the global associative arrays $HTTP_GET_VARS and $HTTP_POST_VARS (the book was completed before the switch to $_GET and $_POST respectively with PHP 4.2.0) for security reasons. What the authors refer to as "combined scripts" (where the same script performs different functions depending on which, if any, variables in the GET or POST arrays, have been set, for example) are introduced and the reader is walked through the oft-used "next and previous links for query results" scenario.
In Chapter 6, "Writing to Web Databases", in addition to inserts, updates, and deletes, the authors explain one solution to the reload problem - i.e. where reloading a results page after some operation that alters the contents of the database has been performed (or even accessing a bookmarked url if HTTP GET was used to initiate the action) can potentially result in the operation being silently repeated or, if HTTP POST was used, the user being confronted with a big ugly "would you like to repost the data?" dialog. Locking (mostly how to make the best use of table-level locking) is also discussed in all of its glory. Chapter 7 deals with the validation of user input. The authors recommend and give an example implementation of dual server and client side validation (with JavaScript). Chapter 8 covers sessions (with and without cookies).
The chapter on security (Chapter 9, "Authentication and Security") mostly concerns user authentication. HTTP Authentication, managed HTTP Authentication (using PHP to validate encoded credentials from the HTTP Authorized header field), and handling your own authentication are considered, along with the security concerns inherent in stateful web apps - i.e., third party sites maliciously tricking browsers into coughing up cookies with login or session information for your site, session hijacking by feeding random session ids to the scripts until one corresponds to an existing session, etc. SSL is explained briefly.
The third and final section of Web DB Apps (Chpts 10-13) consists of a detailed examination of the guts of the wine store case study. Readers who find the commingling of application logic and html in the snippets of the wine store application discussed in the book distasteful will be gratified to know that, since publication, the authors have released a modified version of the "Hugh and Dave's Online Wines" code that uses the Xtemplate class (http://sourceforge.net/projects/xtpl/) to separate code from markup. Both versions are available in their entirety for download from the book website.
The five appendices, in turn, cover the installation and configuration of PHP, MySQL, and Apache on a Linux system, the architecture and workings of the Internet and Web, designing relational databases using entity-relationship modeling, how to define your own session handler prototypes and store session data in a database instead of files (the default), and provide an annotated list of PHP and MySQL resources (books, web sites, etc.).
The Good and the Bad
While it's clear that Web Database Applications with PHP & MySQL was written with the goal in mind of providing novice coders with a solid foundation for continued growth (or filling the niche of "handy reference" on the shelf of intermediate/advanced developers), the book manages to be comprehensive without patronizing the reader. I admit that I wouldn't have felt cheated if the authors had skipped the obligatory coverage of the history of the Internet, TCP/IP, and HTTP (Appendix B) in favor of, for instance, a discussion of web caching with an eye towards building cache-friendly apps, an important subject that all too gets short shrift from authors of web dev books. Also, some readers may be disappointed to find that the chapter on security doesn't relate to battening down your site against script kiddies and exploits, but that's really the sort of information that you should be getting from sites like PHP Advisory and Securiteam anyway.
For seasoned developers, this could be the book that you wish you'd had when you started out building web database apps and data-driven sites. Keeping a copy around for reference, especially if you frequently jump back and forth between projects in different languages/environments, also might be helpful - for those occasions when you need of a quick refresher in PHP/MySQL dev. Moreover, if you find yourself in the position of having to mentor junior developers (or helping non-coder friends) tasked with building or maintaining PHP/MySQL-based sites or apps, then lending them your copy or recommending that they buy their own could save you quite a bit of time and frustration.
Table of Contents- Preface
- Part I
- Chapter 1. Database Applications and the Web
- Chapter 2. PHP
- Chapter 3. MySQL and SQL
- Part II
- Chapter 4. Querying Web Databases
- Chapter 5. User-Driven Querying
- Chapter 6. Writing to Web Databases
- Chapter 7. Validation on the Server and Client
- Chapter 8. Sessions
- Chapter 9. Authentication and Security
- Part III
- Chapter 10. Winestore Customer Management
- Chapter 11. The Winestore Shopping Cart
- Chapter 12. Ordering and Shipping at the Winestore
- Chapter 13. Related Topics
- Appendix A. Installation Guide
- Appendix B. Internet and Web Protocols
- Appendix C. Modeling and Designing Relational Databases
- Appendix D. Managing Sessions in the Database Tier
- Appendix E. Resources
- Index
-
Writing CGI Applications with Perl
davorg contributes his review of Writing CGI Applications With Perl, writing "There are a very large number of Perl CGI books in the shops. Unfortunately the number of good Perl CGI books is far smaller. I'm happy to report that this book is one of them." Read on for the rest. Writing CGI Applications With Perl author Kevin Meltzer and Brent Michalski pages 500 publisher Addison Wesley, 2001 rating 9/10 reviewer Dave Cross ISBN 0-201-71014-5 summary Great Introduction To Writing CGI Programs in PerlThe problem, of course, with most Perl CGI books is that they are written by people who just don't know very much Perl. That's certainly not the case here. Both Kevin and Brent are well-respected members of the Perl community and they know what they are talking about when it comes to writing CGI programs in Perl.
Another common mistake in Perl CGI books is that the authors try to take people who know a bit of HTML and teach them programming, Perl and CGI all at the same time. The authors of this book realise that this approach is likely to lead to, at best, patchy understanding of any of these concepts so they aim there book at people who are already programmers and who have some knowledge of Perl. This means that they can concentrate of teaching the parts of Perl that are useful when writing CGI programs.
One corner that is often cut when discussing CGI programming is security. This is a very dangerous approach to take as a badly written CGI program can leave your web server open to attack from anyone on the Internet. That's not a mistake that is made here as the authors introduce security in chapter 2. Add to that the fact that the code examples all use -w, use strict and CGI.pm and the book is already head and shoulders above most of its competition.
Early chapters look at common CGI requirements such as file uploads and cookies. Each chapter is full of well written (and well-explained) sample code. The example of an access counter in chapter 6 even locks the file containing the current count - this is possibly a first in a Perl CGI book!
By the middle of the book we have already moved beyond simple CGI programming and are looking at mod_perl. This chapter covers both the "faux-CGI" Apache::Registry module and also writing complete mod_perl handlers.
In the second half of the book we start to look at some bigger examples. The authors present a web-based email system and even a shopping cart. In order to fit these examples into their respective chapters a couple of corners have been cut, but there's enough information there to enable anyone to write the complete systems.
Chapter 13 introduces the HTML::Mason module as a way to separate content from presentation. It's obvious that the author's are big fans of this module and this leads to my only real criticism of the book. At no point do they mention the fact that the same benefits can be gained from using any of half a dozen templating systems found on the CPAN. I would have been a lot happier if they had mentioned things like Text::Template, HTML::Template and the Template Toolkit before picking HTML::Mason as the system for their example.
There are then two more long chapters with examples of a document-management system and image-manipulation software. Once more, the code in these examples would serve as a great starting point for anyone wanting to implement something along these lines. The last chapter looks at XML and, in particular, the use of RSS files to provide data feeds to other web sites.
All in all this is a very useful book for someone wanting to write web-based applications using Perl. It's packed full of good advice and code that follows all of the best practices for writing CGI programs in Perl. This book won't teach you Perl, but if you've read Learning Perl or Elements of Programming with Perl then you'll find this book easy enough to follow.
You can purchase Writing CGI Applications with Perl from bn.com. Slashdot welcomes readers' book reviews -- to submit yours, read the book review guidelines, then hit the submission page. -
The Perfect Store: Inside Ebay
Peter Wayner passed us this review of Adam Cohen's The Perfect Store, a chronicle of the rise of Ebay. Read on to learn more about the people and ideas behind the dominant online auction site. The Perfect Store: Inside Ebay author Adam Cohen pages 336 publisher Little,Brown rating 8 reviewer Peter Wayner ISBN 0-316-15048-7 summary The story of the world's largest online swapmeet, and why it's really not a swapmeet.According to the tale, an atheist traveled to Rome to check out the Catholic Church, and saw, through some odd gift of divine grace, that the Devil himself was sitting at on the throne of St. Peter and ruling the Church disguised as a Pope. The atheist reflected upon the paradox and then became a devout Roman Catholic. Why? He reasoned that only the one true faith could succeed with the Devil himself in charge.
Leaps of faith take many forms, and none were stranger to the world of the 1990's than the possibility that people might buy objects they've never touched from people they've never met and send money to addresses they've never seen on the basis of a bunch of colored stars summarizing a community's collective opinion. Yet that's eBay -- and now anyone curious about the communion of online buyers and sellers can turn to The Perfect Store by Adam Cohen. The new history chronicles the purity of the founder's vision, the tumultuousness of exponential growth, the tremors of bliss rippling down the spines of the auction winners, the purgatory of crashing servers, the saintly trust of the masses, and the deviltry of the few. Through all of these trials and tests, the company prospered with a steadfast devotion to a libertarian's dream of a frictionless marketplace where buyers and sellers could engage in a conversation to discover the one true price.
The book is sort of a hagiography, although focused more on the marketplace community than the corporate leadership. Almost every twist and turn of the company's history seems to depend upon how well the people adhere to the vision of a hierarchy-free community of buyers and sellers. The company thrives when they make it easy for goods to find the people who want them.
The book begins where eBay itself began: in the vision of the founder, Pierre Omidyar. The book follows him and then the people who join the company by laying out a largely chronological collection of important milestones, interrupted every now and then with a tale of some quirky eBay member. The author, Adam Cohen, may not speak with the earnest voice of a true believer, but he is largely happy to describe the decisions with devotion and reverence. This shouldn't be surprising because he worked closely with everyone at eBay and even had his own company ID badge and work space in the office building. He obviously spoke often to the core team and the history is filled with their words.
But the book isn't a dump truck filled with happy stories. The book manages to include almost all of the major controversies that I, a casual eBay user and fan, remember. There's a long discussion about the decision to ban guns and plenty of talk about the right way to handle pornography and used underwear. Cohen also interviewed a number of the disenchanted members who developed a love/hate relationship with the marketplace run by one corporation. They keep talking about quitting or protesting or going somewhere else when eBay keeps jacking up the rates, but every time the market dominance of the company keeps pulling them back in.
The later half of the book is largely filled with these controversies, in part because there are only so many ways you can keep repeating details about the company's phenomenal growth. The viral explosion of new listings was the story at the beginning, but after the IPO cemented the success, the management had to wrestle with the bits of evil that would drift into the network.
Most of the coverage of these battles is straight-forward and carried by a flat tone typical of journalistic distance. The analysis and criticism are largely left for the reader to assemble, although the parts aren't hard to find. For instance, we learn early that Omidyar's experience in the 1980's with the fat cat-friendly IPO market inspired him to create a neutral marketplace where all buyers and sellers were equals. He apparently tried to buy into an IPO only to discover that skinny cats didn't get to buy at the issuing price. Back then, Omidyar was a skinny cat.
But when it comes time for eBay's IPO, the people on the company's throne skipped the chance for an eBay-like OpenIPO. Goldman Sachs got the opportunity to pick an opening price for the stock, and the investment bankers managed to find a number that left a lion's share for the usual fat cats.
At the time, Omidyar, the other members of the management team (Jeff Skoll and Meg Whitman) and Benchmark Capital controlled a stunning 98.1% of the stock. They quickly became billionaires. Many of the workers made a few million of that 1.9% divided among the rest, but everyone else was left out. The thousands of people who worked the bulletin boards, and help create a cohesive community ruled by colored stars got nothing. This continues to be a bitter point for many involved with eBay from the beginning. Money weaves a strange path in and out of the narrative. On one hand, marketplaces are all about price discovery. The only reason to list an item on eBay is to get money. On the other, the book gives the impression that it's kind of crass to be into eBay for the money. The eBay folks are supposed to be passionate believers in this community ruled by colored stars. It's all about community, we're told. But I guess if you can't get IPO shares, that's what you have to live with.
The book may be best as a sly bit of exploratory surgery aimed at the strange desires in our body that drive commerce and trade. Some of the vignettes of eBay members are priceless and the stories about the effect of eBay on the market for collectables are not to be missed. Before eBay, the members of the Midwest Sad Irons Collectors spent hours at garage sales and antique stores looking for what many of us might call a rusting hunk of metal. There were even conventions populated by dealers helping people find what they wanted. All of the socializing and chatting intertwined in the weekend swapmeets became history when eBay made it possible for anyone to get what they want by plopping down big bids. There's no need to go to wade through church yards filled with schlock to find the grail of sad iron collectors, the swan-on-swan. Someone else is doing it right now... and all you need to do is grep the database. If you're lucky, there's no reserve!
At moments like these, the essential paradox of eBay becomes clear. On one hand, we're really after the stuff. We want the Pez dispenser, the Hair Bear bunch poster or the Elvis jacket. Do you realize how hard it is to find one just like that?
On the other hand, anyone with a bank account can buy any collectable now. There are dozens of every collectable waiting for buyers on eBay. Purity of heart, steadfast devotion to the goal, or indefatigable energy won't help you find the Grail when it's just a matter of typing the right number into a web form. There's no real scarcity anymore if you've got the right credit card. Which brings the question: if the items aren't really scarce, why would we want them?
The real problem is that eBay strips away the narrative from the objects. Flea markets, classified ads, and garage sales toss in stories for free and this is what the dinner guests, the friends, and the collecting buddies really want. They want to hear about the clueless, the loopy, the obnoxious, the greedy, the windbags, the ditzes, and all of the other characters buying and selling sad irons.
Adam Cohen's history, The Perfect Store, is a crisp, clean, and thorough retelling of what made eBay what it is today. It's a good story and you can't just buy those. Wait, I guess you can -- and the publisher is willing to print as many as the market will bear. Well, there's another paradox: Maybe, if eBay can survive with this many strange, wonderful and bitter stories, it may be the one true thing after all.
Peter Wayner is the author of Translucent Databases , a book commodifying the protection paradox. It describes how to build databases that reveal nothing to the wrong people, but everything to the right people. You can purchase The Perfect Store from bn.com. Slashdot welcomes readers' book reviews -- to submit yours, read the book review guidelines, then hit the submission page. -
Hominids: The Neanderthal Parallax
robinw writes: "Hominids is the latest novel by the accomplished Canadian science-fiction writer, Robert J. Sawyer. It is also the first book in a trilogy which he calls The Neanderthal Parallax. While far from his best offering, Hominids is consistent with the quality we've grown to expect from Mr. Sawyer, and is a worthwhile addition to any science fiction fan's library." Hominids: The Neanderthal Parallax author Robert J. Sawyer pages 448 publisher Doherty, Tom Associates, LLC rating 8 reviewer Robin Ward ISBN 0-312-87692-0 summary When worlds collide, and one of them is full of Neanderthals ... The book is centered on the Many-Universes Interpretation of Quantum Mechanics. In layman's terms, for every possible decision that can be made, the universe branches out into many universes, one for each possibility. All decisions are therefore dealt with in some form, and the universes are identical except for the choice that has been taken one way or the other. Normally, the interpretation states that the parallel universes cannot communicate, but in the novel a failed experiment in Quantum Computing suddenly brings two such Universes together. The first is our modern day society, and the second is a parallel universe where Neanderthals and mammoths prospered while we perished.The story of the two universes, and their interactions are told in parallel. After the failed experiment, a Neanderthal named Ponter finds himself in rural Ontario, in the world famous Sudbury Neutrino observatory. Back in the Neanderthal universe, his partner Adikor is blamed for his absence, and is put through an extensive trial.
Sawyer has obviously done his research. The alternate version of Earth where the Neanderthals exist is amazingly well thought out. Everything from the social ramifications of an enhanced sense of smell to the 1984-esque communicators that monitor everything the Neanderthals do is integrated into the story perfectly.
There is very little action to be found in the novel, but it remains exciting nonetheless. Personally, I was fascinated with the dialogue Sawyer presents between the character Mary Vaughan and Ponter the Neanderthal. Although I believe that Sawyer has a love for humanity and our technological prowess, he uses the conversations between the human and the Neanderthal as a way of exposing some of our atrocities in the thousands of years that have passed since we developed intelligence. You have to admire the honesty of the character Mary for willingly exposing things in our past that we'd rather forget, but towards the end of the book it almost becomes too much. In fact, I had a hard time believing that Ponter had anything good to say about us at all to his fellow Neanderthals.
The lack of privacy that the Neanderthal society lives with might be of particular interest to the Slashdot crowd. All Neanderthals are required to wear a communicator implant in their arm that transmits everything they do to a central recording center. Interestingly enough, Sawyer argues in favor of such technology, saying that it virtually eliminates crime (who would murder someone knowing fully well that it could be played back by the authorities?) and that we don't really have any privacy anyway. In fact, the book begins with a quote to that effect.
Sawyer's writing is simple and to the point. He has a way of explaining complicated concepts without being overly confusing or long and drawn out. The 400+ page novel is actually a fairly quick read. Unlike some oth-er authors that I'm familiar with, you don't have to go back and re-read passages to find details you might have missed. Don't get me wrong - although the book is easily digested, it manages to inspire. Also, despite the fact that this is the first novel in a series of three, it stands very well on its own. In fact, had I not known that there were two more novels dealing with the same characters being released over the next year or so, I would have been completely satisfied.
Hominids comes highly recommended. If you're at all interested in hard-SF, you owe it to yourself to head down to the bookstore and check it out.
You can purchase Hominids from bn.com. Slashdot welcomes readers' book reviews -- to submit yours, read the book review guidelines, then hit the submission page. -
Cradle to Cradle
Logic Bomb writes: "Human progress since the Industrial Revolution has been one big design error. Really. In 'Cradle to Cradle,' architect William McDonough and chemist Michael Braungart have crafted a compelling explanation for why humans need a completely new framework for how we interact with the world around us. Our model of technology and development is completely counter to the natural cycles and principles that worked for millions of years to create the environment we so cleverly manipulate. Sound like typical 'environmentalist' rhetoric? Not by half. This book actually contains reasonable explanations and practical solutions." Read on for the rest of Logic Bomb's review. Cradle to Crade: Remaking the Way We Make Things author William McDonough & Michael Braungart pages 186 plus notes publisher North Point Press rating 10/10 reviewer Matt Rosenberg ISBN 0-86547-587-3 summary Changing how humans relate to our environmentAccording to the authors, current human technology is a product of "cradle to grave" design. We pull resources from the Earth, shape them into a product, use it, and throw it away. The problem, we've noticed as we've spread all over the planet, is that there really isn't any "away." This is certainly not the first time our endless cycle of resource destruction and waste creation has been brought to light. But the whole point of this book is to show why the usual responses we've developed are useless, and what to do instead.
Consider the typical "recycling" program. What is presented to the public as a way to endlessly reuse raw materials is in fact a downward spiral of degradation in material quality until, just as before, it becomes unusable. Sometimes the recycling process itself produces additional toxic waste. Most Americans have probably heard of "the 3 Rs": Reuse, Reduce, and Recycle (to which the authors add a fourth, Regulate). These are measures that only aim to slow the destructive cycle. In the end, the result is the same. As the authors put it, Less Bad is No Good.
McDonough and Braungart's proposed strategy is called "eco-effectiveness". It revolves around the idea that in nature, waste equals food. Other than incoming energy from the sun, our environment is basically a closed system. Whenever (non-human) life on our planet uses a resource, it is left in a form readily useable to other life. Humans must do the same. The authors envision a world where, when a material item gets worn out, you simply throw it on the ground to decompose. Buildings should produce more energy than they use. Eliminate the concept of "waste" entirely.
The authors put their money where their mouths are. In 1994 they started a design firm that puts these principles into practice. Examples of their work are downright astonishing. The firm was once hired to design a compostable upholstery fabric. According to their principles, not only did the finished product have to be environmentally neutral, so did the production process. In the end, an entire line of fabrics was put into production using a total of 38 chemicals (selected from a list of almost 8,000 commonly used in the industry). Water leaving the factory, originally drawn from the local water supply, tested cleaner than when it went in. And the fabric, of course, could be readily disposed of by tossing it onto the ground where it would decompose back into the soil without leaving toxic chemicals behind. They include plenty of other cases that illustrate how eco-effectiveness can both improve the quality of life and make for a more profitable business.
We live in a complex world, and it is absurd to think that every product and production process could be converted to produce similar results overnight. What about items that consist of metals and other elements that organic life doesn't usually process? There is a whole section of the book to address such issues. The authors also go beyond pure chemistry and physical health to discuss how environment affects the intangible quality of human life, and how applying these same philosophies to architecture and urban planning can produce amazing results. Unlike many environmental advocates, McDonough and Braungart both acknowledge the difficulties and provide a clear path for reform. They include a framework for eco-effective planning and decision-making so their ideas can be implemented as much as is practically possible at any given time, always with an eye for continued improvement down the road.
The writing in this book is extremely clear and articulate. The authors provide explanations of their ideas from historical, scientific, and business perspectives. They even manage to rip apart typical corporate and environmentalist thinking without pushing blame on anyone. And of course, the book is far more detailed and comprehensive than I could cover in a short review. It's hard to read it and not come away convinced, and I think that's a good thing.
One final note for anyone thinking it hypocritical to waste trees so these ideas could be distributed: the book is not made out of paper or printed using a conventional process. It's plastic -- waterproof, resilient, eligible for recycling in most locales, and an early step towards what the authors hope will be infinitely recyclable synthetic book-making materials.
Links: McDonough's architectural firm; the design firm mentioned in the review; a webcast of NPR's National Press Club at which McDonough talked about their ideas far more eloquently than I have."
To go through your own hard times, you can from Crade to Cradle from bn.com Slashdot welcomes readers' book reviews -- to submit yours, read the book review guidelines, then hit the submission page. -
Amazon.Heartbreak
Ex-Amazon.com wage slave Mike Daisey asks in one fantasy e-mail to his then-boss Jeff Bezos: "Would it have been so hard to build a cool and quirky bookstore instead of a soulless virtual megamall? You were afraid: afraid to define the company, afraid the stock would drop, afraid not to feed the monster. What you sacrifice reveals what you value, and you're a fool if you think the world will forgive you in the end." Prescient stuff. 21 Dog Years: Doing Time @ Amazon.com , Daisey's hilarious, heartbreaking and surprisingly powerful recounting of life inside what may be the world's strangest, most ephemeral company -- a symbol of all that was exciting, misguided, and ultimately misunderstood about business online during the mad years. It's also one of the best books ever written about the Net, an unsparing, even brutal indictment not only of hubris, but of media and, of course, the corporate-spawned hype that shapes so much of American life.Mike Daisey's Amazon wasn't really a good place to work in. He had doubts when the interviewer asked him for his college board scores and GPA (the company made a big point of seeking out highly-educated freaks and geeks), and when he noticed all the desks were fashioned out of used doors.
The company, he soon found out, was a bizarre corporate/yuppie/geek shell-game, equal parts myth, BS, and Yes, some idealism and innovation. Remember those lonely pundits, analysts and prophets wandering the talk shows, wondering aloud whether it was really okay for a company that hadn't ever turned a dime's profit to be valued so highly by stockholders and so loved by media? They were quickly shouted down or ignored by the geek digerati and bewildered journalists and analysts, dismissed as clueless old farts and reactionaries. We wanted so much to believe that people like Bezos and companies like Amazon were re-shaping the world (I sure thought the Net would revolutionize politics and business, though I never could see how Amazon would make money with those discounts and shipping costs.) We have yet to fully acknowledge that if it survives at all, Amazon will make it as any other company has, not as part of any revolution.
Daisey, who writes in an original, bitingly funny voice, nearly went mad at Amazon and long ago fled Starbucks-land for Brooklyn (the surprising new universal destination point for hip and creative seekers of fortune), where he has prospered, adapting his book into a successful off-Broadway play. On one level, his story is a pure riot, especially his accounts of life as a customer service phone rep and of the hero-worship of "Jeff" throughout the company. Daisey escaped from customer service to become a toy evaluator (the description of an Amazon employee storming his Seattle apartment to try to get back the toys he was late reviewing for the site is a classic) and then into corporate HQ, the gothic mansion housing avocado sandwiches, slaves to fetch laundry, Jeff and Business Development. His anecdotal profiles of geeks who were not nearly as smart as they thought they were, and of Seattle, for a couple of years the smug, red-hot center of the new-kind-of-company-that-was-reshaping the world are also piercing and well written. He describes Amazon's headquarters as "Lex Luthor's Freak House on the Hill ... it squats like an art deco toad over the city of Seattle, its insides all scooped out and replaced with IKEA and geek central -- a trifecta of Batcave, Fortress of Solitude, and supervillain lair."
But Amazon, Daisey suggests, was mostly a weird idea hovering in the brains of Bezos and his many camp followers in media and business. Well, it was more than an idea.
But however bad you thought companies like Amazon might be, it was worse. Banks of bored, gerbil-like customer service phone reps alternately took orders (at the time, nobody trusted sending their credit card numbers over the Net, although they rarely hesitated to turn them over to teenaged cashiers in restaurants) and soothed legions of enraged customers. They pretended to be managers when customers demanded to talk to one, pretended to be sorry for their troubles, pretended to get their problems sorted out right away.
The American consumer, Daisey perceptively points out, is a creature of entitlement, expecting instant satisfaction from somebody whenever something goes wrong, even though (in the tech world at least) they rarely get any. CS and tech support reps are the sacrificial lambs placed between furious buyers, bad service, poor products and craven corporate execs. At Amazon, software-wielding managers counted the time the reps spent on the phone, the length of calls (there was great pressure to resolve problems in seconds, not minutes), the number of customers they were "handling," the number of problems "resolved."
For all the monitoring, though, reps like Daisey were curiously unaccountable. They hated their work, and were numbed by it. Customers took their chances.
Daisey and other CS reps, pretending to be courteous to hordes, faked efficiency by dialing themselves and then hanging up, raising their efficiency numbers to the point where many got promoted. During Amazon's frequent early server crashes, Daisey and his fellow workers would take credit card orders and numbers down by hand, with many of the slips then lying around in piles for days or inadvertently brought home. All Amazon employees dreaded Christmas, when the overextended company struggled to deal with demand it simply wasn't equipped to meet. (It was during Christmas shopping periods that the cracks in Bezos's public relations blitz began to show.)
And on top of all of their humiliations and degradations, Daisey and many of his colleagues showed up at work one day to learn that many of the CS jobs had vanished from Seattle, farmed out to India where phone workers earning $1 an hour assured frustrated customers their books were on the way.
In between the descriptions of insanity inside Amazon, Daisey portrays a picture of a company whose ambition from the first outstripped its resources. Wall Street was traumatized by the prospect of e-commerce, and Bezos seemed to them to grasp what the new world order would be like. So Bezos, like Gates, became one of the Net's mini-Gods. As soon as it became common knowledge that Amazon had whipped bn.com, the next logical step was that Amazon would have to take on the mothership -- Barnes & Noble itself. "If Amazon was going to justify a market cap larger than most third world countries," writes Daisey,"it was going to have to trounce Barnes & Noble and all the other physical booksellers," since books, after all, were Amazon's core product.
That, of course, never happened. Instead, Bezos panicked and swerved. "Reporters would ask about the rivalry, the dueling press releases and other PR efforts of the past, and Jeff would shrug and smile his smile. He talked about entering new markets, how Amazon was so much more than a bookseller that it seemed book sales hardly mattered. It was as though he could hold up a hand puppet and tell the press, 'Look at the puppet ... don't look over there, look at this shiny puppet,' and the press watched the puppet, wondering how on earth he made that little guy talk. You wouldn't even know that Amazon sold books anymore from some of the stories coming out, much less that they were the vast majority of its sales."
Bezos, Daisey theorizes, knew Amazon would never be able to compete with Barnes & Noble in the non-virtual realm, and the company soon lost identity, focus, even the confidence of gullible journalists and analysts. Employees knew all along what those crank analysts had been saying -- because of shipping costs, the company had to discount its products too heavily to be competitive. This was a dilemma the new economy thinkers and gurus at Amazon have never solved.
In the meantime, Daisey had hilarious confrontations with geek, yuppie and hippie bosses, all of whom he outmaneuvered or outsmarted; helped himself to a generous supply of Post-its and company pens; and referred to his fellow employees and friends by their Amazon e-mail names -- "bsmith," "hjones" and so on-- as was Amazon tradition.
But he never really knew what any of his jobs required of him, nor did he ever witness anything at Amazon working rationally or well. Employees were obsessed with their stock holdings and with Amazon's almost desperate efforts to expand into new realms to justify the fanatic faith of early Net-believers.
Daisey's book underscores something that ought to have been apparent for some time: Net companies are often corporate cults -- Gates, Jobs, Yang, Bezos -- revolving around eccentric, self-styled geeky gurus who profess to be changing the world and who have a genius for convincing the always-gullible media that they are. For all their arrogance and savvy, geeks and nerds seem to crave leaders to follow. At least Gates rewarded his with lots of successful stock.
At Amazon, employees sat around their desks e-mailing one another about Jeff:
- He was worth billions but rented an apartment and drove a Toyota hatchback (true.)
- He worked in investment banking before starting Amazon.com (true).
- He slept only three hours a night (false).
- He still responded to e-mail at his public address, jeff@amazon.com (true.)
The problem with cults, of course, is that they foster disconnection with the real world. Amazon lost touch with the rest of the planet as its hapless employees, many doomed to be laid off, obsessed over their stock value and counting the days to becoming millionaires. When the followers discover their gurus are all too human, bitterness and disenchantment seem inevitable.
What makes this an especially significant book is that Daisey has written a story about a generation and its values; as well as a riveting business yarn. The kids working 90 hours a week at Amazon, and the execs and white-collar workers sleeping on motel-room floors and hauling boxes in warehouses during the holidays, (Amazon built giant warehouses in remote places where there were no available workers to hire) thought they were re-inventing the world. Instead, they were simply pawns in one man's high-stakes gamble. Suspicious of authority and corporate values, they succumbed anyway -- mostly because of the aura of hipness and the promise of wealth -- to both, though in new guises. Geeks, it turns out, are as greedy as anybody. Daisey discovered, as so many of his generation were about to -- that Bezos and the other cult leaders had simply dressed up the hog.
Yet Daisey, along with his increasingly bewildered co-workers, really wanted to believe. At first, he felt he had finally kind a new kind of work culture, one he could spend the rest of his life working in and for. In a way, he was heartbroken when the truth finally dawned, and his account is touching as well as comic. Anybody who experienced the Net in its early days, or is struggling to deal with new notions of truth, economics and work in the digital age, will understand.
-
The Venture Cafe
Victor Cruz writes "If there is one thing I can't stand, it's watching a bunch of rich, fat, overpaid, overhyped dot-con executives blathering on and on about some "business lessons" they supposedly learned while they were out wasting millions of dollars of venture capitalists' money. When I came across Teresa Esser's new book, "The Venture Cafe: Secrets, Strategies, and Stories from America's High-Tech Entrepreneurs," I thought it was going to be that same thing all over again." Read on for the dramatic conclusion! The Venture Cafe: Secrets, Strategies, and Stories from America's High-Tech Entrepreneurs author Teresa Esser pages 280 publisher Warner Books rating 9 - reads like a novel reviewer Victor Cruz ISBN 0-446-52783-1 summary Non-fictional accounts of entrepreneurs' struggles and triumphsOh, no, I thought. Not another one of these rags-to-riches, I've-got-mine and-so-now-I'm-going-to-rub-your-face-in-it type books.
Thanks, but I've had enough. And then I took a moment to actually read this thing.
Turns out that this Teresa Esser isn't even an entrepreneur -- she's the wife of an entrepreneur. So what business does she have trying to tell me how to start a company?
Esser watched her husband start an Ethernet telephone firm that was eventually sold to 3Com for $90 million. After the company was sold, she spent three years interviewing 150 entrepreneurs, venture capitalists, corporate lawyers and high-tech headhunters about how a person can start their own high-tech company.
She interviewed members of the MIT blackjack team, asking them what it was like to gamble with other people's money. That's what the high-tech entrepreneurs were doing, you know, when they were financing their businesses with venture capital.
A lot of these new companies wound up going out of business. But some of them did not. Some of the new companies ACTUALLY SUCCEEDED at creating wealth for their investors -- including their venture capitalists, which more often than not happen to be pension funds.
So, when these high-tech entrepreneurs succeed at solving a problem and creating a solution and getting the product to market, and achieving a liquidity event, they make money for their investors.
There are a lot of business authors who spend half of the book thanking their wives for putting up with their obnoxious behavior and the other half bragging about how great they are.
Teresa Esser doesn't brag, really. I have to say, I admired how candid Esser was when she was talking about serious problems, like the time her husband got burned out and had to leave his company.
This was obviously a very painful experience, but she lays it all on the line. Esser didn't have to go back and dredge up those repressed memories about what it was like when her husband was on the verge of losing control of the technical direction his company was taking, and freaked out and asked Esser to turn off the electricity so that they would have to prematurely end an annoying board meeting.
She didn't have to fly to White Plains, New York and convince the God of high-tech headhunting, Chuck Ramsey, to spill the beans on how exactly you convince an top-ranked executive to leave his job and join a high-tech startup.
But she did.She could have spent the past three years lying on the beach in the Bahamas, drinking pina coladas and putting on sunscreen. Instead, she schlepped around Boston's financial district, asking jaded venture capitalists how an unknown entrepreneur could increase her chances of obtaining venture capital financing.
You know, most of these dot-com brag books make me sick. But I have to say, this one made me laugh.
I liked the story about the rat. These two kids started a company out of a disgusting apartment in Philadelphia and they tried to have a formal business meeting with a director of new business development from a Wall Street financial firm, but it was hard because they had these twelve-inch rats.
When the director of new business development came to visit, they didn't even have any clean cups to serve him tap water in. That story was funny. They gave the director of new business development a dirty dinosaur cup that they had gotten free from Burger King. And then he left. And the guys tried to figure out what had gone wrong with the meeting.
I mean, okay, okay. It's hard to start a new company. But with a book like this, at least you know that you're not the only one going through hard times.
To go through your own hard times, you can from The Venture Cafe from bn.com Also, check out The Venture Cafe web site. Slashdot welcomes readers' book reviews -- to submit yours, read the book review guidelines, then hit the submission page. -
SSH, The Secure Shell
If you administer remote systems, check your email from the road, or just have a sense of paranoia about your home network, you're probably somewhat familiar with SSH. If you need to know more, though, danny writes "SSH, The Secure Shell will be another 'must have' O'Reilly volume for many system administrators. Read on for my full review." SSH, The Secure Shell author Daniel J. Barrett, Richard E. Silverman pages 540 publisher O'Reilly & Associates rating 8 reviewer Danny Yee ISBN 0-596-00011-1 summary Comprehensive look at the ubiquitous SSH protocol, from installation to advanced uses.A comprehensive study of what is now a key part of many network systems, SSH, The Secure Shell is a valuable resource for system administrators and users. Its explanations are clear and thorough: I'm not sure about the "definitive" claim, but Barrett and Silverman do go into considerable detail, often to the limits of "if you want to play with this you really ought to look at the source code." Perhaps most importantly, The Secure Shell is organised so one can easily skip unwanted detail and find just those portions that are relevant. As a result, it can be used in different ways -- read through to learn about ssh and what it can be used for, or just consulted as necessary to answer particular questions or solve particular problems.
Chapter one puts ssh in context, looking at its history and related technologies, and chapter two introduces basic client operation. Anyone who uses ssh and scp as simple telnet and ftp replacements and isn't curious about how they work can stop reading here -- and doesn't really need their own copy of The Secure Shell. Chapter three is an "under the covers" look at ssh. After a three-page introduction to cryptography (not really suitable for the reader with absolutely no background), it explains the ssh1 protocol and then how ssh2 differs from that and the extra features it offers. There is also a brief overview of the cryptographic algorithms commonly used in ssh implementations, and an explanation what ssh secures and what it doesn't.
The rest of the book is more implementation-specific: the primary implementations covered are SSH, SSH2, and OpenSSH. Being a lazy user of packages, I skipped chapter four, on installation and compile-time configuration. Chapter five is a guide to server configuration, working systematically through the sshd configuration file options.
The next four chapters are aimed at power users, covering client use in much greater depth. Chapter six explains key management: what identities are, how to create them, how to manage them with ssh agents, and how they can be used (to automate logons, most obviously, but fancy things can be done with multiple identities). Chapter seven goes through client configuration in detail, working through the configuration file options, chapter eight covers account configuration on the server-side (including forced commands), and chapter nine looks at port and X11 forwarding.
For those overwhelmed by all of this, chapter ten describes a sample "recommended setup" for everything from compilation to client configuration. Chapter eleven covers some special topics -- unattended SSH, FTP forwarding, mail over SSH, Kerberos, using SSH through a gateway host -- and chapter twelve is a troubleshooting FAQ.
Chapter thirteen is an overview of other implementations, with a table of products, and four short chapters then cover specific Windows and Mac clients. Of the three Windows clients covered here, two are proprietary and the third is only distributed as a bzipped tar file: it would have been good to have a chapter on one of the free and more user-friendly Windows clients, perhaps PuTTY or TTSSH, both of which get a "recommended" tag in the table of products.
You might want to purchase SSH, The Secure Shell from Barnes and Noble or read some of Danny's 600+ other book reviews. Want to be a famous book reviewer? You can read your own book reviews in this space by submitting your reviews after reading the book review guidelines. -
Core Lego Mindstorms Programming
dr_skipper writes: "In the preface of Core Lego Mindstorms Programming, the author compares the Robotics Invention System to the first mass production automobile, the Ford Model-T. This put millions of cars into the hands of ordinary people, and kick-started an industry. Whether this kit will turn out to be the equivalent of the model-T of robots remains to be seen. We already know millions of these kits have already been sold, so at least it has the potential to capture a huge number of people into robotics that never would have ventured into it in the first place. Maybe someday we'll hear stories from robot engineers telling how they got their start with the Lego Mindstorms kit. Before Mindstorms there were lots of do-it-yourself robot kits that were usually a little sketchy. The promises often outweighed what was delivered, and it was never guaranteed that once all the transistors and capacitors were assembled that it would even work. Mindstorms has overcome this and caught on in a big way, as evidenced by the staggering robotics creations that are popping up on websites all over the Internet." The rest of John's review is below. Core Lego author Brian Bagnall pages 560 publisher Prentice Hall PTR rating 10/10 reviewer John Delisle ISBN 0130093645 summary Fantastic book - Covers robot construction, programming and much more!The Mindstorms kit is for those people who have always wanted to play with robots, but couldn't find any time between work and home. In short, its a kit tailor made for programmers, not for those people with Mensa level IQs who know how to build an H-bridge circuit or a voltage regulator from scratch. Probably the easiest and most understood programming language right now is Java, and that is the language this book focuses on. The book introduces leJOS, which is a Java Virtual Machine (JVM) and operating system rolled into one. It's the first JVM I've seen to run in the tiny space of only 32kb. As lore has it, back when Java was known as "Oak," it was meant as a language to program small appliances such as remote controls, microwaves, televisions, VCRs and other household electronics. In all that time I've never seen Java actually used in such small devices until now.
This book starts out slowly, for people who are just cracking open the box. It gives a complete, in-depth overview of the hardware, as well as the included software -- which the author basically advises you toss away if you have any interest in serious robot programming. Surprisingly (or perhaps not surprisingly) the tiny RCX brick contains as much horsepower as the on-board computers for the Apollo moon missions. The brick contains 32kB of RAM, which seems small at first but when you realize the memory older computers like the Apple II and TRS-80 had, this is an ample amount. Some of those older games had a lot going on in terms of AI and graphics, so for robot applications without graphics it's a lot of memory. In the spirit of Bill Gates, 32kB should be enough for anybody. There are also some good (though prohibitively costly) third-party sensors that, if you owned them all, would give you most of the sensing abilities that old Spock had with his tricorder.
leJOS is a product of Sourceforge, and quite popular. The leJOS language, which is essentially Java with some cut-backs, is covered in depth. It has most of the features of the real Java language, barring object reflection and garbage collection. I haven't heard of any official "smallest JVM" contest but if there was one I'm sure leJOS would be one of the contenders. It definitely surpasses Sun Microsystems J2ME in the micro category. Setup is fairly straight forward and the author even includes a free IDE that works great with the leJOS.
Once past the introductory material, the book contains some truly interesting projects. In a way, the book is similar to the general robotics book Mobile Robots: Inspiration to Implementation (Jones, Seiger, Flynn), except it's for the Mindstorms crowd. There are many robots to build, including a wall-following robot, a robot that navigates with a real compass, a robot you can control from a web page, and some surprisingly in-depth hacking tricks. Unlike books which only give suggestions on how to build robots, this book includes complete building instructions and code listings for every project. The fact that Lego parts and RCX bricks (the processing center of a Lego Mindstorms robot) are identical to each other allows this to be possible. It contains not just 'how to' information, but expands into robot theory as well. Books such as Mobile Robots have to be general and ambiguous at times because the authors don't know what kind of parts a reader will be able to obtain. In a way, this is the genius of Lego Mindstorms - the ability for people to pass robot recipes to one another.
The final two chapters really kick the leJOS language into overdrive. These sections are where geeks thrive. Chapter 11 deals with connecting the RCX brick to the Internet. Apparently the leJOS language has built in classes for sending data, and even a handy Java bean that's useful for embedding JSP web pages. These projects are described down to the last detail, including showing how to set up a free Resin server to serve the web pages. Unfortunately the author does not take the time to explain much of anything with JSP, so beyond his JSP examples you may not get very far. Readers will be forced to look elsewhere if they want to learn more about JSP.
The final chapter really goes hard core. It contains some so-so information about how to hack leJOS, changing classes or removing methods to save memory. The real kicker is a feature of the leJOS JVM I was not aware of: leJOS is capable of running almost ANY language. Apparently even the official JVM is capable of running a multitude of third-party developed languages, including Fortran, C, and weird custom languages such as IBM's NetRexx. All that's required are the development tools to compile the source code into Java bytecode, and these compilers exist in abundance. There are no fewer than 100 such available languages, all free for the downloading.
Illustrations in the book are frequent and helpful, but somewhat plain. Usually they consist of line drawings without much artistic merit. The 3-D renders of the robots are exceptional, however. Each step in building the robots has been rendered, making the Lego parts very easy to see. The steps are well laid out, and the new parts for each step are suspended in the corner and labelled. Thankfully, all models in the book can be built with any version of the Robotics Invention System kit.
If you are a programmer who has an impulse to experiment with robots, but don't want to get solder on your fingers building from scratch, this book will get you to where you want to go. And if you do want to get some solder burns, there's even a few projects in here just for you. Overall the book is a joy to read. The author obviously loves robotics and his enthusiasm shows on every page. The tone is loose but contains a lot of detail presented in an easy-to-digest manner. If you want to dabble in robotics then Lego Mindstorms is the easiest way to do it and having this book is a good way to get started.
You can purchase Core Lego Mindstorms at bn.com. You can read your own book reviews in this space by submitting your reviews after reading the book review guidelines. -
Core Lego Mindstorms Programming
dr_skipper writes: "In the preface of Core Lego Mindstorms Programming, the author compares the Robotics Invention System to the first mass production automobile, the Ford Model-T. This put millions of cars into the hands of ordinary people, and kick-started an industry. Whether this kit will turn out to be the equivalent of the model-T of robots remains to be seen. We already know millions of these kits have already been sold, so at least it has the potential to capture a huge number of people into robotics that never would have ventured into it in the first place. Maybe someday we'll hear stories from robot engineers telling how they got their start with the Lego Mindstorms kit. Before Mindstorms there were lots of do-it-yourself robot kits that were usually a little sketchy. The promises often outweighed what was delivered, and it was never guaranteed that once all the transistors and capacitors were assembled that it would even work. Mindstorms has overcome this and caught on in a big way, as evidenced by the staggering robotics creations that are popping up on websites all over the Internet." The rest of John's review is below. Core Lego author Brian Bagnall pages 560 publisher Prentice Hall PTR rating 10/10 reviewer John Delisle ISBN 0130093645 summary Fantastic book - Covers robot construction, programming and much more!The Mindstorms kit is for those people who have always wanted to play with robots, but couldn't find any time between work and home. In short, its a kit tailor made for programmers, not for those people with Mensa level IQs who know how to build an H-bridge circuit or a voltage regulator from scratch. Probably the easiest and most understood programming language right now is Java, and that is the language this book focuses on. The book introduces leJOS, which is a Java Virtual Machine (JVM) and operating system rolled into one. It's the first JVM I've seen to run in the tiny space of only 32kb. As lore has it, back when Java was known as "Oak," it was meant as a language to program small appliances such as remote controls, microwaves, televisions, VCRs and other household electronics. In all that time I've never seen Java actually used in such small devices until now.
This book starts out slowly, for people who are just cracking open the box. It gives a complete, in-depth overview of the hardware, as well as the included software -- which the author basically advises you toss away if you have any interest in serious robot programming. Surprisingly (or perhaps not surprisingly) the tiny RCX brick contains as much horsepower as the on-board computers for the Apollo moon missions. The brick contains 32kB of RAM, which seems small at first but when you realize the memory older computers like the Apple II and TRS-80 had, this is an ample amount. Some of those older games had a lot going on in terms of AI and graphics, so for robot applications without graphics it's a lot of memory. In the spirit of Bill Gates, 32kB should be enough for anybody. There are also some good (though prohibitively costly) third-party sensors that, if you owned them all, would give you most of the sensing abilities that old Spock had with his tricorder.
leJOS is a product of Sourceforge, and quite popular. The leJOS language, which is essentially Java with some cut-backs, is covered in depth. It has most of the features of the real Java language, barring object reflection and garbage collection. I haven't heard of any official "smallest JVM" contest but if there was one I'm sure leJOS would be one of the contenders. It definitely surpasses Sun Microsystems J2ME in the micro category. Setup is fairly straight forward and the author even includes a free IDE that works great with the leJOS.
Once past the introductory material, the book contains some truly interesting projects. In a way, the book is similar to the general robotics book Mobile Robots: Inspiration to Implementation (Jones, Seiger, Flynn), except it's for the Mindstorms crowd. There are many robots to build, including a wall-following robot, a robot that navigates with a real compass, a robot you can control from a web page, and some surprisingly in-depth hacking tricks. Unlike books which only give suggestions on how to build robots, this book includes complete building instructions and code listings for every project. The fact that Lego parts and RCX bricks (the processing center of a Lego Mindstorms robot) are identical to each other allows this to be possible. It contains not just 'how to' information, but expands into robot theory as well. Books such as Mobile Robots have to be general and ambiguous at times because the authors don't know what kind of parts a reader will be able to obtain. In a way, this is the genius of Lego Mindstorms - the ability for people to pass robot recipes to one another.
The final two chapters really kick the leJOS language into overdrive. These sections are where geeks thrive. Chapter 11 deals with connecting the RCX brick to the Internet. Apparently the leJOS language has built in classes for sending data, and even a handy Java bean that's useful for embedding JSP web pages. These projects are described down to the last detail, including showing how to set up a free Resin server to serve the web pages. Unfortunately the author does not take the time to explain much of anything with JSP, so beyond his JSP examples you may not get very far. Readers will be forced to look elsewhere if they want to learn more about JSP.
The final chapter really goes hard core. It contains some so-so information about how to hack leJOS, changing classes or removing methods to save memory. The real kicker is a feature of the leJOS JVM I was not aware of: leJOS is capable of running almost ANY language. Apparently even the official JVM is capable of running a multitude of third-party developed languages, including Fortran, C, and weird custom languages such as IBM's NetRexx. All that's required are the development tools to compile the source code into Java bytecode, and these compilers exist in abundance. There are no fewer than 100 such available languages, all free for the downloading.
Illustrations in the book are frequent and helpful, but somewhat plain. Usually they consist of line drawings without much artistic merit. The 3-D renders of the robots are exceptional, however. Each step in building the robots has been rendered, making the Lego parts very easy to see. The steps are well laid out, and the new parts for each step are suspended in the corner and labelled. Thankfully, all models in the book can be built with any version of the Robotics Invention System kit.
If you are a programmer who has an impulse to experiment with robots, but don't want to get solder on your fingers building from scratch, this book will get you to where you want to go. And if you do want to get some solder burns, there's even a few projects in here just for you. Overall the book is a joy to read. The author obviously loves robotics and his enthusiasm shows on every page. The tone is loose but contains a lot of detail presented in an easy-to-digest manner. If you want to dabble in robotics then Lego Mindstorms is the easiest way to do it and having this book is a good way to get started.
You can purchase Core Lego Mindstorms at bn.com. You can read your own book reviews in this space by submitting your reviews after reading the book review guidelines. -
Perdido Street Station
pinkunicorn writes: "Perdido Street Station (2000) is new British writer China Miéville's second novel (the first was King Rat (1998), his latest is The Scar (2002), a sequel to Perdido Street Station). Perdido Street Station is the coolest fantasy novel I've read for a good while, if a fantasy novel is what it is. The protagonist of the book, Isaac Grimnebulin, is a scientist and there are a number of high-tech things in the book, but there's also magic (though it's called thaumaturgy)." Read on for the rest of pinkunicorn's review. Perdido Street Station author China Mieville pages 867 publisher Pan rating 8 reviewer pinkunicorn ISBN 0345443020 summary Fantasy with science and an attitudeThe action takes place entirely in a city, New Crobuzon, and it's a large city.
There are loads of things here that are taken from outside the standard fantasy mould. Lots of the inhabitants of New Crobuzon are not human. This isn't revolutionary in itself, but they are far from the normal Tolkien-influenced critters. There are khepri, a weird species that doesn't even look the same for both sexes. The males are rather small and look like beetles while the females are as large as humans and look like a mixture of humans (lower half) and beetles (upper half). They can't talk, but communicate with scents and sign language. There are garuda, which are a kind of bird men. There are walking cacti. There are vodyanoi who live in water and can shape it to sculptures.
One day, Isaac Grimnebulin get a visit from Yagharek, a garuda who has had his wings taken off for some offense that he doesn't want to talk about. He wants Isaac to help him fly again. Isaac takes on the job in a very thorough way and starts investigating various other animals that can fly to find out how it's best done.
This is different from most fantasy. Normally, magic is the only science there is (and often that isn't treated like a science either). In New Crobuzon this isn't the case at all. There is magic, but it isn't the only thing. There are also photography (of sorts), printing presses for underground newspapers, intelligent cleaning robots, air ships and mechanical computers, all together. As if all this wasn't enough to make you think of science fiction, towards the end there's even an example of prime Star Trek technobabble, but in a fantasy mode.
In spite of its bulk, Perdido Street Station is a pretty fast read. The plot as such isn't too complex, but it drives the story forward nicely. What I think really stands out are the descriptions: China Miéville is very good at conjuring moods and environments and getting the reader to realize exactly how something looks, even in an entirely alien environment. China Miéville claims Mervyn Peake as one of his favorite authors, and the similarities to Gormenghast in feel are sometimes striking.
Perdido Street Station feels quite a bit like cyberpunk in a fantasy setting. Most of the common signs are there: a somewhat run-down city environment, technology development in a guerilla manner, drugs, computers, body modification (through surgery and magic instead of gene technology, but still) and quite a bit of attitude. I'm looking forward to see if this book will leave as much of a footprint in the fantasy genre as Neuromancer did in the science fiction genre.
You can purchase Perdido Street Station at bn.com. You can read your own book reviews in this space by submitting your reviews after reading the book review guidelines. -
LEGO Mindstorms: The Master's Technique
Poomah writes: "I started my LEGO building career in the late 60s with the basic bricks of that time. I built anything that came to mind. There was no end to the wonders I created with those basic bricks. As I grew up I strayed from the LEGO path to do things like going to college, getting a job, and getting married so I could start a family. When LEGO Mindstorms was released, I was one of the first in line to get one." Now he's discovered a book to help people get the most out of these toys, so here's Poomah's review of LEGO Mindstorms: The Master's Technique. LEGO Mindstorms: The Master's Technique author Jin Sato pages 361 publisher No Starch Press rating 9 reviewer Poomah ISBN 1-886411-56-5 summary How a master builds a LEGO MINDSTORMS robot.I devoured the book, performed all of the challenges and even amazed my friends with a few inventions of my own. From time to time I would see some inventions spotlighted online. I would marvel at the time and dedication people would put into these. I would wonder, like many others, how someone would conceive such things as a copier or a Rubik's Cube solver. Now there's a book that explains LEGOS from the mind of a master and an engineer of 25 years: Jin Sato's LEGO Mindstorms: The Master's Technique."
When I first looked at this book I was so excited. It would give me the excuse I would need to play with my LEGOS once again. It even has a cute LEGO doggie on the cover. Wait a moment, that cute doggie uses two LEGO Mindstorms kits. It has two RCXs. I only have one. Is this book going to be of any use to me, the casual LEGO builder? Simply put, "Yes!"
Jin starts the book at the most logical place, the beginning. A quick one-page history, one short chapter on the LEGO bricks themselves. This includes info on what they are made of, some of the evolution of LEGO into TECHNIC pieces, and how to assemble them in different ways to create strong connections using minimal pieces.
Chapter 3 starts with the good stuff, motors and gears. What would LEGO Mindstorms be without motors and gears; just a lump of art. In just a few pages the Jin explains everything a first-year mechanical engineering student needs to know about gears. He steps you through creating a gear test bed. This shows you, using a single motor, how all the gears operate and work together. At this point I was wishing I had started reading this book at home near my LEGOS.
I could write in detail about the wonders of each chapter. To keep from writing a review that's the same size as the book, let me summarize some things. This book is filled with lots of examples. Not so much a beginning to end to create a single project, but more a process of creation. Anyone can follow a step-by-step approach for creating a single LEGO project. I have several of those at home sitting on a shelf covered in a thin layer of dust. I call them LEGO art. But with this book, each example evolves you into the next more complex example. The nice thing about these examples is the comments scattered through out. There is a bit of theory explaining how it should work before you get into the construction. This really helps you understand why you are building each part. Eventually you build up to building MIBO, the LEGO doggie on the cover. Personally I couldn't build MIBO since I only have a single RCX, but the concepts he explains gave me new ideas and a drive to build with my current resources.
Every LEGO Mindstorms enthusiast should have this book next to their LEGO storage bin. It's a great reference book when you are in a creative mood.
You can purchase LEGO Mindstorms: The Master's Technique at bn.com. You can read your own book reviews in this space by submitting your reviews after reading the book review guidelines. -
A New Kind of Science
cybrpnk2 writes: "The story is one of epic proportions: Boy genius gets PhD from Cal Tech at age 20, is the youngest recipient ever of the MacArthur Foundation Genius Grant, writes the Mathematica simulation software used by millions of people, makes millions of dollars in the process, becomes enticed by the seductive lure of the Game of Life, and goes into a decade of seclusion to discover the secrets of the universe. You can catch up on the resulting speculation and hype here. The years of anticipation and publication delays came to an end Tuesday, May 14, 2002 with Stephan Wolfram's release of his opus, A New Kind of Science." Read on for cybrpnk2's review of Wolfram's much-heralded work. A New Kind Of Science author Stephen Wolfram pages 1197 (plus 62 page index) publisher Wolfram Media, Inc. rating 10 reviewer cybrpnk2 ISBN 1-57955-008-8 summary A long awaited treatise that cellular automations, not mathematics, holds the key to understanding realityFirst things first - have I read this book? Hell, no, and if anybody else says THEY have in the next year, they're lying thru their teeth. This book is so dense that if Wolfram had added a single additional page, the whole thing would have imploded into a black hole. That's got to be the only reason he quit writing and finally went to press.
I've been waiting for years for ANKOS to come out. I ordered my copy Tuesday when it was released, got it on Thursday and I've been skimming it like mad since. To give you some idea of how engrossing this book is, I was reading it Friday morning at 4 AM in the bathroom of a Motel 6, curled up in a bedspread on the tile floor to keep from disturbing my wife and stepdaughter during a trip to my stepson's graduation. I've got four college degrees, one in math and two from MIT, and bottom line - this sucker's gonna take a while to digest. However, it's theoretically straightforward enough that anybody with a high enough level of obsession and a few years to stay glued to it can follow it in its entirety. In ANKOS, Wolfram certainly comes across as arrogantly cocky but in the final analysis is he a crank or a revolutionary genius? Who knows, but it's going to be a new nerd pastime for the next decade to argue that point.
ANKOS is 1250+ pages divided into 850 pages of breezy exposition followed by 350 pages of fine-print notes. The exposition is composed of 12 chapters and the notes have about a paragraph per page of topic- and name-dropping technobabble to let you know where to go next for more details on whichever of Wolfram's tangents strike your fancy. Topping the whole thing off is a 60+ page index with thousands of entries in even smaller typeface than the notes.
Despite its length, ANKOS is not a rigorous mathematical proof of anything as much as it is a superficial survey of a vast new intellectual landscape. And what a landscape Wolfram has laid before us. It's all about cellular automations, which have traditionally been relegated to the realm of mathematical recreations. Start with a black square in the center grid square (cell) on the top line of a sheet of graph paper. Think up a few rules about whether a square gets colored black or white on the next line down depending on the colors of its neighbors. Apply these rules to the squares on the next line of the sheet of graph paper. Repeat. Watch what happens. Sounds simple. It isn't.
The first short chapter outlines Wolfram's central thesis: That three hundred years of mathematics based on the equals sign have failed to provide true insight into various complex systems in nature, and that algorithms based on the DO loop can succeed in this endeavor where mathematics has failed. The reason, claims Wolfram, is that deceptively simple algorithms can produce heretofore undreamed of levels of complexity. He claims that while frontier intellectual efforts such as chaos theory, fractals, AI, cybernetics and so forth have hinted at this concept for years, his decade of isolation studying cellular automata has taken the idea of simple algorithms or rules embodying universal complexity to the level of a new paradigm.
The second chapter outlines what Wolfram calls his crucial experiment: the systematic analysis of the 256 simplest rule sets for the most basic cellular automatons. He discovers this "universe" of rules is sufficient to produce his four so-called "classes" of complex systems: order, self-similar nested patterns, structures and most importantly, true randomness. The first two lead to somewhat familiar checkerboard-type patterns and leaf-type fractals; the last two, unforeseen unique shapes and unpredictable sequences. Wolfram stresses that the ability of simple iterative algorithms to produce complex and unique non-fractal shapes as well as truly random sequences of output is in fact a revolutionary new discovery with subtle and profound implications.
The third chapter expands his initial 256-rule-set universe of simple algorithms with many others Wolfram has researched for years in the dead of night while others slept. Rule sets involving multiple colors beyond black-and-white, rule sets that update only one grid square instead of a whole row, rule sets that embody full-blown Turing machines, rule sets that substitute entire sets of patterned blocks into single grid cells, that tag end point grid squares with new patterns, that implement "registers" and "symbols" - Wolfram has examined them all in excruciating detail. And no matter how complex the rule set is he explores, it ends up generating still more and more unexpected complex behavior with many notable features as the rule sets are implemented. This ever-escalating spiral of complexity leads Wolfram to believe that cellular automatons are a viable alternative to mathematics in modeling - in fact, embodying - the inherent complexity of the natural world.
In chapter four, he begins this process, by linking cellular automatons to the natural world concept of numbers. Automatons that multiply and divide, that calculate prime numbers and generate universal constants like pi, that calculate square roots and even more complex numerical functions like partial differential equations - Wolfram details them all. Who needs conscious human minds like those of Pythagoras or Newton to laboriously work out over thousands of years the details of things like trigonometry or calculus? Set up dominos in just the right way, flip the first one and stand back - nature can do such calculations automatically, efficiently and mindlessly.
Chapter five broadens the natural scope of cellular automations from one-dimensional numbers to multi-dimensional entities. Simple X-Y Cartesian coordinates are left behind as Wolfram defines "networks" and "constraints" as the canvas on which updated cellular automatons flourish - always generating the ever-higher levels of complexity. More Turing machines and fractals such as snowflakes and biological cells forming organs spontaneously spring forth. So far we've seen some really neat sleight-of-hand that Martin Gardner or Michael Barnsley might have written. But we're only on page 200 of 850 with seven chapters to go, and Wolfram is just now getting warmed up.
Chapter six is where Wolfram begins to lay the foundation for what he believes is so special about his insights and discoveries. Instead of using rigid and fixed initial conditions as the starting points for the cellular automations he has described, he now explores what happens using random and unknown initial conditions in each of his previously defined four "classes" of systems. He finds that while previously explored checkerboard (Class 1) and fractal (Class 2) systems yield few surprises, his newly-discovered unique (Class 3) and random (Class 4) cellular automaton systems generate still higher levels of complexity and begin to exhibit behavior that can simulate any of the four classes - a telltale hint of universality. Furthermore, their behavior starts to be influenced by "attractors" that guide them to "structure" and self-organization.
With the scent of universality and self-organization in the air, Wolfram begins in chapter seven to compare and contrast his cellular automations to various real-world topics of interest. Billiards, taffy-making, Brownian motion, casino games, the three-body problem, pachinko machines - randomness is obviously a factor in all of these. Yet, Wolfram notes, while randomness is embedded in the initiation and influences the outcomes of each of these processes, none of them actually generate true randomness in the course of running the process itself. The cellular automations he has catalogued, particularly his beloved Rule 30, do. The realization that cellular automations can uniquely serve as an initiator or generator of true randomness is a crucial insight, leading to the difference between continuity and discreteness and ultimately to the origins of simple behaviors. How, you ask? Hey, Wolfram takes most of the chapter to lay it out in a manner that I'm still trying to follow: no way can I summarize it in a sentence or two.
By chapter eight, Wolfram believes he has laid out sufficient rationale for why you, me and everybody else should think cellular automations are indeed the mirror we should be looking in to find true reflections of the world around us. Forget the Navier-Stokes equations - if you want to understand fluid flow, you have to think of it as a cellular automation process. Ditto for crystal growth. Ditto for fracture mechanics. Ditto for Wall Street. Most definitely ditto for biological systems like leaf growth, seashell growth and pigmentation patterns. This is very convincing stuff - tables of Mathematica-generated cellular automation shapes side by side with the photos of corresponding leaves or seashells or pigment patterns found in nature. Yes, you've seen this before in all of the fractals textbooks. The difference between fractals and cellular automations: fractals are a way to mathematically catalog the points that make up the object while cellular automations are a way to actually physically create the object via a growth process. It's a somewhat subtle difference - and a key Wolfram point.
Having established some credibility for his ideas, Wolfram stretches that credibility to the limit in chapter nine, where he applies his cellular automation ideas to fundamental physics. It was practically inevitable he would do this - his first published paper as a teenager was on particle physics, and that's the field he got his PhD in from Cal Tech at age 20 before going on to write the Mathematica software program and make his millions as a young businessman. Despite his solid background in physics, this seems at first blush to be pretty speculative stuff. He shifts his focus on the cellular automations from randomness to reversibility, and describes several rule-sets that both lead to complexity and are reversible. This behavior is an apparent violation of the Second Law of Thermodynamics. From Wolfram's way of thinking, if the universe is indeed some kind of ongoing cellular automation, then it may well be reversible and the Second Law must not be the whole story, so there must be something more we have yet to learn about the nature of the universe itself. He continues extensive speculations on what this may be, and how space, time, gravity, relativity and quantum mechanics must all be manifestations of this underlying Universal Cellular Automation. The rule set for this ultimate automation, which Wolfram believes might ultimately be expressed as only a few lines of code in Mathematica, takes the place of a mathematically-defined unified field theory in Wolfram's world. This is mind-blowing stuff, but ultimately boils down to Wolfram's opinion. I have great difficulty in comprehending space and time and matter and energy as "mere" manifestations of some cellular automation - if so, what is left to be the "system" on which the automation itself is running? I'm reduced to one of Clarke's Laws: The universe is not only stranger than we imagine, it is stranger than we CAN imagine ...
Wolfram shifts from Kubrick-style religion back to mere philosophy in chapter ten, where he explores how cellular automations are perceived by the human mind. Visual image perception, the human perception of complexity and randomness, cryptography, data compression, statistical analysis, and the nature of mathematics as a mental artifact are all explored. The chapter ends on a discussion of language and the mechanics of thinking itself. Wolfram reaches no real concrete conclusions on any of these, except that once again cellular automation is a revolutionary new tool to use in achieving new insights on all of these topics.
Chapter eleven jumps from the human mind to the machine mind by exploring not the nature of consciousness but the nature of computation instead. He goes here into somewhat deeper detail on ideas he has introduced earlier, about how cellular automations can perform mathematical calculations, emulate other computational systems, and act as universal Turing machines. He focuses on the implications of randomness in Class 4 systems and the universality embodied in systems like that of his Rule 110. His arguments lead up to a closing realization, what he does not call but may one day be named Wolfram's Law.
The final chapter, chapter twelve, discusses what all of Wolfram's years of isolation and work have led him to conclude. He calls it the Principle of Computational Equivalence. What follows is an unavoidably oversimplified distillation of Wolfram's thoughts on the PCE. If indeed cellular automations are somehow at the heart of the universe around us, then the human effort to reduce the universe to understandable models and formulas and simulations is ultimately doomed to failure. Because of the nature of cellular automation computation, there is no way to come up with a shortcut method that will deduce the final outcome of a system in advance of it actually running to completion. We can currently compute a rocket trajectory or a lens shape or a skyscraper framework in advance using mathematics merely because these are ridiculously simple human efforts. New technologies based not on mathematics but instead on cellular-automations like wind-tunnel simulators and nanobot devices will be exciting technological advances but will not lead to a fundamentally new understanding of nature. Issues that humans define as undecidability and intractability will always limit the level of understanding we will ultimately achieve, and will always have impacts on philosophical questions such as predestination and free will. To conclude with Wolfram's own final paragraph in the book:
"And indeed in the end the PCE encapsulates both the ultimate power and the ultimate weakness of science. For it implies that all the wonders of the universe can in effect be captured by simple rules, yet it shows that there can be no way to know all the consequences of these rules, except in effect just to watch and see how they unfold."
As noted above, 350+ pages of notes follow this exposition, and trust me, there's no way they can be summarized. To mention one nugget I found amusing as I envisioned Wolfram working towards endless dawns on ANKOS, he thinks sleep has no purpose except to allow removal of built-up brain wastes that cannot be removed while conscious. So much for dreaming.
So what is the bottom line on ANKOS? It is a towering piece of work and an enduring monument to what a focused and disciplined intellect can achieve. It is very thought provoking. It will definitely lead to new work and progress on cellular automation theory and some interesting technological applications we should all look forward to with anticipation. But is it the next Principia, the herald of a new scientific revolution?
Read and decide for yourself. Only time, and a lot of it, will tell.
To read it yourself, you can purchase A New Kind of Science at bn.com. You can read your own book reviews in this space by submitting your reviews after reading the book review guidelines. -
Bitter Java
Peter Wayner writes: "There are 1693 books for sale at Amazon.com with the word "java" in the title and almost all of them are earnest, chipper books that promise real programmers, dummies , and nuts that learning Java is easy. Bruce Tate's, Bitter Java , is not one these books." Read on to see if you'd like to experience Bruce Tate's bitterness first hand. Bitter Java: The lessons taught by server-side Java Antipatterns author Bruce A. Tate (with help from Braden R. Flowers) pages publisher Manning rating 8 reviewer Peter Wayner ISBN 1-930110-43-X summary A collection of bad habits to avoid for server developers using Java.Writing and reading technical books is both a pleasure and a chore. Programming computers can be great fun, but doing the job well requires almost impossible amounts of discipline, attention to detail, and pure drive. The machines churn through billions of operations per second and a mistake in just one can send everything tumbling out of control. Most authors tend to gloss over the difficulty by tossing in a spoonful of Mary Poppins because it does little good to grouse. It's just so simple and straight-forward to toss in optimistic words like "simple" and "straight-forward."
Tate's approach is looks a bit different. He wants to follow in the tradition of Frederick Brook's Mythical Man Month and talk about software development with an honest voice. Microsoft executives, Objective C devotees, and assembler lovers will be disappointed because the title is a bit misleading. He's not really bitter about Java in the way that Princess Diana was bitter about the British Royalty, he's just had a few bad experiences and he wants to help us learn from them.
In fact, he's not even writing about Java in the general sense. The book concentrates on the problems that often arise with most popular and complicated applications for the technology like servlets and enterprise Java beans. If you're building a web site based on Java, then you might want to read through this book.
The structure itself is devoted to uncovering antipatterns , a term Tate uses because it plays off the way that Sun offered Java patterns to help programmers use the new tools efficiently. Most of the chapters show the wrong way to build something and then show how to correct it.
Chapter 8, for instance, demonstrates a bulletin board that seems to be well-designed on the surface. The parts of the data structure are broken up into suitable objects and every object comes with a collection of methods that act as gatekeepers for the data inside the object. It all looks elegant, but it performs badly especially on large installations when the objects live on different servers. Suddenly, all of the extra well-meaning object-oriented engineering starts jamming the flow. Wrapping every object with so much glue code is like hiring more workers to speed up a bureaucracy. Tate shows how to aggregate the calls and speed things up dramatically by cutting through the misapplied object-oriented concepts.
If you step back a bit and think about the book from a distance, the right title starts to look like "Bitter Object-Oriented Programming". Most of the problems in the book emerge when seemingly good uses of OOP turn out to be terribly slow when implemented. While all of the problems are practical hurdles awaiting Java programmers, they must have cousins in the world of C++ and the other OOP languages. Splitting things up into many objects is plenty of fun at the beginning, but when the messages start flowing, the code becomes a swamp.
After a few chapters it becomes clear that object-oriented programming is starting to reach practical limits. The theory may be elegant, but programmers can only make it work if they use guidebooks like Tate's. The object-oriented toolkits are too easy to use dangerously. So what is the solution?
This kind of guidebook filled with antipatterns may be the best we can do for now. Tate himself says that the book is filled with "merc talk", the kind of chatter about hair raising experiences he says that mercenaries trade when they're sitting around the fire. This is an apt description. If you're a hired codeslinger creating J2EE applications or servlets, then this is a good book for your shelf.
Peter Wayner's latest two books are Translucent Databases , an exploration of how to create ultra-secure databases, and Disappearing Cryptography: Information Hiding, Steganography and Watermarking , a book about mathematical parlour tricks, sleights-of-hand, and subversive things you can do with bits. You can purchase Bitter Java at bn.com, and you can join Peter in reviewing books by submitting reviews after reading the book review guidelines.