On and off, I've tended to read quite a bit. So, I thought I'd put up some reviews of books as I read them. In time, I may go back and add reviews of some of the books I read in the past. Not massively exciting, but I suppose it may be of interest to someone, somewhere (perhaps).
The Art of Electronics - Horowitz and Hill (1)
I've become bored of waiting to finish long books before reviewing them. As this is another thousand page textbook, it seems like a perfect starting point. So, I'm now reviewing chapters 1-6, which form the 'analogue core' of the book.
Horowitz and Hill is, of course, the bog standard big electronics book. It's been kicking around on my shelf for years, and I've tried getting into it from time to time, but never really made it. Starting doing some DIY electronics has encouraged me to get into it properly. It does work very nicely as a reference - individual chapters and sections stand alone very well. Indeed, this is how I started reading it, and it has worked very well.
This patchy approach has built up my understanding without bogging me down in the painful transistor theory at the start of the book. It's a real shame that it has to start with this, since it's... well... pretty off-putting. Once over the hump of Chapters 2 and 3 (bipolar and FET transistors), the rest is relatively easy reading. Indeed, nowadays you probably won't be doing so much work with discrete transistors, so I feel less guilty for skimming this material!
I still find transistors tricky things, even if I understand them a little more. Ebers-Moll is still pretty mysterious, but I'm happy with the current-multiplier model. Indeed, I find transistors nutty as a basic building block. If you wanted to design a primitive to build upon, the transistor's weird behaviours would not be it. The fact we can build up complicated structures from abstractions based on top of them is pretty magical.
So, when it comes to op-amps, I now feel rather more confident. Generally, I now have a much better mental toolkit to deal with circuits. I've moved away from just thinking about voltages, and now can also see the circuits in terms of currents - lots of stereotyped design is about making stiff current or voltage sources/sinks. Indeed, this is another thing - breaking a circuit made of lots of many componenets into the various little stereotyped elements, glued together - reading the circuit as words, rather than puzzling out each letter.
However, by finally understanding electronics just that little bit better, I now understand how complicated it is, and how much there is. Despite the fact this is a big textbook, it's still just skimming the surface of the subject. Chapter 5's active filters discusses many filters, but only provides the results - all the theory is completely ignored for space, and it looks pretty deep. From what I've read on crystal oscillators, a one line throw-away in this book might mean reading a few dozen pages elsewhere to understand it.
This is the second edition, published in 1989, and that's the latest there is. The cutting edge of electronics moves quickly, so I'm sure plenty has changed, but at the same time much of the basics stay the same. As I'm no electronics expert, I can't tell how much is now horribly dated, and how much isn't. On the other hand, the billions of data sheets and parametric searches on the internet make a lovely companion to this book. Opinion so far: Great buy.
Permalink. Posted 20:41, Sat, 17 Jul 2010.
Zen and the Art of Motorcycle Maintenance - Robert M. Pirsig
This book is about as '70s as it gets. I kind of got the impression it might be '60s-ish, but it's much more in the '70s disillusionment phase. My general knowledge of the book before I read it was somewhat skewed, so I enjoyed it more than I thought.
The story is of a man crossing America on his motorcycle with his son, trying to reconnect with him. Philosophy gets discussed along the way. So far, so hippie, right? Well, actually, no. He's recovering from mental illness, and he's fundamentally very 'square'. He's an ex-scientist, a technical writer, and his 'motorcycle maintenance' is an exercise in care and logic. Indeed, it's the best description of debugging I've ever read, if only by analogy. Oh, and he's really rubbish at getting on with his son.
The book initially concentrates on the journey, but become increasingly concerned with philosophy, often through flashbacks into his fall into madness. The overall gist is in the direction of monism, through the underlying undefinable value of things - their Quality. It tries a bit hard, and never really clicks with me. I have a suspicion that any philosophy that proceeds step-by-step to astonishing solutions is probably wrong somewhere, a subtle wrong turn that just grows and grows. Useful philosophy is like a stable PDE - small inaccuracies don't make everything that follows useless. While his conclusions are odd, I like much of the journey, even if it's overwraught.
Much of this is concerned with a Poincaré-like view of the philosophy of science and maths. That is, all this talk of logic and reason is a sham! Specifically, while the results show rigour or experimental verification, the ideas come about through a creative process based around an intrinsic notion of beauty. While I think Poincaré knows about as much of the thought processes behind maths as a professional athlete knows of anatomy, I still feel there's a strong element of truth, which Pirsig links into Zen as being in a state of being fully absorbed into something - something I've come across elsewhere as 'flow'.
Anyway, the summary is that I like that bit, since it basically says the solution to the pains of a consumerist lifestyle is through gaining understanding and taking pride in what you do. Which fits pretty nicely in what I like anyway. Perhaps people read into this book what they like already? :)
At the end of it all, I think it's not terribly successful. It's highly ambitious, and has a good run at it, but I don't think it pulls it off. The philosophy doesn't sit right, and the story didn't really grab me either. It's impressively zeitgeisty with the anxiety of the '70s, and I'm glad I read it. In a way, one of the things I found most impressive were excerpts of letters in the back between the author and editor. It's clear the editor saw something in this way before it had its final form. The man obviously had fantastic vision.
Permalink. Posted 22:20, Sat, 26 Jun 2010.
Mindstorms - Seymour Papert
Mindstorms and Seymour Papert are the reasons for LOGO in schools. That is, it's the reason my primary school had a robot which would drive forward, turn a right angle, and drive forward a little more, in front of a set of bewildered children, and why the BBC micros at my prep school occasionally ran programs that let us draw squares.
The premise of the book is that we could use computers to teach children how to think. Specifically, it would provide an opportunity for children to learn how to both formalise things (i.e. how to program) and how to think through hard problems by refining partial solutions (i.e. how to debug). Papert complains that most education is about right vs wrong answers and rote practice, without developing understanding (so children practice thousands of sums without ever really seeing the algorithm). So, the maths in school is no more like real maths than a spelling test is like writing literature.
Indeed, his ideas are very powerful. Children are very rarely taught (or perhaps let learn) ways of thinking, and I think that's what distinguishes the best teachers. It's ambitious and interesting. He thinks it could succeed where 'New math' failed. Unfortunately, experience has shown it to be the new 'New math'. The LOGO way of working takes time. Children have to be let loose experimenting, discovering rules and ideas in their own way, with subtle guidance. One robot shared across a classroom of children doesn't cut it. When it came to LOGO on the BBC B, I do remember doing some pretty cool stuff with it, but this was perhaps despite the infrastructure, not because of it. Looking back, so much more could have been achieved.
In the end, what Papert was after was pretty much achieved with BASIC! It's a horrible thought, but that's what introduced a whole generation of now-professional programmers and mathematicians to the world of computational description. Even that was a fleeting world, as modern computers hide the computation from the user.
Indeed, one of the fallacies of the book was 'there will be more computers, so there will be more programming'. Computers are ubiquitous, but they've hidden programming. They've become fantastically powerful typewriters and easels, but for the majority of users, that's it. If you want to do the same things lots, you better hope your software supports it, as scriptability is rarely exposed. This is not how the future was meant to be!
So, in the end, this book reminds me how much the potential of computers has been lost. Independent of the argument about dumb GUIs or esoteric programming languages, the main point is that computers have been dumbed down to the average person, rather than providing a way to lift the average person up. *sigh*
The idealism in the book, though dated, is still catchy. Fundamentally, schools were never going to change that much. I very much doubt David will see LOGO at school, but I'm seriously tempted to wave a LOGO turtle at him when the time comes.
Permalink. Posted 18:51, Sat, 05 Jun 2010.
The Problems of Philosophy - Bertrand Russell
This was a find in the local Oxfam. It's a short (100 pages) book on the basics of philosophy, as viewed by Bertrand Russell. That last proviso means it's rather more constrained than you'd expect a philosophy book to be. It's almost 'the philosophy of maths', cutting out areas of philosophy that don't contribute to the ideas of what knowledge and truth are.
The approach taken is a little uninspiring. As formalised, axiomatic maths basically comes down to 'we claim to formally manipulate the symbols from arbitrary axioms without acknowledging any real meaning, despite our obvious intuitions', his approach to the very basic questions of philosophy (e.g. does matter exist?) comes down to 'we can't know for sure, but we acknowledge the question exists, and choose the obvious answer without a real reason' (e.g. yes). So, we take our intuitive truths in philosophy as axioms, just as we do in maths.
This view is reasonable enough - after all, we can't sensibly prove our basic laws of reasoning using those very same laws, but it's still a slightly sterile view. However, in the end Russell turns it around by pointing out that if very little can be drawn purely from the 'Self', then philosophy encourages us to reach our maximum potential by engaging with and understanding the universe.
So, why did I find the book disappointing? Purely the limited scope, I suppose. I thought this would be an introduction to philosophy, but it's really an introduction to Bertrand Russell.
Permalink. Posted 18:28, Sat, 05 Jun 2010.
Winning Ways for Your Mathematical Plays, Volume 1 - Berklekamp, Conway and Guy
What a terribly odd book! It's maths, but not as you know it! It's a recreational maths book on combinatorial game theory, which is about playing deterministic, total knowledge games - things like chess and go, although unsurprisingly the book focuses on things with mathematical structure which can be analysed, so it covers more things like Nim and Hackenbush.
This is volume one of four (specifically, of the second edition. The first edition was apparently in only two volumes, and printed on less annoyingly shiny paper), and concentrates on the basic, mostly adding games. When adding games, you take turns playing one move from any of the sub-games (at your choice), and then add up the scores of all the sub-games at the end. Well, it's formalised a little differently, but that's more or less the idea, and it's not unlike how the end-game of go works. (In fact Berlekamp also wrote 'Mathematical Go' on this very subject.)
Anyway, why's this book strange? First, the analysis is rather surprising, being based on Conway's 'surreal numbers' to describe game positions (rather than, say, explicit game trees), using an extended arithmetic to describe the addition of games. That's quite funky, conceptually. And the other thing is the presentation. Proofs aren't offered for most things, and indeed many ideas are used intuitively before they're formalised. For those used to other maths books, this is pretty alien. On top of this, there are plenty of silly jokes and illustrations.
In the end, I had to learn to let go and go with the flow - read ahead without thinking too hard, to see if it became clear, with a plan to read it a second time in more detail once the ideas have settled in. This is, perhaps, a good way to read maths books in general, trying to collect the overall idea first before slogging through the details. Either way, though, this is not your normal maths book!
Permalink. Posted 14:54, Sun, 23 May 2010.
The Devouring Fungus - Tales of the computer age - Karla Jennings
This is a book of computer stories, history and trivia from 1990. It's an odd mixture, and now pretty retro. Parts are very Jargon Filey, and others heavily mainframed and IBMy. The parts that talk about computing culture, while covering the same people, are far, far less flattering than the Jargon File is. The same jargon is covered, but here it feels as true to life as an official government pamphlet about 'Beat' slang. The whole feel of this section is of a lost anthropologist, but in its way it's rather interesting, especially as a contrast to other sources.
The other part of the book, which feels rather stronger, is the wide collection of computer anecdotes, many of admittedly dubious authenticity. The author appears to have done plenty of research, gathering facts on the verifiable stories, but sources aren't cited and some things are left rather woolly, so it's a relatively poor secondary source... but many of the stories are still quite fun!
All in all, it's a weaker book than it could have been, and there's quite a bit of overlap with various other sources, but it does fill in the gaps rather well, and as the book's dated, it's even become a bit of a historical snapshot in its own right. Worth reading, if you're into this kind of thing.
Permalink. Posted 21:33, Tue, 11 May 2010.
Diaspora - Greg Egan
I'd read Permutation City previously, despite the fact that Egan wrote this book first. They cover similar ideas, although PC was more convoluted, as Diaspora had nicked all the low-hanging fruit. I find his novels horribly scientifically plausible - a vision of the future more alien, yet somehow more believable than the extrapolation of, say Accelerando. The background to this particular story is a bleak utopia, even worse than Banks's Culture. What do you do in a world where you can do everything?
Specifically, the main characters of this book are conscious pieces of software running on hugely powerful computers in the distant future. They can do anything they want in the simulated world. Then life in the (real) flesh is wiped out, and the characters look for a way to avoid being hit by similar catastrophes. The plot is rather uninspiring, but provides a backdrop against which Egan explores maths and (well-researched!) physics, and the consequences of digital consciousness.
The characters are surprisingly human, for disembodied software. The politics and emotions are all still there, which I guess is his concession to avoiding writing a book so alien as to be almost meaningless. There are aliens who are 'too alien to comprehend', but I didn't find that part particularly convincing. On the other hand, looking at some of the main characters, it's entirely conceivable that intelligent programs might act a bit dumbly from time to time!
As usual, it feels like Egan's snuck inside my head, taken my thoughts, fleshed them out, explained them better, made them into a story, extrapolated logically, and come up with a depressing conclusion. In this case, more literally than usual, because I found the ending itself uninteresting and uninspiring. On the other hand, perhaps this is the message of the book: It's about the journey, not the destination.
Permalink. Posted 22:51, Sun, 02 May 2010.
Sense and Sensibility - Jane Austen
This is probably simplest if I review it in a comparison with Pride and Prejudice. It's quite a lot of fun. Pride and Prejudice signals the ending pretty darn early, and from then on it's a case of just finding out how it gets there, and enjoying the silliness of the characters along the way. This book doesn't signal the ending up-front, so there's actually some suspense in the plot, and it even gets a little twisty towards the end!
Whereas the other book is mostly full of silly characters, this one is full of a fair number of actually pretty mean ones, which in a way is just as enjoyable. This book has more depth and... I think it's reasonable to say it's basically better. It's a little more effort to read, but still great stuff, and the extra effort's worth it.
Permalink. Posted 21:38, Tue, 27 Apr 2010.
The Android's Dream - John Scalzi
This is an incredibly fun, if not entirely serious, novel. John Scalzi seems to have burst pretty much out of nowhere to produce a pile of onjoyable stuff. The story is action-packed and silly, but reassuringly twisty and inventive. Less dumb than Neal Asher, it feels a bit like early Stross or Stephenson, but tighter and better. I'll avoid spilling the beans on the plot, since you should go read it yourself. Suffice to say, it includes a Scientology parody, which can only help improve things.
The main character is a super-hero, but that's not particularly offensive in a novel of this style. The military background felt disappointingly close to Old Man's War territory, but hey, I'm just not a military sci-fi person. Really these are light criticisms, though, in the context of how much I enjoyed this book. It's the most surprisingly entertaining piece of sci-fi that I've read in quite some time.
Permalink. Posted 21:32, Mon, 19 Apr 2010.
Pride and Prejudice - Jane Austin
In my ignorance, I'd filed Jane Austin with a set including Daniel Defoe, George Eliot and Thomas Harday. Worse than that - it was Chick Lit. I'd been forced to endure the film of Bridget Jones, so I know what that's like.
Fortunately, Russ Allbery's book reviewing corrected my understanding. I downloaded Google's ebookification, and away I went. Before starting on the main review, I should point out that Google's book scanning and OCR thing is... a little disappointing. I understand that creating a near-canonical text is somewhat challenging, and that they want to automate as much as possible, but the OCR mistakes are pretty grim. Surely they could scan several different editions and automatically merge the texts? Any ambiguity could be highlighted, and fixed by end-users, wiki-style. Maybe they do all this already, but I certainly couldn't find such a version.
Anyway, back from the edition to the novel itself. I suppose in some sense it is a book about people falling in love, but that's just massively missing the point. The book is very funny, mostly in its sarcastic, or at least very snarky tone. The characters all have their weaknesses, which are never underplayed, but are at least believable, and unlike flawed characters in modern novels, there aren't any you want to pick up and shake and say 'Stop being stupid!' to.
I always find it odd reading novels which were originally contemporary which have since become historical. Sherlock Holmes being high-tech action-packed crime drama of its day was an example I particularly enjoyed. So again with this. In some ways, it's timeless. In others, it's a fantastic historical document, describing the situation from the inside, without reference to another timeframe. However, sometimes the fact that it assumes its own time means that some period details and assumptions are a little obscure. Still, not much you can do about that.
Stepping back, it really is a very fun little novel. Neato.
Permalink. Posted 14:28, Sun, 18 Apr 2010.
All you need is kill - Hiroshi Sakurazaka
Awful title, awful cover, hideous blurb on the back, versus a tiny positive quote from John Scalzi on the front. This is not an obvious book to read, and indeed I took the mickey out of a friend for reading it, but he really enjoyed it, as did another friend, so it was lent to me.
So much of the awfulness seems to come from the fact that it's translated Japanese sci-fi, so a fair amount of marketing is lost in translation, or replaced with the need to manga-ise it. The idea of the series is pretty cool - take the best Japanese sci-fi, and translate it. One assumes there should be plenty of good sci-fi from Japan, so you just bring the best across and make a mint. That is, I believe, the theory.
Anyway, the story itself is... not bad. We're talking Neal Asher depth, here. 'Action-packed' is the most positive adjective that can be applied, I think. The story is Groundhog Day meets Neon Genesis Evangelion - a soldier in a high-power exoskeleton fights invading alien hoards, dies and awakens the previous day, repeatedly. It's carried off well enough, in a pulpy, computer-gamey kind of way.
(Although I found the story was somewhat improved by subconciously ignoring the author's description of the alien invading hordes, and imagining them as domokuns instead. But I digress....)
For me, the afterword was the best bit. A couple of paragraphs adding a simple, obvious meta-narrative that I'd missed. The whole story is about the author's experiences with computer games - when a game is won the characters in the game get everything right the first time simply because the player of the game has built up skill by failing and killing off so many previous instances of the character. The whole book is about saving and reloading!
Permalink. Posted 21:22, Tue, 13 Apr 2010.
The Art of Unix Programming - Eric S. Raymond
I'd been holding off reading this for some time, until I could happily read it in PDF form on an e-reader, as I wanted to avoid feeding money to the noted nutcase ESR. In retrospect, this is perhaps a little harsh.
I really rather enjoyed the book. The historical part was a mixture of the well-known and the uninteresting, the Open Source sales pitch was pretty much as you'd expect from him. When it comes to design, language choice and file/protocol format stuff, it's actually all straightforward... but that's exactly his point of what the Unix way is!
Although there's pretty little that's new in theory to me, after years working on Win32, it was nice to have a reminder that everything needn't be multithreaded OO with lots of components and binary protocols. Indeed, it rather makes me wish we had more decoupled, simple, debuggable design going on, and has inspired me to push a little more in that direction.
The details of file format and protocol design were rather nice, since it points you at specific examples to ape, massively reducing the thought required in this area, and giving you an existing vocabulary to work with. Almost a 'Design Patterns' of textual interfacing.
The section on programming language choices was realistic, but dire, making me think this is an area where the Unix world is losing its battles. The 'modern' choices, once you'd got over C/C++, sh, Tcl and Perl were Python and Java. Mmmm... depressing.
Outside his area of expertise, Mr. Raymond is willing to talk authoritatively on things he doesn't understand. He rightly complains about the Windows registry, but fails to see that the core Win32 is mostly pretty neatly designed, with a fundamental 'waitable object' approach that works well. Having said that, it's not exactly an uncommon failing for Unix developers to complain about this API without understanding it. (And yes, there are things wrong with it, but we're not even talking that level of understanding).
Otherwise, he initially sells Unix as being superior to many other OSes in the features it supports, despite the fact that Unix is designed to be as dumb as practical, and only wins by being compared to a set of hobbled competitors. Fortunately the end of the book is rather more honest about where it stands compared to more advanced systems.
In the colophon, ESR explains how he wrote the book using nothing but free software. It's a pretty dire sales pitch, and Knuth should really go round and beat him up, since half the section headings seem to appear right at the bottom of pages, with no body text following them. TeX can do better than that. I have no idea if this is a PDF-only problem.
For all that, I really enjoyed this book. In a world of UML, business objects and enterprise software, it's nice to have something akin to a manifesto for genuine maintinable simplicity. I'm tempted to buy a copy so that I can throw it at some of the worst design criminals. I wouldn't even begrudge the money going to ESR. He'd probably just spend it on guns and moustache maintenance.
Permalink. Posted 21:39, Sun, 04 Apr 2010.
The Soros Lectures - George Soros
I'm not exactly sure what Caroline was doing in 1992, but she bought this book not because she recognised the name, but because of the opening sentence: '... I delivered this series of lectures in ... the Central European University ... that I established'. She thought anyone with the money and interest to start a new university might be worth listening to. I'm not sure whether Black Wednesday means anything to her. :)
So, this is a book of philosophising by an old hedge funder. The obvious comparison to me is with the work of Nassim Taleb. Taleb's trading was microeconomics, Soros's macroeconomic, and that comes across clearly in their respective theses. Taleb goes on about the existence of surprising outliers, in a fairly abstract way, with how one might manage them. Soros comes up with big, concrete reasons for the way markets behave, and why they keep 'surprising' us, predictably.
While Taleb had an unsettled family background, Soros's is something more extreme, fleeing both the Nazis and communists. It feels just that his explanations and profits are both bigger. His core idea is 'reflexivity' - on how models of the world and the world affect each other. In hard science, a model of the world is unlikely the change the world, but in other spheres things are very different. In politics, it's pretty much as if the ideas define reality, and bubbles in finance happen when bogus pricing ideas drive actual prices (thus justifying themselves). They're obvious concepts, but ones that have served Soros very, very well, and he's explained them neatly here.
This is a short book - just over 100 well-spaced pages - but it's a lovely insight into the man's ideas. Should we listen to someone just because they're incredibly rich? If it's on the subject of how to get incredibly rich, maybe so. Otherwise? It's difficult, and I think Soros understands the problem, but he's very much a European socialist(ish) multi-millionaire fund manager. He's able to distinguish between what makes it easy for him to make money, and what's right - he'll do profitable trades, but won't hide behind the invisible hand, instead coming down in favour of appropriate regulation. In full-on philanthropist mode, he really does put his money where his mouth is, and between that and a clearly thoughtful nature makes him an interesting person to listen to.
Permalink. Posted 10:19, Mon, 15 Mar 2010.
Concurrent Systems - Jean Bacon
This is another book from my undergrad days, never thoroughly read at the time. It was written to accompany the lecture course of the same name by the author. If I remember correctly, the course was not terribly highly regarded, and I think the reason for that is also reflected in the book.
First though, the subject matter! It's incredible what's changed since the late '90s. The current example of big distributed system, the large website, was not around. The insane scalability of Google, Amazon and the rest just wasn't at this scale, and that area certainly hadn't become academic. It's now hard to buy a machine which isn't multicore, and massively multicore is lurking around the corner. Software transactional memory is now very trendy, but not mentioned at all in the book. The overriding memory assumption from the time was that physical memory was much smaller than VM - typical memory at the time of writing was 16MB. The book emphasises the slowness of hard disks and increasing performance gap compared to main memory, but improving SSDs could really be a game-changer here. Even the talk of modern RISC CPUs looks sadly dated in light of the modern x86 farce.
So, the book's obviously got to be read in the context of its time, but most of the academic points still stand. It's obviously an introductory text - the preface makes some reference to being usable as a jumping-off point for postgrads, but I think that's pretty laughable. To put it in perspective, the book often refers the reader to other undergrad books for further information. We're not talking an awful lot of depth.
However, that's not the point. What it's after is a unified framework for discussing 'concurrent systems'. This covers OSes, databases and distributed systems as the main examples. The OS material feels weak, covering just enough to bring up issues of concurrency, but nothing more. Perhaps it would have been better to make a simple OS course a pre-requisite?
The book suffers from a woolly style. When discussing design choices in the introductory section, bets are hedged to an almost useless level. 'Requirements' are talked about in a way that hints at the common implementation, without discussing it. No technical details or judgements are given, so the reader is left with an uneasy sense that they've just had the obvious explained to them, slowly. There is excessive recapping - after a section, it'll tell you just what you've read and how it relates to what you read previously. The chapter summary will then do the same, very blandly. It's like it's expected to be dipped into, one paragraph at a time, by the terminally dumb.
Interestingly, this has been an excellent example of reading style to me. I sometimes write technical documents in a not dissimilar style, and this, well, it shows me how and why not to do it that way!
This review so far has been harshly negative, but it's not a bad book. Once you get past the introductory generalisations, it picks up. The tone is mostly non-specific and high-level, but occasionally it throws in and discusses fundamental concurrent algorithms - things that are very tricky to get right. The explanations of correctness may be unconvincing (I'm starting to believe concurrency primitives need to be model checked - a heavy eyeballing is insufficient), but there are neat snippets of hardcore algorithms.
The core of concurrency primitives and transaction mechanisms are pretty reasonable, although I occasionally found I'd picked up the wrong end of the stick from her text. Whenever she returned to distributed systems, the text bogged down and waffled again.
The book ends with a series of case studies, which I hoped might be a high point. The discussion of traditional (non-modular, uniprocessor) Unix was pretty good, but the NT case study felt badly copied from a real guide to NT. The Java/middleware example was depressing, and the transaction processing example, based on cash machine networks, was almost entirely information-free - a very sad end to the book.
I don't have a good alternative to this book - my library is understocked on the transactions-and-concurrency front - so there's not much else I can recommend, but... I'm afraid I certainly don't recommend this book.
Permalink. Posted 08:15, Mon, 01 Mar 2010.
Dynamic Hedging - Nassim Taleb
Forget The Black Swan. Once you strip away all the philosophising, I think this provides a better (or at least more concrete and less pretentious) insight into the mind of Nassim Taleb. This book discusses the trading and risk management of derivatives.
The book is refreshingly open, in that it discusses the various ways in which the markets can be manipulated to hit barriers and limit orders, saying this is fairly standard and should be accounted for. This is, I suppose, the flip side of gap risk.
His view of the world is almost a charicature of a numerate trader. The book goes on about things the author had to fight to explain to less numerate colleagues (the author does like to go on about himself, his views, and his abilities). On the other hand, the author dismisses the quant view of the world as precisely inaccurate, preferring instead a certain amount of street-smarts. However, he then goes on to make the sort of silly mathematical mistake he picks up on in others, as his intuition occasionally fails him. For example, either he or his editor has picked up the entirely wrong end of the stick on the reflection principle for barrier options.
His editor has a lot to answer for. The book is flabby where it should be terser, and terse where it should be more explicit. Some sections go into incredible detail over a very simple concept, while other passing remarks are annoyingly obscure. They could mean something straightforward, or something very subtle - it's hard to tell. There are plenty of graphs in the book, and for the most part these are a good thing. Sometimes, though, the graph is badly chosen, and in other cases, the axes are just left obscure. Frustrating.
It's also a bit of a time capsule. Written in the mid-'90s, the models are charmingly naive (local vol being viewed as fancy), the exotic options are straightforward, and he keeps recommending binomial trees as an appropriate pricing mechanism. More than a little rustic, nowadays.
The book is like a form of Wittgenstein's Ladder. It provides a framework for thinking about risk management, but by the time you start to feel comfortable with his arguments and the concepts behind them, you might well disagree with them! The volume provides a much better insight into (an earlier) Taleb than The Black Swan. It shows him up as yet another fairly bright, experienced derivatives trader with delusions of grandeur. What a shock.
Permalink. Posted 03:43, Tue, 16 Feb 2010.
Coders at Work - Peter Seibel
This appears to be a fairly trendy book, given I've seen it in the office, it's kicked up a fuss on Joel on Software, etc. etc. My copy is actually a Christmas present from a friend - yay! The book is a set of interviews with famous programmers. Fifteen programmers, six hundred pages, and quite a lot of repetitive questioning, and even some repetitive answers.
The repetition, though tedious, is actually one of the more interesting things - seeing what's constant across these experienced developers. The most difficult to find bugs really are threading bugs, or maybe bugs in GC code. A surprising number of really talented individuals still debug using inserted 'print' statements, rather than symbolic debuggers. And plenty of people dislike C, as being too low-level for both the user and compiler, and being insecure. Ken Thompson still sees nothing wrong with it, though. ;)
In a world containing a decent number of really very good programmers, and so very many incompetent programmers, it's interesting to see what these people have worked on, and how elitist their world view is. The most interesting characters have worked at both very high and low levels, are comfortable with the full stack, and having worked on some really very hardcore stuff. Their views were the more interesting ones.
In comparison, there were a few people who are heading towards the 'methodology' end of the spectrum. That is, they care more about reproducable development processes for the talentless, rather than what really makes good developers. They tend to focus on a good system for people who use libraries as black boxes, rather than those who break the boxes open, or build them. They answered questions with what they felt should be the right answer, rather than what they really do. I suppose there's an important place in the world for such people, but... oh, it's so soulless.
I thought some of the most interesting characters were at the start and end of the book. It opens with Jamie Zawinski, who I thought was just some mouthy Netscape developer, but he's really done some cool stuff. Brad Fitzpatrick is the guy behind LiveJournal, so I was expecting tedious Web 2.0 guff, but he's the person behind memcached, and is really deeply into scalability, doing more hands-on work with a madly scaling system before he left uni than most people get in a lifetime.
The penultimate interview is with Bernie Cosell. 'Who?', you might ask if you're not massively up on your computing history. He's one of the developers who worked on the IMP - the first networking hardware of the internet. In many ways, he's in by fluke, as it could have been any old BBN developer assigned to this random project. However, he makes a great interviewee, as he goes into great detail about the way he works, and demonstrates far more skill than the abstract wafflers.
Finally, the book closes with an interview with Donald Knuth, who really is a complete hacker. Why he does literate programming is a bit of a mystery to me, given he's such a hardcore hacker. He really doesn't seem to believe in abstraction, mostly because it's less fun. The interview does, however give me insight into TAOCP. Nowadays, it seems like an awful choice of algorithms textbook, since there are much better ones on the market. However, in historical context it makes sense, and it still has more logic to it when you hear of the other planned volumes in the series. The nuttiness is explained by Knuth's obscurist obsession. It's not a data structures and algorithms series, it's a monograph on 'cool things I've found in the last half century'.
Other high points include the only interview in the book with a woman, which as well as covering Fran Allen's optimising compilers work, does at least inspect the issue of gender in coding. As I said, the book (at 600 pages long, with plenty of repeated questions and answers) can be rather tedious reading in places. For an experienced developer, it doesn't necessarily teach you a lot about the techniques available. However, the occasional passage shines through, and by standing back and observing the overall pattern of results, you can pull your own trends out. And from the point of view of the history of computing, it's pretty cool. Not everyone you'd want to hear from is there, and the missing people will surely depend on your personal taste, but still... it's good stuff.
Permalink. Posted 04:28, Wed, 30 Dec 2009.
Programming Perl (2nd edition) - Wall, Christiansen and Schwartz
I've had this book a while. To give you an idea, the third edition came out in 2000. I've only just finished actually working through it, and more on that below. Why's it taken me so long to read it? The idea of Perl seems to me to be a good one - I think I should like it. A nice scripting language that makes gluing together text files and generally doing Unix shell things easy. Indeed, I do tend to use it for this purpose.
In practice, however, I don't like Perl. There are several reasons. I don't like 'there's more than one way to do it'. I like the idea there's a correct, neat way to do something, the Platonic ideal to which one should aspire. So, you can write many languages in Perl, and this makes maintenance a nightmare. Even if you stick to idiomatic Perl, the object structure and module structure... yuck. Even for retro-fitted features, they're disgusting. It could have been a small, neat language, but but it's just grown ugly. Or perhaps it's neat, but in just such an alien way.
But most of this reasoning stems from the fact that fundamentally, I don't understand Larry Wall, therefore I don't understansd this book, therefore I don't understand Perl. This book is supposed to be the description of Perl. However, it's full of Larry Wall's rambling, jokey descriptions. Which would be fine except I still have no idea about how a Perl expression might be executed. There's no precision in any description of how expressions are put together and evaluated - the exact meaning of the different contexts and data structures, how built-in structures differ from user-defined functions, and generally, how one might get an understanding of how you'd interpret a program.
But that's apparently ok, because the book's full of example code, and Perl has all these convenient little special corner cases anyway. It's like a conversational language course that doesn't bother with grammar, but instead lets you pick the language up 'naturally'. Except programming requires lawyerly command of a language. Furthermore, you want this book to be usable as a reference - after all, it has a chapter called 'The Gory Details'. However, I can never find what I'm after in it. Grrr.
So, why have I finally finished reading this book? I think Perl's a badly designed, badly described, and badly extended language built around a good idea. It still does lovely text handling, and the operators it has make it, in many ways, rather like a functional language - as shown in Higher Order Perl, which I suspect is a book that'd almost make me like Perl. However, what I really want now, is to have the power of Perl in a proper (and statically typed) functional language, rather than write functional programs in Perl. So, I've been re-reading up on Perl with a view to seeing how difficult it'll be to do Perl-style basic text manipulation in Haskell. If I can do all the scripting I used to do in Perl in Haskell, I shall be a happy man.
Permalink. Posted 21:58, Wed, 23 Dec 2009.
Basic Category Theory for Computer Scientist - Benjamin C. Pierce
First, a confession: I haven't really read this book. It's a maths book, and I've skipped the exercises and the most difficult bits. I'm now doing my second reading. However, I'm reviewing it anyway, as I would eventually like to clear my backlog of partially-read maths books which I've neither approximately finished, nor reviewed.
Why read about category theory? My day job is Haskell programming, and the others on my team are all into this stuff. I feel slightly silly not knowing it. :) Why this book? There are plenty available, and I chose this one because it's an introductory text intended for computer scientists. I don't want to start with the full generality being applied to abstract cases of no relevance to a computer scientist. Who knows... I may get there eventually, but that's not where I want to start. Even saying 'I want an introductory book for computer scientists', there are a few books on the market. I really rated Pierce's book on type systems, so I chose him again!
Is the book any good? Yes! It does what it says on the tin - it provides an explanation of the basic stuff, with a strong slant towards computer science and almost no mention of topology. The start of the book introduces the concepts, then there's a chapter giving a few simple examples in computer science (plus one complex one - that's going to be a painful one to read properly!), and finally there's a chapter on interesting books and papers in the field. It's a slim volume, at 100 pages all-in, but this feels the right length for a book like this. It's dense, and for a simple introduction any more would be overwhelming.
The style is pretty rigorous, as you'd expect in a mathsy volume. However, it's pretty friendly - there are plenty of examples to help understanding, exercises set at a doable level, etc. The subject is abstract enough that there don't seem to be many proofs, but those that are present are straightforward. The exercises and examples do hint towards the underlying intuition, but the intuition is rarely explicitly revealed, even if only to explain why it may not work in the general case.
And the subject? Category theory is a funny one. It's objects and arrows, generally representing, in some sense, types and transformations between the types, although noone would be so crass as to restrict it to such concrete uses. 'Commutivity diagrams' are generally about doing the same operation in different domains, and whether you get the same results if you transfer between the domains before or after performing the transform. And certain unique arrows appear to be about doing the operation which destroys or preserves the most information, while fitting into some role.
Category theory is a fairly controversial subject in some people's view - so-called 'abstract nonsense'. Having read this book, I can't tell if it's helpful for providing fundamental insights, or is simply a way of obfuscating the obvious.
Permalink. Posted 22:39, Sun, 20 Dec 2009.
Wyrd Sisters - Terry Pratchett
This is, I believe, the first really good, mid-sequence, Discworld novel. Terry has warmed up, it's a novel without Rincewind, and it's not about a generic fantasy world. It's about the theatre, psychology and the nature of truth. Kinda. The characters are excellent, the plot runs wonderfully, and every sentence is a joy to read. At this point, he's really on a roll, following up with Pyramids and Guards! Guards!. Happy, happy, joy, joy!
Permalink. Posted 22:12, Sun, 20 Dec 2009.
Sourcery - Terry Pratchett
I'm back to in-order reading of the Discworld novels, and this is another of my non-favourites. Since it's a Discworld novel, there's still plenty going for it - good jokes and good characters abound. My problems are more at the structural level.
At the highest level, I feel too much happens and is then undone. This is remarkably unsatisfying. Beneath that, the plot still focuses on trying to bring a system of magic to the Discworld, and make it its own place. A sourcerer being an eighth son of an eighth son of an eighth son is all well and good, but it's still pushing the world towards a generic fantasy pastiche, rather than the entertaining and thought-provoking mirror to this world it becomes in later novels. It's another Rincewind novel, again providing this unfortunate feeling that he's the star, rather than the world.
I think if Terry wrote this novel after a few of the other books, he could have made it work a lot better. He'd have improved the balance, and have had the confidence and well-constructed world to really pull this off. As it is, it just underwhelms.
Permalink. Posted 22:08, Sun, 20 Dec 2009.
There is also a complete index of the books.
Mail me at random.user@arbitrary.name.