Category ArchiveTechnical

Technical 29 May 2007 16:49

Joel on Software

coverJoel on Software
Joel Spolsky

Buy from

Technical 26 Mar 2007 16:11

Cascading Style Sheets

coverCascading Style Sheets
Eric A. Meyer

This book is an excellent introduction to CSS for anyone who’s still writing web pages using plain HTML and lots of tables; it’s also a very good book for anyone who learned CSS “the hard way” (that is, by looking at other pages, copying, adapting and hacking at files). It acts not only as a good reference to the several CSS elements, selectors and other keywords, it also shows you the theory behind how they work and why they were designed how they were.

Because of that, this is a good book to be read from cover to cover; not only to be kept as a desk reference (although it is great for that, too). One point to mention is that there should be a new version at some point in the near future, as there are many, many references to Internet Explorer 6 throughout the book (mostly in sentences such as “this selector is supported by all modern browsers except IE6″), and IE7 changes the game a bit.

One slightly annoying thing about this book: it would benefit greatly from a more attentive editor. There are lots of small mistakes in several chapters, such as text referring to images that don’t show exactly what the text says, or CSS items with different names in code examples and in the text that refers to them. It’s not a serious problem, but it’s distracting, and it seems to be more common in later chapters than in the earlier ones.

This doesn’t detract from the usefulness of the book, though; it’s still a great resource to anyone working in the field.

Buy from

Technical 14 Sep 2004 14:35

Secrets and Lies

coverSecrets and Lies
Bruce Schneier

A sobering book… the main message in it is that there is no technological solution for social problems (which is the main reason why spam is such a big problem, as well). Applied to security in digital networks, what it means is that there is no “perfect way” to secure a network – any network – using only technological means. And, in fact, there’s no way to perfectly secure anything using any means whatsoever.

Why bother trying, then? Well, you can secure things well enough for your needs, and against the threats you face. And herein lies the problem: what are your needs, and what threats do you need to consider? This is the main issue, and the one that is so often glossed over. There is no point in spending thousands of dollars in firewalls and other technological counter-measures if someone can just call any employee of yours and get a password and an explanation of how to get in. Just as it makes no sense to put a fortified steel door in your house if a burglar can just as well go inside through a window.

There are several metaphors like this one in the book, and several security analysis of real-world issues, most of then not at all related to computers (and some not so real, also; there is a very good analysis of the security flaws in Darth Vader’s Death Star, for example). Despite the very serious subject, and the very serious implications of what it tells, this is a very fun book to read; a page turner. Recommended to anyone with any kind of interest in security, criptography and related issues.

By the way, this book was written and released before the 2001 terrorist attacks in the USA, and since them Schneier has written a number of articles analysing the security measures taken by the US government (and other institutions). They’re written in the same style as the book, and provide a very well thought of analysis of real-world issues as seen by a security specialist. They can be read at Counterpane‘s website.

Buy from

Technical 23 Jul 2004 21:05

C# – Tips and Techniques

coverC# – Tips and Techniques
Charles Wright

I picked up this book looking for an introduction to C# directed at people who already know how to program. What I really wanted was something like “C# for C programmers”, but I couldn’t find anything like it. You see, I don’t need to be told about what is an object, how to do a “for” loop, what is the difference between “while() {}” and “do {} while()”, and so on; what I want is to know what makes C# different from the languages I already know. In this sense, I was not disappointed.

Truth be told, this book is more like “C# for VB (or VC++) programmers”, but there is enough in it to be learned from by a standard C programmer who never used Visual Studio. However, it is a very uneven book; some parts are very good, while other are repetitive and full of typos. There are several examples of inconsistent capitalization throughout the book (variable and/or function names printed differently in different paragraphs); nothing too serious, but just enough to be annoying. Also, the last few chapters are nothing more than rote demonstrations of how to do so-and-so using Visual Studio .NET. In fact, I skipped most of the last three chapters because I couldn’t stand being told where to click anymore.

The structure of the book leaves something to be desired, as well; the order of the chapters seems almost random. You will see new features of the language being used in examples with no explanation whatsoever, and a few chapters later you will read about them. You will read about “advanced features of C#” before reading about “foreach”. And so on.

It is not a terrible book, anyway, but you will need to “filter” what information is in it to separate it from the clutter of step-by-step instructions, repeated info and missing data. It is not, also, a C# reference: you will find no detailed description of any classes in this book. You will find, though, lots of pointers to the MSDN documentation that comes with Visual Studio. Used correctly, it may be a reasonably good book, especially if it is the only one around; it’s probably better than “Visual Studio for dummies”, anyway.

Buy from

Technical 29 Feb 2004 12:31

Pragmatic Unit Testing

coverPragmatic Unit Testing – In Java with JUnit
Andrew Hunt & David Thomas
A very quick read, this book is a practical introduction to unit testing, aimed at programmers without much experience in this area (like me). It focuses on Java, and specifically on the use of the JUnit framework, but the essencial ideas are aplicable to whatever language one happens to use.

Reading this book you will learn not only how to create effective unit tests, but also why you should do so, and what you will gain from them. It also gives you lots of arguments to try to win your colleagues and management over and try to introduce unit testing to your company’s culture. You will learn about what you should test, when the tests should run (always), why you should automate your build and testing cycles (which is probably a plug for their next book, “Pragmatic Automation”, due later in 2004), how to write tests so that you are more likely to use them, and so on.

You should probably read this book (and/or its companion, “Pragmatic Version Control”) right after reading “The Pragmatic Programmer”, like I did. You will still have the ideas of the previous book fresh on your mind, and you will be more inclined to apply what you learn. Even if you have a good amount of experience with unit tests, this book can still probably be useful, by helping you refresh what you know and, maybe, learn something new about the subject.

Buy from the authors

Technical 28 Feb 2004 21:35

The Pragmatic Programmer

coverThe Pragmatic Programmer – From Journeyman to Master
Andrew Hunt & David Thomas
I recommend this book to any programmers out there, specially those who are early in their careers. It contains chapters dedicated to several topics related to the craft of programming, and each one of them will make you a better programmer.

You certainly won’t learn how to program from this book. No language is taught in it, and it expects that you already know how to program and are familiar with the usual cycle of software development. You will probably already know several of the techniques it discusses, or you will at least have heard of them, even if you don’t follow them. Still, the book is written in a way that encourages you — nay, it almost physically pushes you — to go make them part of your regular job.

In a way, the essence of the book is in the pull-out card included right before the back cover: the 70 “tips” that are sprinkled throughout the text, containing all of the combined wisdom of the authors in easy-to-swallow nuggets. For example. tip 49: “test your software, or your users will”. Or my favourite, tip 25: “don’t panic when debugging”. The list of tips is freely available from their website, by the way.

But you shouldn’t read just the tips; the text of the book gives out much more detail, in an easy and fun way, with lots of real-life examples. It will sound like a cliché, but I really wish I had read this book some ten years ago, and I do intend to make sure that all programmers who work with me read it.

So, if you care about your craft (which, by the way, is tip number 1), go get this book or find someone who already has it. In the meantime, you can read some excerpts at the afore-mentioned website.

Buy from

Technical 14 Sep 2003 19:18

Thinking in Java

coverThinking in Java, 3rd. edition
Bruce Eckel
If you are already a programmer, this book is a great introduction to Java and, in fact, to object oriented programming in general. Bruce goes to great lenghts (literally; the book is 1100+ pages long) to show you everything you need to know, while also letting you know when he is skipping over things you don’t really need to know. And, of course, pointing you to places where you can get the information if you ever come to need to know that.

However, if you are already an experienced Java programmer, this book may not be for you; certainly, it won’t be a book you will want to read from cover to cover. It may still be useful, though, as documentation you can go to if you need more information in things you don’t use very often. Personally, I would recommend this book to anyone who works or plays with Java.

The writing style of the book is also very welcoming: it is a nice prose, and the author lets you know not only how things are, but also why they are the way they are. You also get to know about what parts of the language he doesn’t like and why, and this, coming from a guy who’s seen everything out there, is very enlightening.

By the way, this book, in electronic form, is available at the author’s website, with several others in different stages of development.