Microsoft Security Essentials

Beta of Microsoft’s own anti-virus is out and account at Connect along with short survey is required before download may begin. While it was said that beta will be limited to USA, Israel, China and Brazil, I was able to download it anyhow (from Croatia).

Until now I was using freeware version of AVG anti-virus. Although I am it’s user for few years now, I was looking for replacement because of later version’s desire to attach it self in virtually every part of system. Most annoying ones were it’s attaching to e-mails and web pages. User interface was also quite annoying and you could never be clear at what exactly you have just done.

My two installations of Microsoft Security Essentials were on Windows 7 and Windows XP (Media Center Edition) and everything went without a hitch. Since download is fairly small (in range of 5 MB) and installation is really fast one, you are done with protecting yourself within minute.

User interface is clean and clear. While some would mind lack of advanced options, I find it quite refreshing. Bear in mind that in no way I can test how well it works in regards to actual task of catching viruses, so this alley will go unexplored.

What I can say is that I didn’t found anything wrong with it. If it is as good at catching actual viruses as other freeware solutions out there, I cannot find any reason why not to install it.

It is free after all.

[2009-06-30: Beta is closed. It seems that limit was set at 70,000 beta users. If you didn’t manage to download it now, you will need to wait until release.]

[2009-09-30: Final version is out there.]

Presenting

Illustration

I occasionally do small presentations. Most of them are inside jobs, but sometimes I do find myself in front of unknown people. Here are some tips that I found useful.

Rehearse

Nothing is more important than rehearsing your speech before giving it. You don’t need to do it dozen of times, one or two times is enough. Just make sure that you rehearse it as you will give it. Go through all samples and use a clock. Timing is of essence here.

Check a room

Be sure to get overview of room at least few hours (minutes in worst case) before giving a speech. Check everything that you need: power, network, telephone… If you need it for presentations, make sure it is there or that you are aware of problem. Do not allow yourself to do network troubleshooting in front of audience.

Tea

Drink tea, not coffee. I personally tend to be quite speedy presenter and if you combine that with coffee you get really quick talk that nobody can follow. Give people enough time to absorb information as they get it. However, remember that some enthusiasm is quite a good thing.

I know few presenters that have beer before presentation (or even during) but I must confess that it does not work for me. If I want to give presentation it has to be alcohol-free.

Don’t be late

Don’t be an asshole. Be in room as people pour in. Wait if you think that some more people will come in, but be there.

Going Down

I am currently experiencing major technical difficulties for both my e-mail and web site.

My mail domain had non-default MX record settings (Google Apps) and that was not updated with move to new server. Without noticing, my e-mail account was gone since 2009-06-19. MX records are now corrected, but it will probably be few more hours until DNS gets new data. And then again, I will be e-mailable.

My web site is also down since transfer to new server broke some settings and I broke rest of it.

Long night awaits…

[2009-06-22 02:00: Web site is finally up but not with full functionality. I still need to restore 404 functionality (in case of non-existent file, I used to redirect it to newest version).]

[2009-06-22 03:00: DotNetPanel was a problem. If you don’t put * into sub-code text field it will not warn you, but it will just start displaying “The data is invalid.” page for all http requests. It seems that error checking is unknown discipline in this product. In any case, web page is back up.]

[2009-06-22 03:00: My e-mail is up, but in very weird and uncomfortable setup. Hopefully normal access will be restored soon.]

[2009-06-22 12:00: I also need to thank to my web provider. While this was caused by them while moving me to another server, I must commend their availability in middle of night and during non-working days. I will most definitely stay with them.]

[2009-06-23 08:30: I got first e-mail to my server! It is sent from my web provider so it should take some more time for it to propagate through all DNS caches.]

[2009-06-23 23:30: I finally got my error reporting system back on-line. Some servers send me e-mail to correct address, but big part of them still hasn’t updated their DNS records.]

[2009-06-25: Finally everything works. :)]

Windows 7 SE

Illustration

It seems that Microsoft decided that those who wish to have Windows 7 Starter edition will need to forget everything about customization.

Not only that you will not be able to change sounds and cursors, but not being able to change wallpaper? C’mon Microsoft, is this really necessary?

Only hope is in independent wallpaper changing programs (I always recommend Wallpaper Cycler). I surely hope that they will have some workaround available.

Reordering TabPages Inside TabControl

When using TabControl in my programs, usually there is one thing users always ask for - “let me reorder those tabs”. Since reordering tabs is such a logical operation, one would think that the mighty .NET 2.0 Framework has one. But no luck there. Visual Studio 2008 does have that feature, but framework mortals are not blessed with it.

Since Visual Basic programmers waited for inheritance for far too long, they tend to use it for solving every possible problem (when you have a hammer, all problems look like nails). May I say that here, the same inheritance approach will be used. :)

What we want to do here is to extend the standard TabControl. Inside of it, we are interested in MouseDown, MouseMove and MouseUp events. Some people like to use drag and drop here, but that seems to me like using a bomb to kill a fly.

MouseDown

Upon receiving a MouseDown event, we check if the Left button is used and if TabControl has tab selected. If those requirements are fulfilled, we initialize the SourceTabPage variable. With that, we are ready for further events.

MouseMove

When the mouse is moved, one must check if reordering is in progress. If that is true, we look at what TabPage is under it. If it is not starting one - we have a show.

One of the things we must discover is which TabPage we are hovering over. Since unfortunately, we cannot use some sort of HitText, we must iterate through all TabPages and select one with our coordinates.

After that, we check which side we are hovering. It is only important if you wish to display a different cursor for each side. These two are the ones I use, but you can think of your own schema.

MouseUp

Here, we must know on which side we are since the new location (before or after hovering TabPage) depends on this information. This code is basically the same as the one we use for determining the cursor type. After clearing is done, so is our function.

Conclusion

This extended control offers a good solution to reordering TabPages inside a TabControl. I think that the only thing one may hold against it is updating the order on MouseUp but that decision is made for the sake of speed and code clarity. This way, it is very easy to implement changes through further extending since it uses protected OnMouseX procedures.

There is source code available in both VB.NET and C#. Hope you like it.

P.S.

This is redoing of my Code Project article.