
Back to Blog index.
Unless you've just started .NET development, you are most probably aware of a very useful tool for .NET developers called the Reflector. Originally this tool was made by Lutz Roeder, but lately he has stopped developing the tool personally.
However, this doesn't mean the development of the tool has stopped. On the contrary: the tool is not distributed by Red Gate, a development tool shop based in United Kingdom. From their web pages, you can still download a free version of the tool. The way I understand the situation, Red Gate is also going to commercialize the product, but wants to keep available a free version as well as a service to the community.
For the last couple of days, I had the pleasure to visit an Embarcadero development/database tool technical training in England. It was interesting to learn more about the company's database solutions (I happen to know their development tools quite well already), and there seems to be a lot of potential.
Also, I learned about a new virtualization solution called XenoCode which was unknown to me previously. Their products allow to create large .EXE files of fully-installed applications, and virtualize the whole installation. The client computer can simply run the application without any installations and modifications to the target operating system. Very cool!
Just a few days ago, Microsoft released the newest version of the Windows Azure SDK, the January 2009 CTP version. This package is available from Microsoft downloads.
The new CTP version includes performance improvements, sample application improvements and bug fixes, including one that bited me: an user name containing spaces could cause trouble.
Are your using Microsoft's Expression products? If yes, you might wish to apply the latest service packs to your products. Microsoft has recently announced the availablity of Service Pack 1 for both Expression Media 2 and Expression Encoder 2.
These packs are available for download here and here.
Two new articles published: one Finnish column about Windows' 25 year anniversary, and another in English about Windows Azure application development.
The Azure article is available on-line at Developer.com.
Happy reading!
Some photography topics for a change. A couple of people have recently asked me how I manage my picture workflow in Adobe Lightroom 1.4 when I want to get my pictures from the camera and import them into Lightroom. Here's how a quick run-down on my workflow.
Firstly, I plug my memory card into my computer (my Canon has a Compact Flash card, currently I'm using a set of Sandisk Extreme III 8 GB cards), and the use a custom .NET application (written in C#, works in 64-bit Windows versions as well) to transfer the newest images to my hard disk into an "incoming" folder. Then, I take a backup copy of the images, after which I move the images into their correct location. In my case, this is the Windows Pictures folder (using Windows Server 2008 currently) under which I organize folders by year, month and date.
The next step is to import the images into Lightroom. With the Lightroom window open, I drag and drop a set of photos from Windows Explorer into the Lightroom window. Most often, I drag a single folder's worth of pictures at a time, as this is the easiest way. Then, I specify common keywords in the Import dialog, and can remove obvious mistake images (very blurry, etc.) at this point. Then, I let Lightroom import the images.
Next, I go to the Loupe view (press E on keyboard to get there), and star t looking the images one by one. The filmstrip at the bottom is easy to navigate with the left and right arrow keys. When I find an image I want to keep in the library, I press P for pick. By the way, by pressing "p", i.e. the small letter, the selection stays in the current image, but pressing "P" (Shift+P) will also move to the next image. So, I end up pressing repeatedly "p, right, right, p, right, p" and so on. You get the idea.
Occasionally, I might also select to ignore blurry, unsharp, etc. images at this point with the X key (Rejected flag). Once I've gone through all the images I've imported, I have some images marked as Picks, some without any mark (those I didn't want to keep), and some outright rejected. Clear and simple so far.
Now, I want to get rid of all the images that don't have a pick mark. To do so, I now choose the Library/Refine Photos command (Alt+L, R), in which case Lightroom will display the Refine dialog box (unless you have disabled it). This command will go through all the photos in the current view (i.e. those photos I just imported in the Previous Import library), and mark all photos without a flag or the rejected flag as rejected. At the same time, all Pick flagged images will have their flags removed.
When refining the selection, Lightroom will also set a filter to display only the rejected photos. Next, I choose the Photo/Delete Rejected Photos command (Alt+P, J or Ctrl+Backspace). Then, I select to simply remove the pictures from the library with the Remove button, and not from the disk. Actually, I never delete photos from my disk, just in case. You never know when you might need an older photos, even though it might be too dark, blurry, or so on.
That's it. In my opinion, a quite effective workflow, and also fast to use especially via the keyboard. I'm happy to use Lightroom, and might even consider upgrading to the 2.0 version. This by fully acknowledging that I previously admitted that I wouldn't purchase any more Adobe products. But let Shadowland be the exception.
I recently needed to investigate the possibilities of encrypting an SQL Server 2008 database. Of course, as a developer I could quite easily write C# code to encrypt my data with some key (using DPAPI like solutions, for example) and then store that data to the database. Simple and clean.
However, as I recalled from earlier investigation to the product, it turns out SQL Server 2008 has expanded the encryption capabilities in the latest version, meaning that developers don't need to do as much work as they used to do to get proper encryption in place.
On MSDN, there's a nice article about database encryption in SQL Server 2008 Enterprise Edition, which I suggest you to read. As with many security related topics, it's better to be safe than sorry. And even if you don't need encryption just today, it's good to know that there are such things available once you do.
Having had the time to test Windows 7 lately, there are many interesting things to note. Many blogs are already full of information about interesting features, and that's good. However, I haven't seen much talk about the less-used accessory applications like Calculator. But, Calculator in Windows 7 is getting very good for us developers: it now contains a programmer's mode.

In this mode, you can instantly see your values (let them be bytes, words, dwords or qwords) in binary, and also easily shift bits and perform bitwise operations such as AND and XOR.
Very good indeed!
Now products/services from Microsoft: firstly there's Microsoft Tag, and then there's Microsoft Customer Care Framework (CCF), both of which are new innovations. Here's a quick run-down.
Microsoft Tag: a mobile-phone oriented graphics, which can be photographed using a mobile phone. Then, a small utility on the phone converts the image into data, posts it over the web to Microsoft, which in turn redirects to the correct site.
Microsoft Customer Care Framework 2009 is a new product that helps "reate valuable customer relationships by improving the customer experience across all interaction channels". So, if you are a service provider or service-oriented company, this might be something for you.
Have you already heard about Microsoft CAT .NET, or Code Analysis Tool for .NET? If not, it might well be the time to do so. CAT.NET allows you to scan your source code using static analysis methods, and then responds with a list of possible security issues.
The tool can report on common problems such as XSS, SQL injection, file handling problems, and so on. Currently, the tool is in CTP mode, but it might well become finalized soon.
To download the tool, visit Microsoft Downloads.
Today's the day: Windows 7 Beta 1 is now available to download! Today, the beta became available to MSDN and Technet subscribers, and tomorrow it should be available for the general public.
Windows 7 now also has an official page on Microsoft.com, check it out.
As you can guess, I had to download my copy immediately. MSDN was pretty crowded, and I had to restard the download many times before I got the ISO image. Here's how the setup screen is like:

Lookin' good!
Microsoft Finland's premier developer event named TechDays 2009 is getting closer. You can now go to the registration page of the event and make sure you have a seat reserved. Unlike the previous years, this year TechDays is a paid-only event. The attendance fee is 200 € excluding VAT.
I also have a speaking engagement at the event, so feel free to pop in to my session. This time it's about ASP.NET.
Welcome to TechDays 2009!
If you are interested in Windows Azure development like I am, you might wish to learn how to get started with the SQL Data Services (SDS). First of all, you need to know about the Azure web portal. For SQL Data Services, the address is http://portal.ex.azure.microsoft.com/. This is where you create yourself a solution to access from code, and a password to access it.
Then, you need to learn that SDS supports two programming interfaces, REST and SOAP. My opinion is that the SOAP interface is easier to use for example from C#, and it's also easy to add a service reference to Visual Studio. Speaking of which, the WSDL address for SOAP calls is https://database.windows.net/soap/v1/. With this address, Visual Studio is able to work out the rest.
SQL Data Services uses terminology such as authorities, containers and entities. You can create, read and delete these using the SOAP interface. For instance, to create a new authority, use the following code:
SitkaSoapServiceClient soapClient =
new SitkaSoapServiceClient("BasicAuthEndpoint");
soapClient.ClientCredentials.UserName.UserName = "solution_name";
soapClient.ClientCredentials.UserName.Password = "P@ssw0rd!";
Scope scope = new Scope();
Authority auth = new Authority();
auth.Id = "mynewauthority";
soapClient.Create(scope, auth);
Here's an example of how to retrieve an entity with the ID string 12345:
Scope scope = new Scope();
scope.AuthorityId = "mynewauthority";
scope.ContainerId = "somecontainer";
scope.EntityId = "12345";
Entity readEntity = soapClient.Get(scope);
if (readEntity != null)
{
string name = (string)readEntity.Properties["name"];
string email = (string)readEntity.Properties["email"];
}
As you can see, accessing the SQL Data Services and the Azure cloud computing platform is easy. MSDN has more documentation. Check it out.
It's the year 2009, welcome! Also, if you can read this text, you've succesfully updated your feed reader with the URL of my latest blog.
Thanks for popping in!
› Blog Archive