Subscribe: John Sands' Radio Weblog
Added By: Feedage Forager Feedage Grade C rated
Language: English
book  client  code  doctype public  don  dtd xhtml  dtd  net  public dtd  server  test  ueds doctype  write  xhtml dtd  xhtml 
Rate this Feed
Rate this feedRate this feedRate this feedRate this feedRate this feed
Rate this feed 1 starRate this feed 2 starRate this feed 3 starRate this feed 4 starRate this feed 5 star

Comments (0)

Feed Details and Statistics Feed Statistics
Preview: John Sands' Radio Weblog

John Sands' Radio Weblog

Last Build Date: Fri, 19 Mar 2004 02:39:31 GMT

Copyright: Copyright 2004 John Sands

Tue, 16 Mar 2004 21:28:16 GMT

My new blog is at sandspace

Tue, 03 Jun 2003 03:02:56 GMT

You are Neo, from "The Matrix." You
display a perfect fusion of heroism and

What Matrix Persona Are You?
brought to you by Quizilla

Sun, 17 Nov 2002 04:24:36 GMT

John Lam comments on Joel Spolsky's Law of Leaky Abstractions.
... they had to understand their technology at one level of abstraction lower than where they worked every day. ADO programmers needed to understand how their database worked, ASP programmers had to understand how IIS worked, Visual Studio developers needed to understand how the wizard-generated code worked.

Thu, 31 Oct 2002 03:29:14 GMT

An unbelievable optical illusion. I checked it with eye dropper and it's true! [from joho]

Wed, 23 Oct 2002 02:46:29 GMT

Two good interviews: Marissa Mayer, Google Product Manager and Alan Cooper.

Sun, 20 Oct 2002 15:48:22 GMT

I'm interested in .NET clients without client-side installs. Chris Sells has a great example in his Wahoo game. I love to click on a link in a browser and see a Windows program run with no (visible) installation. He has an article about .NET Zero Deployment on MSDN, where he says Only a technology that provided a deployment as compelling as HTML would stand a chance of unseating it. Jason Clark covers the same issue in his piece, The Return of the Rich Client.

The same feature, along with CLR hosting in IE, lets .NET controls work in the browser without that annoying installation dialog that ActiveX control have. Jay Allen's article on Host Secure, Lightweight Client-Side Controls in Microsoft Internet Explorer describes how that works.

And to round out the topic with some good overall perspective on why browser front-ends are so effective, Paul Prescod has this piece - The Browser will Rise Again.

Sat, 12 Oct 2002 20:24:56 GMT

From the beating-my-head-against-a-brick-wall department: I snagged GotDotNet's Message Board sample and put it up on my machine at work to start a new intranet for the engineering group I'm in. In keeping with the idea that an intranet must be a communications tool that all employees check every day, I made a "Daily DotNet" forum and posted a code puzzle every day, to get some discussion going.

The questions were mostly snagged from books. I got this one from Prosise's book:
  Spot the bug in the following code:
  int a = 1; 
  try { 
    a *= 3; 
  finally { 
I was hoping to have some conversation about value types and boxing, but I had to just explain the answer, because there was no conversation. (a is boxed twice into 2 different objects, so there's a runtime error when Monitor.Exit tries to unlock an object that isn't locked). In five days of posts like the one above and in spite of repeated e-mails, I got exactly two one-line responses to the same question. From a group of thirty engineers. What's up with that?

Sat, 12 Oct 2002 14:22:14 GMT

My first impulse was to take exception to this from Petzold's .NET book:
Don't do this, however:
Size.Width *= 2;
That's setting a property of a property. For reasons beyond the comprehension of people who don't write compilers, it's not allowed.
In a later example, he gives the right way to do this kind of thing, but he doesn't explain why the statement doesn't work. Should he have explained it?

.NET has merged all Microsoft development cultures (Visual C++, Visual Basic, ASP) into one, so the new culture must satisfy the needs of those diverse groups. I've enjoyed developing in all three environments, but have often been frustrated by the lightweight nature of many VB conference sessions, books, and magazines, relative to the C++ equivalents (DevelopMentor providing some notable exceptions). Obviously the reason is that VB has a wider appeal than C++. It takes less skill to use VB but that doesn't mean it can only be used for development projects where less skill is needed. Just ask Joel.

So back to Petzold's comment above. Should a comprehensive book like this just skip over this issue, because developers don't need to know it or won't be able to understand it? Shouldn't all .NET developers understand the differences between reference types and value types? I think so. I hope so.

Sat, 12 Oct 2002 04:19:13 GMT

Ah Google, how I do love thee. I had to restore Radio because of a complete hard-drive refresh and I somehow lost some of the latest posts. Gone from my hard drive and of course when I started Radio it automatically posted everything, thereby wiping them from the server as well. But I simply searched Google for something in the the latest one and clicked on that beautiful "cached" link on the results page. There they were, waiting to be copied and pasted, for reposting on another day. Not that they are long lost treasures, of course; but the confidence with which I went to Google to salvage them without missing a beat was a nice feeling.

Mon, 16 Sep 2002 03:23:21 GMT

Fontscape is a new site intended to help graphic designers select fonts. I'm a software designer, but I can still appreciate art (occasionally) and I spent a fascinating hour just admiring the work. I also tried Identifont but it didn't find Lucida Console and it thought Anonymous was Pueblo. Maybe I'm using it wrong. Wait! It got Century Gothic right. Whoops - it thinks Georgia is Berling. I don't expect I'll ever actually need to use it for its intended purpose, luckily. [from webgraphics]

Sat, 14 Sep 2002 18:49:01 GMT

A great gift combination. (image) [from DaveZilla]

Tue, 10 Sep 2002 01:48:17 GMT

Cassini managed code web server (link from On The Mark). Why is this interesting? Well, for starters it shows how you can easily host your own light-weight http server. Second, a .NET-based server should be immune to buffer overrun attacks (since the CLR is watching for array indexing errors). Finally, it might make a great host for web services (without some of the other overhead that IIS introduces for a general purpose site). It seems to me that another use for an easy-to-create local web server is to make the type of application I'm using right now, Radio Userland.

Tue, 10 Sep 2002 01:33:35 GMT

What a brilliant idea for a game to play during long phone conferences! [from Ingo Rammer]

Mon, 09 Sep 2002 13:34:20 GMT

Ten Best Intranets of 2002. We also found several companies that used a daily lunch menu as their killer app. I think the killer app phrase has lost a bit of its weight since it was used to describe the spreadsheet, e-mail, and the web itself. But the point here is simple: if the goal is to get every employee to visit the Intranet every day, you need to post something new every day that they care about. Lunch!

Tue, 03 Sep 2002 19:38:43 GMT

Wow! I made a haiku!
   Ask this one question
   Of each particular thing
   What is its nature?

Mon, 02 Sep 2002 04:07:14 GMT

My favorite scene from Silence of the Lambs:
Hannibal Lecter : First principles, Clarice. Read Marcus Aurelius. Of each particular thing ask: what is it in itself? What is its nature? What does he do, this man you seek?
Clarice Starling : He kills women--
Hannibal Lecter: No! That is incidental. What is the first and principal thing he does, what need does he serve by killing?
Clarice Starling : Anger, social resentment, sexual frustration--
Hannibal Lecter : No, he covets. That's his nature. And how do we begin to covet, Clarice? Do we seek out things to covet? Make an effort to answer.
Clarice Starling : No. We just--
Hannibal Lecter : No. Precisely. We begin by coveting what we see every day. Don't you feel eyes moving over your body, Clarice? I hardly see how you couldn't. And don't your eyes move over the things you want?
I was reminded of it while reading First, Break All the Rules. The authors claim (based on the results of a huge Gallup study) that the one thing that all great managers have in common is that they know that "each individual ... is true to his unique nature".
People don't change that much,
Don't waste time trying to put in what was left out,
Try to draw out what was left in,
That is hard enough.
I feel sure Peter Drucker would agree. Don't focus on people's weaknesses (especially if you call them "opportunities for growth"). Focus on people's strengths.

Wed, 28 Aug 2002 22:26:36 GMT

.NET books

One of the many things I'm enjoying about .NET is the unprecedented high quality of the stuff written about it. Reading Petzold's .NET book reminded me of his venerable Programming Windows 3.1, of course, because he covers the same material (and nothing else). The earlier book was simply indispensible because that's all we had. He's been such a hero all these years because, for many of us, we wouldn't have been able to write software at all if not for his book. But things have changed. With our new learning challenge, .NET, there are many excellent sources of knowledge (not the least of which is the Dynamic Help built into Visual Studio).

I've just finished Jeff Prosise's Programming .NET and it's just wonderful. His huge section on ASP.NET - half the book - is exactly what I needed; and every one of the five big chapters on WinForms, ADO.NET, Multithreading, XML, and Remoting covers the material in a masterfully clear and simple way. It's almost the best .NET book I've read. But, ahh, I doubt whether anyone else can write technical books as well as Jeff Richter. I've read every word of his .NET Framework book twice and referred to much of it a dozen times. Every .NET developer, whatever parts of .NET he or she specializes in, should read Richter.

I'm also enjoying using Drayton, Albahari, and Neward's C# in a Nutshell as a reference. I take it with me everywhere I go (no, seriously) and dip into it several times a day for a satisfying .NET snack. I particularly enjoyed reading a chapter in one of the other books, then going through the corresponding chapter and FCL references in Nutshell. It's a pity it doesn't have ASP.NET, ADO.NET, WinForms, and Remoting, but at more than 800 pages it's already a big Nutshell. I suppose there'll be a .NET Enterprise in a Nutshell soon. I hope so.

Excellent books!

Wed, 28 Aug 2002 01:41:43 GMT

A few recent CSS demos that capture the reasons why CSS is a good thing - simple markup and separation of layout and content. View the source to see how clean it is. First some trickery with floats and negative margins. Followed by a few CSS buttons And finally, a rollover with only one image and no javascript. [I think they're all from Simon Willison's Weblog.]

Mon, 26 Aug 2002 19:09:32 GMT

There just isn't enough bandwidth to do good design when a team is geographically dispersed. I'm not saying it can't be done at all, but the results are vastly better when the entire team is physically in the same location. I'm convinced of this, and will never agree to do software development with a dispersed team. [Joel on Software] I love to work from home, and yet I agree with Joel. I live twenty minutes from the office and go in three or four times a week to meetings, lunches, training sessions, and, most importantly, design sessions. We have guys who call in from the Connecticut office and one guy who works from his home in North Carolina, and it's not nearly as effective as being there. At home I do all my programming and my deepest thinking and I just love the increased productivity. Plus it lets me integrate my work with my life in a way that's more natural to me. Working from home and the office is the best of both worlds.

Sun, 25 Aug 2002 15:25:40 GMT

Ray Ozzie is encouraging Groove employees to write blogs and has posted some Personal Website and Weblog Guidelines. What an enlightened company! I seriously doubt whether my employers have heard of weblogs.

Wed, 10 Jul 2002 21:29:18 GMT

A question I ask myself quite often these days: am I doing exactly what I should be doing right now?. Yesterday I played Warcraft III for four hours straight from 7 am, when my wife left for work, until 11, when my kids woke up (recovering from many late nights during our recent vacation). I never get a block of uninterupted time like that to just play. Absolutely the right thing for me to do. And again this afternoon; I've been reading The Salmon of Doubt. It's sad to stop reading now and then and look at Douglas's photo on the back flap, but I find I'm really appreciating this final work from one of my very favorite writers. I'm getting better at doing exactly what I should be doing right now.

Fri, 14 Jun 2002 20:38:09 GMT

Deterioration at Amazon The customer reviews at Amazon have been one of the unexpected successes of the web for me, because I had no idea that I would find strangers' opinions so useful. I have come to rely on them. So it's sad to read stuff like this (along with a rating of 5 stars):
Haven't yet received the book (...) but judging by the cover it is going to be an excellent and helpful tome.
The saddest part is that 11 out of 56 people found that review helpful. And this, for the same book, (also worth 5 stars):
Could be considering ordering the book (...) I must agree that the ease of use of the Times font is a superb idea.
In fact, all four reviews of the book are completely content-free.

Thu, 06 Jun 2002 02:24:05 GMT

A moment of XSLT clarity from the most incredibly useful mailing list I've ever used:
> I understand that the value of a variable cannot be modified 
> once it has been assigned, but is it possible to allocate a 
> global variable at the start of a stylesheet and then assign 
> it a value at a later time, such as within a named template?
No, it isn't possible. You need to stop thinking sequentially. 
There is no such thing as "a later time" in XSLT.

Michael Kay

Wed, 05 Jun 2002 21:54:19 GMT

Including the same JavaScript file on the client and the server

I've often been frustrated that there is no simple way to include a file of JavaScript functions on the server (ASP) and the client (the browser). I have a whole library of functions that convert, format, process and otherwise stretch and squeeze dates, strings, and xml documents. I keep copying code from a server-only file to a client-only file or vice versa. So today I finally fixed the problem by writing a function (to be executed on the server) that reads the file, chops off the silly <% and %> that the ASP include insists on, and writes it into the page. It's just:
function convert_to_client(filename) {
  var fso = Server.CreateObject("Scripting.FileSystemObject");
  var ts = fso.OpenTextFile(filename, 1);	//ForReading
My test ASP is like this (the convert_to_client function is in script_converter):
<%@language="javascript" %>

    <% Response.Write(convert_to_client(Server.MapPath("test"))); %>
    server: <% Response.Write(test("from the server")); %>
Notice that test is included on the server, and also passed to the convert_to_client function to be written to the page so that it is available on the client. The test file is just this:
function test(parm) {
  return parm;
The output when the test ASP page executes is:
server: from the server 
client: from the client

Wed, 05 Jun 2002 13:19:57 GMT

A good article (as usual) from Zeldman on DOCTYPES. In case anyone else uses UltraEdit, here's my taglist for all seven doctypes (remove the linebreaks when you paste it into your taglist.txt):
[Tag Group - DOCTYPES]
0="HTML 4.01 Strict :UEDS:-//W3C//DTD HTML 4.01//EN" 
 ""> ... "
1="HTML 4.01 Transitional :UEDS:-//W3C//DTD HTML 4.01 Transitional//EN" 
 ""> ... "
2="HTML 4.01 Frameset :UEDS:-//W3C//DTD HTML 4.01 Frameset//EN" 
 ""> ... "
3="XHTML 1.0 Strict :UEDS:-//W3C//DTD XHTML 1.0 Strict//EN" 
 ""> ... "
4="XHTML 1.0 Transitional :UEDS:-//W3C//DTD XHTML 1.0 Transitional//EN" 
 ""> ... "
5="XHTML 1.0 Frameset :UEDS:-//W3C//DTD XHTML 1.0 Frameset//EN" 
 ""> ... "
6="XHTML 1.1 DTD :UEDS:-//W3C//DTD XHTML 1.1//EN" 
 ""> ... "