and
, considering how they will change the webauthor’s way of thinking.
The closing chapters consider the major areas of new functionality. The pages
on open up the potential of this drawing surface,
with shapes, text, colour, gradients and images. The examples may take you
back to the fun of your first hand-coded HTML pages. They conclude with an
impressively compact implementation of the ancient board game Halma.
The video section is actually a pretty good general introduction to the
brain-melting world of video formats and what works on the web. While
not neglecting commercial choices, it does tend to lean on the
advantages of an open source approach. The tutorial on encoding video
using Firefogg, and later HandBrake and ffmpeg, is welcome, but there
are probably a couple of pages of website pictures that could be
painlessly dropped from the book. Geolocation, local storage, forms and
offline usage are shorter chapters with the same approach — enough
detail to get started, not enough to get bogged down.
This is not the book to hand over when your boss asks for an executive
briefing on HTML 5. But it is a good choice for the web author who
wants to get started immediately — and later, to pull them out of a
tough spot.
Using SQLite
Jay A Kreibich
Published by O’Reilly Media
ISBN: 978-0-596-52118-9
528 pages
£ 38.50
Published: September 2010
reviewed by Kimball Johnson
This book is described, by the author, as being “primarily written for
experienced software developers that have never had a particular need to learn
about relational databases…[but now need to]”. I do not quite fit this
audience, as I have a fair amount of experience with relational databases,
however, I have never used SQLite. I have attempted to learn how to use SQLite
from a C application in the past, but found it hard to get started, and usually
ended up using a different approach.
The book is well structured. It starts with an overview of SQLite and case
studies, explaining where it is, or is not, an appropriate solution. It then
continues with details on how to build the library and console program.
Following this introductory section, chapters four to six provide an excellent
tutorial on SQL and database design. For someone with little or no previous
experience it provides an invaluable resource for doing this the ‘right way’
and for those with greater experience it is a great refresher.
From chapter seven the book gets into the details of the SQLite library. It
begins with a sequence of examples: using the C API to create and use
databases; using prepared statements; bound parameters; and locking issues.
This chapter alone was very useful to me, providing the booster step to get
going in using it within a C application.
Chapters eight and nine cover the more advanced features, including an overview
of the date/time handling and the full text search functions. These are
followed by some details on creating extensions to SQLite, that can either be
used by your database, or loaded by other users. The book doesn’t go into great
detail in a lot of the advanced features, instead referring you to the SQLite
documentation, this is probably a good approach, as many are quite specialist,
and require domain knowledge.
Finally, chapter ten covers creating virtual tables, which allow you to access
any arbitrary data through SQLite. This is handled with some depth, including
detailed examples, as this is a complex subject, and extremely powerful, this
is most useful. Two examples are given, one basic to explain the concepts
which produces and SQL interface to some internal data. Secondly a more
complex example is given to access Apache log files though SQL. This second
example will provide a solid basis for development.
The appendices provide a full reference for the build options, C API and the
SQL commands, expressions and functions. Although the information in the
appendices is available elsewhere they serve to complete this book as a useful
tool for developers rather than merely a tutorial.
Overall this is an extremely useful book, well written and concise but not
lacking in the required detail. The author wrote it after becoming frustrated
by the lack of tutorial material for the API while he was learning SQLite. I
feel he has achieved his aim of producing a useful tutorial and reference work,
and I highly recommend it, having learnt much myself. Anyone who needs to learn
SQLite, and is not comfortable with API documentation alone, should find this
book invaluable.
Being Geek: The Software Developer’s Career Handbook
Micheal Lopp
Published by O’Reilly Media
ISBN: 978-0-596-15540-7
336 pages
£ 18.99
Published: August 2010
reviewed by Mike Fowler
Being Geek takes the reader through a modern career as a software developer,
from getting a new job to deciding it’s time to change jobs again. Each of the
forty chapters of this book offer advice for career scenarios delivered in the
form of amusing anecdotes. Within these anecdotes is where the power of the
book lays. Most of these scenarios you’ve seen in your own career but if you’re
like me, you won’t have considered how they effect your career.
For example, have you ever devoted any time into thinking about what people’s
reactions to bad news tells you about them? Lopp has taken the time to
categorise the types of reaction you might see along a flight-fight spectrum.
At the extremes you have the “I Quit” and the “Raging Bull” with an amusing
selection in between. It’s this light-hearted but critical approach to the
scenarios that quickly get you analysing your own career.
For me the most amusing chapter of the book wasn’t even for the geek, it’s for
their significant other. Lopp asks the reader to hand the book over and what
follows is a guide to help them understand their nerd. It helps them to
understand the geek’s obsession with puzzles, their insatiable appetite for
information and the need for a “project”. It’s a light hearted look into the
world of a geek and according to my wife, it’s also very accurate.
I’d recommend this book to any geek. The career advice is very different then
what we’ve had in the past from a career advisor, and far more entertaining to
boot.
Ubuntu for Non-Geeks (4th edition)
Rickford Grant and Phil Bull
Published by No Starch Press
ISBN: 978-1-59327-257-9
496 pages
£ 27.97
Published: July 2010
reviewed by Mike Fowler
This introductory guide to Linux enters its fourth edition, updated to cover
the release of Ubuntu 10.04. Bundled with a live CD, the novice is eased into
the world of Linux. The authors quickly persuade you to install Ubuntu using
positive and encouraging language. A number of common concerns are highlighted
along the way to keep those beginner nerves at bay.
Each of the remaining chapters show you how to use Ubuntu to achieve the tasks
you may already be used to performing on other operating systems. The authors
introduce each new theme before leading you step-by-step through the common
tasks. More complicated, or more involved, tasks are grouped together in
projects.
I particularly liked the project concept. I’ve often found that once you’ve
passed the introduction section of a guide you can quickly lose your way
amongst all the new things you can try. When that happens the usefulness of the
guide fades as you stumble around searching for answers. With a project you can
decide to spend some time learning something, with the added bonus of achieving
something at the end of it.
The book succeeds very well at being “a pain-free, get-things-done guide”.
Next time someone asks me where to start with Linux, I’ll be pointing them at
this book.
Programming the Mobile Web
Maximiliano Firtman
Published by O’Reilly Media
ISBN: 978-0-596-80778-8
512 pages
£ 38.50
Published: August 2010
reviewed by Lindsay Marshall
At the moment the Mobile Web is probably the new rock and roll (see other
review…), with HTML5/CSS3 being the new black, so the books are starting to
appear. Some of them focus on single platforms (iOS, Android etc.) and others,
like this one, try to cover all bases. The problem is of course, as you will
find when you read a few chapters of this book, is that everything is moving so
fast that the information in them becomes obsolete and/or irrelevant far too
quickly – no jQuery mobile, not much Windows Phone 7. This is not the fault of
the author, who has done a great job putting together a summary of devices and
platforms, but it is unavoidable.
That being said, I like this book a lot and it will provide a lot of useful
material for some courses I am developing (though at close to 40 pounds
students are not going to be buying it, sorry.) The most important thing (and
the biggest weakness, see above) is the way it pulls together feature
implementation summaries for devices, platforms and technologies. As yet I
haven’t seen such comprehensive summaries on the net, or at least not in a
single place, so for the moment this makes the book valuable if you are aiming
to support multiple platforms. The book is also strong on the history of the
mobile web and on the relationship with desktop technologies.
Definitely a good book that, for a short time at least, would be very useful
for anyone developing for the mobile web. If they can justify the price.
Javascript Cookbook
Shelley Powers
Published by O’Reilly Media
ISBN: 978-0-596-80613-2
560 pages
£ 38.50
Published: August 2010
reviewed by Lindsay Marshall
Please see the combined review below.
JavaScript Patterns
Stoyan Stefanov
Published by O’Reilly Media
ISBN: 978-0-596-80675-0
240 pages
£ 22.99
Published: October 2010
reviewed by Lindsay Marshall
With JavaScript having been the new rock and roll a couple of web fashion
iterations ago there has been a bit of a flood of books devoted to various
aspects of it recently, and, of course, as is inevitable with print things lag
a bit behind what is actually happening in the world. The JavaScript Cookbook
is a good case in point. Not that there is anything wrong with the content of
the book per se — it is filled with useful fragments (and sometimes more than
fragments), and anyone using JavaScript seriously will find something in here
that will help them. The problem is that quite a large proportion of the
solutions and recipes provided are things that jQuery and other packages
provide out of the box and with a nice consistent, integrated, and above all
multi-browser interface, plus a good support ecosystem wrapped around
them. Now, I am sure that there will be times when jQuery is deemed to be too
heavyweight for a particular web application and that only a tiny part of its
functionality is needed, but I am also sure that these times are few and far
between — personally I can’t image building anything other than an incredibly
basic website without starting with jQuery: it is just too useful. (You must
use one of the jQuery CDNs of course!) There is also a slightly tutorial
flavour to the book and I wonder whether people who are trying to implement the
kinds of things described need this.
So, I have to ask, who is prepared to spend nearly 40 pounds on a book like
this? Much of the information in it is freely available on the net even when
the functionality is not packaged up for you already so why would you? This may
be the going rate for a technical book of 500+ pages, and it may be a way of
building the e-book market (though the e-book is only a small amount cheaper),
and the production is excellent as always with O’Reilly, but it just doesn’t
seem to be good value for money.
The big problem I have with the Cookbook and the Pattern book is the layout of
the code. This is just a personal thing of course and I seem to be in a
minority with respect to this, but I do find the layout style they have to
chosen to be quite unreadable. I won’t go into details because you are probably
one of those people who format their code in this nasty way too, but I just
wanted to get it out in to the open.
It isn’t the only problem I have with the Pattern book (22 pounds for 200+
pages) though. Since we are getting things out in the open, let me confess that
I am not a fan of “patterns”. They certainly exist and are even sometimes
useful, but they are also a bit of a religion and people who buy into it see
patterns everywhere, and, much worse, try and force solutions to fit patterns
even when they are not a good fit. Much better to be aware of the general idea
and use it flexibly and appropriately rather than carting round some of the
extra baggage that you get with rigid patterns. (I can hear people disagreeing
with me already). Once again though, the content of the book is pretty good and
useful if you want to do this kind of thing and there is good analysis of
difficult circumstances where things can be a little tricky in JavaScript
(setting this inside callbacks for example). If I ignore the pattern-talk in
this, I rather like it and I’ve learned a lot about some of the dark areas of
JavaScript’s nasty semantics from reviewing it. If this is your thing and you
don’t know it all already, you could do worse than reading or indeed buying
this book.
LPI Certification in a Nutshell
Adam Haeder et al
Published by O’Reilly Media
ISBN: 978-0-596-80487-9
528 pages
£ 38.50
Published: July 2010
reviewed by Roger Whittaker
The Linux Professional Institute (LPI) was founded in 1999 as a non-profit
community-based organisation offering a certification programme for Linux
professionals.
There are three levels of certification: levels 1 and 2 have been part of the
programme throughout most of its existence, while level 3 has been added more
recently.
The LPI has had reasonable success in establishing itself as a respectable
distribution-neutral certification for Linux, but is up against the fact that
the two main commercial ‘Enterprise’ distributions offer their own (more expensive
but practically-based) vendor-specific certifications.
Inevitably the LPI experiences problems trying to offer a distribution neutral
certification: it must cover two packaging systems, and it must keep up to date
with changes across at least Debian, Ubuntu, Red Hat and SUSE Linux. Perhaps
soon it will need to cover two different alternatives to the traditional System
V init system.
Despite challenges of this kind, the LPI copes well and, I think, deserves the
support of the community. The large pool of multiple choice questions are
carefully selected and tested by psychometric methods to ensure as fair a test
as possible, and my experience both as a candidate and from looking at the
sample questions in this book is that they are a fair test of knowledge at the
level for which they are designed.
This book (now in its 4th edition) covers the material required for LPI level
1, which consists of two examinations: 101 and 102. The book is laid out in a
very clear style, typical of O’Reilly’s “Nutshell” series. It is effectively
a Linux command index, but organised according to the objectives and criteria
of the LPI syllabus, but with additional exercises and sample questions as well
as advice on the exam. But this is not one of those “how to pass the exam”
texts: it is full of genuine serious material and if you are properly familiar
with the content, you will pass the exam.
MongoDB: The Definitive Guide
Michael Dirolf and Kristina Chodorow
Published by O’Reilly Media
ISBN: 978-1-4493-8156-1
216 pages
£ 30.99
Published: October 2010
reviewed by Mike Smith
There’s a lot of interest in non-relational “nosql” databaes at the moment. I
work in enterprise environments where SQL has been (and still is) the answer to
most application data storage requirements. The enterprise SQL options are
usually phenomenally expensive, not only in licensing, but the consequential
maintenance and the big iron one tends to put in place to support a scale-up
architecture in these environments. A lot of this is changing with adoption of
MySQL, PostgreSQL and with the move to scale-out architectures with the likes
of Oracle RAC (which enables a move to more cost-effective x86 servers but does
double the licensing cost!) But with massive scalability requirements for
worldwide systems we’re now taking more radical steps. “nosql” databases are
becoming the preferred option.
I’m sure you’ll know that the move to Digg v4 was a bit of a
trauma. Underpinned by Cassandra, which has reportedly has a few issues itself,
but also demonstrates the difficulties in transitioning applications to a nosql
architecture. So this background and recent events have more than peeked my
interested in MongoDB.
Quite a short book, this one, with 180 pages of content over 11 chapters.
The book introduces us to nosql and MongoDB from the beginning, which will be a
relief to the uninitiated. An appendix goes through the very simple steps to
install the server — download, unpack and create a directory for the databases
to sit in. No complex configuration is necessary here.
What is clear from the book though is that the whole nosql approach is very
different (to those who’ve grown up with SQL) — documents of key-pairs rather
than tables; object-oriented; no schema; nested documents even. An application
accessing MongoDB (and any other nosql db, I would guess) potentially has to
have a very different approach. This may be not too bad if there are standard
ACID transactions. Maybe there’s scope for another book looking purely at
transitions of this type.
One thing I found interesting is that the MongoDB client is a full JavaScript
Shell. You can type any JavaScript code in there and it is evaluated. There are
non-JavaScript extensions to access the server and select which database to
use, for instance, and these elements will be familiar to SQL client shell
(such as sqldba) users.
As you’d expect there are chapters on making queries and indexing. Then some
more advanced topics including MapReduce, GridFS (a way of storing large files
in the database) and server-side scripting (again using JavaScript).
There’s a brief chapter on administration — operational activities such as
starting up, cleanly shutting down, backup and restore, database recovery after
unclean shutdown etc. All good.
Replication is covered, with multiple slaves and various failover
scenarios. More advanced configuration, and in particular for high
read-intensive scalability, is achieved with replica sets. There’s also a
discussion on the requirements of the oplog (sizing etc) to ensure slaves don’t
go out of sync and replication continues. A good chapter.
I do have a slight concern: whilst built for performance there seems to be an
acceptance that data may be lost in failure scenarios. Perhaps it’s incumbent
on the application to sort this type of thing out, but in Larry’s world the
database guarantees recovery to the last complete transactions, and rolls
everything else back tidily. Even crash-consist backup techniques are tolerated
with storage arrays that guarantee write-order fidelity.
Sharding. I just like this word. Sounds very cool to me. It’s like partitioning
in Oracle. In fact sharding is sometimes called horizontal partitioning —
splitting up the data based on value ranges or something similar to enable
access/processing of these subsets of the data. With horizontal partitioning
the data can be split and placed in different tables or even on different nodes
enabling write-intensive application scalability. The beauty of MondoDB is that
sharding is automated, and the book has a chapter on how to set it up.
The book is rounded off with a few example applications using Java, PHP, Ruby
and Python. In each case an additional driver is required to provide the
MongoDB API. There are some good tips here of where to look for more
documentation and tools, but each example was very light on information and
code.
When I got to the end of the book, it just sort of, well, ended. I was left
wanting more, and would have liked to have seen a concluding chapter,
summarising everything learnt, pointers for more info, perhaps a link to where
examples can be downloaded (I’m not sure if there is such a place). Also
perhaps some examples of real world production implementations – I’ll do that
now: Justin.tv, New York Times, bit.ly, SugarCRM, FourSquare … (and many
more)
So definitely recommended for the beginner who wants to get a flavour of what
MongoDB is all about and quickly get up to speed with installing, configuring
and operating the database. Getting an application up and running may take a
little longer.
Cooking for Geeks
Jeff Potter
Published by O’Reilly Media
ISBN: 978-0-596-80588-3
432 pages
£ 26.99
Published: August 2010
reviewed by Ray Miller
My shelves are groaning under the weight of cookery books, but there aren’t
many I’ve read from cover to cover. “Cooking for Geeks” is one of those gems
that is both an excellent reference manual and a good read. While this book
does contain some recipes (100 or so), it’s not the one to buy if you’re
looking for a recipe book. Recipes give you quantities of ingredients and step
by step instructions for transforming those ingredients into great meals. This
book goes some way to explaining the whys and wherefores of each of those
steps. Once you have an understanding of the processes involved in cooking and
preparing food — and the science behind them — you can start adapting recipes
and inventing new ones. You’ll know when an ingredient can be substituted, and
what with. You’ll know when a step in a recipe can be skipped. You’ll start to
spot — and correct for — mistakes in published recipes.
The book encourages us to treat our kitchens as our own personal chemistry lab,
and it builds the confidence we need to start experimenting. Most important of
all, it encourages us to have fun with our cooking. A geeky humour runs
throughout the book, with the title of the first chapter, “Hello, kitchen”,
setting the tone. Of course there’s some serious stuff in here too, including
an essential section on food safety and foodborne illness.
I’m surprised at just how much information has been packed into the 400 pages
of this book. Want to know how to pasteurize an egg? The temperature collagen
starts to break down when you cook meat? Where to find enzymes that will do the
same job? It’s all in here. (The full table of contents is at:
http://oreilly.com/catalog/9780596805890/.)
There are also plenty of helpful tips along the way. I now cook pancakes
without any fat in the pan. You need a good non-stick pan to do this, but they
cook more evenly this way. And on the gadget front, I’m looking out for a
compressed gas cream whipper so I can try foamed scrambled eggs and instant
chocolate mousse.
As expected, the chemicals used to make the foams, spheres, and heat-stable
gels of molecular gastronomy make an appearance, and the book gives a good
introduction to sous vide cooking. This is where food is vacuum-sealed in a
plastic bag (the “sous vide” part) and cooked in a temperature-controlled water
bath, a method of cooking used extensively in top restaurants where consistency
is key. Sous vide is gaining popularity in domestic kitchens, with the first
water bath aimed at the domestic consumer arriving on the European market just
a couple of months ago. My friends thought I was crazy when I spent almost a
month’s salary on a water bath and vacuum packing machine earlier this year,
but once you’ve tried fillet steak cooked sous vide (a perfect medium rare
throughout) and confit pork cheeks (cooked gently in goose fat for 36 hours),
there’s no turning back.
If you’re really interested in the science of cooking, you’ll want Harold
McGee’s “On Food and Cooking” on your shelves and perhaps “The Science of
Cooking” by Peter Barham. But you can’t have too many cookery books, and
“Cooking for Geeks” is a very readable introduction to the subject with plenty
of light-hearted diversions to keep it from getting too dry. I particularly
enjoyed the interviews and guest appearances by some of my favourite food
bloggers — it was like having old friends around.
The author sums up my feelings brilliantly in the afterword:
Curiosity and the joy of discovering how something works are two of a geek’s
defining characteristics. I can think of very few other things that have
brought me as much joy as learning to cook and providing for others. It
scratches the same neurons that solving a puzzle or producing a brilliant piece
of code does, but tastes better and often takes less time — not to mention that
you can do it for other people and make them happy too!
Some of my geek friends might find a copy in their seasonal festive stockings
this year. Now, back to the kitchen.
Contributors
Mike Fowler is a Senior Software Engineer at Dotted Eyes. He is a firm
open-source advocate and has helped companies move from Microsoft based
solutions to complete Linux/PostgreSQL stacks. He is a major contributor
to YAWL, an open source BPM/Workflow system. When not melded with a
keyboard, he spends his time playing as many different stringed
instruments as he can.
Gavin Inglis works in Technical Infrastructure at the EDINA
National Data Centre in Edinburgh. He is a teacher, photographer and musician
who has recently discovered the joys of spreadsheets as a recreational tool.
Kimball Johnson is a Systems Developer Administrator for LUNS
Ltd in Lancaster. He has been programming since a very early age, starting
with BBC Micros, then MS DOS and Windows Systems, however was enlightened with
a copy of Debian GNU/Linux Woody at university. He is always wanting to learn
and is particularly interested in automating as much of his job as possible.
Lindsay Marshall developed the Newcastle Connection
distributed UNIX software and created the first Internet cemetery. He is a
Senior Lecturer in the School of Computing Science at the Newcastle University.
He also runs the RISKS digest website and the Bifurcated Rivets weblog.
Ray Miller worked as a systems administrator at the University
of Oxford for almost a decade, during which time he was actively involved with
UKUUG. He served on Council for two years and organised three successful LISA
conferences. After a brief interlude in a professional kitchen, he returned to
IT and now works as a software developer supporting a mouse genetics project at
the Wellcome Trust Sanger Institute. He is a keen amateur cook and, when he’s
not chasing down errant DNA sequences, can usually be found in the kitchen. Ray
blogs about food and cooking at
http://startagainatzero.blogspot.com/.
Jane Morrison is Company Secretary and Administrator for
UKUUG, and manages the UKUUG office at the Manor House in Buntingford. She has
been involved with UKUUG administration since 1987. In addition to UKUUG, Jane
is Company Secretary for a trade association (Fibreoptic Industry Association)
that she also runs from the Manor House office.
Mike Smith works in the Chief Technology Office of a major
European listed outsourcing company, setting technical strategy and working
with hardware and software vendors to bring innovative solutions to its
clients. He has 20 years experience in the industry, including mid-range
technical support roles and has experience with AIX, Dynix/ptx, HP-UX, Irix,
Reliant UNIX, Solaris and of course Linux.
Andy Thomas is a UNIX/Linux systems administrator working for
Dijit New Media, Imperial College London and a number of small companies.
Having started with Linux when it first appeared in the early 1990’s, he now
enjoys working with a variety of UNIX and Linux distributions and has a
particular interest in high availability systems and parallel compute clusters.
Paul Waring is chairman of UKUUG and a director of a wholesale
insurance broker. Outside of work he can usually be found filing documentation
bugs against various open source and free software projects.
Roger Whittaker works for Novell Technical Services at
Bracknell supporting major Linux accounts in the UK. He is also the UKUUG
Newsletter Editor, and co-author of three successive versions of a SUSE
book published by Wiley.
Russel Winder was originally a theoretical particle physicist
but decided in 1980 that being a UNIX systems programmer was more fun.
However, academia continued to call and he moved to UCL to lecture in
programming, software engineering and human-computer interaction, and do
research on parallel programming languages and psychological and
socio-technical aspects of software development. After 13 years at UCL, Russel
moved to KCL to be Professor of Computing Science. Having revamped the
teaching programme, continued the research on parallel programming languages,
and started research programmes in health informatics, it was time for new
challenges so he left KCL to become CTO of OneEighty Software Ltd, a company
using novel virtual machine approaches to embedded systems. Unfortunately, the
money ran out for this start-up before the orders flooded in and so it had to
fold. For the last few years, Russel has been a consultant, analyst, trainer
(Python, Java, Groovy, GPars, Python-CSP, Waf, SCons, Gradle, Gant, Bazaar,
Mercurial, Git) and author (“Developing Java Software” third edition, and
“Python for Rookies”). The rise of multicore processors means that parallelism
has finally arrived (after 25 years of being the coming technology), so he
has been able to return to being interested in all things concurrent and
parallel. Russel is centrally involved with the development of the Groovy
programming language, and is author of the Gant build framework. He also works
on GPars, Python-CSP, SCons, and Waf, indeed on anything that people will pay
money for.