August 3, 2001
spout
My Favorite Web Sites
Friday, 8/3/01
These are the sites that I visit on a regular basis and like (the sites I visit
on a regular basis and don’t like are not listed : ):
-
Google is the
greatest search engine on the planet. I used to use others, but now, why
bother?
-
Dictionary.com
is a necessity for me because I’m a terrible speller (although it didn’t help
me spell repitwa earlier today!). Plus, it has a thesaurus and an acronym
expander. I’m impressed a number of folks when they’ve tried to use wacky
anonyms on me and I can pretend like I knew it all along.
-
The Yahoo Groups page
is a great place to start and maintain groups. I’ve got
one myself (the
Windows Technical off Topic group).
-
CodeProject.com.
Whenever I need a hunk of code that I haven’t written myself, I start here.
-
Joel on Software
is one of my favorite blogs. I think he’s a genius because he says stuff I
agree with.
-
I use the Internet Movie Database
all the time to settle arguments over movies, find related movies, find release
times, etc. It’s been around for a long, long time and is still a really great
site.
-
The archive for
DevelopMentor’s mailing lists is invaluable. I’ve avoided
looking silly so many times by searching here first before sticking my foot in
my mouth (actually, I could stand to use it a lot more, come to think of it :
).
-
Microsoft’s mailing
list archive is useful, too.
-
Whenever I need a map, MapQuest
is there.
-
Whenever I need a computer (not quite as often as I need a map, but often
enough…), I use
Dell’s Refurbished computer site. You have to make sure you’re
getting exactly what you need and you might have to stake it out a few days to
make that happen, but the prices are so good on slightly handled Dell computers
with the same warranty as the new ones, that I wouldn’t buy a computer anywhere
else.
August 3, 2001
spout
My Favorite Software
Friday, 8/3/01
The following software is what I install on nearly every computer I set up.
BTW, I pay for all my favorite software and you should, too. While I am guilty
of “trying” friend’s software, I own legal copies of every piece of software I
use.
August 3, 2001
spout
My Favorite Books
Friday, 8/3/01
When I started writing books, I decided to stop reviewing other peoples’ books.
I used to have a list of all of the books in the topic of my current interest
and write a little review, either pumping them or panning them (this was long
before Amazon.com). Once I decided to write books myself, I figured that
there’d be a conflict of interest putting down competing books, so I stopped.
However, I’ve had lots of folks ask me for a list of recommended books over the
years, so I thought I’d provide one. While I’m still biased, there’s at least less
conflict of interest if I just tell you about books that I love (although I’m
not so proud that I don’t tag each book URL with my Amazon.com associates
ID…).
I would give each of these books a 5-star rating on Amazon (and, in some cases,
I’ve done just that). These are the books that I absolutely love (in no
particular order):
-
The PC Is Not a Typewriter by Robin Williams. Of course, this
is not by the famous actor, but Robin is as famous in the type design field as
the other Robin is in the funny joke field. In fact, I’d say the former is even
more impressive, because she doesn’t let herself get talked into writing bad
books. You can’t go wrong with any of Robin’s books, but this is the first one
of hers that I read and it still holds a special place in my heart. She
specializes in teaching text design amateurs how to do text design and she’s
great at it.
-
Genetic Programming III by J.R. Koza, et al. It’s no secret
that I’ve long had a weakness in my heart for
programs that generate programs. This one is the ultimate — programs
that figure out themselves how to generate the correct program. Very wow. And,
as is necessary for all books on this list, it’s very well written. It’s
gripping in the same way that the latest John Grisham novel is gripping (to a
certain kind of person : ).
-
Essential COM by Don Box. This is not only the classic work on
COM, but it captures the heart of the movement of Windows programmers into
component development. Be careful when you pick it up, though. You could start
by looking something up and find yourself hours later still reading it for the
pure pleasure. BTW, Don and I have good close friends for years, so I may be
biased (except I’m not — this book rocks).
-
Don’t Make Me Think by Steve Krug. I’m still in the middle of
reading this book, but wow. It lays out web usability in a way that even a web
design cretin like me can appreciate. He points out the dos and don’ts in a way
that’s clear, concise and entertaining. I’d love to be able to convey so much
with so few words. And the production values of this book are great. I wonder
if Addison-Wesley will let me write a .NET programming book in the same
style…
-
User Interface Design for Programmers by Joel Spolsky.
Joel maintains one of my favorite web logs and has collected his
usability musings into a wonderful little book (clearly influenced by the Krug
book). What makes this book so wonderful is that he captures all my feelings
about usability, making me feel like an expert. Of course, I love a book that
agrees with me. : )
-
Effective C++ by Scott Meyers. This is the book that started a
movement. Of course, if you’re a C++ programmer, you need to read this book.
But more than that, Scott laid out a style that has often been imitated, but
never duplicated. (I know, because
I tried.)
-
Mr Bunny’s Guide to ActiveX by Carlton Egemont III. If you’re a
COM programmer, you need this book. Check out the close up of the pixel. It
kills me every time.
-
C# Essentials by Peter Drayton, et al. This is hands down the
best .NET programming book out there. It’s clear, concise and accurate (a
novelty in the Windows book market). It only took me a few hours to read, but I
learned a ton. BTW, Peter works for DevelopMentor, but I’m not biased because I
don’t like him very much. : )
-
Fundamentals of Database System by R. A. Elmasri. This is one
of the rare college text books that is not only readable, but practical. I read
this after years and years of doing database work and was very surprised that
they covered what software engineers actually need to know about how databases
work.
-
Inside SQL Server by Kalen Delaney. Ironically, I haven’t had
much database experience under Windows (I was a Unix Informix guy), but when I
read the earlier edition by Ron Soukup, I fell in love with this product. I’m
sure it was the way that Ron described it, but I couldn’t imagine doing SQL
Server work without this book.
-
Modern Operating Systems by Andrew S. Tanenbaum. I sure wish I
had had this book when I was taking my operating systems course in college,
because then Linus Torvald would be reading about the success of my operating
system and not the other way. This book is so great and so well-written that
its inspiring. I firmly believe that every effective programmer needs to first
understand what’s going on underneath their drag-n-drop, click-button IDE and
this book sure lays a great foundation.
-
Computer Networks by Andrew S. Tanenbaum. Along those same
lines, Tanenbaum’s networking book is also excellent. Makes me want to dig
right into the plumbing.
-
TCP/IP Illustrated by W. Richard Stevens. Of course, the late
Richard Stevens was a legend in the Unix community. This book, while slanted
towards Unix, is still a great book about the world’s most dominant network
protocol. I can’t decide whether I like this book or Computer Networks by
Tanebaum better, but you can’t go wrong by owning both.
-
Unix Network Programming by W. Richard Stevens. As a Unix
programmer not even doing network programming, this was still the bible. I know
that you Windows programmers aren’t going to rush out and buy it, but if you
wake up with a desire to program in a command line world, you’ll need this
book.
-
Philip and Alex’s Guide To Web Publishing by Philip Greenspun. I
don’t know how much practical information there really is in this book, but
after reading it, I really wanted to quit my job and go to work for
Ars Digita. Unfortunately, after Phil brought in some “professional”
management, they kicked him out and, as far as I can tell, are driving that
company into the ground. Still,
the amount that that guy has contributed to the internet community is
staggering and inspiring.
-
ASP Internals by Jon Flanders. Now on this one, I’m very
biased, because not only is Jon Flanders a fellow DevelopMentor employee, but
he’s also been one of my best friends since 3rd grade and I wrote the forward.
That said, if you want to know how ASP really works, down to source code for an
ISAPI extension that Jon builds to work just like ASP, you need this book. And
what’s so amazing is that he’s able to convey so much so concisely. I wish I
could write this briefly. I hope an ASP.NET Internals is forthcoming from Jon.
-
The C Primer. This book is long out of print, but it’s where I learned the C
syntax that has served me so well through so many languages, i.e. C++, Java,
JavaScript and C#. I don’t expect anyone to need this book anymore, but it does
have a special place in my heart.
August 3, 2001
spout
Hanging Out My Shingle
Friday, 8/3/01
For the last three years, I’ve been in management. Oh, it started innocently
enough. When the team was small, I was only managing a little bit. However, as
the team grew and we got closer and closer to shipping our first product, I
spent less and less time doing anything technical and more and more time
managing. Eventually, I was doing nothing but dealing with the rest of the
company and potential customers and “enabling” everyone else. Luckily, Don Box,
co-founder of DevelopMentor and my long-time mentor, noticed that I’d been
swept right out of the things that I loved the most. And he made me an offer I
couldn’t refuse…
Now I’m back on the consulting, teaching, writing, development train and loving
it. I’ve been all over .NET for about a year, but now I get to concentrate on
it full-time. If you’d like any consulting help in the area of .NET (or even
COM and ATL), I’m here for you. Pass the word along. Thanks!
August 3, 2001
tools
Command Line Parsing
Aug 3, 2001
I got tired of not having getopt under Win32 and the best version to port
doesn’t handle slashes (as per the Windows standard) or @files for arguments
and it requires you to give away the source for every app that uses it, so,
inspired by my friend Josh Gray, I built my
own. It supports typed flags and params, @file support and building
full usages on the fly.
Plus, the latest version has support for parsing ANSI or Unicode argfiles, as
provided by Johan Nilsson.
Thanks, Johan! Also, I’ve added a contribution by
Paul Westcott to support arguments with restricted values. Thanks,
Paul! And, as if that weren’t enough, Adis
Delalic contributed a UML diagram to describe how the CLP
is built. Wow.
And as if that weren’t enough,
Keith Brown
ported the command line parser to VS.NET.
Thanks, Keith!
August 2, 2001
tools
Expando Objects
Aug 2, 2001
I’ve seen lots of interest lately in expando objects, e.g. objects that can add
methods and properties on the fly. Joe Graf wrote
a piece on IDispatchEx in MIND that was pretty interesting.
My own implementation of IDispatchEx is available here. It supports
expando objects that have no static properties or methods as well as those that
do. Check out the DispExTest.js for a demonstration, dispeximpl.h,
dynamemlist.h and dynamemlist.cpp for the implementation and MyExpando.h for
the usage.