Formula One Update

f1

I just read that Ralf Schumacher will pause in 2008. But frankly, it’s not that surprising despite numerous “I will drive next year”-phrases. I always knew (and the rest of the world) that it wouldn’t happen because winning the title “best way to burn money in motor sport 05, 06 & 07” isn’t the best way to bring yourself to market.

But rather lie than admit the failure…

(My fearless prediction: There will never be again a Schumacher driving in the F1.)

Jens Heymann

Battle before Christmas – Appendix

What happens when something rare gets rarer – you’ve read it an article below. But it’s also interesting to watch what happens when the fate twists to the opposite – a “strictly” limited edition gets a second one.

afd936c622a0b21a3e253110._AA240_.L

Limited Edition of 300, first release

That took place in context with the Limited Edition of “300”. Every fanboy and collector got his copy and had been happy, proud and (I guess) felt also a little bit arrogant – what a great divinely thing he owns and others not.

51zvZEMgORL._AA240_

Limited Edition of 300, second release

Now everything is different. The big exclusiveness has gone. More fanboys can have their limited edition and doesn’t need to feel inferior any longer. Additionally this new version is different from the first one.

The reactions?

The previously exclusive owners of the first limited edition moan, that it’s only a rip-off of customers. In reality they are annoyed about spending much money for something (perhaps via bidding or third-party usury) that simply was not worth it.

All the other ones are happy and satisfied.

Jens Heymann

Battle before Christmas

So maybe you are on the ever cruel pre-Christmas present hunt. And maybe you have to satisfy some wishes for DVDs. Usually you have a great choice because there are often many new items available for the Christmas sale. But the case gets serious if you are looking for the special one – the brand new 5-disc Blade Runner Ultimate Collector’s Edition.

51yXAKOJP L._AA240_

Fans have been waiting for years for this to come. Consequently the huge response and the fast sell-out. In recent days I have been witnessing the price-development, a fine example of how the mechanisms of supply and demand work:

Amazon.de offered the set for 43,95€ on its web site. Many bought. Some marketplace and ebay-activities for about the same price or slightly below.

Then the sell-out. What happened?

1. No more primary supply, but plenty of demand left.

2. Amazon-marketplace increases the prices to an average of 90€.

3. Hefty ebay-auctions for about 70-100€.

Suddenly, Amazon is back in the game – again for 43,95€

4. The marketplace prices collapsed to 42€.

5. Analogously the offers at ebay.

It’s sell-out again, because the sudden availability was due to cancellations.

6. Quickly every item below 60€ is gone from the marketplace – the rest now in the 90€-range.

7. Adjustments also at ebay – biddings exploded.

The end of the line? Well, we learned that DVDs can be traded like shares at the stock-exchange. All you need are enough panic people who want the same thing under their Christmas tree. And we didn’t even take a look at the LIMITED Blade Runner set.

Some information by the way if you are considering a buy:

– It’s a patience game. Wait until after Christmas (OK, this would be too late for Christmas itself.).

– Look at the UK: Half the price and with German audio track (except the workprint).

– Look at the US: Even cheaper and every edition available (English only).

– The 5-DVD set is NOT limited. There will be a new release soon next year.

– Watch your other DVDs first.

Jens Heymann

Time for grading up

Now that my ol’ notebook (a Medion MD 41100, Dec. 2003) nearly has reached the biblic age of 4 years I looked around and spent some new parts. OK, that won’t change the mediocre resolution of 1024×768 nor the layout itself like a new notebook.

So first, some new RAM:

before: 512 MB, now 2 GB (two 1GB-Kingston-modules)

kingston-1gb-sodimm-notebook-memory 

Next, a new HD:

before: 40 GB Seagate Momentus 5400, now a WD Scorpio 160 GB 5400

WD1600BEVSretail

And finally, an extern case for the old HD, this time a Trust

9001180_2

One think I have to go now with is the different HD-busy-sound. The Seagate has a hard knocking while the WD swooshes like waves.

Jens Heymann

a greate line counting add-in for Visual Studio (2002, 2003, 2005)

Once every while I want to know how many lines of code I’ve written so far. And because I did not find a well working and integrated tool for this job yet I was searching one everytime. But it seems that I’ve found the tool: it’s called “Line Counter” and it’s Freeware. It’s a Visual Studio Add-In which means it’s fully integrated.

And it does the trick:

linecounter

You can even get the sources of this Add-In. Go and enjoy!

Source: http://www.wndtabs.com/index.html

it’s Talk like a Pirate Day, arrr!

“Once upon a time — on June 6, 1995, to be precise — we were playing racquetball, not well but gamely. It wasn’t our intention to become “the pirate guys.” Truth to tell, it wasn’t really our intention to become anything, except perhaps a tad thinner and healthier, and if you could see our photos, you’d know how THAT turned out. As we flailed away, we called out friendly encouragement to each other -“Damn, you bastard!” and “Oh, jeez, my hamstring!” for instance – as shots caromed away, unimpeded by our wildly swung rackets.

On this day, for reasons we still don’t quite understand, we started giving our encouragement in pirate slang. Mark suspects one of us might have been reaching for a low shot that, by pure chance, might have come off the wall at an unusually high rate of speed, and strained something best left unstrained. “Arrr!,” he might have said.

Who knows? It might have happened exactly that way.

Anyway, whoever let out the first “Arrr!” started something. One thing led to another. “That be a fine cannonade,” one said, to be followed by “Now watch as I fire a broadside straight into your yardarm!” and other such helpful phrases.

By the time our hour on the court was over, we realized that lapsing into pirate lingo had made the game more fun and the time pass more quickly. We decided then and there that what the world really needed was a new national holiday, Talk Like A Pirate Day. “

Source: http://www.talklikeapirate.com/about.html

a replacement software for your UMTS/3G card…

With every UMTS/3G card comes a tool that tracks your connection information, your traffic and everything… and it looks like this for a Vodafone UMTS card:

That’s not even close to cute and well useable. So someone took the task and created this:

screenshot3

A small tool that is compatible with almost any available UMTS/3G hardware on earth and has these features:

tiny executable: 0.3 MB, very little CPU load

  • permanently displaying:
    • up- and download speed in kBytes/s, used data volume in kByte (with round option), used online time (with round option), mode of operation UMTS(3G)/GPRS, signal strength in percent and dBm, network name and cell id (if provided by pc card), homezone status
  • movable mini window with information display:
    • sitting on the task bar, at upper screen border, in front of the start button, as dynamic tray icon with gauges
  • warning when exceeding data volume or online time
  • optional beep output for signal strength,network change and cell change
  • manual or automatic selection of network and mode
  • optional warning when using not listet networks
  • determination of receivable networks
  • retrieve and charge prepaid credit
  • automatics:
    • start/terminate connections,start extern programs such as Browser or Ping, reconnect after errors/freezes, generate network entry, dynamic com port determination
  • adjustable connection error tolerance
  • connection test by “smart Ping”
  • SMS reception can be activated
  • PC remote-control by SMS
  • SMS transmission by batch job
  • logging of data volume and connection information
  • connection statistics as semigraphics
  • timer for program end or shutdown
  • deactivate graphics compression (some networks)
  • scriptable
  • service terminal for data card commands
  • shows data card netlocks
  • service log for data card control communication
  • for Windows 2000/XP/Vista/embedded

And the best of all is that this is a freeware tool. Unfortunately it’s not available for OSX.

Source: http://www.mwconn.com

WLAN’s Labyrinth

So the Telekom finally managed to bring DSL to my home region. Immediately new stuff was bought to establish a WLAN-network inside the house. When I went home of course I wanted to add my laptop ( a Medion MD 41100, 4 years old) to the net to gain access. But after never having used the WLAN-functions before (yes, there are such people…) no one could know that this would end up in such tremendous trial and error.

The router was a Speedport W 900V and working. It took me about an hour to find the add-new-user-option in the router-menu. After filling in the MAC of my Intel PRO/Wireless LAN 2100 card and creating a new WLAN-connection I was ready to go but nothing happened (yet).

Speedport W 900V

From now I tried several ways to get it done:

1. Get your drivers updated

This was strongly recommended because my card didn’t know the WPA-coding yet, only the older WEP-standard. OK, done. Now I was able to type in some data required by the router. But still no connection.

2. Get your Windows updated

Somewhere I read that there is a support-patch for WPA by Microsoft. Downloaded and installed. Still no access.

3. Use the cards firmware

Intel programmed a software called Intel PROSet for doing some adjustments if needed and adding a new connection which I did. But again without any success.

Here an important thought crossed my mind: Maybe the card is deactivated (The problem had to be clearly somewhere in my laptop because I was using another one for researching in the Internet, so there was a WLAN available and it was working.).

Some clues:

PROSet-configuration (hardware deactivated)

Tray-icon (no network, no connection, transmitter OFF)

Good! So I narrowed down the problem. But how to activate the transmitter?

4. Try the Windows-network-configuration

Many options but nowhere the one I was looking for.

5. Try the firmware

Look above to the PROSet-configuration image: The option to activate the transmitter is simply disabled. Hmm…

6. Try the tray-icon

No, not here.

7. Check your BIOS

Yes, there is a WLAN-entry. But my Phoenix-BIOS has only two modes: card always deactivated on every start or card activated only if activated prior to the system shut-down. So no solution here.

8. Remove the card from your profile

Done and the same as before.

9. Deep-looking in windows

As you know there is a life under the desktop. Typing in %systemroot%\system32\services.msc brought up a nice menu about the systems local services. Here you look for network-connections as follows:

The way to start already has been “automatic”. OK.

10. Look for a hardware-button

Some of you might mention here that this could have happened much earlier: simply looking for an activation-button. And you are right, this button exists. However, pressing it changed nothing.

The solution:

The hardware-button proved to be a good hint. Next I checked the program for controlling the programmable buttons (EzSystem).

Hey, there is an option for WLAN. Activated and one system restart later it was like it was before: the card still deactivated. Then I checked out the directory of this EzSystem-Software.

wbutton.exe –> nothing happened

wirelesscontrol.exe –> peng! WLAN activated and access to the Internet.

Finally it worked. Let’s review it: Obviously you cannot activate WLAN neither through Windows nor the cards firmware; you need a third party’s software. This is (in my opinion) a very weird way.

So I guess that simply some links between components got lost and you have to re-engineer that. A hard task, especially if you have formatted the harddisc right after the purchase, do not knowing anything anymore about the original state and with the support disc hundreds of kilometers away.

Jens Heymann

this is what Flip3d should have been…

Switcher is the name of the tool that is available since some months and if you ever used Flip3d in Windows Vista you maybe know what it means when I say: Switcher is the Flip3d that should have shipped with Vista.

There are several usability issues with Vistas built-in Flip3d, take a look:

feat_UX_09

First of all you just don’t see the content of the windows… then you don’t see their name… then… who came up with that layout?

Compare that to the UI of Switcher:

switcher-1984-1

Neat, isn’t it? Try it, love it.

Source: http://baostuff.spaces.live.com/default.aspx

Windows Eventlog Client/Server Application to monitor your servers…

When I first saw a review of “Microsoft Windows Home Server” I was impressed by several features. One that I never thought about is that little icon on each Home Server client that shows you the overall status of your home network:

128073458_b451f2821f

This little icon can look like this, depending on the status:

128073457_f5531306fb

As you can see – it’ll give you a clean and fast status by telling you that everything is okay on your network or that anything needs your, maybe immediate, attention.

I am administrating round about 12 Windows servers and I always looked for a clean and easy to use tool to monitor them. So I came up with a plan: Build my own tool.

Since I am extensivly using Windows Communication Foundation in the last weeks I was intrigued to try it on that matter. So I built a WCF selfhosting service that makes the eventlog of the machine it is running on available. Then I built a small client that fits nicely in your tray. I am not quite done yet but it’s a good start.

vs_overview_eventlog

As you can see. There is the Host, running on the server and making all Eventlogs of this machine available. Then there is “SmallClient” – being exactly this: a small client for testing purposes only. And thirdly there’s the EventLogClient – giving you the full blown user interface…

This is how it looks when you add a server to the client:

eventlog_sources

And this is how it looks when you configure a filter:

eventlog_filters

I thought it would be nice to have this workflow:

  1. configure/add the server and select the eventlog that you want to monitor
  2. create and configure a filter that is matched upon the particular eventlog source

For the icons (see above) I used one of the icons from the Tango Icon Gallery as a starting point and added some color and stuff.

So why do I even talk about all this? I want YOU to take the code and use it…add more functionality…I am releasing the code(except the icons) under the BSD license. So you can do almost whatever you want with it – but I would love to hear about the things you’re doing with my code and idea.

You can download the sourcecode of my little project here. (200 Kbytes)

Source 1: Home Server Homepage
Source 2: http://tango.freedesktop.org/Tango_Icon_Gallery
Source 3: Sourcecode.

Olive is WCF for Mono.

Finally someone started to port the Windows Communication Foundation to Mono. That’s great news because the only thing that keeps some of my newest works from running under anything different Windows is the WCF.

monoolive

“Implementing peer-to-peer (P2P) communication was the main objective. WCF ships, by default, with predefined bits for making P2P connections in an easy way, being possible to build services which hosts a mesh of nodes (a node represents a potential client), taking care of everything related to registration of new nodes, message flow over the mesh, etc.”

You can get the plan as pdf here.

Source: Mono Olive

Team Foundation Server 2008 final Feature List

vs2008

The Team Foundation Server 2008 Feature list is finalized and available… read it here:

“Administration, Operations & Setup

  • Share Point 2007 support
  • Enable use of Sharepoint on any server and any port
  • Support for MOSS 2007
  • Enable support for Reporting Services on any server and any port (new) (RTM)
  • Support for SQL Named Instances – This will allow customers to share a SQL server between multiple TFS instances, or with other applications. This has been a commonly requested feature by enterprises.
  • “Longhorn” server support – TFS will support the next version of the server (and corresponding new version of IIS) that is currently under development.
  • Sync Large Groups – This is a set of work to improve the performance and robustness of TFS’s handling large groups of users (~30,000 or more) granted permission to a TFS instance. Today this can result in a support call to recover from it.
  • Non-default ports – We’ve gotten a bunch of feedback from enterprise customers about TFS’s limited support for alternate web sites and ports running afoul of data center policies. We are going to be improving TFS’s configurability in this respect in Orcas.
  • Simplify installation – In Orcas, we will be doing a variety of things to attempt to make installing TFS easier and quicker than it is now. Improvements include eliminating the separate data-tier installation, simplifying the requirements around required domain accounts by supporting the built in machine accounts (like Network Service) where we can, etc.
  • Official testing and support for more configurations – This includes clustering, mirroring, log shipping, Virtual machine deployment, and more.
  • Support for client certificates
  • Upgrade from TFS 2005
  • Support for SQL 2008 (aka Katmai) (new) (RTM)
  • TFSDeleteProject now permanently deletes (destroys) version control content (new) (RTM)
  • New role for many operations activities (new) (RTM) – You don’t have to be server administrator to run many of the admin utilities any longer.
  • Enhancements to tfsadminutil (new) (RTM) – New capability to configure accounts, connections, etc on both TFS and the TFS proxy.

Build (more detail)

  • Support multi-threaded builds with the new MSBuild.
  • Continuous Integration – There are many components to this, including build queuing and queue management, drop management (so that users can set policies for when builds should be automatically deleted), and build triggers that allows configuration of exactly how when CI builds should be triggered, for example – every checkin, rolling build (completion of one build starts the next), etc.
  • Improved ability to specify what source, versions of source, and other build properties.
  • Improved extensibility of the build targets – such as ability to easily execute targets before and after each solution/project is built.
  • Improved ability to manage multiple build machines.
  • Stop and delete builds from within VS.
  • .NET Object model for programming against the build server.
  • Simplified ability to specify what tests get run as part of a build.
  • The ability to store build definitions anywhere in the version control hierarchy.
  • Scheduled builds – You can schedule builds to happen at specified times.
  • Improved build agent communication – We replaced .NET binary remoting with WCF web services, simplifying some configuration and security aspects.
  • Ability to run GUI tests as part of a build – Automated builds used to run tests in such a way as to prevent access to a GUI desktop.
  • New checkin policy for broken CI builds – Preventing checkin while the CI build is broken.
  • Support for HTTPS communication to the TFS server (new)
  • Continuous Integration build checkin policy (new)
  • Support for incremental gets and builds (new)

Data Warehouse

  • Add support for checkin policy overrides to the warehouse – an oversight from V1.

Migration

  • Migration toolkit – A toolkit for building conversion and mirroring solutions between TFS and other systems. In addition, we will release one or more new tools to integrate with popular alternative systems.

Version Control

  • Annotate – This is based on the TFS Annotate Power Tool but includes numerous improvements.
  • Folder Diff – Also based on the TFS Tree Diff Power Tool with numerous improvements.
  • Destroy – The ability to permanently delete version control files/folders from TFS. It can also be used to destroy the file contents while preserving the change set history.
  • Get Latest On Checkout – There have been many requests for this feature (which was a change in behavior from SourceSafe). There is now an option that allows you to specify that you want TFS to download the latest version of files when you check them out.
  • Workspace improvements – Workspaces will now support mapping a folder or file under a cloaked folder and wildcard mappings so that you can map all files in a folder without mapping sub folders. Based on experience with large projects, this will simplify workspace definitions for many people.
  • Performance improvements – A variety of Version Control performance enhancements that will improve virtually all aspects of version control performance. The gains for smaller servers/projects (< 10,000 files) will be modest. The gains for larger projects (particularly where the file count approaches 100,000’s) will be substantial.
  • Scale improvements – Fixed out of memory problems on the server when operating on more than a few hundred thousand files at a time.
  • Offline improvements – We’ve signficantly improved the experience going offline and integrated the tfpt online capability into the IDE for going back online.
  • Extranet support for the TFS Proxy – allowing you to access a local TFS proxy with a different set of credentials than the TFS server.
  • Command line help – You can now type “tf command /help” and get a console dump of the usage of that command. This is much more convenient than always being launched into the richer GUI hypertext help when you just want to remember what the options for a command are. You can still launch the GUI help by running “tf msdn”. You can get a console dump of available commands by just typing “tf help”.
  • Source Control Explorer refresh improvements – This includes less redrawing and reloading but even more important it enables updates based on changes made in other instances of TeamExploror or the command line. That’s right, if you checkout a file from the command line, any instances of TeamExplorer you have running on the same machine will automatically refresh.
  • Async loading of the Source Control Explorer (new)
  • The SCE local path can now be selected and copied (new)
  • Merge improvements (new) – Improved the logic that detects merge conflicts to generate fewer false positives and handle more scenarios.

Work Item Tracking

  • Performance & Scale improvements – A variety of improvements that will make both the work item server and client faster and able to handle larger servers.
  • Query builder usability improvements – Drop down filtering based on current project, better MRU lists, column drag & drop, shift-click mouse based multi-column sorting, etc.
  • Attachments improvements – Save button, drag & drop for adding an attachment, multi-select for attaching files.
  • Tooltips on field names contain the field name used for querying
  • Server side support for deleting work items & work item types – We didn’t have time to do client UI support for it but we plan to release a Power Tool that will take advantage of the new server side feature.
  • Support for security on the iteration hierarchy (new)

Web Access

  • Adding Web Access UI to TFS – As you’ve seen many places, we acquired devBiz and their TeamPlain Web Access product. We are releasing it as a Power Tool in the next few months and plan to release it as an official product in the Orcas timeframe. We have not figured out how the release date will line up with the Orcas date but it will be in the same general timeframe.

Bug fixes

  • In addition to all of the feature work, we’ve spent months testing the product and fixing any bugs we’ve found. We expect Orcas will have even better stability and robustness than TFS 2005.

Compatibility (no change since last time)

As Orcas is an adoption focused release, we have put a lot of emphasis on compatibility with VS2005. We are striving for near 100% compatibility. The Orcas client will be able to work with a VS2005 server and a VS2005 client will be able to work with an Orcas server. There are only a few compatibility issues.

  • Client side VS add-ins will need to be recompiled (or have policy changed) because the TFS OM assembly versions will change and add-ins will need to bind to the new assemblies. The APIs themselves are generally not changing, so we don’t expect much in the way of code changes – just recompilation.
  • Build is the only area where we plan to have some compatibility disconnects. In general, most build operations – listing build definitions, starting and stopping builds, examining build reports, etc. will work both with 2005 client -> Orcas server and Orcas client -> 2005 server. However, here are a few caveats:
    1. An Orcas TFS server will only work with an Orcas build server – so you’ll need to upgrade your build server when you upgrade your TFS server.
    2. For an VS2005 client to start a build on an Orcas server, the build definition needs to be stored at $//TeamBuildTypes/. In Orcas, you have more flexibility as to where to put them.
    3. Changes made to properties in the .proj file that are in the database in Orcas will not be updated in the database and will no longer be in sync.
    4. VS2005 will be able to start a build, but it can’t queue a build, see the list of builds in the queue, see the list of build agents, etc.
    5. An Orcas client will not be able to create a new build definition on a TFS2005 server.
    6. When starting a build, an Orcas client will not be able to change any parameters in the dialog for a TFS2005 Server.”

Source: http://blogs.msdn.com/bharry/archive/2007/08/08/final-tfs-2008-feature-list.aspx

FeM at the Formula Student FSG07 Event at the Hockenheimring

Everybody needs more than one job these days and so does FeM. One team at the Chaos Communication Camp 07 and one at the Hockenheimring, recording and live streaming the events.

You may ask what “Formula Student” is…:

formula_student

“Students build a single seat formula racecar with which they can compete against teams from all over the world. The competition is not won solely by the team with the fastest car, but rather by the team with the best overall package of construction, performance, and financial and sales planning.

Formula Student challenges the team members to go the extra step in their education by incorporating into it intensive experience in building and manufacturing as well as considering the economic aspects of the automotive industry. Teams take on the assumption that they are a manufacturer developing a prototype to be evaluated for production. The target audience is the non-professional Weekend-Racer, for which the racecar must show very good driving characteristics such as acceleration, braking and handling. It should be offered at a very reasonable cost and be reliable and dependable. Additionally, the car’’s market value increases through other factors such as aesthetics, comfort and the use of readily available, standard purchase components.

The challenge the teams face is to compose a complete package consisting of a well constructed racecar and a sales plan that best matches these given criteria. The decision is made by a jury of experts from the motorsport, automotive and supplier industries. The jury will judge every team’s car and sales plan based on construction, cost planning and sales presentation. The rest of the judging will be done out on the track, where the students demonstrate in a number of performance tests how well their self-built racecars fare in their true environment.”

9ac8e20f0e
Overview map of the event

As soon as the Live-Streams are available I will keep you updated…

Source 1: http://www.formulastudent.de

Chaos Communication Camp 2007 – watch the livestreams FeM is broadcasting

Once again FeM is recording and live streaming a Chaos Computer Club event. The Chaos Communication Camp starts today and you can watch everything live:

“The Chaos Communication Camp is an international, five-day open-air event for hackers and associated life-forms. The Camp features two conference tracks with interesting lectures, a workshop-track and over 30 villages providing workshops and gettogethers covering a specific topic.”

Chaos Communication Camp 2007
The International Hacker Open Air Gathering
8|9|10|11|12th August 2007
Finowfurt near Berlin, Germany (Old Europe)

“You can participate! Bring your tent and join our villages. The Camp has everything you need: power, internet, food and fun. The 100.000 square meter areal features enough space to camp, cozy places to hang out and a nice pool and lake to swim and do nautic experiments.”

vlcsnap-2146979

There are two lecture halls called “foo” and “bar”:

Live Stream (WMV) “foo”
Live Stream (WMV) “bar”

Of course like at every CCC event you can grab an up-to-date schedule called “Fahrplan” here. The only thing I did not mention yet is the FeM-Village Wiki page…oh well..done :-)

Source 1: http://www.fem.tu-ilmenau.de
Source 2: http://events.ccc.de/camp/2007/Streams
Source 3: http://events.ccc.de/camp/2007/Fahrplan/
Source 4: http://events.ccc.de/camp/2007/FeM_Village

today (at least) one 360 died

There was this update. My 360 died right after it. Well: Coincidence?

IMG_7842

The support / repair experience is quite good so far – besides the fact that I have to get a coffin by myself and that they won’t add the lost Xbox Live Subscription Time to my account….

Now this is my second 360 that craps out. If you want to know what happened in 2006 to my first 360 go here.

Source: http://www.schrankmonster.de/PermaLink,guid,944f2bb2-696b-48fb-b06a-d8734f5a6f44.aspx

Software Transactional Memory

I am currently involved in a very interesting project which utilizes a massive load of threads and in-memory data structures. The downside if this is of course: how on earth do I make that thread-safe?

Along the journey I stumbled upon Ralf Westphals thoughts and code on that matter. Ralf comprehensively writes about a technology called “Software Transactional Memory“. “What’s that?” you may ask. And here’s the answer provided by the wikipedia:

“In computer science, software transactional memory (STM) is a concurrency control mechanism analogous to database transactions for controlling access to shared memory in concurrent computing. It functions as an alternative to lock-based synchronization, and is typically implemented in a lock-free way. A transaction in this context is a piece of code that executes a series of reads and writes to shared memory. These reads and writes logically occur at a single instant in time; intermediate states are not visible to other (successful) transactions. The idea of providing hardware support for transactions originated in a 1986 paper and patent by Tom Knight. The idea was popularized by Maurice Herlihy and J. Eliot B. Moss. In 1995 Nir Shavit and Dan Touitou extended this idea to software-only transactional memory (STM). STM has recently been the focus of intense research and support for practical implementations is growing.”

It seems that this different approach to in-memory data management could a solution for most of the difficulties I and maybe you might have with thread safe programming. Even better: it make the code easier to read and is completely written in C#.

Since I am still in the evaluation phase if or if not to use the NSTM implementation, I will keep you posted on that matter in future updates.

Source 1: http://weblogs.asp.net/ralfw/archive/tags/Software+Transactional+Memory/default.aspx
Source 2: http://en.wikipedia.org/wiki/Software_transactional_memory
Source 3: http://www.codeplex.com/NetSTM

Using the Exchange 2007 Web Service for Mail retrieval…

exchange07

So here’s the problem I had: There is an Exchange 2007 server I am forced to use for some of my daily work and that’s where the problems start: Due to the work of some evil geniuses there’s a load of user and security policies associated with that server. That’s not a problem per se: It’s just that things like “forward all mails to this account” don’t work. You have to use Outlook Web Access or the heavyweight Outlook to get to your mails… Till today I had an Outlook 2007 running on my private IMAP mailserver machine just for the purpose of downloading all the mail from the Exchange server to the local harddisk. I had setup a client-rule to copy all the mail to my IMAP server but despite the fact Outlook is running on the exact same machine as the IMAP server it just did not work for more than 1-20 messages… connections were lost and stuff screwed up. So I had to move all the messages manually (Select-All -> Drag-n-Drop onto the IMAP folder inside Outlook) which took me quite some time each month.

Two days ago I read an article where namenlos wrote about his journey with his employers Exchange server. He wrote a Python script that did the job for Exchange 2003 by using the WebDAV features. These features unfortunatly are deprecated in the current 2007 release of Exchange. So I decided to write a tool in C# that does the trick and uses the brand-spanking new Exchange 2007 Web Service.

The Exchange 2007 SDK is a wasteland to say the least when it comes to documentation. It took me some time and a good search engine to get to something useful out of it. But I think it’s worth the pain: When you got over the first annoying steps you’ll just like me will start to love the possibilities this Web Services give you.

In my case I am using the webservices to do these things:

  1. allocate my inbox and obtain a listing of messageIDs
  2. get the complete messages out of my inbox
  3. reformat the messages and send them via smtp to my own mail server

What I’ve written is not feature complete (as in: no attachements, …) but it’s a great and working start and does the 3 point-trick from above quite well. I will refine the code and add the missing features (e.g. attachements and stuff) in the future… or maybe you are faster than me. In that case it would be well appreciated if you send me your code/a link to the code (find my email in the sourcefile…)

code
get the code here. (90 kbytes)

Source 1: http://blog.slash-me.net/archives/235-fetchmail-fuer-MS-Exchange.html
Source 2: http://msdn2.microsoft.com/en-us/library/aa562613.aspx
Source 3: http://www.schrankmonster.de/content/binary/Exchange2IMAP.zip