mostlylucid

September 2003 Entries

Creative Spam

It never ceases to amaze me the lengths to which Spammers go to get you to read their dumb emails...
Some however are just deeply dumb and to be gullible enough to read them would put you into a category of stupidity which would automatically (or should) preclude you from owning a credit card - I mean "Government FREE Cash Program" who would read that!
To be honest Spam doesn't bother me much, I get around 100 spams a day, cause by the fact that I have a VERY old email forwarding address and I used it a fair bit in Usenet back in the day - this appears to have been harvested relentlessly by every spammer on the planet.
Not a problem, I just use SpamNet - which is by far the finest spam blocker I've yet come across...catches every one of the little buggers...I really can't forsee any way to prevent spamming (I doubt the law would have that much impact as it would need to apply to EVERY country to really stop spamming...).
Ah well, just off to write a bulk mailing program in C# - yes, really - don't worry though, it's an opt-in list only!

Woohoo! Valid Feed!

Looks like the FeedValidator people have finally fixed their tool...my feed now validates:

I believe this should apply to any .TEXT users.

Pretty useful C# Projects

Just discovered this, a collection of links to amazingly interesting C# projects.
I love the idea of SourceFTP which essentially gives you 'SourceSafe - like' access to FTP - so you can share stuff stored on an FTP server with a form of versioning (and looking at the source which is provided gives me some very cool ideas :-))
Also, Bindows looks very interesting - rich client side web app stuff...I'm going to be having a play with the IISLog sample pretty soon...well maybe...

Back Soon!

Sorry...don't have much to post about right now...I'll get back to it soon enough.

This is just CRAZY small...

I love my little Mini-ITX server (you're using it right now :-)) but this is just insane...a Nano-ITX board!
Wonder how long before someone comes up with a consumer version of an array of these things...could sort out the heat problems of bigger chips...just lots and lots of smaller ones. A user level supercomputer...finally!

Favourite Whisky

My interests include .NET, Sci-Fi, trashy TV and Whisky...(surprisingly I'm single - go figure! :-)). Anyway, thought I'd give all non Scots (yes, Scots...Scotch is a whisky...not a nationality) a recommendation on what Scotches are worth checking out...

The Macallan - a gorgeous, smooth single malt Scotch, ideal for people who think they don't like Scotch. Probably the most drinkable whisky around; it also improves with age which can be a bit touch-and-go with some malts - one of the best is the 10 year old...

Johnny Walker Black Label -  a cask blend, though not a malt, it is one of the best blends around...nice, smooth and drinkable. Cask Blends ONLY contain malts...blends contain mostly grain whisky (nasty sutff)

Lagavulin - very peaty, warming malt.

Any suggestions from others?

Excellent post by Roland Weigelt on Visual Inheritence in WinForms

I Just thought this was a great article for anyone interested in developing WinForms in C# (or indeed and .NET language)

Quite possibly the perfect office...

If you have an office like this in Scotland - I WILL come and work for you...I've said it before, but would you really want to bet against Joel Spolsky for anything - I mean, this guy has some of the best ideas on the planet...Microsoft, how did you let this guy get away???

If you have a few hours and are interested in making the best software you can, read some of the articles on his site. I haven't read a single thing on his site that I've disagreed with (I am very opinionated when it comes to this type of thing - this is a good sign!)

Missing some really interesting stuff...

Today the Design Preview of new versions of ASP.NET happens in London...but I have a prior engagement and can't go...wahhhh!!!
If anyone from the ASP.NET design team is reading this - I love travel - and the Residence Inn in Redmond is lovely ;-)
Anyway, from what I've seen of Whidbey (and I can't even talk about that!) it is looking stunning...well done...oh man, it is going to be fun getting the new stuff into production,,,

I love Amiga...

The Amiga has a special place in my heart...so, reading this news  is fantastic - you will (soonish) be able to get an Amiga ONE (kind of a 'super' amiga) in Mini-ITX form...I am SO getting one when they come out...wonder if MONO will work on it - they have a PowerPC port underway...

Futher to my earlier rant...

I wrote here complaining about the (in my opinion) pretty poor treatment of Architecture (especially) for ASP.NET. Well, here's a suggestion of a solution - I've just read the whitepapers for ALL of the starter kits - some people have mailed me to say that they have 'great' coverage of architecture...umm...no... I think it's pretty poor (verging on really poor) - in most cases the whitepapers say what they did - but not why they did it here's the basic architecture precis from the Time Tracker Starter Kit:

Data access, business logic, and user interface logic is separated into different classes.  N-tier architectures have many advantages, including:

·         There is a clean separation between the user interface, business logic, and data access layers.  This isolation promotes code re-use and makes maintaining and enhancing the code easier.  Development is also easier because there is a clear decomposition of functionality allowing developers or teams of developers to focus on different parts of the application during implementation.

·         Business rules are centralized into one component that is easy to re-use and a high-level language (like C# or Visual Basic .NET) is provided in which to develop business rules.

·         Data access code is centralized in one place making development and maintenance easier.

OK, where to start...first, this is accompanied by a basic logical structure diagram - no UML here...these  starter kits are such a valuable resource for ASP.NET developers, would it really be that difficult to explain them in some decent level of detail?

In the Architecture Center there's lots of nice detailed academic text about patterns (e.g., a lovely document about the MVC pattern) - if you're doing some form of degree on these, they're ideal. What's missing is the 'fill', take us from this theory right into an app (hey, the starter kits actually use patterns - really!).

Sorry, this is my pet peeve at the moment - and one reason I feel that .NET is not being taken seriously in the industry - Java smacks of prefessionalism, you have structured, pattern driven architectures....NET just doesn't - yet... Again..my opinion, comments welcomed!

 

UPDATE: Actually, found one really good one :-) Have a look here for a lovely article on Page Controllers in ASP.NET

Blogging in MSDN Magazine (October 2003)

How did I miss this - a whole lovely article on blogs in ASP.NET in the October 2003 edition of MSDN magazine. As usual, you can download a CHM of it here. But MSDN will you PLEASE RELEASE A MS READER VERSION - would it really be that hard...?!

 

Salam Pax speaks!

Found on the Scobleizer... Salam Pax gives an interview - streaming in WMP9 & (crappy) RealPlayer...

In case you didn't know...Salam Pax  is a blogger who writes one of the single most interestng blogs ever - he lives in Iraq, was there during the war and seems pretty independent...worth a read and a listen...

New blog (to me at least)...Roy Osherove does it again!

I find some really interesting stuff on Roy Osherove's blog (I suspect he's a bit of an internet packrat like myself :0).
Anyway, today he has a link to Brian Jackson's Blog, funny, interesting stuff - which incidentally has a great tagline to one of his posts - 'Nasty tricksey XmlSerializer bug. We hates it forever.' not sure why but I found this incredibly funny...

The most half assed, ill informed article I've ever read on .NET

http://rss.com.com/2010-7345_3-5079603.html?part=rss&tag=feed&subj=news

Gotta love this quote...
"Unlike J2EE middleware, .Net doesn't do much beyond connecting information to the Windows desktop. Companies have moved beyond merely connecting applications but now also require software that manages high-volume transactions and all kinds of customer data. They need to integrate complex business processes and centrally automate the management of IT environments. These are all areas where Microsoft continues to fall short. "
Huh...I came from a J2EE middleware environment, is this guy insane? In my experience, J2EE is MUCH harder to get to integrate successfully with 'other' systems (i.e., don't natively use JAVA) than .NET - oh, and don't get me started on trying to use J2EE with CORBA.
The High Volume argument is one which has been around for SO long and has been reported very widely - I have yet to see a comparison of .NET versus J2EE IRL - most of these are purely anecdotal and purport the '.NET garbage collection is inefficient and doesn't scale' argument - never seen proof though which is a little suspect...
The fact that he's an AS/400 guy (and has therefore almost certainly never event opened VS.NET in his life ) probably says a lot. It's not that I'm a .NET fanatic, I just detest these  types of article which have little basis in fact yet are presented as absolute gospel.

UPDATE: Eric Gunnerson commented that he believed that some of the comments I mentioned above were based on an article in PC Magazine... I think it's this one... http://www.pcmag.com/article2/0,4149,1218682,00.asp which is in itself very interesting - this comment was very telling:

"The .NET path offers fewer options in building business logic and database components. Microsoft has no official blueprint for business objects comparable to Enterprise JavaBeans (EJB), though it recommends best practices on the Web (www .microsoft.com/resources/practices). The .NET developers have to devise their own component models based on these practices, while a J2EE developer just needs to run a wizard to get EJB."

Yup, I agree, Microsoft has NOT provided great architecture resources - before there's any complaints pointing the the MS Architecture site - check out Sun's it blows it out of the water!
In J2EE you had very clear patterns which you could follow - want a web app, look at the MVC pattern - want enterprise integration, look at EJB, stateful or stateless... .NET has ASP.NET and it has the Enterprise Frameworks - what I've never felt in .NET is that these were 'joined up' - and no, I don't believe at this juncture that Whidbey will address it either.

The samples on the ASP.NET site are really interesting they're pretty lightweight web apps - where's the link to .NET Petshop or Nile? I believe this is a hangover from the ASP days when ASP developers were seen as 'Web Developers' and VB6 / VC6++ developers were the 'Application Developers' - this has carried forward to .NET where ASP.NET developers are seen as separate from the 'Enterprise' developers using Interop, Enterprise services etc...

Opinions???

Part IV of the interview with Anders Hejlisberg

Linked to the other 3, here's part 4 , very interesting stuff about Virtual methods in C# This is really interesting stuff (well, I think it is!)...here's a section on 'contracts' and virtual methods...the Java bit is SO true! Bill Venners: What do you mean by incoming and outgoing contract? Anders Hejlsberg: The incoming contract is what I use when call a method. It enables me to reason about what I am required to do before I call into the method and what has happened after the method returns. The outgoing contract is what I use when I override a method. If you look at most APIs they are actually very bad at documenting what you're supposed to do when you override a virtual method: What are the invariants before you're called? What should be true after? Which methods can you not call from your implementation? And so on. I think it is very dangerous to say that by default all methods have both incoming and outgoing aspects. It is dangerous to trust everyone to write good documentation about when to override and what the invariants are when overriding. I can demonstrate to you a very real world versioning problem, one that indeed we see now from experience with Java. Whenever they ship a new version of the Java class libraries, breakage occurs. Whenever they introduce a new method in a base class, if someone in a derived class had a method of that same name, that method is now an override—except if it has a different return type, it no longer compiles. The problem is that Java, and also C++, does not capture the intent of the programmer with respect to virtual.

Coding when tired...

Can anyone actually code productively when they're tired? My brain does not function at all well in this state and unfortunately, good coffee is a foreign concept in my workplace... THe problem with being tired is that I tend to make dumb decisions in code which is especially dangerous since I am the only architect in our company. Unfortunately due to some recent events of an endocrine nature, I'm likely to be tired for some time to come...anyone have any tips on how to code whilst being so weary?

Stupid Skript Kiddies...

Looks like 411ASP.NET (a mediocre ASP.NET information / links site which used to be really good) has been defaced by a script kiddie...as of 10am (GMT) 22/09/2003

New discovery!

Just discovered a fantastic new Web Stats package SmarterStats...freeware for single site & non-comm looks very nice, much better than Analog (and much easier to set up...)

UPDATE: Just installed it, it is written in .NET, simple to configure and has really nice reports - we have a winner!

Decent Review of .NET Perfomance versus Java and Rotor / Mono

Found here: http://www.cs.cornell.edu/vogels/Papers/CLI-sc2003-final.pdf for those who hate PDF (I am not a fan..) here's clever little Google's HTML copy...the HTML version loses the pretty graphs though...:-(

ASP code for reading RSS feeds...with associated XSLT...

Though I'd post this...basically it'll take an RSS (or other any XML) feed from an external source and transform it using a specified XSLT script (try this one for a basic RSS transformer... rssTransform.xslt) Usage is pretty simple...for example :
Response.Write(getXML("http://weblogs.asp.net/mainfeed.aspx","../xslt/rssTransform.xslt",120))
will parse the ASP.NET weblogs main feed...with a 120 second cache time
Function getXML(sourceFile,xsltFile,cacheTime) 
'On Error Resume Next
if((DateDiff("s",Application.Value(sourceFile + "_Expr"),Now())>cacheTime) Or len(Application.Value(sourceFile))=0) then
dim styleFile 
dim source, style 
styleFile = Server.MapPath(xsltFile)

Dim xmlhttp
Set xmlhttp = Server.CreateObject("MSXML2.ServerXMLHTTP.4.0")
xmlhttp.Open "GET", sourceFile, false
xmlhttp.Send

set source = Server.CreateObject("Microsoft.FreeThreadedXMLDOM")
source.async = false 
source.loadxml(xmlhttp.ResponseText) 
set style = Server.CreateObject("Microsoft.FreeThreadedXMLDOM")
style.async = false 
style.load(styleFile) 
outputHtml = source.transformNode(style) 
if(err.number = 0) then
Application.Lock
Application(sourceFile) = outputHtml
Application.Value(sourceFile + "_Expr") = now()
Application.UnLock
getXML = outputHtml
else
getXML = Application.Value(sourceFile)
end if

set source = nothing 
set style = nothing 
else
getXML = Application.Value(sourceFile)
end if
On Error Goto 0
End Function 

SQL Server 2000 Indexed Views

Though I'd point to an excellent article on Indexed Views. For those who don't know what these are, well, if you have a fairly complex database schema, you can gain a great deal of performance benefits by aggregating the output of common queries into indexed views. Unlike normal views, these are authomatically updated when the underlying data changes (normal views are pretty much just running another query when you call them). They're best suited when you perform frequent queries on relatively static underlying data (kind of a database level cache)...

Catching all errors in an ASP.NET application

Okay, I realise that probably everyone and his / her mother knows this already, but if you want to log ALL errors in an ASP.NET application, the simplest way I've found to do it is in the Global.asax.cs (or whatever codebehind)...simply do this:
protected void Application_OnError(object sender, EventArgs e)
		{
			Exception ex = Server.GetLastError();
			if ( ex is HttpException )
			{
				if (((HttpException)ex).GetHttpCode() == 404)
					return;
			}     
			ExceptionManager.Publish(ex);

		}
In this instance, ExceptionManager is the Microsoft Exception Manager application block...you can (and really should) use this in conjunction with CustomError. The reason I do it here is that I prefer to make my error page flat html...just in case something really bad has happened and an active error page would cause an error itself :-) Just thought, I'll post up some code which emails you errors using the EMAB...

Odd obsession...

I have to admit a slight obsession with the concept of Zero Point Energy...now I am the first to admit that what eveidence there has been so far has been mostly hokum but what if...clean, free energy forever that would be pretty useful. For one of the current 'front runners' have a look here... http://jnaudin.free.fr/meg/megv21.htm looks a pretty heath-robinson contraption but, you never know!

Wow....NET appears to be pretty secure!

@Stake have just released a study looking at the relative security of .NET vs. WebSphere (WebSphere is probably the most secure App Server for J2EE). I have to say, I trust @Stake more than most, having have a good deal of involvement them in years gone by...

Another 'more to remind myself' post...

Free XML editor...http://www.xmlcooktop.com/ UPDATE: Sorry, forgot to mention where I found it...via John Mandia's blog

Remarkable picture of Hurricane Isabel

On Dave Winer's Test Site...fantastic picture of Hurricane Isabel - now my new wallpaper :)

PDC...won't be there...

I was asked if I was going to the PDC this year...I would love nothing more than to go...but with a $2000 registration fee, and close to 3500 for travel and accommodation...let's just say I won't be going. Would it really be so hard to hold one of these in Europe? Most employers will cough up for the registration, but the travel to LA is a bit much. I guess it just means that us European developers lose out again...

ANother one...fantastic examples!

Further to my earlier bit on Threading, this site has some brilliant (fairly advanced) examples on various things...including a custom Thread Pool

XSLT editor for VS.NET

Now this is very cool...why VS.NET doesn't have this built in is beyond me...Visual XSLT pretty much all you need for XSLT development within Visual Studio .NET...costs $295 for commercial users but they have an educational license (which I think is always a good idea!) see here for pricing...

Oldie but goodie...threads in ASP.NET

I have recently been having a look at threading in ASP.NET, found this excellent article from June 2003 which is a pretty good introduction to the whole thorny issue. Also found a useful example from the 'always worth a look' C# Corner...here

This is very interesting - maybe bad speling doesn't matter!

The following is via Roy Osherove's blog..

Interesting research

aoccdrnig to a rscheearch at an Elingsh uinervtisy, it deosn't mttaer in waht oredr the ltteers in a wrod are, the olny iprmoetnt tihng is taht frist and lsat ltteer is at the rghit pclae. The rset can be a toatl mses and you can sitll raed it wouthit porbelm. Tihs is bcuseae we do not raed ervey lteter by it slef but the wrod as a wlohe.

UPDATE: Oh cool, this is one of those cool little viral things on the net...wonder who started it?

New stuff for the site...

Though I'd provide an update of stuff I'm working on for this site; which will be finished eventually finding time to do it is pretty tricky. Anyway, I've been delving deep into the core of .TEXT and working out how things fit together. Plan is to develop a Search component using Full-Text search which returns results as a DayCollection the same as the current .TEXT. One plan for this is to have an 'improptu' categories type function, where entering a search word with a querystring will provide a page similar to the way categories works already.

I'm also working on a few toys, including an Amazon web service intergration doohikey (maybe with auto-detection of country, but I've yet to decide on the best way to do that...), an RSS reader so I can include my favourite blog sites in a right hand side bar. Well, I'm on holiday tomorrow, so hopefully I can make some progress with these then - stay tuned!

More on Patterns

Found this on the Furrygoat site, this is a truly excellent site on the GoF design patterns (you'll see this alot, it refers to this book - the original book on design patterns). If you're creating applications in any language, I really recommend you get at least a passing knowledge of what patterns are and how they can be used.

Best article I've found on the Singleton Pattern in C#

Have a read at this article on implementing the SIngleton pattern in C#. No idea what I'm on about? Well, the Singleton Pattern isn't a knitting method for the lonely, it's one of the most important techniques for ensuring that two people - on the web its' mostly separate people - for instamce, don't try to read and write a resource at the same time. A Singleton is defined as an object which is allowed only a single instance within an application context - so all uses of the functionality provided by that object are handled by this single instance.

As an example, say you have a text file which contains some XML data and is used as a database of sorts...well, you obviously want to avoid someone writing to the file at the same time as you're trying to read it - at best you'll get locking problems. at worst you could corrupt the data entirely. The Singleton pattern would help in this situation by providing a single gateway to access that file - so all operations on that file would become concurrent rather than simultaneous, avoiding the read / write scenario described previously.

Another classic ASP.NET example is in the management of cached items - where you can be unfortunate enough to have 2 threads trying to update a cache at the same time; there is a solution to this using thread locking but a Singleton is much purer architecturally and easier to scale at a later date should you need to provide this interface to more items. Anyway, if you're just starting out with patterns, have a look at the article above or, one of the best books on patterns in .NET applications (thus far, theres lots more just released), have a look at Patterns Of Enterprise Architecture - I'm still waiting for Design Patterns for Web Applications using ASP.NET - who wants to write this?
 But be warned, be careful where you choose to use a Singleton - it can affect performance and bottlenecks if not used carefully. With much power comes much responsibility!

Another Critical Security alert...patch those systems now!

http://www.microsoft.com/technet/treeview/default.asp?url=/technet/security/bulletin/MS03-039.asp From Patrick Steele, this looks like a pretty serious problem, patch now to avoid another Blaster...

UPDATE: Thought I'd include the technical details...this could be even more serious than the flaw which allowed Blaster to propogate...hopefully everyone turning on their Internet Connection Firewall / getting a hardware firewall after blaster will prevent spreading (I still see incoming Blaster / Nachi attempts on 135 every couple of minutes...)

Technical description:

The fix provided by this patch supersedes the one included in Microsoft Security Bulletin MS03-026.

Remote Procedure Call (RPC) is a protocol used by the Windows operating system. RPC provides an inter-process communication mechanism that allows a program running on one computer to seamlessly access services on another computer. The protocol itself is derived from the Open Software Foundation (OSF) RPC protocol, but with the addition of some Microsoft specific extensions.

There are three identified vulnerabilities in the part of RPCSS Service that deals with RPC messages for DCOM activation— two that could allow arbitrary code execution and one that could result in a denial of service. The flaws result from incorrect handling of malformed messages. These particular vulnerabilities affect the Distributed Component Object Model (DCOM) interface within the RPCSS Service. This interface handles DCOM object activation requests that are sent from one machine to another.

An attacker who successfully exploited these vulnerabilities could be able to run code with Local System privileges on an affected system, or could cause the RPCSS Service to fail. The attacker could then be able to take any action on the system, including installing programs, viewing, changing or deleting data, or creating new accounts with full privileges.

To exploit these vulnerabilities, an attacker could create a program to send a malformed RPC message to a vulnerable system targeting the RPCSS Service.

Microsoft has released a tool that can be used to scan a network for the presence of systems which have not had the MS03-039 patch installed. More details on this tool are available in Microsoft Knowledge Base article 827363. This tool supersedes the one provided in Microsoft Knowledge Base article 826369. If the tool provided in Microsoft Knowledge Base Article 826369 is used against a system which has installed the security patch provided with this bulletin, the superseded tool will incorrectly report that the system is missing the patch provided in MS03-026. Microsoft encourages customers to run the latest version of the tool available in Microsoft Knowledge Base article 827363 to determine if their systems are patched.

Mitigating factors:

  • Firewall best practices and standard default firewall configurations can help protect networks from remote attacks originating outside of the enterprise perimeter. Best practices recommend blocking all ports that are not actually being used. For this reason, most systems attached to the Internet should have a minimal number of the affected ports exposed.

    For more information about the ports used by RPC, visit the following Microsoft Web site: http://www.microsoft.com/technet/prodtechnol/windows2000serv/reskit/tcpip/part4/tcpappc.asp

Severity Rating:

Windows NT 4.0 Server Windows NT 4.0, Terminal Server Edition Windows 2000 Windows XP Windows Server 2003
Buffer Overrun Vulnerabilities Critical Critical Critical Critical Critical
Denial of Service Vulnerability None None Important None None
Aggregate Severity of all Vulnerabilities Critical Critical Critical Critical Critical
The above assessment is based on the types of systems affected by the vulnerability, their typical deployment patterns, and the effect that exploiting the vulnerability would have on them.

Vulnerability identifier:
Buffer Overrun: CAN-2003-0715

Buffer Overrun: CAN-2003-0528

Denial of Service: CAN-2003-0605

Tested Versions:
Microsoft tested Windows Millennium Edition, Windows NT 4.0 Server, Windows NT 4.0 Terminal Services Edition, Windows 2000, Windows XP and Windows Server 2003 to assess whether they are affected by this vulnerability. Previous versions are no longer supported, and may or may not be affected by these vulnerabilities.

Possibly the ultimate developer tools list

Reproduced here for your delictation...from here

Roy Osherove suggested that I post a list of the contents of my C:/UTILS folder.  Everyone collects utilities, and most folks have a list of a few that they feel are indispensable.  Here's mine.  Each has a distinct purpose, and I probably touch each at least a few times a week.  For me, util means utilitarian and it means don't clutter my tray.  If it saves me time, and seamlessly integrates with my life, it's the bomb.

Here are most of the contents of my C:/UTILS folder. These are all well loved and used.  I wouldn't recommend them if I didn't use them constantly. Perhaps Roy didn't realize what he was asking for.

  • APIViewer 2003 -  A database and browser of the Win32API, similar to the old win32api.txt file that was distributed with VB6. Includes 6500 function declarations and 55000 constants.
  • Application Profiler - A great GotDotNet sample, a tool for visualizing and analyzing allocations on the GC heap.  Has a GREAT graphical view
  • Anakrino - The original .NET decompiler.
  • Denis Bauer's ASP.NET Version Switcher - The ASP.NET Version Switcher is a little utility that can be used to quickly switch the .NET Framework version that the ASPX pages are compiled against. This is helpful for developers who often have to test their web applications for compatibility with different version of the .NET Framework.
  • BootDisks.com - I've downloaded and saved everything from BootDisks.com, including Win95 and Win98 boot disks and a DOS 6.22 disk.
  • DllFiles - You never know when you might need an old-ass dll.
  • Adam Nathan's CLRSPY - A diagnostic that looks at .NET 1.1 Customer Debug Probes, in-freaking-valuable.
  • Stoyan Damov's KBView - A Microsoft Knowledge Base Viewer Applet
  • Dave's Quick Search Bar - The best thing to happen to the Windows interface since the Command Prompt.  Totally configurable, and less invasive than the Google Search Bar.
  • PowerMenu - Great little hook that adds item to the System Menu that let you change the Transparency or Priority of the current window.
  • ProxyChanger (ja-JP) - A convenient little util if you need to change between proxies at various locations.
  • Lutz's Reflector (and all his other tools)  - Now the easiest .NET object browser, decompiler (to C# as well!), and includes a great member search feature.
  • RoboCopy - When COPY and XCOPY just won't cut it, try the "Robust Copy"
  • Aaron Skonnard's Xml Utilities - Includes command line .NET utils to check for wellformedness, validity, and perform xslt transforms.  These belong in your PATH!
  • Jeff Key's Snippet Compiler - Sits quietly waiting for you to test a quick snippet of code or algorithm.  No need to even start VS.NET!
  • NUnitAddIn - Makes integrating NUnit into your life easy by integrating NUnit into VS.NET!  Right Click | Test.  Glorious.
  • Virtual TI-89 [Emulator] - Sometimes CALC.EXE doesn't cut it, and I want a REAL scientific calculator for Windows, so I emulate the one I used in college.
  • Virtual CD ISO Image Mounter - This is the utility that is up on BetaPlace and is usually released to MSDN Subscribers.  It lets you mount an ISO image as a Drive Letter...nice to keep a library of CDs around on a Firewire drive.  It's not something I can distribute, but you can always use...
  • Nero 6 and ImageDrive - Nero 6 is a fantastic value and the greatest burning suite out there.  It also include ImageDrive that let's you make and mount ISO images.
  • Visibone HTML/JavaScript Reference - These guys make a great physical paper reference, but they also have a great .HTML file you can download for free that has ASCII charts and Color references.  It's a link I keep close by.
  • VisualXPath - A nice GotDotNet project that runs XPath Queries interactively and displays the results. Also useful for quick coarse timing of query speed.
  • Web Services Studio 2.0 - .NET Webservice Studio is a tool to invoke Web Services interactively. The user can provide a WSDL endpoint and it generates the .NET Proxy immediately.
  • SoapScope 2.0 - Your one stop shopping center for SOAP Debugging, WSDL Analysis and SOAP Traffic Tracing.
  • WhoAmI Administration Wallpaper Tool - If you log into a lot of boxes remotely and always wonder, where the hell is this?  The WhoAmI wallpaper tool creates custom wallpapers with all the information you'd need, like IP Address, Box Name, Disk Space, and it's totally configurable.
  • Xenu's Link Sleuth (warning, author is anti-scientology) - Xenu's Link Sleuth (TM) checks Web sites for broken links. Link verification is done on "normal" links, images, frames, plug-ins, backgrounds, local image maps, style sheets, scripts and java applets. It displays a continuously updated list of URLs which you can sort by different criteria.
  • DeveloperPlayground - Jonas Blunck's great DLL dependency tool, also hooks any process and traces calls to externals DLL
  • Alintex .NET Scripting Host - Allows you to create scripts (like like VBS files, etc) except with .NET.  Also a great prototyping tool.
  • AutoRuns - I always am suspicious that someone is running something automatically on my system.  AutoRuns (from SysInternals) checks EVERYWHERE that could be running something, the registry, win.ini (remember those?), the Startup Group, etc...
  • ActiveXplorer v4 - A file manager and analyzer for COM objects...a little higher level than OleView and easier to understand.
  • BinType2.exe - Ever want to check a VB6 COM dll to see if it's been appropriately compiled with "Retain in Memory" and "Unattended Execution" set to true for correct execution under MTS?
  • Clemen's BuildDay.exe - Great commandline util that you should put in your path.  Returns the last digit of the year and the number of the day.  Great for batch files that create daily builds, log files, etc.
  • Microsoft MDAC Component Checker - Utility to diagnose and deal with MDAC compatibility and versioning problems.
  • Billy Hollis' ChalkTalk - Great for Presentations, let's you write directly to the screen like John Madden.
  • CommandBar for Explorer - This tool extends explorer with functionality of a command prompt. Implemented as a band object completely in C#. Demonstrates COM Interop and P/Invoke, windows hooking and API interception. Finally you can run all these .Net SDK tools and ‘Hello World!’ programs without leaving explorer shell.  Definitely turns heads if you use it in a presentation.
  • Aurigma COM to .NET - Great tool that simplifies moving from COM to .NET.  Analyzes COM objects and shows how to implement that interface with .NET Interop Attributes, etc.  Also allows deployment of wrapped COM objects for use with .NET applications, without requiring COM registration!
  • Kenny Kerr's DisplayLogonServer - Small app that tells you what Logon Server serviced your domain login.  He also has a nice tool that cleans VSS files out of your project folders.
  • DxRuler - Great transparent ruler application that overlays a grid of lines over whatever you drag the window over.  Good for any kind of interface design, and a great demo of useful transparancy.
  • Marc Merrit's Event Log Monitor (EventReader) - Sits in the tray and pops up a nice XP-style baloon whenever the event log is written to.  I hate tray icons but I love balloon tooltip info, so it's a good tradeoff.
  • FeedReader - The first RSS reader I used.  I don't think it's being worked on anymore, but I keep it around because it's lightweight and I'm nostalgic.
  • Fesersoft's VS.NET XSLT 1.0 Schema - Enables Intellisense for XSLT 1.0 documents in Visual Studio.NET
  • FileMon and just about everything SysInternals has ever produced - Displays file system activity in REAL TIME.  Just who is that writing to the disk right now?
  • Filter Files with Unknown Extensions for XP - Chris Sell's provides a .REG file that let's explorer's find files with file extensions that are not known.  A real irritant with XP, fixed.
  • FindUser by Rich MacDonald - Given a Domain name and User name, tells you what systems that user is currently logged in to.  (Not sure where to find this, Rich's site is now bare)
  • fLogViewer - Great freeware highlighting log viewer for large log files.
  • XmlSpy - Just buy it.
  • GhostIt - Little tray app that lets you ghost (make transparent) any window by clicking on it.
  • HightLight for Windows - Highlight is a universal sourcecode converter for Linux and Windows, which transforms code to HTML, XHTML, RTF, LaTeX or TeX - files with syntax highlighting. (X)HTML output is formatted by CSS.
  • IECookiesView 1.5 from NirSoft - Nice clean interface to snoop contents of the cookies on your box in IE.
  • ieHttpHeaders - Internet Explorer "Explorer Bar" that shows the HTTP Headers as you browse.  Invaluable for quickie debugging.  More great stuff from Jonas Blunck.
  • COMTrace - Hooks and lets you see COM "traffic" on processes on your system.  Intercepts COM calls on any interface.  Has saved my ass 3 times.
  • JR Screen Ruler - Alternative Screen Ruler.  Literally, it's a ruler you can 'virtually' measure things with.  Nice when you have to get down to the pixel.
  • Zoomin - The original, now with Source from Brian Friesen. If you've seen me talk, you've seen ZoomIn, and hopefully it saved your eyes.
  • MSICleaner - This is a small cleaner for those irritating files that don't seem to be deleted from WINNTInstaller (should probably work on Win98, too). You may notice that loads of nonreferenced files from all your work on the installations are left behind, and this tool helps to keep your machine clean.
  • NetPing - Jeff Key's multi-threaded pinger...it continues to include new features, like right-click and launch Remote Desktop. Great for administration of small networks. I use it all the time.
  • Magical Jelly Bean KeyFinder - Misplace your Windows and Office Product Keys?  Find them with this.
  • NetworkDriveInfo - Helps you find free drive space on remote systems.
  • UrlRun plugin for Outlook by Chris Sells - Lets you right-click on messed-up and wrapped URLs in Outlook and launch the browser without manually fixing the URL.  Chris Sells says "It's pure sex."
  • Speak-n-stop - Little timer util that you start when you begin a presentation and it warns you when your speaking time is running out.
  • IE Booster 2 - A collection of extensions to Internet Explorer like HTML Detective, Copy Meister, and Page Analyzer.
  • YATT by Simon Fell - Yet Another Trace Tool, requires WinPCAP, when you just need to sniff some packets.
  • PPXML - Command-Line XML Pretty Printer
  • ProxyTrace - Often better and less trouble than the Soap Toolkit's SOAPTrace.
  • PSTools from SysInternals - All the command-line tools that Windows forgot...kill, loggedon, remote exec, shutdown, getsid, etc.
  • QuickCode.NET - Lets you turn short phrases in Visual Studio.NET like "prop int test" into a complete property getter and setter with xml documentation, etc.  Configurable and the snippets are shareable.
  • Eric Gunnerson's Regular Expression Workbench - Nice .NET interactive Regular Expression builder.
  • Expresso is a new free tool for working with regular expressions in .NET.
  • RegexDesigner.NET from Chris Sells
  • The Regular Expression builder inside of SharpDevelop (which is worth the download just to read the SharpDevelop code!)
  • Reggie - Not a regular expression tool, not it's a BETTER RegSvr32.exe from Shawn Van Ness.  It provides better error handling and messages.  It doesn't suck.
  • SCCSwitch - Harry Pierson's ruthlessly competent Source Control Provider switcher for VS.NET.  Great if you are using Vault, VSS and CVS like me.
  • Who's Locking? - WhosLocking.exe lets you know what application is locking that DLL you're trying to delete!
  • TrueName - Right click a file in Explorer and find out it's TRUENAME (Remember the Truename.exe?)  The 8.3 name of My Documents might be C:DOCUME~1SHANSELMMYDOCU~1.
  • Sid2User - CommandLine Util to take a SID and get a Real Name to, for example, get the local name of the "Everyone" user.
  • SummerProperties - a Shell Extension that adds a Tab to File Properties that calculates the file's checksum.
  • TamperIE - Let's you intercept and tamper with Form Posts from within IE...
  • Zoltan's TaskManagerEx - Extends the existing TaskManager with a new menu and CPU Alerts, colors Services, modules in use, etc.
  • TextView 5.0 - Freeware Text Viewer that lets you run through many directories with many files, much like explorer, except everything is one click.
  • VisiCalc (vc.exe) - Because I just like having a copy of VisiCalc in my utils folder.  I use it occasionally.
  • Fritz Onion's ViewStateDecoder - Simple util that gives you more insight into what's hidden inside of ASP.NET's ViewState (hidden form field)
  • DevelopMentor's Tools Page - Everything here is golden.
  • RealVNC - When RemoteDesktop is a hassle and PCAnywhere is lame...VNC stands for Virtual Network Computing. It is remote control software which allows you to view and interact with one computer (the "server") using a simple program (the "viewer") on another computer anywhere on the Internet.
  • VS.NET Command Prompt Here - INF files to create Right-Click menus for "Visual Studio.NET 2003 Command Prompt here."  I use this dozens of times a day.  I should probably just keep the window open, eh?
  • WHICH - It's which and it's back.  Wondering WHICH copy of that .exe is being run first in the path? Run "which calc.exe"
  • WhiteBoard Photo - Has to be seen to be believed. Takes a skewed low-contrast, bad photo of a Whiteboard and automatically corrects it and offers up a clean white sheet of paper with a color corrected and keystoned photo of your whiteboard.  Check out the demo.
  • URL Bandit - Monitors the clipboard and saves all URLs that go by in the click-stream.  If you copy a 1 meg file to the clipboard, URL Bandit can find, for example, all 200 URLS within it.  Yum.

A new project (yes, another one!)

I wrote on Brian Desmond's blog about how good a C# (open source of course!) statistics system would be...this got me thinking - it wouldn't be that hard to write one based on an HttpHandler. I don't really want to log accesses to graphics etc...and if I did, I can just 'wildcard map' to the aspnet filter... A nice simple Asynchronous write to a Sql Server DB (avoiding the overhead of parsing log files) should do the job...hmm...interesting! Oh,and of course there's lote of free components for doing charts in .NET - this suddenly looks very possible :-)

UPDATE: Of course my post times are also wrong...hmm...

Interviewing guide from Joel On Software

I love the articles which Joel Spolsky writes, I already linked in an earlier post to an interview he did about social software and forums in particular (I'll dig out the link tomorrow - and the search function is almost ready :-)). Found a link via Scoble and Paul Vick about interviewing techniques "The Guerilla Guide to Interviewing" is pretty interesting and provides some useful advice on hiring. I have to admit to being the worst person at hiring who has ever lived - ironic considering that I trained as a clinical psychologist...I find it really tricky to adequately assess skills, the tests I've put together in the past have been umm...less than useful. Other problem is that one can't really be made public, as soon as it is, it becomes useless... I have considered using BrainBench tests to assess skills how do other people do this? I've been through the Microsoft interview process, and I really didn't feel it was a good assessment - I did pretty well, and got through the interviews, just the logic puzzles were mostly poor 'math geek' types which I have never found either interesting or easy...

Part 3 of the interview with Anders Hejlsberg

I linked to the other two...might as well think to this one. It is another really interesting article and provides further insight into the reasons for some of the decisions taken in the design of C# by a guy who is probably the finest language designer on the planet...(I still love Delphi, which he also designed!)

Interesting little thing about AWStats from Brian Desmond

I currently use a batch job with analog for the stats for this site, but it isn't perfect (I like to see a list of visitors in chronological order for instance, which analog doesn't provide...). Brian Desmond has published a handy little article on the set up of AWStats on a 2003 server...very interesting - will be trying this tonight...

OK, I'm going to leave computers alone and take up calligraphy or something....

Now my main computer has gone odd...connecting up a telephone line has caused Windows XP to require reactivation. Microsofts' product activation doesn't let me get straight through to a human, so I have to go through entering a long number in the full knowledge that I'll have to talk to a person in the end anyway! Ho hum, just having a 'gremlins' weekend I guess... RIght gotta go to bed...

Hmm...spoke too soon...

The saga continues, I can recieve mail OK, but I can't send it from my server; now, it works from the smtp local server on my main machine so I don't think it's a Firewall thing - I'm very confused! So if anyone has any idea why,please let me know!

Problems with my mostlylucid.co.uk email

Anyone trying to send me an email on this address, please use scott@mostlylucid.net or trak@psynet.net instead until further notice (stupid SMTP server is throwing random DNS errors...preparing to abandon the Win2003 mail functions and installing Mercury MTA  instead - which is incidentally,awesome, reliable and free!)

UPDATE:- Instaled Mercury, seems to be good now...

Windows Server 2003 Bug in the SMTP administration tool

This one drove me nuts for a while, I have an smtp server running on my server, but occasionally, the SMTP administration snapin would disappear for no particular reason. This is needless to say VERY annoying - as there's not other effective way to administer SMTP and the snapin doesn't appear in the normal list. Well, forget where I found the solution but here's the fix - just run this command - regsvr32 c:\windows\system32\inetsrv\smtpsnap.dll and you'll magically see it's back!

The single biggest ASP.NET usability problem

That got your attention - the biggest usability problem in my opinion is the horrible single form you're usually forced to deal with - I know Paul Wilson has a multiple form control for sale, and it is really cool but there is an easier way for most people. To see an example of what I mean, have a look at the ASP.NET site, enter a search term then hit 'enter' - nothing happens! Now, this is only a pain because its' not the expected behaviour - see Steve Krugs' excellent book on web usability, Don't Make Me Think for more on this type of issue... There is a solution however, Andy Smith - all round server control genius - has a DefaultButtons control which simple lets you specify which button is clicked when you press enter in a textbox... You'll be surprised just how much difference this simple improvement to your ASP.NET sites can make to user experience.

Modified SQLHelper for .TEXT 0.94

I am in the middle of developing a couple of new controls to work with this site (first up is a booklist which works with the amazon.co.uk web service), as part of this I need to have data access. I was having a look at the current SQLHelper class in the DotText.SqlDataProvider namespace - it is basically the same as the Data Access Application block but has a couple of useful methods missing (e.g., the SqlParameterDataCache which I use a LOT - cuts down on typing :-)). As a result of wanting to use these methods whilst still using the same class, I have modified the SqlHelper class to be identical to the Application Blockversion, but with a few methods added to make it compatible both with .TEXT and with my exisitng controls using the basic Application Block (V2).
I'll update this post later with some more links...anyway, you can download my modified version from here.
I'll probably modify my design later to be a bit more architecturally 'pure' but I have a dilemma, as this will mean modifying the basic DAAB to be non-sealed...hmm...any opinions???
I'm also working on a simple OPML display control which works nocely with .TEXT (i.e., lets you upload an opml file which will then display on the appropriate blog...), I know of a few existing OPML parsers and have actually written one previously so hopefully it won't take too long!

Freeware virus checker for Exchange / SMTP gateway

In light of the hideous SoBig and a couple of other nasty email based virii, my company decided to implement a virus checker on our Exchange box (before we were depending on client based ones - too easy to switch off!), anyway, small company, expensive products so we wanted to try one out first - I came across the GFI product which is just about perfect for us, they are also offering a freeware version which offers a limited (but still secure) virus checking facility. Anyway, you can get it here and I really do recommend you install it on your Exchange / SMTP gateway (you've nothing to lose and a lot to gain!)

Is it wrong to lust after electronic devices - new Rio Nitrus MP3 player...

This is just the coolest thing! I currently use my iPaq with a 512mb compact flash card as a portable music player - using pocket music (I like OGG!). But this little thing looks really cool, much smaller that my current setup and it holds more (1.5gb). I also have an old Archos Jukebox (10gb), but it's pretty bulky and not great on the move...

Freeware Image Viewer - IrfanView

Everyone probably knows about this, but I still think that IrfanView is the single best image viewer ever made...oh, and its' free...and REALLY fast!

Fantastic pictures of Iraqi People

Looking at the Salam Pax blog, sound these stunning pictures from one of the links

Salam Pax book

Noticed in my local bookstore that Salam Pax has a book out. I started reading his blog pretty early on (my first blog!), he gives a unique perspective on the situation out there. Salam Pax seems relatively unbiased and gives the views of someone who actually lives there - which is a rare and precious thing in my opinion....click on the link below to visit Amazon and buy it! cover In the interests of full disclosure, this includes my new associates ID - mainly used to accrue back some of my own spending on books!








Microsoft Funded High School - anyone read Jennifer Government?

If you don't think this is a start of a trend...well...the last true marketing opportunity. I'm aware that there's a few schools in the states which are already basically sponsored by corporations but this is quite sad...Anyway, have a read of Jennifer Government by Max Barry if you want to get a feel for the way things may be going. It's basically a story of what can happen if corporations become more powerful than governments (so, your kids get names like Kate MacDonalds and John Hasbro etc...)





Umm...have to fix my formatting...

Hmm...have to look at some way of differentiating pasted cotent, the previous entry wasa from here. It's not by me!

Finding words NOT in a piece of text

Pretty clever little function...can't think of a use for it right now :-)

 

Find words NOT IN text

I'm currently writing a series of articles (that will hopefully get published {grin}) titled "Regex Reminders" that will provide dozens of code snippets that demonstrate how to perform common - and some not-so-common - operations using regex.

In the first article titled "Replacing" I came up with a script that shows how to highlight a word when NOT found within another piece of text.  The following code snippet highlights that...

Match "foo" not in ANCHORS using MatchEvaluator

[C#]
string
source = sourceTextBox.Text ;
Regex re = new Regex( @"(?'Url'<a [^>]*>.*?</a>)|(?'theWord'foo)" ) ;
// use a MatchEvaluator with a pointer to the delegate method
string result = re.Replace( source, new MatchEvaluator( FormatLinkBits ) ) ;


// delegate method
private string FormatLinkBits( Match m )
{
    if( m.Groups["theWord"].Success )
    {
        string theWord = m.Groups["theWord"].Value ;
        return "<b>" + theWord + "</b>" ;
    }
    else
        return m.Value ;
}

This would be useful for things like turning words into hyperlinks - similar to the "KeyWords" feature that ScottW recently implemented into version 0.94 of .Text.

posted on Saturday, September 06, 2003 12:03 AM

Nice Icons for XP

Just a quick link to an excellent icon resource site...FOOOD's Icons. THe photoshop templates are incredibly handy.

Hightlight source code...

Realy for my own memory, Thomas Johansen's site with the marvellous Aylar Highlight, a source code highlighter

ASP.NET XHTML

Noticed this article on making ASP.NET output valid XHTML...looks pretty complicated - maybe the next version will have better support ;-)

Tron 1965

Loved this found here

More useful tools...

Again with the useful tools! Anyway, Sam Gentile provides some info on some tools by Jonas Blunck which I haven't seen before and look very useful...anyway, must get to bed!

Bloggar Test Post

Hmm...this seems pretty cool! Now that I have all this stuff working, I just have to figure out how to intergrate some other toys...

Now on the new server

If you notice any problems, please let me know...this is now running on my own little server - and I'm not entirely sure it'll work. If you have problems, please let me know at scott@mostlylucid.net. Anyway, this is the .Text version and it's pretty good apart from a problem I had with categories...hmm... So, I'm working on a few littlebits and pieces for this site now that I have full control of it (yay!)

Compression for ASP.NET in IIS 6.0...

It is REALLY worth doing this, dialup users will love you long time for doing this! (Oh, and you'll effectively quadruple your bandwidth :-)) This is an excellent article from a techie with a cat

Anyone remember!

Driving me nuts, I'm trying to remember the name of the guy who is producing a complete CGI movie from his front room...think he's ex-ILM...any ideas???

Very useful Sourcesafe backup utility

Just spent almost an hour trying to get my SourceSafe DB backed up...then discovered this freeware utility which does it for me :-)