Search
Enlightenment
  • Beginning iPhone 3 Development: Exploring the iPhone SDK
    Beginning iPhone 3 Development: Exploring the iPhone SDK
    by Dave Mark, Jeff LaMarche
  • Code Complete: A Practical Handbook of Software Construction
    Code Complete: A Practical Handbook of Software Construction
    by Steve McConnell
  • How to Break Software: A Practical Guide to Testing W/CD
    How to Break Software: A Practical Guide to Testing W/CD
    by James A. Whittaker
  • How Linux Works: What Every Superuser Should Know
    How Linux Works: What Every Superuser Should Know
    by Brian Ward
  • Rootkits: Subverting the Windows Kernel
    Rootkits: Subverting the Windows Kernel
    by Greg Hoglund, Jamie Butler
Blog Archives
Powered By

Want an awesome looking site like mine? Look no further than Squarespace.

Looking for a Web Host or a Domain Name registrar? Check out Bihira.

Tuesday
28Jul2009

Code Complete

by Steve McConnellFirst of all, I will say this. I should NOT have to tell anyone to buy this book. If you are a programmer, then you should already have a copy of it sitting on your desk or bookshelf. If you don't, then shame on you.

Code Complete is THE quintessential guide to building software. Not only does this book teach you techniques for creating a solid structured design, but it will also help you turn that design into a reality with clean well-written code.

Over the course of this book, Steve McConnell covers nearly every aspect of constructing software. Such topics include choosing a programming language, high-level design, coding conventions, class interface design, defensive programming, comparison of control structures, formal inspections, testing/debugging, and much more.

Like I said before, I should have to tell you to buy Code Complete, you should already own it. You should have looked at the title and immediately clicked away because you should have known that I wouldn't say anything that you didn't already know. But, if by some chance, you haven't read Code Complete yet, then you owe it to yourself (and to your users) to read it immediately.

Monday
04May2009

How to Break Software

How to Break Software - Coverby James A. WhittakerMost of the books about software testing that I've read (wow, I can't believe I've actually read multiple books about testing software) have taken a very textbook style approach to explaining the ins and outs of testing. They go into detail about developing a test plan, boundary conditions, white/black box testing, localization testing, regression testing, etc.

The How to Break Software series (How to Break Software, How to Break Software Security, and How to Break Web Software) takes a much more hands-on approach to software testing. The book is made up of a series of tests, referred to as attacks, that each target a specific fault in the software being tested.

These attacks include things such as exploring allowable character sets and data types, overflowing input buffers, forcing a function to call itself recursively, finding features that share data, and forcing the media to be busy or unavailable.

Each of these attacks are explained in great detail by telling the reader when to apply the attack, what software faults make the attack successful, how to determine if the attack exposes failures, and how exactly to conduct the attack. After I got this book, I immediately began performing many of these attacks on commercial software. You wouldn't believe how many bugs I found! This series is an absolute must-have for any software tester, developer, or project manager.

Wednesday
11Feb2009

How Linux Works

How Linux Works - Coverby Brian WardThere are plenty of Linux manuals out there. But from what I've seen, none of them are as well written or as well organized as How Linux Works. Author, Brian Ward, begins this book with basic shell commands and gradually builds up to configuring hardware, scripting, networking, and customizing the kernel.

One of the things that I really like about this book is that it doesn't just say "here is how you do this with Linux". This book goes a small step beyond that and explains some of the underlying technologies behind what you are doing. For example, when discussing networking, the book describes some of the protocols involved as well as how the software at the interface layer interacts with these technologies.

Some of these kinds of books, such as Linux in a Nutshell, are meant to be used mainly as a reference. Instead, this book is meant to be read from cover-to-cover. If you're already a seasoned Linux guru, this book will serve as a great refresher. But if you're new to Linux, there is no better place to start than with this book.

Thursday
18Dec2008

Rootkits

Rootkits - Coverby Greg Hoglund, James ButlerThere are a lot of security books out there that discuss exploits. They talk about different types of attacks and how to protect yourself from them. While this is all valuable information, Rootkits has taken the security discussion one step further by detailing what can happen after security has already been compromised.

In this book, authors Greg Hoglund and James Butler begin with an overview of rootkits and how they are designed, then quickly shift to how rootkits are programmed (with examples written in C). The code examples begin with writing simple Windows device drivers, but by the end of the book, they'll cover more advanced topics such as modifying the kernel, manipulating hardware, and even accessing the BIOS.

It seems like most security books are written with network and database administrators in mind. Rootkits, however, is for the programmers. The code examples alone are well worth the price of the book. Even if you're not really interested in security issues, this is still a great book for learning the ins and outs of accessing hardware devices programmatically.

Tuesday
14Oct2008

How Not to Program in C++

How Not to Program in C++ - Coverby Steve OuallineHow Not to Program in C++ is quite possibly the most unique programming book I've ever read. Rather than trying to write a "How To" book on being a better programmer, Steve Oualline has compiled a collection of broken C++ programs that the reader must fix.

These programs range in size from just a  few lines to multiple pages and the bugs in them range from incorrectly formatted output to pointer errors in multi-threaded programs. For each program, multiple hints are provided to help you along the way, and of course, the final solutions are also provided.

Debugging skills come from experience. It's easy to find mistakes in code when at some point you've made the same mistake yourself. If you haven't already encountered the bugs presented in this book, you inevitably will. So why not learn to recognize them now, and spare yourself the future headaches?

One other thing that I absolutely love about this book, is the little chunks of humor randomly thrown in. Throughout the book, Steve has included small programming-related jokes and anecdotes.

For example:

Real Software Engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure.

The humorous aspects of the book are great, but more importantly, this book WILL make you a better programmer (or at least a better debugger). If you're a C++ programmer, you need to own this book!