Windows 7 RC Released


If you have an MSDN or TechNet subscription, you can now download the RC for Windows 7. The sites are experiencing heavy loads right now and I have seen some issues. Best of luck.

Peace and Grace,
Greg

Getting rid of some nasty malware (xnev.exe and lsass.exe)


NOTE: Using CNET links so you feel safe downloading the software I have chosen. Many link back to the manufacturer page anyway, but you will see that CNET, a trusted source, is the starting point. This does not guarantee safety, but it sure increases your chances.

NOTE: This post deals with Vundo (aka, Virtumonde) and the xneve.exe/lsass.exe virus (not sure the actual name, nor do I care at this time (will research logs later and see if I have a name). The steps here are not guaranteed to get rid of all viruses and malware.

Yesterday, I got a nasty version of Vundo, aka Virtumonde, on my computer at work. I am not sure where it came from, as we are pretty heavily filtered, but I can state that our Trend Micro at work did not catch it. (Please note this should not be taken as a reason not to buy Trend Micro, as virii and other malcontents are being developed all the time and NO product catches everything all the time).

Rather than take the chance of not having a computer for a few days, I figured I would take a crack at the malware first and see if I could irradicate it. My first shot was with Spybot – Search and Destroy, which you can find on CNET’s download.com. The main reason for downloading this program was finding a deleted folder with the name, indicating the company had installed it at one time. Spybot – S&D has a neat tool that installs with it called TeaTimer, which allows you to stop the malware from making Registry changes. This is the theory, but the varient of Vundo I had was making changes so fast I could not guarantee I killed all refs prior to reboot.

I then shredded any files with what is now yesterday’s date in my system32 directory and at the root of my drive, etc. Not every file, but every file with a strange name. Looking back, killing every file might have worked. For this, I used Search and Destroy’s file shredder.

I did do some damage,  and when I started shredding the files that were not started (using the file shredder in Spybot – Search and Destroy), the malware went into overdrive and started installing other malcontents. This is when xnev.exe and lsass.exe showed up at the root.

Here is how I killed xnev and lsass (or at least how I feel I killed them. The first thing was getting the computer off the network completely. Any network means the malware can call home for reinforcements. 

I started with Search and Destroy, which missed them on reboot, although it killed other baddies on the machine. My nextshot was with Malwarebyte’s Anti-Malware. It caught the malware and destroyed it, but it did not destroy the browser objects it installs, so the malware came back. I am sure with some seeking for the root files that caused the problems. I then used Spyware Doctor (CNET download.com launch page). I did have to connect to the network to download the latest patches for the product, so I did it at the same time as Malwarebyte’s Anti-Malware (next step), so I only connnected once.

If you go this route, you have two options:

  1. Pay for the product
  2. Manually delete the items it shows you

I chose the later. This got rid of the browser plug in that was making it hard to kill all this garbage. I then ran Malwarebyte’s Anti-Malware, which removed the xnev.exe and lsass.exe that were running from C:. After reboot, I got into the registry and deleted the key for xnev.exe in HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun.

The machine was now running normally again, but I was not satisfied all the baddies were dead. Running Anti-Malware again, I see 2 Objects infected using a full scan. It is a system restore point, so it is turn off system restore and kill off the remaining baddies. I will edit this once I have fully clean scans.

Here are the steps I would recommend, from my experience:

  1. Download Spybot – Search and Destroy, Malwarebyte’s Anti-Malware, and Spyware Doctor and possibly some others. Having your tools ready before you get off the Internet is key.
  2. Install the programs and download the latest patches
  3. Disconnect from the Internet completely (including wireless)
  4. Run all three programs
  5. For Spyware Doctor, you will either have to purchase or manually remove the entries, as much as possible
  6. For the others, let them do their thing
  7. Delete all temp files
  8. Delete all internet temp files
  9. Turn off system restore
  10. Delete files created the day you are infected (this may not be easy), or files that have very strange names in your system32 directory. Take care here if you are a newbie at this and use products instead.

You should do this as soon as you find malware on your computer, which is normally noticed by slow downs of the machine and possibly popups. If you start getting popups to strange places (porn sites, sites advertising anti-virus/malware products), you are probably infected. The quicker you find it, the better, as you can see the files the malware installed.

Peace and Grace,
Greg

Review: Artisteer – CSS templates made easy


Every once is a blue moon, I find an offer to try a product that I am really interested in. The other day, I was examining offers for Microsoft MVPs and I came across Artisteer, a product that creates website templates, for lack of a better short description.

I contacted Artisteer and got a license key within the hour. I then got a chance last night to sit down and play with the product. I am going to go through the good and bad of the product.

When you first stoke up Artisteer, you are greeted with a menu that gives you choices for what kinds of templates you would like to work with. These choices are not binding, as you have complete flexibility over your final design, but choose wisely, as you can paint yourself into a bit of a corner. The opening screen looks like this:

I tried a couple of the templates, and there are a few restrictions on building for things like WordPress, but that is simply because you to fit within the WordPress model.

Templates:

There is a bit of good and bad with templates. I like the fact that I can keep mashing the Suggest button to roll through the templates, but it would be nice to see some of these starting designs in a chooser, like the other elements. I realize things might be created "on the fly", but I eventually get tired of mashing suggest to change the look and feel. On the other hand, I like a great deal of the design decisions. Below is a template I created:

Customization

While I am not completely sold on the starting point mechanism, you have complete control over the templates you design. For example, the following screenshot is the template above after only 3 mouse clicks on different menus, starting with the Suggest Design button. If I liked the original fonts and colors, I could have hit it with 1 click.

 What can you customize?

  • Layout
  • Color Scheme, including color brightness
  • Header (graphics, fonts, font placement, graphic effects)
  • Background (graphics, color, etc.)
  • Button shape, actions
  • Menu style, including menu item gradients, shape
  • Bounding boxes for sections (block style)
  • Placement of different elements
  • Footer style

There are some other customizations, as well.

Saving Your Work

When you are done, you can export your project. One of the options is a .NET project. The resulting project contains the following tree structure.

 

Notice that everything is very modular, which is nice. I am not sure I like the placement of the CSS files, personally, but this can be adjusted. I do like the use of a master page. One update I would like to see is an ASP.NET MVC output, but it is not too difficult to output to HTML and create my own MVC site from the template.

Rendering in Browsers

I have not tested every browser yet, but the first site I created seems to work fine in IE (v 7), safari, opera and firefox. I have not tested IE 8 yet, which may be interesting.

One nice thing is the entire site is rendered using CSS. I like this standards based approach to creating sites. There is a separate style sheet for IE6 (which I did not test), so they have thought about the disparity of IE pre 7 days (when standards meant "Microsoft standards"?).

Thoughts

Overall the product is rather intuitive and easy to play with. You will find that is mostly what you are doing is playing. There is an undo button, so you can go back if a change munges up something you like. And, it produces a nice site. I will get time for more full featured investigation as I create an actual site with the product.

I only have two "negative" comments, neither of which is extremely negative.

  1. I am not fond of the lack of an easy way to get to different template styles. Once I have a basic design, it is fully customizable, but getting there is a bit of a pain if the first "suggested" site does not match what I would like. From the downloadable help file, suggest design is the proper way to do this.
  2. There is no help file included in the product (menu). This is minor, overall, as you can easily navigate, but documentation would be nice without having to download a PDF.

Suggestions for future enhancements:

  • ASP.NET MVC style template output
  • Ability to get to a few design ideas other than suggest
  • Help file included in the product
  • Ability to choose from fixed width and liquid layout

There is one other thing that nags at me a bit and it is my questioning whether or not the sites, as varied as they are, are a bit too similar to every other site created by this tool. The lack of a liquid layout option (mentioned in my list) may also limit its usefulness for some readers. I will play around for awhile and see if I change my mind on this.

Side note: Every software product paints you into some type of box, especially products designed to do boilerplate work for you. One question you have to ask is whether or not the box is too tight for your needs.

Should You Buy This?

This is the big question for many people when they see a review. Here is my feelings on this.

The price is not bad for what the product does. The standard version is only $129, so it is not a budget breaker. if you are only designing a single site, it is probably overkill and not worth the price, but if you design for clients, it is a good starting point and I would say worth the price. It sure beats running out the one of the free CSS sites and searching, as my time is worth something (at least in my opinion Wink).

You can download a trial if you wish to play with the product before buying. It will stamp all the graphics with trial, so it is literally a trial only version. It will allow you to determine if the product is right for you, however. If you are a student or home user, you can buy a $49 version, but I see enough limitations in the student/home version to plunk down the extra money for the full version. Your mileage may vary.

Peace and Grace,
Greg

Twitter: @gbworld

SQL Server 2008 SP1 released (and other downloads)


Somehow I missed this one in the last week, but the final release of SQL Server 2008 SP1 is out. Not a whole lot to report on the SP, as it is primarily tweeks and fixes. There is one new feature of note: Report Builder 2.0 click-once deployment. It seems like yesterday this release was a CTP, so go figure.
 
Other releases for the week:
 
  • Azure Services Training Kit, April update – if you are interested in cloud apps, this is your download.
  • STRACE – SSL/Socket tracer. It may just be the geek in me, but I think this one is pretty cool. Registration required.
  • Velocity CTP 3 – Velocity is the new caching project from Microsoft. This install requires .NET Framework 3.5 SP1 and PowerShell 1.0 .
  • Feature pack for SQL Server 2008 – I consider some of these features to be "mandatory" rather than add ons.

One more interesting tidbit. SharePoint Designer is now free. This was actually released last month, but I missed it. Since I am not doing much SharePoint these days, I am not surprised I missed it.

Peace and Grace,
Greg

ASP.NET MVC not good for TDD?


Two days ago, Stephen Walther wrote a blog entry on his ASP.NET MVC site about how MVC is not conducive to TDD, as it does not properly support incremental design. If you missed Stephen’s blog entry, it is here. I disagree that MVC is an impedement to [test driven] design, based on what I think a reader might take away from Stephen’s blog entry.
 
Before getting into where I disagree with what a reader might take away from Stephen’s blog entry, I think I should start on what I agree with him on. MVC, when used from the controller down, does offer poor support for TDD, if you put the emphasis on Driven. If you start with a controller, it is difficult to work out an incremental design, as you end up having to take pretty large steps to refactor through some of the increments. Tiny steps are the key to proper refactoring.
 
Added comment 4/14/009: I am not sure if it was clear that I was talking about how readers might perceive Stephen (and how a friend, in particular, construed the article). I am not stating that Stephen was stating that MVC did not work for TDD, only that it was designed more for TAD (Test After Development) rather than TDD (Test Driven Development). Stephen’s comment made me realize what I had writen might not be clear enough.
 
What I disagree with in how I think the reader will perceive the discussion is it does not have to be this way. The entire issue can be avoided if one rethinks what an application is. That is the purpose of this blog entry.
 

Apps are not UI

I went to the Microsoft MVP Summit last month (If you are not aware what a Microsoft MVP is, click on Microsoft MVP for more information). As an experiment I asked what types of applications people were buliding. Here are the typical answers I got.
 
Windows Forms
Web Services
ASP.NET
ASP.NET MVC
WPF
Silverlight
C#
VB.NET
F#
 
Notice a trend? Most of the "app types" above are describing the UI technology, the rest are describing languages. None of the answers describe the application. Let’s take this a step further. Here are some ad titles I found on Dice this morning:
 
Senior WPF Developer
Silverlight Developer
Senior Software Engineer, WPF
Silverlight / WPF Web/UI Developer
 
One thing to notice here is eaach of these jobs are listed by recruiting companies, although I have seen some by actual companies. In reality, these companies want a .NET developer with {UI technology} experience, either mandatory or preferred, depending on the technology.
 
If we take it a step farther, and look at MSDN, we see that many of the developer centers are focused around UI technologies. I am least worried about this, as we, as developers/architects have to learn new technologies. What is worrysome is the world is buying into the concept that UI technology describes the type of application.
 
RULE #1: UI != Techology (or UI <> Technology for the VB devs)
 
This may seem minor, but focusing so heavily on UI has deeply impacted our designs. In general, it forces a top down design. And, when viewed from the top down, we start to see some TDD issues, like Stephen described.
 

Microsoft’s New Technologies

This is not a primer on new technology, and by new, I am talking everything in the past 8 years or so (since .NET Framework 1.0).
 
The majority of the focus has been on using technology to relieve us of our bad habits. In traditional ASP, we placed our code in the ASP file. A few developers learned some encapsulation of code by making include files with their ASP "libraries". Even fewer made the leap to encapsulating logic in VB COM libraries. There were plenty of reasons for not moving to truly layered (or 3-tier/n-tier solutions) including the famous DLL Hell. As an aside, specifying the GUID for the library and classes and using MTS made it so you could drop new library versions without DLL Hell, but it was not a practical solution for everyone.
 
Then came ASP.NET and we had SoC (Separation of Concerns). Well, soft of. What we really had was separation of tags and code, and with the first books on the market, you would not know we had gone this far. The earliest ASP.NET code looked something like this:
 

<% for (int i=0;i<collection.Length; i++) { %>
<tr>
<td>
<%= collection[i].Field1 %>
</td>
</tr>
<% } %>

 
Looks a lot like ASP with curly braces, right?
 
So, ASP.NET did not solve the SoC issue at all. But WPF did … or did it? Perhaps ASP.NET MVC? How many samples have you seen where the data access sits in the controller? Case closed.
 
Rule #2: You can’t solve process problems with technology.
 

Paradigm Shift

Since an application is not the UI, my first efforts at testing should not be on the UI layer. Instead, I should be focused on behavior. If I properly design an application, I should be able to switch out WPF, Silverlight, ASP.NET, ASP.NET AJAX, ASP.NET MVC, Windows Forms or even web services (ASMX or WCF) as a "user interface". Some may argue that WCF and web services do not belong here, as people do not use them, but a separate application is a user (if you are not sure, look at UML diagrams).

If my application is not my UI, I should start on my business libraries first. I should focus on the behavior underneath the hood. I should also focus on my models and ensure they are solid and fully tested. Does this mean I should not test my contollers? Not at all, but the controllers get tested in another increment in the evolution of the application.

To sum the last two paragraphs, if we focus on the real application, which is not the UI, we can incrementally test ALL of the Microsoft UI technologies without breaking the rules of good TDD. But it requires thinking of apps in terms other than the UI.

In my last two applications, I have start with the models. This is not a 100% rule, as there are apps I have worked on recently where behavior was the starting point and I worked on the business libraries first. But whether I focused on business or domain models first, I am able to easily increment my design through tests. This does not mean the UI is a second thought, as UI is very important to many clients. it does mean that UI does not drive the behavior decisions.

The most recent app I finished has 13 lines of code, other than the autogenerated stuff, in the UI layer. The UI is a console application, but I could just as easily create a windows service, windows forms app, WPF application, etc. without many changes in the lines of code. On a previous application, I had to move a windows forms application I built to the web. It took less than a day to reskin the application with ASP.NET (would have considered MVC, but there was a slight learning curve for the person who would maintain the application).

How long would it take you to rebuild your application from Windows Forms to ASP.NET or vice versa? If more than a few days after initial graphic design, you probably have too much business and/or data code in your UI layer.

Summary

I could go on, but I will have to save this for another day.

The point of this blog entry is to highlight one of the major impedements to good application design: Thinking of applications in terms of user interface technology. If this UI focus led to better user experiences, I might consider it a potentially good trade off, but it doesn’t. I see bad user interfaces from people who are "experts" in {your favorite UI technology here}. In fact, since the app is the UI technology, and not a "skin" on top of an app, I would argue that you are more likely to have bad user experiences with this focus. That is also a topic for another day.

We have an arsenal of great tools today. We have to learn to use the tools for the proper job. Silverlight is a great UI technology and can create a wonderful, and pretty, user experience. But Silverlight is not an application building technology. As an analogy, imagine using a hammer to put screws in the wall or a screwdriver to pound in nails.

Someday soon, I will follow up with some "random thoughts" on UI and how it is properly used, but I have used up my time for today.

Peace and Grace,
Greg

Resharper 4.5 RTM


I just got a tweet that Resharper 4.5 has been released to manufacturing. As soon as I can procure a copy, I will run a review of the newest release.
 
If you are not using Resharper, you really should consider it. It is, by far, my favorite productivity tool for Visual Studio. It rises above some of the others in that it not only let’s you fix things, but gives you a good map of what to fix. In addition, it caches certain stats, making editing faster. My only beef has been the load time when you first load a large project, so I hope that is one thing that has been ramped up in the newest version. I am currently working on a machine without Resharper and I miss it. 😦
 
Peace and Grace,
Greg

ASP.NET MVC coming to Mono Develop


Yesterday, I told you that ASP.NET MVC 1.0 has been released as open source. As a result of the open sourcing, Mono Develop (for .NET geeks that use Linux) will support ASP.NET MVC soon. I found this by accident when I found a question on ASP.NET on Mono on one of the forums, so I thought I would share it.
 
 
Peace and Grace,
Greg