MyDefrag

JkDefrag will become obsolete, because MyDefrag1 is comming.

I already consider JkDefrag - by far - the best defrag tool ever. It has a simple UI, uses the minimal amount of resources needed, and does the best job in transparantly and easily restoring your harddrive into an optimal state. JkDefrag or MyDefrag is too small a name for the tool, as it does so much more for your disk than 'just' defragmenting it. JkDefrag already has the 'zones' in wich it organizes your files, but MyDefrag just goes sooo much further. This is a tool that is well worth your time if you care about the speed of your system. Especially on todays cramped Vista installations on laptops (read 5400rpm, Vista + Office + VS Team Suite) the disk is rapidly becomming the bottleneck.It is not the amount of space that is the problem, disks are large enough to hold all the files. It is where the files are placed on the disk that is causing the problem. Read my previous posts if this is not clear: The Ultimate Defragger and Windows 7.

MyDefrag has the capability to become my Ultimate Defragger. All I need is a small service that will keep track of what files I use most often and what processes I start most often (and all the files that program tends to load). With that information and generating the correct script (or inputfile for the ImportListFromFile function) I can have MyDefrag run daily and keep my disk in proper order.

Ofcourse if Microsoft took a good look at this tool, or better yet, buy its IP, and incorporate the logic and scripting engine into the Ntfs filesystem driver, so that optimization is done at write time and not as an afterthought, windows could finally manage todays' harddisks properly. Windows would be able to keep lots of its 'fresh-install' speed even after several years of use.

1 MyDefrag is currently still in early beta.

Windows 7

It has been a long while since I posted something here, so here goes, another rant.

I was reading the Engineering Windows 7 blogpost about Disk Defragmentation and I instantly got the annyoing feeling again that my favourite defragger JKDefrag new version MyDefrag will still be needed.

To me, the problem is not defragmentation of the disk, that is just treating the symptoms of an ill file system. As in the blog post they acknowledge that there is an abundance of CPU power compared to the disk speed. So why not use that CPU power to determine a better (or maybe optimal) place to physically store the file than the current - perhaps oversimplyfied - algorithm of: find free space, write file in free space routine.

If windows had the notion of something I call 'zones' on the disk, it would be able to achieve much better IO than ever before. Having these zones organized from the outer tracks (fastest) to the inner tracks (slowest). I haven't gone through thorough analysis of all possible zones, but for a Desktop system (like Windows 7) its easy to identify something like:
- a boot zone, containing all files in order of loading to optimize the boot time.
- a working documents zone, containing files that the user is working on at the moment, keeping stats like how fast/often its grows and allocating some buffer space behind the file to avoid defragmentation.
- a program files zone, containing the static (.exe, .dll, config, data) files of the most used processes. These should also be optimized like the boot zone to allow the as-fast-as-possible start-up time. This zone should not contain the parts of large packages (Visual Studio, Office, Sql Server, etc.) that are never or rarely used by the user.
- a log zone, for files being written by programs, but rarely read. Again, using statistics a free space buffer should be included to avoid 'zone' fragmentation. This zone could possibly benefit by having compression configured on it by default. Caches like IE temporary files could also reside here, but better analysis should point that out.
- a documents zone, for (large) files written once, read many times. Like the documents that are no longer worked on. Should also include Music, Photos, Movies, downloaded files, etc.
- a spacehog zone (credits to JKDefrag for this), for files that are rarely/never used, or backup of data already stored in the other zones. Exe's and dll's that are rarely/never loaded into memory should also reside here. This zone could be layed-out reversely on the disk, starting writing files from the slowest inner tracks, outwards to the middle tracks.

Is it really that hard to implement a better strategy? Is NTFS the 'problem' or is there not enough information about the 'file' at the low-level routines that decide which disk sectors to use?

I'd like to see a blog post on this topic. How Windows 7 organizes its files. At its core an Operating System is responsible for this, it should be one of the more important features of an OS, how it manages its slowest resource: the disk.

 

Microsoft eScrum

I need to vent some frustrations here:

Microsoft eScrum website "Your session expired. Please refresh your page to reconnect!" is just about driving me nuts here. I like working the 'Scrum' way and using TFS to track workitems, code, unit tests, builds all in a single place is just super, but the eScrum website that Microsoft has made available, is just crap (sorry for the lingo).

Really, it blings out using ajax stuff, but it shows a real lack of usability if something like session state is being used server-side.

People who know me, know I have build many web-applications, starting since 1996, with perl-cgi scripts, and believe me: Session is Evil

I have been bitten by all the problems Session can cause, and there is only 1 allowed use for session state in my world: it is to keep some information between two autogenerated requests, where you know the second request will come in before the session times out. If a user or external system is involved, you do not know this, so you should never use Session in such a case.

But here is the eScrum website, which I typically open up in the morning and use several times during the day. And just about each time I go back to it, and want to update a workitem, I get the -in your face- dialog box, it is a symptom of bad design. Anything that is stored in that session object is most likely caching, or plain useless, as a simple refresh (which is just a request) without sending any information to the website can recreate the session. So why, when there is an Ajax call to fetch data from the site, does it first need to recreate this session object explicitly by doing a refresh?

The Web Bubble 2.0

Having lived through the first Bubble and still have stuff to show for it: www.smarterwork.com (kinda), I found this music video 'The Bubble is Back!' made by The Richter Scales hilarious. (Via Scott Hanselman)

Descent

Just had a "blast from the past"

Descent II Source Code: http://www.descent2.com/ddn/sources/descent2/

Windows XNA version : http://www.syberflex.de/deepworld/index.php

Descent II mod: http://www.descent2.de/index.html

Vista beep

Aargh, sometimes you wonder: What were they thinking? What kind of drugs were they on? And it can't have been a single dev, it must have been just about all the MS employees dog-fooding Longhorn. Or maybe that's just it, the dog food is getting too toxic and causing these side effects.

Anyway: as a pointer (for myself) for all future Vista installs, after install do this: http://weyland.be/wrdprss/index.php/2007/02/08/disable-system-beep-in-windows-vista/

Or for a scripted install here are the instructions: http://blog.netnerds.net/2007/05/5-ways-to-stop-windows-vista-xp-2003-from-beeping/

From a quick search, it seems to be really inconsistent on when it actually happens. My gut feeling: some debug code that is left in Vista. Not that this is the type of debugging that you'd want to do I assume, but it's something that my father has carried over from his Visual Basic days: call beep to see hear if some part of your code is running. Now he is developping a multithreaded real-time model railway control application, interfacing with hardware and such, so while experimenting, having a beep play instead of the application stopping in a breakpoint (and the trains crashing into each other) actually could be a valid use for beep-debugging. But for Vista... naaaah. What a mistaaaike to maaaike!!

How to improve MSDN/Visual Studio Documentation

Given some of my 'feelings' about how we learn about new technology, as written in the previous post, I felt the need to fill in the Visual Studio Content Survey.

MSDN is often the first stop in the quest for more knowledge about a certain API, and these days more often than not, I leave the site with a feeling of disappointment. Now, this is not to say that the MSDN content is bad, perhaps its just that I have become so comfortable with the .NET Framework that, when I do feel I need to explore some unknown part of the it, I end up in a more obscure part of it. Like I had just recently with HttpContext.RewritePath. The docs there are really basic, bare-bones.

So the next reflex is Google (Yes, I tried Live Search a few times, but Google still seems to return the more relevant hits) and there you will find more relevant information in Blogs, articles, forums.

Again there, it is up to ourselves to get a feeling or qualification about how correct the information is. Again, how authoritive (if that's proper english) is the content. Was it written by someone the likes of Scottxxx (Guthrie, Hanselman, Haacked (ok, it's Phil, but same league: up there!)) or some person you have no trust in yet.

I'd love to actually see MSDN become a hub for adding community links to relevant blog posts, articles, webcasts, etc. With an innovative rating system on these links, each rating weighted with a dynamic value relative to the authoritive value of the person..

Example: If Scottxxx adds a link to the above HttpContext.RewritePath page, it should already get a top rating. If I were to add a link to the page, it would only get a normal rating, say with a rating weight of 100. If Scottxxx would rate the link, the rating of Scottxxx would be weighted eg. 10000. Because these guys know a lot more about this stuff, so they are likely to be better qualified (or authoritive) to rate the link.

Such a system would negate the effect of John Doe (or a 100 John Does) giving the link an incorrect rating. The fact that todays rating systems are 'democratic' is probably my biggest gripe. Not everybody has the same experience to be able to rate something.

The ASP.NET 2.0 Anthology: 101 Essential Tips, Tricks & Hacks.

When one of the principal authors of this blogs' engine* writes a book about ASP.NET, I just feel the need to plug it. I haven't read a line in it and yet I have confidence that this is a usefull book.

The ASP.NET 2.0 Anthology: 101 Essential Tips, Tricks & Hacks.

However, Jeff Atwood aka Coding Horror and co-author of this book, questions if books like these, highly specialized technical books, are usefull at all? Not to him, and I'm sure I understand that, if you can write a book like this, and manage all the other 'stuff' that he writes about on his blog, the information/usefullness in a book like this is good for a year, two at the most, if your stuck on a 'legacy' project. But to many 'mere-mortal' developers like, well maybe me, a book like this can help to boost up the knowledge of this specialized technology. Sure the internet is faster to find things, but it can also be harder. Where would you find all the information that these people have gathered? Well, if you are even aware of the information, just google a day. But what if you are not aware of it. What it there is a HtmlTextWriterStyle enumeration that has all these amazing usefull members that you could have used sooo many times already, but never did (until today) because you simply were not aware of it. So yes, today I found this one, how long I will remember it exists? As long as I actively use or need it while doing web development. But the next project will be Windows Forms, and I'm sure I won't remember this enumeration if I ever do another ASP.NET project again.

So I do believe these books have their merit: they condense a lot of information in one consistent place.

Another aspect is the authority that comes from certain books. If you know (well 'virtually') the author, read his/her blog, have seen a presentation, read some articles, you'll know the code in the book works, and is correct for the date the book was published.

One of the issues with todays plethora of CTP's, beta's and alpha previews is that many articles are written against these non-released versions. And these articles are also forever searchable, instantly available to anyone, anywhere in the world. Which have caused me some frustration, in that when looking for a solution to a problem, google will throw at you a number of solutions, but then you are left sifting through the range of outdated articles to try and find a solution that still fits. Ok, so you still get a lot of help, but if every author would just state which version or build was used for a certain solution, it would already help a lot. And then it is still up to you to verify the solution conforms to certain standards. I have read many articles that actually give wrong information. Be it because of security, performance, architecture or plainly not knowing the solution exists inside the core .Net framework.

So the best thing would be to publish the book online, forever searchable, instantly available to anyone, anywhere in the world, but I guess since it takes a lot of time, and thus money, to publish a book, this is not a viable option.

(* yet this instance being a bit an outdated version of it, I really need to get time to upgrade it ... when?)

Under Construction

I'm starting a new chapter in my life, building my own home. And after a long wait, we finally got started (subtitles are in dutch):

A notorious low in Internet history

The Internet (web, mail, etc.) is a fabulous great thing. Without it I wouldn't be able to find such cool things as the beginning of a wooden marble powered computer, find solutions to problems, connect with old friends, connect with distant friends, communicate with my girlfriend, etc.

But there are these other things on the Internet, such as spam, spyware, virusses, hoaxes and chain letters. Well, today I just received a chain letter which is the ultimate low of how ignorant some people are and how devious others must be, and to what cause?

A chain letter typically attempts to have people send the letter to a number of other people, with the sole purpose of just sending it along to yet more other people. In some cases these sort of chain letters have been the carrier for all sorts of malware. Obviously the goal there is to distribute the malware. There are soo many of them already: http://www.hoax-slayer.com/.

Now the one I got today is just sick. It contains a word document. The word document contains an image of a baby, obviously heaviliy scarred from an accident with fire. Underneath it the text states that this baby is in the renowned hospital in Pellenberg, with the message that for each e-mail the parents will receive 0,03 euro to pay for the numerous operations the baby will need.

A quick search on the internet reveals that this hoax already exists from before 25/11/2007: http://www.nieuwsblad.be/Article/Detail.aspx?articleID=g0p150esc (dutch).

Why people send these things is beyond my comprehension!

«February»
SunMonTueWedThuFriSat
31123456
78910111213
14151617181920
21222324252627
28123456
78910111213