A collection of blog posts that I flagged for follow up this week.
Aaron Margosis has a blog which explains why you shouldn’t run as an Admin user on Windows systems and how to work around the problems that you might face when you start running as non admin. This table of contents post is a good jumping off point if you’re interested in running as a normal user.
Jeff Darcy on designing interfaces.
I’m sure you’re all getting bored on my views on using Assert in modern C++ code by now, I’ll try and make this the last one. Last time, I asked if anyone had what they’d consider to be an example of the use of assert in C++ where the usage was valid given my objections to assert. Mark updated this recent posting on the subject to include a link to Raymond Chen’s blog where Raymond is discussing COM object destruction and uses an assert… Given that everyone knows that Raymond is a seriously good programmer doesn’t his use of assert validate the position of those who disagree with me.
I’ve just finished reading Rootkits: Subverting the Windows Kernel. Overall I enjoyed it but I’m in two minds about its usefulness…
The book covers “hacking” the Windows kernel using various techniques to get your code inside the kernel and, once there, various other techniques to keep others from knowing you’re there. Once you have this kind of code in the kernel of someone’s machine you can do lots of damage; or, of course, you can gather information for security forces, or protect the machine from other rootkits…
Mark responded to Barry’s response to my post on Assert. Barry then responded to Mark and Kim and I added a little more in the comments. I did have some more to say, but Barry’s said most of it…
Anyway, so far only Vagn Johansen and the guru’s over on comp.lang.c++.moderated disagree with us… Anyone else fancy joining in? What I’d like to see is for someone who’s defending to show a situation where the alternatives that we’re proposing don’t work; but lets try and stay out of the realms of “what if the compiler is broken” and “what if there’s a hardware fault” if we can…
Alexis Smirnov has just written a piece on why you shouldn’t try and use STL’s map::operator[] to find out if a map contains a particular element. It’s probably common knowledge for most people using STL, but it’s worth repeating for those new to the std::map interface.
Barry Lapthorn has a response to my Assert is Evil posting where he concludes that assertions aren’t needed if you have tests… He also raises a point that I missed which is that the typical assert on Windows machines causes a dialog box to pop up and stop your program giving you the option of debugging it or ignoring the assert, etc. This kind of response is not especially useful if you’re writing code that doesn’t interact with a user, such as a service, as the code may not be able to show a dialog box …
I use BlogLines to read my RSS subscriptions. It’s pretty good, and now that the performance issues I had initially seem to have gone away, I like it a lot. It’s very handy to be able to read my feeds from anywhere and always have them up to date and synchronised. One of the features I like is the little “keep new” check box that each item has; check it and the item stays unread.
The Opera web browser is now free. It’s worth giving it a try. I downloaded it after Barry sent me a link to the free registration codes that they were giving away a few weeks ago to celebrate their 10th birthday and I’ve been using it as my browser of choice ever since. It seems faster than either IE or Firefox and I just feel more comfortable in it than in Firefox; no idea why.
The Google AdSense Preview Tool does exactly what it says on the tin. So it’s very useful for working out what kind of ads you’d get if you added Google’s AdSense to your pages.
Ted Neward has a very nice piece about the new language features in C# v3 and how they work together to provide something quite powerful. Go read it!
Given that implicit typing, object initialisers and extension methods are all designed to allow LINQ to be a be able to generate classes on the fly and extend existing classes I’d still be happier if they could be optionally restricted from use on ’normal’ classes to help prevent the less experienced running amok with these new language features and creating code that has interesting maintenance properties…