" /> Primordial Ooze: March 2004 Archives

« February 2004 | Main | April 2004 »

March 31, 2004

When not to use SOA

Jason Bloomberg talks about "Why SOA may not be right for you":http://www.zapthink.com/report.html?id=ZAPFLASH-02162004. Specifically, he states that it might not be a good fit in a heterogeneous IT environment. I'm not sure I understand that (notwithstanding the fact that I doubt any of these exist). As I take each step in my journey to understand all of this stuff, I find myself at an interesting crossroads. Is SOA a fit for the issues I face each day or should I create a more specific solution? My gut tells me that SOA, at face value, is a manifestation of some pretty sound principles like abstraction, separating implementations, and de-emphasizing objects (and instead emphasizing getting some work done). Plus, it seems like a lot of good technology is being developed to make this stuff a dream to work with. So, on my to-do list is to learn about how SOA scales and what technologies exist that help out with that. If a single server implements my service, how do I distribute that to some idle worker machine?

March 29, 2004

Dialog Editor

Check out the dialog editor in Whidbey: Whidbey.png Notice a few things: * The spacings are marked with dotted lines. These appear when your control snaps to the correct position, say to the edge of a dialog or to another control, both veritcally and horizontally. * The red baseline is to line up text in controls that have different heights! How cool is that?! On that last point, I wonder how your own custom control can play nice in Whidbey and integrate with this feature. Perhaps you implement an interface or provide a baseline property that allows the environment to adapt.

March 25, 2004

VSLive! - Wireless access... good

Wireless access is good here. I'm getting 5.5Mbps now, but I was geting up to 16Mbps at times (I have a Wireless-g PCMCIA card). This is good news for blogging in the middle of sessions...

VSLive! - Richard Hale Shaw on better C# class design

So, I'm sitting here listening to Richard Hale Shaw talk about better class design, CLS compliance, and FxCop, among other things. I guess I'm writing a brief overview of the talk, complete with my own comments on the content. Kdeep in mind that this is a stream of consciousness post, so expect sudden stops, spelling mistakes, typos, and lost of unfinished business... CLS compliance is all about what you expose outside of your assembly, not the private interface. - Create consistent usage: delegates 1st param sender, 2nd param e use specific suffixes for certain types, such as "Attribute", "Collection", "Exception". etc. MyException, etc. some prefixes and suffixes to avoid, like Delegate, Enum, Before, After. I;m not sure I agree with this one. _btnMine, _cboMembers, leading underscore and common type prefixes. Underscores show up first when you use intellisense. Possibly a plus. The acronyms help group the items within the Intellisense UI. Base classes have some advantages in that you can version them and free the deriver from the problems that would otherwise follow. This is interesting and requires more investigation. The reflection stuff is cool... and easy... lots of cool ways to exploit it. Use static classes instead of creating a regular class with all static methods. This is new for C# 2.0. This is perhaps an alternative for cases where you might want to use sealed. Again, I need to re-read this stuff since I'm not sure when I'd use one or the other. Richard went into quite a bit of detail when he described the differences between Value types and Reference types. He presented lots of his own guidelines and guidelines that he's gathered. For instance, ValueTypes are useful when yoiu have many of them, lifetime is short, and they are relativelky small, say 16 bytes or less. Boxing and unboxing is an issue with ValueTypes. His rule of thumb is to write most types as reference types and prototype and look for hotspots. Only change to ValueType when there is a performance bottleneck. Brute force casts are evil (necessary for ValueTypes) but everyone should prefer as and is keywords. Static casts bypass the compiler and force cast exceptions at runtime, which is really bad. Checked exceptions, not a good idea. They are in Java, but they are enormously cumbersome and stick on poor performance. The as keyword will simply return null, like C++ dynamic_cast (when RTTI is enabled). You can check for it (efficiently) and move on... Here's an interesting one. Avoid properties that return arrays. They look like indexers, but aren't indexers. The returned array is a copy and has no built-in semantics. I've never written an indexer property, though I know the basic idea, so some experimentation is in order. Do you see a common theme here? Delegates vs. Event objects. Hmmm. I missed some of the details on his point here, when to avoid delegates. I'll have to talk to him afterwards to resolve this. Looks like Richard Hale Shaw went over, so things are closing down quite abruptly. I'll be thinking about a lot of this stuff and I hope to post followup posts. Comments on any of this are welcome.

March 24, 2004

VSLive! - VS 2005 - Windows Forms

Wow, incredible stuff. I attended a Windows Forms demo this morning, where many of the new features of Visual Studio 2005 ("Whidbey") were demonstrated to spectacular effect. Here are some quick notes I jotted down: Dialog Editor Holy crap. The dialog editor can snap controls to alignment. I knew this from the PDC bits. However, what's new is the control auto-spacing, matching Windows design guidelines. If that weren't enough, they provide guidelines for different control types so the fonts all align, even though the frames of the controls may differ. Are you kidding me? You can edit common string properties without going to the properties menu. I could swear I saw this before, perhaps in Sheridan's VBAssist from the old days? Anyway, cool feature. FRefactoring support pervades the designer, the code editor, the property editor and the solution explorer. Changing class names ripples through everything. For VB, the "My application" project designer was cool. Most of the functions yoiu might set in an installer were part of the project properties, enabling seemless distribution later on, with ClickOnce, for instance. Toolstrip control is cool. SmartTags are cool. You can perform common actions on various controls that support it, which seems like most or all of the out of box components. Partial Types allow you to put user and designer code in separate files. This has some profound benefits, allowing you to take advantage of some of their code generation features without worrying about blowing away your customizations. Security I was blown away by the "Calculate Permissions" feature, where VS iterates over your code and suggests permissions that will be needed. They even integrated this notion of required permissions into Intellisense, to the point where you are warned when you are about to call a method that will require permissions you aren't set up for. Oh yeh, you can set up a debug sandbox, where you can similate the permissions you plan on deploying with. "PC in the wild", allowing the user to acknowledge possible problems that can be detected at install time (like permissions needed, but not initially granted due to deployment config). More to come...

March 23, 2004

Off to VSLive!

I'm off to VSLive! in San Francisco. I'm looking forward to the trip and possibly meeting some old buddies from my ActiveX days. I intend on blogging about the event... I guess, if anything interesting happens. Otherwise, I'll be back on Friday...

March 18, 2004

SOAWiki

"James Avery":http://dotavery.com/blog/ blogs about his new "Wiki":http://www.c2.com/cgi/wiki dedicated to Service-Oriented Architectures. The Wiki is called "SOAWiki":http://www.soawiki.org/default.aspx/SOAWiki.HomePage, though that's not a real "WikiWord":http://www.c2.com/cgi/wiki/wiki?WikiWord in the purist sense, but you get the point. Enjoy.

quickSub

I was reading "Jon's Radio":http://weblog.infoworld.com/udell/, specifically a post wshere he talks about "Standards versus customization":http://weblog.infoworld.com/udell/2004/03/17.html#a946. He talks about a few things in that post but his points about one-click subscribe for news feeds caught my eye. First, one-click subscription is a reality, albeit not a well-known reality. I noticed Jon had a neat way to allow readers to one-click subscribe to his blog. It turns out that his mechanism is publicly available and is called "quickSub":http://www.methodize.org/quicksub/. I was able to install this in 5 minutes. My own aggregator "NewsGator":http://www.newsgator.com/ has another means of doing this via a neat IE plugin that squats down on your toolbar. Unfortunately, this toolbar doesn't work in my primary browser, "firefox":http://www.mozilla.org/products/firefox/. Check out my syndication section of my sidebar and hover your mouse over the "one-click subscription" link. Cool!

March 14, 2004

I, Robot—I, boycott

I have a real problem on my hands. I'm a sucker for science fiction movies, even bad ones. Furthermore, if it's a sci fi blockbuster, I'm pretty much there on opening night. Since having kids, that's not really true, but almost true. That said, I now have a real dimemna. I just saw the "trailer for the motion picture I, Robot":http://www.irobotmovie.com/trailer/index.html, starring Will Smith. From what I can see, they have completely twisted the story from Isaac Asimov's original work of the "same name":http://www.amazon.com/exec/obidos/tg/detail/-/0553294385/qid=1079306338/sr=8-1/ref=pd_ka_1/104-5674393-8608710?v=glance&s=books&n=507846. What am I supposed to do now? I've got to boycott the thing, don't I? I mean, I grew up on Isaac Asimov's Robot novels and later his Foundation series. This is like sacrilege. My main problem with their perversion is the robots seem to go ballistic in the movie... typical of a hollywood disaster. In the books, this would be impossible, of course. In the books, the robots always obeyed the three laws of robotics: 1. A robot may not injure a human being or, through inaction, allow a human being to come to harm. 2. A robot must obey orders given it by human beings except where such orders would conflict with the First Law. 3. A robot must protect its own existence as long as such protection does not conflict with the First or Second Law. Again, in the books, the robots had no choice but to obey the laws. It was made very clear that these three laws were written into the fabric of the robotic positronic brains. Failure to comply was as impossible as it is for a human to fly. The point of the rules was to present challenging opportunities for the reader in situations where the only being capable of the crime was... a robot. However, this line or reasoning had to be abandoned since the reader could always rely on the laws being valid. The movie breaking these rules as liberally as they seem to is just plain offensive. Unfortunately, I'm not the boycott type. I'm not that disciplined. Plus, it's fun to complain and sound like I know what I'm talking about as I rip into the story. Maybe I'll just come in 5 minutes late and miss the title scene so I can pretend it's a different movie. Arg.

March 13, 2004

Avoid the GAC

Chris Sells tells us to Avoid the GAC.

In my previous DeepSize post, my instructions include using gacutil which, of course, installs DeepSize into the GAC. While my little application will never get updated by another party and possibly installed over the a version you may have already installed (wishful thinking), I suppose I should reconsider my choice to use the GAC for DeepSize.

After doing some research, it looks like I have to put the explorer extension in the GAC. I tried various configurations such as placing DeepSize.dll in a directory on my SYSTEM path and calling regasm. I understand that COM doesn't deal with the path since explicit references to the path a COM DLL is located is hard-wired into the registry when regsvr32.exe is invoked on the library. However, none of those scenarios worked.

I Googled for a few more articles on the topic of Explorer extensions and one link in particular corroborated the original Code Project article's instructions on placing the Explorer extension in the GAC. See Extending Explorer with Band Objects using .NET and Windows Forms (also on Code Project).

Furthermore, I'm beginning to understand the role of RegAsm.exe as opposed to regsvr32.exe. You can't register a .NET DLL using regsvr32.exe since a .NET DLL doesn't support the old COM registration functions. RegAsm.exe works through COM Interop, which, while it exposes .NET objects as COM objects, it doesn't do it through old fashion means of DllRegisterServer() and DllUnregisterServer().

I definitely dig having the Chris Sells piece in my mind. However, I'm also glad I've gained a little personal experience on when to do and not to do something.

March 12, 2004

Miguel de Icaza "C is dead"

I just read this fascinating article over at LinuxWorld. "Still Bringing Windows Developers Over to Linux, Mono Gathers Speed":http://www.linuxworld.com/story/44050.htm Being a regular reader of Miguel's blog, I've been watching this unfold on a daily basis. This article made me snap out of the miniscule and see he big picture. After reading the article and the discussion that followed. I have a few short observations. First, people starting beating up Java saying that it's not used by any serious Linux developer. The obvious choice is C. I guess that's true for Linux developers on the desktop but it's obviously not at all true for Web developers. People working with SOA are almost exclusively working in Java from what I understand (caveat, I'm not a Web developer!) Second, I wonder which group of developers Mono development will more displace? I'm also curious about when Miguel and his team will start targetting the WS-specs that Indigo has latched onto. Hmmm. That last thought is interesting. Once Mono is mature, how much of the IL and assemblies produced by the Microsoft team can be directly used on top of Mono? I'd like to think I could answer that question myself, but I still haven't wrapped my head around all of the architecture involved here...

March 11, 2004

Earth, taken from Mars

This picture, released by NASA today, shows Earth (160 million miles away) as seen from the Mars Rover: h_earth_spirit_0311_02.jpg More information can be found on space.com. (I first heard about this on the Digital Photgraphy Review forums)

ADO .NET Links

I'm mostly bookmarking here since I'm reading a lot into ADO.NET lately... ADO.NET Articles on Know .NET: * "Efficiently Using ADO.NET - Part I":http://www.knowdotnet.com/articles/dataviews1.html Efficiently Using ADO.NET - Part I * "Efficiently Using ADO.NET - Part II":http://www.knowdotnet.com/articles/expressions.html Efficiently Using ADO.NET - Part II Some migration tips from J2EE to ADO.NET: http://www.c-sharpcorner.com/Code/2003/March/J2EEtoDotNet.asp "From ADO to ADO.NET: A Gradual Approach":http://www.developer.com/net/net/article.php/2228221 (This is where I'm coming from...) Some interesting thoughts on "performance of ADO.NET/Oracle":http://groups.google.com/groups?q=ADO.NET&hl=en&lr=&ie=UTF-8&oe=UTF-8&selm=128401c2342d%24db1a45e0%249be62ecf%40tkmsftngxa03&rnum=7 "Wintellect ADO.NET FAQ":http://www.wintellect.com/resources/faqs/default.aspx?faq_id=1 Another "ADO.NET FAQ":http://www.able-consulting.com/dotnet/adonet/adonet_faq.htm "A decent introduction to ADO.NET?":http://visualbasic.about.com/library/weekly/aa041203d.htm Code Project strikes again with an article on "Using ADO.NET in a managed C++ application":http://www.codeproject.com/managedcpp/adodemo.asp. I must admitm though, that I'm looking for the same thing for an unmanaged C++ application hosting the CLR. And again, "ADO.NET – Get the notification events from Managed Providers":http://www.codeproject.com/dotnet/usingado3.asp Got any other good ADO.NET links?

Visual Studio Debugging Tips

Min Kwan Park put together a nice document on how to troubleshoot your VS7 debug sessions. Over the years, I've collected a few links that have been useful to me. Here are a few: * "Making the Visual C++ 6.0 debugger not 'step in' ":http://www.codeguru.com/Cpp/V-S/devstudio_macros/debugging/article.php/c3207 * "Remote Debugging With Visual C++ 6.0":http://www.differentpla.net/node/view/67 * "Microsoft Visual C++ Tips and Tricks":http://www.highprogrammer.com/alan/windev/visualstudio.html (this site has incredible information) * "Debugging in Visual Studio - getting started.":http://visualcpp.net/index.php?qID=25 * The Code project just posted this nice link on "Tips and Tricks for the Visual Studio .NET IDE":http://www.codeproject.com/useritems/VSnetIDETipsAndTricks.asp * I just found this link, and I hope to watch it soon. Software Legend Juval Lowy demonstrates his "Tips and Tricks for Visual Studio .NET and C#":http://msdn.microsoft.com/msdntv/episode.aspx?xml=episodes/en/20030701VSNETJL/manifest.xml * "Tips and Tricks Using Managed Code (Managed DirectX)":http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/directx9_m/directx/tipstricks.asp Got any of your own links?

March 10, 2004

DeepSize

Sometime last summer, I saw a cool article on the Code Project called "Explorer column handler shell extension in C#":http://www.codeproject.com/csharp/columnhandler.asp.

While I had some desire to see MD5 checksums of certain production files, I was more excited by the idea this article gave me. What if I modified the code to provide a "deep size" column in Explorer that would show the total size of all files in a directory? To me, this is a very useful thing.

So, I went and wrote the thing and it officially became my first C# program... or first C# Class, since I just modified the existing assembly.

I have a pre-built version here, along with my source (which is a modified version of the Code Project original).

Download file

I didn't find any kind of copyright in the source files, so I didn't include anything in mine. I hope I didn't miss anything there and I offer apologies in advance to the original author if I did.

To install it, I like to copy if to my Global Assembly Cache. Just execute:

gacutil /i DeepSize.dll

Then, you need to register the assembly as a COM server via:

RegAsm.exe DeepSize.dll (register the version in your GAC).

You may need to restart explorer by logging out than back in. Once you do, right-click on any explorer file ListView (aside from My Computer and My Network Places) and select "More...". "DeepSize" and "MD5 Hash" should be new choices.

I exclude certain directories from consideration, since it's well known that they are big. These are directories "ending" in:

* "PROGRAM FILES"

* "DOCUMENTS AND SETTINGS"

* "WINDOWS"

* "WIN98"

* "WINME"

* "I386"

* "WINNT"

When I included those, performance suffered and the other directories I was interested in had to wait until those monsters were calculated.

Feedback welcome. If you want the rest of the Visual Studio files, let me know and I'll provide them.

Enjoy!

Copy and Paste Files from the Command Line

I'm one of those programmers that tries to use the keyboard and mouse equally. I do this mainly because I hate to clutter my desktop, Quick Launch bar and Start menu with a zillion icons. I tend to write a lot of batch files. I have a directory called C:\utils, which has interesting binaries I've collected over the years. I also have a C:\utils\bat directory with abotu 150 batch files I've written over the years. Some of the common batch files are: *n* —Starts my default text editor *eb* —edits a batch file in C:\utils\bat, without having to specify the path *set_env* —Using Python and Win32all, I can set an environment variable permanently, not just in my shell *desktop* —Changes to my desktop folder, at the command prompt: C:\Documents and Settings\ncody\desktop. I'm also a big fan of Cygwin, since I need to ssh and scp files to my web server almost daily. To copy files from my desktop to Cygwin, I generally type "explorer ." while in my Cygwin home directory and drag the file from my desktop to the new explorer instance. I close explorer and now have the file available. I also have a bunch of batch files that switch me to important directories. All of these batch files use the most excellent *pushd* and *popd* commands, so I can move from directory to directory and always have the ability to go back up my current directory stack. One welcome addition to this workflow is a new utility, written in C# that allows you to copy files from one directory into another. You can read about it here. All you need to do is say: ezclip copy myfile.txt cd some_other_directory ezclip paste Done. I've already been using this tons, which is a lot easier than navigating my complex directory tree in explorer. UPDATE: I noticed that wildcards, directories, and sub-directory traversal are not supported. It seems to me that this wouldn't be hard to implement after looking at the source. UPDATE #2: With a minor tweak, I made a minor improvement to the code. Unfortunately, you can no longer use the multi-file syntax using my method (file1 file2 file3), but you can use wildcards. To do this, I simply changed this like: --
string[] files = new string[args.Length - 1];
Array.Copy(args, 1, files, 0, files.Length);
-- To this: --
string[] files = Directory.GetFiles(@".", args[1]);
-- To make this code production quality, of course, I shouldn't have to specify "." as the current directory. If args[1] specifies a directory, I should extract it and use that. Also, it wouldn't be hard to accept multiple files as Gus Perez did originally, allowing each argument to be a single file or a filespec (myfile.txt *.log *.xml)

March 9, 2004

Improving your memory

Wired News just ran an fascinating article on the recent "7th Annual U.S. Memory Championships":http://www.usamemoriad.com. Hmmm. This was an interesting read, made better by the light humor of the author, Michele Delio. My favorite part is where they say that anyone can do this stuff! All you need is practice! They recommend (among other things) doing crossword puzzles, learning another language, and taking a different route to work. They even say you should do daily chores with your non-dominant hand. That's an interesting suggestion.

Waiting for GaXAML

(No, not a blog entry about "Samuel Beckett":http://samuel-beckett.net/Waiting_for_Godot_Part1.html) Rather, Chris Sells pointed out that Chris Anderson pointed out that Mike Harsh tells us about an interesting WinForms markup written by Joe Stegman. Using Windows Forms Markup Language (WFML), you can use markup today! That little tidbit opened up my browser to the entire windowsforms.net. What a kick ass site that is.

March 4, 2004

Saturn

Many of you may not know, but NASA sent a spacecraft to Saturn called "Cassini":http://saturn.jpl.nasa.gov/index.cfm in 1997. There was a lot of "controversy":http://www.motherjones.com/news/feature/1997/09/cassini.html at that time since the spacecraft packs a bunch of plutonium for fuel and NASA decided to use the Earth's gravity to slingshot the baby toward Saturn. I used to track the progress of the spaceship using NASA's "Solar System Simulator":http://space.jpl.nasa.gov/ (try it!). However, since the flight took like 6 years, I lost interest. Anyway, Cassini is orbiting Saturn now and is taking some amazing shots. Here's one, with credit to the "JPL":http://photojournal.jpl.nasa.gov/catalog/PIA05380. Real Saturn Wow, that recent picture looks just like this one generated (for today) by the Solar System Generator... neat! Fake Saturn

More on .NET Code Access Security

I've been doing a lot of reading on .NET Code Access Security lately, which is the new security security model for .NET. CAS represents a stark contrast to traditional Windows permissions, which are based on the permissions of the user. Most developers log into their machines as Administrators since that's the only way to get anything done! For instance, it's the only way that you can install software, the only way you can adjust system wide settings and, most unfortunately, the only way most Windows programs work properly! My kids have their own computer, an older machine I've been keeping healthy over the years. I'll be damned if I can find a single kid's game that works properly out of the box while running as a non-priveleged user. If you are a skilled Windows user, you may be aware that you can run a program as an Administrator even when your regular user account is non-privileged. The steps are documented in the "online documentation for Windows XP Professional":http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/windows_security_runas.mspx. Personally, I don't have the guts to try running my day as a non-privileged user. I tried it a few times and I nearly pulled out my hair. Despite the limitations imposed on non-privileged users, they still have full access to their profile and they can write to most areas of their hard drive (excluding areas owned by other users and the system areas.) Thus, under the Windows security model, any program that you launch as a non-privileged user can still do things that you or your system administrator may not want it to do. A good example of a situation where a program should have a subset of a user's permissions is a financial application that displays sensitive information to the user. The administrators may want to prevent the application from printing, writing to files, allowing itself to be screen captured, use the clipboard, etc. Obviously a programmer can omit these features, but will the administrator believe them? Probably, but that's another problem entirely ;-) Microsoft seems to have nailed a far better approach to this problem. Under .NET CAS, the administrator can define rules of use on the enterprise level, the machine level, or the user level. The rules are extensive! Here is a taste on the types of permissions you can grant or deny to an application: * Writing to a file, a directory, or a network share * Opening top-level windows, dialogs * Access to domain resources * Ability to establish network connections * Web access * Reflection * Printing * Use of the clipboard * and much more! Applications are defined by membership in something called a code group. You can define a code group in a few ways. One way is to specify a directory, the presence of a hash, the presence of a strong name, etc. When an application starts, the security system looks at the zone the application was launched from, directory the application started in, the presence of a hash, the presence of a strong name, etc. The security system gather's all of this "evidence" and determines the appropriate code group for the application. A set of permissions (called, you guessed it, a permission set) is associated with each code group. The permission set thus defines everything that the application is allowed to do. If you have the .NET Framework installed, you can launch the .NET Configuration Utility (Control Panel | Administrative Tools | Microsoft .NET Framework 1.x Configuration) and look at the different types of evidence available. You can also look at the rich set of permissions that can be used. The Code Project has a good article titled "Code Access Security from the perspective of the Developer and Administrator":http://www.codeproject.com/dotnet/casdevadmhtml.asp This article kind of inspired this post. It explains what Code Access Security is and how developers and administrators should look at CAS. I recommend that read in addition to the excellent Webcast by software legend Juval Löwy (as "previously noted":http://www.primordia.com/blog/archives/000034.html in this blog). Finally, I watched an "MSDN TV episode on CAS":http://msdn.microsoft.com/msdntv/episode.aspx?xml=episodes/en/20040212securityml/manifest.xml starring Matt Lyons.

Blogging for memory

Update: Category changed

Most people that know me know that my memory sucks ass. I'm finding my blog a useful way to jot down links and ideas that I'd like to revisit at some point. This represents a synergy between keeping a tab on a topic and letting my readers know about what I'm interested in. Granted, I think I have about two readers, but I won't be deterred! That's why I just posted my link on "how to submit an article to MSDN":http://www.primordia.com/blog/archives/000038.html. I may want to do that someday. "Eric Gunnerson":http://blogs.msdn.com/ericgu/ (A C# blogger) just posted a link to a Warthog game on Bungie's Web site. In case you don't realize, "Bungie":http://www.bungie.com is the Game developer for "Halo":http://halo.bungie.net/, best game EVER. The link is dead, so I'll have to try it in a few days. How convenient the link is now on my blog.

 

Want to write for MSDN?

"Duncan Mackenzie":http://weblogs.asp.net/duncanma/ dug up inspiration in the form of guidelines for submitting articles for the "Microsoft Developer Network (MSDN)":http://msdn.microsoft.com/aboutmsdn/submit.asp and for "MSDN Magazine":http://msdn.microsoft.com/msdnmag/submit.aspx. I think most developers fancy the idea of getting published in some way and I'm no different. I'd be thrilled if I was able to meet the challenge once my current work project winds down. I have so many ideas it's hard to decide where to focus.

Minor site enhancements

I recently upgraded to "Movable Type 2.661":http://www.movabletype.org. The installation was a snap. I even set up a blog for my brother "Tom":http://www.whodunit.com/blog. Although we share the same "Dreamhost":http://www.dreamhost.com web server, his blog is running off a completely different Movable Type installation. I added the "permalink":http://en.wikipedia.org/wiki/Weblog to the header for each entry, so it's a cinch to see the archive page which is a nice full layout with full comments. To do this, I simply edited my Main Index template. I changed this:
  

<$MTEntryTitle$>

to this
  
  

<$MTEntryTitle$>

I also added some accessibility features, such as language (English) as recommended by this "Dive Into Accessibility":http://diveintoaccessibility.org/ interesting online book.

March 3, 2004

Image Test #2

I'm testing the file/image upload feature. DSC00033.JPG

.NET Code Access Security

I just got through Juval Löwy's most excellent WebCast on .NET Code Access Security. What can I say, it's enlightening, it's profound, it's a WebCast that everyone interested in .NET should tune into. The WebCast is long, about 90 minutes, and I had to listen to it in two sessions. I have a lot of notes that I plan on posting here. The great thing about the presentation is that it didn't merely go through the motions, it was more than a drag through the CAS API. It was a comprehensive guide to what CAS is and how it can be used. Juval gave some insightful examples that just made it all clear.

March 2, 2004

Robert Scoble on Cloud Nine

I read the Scobleizer every day and I wince every time he makes it clear that he spends a third of his day writing blogs, the next third reading them, and the remaining third hitting google a technorati to see if his status changed. It all makes me kind of ill, but I kind of ignore it since he's such a good source of news. Then, yesterday, he used his fame in an attempt to get a new Motorola MPx cell phone. That's seems so wrong to me. Unsubscribed.

March 1, 2004

Image Test

Movable type has a cool image upload feature, which I didn't know was so full featured. Click on this photo: