Papercut vs smtp4dev - Testing mail sending locally

Testing mail functionality in code using external mail servers has always been a hassle. If the mail manages to dodge antispam and various other mischievous services, it'll probably take several minutes to receive. On our Exchange servers it'll typically take 10-15 minutes before a locally sent mail actually arrives back in my inbox. We can do better!

Read the complete 5584 bytes...

Digg it | Kick it | Dzone it | Reddit


Bundling image requests for increased performance

A common scenario in RIA's is to show a large amount of small pictures on a single page. Let's say we want to show 100 images in a grid. While the simplest approach is to just put in 100 image objects and load in the images one by one, I believe it can be done smarter...

Read the complete 11960 bytes...

Digg it | Kick it | Dzone it | Reddit


Speaking at Aarhus .NET User Group

On April 28th I'll be giving a presentation at Aarhus .NET User Group on SharedCache. The presentation will be part of a combined event where Morten Jokumsen will be presenting Velocity and Jakob Tikjøb Andersen will be presenting Cassandra.

Read the complete 608 bytes...

Digg it | Kick it | Dzone it | Reddit


Miracle OpenWorld 2010 Slides

After getting some well needed sleep following Miracle OpenWorld 2010 and adhering to the we-do-not-use-sleep rule, I'm finally starting to get on top again, though my body still aches all over.

Read the complete 450 bytes...

Digg it | Kick it | Dzone it | Reddit


Speaking at Miracle OpenWorld 2010

I will be giving two presentations at Miracle OpenWorld 2010 in April.

Read the complete 1163 bytes...

Digg it | Kick it | Dzone it | Reddit


Speaking at Odense .NET User Group

On March 10th I'll be giving a presentation at Odense .NET User Group on Scalability & Availability on the Microsoft platform.

Read the complete 961 bytes...

Digg it | Kick it | Dzone it | Reddit


TechTalk on Scalability & Availability using NLB and IIS ARR

As promised during my TechTalk today at Microsoft Denmark, here are the links to all slides and demo code. Unfortunately you'll not be able to download the VPC's as those total around 30GB.

Read the complete 533 bytes...

Digg it | Kick it | Dzone it | Reddit


Fixing Flash bugs and intercepting IIS Application Request Routing cookies

What does Flash, upload, cookies, IIS load balancing and cookies have to do with each others? More than I'd like :(

Read the complete 9495 bytes...

Digg it | Kick it | Dzone it | Reddit


Reading width & height of Flash file

Obtaining the movie height & weidth of a Flash file is an easy task using the swfdump tool that comes as part of the swftools package. Here's an example of how to invoke swfdump from C# and read out the height & width of a given Flash file.

Read the complete 2321 bytes...

Digg it | Kick it | Dzone it | Reddit


Defending against the improbable

As little children we've all been taught that it's better to program defensively than relying on exceptions being thrown. However, sometimes it's preferably to just hope for the best and catch exceptions if they happen.

Read the complete 6088 bytes...

Digg it | Kick it | Dzone it | Reddit


Solving access denied errors using Process Monitor

Access denied errors are not uncommon when deploying new websites / features that interact with the filesystem. While it might work in local testing, it suddenly doesn't anymore when deployed. Using Process Monitor I'll show how to easily debug these issues.

Read the complete 4425 bytes...

Digg it | Kick it | Dzone it | Reddit


How to do URL rewriting on IIS 7 properly

One of my earlier blog posts, and the all time most popular one, was about how to make URL rewriting on IIS 7 work like IIS 6. While my method did provide a means to the goal, it's humiliatingly far from what I should've done. Since the old post is still the most visited post on my blog I feel obligated to write a followup on how to do proper url rewriting in IIS 7.

Read the complete 6157 bytes...

Digg it | Kick it | Dzone it | Reddit


Writing a calculator in C# using SableCC

Writing a calculator is a simple task - just add nine buttons labeled 1-9 and add a plus and minus button and we're almost good to go. In this entry I'm going to write a calculator called SimpleCalc that does not have a GUI, instead it'll take in an arbitrary expression and calculate the results of it. The input I'll use as my immediate goal is the following:

Read the complete 26532 bytes...

Digg it | Kick it | Dzone it | Reddit


Combining paths with multiple parts

Whenever you concatenate multiple strings into a path, you really ought to be using the System.IO.Path class's Combine method. At times you may be concatenating a number of smaller parts of a path instead of just the two that the Path.Combine() method takes. Nested Path.Combine calls quickly become difficult to read and error prone:

Read the complete 4668 bytes...

Digg it | Kick it | Dzone it | Reddit


The cost of latent logging code

Logging is an integral part of most applications, whether it's for logging performance metrics or causality data. Avoiding performance hits due to logging can be tricky though as we don't want to spend CPU cycles on the logging infrastructure when logging is disabled, while still keeping the full logging ability when required.

Read the complete 7750 bytes...

Digg it | Kick it | Dzone it | Reddit


Making the ASP.NET State Service work across network

Once you start distributing your ASP.NET website across multiple webservers, you're going to need a way to share session state. That is, unless your app is stateless, in which case scaling it should be a breeze!

Read the complete 3521 bytes...

Digg it | Kick it | Dzone it | Reddit


devLINK 2009 followup

I'm finally sitting in the train on my way home from the Airport and an excellent week spent in Nashville, also known as Nash Vegas.

Read the complete 2285 bytes...

Digg it | Kick it | Dzone it | Reddit


IIS7 - The object identifier does not represent a valid object

When adding sites to IIS7 either by script or by editing the config files directly, you may receive an error in the sites list that says:

Read the complete 4637 bytes...

Digg it | Kick it | Dzone it | Reddit


Evolution of the simple genetic algorithm

Based on my previous post on how to implement a simple genetic algorithm, I got some great comments pointing out that the algorithm might not be the most pure form of a genetic algorithm. I won't disagree, though I will point out that evolution also does occur due to mutation alone, so genetic algorithms may come in different forms.

Read the complete 6354 bytes...

Digg it | Kick it | Dzone it | Reddit


Implementing a simple genetic algorithm

In this blog post I'll give a quick introduction to what genetic algorithms are and what they can be used for. We'll implement a genetic algorithm that attempts to guess an RGB color by evolving upon a random set of initial guesses, until it at some point evolves into the correct RGB value.

Read the complete 17719 bytes...

Digg it | Kick it | Dzone it | Reddit


TxF presentation materials

Yesterday I presented on how to use Transactional NTFS (TxF) in .NET, at the Copenhagen .NET User Group.

Read the complete 322 bytes...

Digg it | Kick it | Dzone it | Reddit


Solving deadlocks through locking hints

Deadlocks in any database can be a hard beast to weed out, especially since they may hide latently in your code, awaiting that specific moment when they explode. An API website, exposing a series of webservices, had been working fine for months, until I decided to run my client app with a lot more threads than usual.

Read the complete 12007 bytes...

Digg it | Kick it | Dzone it | Reddit


ANUG Talk: Optimizing SQL Server 2005

Tonight I held my SQL Server Optimization talk at ANUG. There was an impressive turnout of almost 50 people, and based on the feedback I've received so far, I think it went alright :)

Read the complete 1424 bytes...

Digg it | Kick it | Dzone it | Reddit


Resource URLs and their effect on client side caching

One of the best way to improve performance of any website is to reduce the load from clients by allowing them to cache resources. There are various ways to ensure we utilize client side caching to the fullest extent, an often overlooked parameter however, is the actual URL for the resource we want to cache.

Read the complete 6743 bytes...

Digg it | Kick it | Dzone it | Reddit


Utilizing transactional NTFS through .NET

We're used to using transactions when dealing with the database layer. Transactions ensure we can perform multiple queries as one atomic event, either they all succed or they all fail, obeying the rules of ACIDity. Until Vista, performing transactional file operations haven't been possible.

Read the complete 13572 bytes...

Digg it | Kick it | Dzone it | Reddit


TechTalk: Optimizing SQL Server 2005

I held a TechTalk on optimizing SQL Server 2005 on the 21st of January. I think it went well so I'm looking forward to the evaluations - please fill them out :)

Read the complete 1130 bytes...

Digg it | Kick it | Dzone it | Reddit


Implementing imperative security declaratively using PostSharp

At a recent TechTalk I talked about code access security and how to perform declarative and imperative security demands & requests. There's no doubt declarative security checking is nicer than imperative checking, but not everything can be done declaratively.

Read the complete 11044 bytes...

Digg it | Kick it | Dzone it | Reddit


I don't like static methods

Inspired by a recent question on StackOverflow, I felt like sharing my thoughts on static methods in general.

Read the complete 5362 bytes...

Digg it | Kick it | Dzone it | Reddit


Using Squid as a reverse proxy with a .NET url rewriter

Once you start receiving visitors from all over the world, a new kind of scaling issue arise. It's not a matter of adding more servers to the cluster or optimizing code (we'll assume these factors are perfect), it's a simple matter of geography and mathematics. Serving code from one end of the world to the other will take time, no matter how quick your servers are handling the request. The speed of light suddenly seems quite slow.

Read the complete 16333 bytes...

Digg it | Kick it | Dzone it | Reddit


TechTalk material part 2

I continued my TechTalk on security in the .NET framework today, taking off from where we left last time. As promised, here are the demos and slides (in Danish).

Read the complete 484 bytes...

Digg it | Kick it | Dzone it | Reddit


Updating XmlOutput

Since I originally posted my XmlOutput class I've received lots of great feedback. I'm happy that many of you have found it useful.

Read the complete 11675 bytes...

Digg it | Kick it | Dzone it | Reddit


TechTalk material

I held my TechTalk on CAS security in the .NET framework today. As promised, here are the demos and slides (in Danish). If you're asked for a key password, it's "123456".

Read the complete 322 bytes...

Digg it | Kick it | Dzone it | Reddit


.NET Security TechTalk

I will be hosting two TechTalks on security in .NET, at Microsoft Denmark in August. The TechTalks will be held in DANISH.

Read the complete 651 bytes...

Digg it | Kick it | Dzone it | Reddit


Providing custom assembly evidence

I recently mentioned the possibility of having an assembly provide custom evidence alongside the CLR provided evidence. Let's see how to do it.

Read the complete 4239 bytes...

Digg it | Kick it | Dzone it | Reddit


Analyzing assembly evidence

When the CLR loads an assembly and needs to determine the appropriate permission set to apply, it's based on various evidence. Assembly evidence tells the CLR about the origins of the assembly, the zone it's loaded from and the file hash of the actual assembly file - these are just some of the more common evidence types the CLR uses, there are a lot more that are rarely used. Any object can be a piece of evidence, the CLR will only react on well known evidence types though.

Read the complete 5594 bytes...

Digg it | Kick it | Dzone it | Reddit


Using IDisposable to write indented text

I often need to output indented text in one way of the other, it could be HTML, XML, source code etc (please look beyond the actual problem domain - I'd enver write XML this way, it's just an example). Usually that involved me writing tab characters manually (or by calling a function that returned the current indentation string), cluttering the actual output. An example might look like this:

Read the complete 4375 bytes...

Digg it | Kick it | Dzone it | Reddit


Generic Dijkstra's Algorithm

Through various projects, I've had to do some shortest-path finding in a connected graph. An efficient and straight-forward way to do this is using Dijkstra's Algorithm. Notice that it'll only work for graphs with non negative path weights, like 2D maps for instance. While I've used the algorithm on several occasions, it's only now that I've rewritten it in generic form.

Read the complete 4468 bytes...

Digg it | Kick it | Dzone it | Reddit


Mapping datareader to objects using Reflection.Emit

I've previously written of how to automatically map a DataTable into a strongly typed collection of objects. There's a problem though, it's not fast... I wanted to improve on it, and this is what I ended up with.

Read the complete 9864 bytes...

Digg it | Kick it | Dzone it | Reddit


Performance comparison - reading data from the database strongly typed

I'm a big fan of strongly typed database querying as well as returning strong typed results. Due to the nature of static languages, you'll get compile time checking of all our tables and columns. You can easily rename columns as you can be sure all your (internal) references are accounted for.

Read the complete 18446 bytes...

Digg it | Kick it | Dzone it | Reddit


Securing .NET Code

Time flies fast. Back in 2006, during my time as an MSP, I made a series of presentations on securing intellectual property in .NET code, resulting in my Securing .NET Code article. Although it's about two years old, most points are still valid today, unfortunately.

Read the complete 1209 bytes...

Digg it | Kick it | Dzone it | Reddit


Profiling code the easy way

I often do code profiling, usually involving a stopwatch and some boilerplate code. I decided to make a quick'n'simple class that'll help me get rid of some of that code and concentrate on the actual code being profiled.

Read the complete 4397 bytes...

Digg it | Kick it | Dzone it | Reddit


Spawning threads in ASP.NET can be dangerous

In my earlier blog post about the dangers of using Response.TransmitFile, I gave an example of a workaround involving spawning a new thread in the ASP.NET page. While this does solve the issue at hand, it presents us with a new way to kill our application even quicker than last.

Read the complete 3463 bytes...

Digg it | Kick it | Dzone it | Reddit


Response.TransmitFile + Close will kill your application

Just before last weekend I noticed that a website I'm responsible for started spitting out "Server is busy" messages, not something you want to see on a website with millions of visitors per day. The quickfix was to recycle the application pool, and thus I solved the symptoms by setting a 15 mins recycle cycle on all the application pools. Not exactly optimal, but sometimes pissing your pants is the way to go.

Read the complete 13300 bytes...

Digg it | Kick it | Dzone it | Reddit


XmlOutput vs XmlSerializer performance

I got quite a lot of comments for my XmlDocument fluent interface, and I'm very glad I did. I'm always open towards new ways to solve problems, and I got a couple of suggestions to my post that I afterwards experimented with. One of those is using the XmlSerializer to serialize strongly typed classes (or structs - performance is the same) into XML. Jon von Gillern originally suggested it, but Kris Vandermotten made me want to test it out.

Read the complete 5940 bytes...

Digg it | Kick it | Dzone it | Reddit


SQL Server Mirroring, a practical approach

In this post I'll take a practical approach at talking about what SQL Server Mirroring is, the advantages and considerations that follows.

Read the complete 19534 bytes...

Digg it | Kick it | Dzone it | Reddit


C# String enumerations

Switches are rarely nice in an architectural aspect, but they are often required none the less. One of the ways we can reduce the risk of errors as well as increase readability is to use enumeration values instead of constants. Unfortunately this only works for numeric types, we cannot create a string enumeration. Here's a workaround.

Read the complete 2031 bytes...

Digg it | Kick it | Dzone it | Reddit


Controlling SqlConnection timeouts

When performing queries against a SQL Server database, there are a couple of methods readily available. However, an option is missing.

Read the complete 3059 bytes...

Digg it | Kick it | Dzone it | Reddit


Using Network Load Balancing for Availability & Scalability

There are two primary reasons for venturing into the realms of clustering/load balancing - availability & scalability. In this post I'll give a quick demo of how to setup Windows Network Load Balancing (NLB) on Server 2003 and how it affects the availability of a web application.

Read the complete 4885 bytes...

Digg it | Kick it | Dzone it | Reddit


MTH going open

Some of you may know that I used to play a lot of poker. Unfortunately that's not the case any more. I really enjoy live poker when I'm in Vegas, I enjoy the major tournaments and I've definitely not participated in my last WSOP. But as for online poker and the daily grind, I've quit it. I just don't find it exciting any more. While the mathematical aspect acquired my interest early on, I never enjoyed grinding as such, it was purely for monetary reasons.

Read the complete 4183 bytes...

Digg it | Kick it | Dzone it | Reddit


Setting up and testing Active Directory failover

I spend a lot of time architecting for scalability, availability and security during my daily work. Currently I've got a distributed system consisting of several windows services communicating across machines using WCF and authenticating through Active Directory.

Read the complete 10764 bytes...

Digg it | Kick it | Dzone it | Reddit


Automatically mapping datatable to objects

I often need to transfer data from my business layer to my presentation layers in a strongly typed way. In this example I'll use the following very struct and corresponding DataTable to represent the data I need to transfer:

Read the complete 3308 bytes...

Digg it | Kick it | Dzone it | Reddit


XmlDocument fluent interface

I do a lot of backend programming for Flash frontends. That basically means a lot of ASPX pages that simply return some XML and accept some incoming XML for parameters. Most of the UI logic ends up getting cluttered with manual XML stringbuilding, so I saw this as an obvious opportunity to play around with a fluent interfaces.

Read the complete 9230 bytes...

Digg it | Kick it | Dzone it | Reddit


Accessing my privates

Recently I was developing a couple of simple ORM classes that had me confused.

Read the complete 2541 bytes...

Digg it | Kick it | Dzone it | Reddit


Handling DBNulls

Reading and writing values to the DB has always been a bit cumbersome when you had to take care of nullable types and DBNull values. Here's a way to make it easy.

Read the complete 5431 bytes...

Digg it | Kick it | Dzone it | Reddit


JAOO 2007

I will be attending JAOO this year, I'm looking forward to a packed calendar in excitement:

Read the complete 627 bytes...

Digg it | Kick it | Dzone it | Reddit


Creating a .NET bootstrapped installer using NSIS

If you have ever deployed .NET windows applications, you have without doubt tried the Visual Studio Install project type. The Install project will create .MSI install applications for you, they're great for basic installations, but nothing more than that. The .NET bootstrapper is quite lacking, at times it won't be able to find the framework download file as it's changed it's location, at other times it's not able to download it. And finally, if it does determine that the user needs the framework, it's shown in an ugly uncustomizable GUI.

Read the complete 10751 bytes...

Digg it | Kick it | Dzone it | Reddit


Cascading windows

In Photoshop we often work with multiple windows open. They can be cascaded to more easily be able to view the different windows and tell them apart. There's an API function that does the same to any windows you specify, you can even define the rectangle where they should be cascaded within.

Read the complete 1751 bytes...

Digg it | Kick it | Dzone it | Reddit


Animating windows

Let's be a bit more graphic. This time I'll show you how to use the Windows API to make your forms fade in/out, slide in from the side or do various other animations. For this example we'll have to use a Windows Forms project as we have to utilize a Form object in the example.

Read the complete 2369 bytes...

Digg it | Kick it | Dzone it | Reddit


Activating windows

Now we'll see how to activate windows and sending them to the foreground. I will be using the WindowFinder class that I introduced in the blog Finding specific windows.

Read the complete 2420 bytes...

Digg it | Kick it | Dzone it | Reddit


Getting key state

Here's an example of how to retrieve the state of any keyboard key.

Read the complete 2718 bytes...

Digg it | Kick it | Dzone it | Reddit


Minimizing and maximizing windows

This time I will show how to maximize and minimize windows. I will be using the WindowFinder class that I introduced in the blog Finding specific windows.

Read the complete 2459 bytes...

Digg it | Kick it | Dzone it | Reddit


Modifying window location and size

Last time we saw how to obtain a windows location and size. This time I'll show how to change a windows size and location. I will be using the WindowFinder class that I introduced in the blog Finding specific windows.

Read the complete 2862 bytes...

Digg it | Kick it | Dzone it | Reddit


Getting window location and size

This time I'll show how to obtain the size and location of a window. I will be using the WindowFinder class that I introduced in the blog Finding specific windows.

Read the complete 4252 bytes...

Digg it | Kick it | Dzone it | Reddit


Finding specific windows

Last time I made an example of how to enumerate windows. This time I present to you a class that greatly simplifies the process of searching for specific windows, types of windows, windows belonging to a specific process, having a specific text. You can search for any number of these parameters at the same time, using regular expressions for all string matches to provide optimal flexibility.

Read the complete 7688 bytes...

Digg it | Kick it | Dzone it | Reddit


Enumerating windows

Until now we've seen how to retrieve basic properties of windows as well as how to interact with them by sending keypresses. Up until now we've had to find the handle by using Winspector or a similar program. This time I'll present a way of finding the handles programmatically.

Read the complete 3973 bytes...

Digg it | Kick it | Dzone it | Reddit


Sending keypresses to a window

Now to complete the toolset required to make a great spyware / browser hijacking application, we'll make Internet Explorer navigate to the address we set.

Read the complete 2149 bytes...

Digg it | Kick it | Dzone it | Reddit


Set text by handle

This time we won't be reading the text from a window, we'll be setting it.

Read the complete 1377 bytes...

Digg it | Kick it | Dzone it | Reddit


Getting text from handle

This time we want to retrieve the text from a given window, represented by a handle. Like last time, open an Internet Explorer instance. Now open Winspector and select the address field, ensure that it is the address field itself (class = Edit) and not the ComboBox that you select.

Read the complete 2705 bytes...

Digg it | Kick it | Dzone it | Reddit


Getting a process from a handle

So we have a handle, what process does it belong to? Our goal is to obtain a .NET System.Diagnostics.Process object that corresponds to the owner process of the handle we input.

Read the complete 1842 bytes...

Digg it | Kick it | Dzone it | Reddit


Dedicated to the API

Unfortunately it's been quite silent around here for the last couple of months. I want to change that, so why not make a promise?

Read the complete 668 bytes...

Digg it | Kick it | Dzone it | Reddit


Executing assembly dynamically in a strongly typed way

During a recent plugin based project that I worked upon, I had to dynamically load assemblies and instantiate objects from those assemblies. Usually that'd require a lot of typecasting and nasty code, but thanks to generics we can make it a lot smoother.

Read the complete 2372 bytes...

Digg it | Kick it | Dzone it | Reddit


Creating a "short link" Internet Explorer addin

You probably already know of the short link services that are around, www.makeashorterlink.com for instance. While the idea behind these sites are indeed good, I personally find it quite cumbersome to actually create the short links when I'm typing a forum post somewhere. In this post I'll give an example of a short link system that enables one to easily create short links while typing in Internet Explorer, using an Internet Explorer addon that conveniently places itself in the context menu whenever we right click on some text and a .NET webservice that handles the short link functionality.

Read the complete 15162 bytes...

Digg it | Kick it | Dzone it | Reddit


New Cryptography: Algorithms, APIs and Architecture

The final session of TechEd 2006 (that is, the last session slot - there were multiple to choose from) was held by Rafal Lukawiecki.

Read the complete 1323 bytes...

Digg it | Kick it | Dzone it | Reddit


Architecting Applications for a Service-Oriented World

On the third slot this friday I went to see Beat Schwegler, talking about architecting applications for a service oriented world.

Read the complete 572 bytes...

Digg it | Kick it | Dzone it | Reddit


XNA

I were in serious doubt as to what subject I should choose for the next session slot. I'm very much into webservices and SOA so "Patterns and Anti-Patterns for SOA" would be perfect. But at the same time Rob Miles held a session on XNA, the new game development framework for both PC and the XBOX. Game development really isn't my thing, but I knew Rob Miles is an excellent speaker, and at the same time I have done some 3D development earlier on and it could be quite interesting to see how the XNA is going to change ones perception of game development - so I chose the XNA session.

Read the complete 2262 bytes...

Digg it | Kick it | Dzone it | Reddit


Attack and defense: ASP.NET 2.0

The first session today started at 9AM, "Attack and Defense: Securing ASP.NET 2.0 Applications", held by Keith Brown.

Read the complete 408 bytes...

Digg it | Kick it | Dzone it | Reddit


SQL Server error handling

The next session was held by Bob Beauchemin, a great speaker. I clearly remember hearing Beuchemin somewhere else, I just can't remember where exactly. Anyways, the session was about SQL Server error handling in T-SQL and SQLCLR.

Read the complete 1123 bytes...

Digg it | Kick it | Dzone it | Reddit


TechEd trade show

At the CCIB (Centre Convencions International Barcelona) where TechEd is held, there's also a trade show where a lot of the interesting 3rd party .NET development companies are showcasing their products. It's a great opportunity to get a look of the new cutting edge technologies that are being marketed either using or for the .NET framework.

Read the complete 1742 bytes...

Digg it | Kick it | Dzone it | Reddit


Microsoft .NET MicroFramework

When I looked at the next session slot I stumbled upon a new topic that I had neither seen nor even heard of before, the Microsoft .NET MicroFramework. Now what's that?

Read the complete 2577 bytes...

Digg it | Kick it | Dzone it | Reddit


LINQ

The first demonstration for the day was without doubt the most anticipated one amongst most people here. God himself, Anders Hejlsberg gave a demonstration of the latest LINQ technology. Wow, just wow, LINQ is going to revolutionize the way we think of accessing and modifying data through .NET. We no longer have to use the old bulky SQL statements that were prone to errors due to lack of type safety, runtime compilation/execution. Instead we can write SQL-like statements inside our normal code and return various collections, matching the database structure, giving us total type safety, very readable code and excellent performance as LINQ itself ensures that our queries are optimised for the exact query we're running.

Read the complete 914 bytes...

Digg it | Kick it | Dzone it | Reddit


Microsoft TechEd 2006, Barcelona

I arrived at Barcelona yesterday for the 2006 Microsoft TechEd conference. Phew it's hot. While Denmark has sunk into a state of winter, Barcelona's still hot and humid, it's nice to be able to walk outside in just a shirt without getting a cold or being appointed to a mental institution.

Read the complete 1277 bytes...

Digg it | Kick it | Dzone it | Reddit


Securing .NET code

During the last couple of weeks, I have been giving lectures on the subject of .NET code protection at some of the danish universities.

Read the complete 819 bytes...

Digg it | Kick it | Dzone it | Reddit