September 2003 Entries
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!
Looks like the
FeedValidator people have finally fixed their tool...my feed now validates:

I believe this should apply to any .TEXT users.
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...
Sorry...don't have much to post about right now...I'll get back to it soon enough.
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!
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?
I Just thought
this was a great article for anyone interested in developing WinForms in C# (or indeed and .NET language)
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!)
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,,,
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...
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
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...?!
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...
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...
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???
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.
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?
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
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!
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...:-(
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
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)...
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...
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!
@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...
Free XML editor...
http://www.xmlcooktop.com/
UPDATE: Sorry, forgot to mention where I found it...via
John Mandia's blog
On Dave Winer's Test Site...fantastic picture of
Hurricane Isabel - now my new wallpaper :)
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...
Further to my earlier bit on Threading,
this site has some brilliant (fairly advanced) examples on various things...including a
custom Thread Pool
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...
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
The following is via Roy Osherove's blog..
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?
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!
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.
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!
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:
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.
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.
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...
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...
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!)
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...
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...
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!
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...
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!
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.
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!
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!)
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...
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!
Looking at the
Salam Pax blog, sound these stunning pictures from one of the
links
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!

In the interests of full disclosure, this includes my new associates ID - mainly used to accrue back some of my own spending on books!
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...)
Hmm...have to look at some way of differentiating pasted cotent, the previous entry wasa from
here. It's not by me!
Pretty clever little function...can't think of a use for it right now :-)
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.
Just a quick link to an excellent icon resource site...
FOOOD's Icons. THe photoshop templates are incredibly handy.
Realy for my own memory,
Thomas Johansen's site with the marvellous
Aylar Highlight, a source code highlighter
Noticed this article on making ASP.NET output valid XHTML...looks pretty complicated - maybe the next version will have better support ;-)
Loved this

found
here
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!
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...
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!)
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
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???
Just spent almost an hour