Browser Browser

August 28, 2006

So I installed Internet Explorer 7 on Friday. I have despised IE ever since I can remember, and used Firefox even before it was called Firefox. Yes sir, I distinctly recall downloading and extracting the zip file that contained a browser called Phoenix. Version 0.4

I cannot begin to enumerate the things I find so irritating about IE.

No, on second thoughts I can

  • No tabs
  • Inability to print some pages without cutting off large chunks of the margin
  • Tendency to crash mid-download taking down (with a loud crash) all other open windows
  • No tabs
  • Search dialog that obscures the text
  • Cavalier disregard for web standards
  • No tabs

So finally, after reading a few reviews, I thought why not? Give it a shot. After all, I like to keep an open mind.

Installation

Internet Explorer 7 is a 14MB download. If, of course, your Windows is legit. Within no time you’re merrily on your way

The next order of business is the licence term, which, as usual, you won’t read.

Once you have agreed, you again have to validate your windows. If I’m going to be bothered about this anyway, validating before download is a wee bit redundant.

Next the installer will suck a variety of bits and pieces down the line.

Then it gets cracking on the IE 7 downloads

And gets on with the installation

It then removes what it considers to be malicious software. I don’t mind saying for a second there I suspected it was nuking Firefox

On to its core components

And finally you’re on your way!

The first shock is that Google is the default search engine, and not MSN or Windows Live Search

Interface

Trousers have pockets at the hips because they are very convenient at that particular location. They are easy to reach right where they are and they follow thousands of years of convention.

The merry men behind IE’s interface apparently do not ascribe to this particular school of thought. In their wisdom they defy convention and move around the function buttons away from where they have come to expect them. 

Figure: Opera with the back history, back, forward, image and reload buttons

Figure: Mozilla with back, history, reload, stop and home buttons.

Figure: IE 7. Back and forward are on the left. Reload and stop have inexplicably migrated over to the right of the address bar. Years and years and years of conditioning have led me to expect everything to do with page navigation on the left. I invariably find myself mousing over to the left only to discover reload and stop are not there!

For 10 points and a ladle of gravy, try to find the print button.

Dudes, if it ain’t broke — Don’t fix it!

Another feature that could bear fixing is the find. Find that gets in the way of my text is of little use! Though someone has cottoned on to it and moved it to the top right of the screen, still, its in the way!

Opera has this very same problem

Firefox’s solution is the most elegant

Improvements

The improvements though are several orders of magnitude

Choice of search engines

Open in new tab

It does, however, lack one thing I rely on heavily that Firefox and Opera both oblige

Search text in Google (Firefox)

Search text in Google (Opera)

When it comes to memory, IE does not disappoint. Hot on the heels of Firefox, it makes itself at home and takes great liberties with your RAM.

However, it has yet to beat Firefox’s record on my notebook (198 MB). And it can clean up after itself, unlike Firefox that merrily consumes away

Summary

Very impressive improvement over the howling dog that was IE 6.

Not bad.

Not bad at all.

kick it on DotNetKicks.com

Unexpected Behavior

August 20, 2006

Visual Studio’s immediate window, our old friend, is generally a very powerful debugging aid. A few judicious commands executed there can save hours of manually reading through source code that makes sense on paper on screen.

In fact the only place the immediate window fails to deliver is when dumping the contents of multi-line string variables. In this particular instance, it is a close race  between the immediate window and a chocolate teapot as to who is of less use.

Look at this sample code:

P.S. Yes, that is inline SQL! Sue me!

If you put a breakpoint at the Console.ReadLine() and dump the contents to the immediate window, this monstrosity rears its ugly head:

 

This, needless to say, is not something I generally want. This SQL statement cannot be pasted and executed in Query Analyzer / iSQL / SQL*Plus without forcing me to open another application and wrestling with search and replace and then pasting *that* to the query window.

Why not dump the string as it is?

Aside:

Watching a newbie try to use Windows Media player this weekend made me realize just how hostile it is to completely green users. The more I thought about it the more I realized is that it actually is not as easy to use as it seems!

For  example:

Does this mean the movie is paused and will play if you click the button or it is playing and will pause when you click the button?

I found myself unable to answer what the heck this button does

And what the hell is the second set of maximize, minimize and close buttons for?

Builder

Here is the last update to builder EVER by me. It was a proof of concept and I enjoyed wrestling with the code but  there will be a proper tool from Microsoft eventually. No need for me to lose sleep over it!

kick it on DotNetKicks.com

SandCastle Builder

August 7, 2006

[Update #3] – 11 August 0900

Version 1.2 

Apparently (can’t isolate the issue exactly) it works for some people and not for others.

– Logs the commands it executes (so you can see if there are any issues with paths, etc)

– Cleaned up some of the UI elements

[UPDATE # 2] – 9 Aug

Version 1.1

Well, as one is wont to accidentally do, I packaged the debug build rather than the release …. hence the snafu.

I believe SandCastle Builder is working now.

[UPDATE # 1] – 9 Aug

Version 1.1

– Fixed issue of incorrect extension when chosing your own CHM

– Added feature to allow specification of custom footer

[Oringinal]

Yep. Another one.

Joining the bandwagon of individuals keen to build a GUI for Sandcastle is yours truly.

Here are screen shots of Builder

New

Builder

Progress

Builder In Action

Complete

Builder At Rest

What makes mine different?

  • It is “Project” based so you don’t have to keep specifying the assembly, xml file, etc
  • Does not assume SandCastle or the Help Compiler is installed to the default location. It does however assume they are installed somewhere!
  • Reasonably polished UI – don’t you think? 😉
  • All in C# – no batch files (except for a workaround to piping output from one process to another)
  • Does all its work in the temp folder and cleans up after itself
  • Allows you to immediately view the CHM

Do I have any other plans?

Yep

  • Fix the inevitable bugs that MUST be hiding somewhere
  • Capture output from SandCastle’s various executables and log to file
  • Convert builder to a Visual Studio Addin
  • Allow builder to directly build projects & solutions
  • Allow builder to run from console so it can be used by built tools like nant and msbuild

Have a go and let me know what you think by leaving a comment. What i’m keen to know is if it runs at all 🙂

Download SandCastle Builder Here

Download the Manual Here

kick it on DotNetKicks.com

It amazes me just how even the biggest companies continue to make a very fundamental mistake — failing to clearly label the versions of their software.

How many companies release software and fail to indicate the release date and/or version numbers, leaving you wondering if you should download it or not? More than you’d think!

Google is one such. You cannot know the versions of their various software until you download them and install them. Which is a waste of

a) My bandwidth
b) Their bandwidth
c) My time
d) My hard disk space

and ultimately

e) My sanity

Look at three examples:

Deskop Search

Google Destop Search

Picasa

Google Picasa

Google Talk

Google Talk

But Google is not too bad. Picasa is just under 5 MB and Talk is just under 2 MB

Steve Jobs’ Apple Computer is another culprit.

You cannot know the version of iTunes until you download all 35MB of it and install it.

This is crazy.

Another colossal annoyance is needless coupling of products.

The less said about Google Pack the better. I do not for one second believe the whole is greater than the sum of the parts.

Another culprt is (drums please) Apple’s iTunes. Packaged with the iTunes installer is QuickTime. This is not a problem if you’re installing iTunes for the first time. It is if you want to upgrade iTunes from 6.0.4 to 6.0.5.

I see no reason to keep downloading a humongous file for a micro-version change.

iTunes

After all, if they are really integrated it would have a seamless single installation, rather than the current iTunes installer calling the QuickTime installer!

Why not split them up into 3 Packages like so

– iTunes Complete (6.0.5 & QuickTime 7.1)
– iTunes 6.0.5 (Requires Quickime 7.1)
– QuickTime 7.1

A final culprit is again our friend Apple with its iPod update software. If you want to download the latest software for your iPod Nano it merrily comes down the wire with software for the iPod Video, the iPod Mini and indeed each and every iPod’s software,topping the scales at 50+ MB.

iPod Updater

I cannot think of a single good reason for this.

Dear Apple, I am perfectly aware what sort of iPod I have, thank you very much! Let me download exactly what I need!

kick it on DotNetKicks.com

Environment NewLine

August 3, 2006

If you are one of those people that put “\r\n” in your strings to indicate a newline, raise your right hand and smack your head.

Why?

1) You are assuming your code will always run on Windows. Unix uses \n alone, Apple (until OS 9) used \r alone. Your code might just end up being compiled under Mono and then what?
2) It looks plain ugly
3) You have to escape the characters again (at least in C# if you’re not using the verbatim operator @). This quickly becomes a pain in the — er –becomes cumbersome when dealing with a lot of text

What should you do?

Simple

string line = string.Format(“And this is the end of the line{0}”, Environment.NewLine);

kick it on DotNetKicks.com