<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Tim Van Wassenhove</title>
    <link>https://timvw.be/</link>
    <description>Recent content on Tim Van Wassenhove</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Tue, 24 Feb 2026 11:01:14 +0100</lastBuildDate>
    <atom:link href="https://timvw.be/feed.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Contact</title>
      <link>https://timvw.be/contact/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/contact/</guid>
      <description>&lt;div style=&#34;text-align: center; margin: 2em 0;&#34;&gt;&#xA;    &lt;img src=&#34;./images/tim-avatar.png&#34; alt=&#34;Tim Van Wassenhove&#34; style=&#34;width: 200px; height: 200px; border-radius: 50%; box-shadow: 0 4px 6px rgba(0,0,0,0.1);&#34;&gt;&#xA;&lt;/div&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;i data-feather=&#34;mail&#34;&gt;&lt;/i&gt; &lt;a href=&#34;mailto:tim@timvw.be&#34;&gt;tim@timvw.be&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;i data-feather=&#34;phone&#34;&gt;&lt;/i&gt; &lt;a href=&#34;tel:+32473998552&#34;&gt;+32 473 998 552&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;i data-feather=&#34;globe&#34;&gt;&lt;/i&gt; &lt;a href=&#34;https://timvw.be/&#34;&gt;timvw.be&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;i data-feather=&#34;github&#34;&gt;&lt;/i&gt; &lt;a href=&#34;https://github.com/timvw&#34;&gt;@timvw&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;i data-feather=&#34;linkedin&#34;&gt;&lt;/i&gt; &lt;a href=&#34;https://www.linkedin.com/in/timvanwassenhove&#34;&gt;Tim Van Wassenhove&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;i data-feather=&#34;at-sign&#34;&gt;&lt;/i&gt; &lt;a href=&#34;https://fosstodon.org/@timvw&#34;&gt;@timvw@fosstodon.org&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div style=&#34;margin: 2em 0; text-align: center;&#34;&gt;&#xA;    &lt;a href=&#34;./tim-van-wassenhove.vcf&#34; download style=&#34;display: inline-block; padding: 10px 20px; background-color: #333; color: white; text-decoration: none; border-radius: 5px; transition: background-color 0.3s;&#34;&gt;&#xA;        📇 Download vCard&#xA;    &lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div style=&#34;margin-top: 3em; padding-top: 2em; border-top: 1px solid #ddd;&#34;&gt;&#xA;    &lt;small&gt;Add my contact information to your address book by downloading the vCard above.&lt;/small&gt;&#xA;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;  feather.replace()&#xA;&lt;/script&gt;</description>
    </item>
    <item>
      <title>Configuring Scaleway SAML SSO with Authentik</title>
      <link>https://timvw.be/2026/02/24/configuring-scaleway-saml-sso-with-authentik/</link>
      <pubDate>Tue, 24 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2026/02/24/configuring-scaleway-saml-sso-with-authentik/</guid>
      <description>&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;&#xA;&lt;p&gt;In previous posts, I covered &lt;a href=&#34;./2025/03/17/setting-up-authentik-with-kubernetes-and-fluxcd/&#34;&gt;setting up Authentik with Kubernetes and FluxCD&lt;/a&gt;, &lt;a href=&#34;./2025/03/18/managing-authentik-with-terraform/&#34;&gt;managing Authentik with Terraform&lt;/a&gt;, and integrating it with services like &lt;a href=&#34;./2025/03/19/configuring-grafana-oauth-with-authentik/&#34;&gt;Grafana&lt;/a&gt;, &lt;a href=&#34;./2025/03/20/configuring-minio-oauth-with-authentik/&#34;&gt;MinIO&lt;/a&gt;, and &lt;a href=&#34;./2025/03/21/configuring-aws-identity-center-with-authentik-scim/&#34;&gt;AWS IAM Identity Center&lt;/a&gt;. Today, I&amp;rsquo;ll walk through how I configured SAML SSO for &lt;a href=&#34;https://www.scaleway.com/&#34;&gt;Scaleway&lt;/a&gt; using Authentik as the identity provider, all managed with Terraform.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.scaleway.com/&#34;&gt;Scaleway&lt;/a&gt; is a European cloud provider headquartered in Paris. As part of a broader move towards digital sovereignty and reducing dependency on US-based cloud providers, Scaleway offers an attractive alternative with data centers located exclusively in Europe. Integrating it with a self-hosted identity provider like Authentik fits well into this approach: keeping both infrastructure and identity management under European jurisdiction.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Keep Your Bose SoundTouch Speaker Alive After the Shutdown</title>
      <link>https://timvw.be/2026/02/17/keep-your-bose-soundtouch-speaker-alive-after-the-shutdown/</link>
      <pubDate>Tue, 17 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2026/02/17/keep-your-bose-soundtouch-speaker-alive-after-the-shutdown/</guid>
      <description>&lt;p&gt;Bose is shutting down the SoundTouch cloud servers on &lt;a href=&#34;https://www.bose.co.uk/en_gb/landing_pages/soundtouch-eol.html&#34;&gt;May 6, 2026&lt;/a&gt;. Once they do, your TuneIn presets stop working, the SoundTouch app loses most functionality, and you can no longer configure presets.&lt;/p&gt;&#xA;&lt;p&gt;The good news: you can fix all of this. &lt;a href=&#34;https://github.com/timvw/soundcork&#34;&gt;SoundCork&lt;/a&gt; is a self-hosted replacement for the Bose cloud servers. It runs on anything — a Raspberry Pi, a NAS, a Docker host, a Kubernetes cluster. Your speaker talks to your server instead of Bose, and everything keeps working.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Never Lose an AI Coding Session Again</title>
      <link>https://timvw.be/2026/02/16/never-lose-an-ai-coding-session-again/</link>
      <pubDate>Mon, 16 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2026/02/16/never-lose-an-ai-coding-session-again/</guid>
      <description>&lt;p&gt;We&amp;rsquo;re at an inflection point for software development. AI coding assistants &amp;ndash; Claude Code, OpenCode, Codex CLI &amp;ndash; have crossed the threshold from novelty to genuine productivity multiplier. Developers who lean into these tools are shipping products faster and at higher quality, not because the AI writes perfect code, but because it handles the grunt work while you focus on architecture, decisions, and review.&lt;/p&gt;&#xA;&lt;p&gt;If you&amp;rsquo;re running these tools seriously, you&amp;rsquo;re probably running multiple of them in parallel: one per project, one per task. &lt;a href=&#34;https://github.com/tmux/tmux&#34;&gt;tmux&lt;/a&gt; is the natural home for this workflow &amp;ndash; split panes, named sessions, scriptable, works over SSH. If you&amp;rsquo;re new to tmux, I wrote about &lt;a href=&#34;./2026/02/12/tmux-training-wheels-a-zellij-inspired-shortcut-hints-bar/&#34;&gt;training wheels to ease the learning curve&lt;/a&gt;, and &lt;a href=&#34;./2026/02/13/wt-a-better-way-to-manage-git-worktrees/&#34;&gt;wt&lt;/a&gt; makes managing parallel worktrees painless.&lt;/p&gt;</description>
    </item>
    <item>
      <title>wt: A Better Way to Manage Git Worktrees</title>
      <link>https://timvw.be/2026/02/13/wt-a-better-way-to-manage-git-worktrees/</link>
      <pubDate>Fri, 13 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2026/02/13/wt-a-better-way-to-manage-git-worktrees/</guid>
      <description>&lt;p&gt;If you work on multiple branches simultaneously, you&amp;rsquo;ve probably discovered &lt;a href=&#34;https://git-scm.com/docs/git-worktree&#34;&gt;git worktrees&lt;/a&gt;. They let you check out multiple branches at the same time in separate directories, without the overhead of cloning the repository again. The problem is that the built-in commands are tedious to use in practice. I built &lt;a href=&#34;https://github.com/timvw/wt&#34;&gt;wt&lt;/a&gt; to fix that.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-problem-with-vanilla-git-worktrees&#34;&gt;The Problem with Vanilla Git Worktrees&lt;/h2&gt;&#xA;&lt;p&gt;Using &lt;code&gt;git worktree&lt;/code&gt; directly means you have to:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Manually specify full paths every time you create a worktree&lt;/li&gt;&#xA;&lt;li&gt;Remember where you put each worktree on disk&lt;/li&gt;&#xA;&lt;li&gt;Manually &lt;code&gt;cd&lt;/code&gt; into the new directory after creating one&lt;/li&gt;&#xA;&lt;li&gt;Come up with your own naming and organizational conventions&lt;/li&gt;&#xA;&lt;li&gt;Clean up stale worktrees by hand when branches get merged&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;It&amp;rsquo;s powerful, but the workflow friction adds up quickly. After a while I found myself avoiding worktrees altogether simply because the ceremony around them was too high.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tmux Training Wheels: A Zellij-Inspired Shortcut Hints Bar</title>
      <link>https://timvw.be/2026/02/12/tmux-training-wheels-a-zellij-inspired-shortcut-hints-bar/</link>
      <pubDate>Thu, 12 Feb 2026 10:00:00 +0100</pubDate>
      <guid>https://timvw.be/2026/02/12/tmux-training-wheels-a-zellij-inspired-shortcut-hints-bar/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been using tmux since around 2010, after years of working with GNU Screen. Tmux itself has been around since &lt;a href=&#34;https://github.com/tmux/tmux&#34;&gt;2007&lt;/a&gt;, and over the years its shortcuts have become second nature to me. But I&amp;rsquo;ve noticed that when colleagues see my terminal setup and want to try tmux themselves, the keyboard shortcuts are the first barrier. They end up with a cheat sheet pinned to their monitor or open in a browser tab, constantly context-switching away from the terminal.&lt;/p&gt;</description>
    </item>
    <item>
      <title>FastMCP Distributed Tracing: Transport-Agnostic Context Propagation with _meta</title>
      <link>https://timvw.be/2025/10/14/fastmcp-distributed-tracing-transport-agnostic-context-propagation-with-_meta/</link>
      <pubDate>Tue, 14 Oct 2025 10:00:00 +0100</pubDate>
      <guid>https://timvw.be/2025/10/14/fastmcp-distributed-tracing-transport-agnostic-context-propagation-with-_meta/</guid>
      <description>&lt;p&gt;In my &lt;a href=&#34;./2025/06/27/distributed-tracing-with-fastmcp-combining-opentelemetry-and-langfuse/&#34;&gt;previous post&lt;/a&gt; about distributed tracing with FastMCP, I demonstrated how to propagate OpenTelemetry context using HTTP headers. While this approach worked well for HTTP-based deployments, it had a significant limitation: it only worked with HTTP transports.&lt;/p&gt;&#xA;&lt;p&gt;Today, I&amp;rsquo;m sharing an improved implementation that uses the MCP protocol&amp;rsquo;s &lt;code&gt;_meta&lt;/code&gt; field convention, making trace context propagation truly transport-agnostic.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-problem-with-http-headers&#34;&gt;The Problem with HTTP Headers&lt;/h2&gt;&#xA;&lt;p&gt;The original HTTP-header-based approach had several limitations:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;Transport-Specific&lt;/strong&gt;: Only worked with HTTP/SSE transports, not with stdio&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Not Standard&lt;/strong&gt;: Required transport-specific implementations&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Limited Portability&lt;/strong&gt;: Didn&amp;rsquo;t follow MCP protocol conventions&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;For MCP servers that need to support multiple transports (stdio for local development, HTTP for remote deployments, SSE for streaming), this was a real constraint.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Distributed Tracing with FastMCP: Combining OpenTelemetry and Langfuse</title>
      <link>https://timvw.be/2025/06/27/distributed-tracing-with-fastmcp-combining-opentelemetry-and-langfuse/</link>
      <pubDate>Fri, 27 Jun 2025 10:00:00 +0100</pubDate>
      <guid>https://timvw.be/2025/06/27/distributed-tracing-with-fastmcp-combining-opentelemetry-and-langfuse/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;Update (October 2025)&lt;/strong&gt;: This post describes the original HTTP-header-based approach to trace context propagation. For a transport-agnostic solution that works with stdio, HTTP, and SSE transports, see the updated implementation using the MCP &lt;code&gt;_meta&lt;/code&gt; field convention in my follow-up post: &lt;a href=&#34;./2025/10/14/fastmcp-distributed-tracing-meta-field/&#34;&gt;FastMCP Distributed Tracing: Transport-Agnostic Context Propagation with _meta&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;When building distributed AI applications with &lt;a href=&#34;https://github.com/jlowin/fastmcp&#34;&gt;FastMCP&lt;/a&gt;, proper observability becomes crucial. In this post, I&amp;rsquo;ll show you how to combine &lt;a href=&#34;https://opentelemetry.io/&#34;&gt;OpenTelemetry&lt;/a&gt; context propagation with &lt;a href=&#34;https://langfuse.com/&#34;&gt;Langfuse&lt;/a&gt; to achieve seamless distributed tracing across your MCP client and server components.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Implementing Domain-Level Forward Authentication with Authentik</title>
      <link>https://timvw.be/2025/03/22/implementing-domain-level-forward-authentication-with-authentik/</link>
      <pubDate>Sat, 22 Mar 2025 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2025/03/22/implementing-domain-level-forward-authentication-with-authentik/</guid>
      <description>&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;&#xA;&lt;p&gt;In my previous posts on Authentik, I&amp;rsquo;ve covered &lt;a href=&#34;./2025/03/17/setting-up-authentik-with-kubernetes-and-fluxcd/&#34;&gt;setting up the platform&lt;/a&gt;, &lt;a href=&#34;./2025/03/18/managing-authentik-with-terraform/&#34;&gt;managing it with Terraform&lt;/a&gt;, and integrating it with services like &lt;a href=&#34;./2025/03/19/configuring-grafana-oauth-with-authentik/&#34;&gt;Grafana&lt;/a&gt;, &lt;a href=&#34;./2025/03/20/configuring-minio-oauth-with-authentik/&#34;&gt;MinIO&lt;/a&gt;, and &lt;a href=&#34;./2025/03/21/configuring-aws-identity-center-with-authentik-scim/&#34;&gt;AWS IAM Identity Center&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Today, I&amp;rsquo;ll explain how I implemented domain-level forward authentication to protect multiple applications in my Kubernetes cluster using Authentik&amp;rsquo;s forward auth provider and NGINX ingress controller.&lt;/p&gt;&#xA;&lt;h2 id=&#34;understanding-forward-authentication&#34;&gt;Understanding Forward Authentication&lt;/h2&gt;&#xA;&lt;p&gt;Forward authentication is a pattern where a proxy (like NGINX) delegates the authentication decision to an external service (in our case, Authentik). This approach allows you to protect multiple applications without modifying their code or configurations.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Configuring AWS Identity Center with Authentik SCIM Provisioning</title>
      <link>https://timvw.be/2025/03/21/configuring-aws-identity-center-with-authentik-scim-provisioning/</link>
      <pubDate>Fri, 21 Mar 2025 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2025/03/21/configuring-aws-identity-center-with-authentik-scim-provisioning/</guid>
      <description>&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;&#xA;&lt;p&gt;In previous posts, I&amp;rsquo;ve covered &lt;a href=&#34;./2025/03/17/setting-up-authentik-with-kubernetes-and-fluxcd/&#34;&gt;setting up Authentik with Kubernetes and FluxCD&lt;/a&gt;, &lt;a href=&#34;./2025/03/18/managing-authentik-with-terraform/&#34;&gt;managing Authentik with Terraform&lt;/a&gt;, and integrating it with various services like &lt;a href=&#34;./2025/03/19/configuring-grafana-oauth-with-authentik/&#34;&gt;Grafana&lt;/a&gt; and &lt;a href=&#34;./2025/03/20/configuring-minio-oauth-with-authentik/&#34;&gt;MinIO&lt;/a&gt;. Today, I&amp;rsquo;ll explain how I configured AWS IAM Identity Center (formerly AWS SSO) with Authentik using SCIM provisioning.&lt;/p&gt;&#xA;&lt;p&gt;AWS IAM Identity Center has become a critical component for managing access to AWS accounts and applications. By integrating it with Authentik using SCIM (System for Cross-domain Identity Management), we can automate user provisioning and deprovisioning, centralize identity management, and implement consistent access controls across our AWS environment.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Configuring MinIO OAuth with Authentik</title>
      <link>https://timvw.be/2025/03/20/configuring-minio-oauth-with-authentik/</link>
      <pubDate>Thu, 20 Mar 2025 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2025/03/20/configuring-minio-oauth-with-authentik/</guid>
      <description>&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;&#xA;&lt;p&gt;Following our previous posts about &lt;a href=&#34;./2025/03/17/setting-up-authentik-with-kubernetes-and-fluxcd/&#34;&gt;setting up Authentik with Kubernetes and FluxCD&lt;/a&gt;, &lt;a href=&#34;./2025/03/18/managing-authentik-with-terraform/&#34;&gt;managing Authentik with Terraform&lt;/a&gt;, and &lt;a href=&#34;./2025/03/19/configuring-grafana-oauth-with-authentik/&#34;&gt;configuring Grafana OAuth integration&lt;/a&gt;, today I&amp;rsquo;ll share how I implemented OAuth authentication for MinIO using Authentik as the identity provider.&lt;/p&gt;&#xA;&lt;p&gt;MinIO is a high-performance object storage system compatible with Amazon S3 API. By integrating it with Authentik, we can leverage centralized authentication and role-based access control for our object storage environment.&lt;/p&gt;&#xA;&lt;h2 id=&#34;integration-overview&#34;&gt;Integration Overview&lt;/h2&gt;&#xA;&lt;p&gt;The integration between MinIO and Authentik involves the following components:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Configuring Grafana OAuth with Authentik</title>
      <link>https://timvw.be/2025/03/19/configuring-grafana-oauth-with-authentik/</link>
      <pubDate>Wed, 19 Mar 2025 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2025/03/19/configuring-grafana-oauth-with-authentik/</guid>
      <description>&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;&#xA;&lt;p&gt;Following our previous posts about &lt;a href=&#34;./2025/03/17/setting-up-authentik-with-kubernetes-and-fluxcd/&#34;&gt;setting up Authentik with Kubernetes and FluxCD&lt;/a&gt; and &lt;a href=&#34;./2025/03/18/managing-authentik-with-terraform/&#34;&gt;managing Authentik with Terraform&lt;/a&gt;, today we&amp;rsquo;ll demonstrate how to implement OAuth authentication for Grafana using Authentik as the identity provider. This integration offers several benefits:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Centralized user management with single sign-on (SSO)&lt;/li&gt;&#xA;&lt;li&gt;Role-based access control for Grafana using Authentik groups&lt;/li&gt;&#xA;&lt;li&gt;Secure authentication without the need to maintain separate user databases&lt;/li&gt;&#xA;&lt;li&gt;Consistent user experience across services&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;infrastructure-overview&#34;&gt;Infrastructure Overview&lt;/h2&gt;&#xA;&lt;p&gt;Our setup consists of:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Managing Authentik with Terraform</title>
      <link>https://timvw.be/2025/03/18/managing-authentik-with-terraform/</link>
      <pubDate>Tue, 18 Mar 2025 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2025/03/18/managing-authentik-with-terraform/</guid>
      <description>&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;&#xA;&lt;p&gt;In my &lt;a href=&#34;./2025/03/17/setting-up-authentik-with-kubernetes-and-fluxcd/&#34;&gt;previous post&lt;/a&gt;, I detailed how to deploy &lt;a href=&#34;https://goauthentik.io/&#34;&gt;Authentik&lt;/a&gt; on Kubernetes using FluxCD for GitOps-driven management. Today, I&amp;rsquo;ll explore how to manage the configuration of your Authentik instance using Terraform, providing a complete infrastructure-as-code solution for your identity provider.&lt;/p&gt;&#xA;&lt;h2 id=&#34;why-terraform-for-authentik&#34;&gt;Why Terraform for Authentik?&lt;/h2&gt;&#xA;&lt;p&gt;While deploying Authentik with Kubernetes and FluxCD gives us a solid foundation, we still need to configure the actual identity provider - creating applications, setting up OAuth providers, configuring authorization policies, and more. This is where Terraform comes in.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Setting up Authentik with Kubernetes and FluxCD</title>
      <link>https://timvw.be/2025/03/17/setting-up-authentik-with-kubernetes-and-fluxcd/</link>
      <pubDate>Mon, 17 Mar 2025 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2025/03/17/setting-up-authentik-with-kubernetes-and-fluxcd/</guid>
      <description>&lt;h2 id=&#34;introduction-to-authentik&#34;&gt;Introduction to Authentik&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://goauthentik.io/&#34;&gt;Authentik&lt;/a&gt; is a powerful open-source Identity Provider (IdP) that allows centralized management of user authentication, authorization, and single sign-on. In this post, I&amp;rsquo;ll walk through how I&amp;rsquo;ve set up Authentik in my Kubernetes cluster using FluxCD for GitOps-driven deployment.&lt;/p&gt;&#xA;&lt;h2 id=&#34;infrastructure-overview&#34;&gt;Infrastructure Overview&lt;/h2&gt;&#xA;&lt;p&gt;I&amp;rsquo;m using a GitOps approach with FluxCD to manage my Kubernetes infrastructure. The configuration is maintained in a Git repository, ensuring that my entire setup is declarative and version-controlled.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Upgrading microk8s (snap) on Ubuntu</title>
      <link>https://timvw.be/2024/07/01/upgrading-microk8s-snap-on-ubuntu/</link>
      <pubDate>Mon, 01 Jul 2024 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2024/07/01/upgrading-microk8s-snap-on-ubuntu/</guid>
      <description>&lt;p&gt;I have been using &lt;a href=&#34;https://microk8s.io/&#34;&gt;microk8s&lt;/a&gt; for a couple of years now.&#xA;On my ubuntu system it&amp;rsquo;s installed as a &lt;a href=&#34;https://snapcraft.io/&#34;&gt;snap&lt;/a&gt; and was stuck on v1.28.&#xA;I was greeted with an error something similar to:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Hit:2 http://security.ubuntu.com/ubuntu jammy-security InRelease&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Get:1 https://packages.cloud.google.com/apt kubernetes-xenial InRelease [8,993 B]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Err:1 https://packages.cloud.google.com/apt kubernetes-xenial InRelease&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  The following signatures couldn&amp;#39;t be verified because the public key is not available: NO_PUBKEY B53DC80D13EDEF05&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Here is how you can fix this:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Parsing with Pest</title>
      <link>https://timvw.be/2022/06/16/parsing-with-pest/</link>
      <pubDate>Thu, 16 Jun 2022 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2022/06/16/parsing-with-pest/</guid>
      <description>&lt;p&gt;A couple of weeks ago I was working on &lt;a href=&#34;https://github.com/datafusion-contrib/datafusion-catalogprovider-glue&#34;&gt;datafusion-catalogprovider-glue&lt;/a&gt;, a catalogprovider for &lt;a href=&#34;https://github.com/apache/arrow-datafusion&#34;&gt;Datafusion&lt;/a&gt; sourcing from &lt;a href=&#34;https://aws.amazon.com/glue&#34;&gt;AWS Glue&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;The &lt;a href=&#34;https://github.com/awslabs/aws-sdk-rust&#34;&gt;AWS SDK for Rust&lt;/a&gt; returns an UTF-8 string as the datatype value for each &lt;a href=&#34;https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-catalog-tables.html#aws-glue-api-catalog-tables-Column&#34;&gt;column&lt;/a&gt; in a table. A &lt;a href=&#34;https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html&#34;&gt;crawler&lt;/a&gt; will use &lt;a href=&#34;https://docs.aws.amazon.com/athena/latest/ug/data-types.html&#34;&gt;datatypes&lt;/a&gt; which are supported by &lt;a href=&#34;https://aws.amazon.com/athena&#34;&gt;Athena&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Parsing the initial data types was pretty simple:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-rust&#34; data-lang=&#34;rust&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;match&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;glue_type&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;int&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;Ok&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;DataType::Int32&lt;span style=&#34;color:#1f2328&#34;&gt;),&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;boolean&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;Ok&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;DataType::Boolean&lt;span style=&#34;color:#1f2328&#34;&gt;),&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;bigint&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;Ok&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;DataType::Int64&lt;span style=&#34;color:#1f2328&#34;&gt;),&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;float&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;Ok&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;DataType::Float32&lt;span style=&#34;color:#1f2328&#34;&gt;),&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;..&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Support for decimal and arrays remained simple with some &lt;a href=&#34;https://docs.rs/regex/latest/regex/&#34;&gt;regular expressions&lt;/a&gt; and recursion:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Notes on running (java) FlightSqlExample</title>
      <link>https://timvw.be/2022/04/28/notes-on-running-java-flightsqlexample/</link>
      <pubDate>Thu, 28 Apr 2022 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2022/04/28/notes-on-running-java-flightsqlexample/</guid>
      <description>&lt;p&gt;Here are my notes on how to run the sample java &lt;a href=&#34;https://arrow.apache.org/blog/2022/02/16/introducing-arrow-flight-sql/&#34;&gt;Arrow Flight SQL&lt;/a&gt; server and client.&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Clone &lt;a href=&#34;https://github.com/apache/arrow/&#34;&gt;https://github.com/apache/arrow/&lt;/a&gt;:&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git clone git@github.com:apache/arrow.git&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;2&#34;&gt;&#xA;&lt;li&gt;Install snapshot versions of arrow:&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;cd&lt;/span&gt; java&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mvn clean install -DskipTests&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;3&#34;&gt;&#xA;&lt;li&gt;Add Application entry point:&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;cd&lt;/span&gt; flight/flight-sql&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cat &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;lt;&amp;lt; EOF &amp;gt; ./src/test/java/org/apache/arrow/flight/sql/example/Main.java&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;package org.apache.arrow.flight.sql.example;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;import org.apache.arrow.flight.FlightServer;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;import org.apache.arrow.flight.Location;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;import org.apache.arrow.memory.BufferAllocator;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;import org.apache.arrow.memory.RootAllocator;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;public class Main {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;    public static void main(String args[]) throws Exception {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;        BufferAllocator allocator = new RootAllocator(Integer.MAX_VALUE);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;        final String LOCALHOST = &amp;#34;localhost&amp;#34;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;        final Location serverLocation = Location.forGrpcInsecure(LOCALHOST, 52358);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;        final FlightServer server = FlightServer.builder(allocator, serverLocation, new FlightSqlExample(serverLocation))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;                .build()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;                .start();&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;        System.out.println(&amp;#34;server is up and running at port: &amp;#34; + server.getPort());&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;        Thread.sleep(Long.MAX_VALUE);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;EOF&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;4. Run the server:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;```&lt;/span&gt;bash&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mvn &lt;span style=&#34;color:#6639ba&#34;&gt;test&lt;/span&gt; exec:java -Dcheckstyle.skip -DskipTests&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;true&lt;/span&gt; -Drat.skip&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;true&lt;/span&gt; -Dexec.mainClass&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;org.apache.arrow.flight.sql.example.Main&amp;#34;&lt;/span&gt; -Dexec.classpathScope&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;test&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;5&#34;&gt;&#xA;&lt;li&gt;Compile the client:&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mvn compile -Dcheckstyle.skip -Drat.skip&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;6&#34;&gt;&#xA;&lt;li&gt;Run client without arguments:&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mvn exec:java -Dcheckstyle.skip -Drat.skip&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;true&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&lt;/span&gt;    -Dexec.mainClass&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;org.apache.arrow.flight.sql.example.FlightSqlClientDemoApp&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Output:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Notes on using grpc with rust and tonic</title>
      <link>https://timvw.be/2022/04/28/notes-on-using-grpc-with-rust-and-tonic/</link>
      <pubDate>Thu, 28 Apr 2022 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2022/04/28/notes-on-using-grpc-with-rust-and-tonic/</guid>
      <description>&lt;p&gt;In the Tonic &lt;a href=&#34;https://github.com/hyperium/tonic/tree/master/examples&#34;&gt;examples&lt;/a&gt; proto files are used to generated service and client stubs with &lt;a href=&#34;https://docs.rs/tonic-build/latest/tonic_build/&#34;&gt;tonic_build&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;The &lt;a href=&#34;https://github.com/hyperium/tonic/&#34;&gt;Getting started&lt;/a&gt; section mentions the following:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;For IntelliJ IDEA users, please refer to &lt;a href=&#34;https://github.com/intellij-rust/intellij-rust/pull/8056&#34;&gt;this&lt;/a&gt; and enable org.rust.cargo.evaluate.build.scripts &lt;a href=&#34;https://plugins.jetbrains.com/plugin/8182-rust/docs/rust-faq.html#experimental-features&#34;&gt;experimental feature&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;But in order to have a nice development experience you need some additional tweaks.&lt;/p&gt;&#xA;&lt;p&gt;You can find the full code here: &lt;a href=&#34;https://github.com/timvw/arrow-flightsql-odbc&#34;&gt;https://github.com/timvw/arrow-flightsql-odbc&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;By default the stubs are generated in ./target/&amp;hellip;/build/&amp;hellip; Unfortunately &lt;a href=&#34;https://www.jetbrains.com/clion/&#34;&gt;CLion&lt;/a&gt; does not scan those folders and you don&amp;rsquo;t get to benefit from intellisense.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hosting a secure registry on microk8s</title>
      <link>https://timvw.be/2021/11/08/hosting-a-secure-registry-on-microk8s/</link>
      <pubDate>Mon, 08 Nov 2021 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2021/11/08/hosting-a-secure-registry-on-microk8s/</guid>
      <description>&lt;p&gt;The documentation for microk8s seems to suggest that there is a built-in registry that can be used, but not in a secure way.&lt;/p&gt;&#xA;&lt;p&gt;In essence, you need to &lt;a href=&#34;https://docs.docker.com/registry/configuration&#34;&gt;configure&lt;/a&gt; the following:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Storage&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;For storage I will assume that the local filesystem is sufficient (or that you have a safety net, such as NFS backing it up, in place).&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Authentication&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;For authentication I use create a secret which contains a htpasswd file, here is how you can generate this:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Notes on microk8s and cert-manager</title>
      <link>https://timvw.be/2021/03/15/notes-on-microk8s-and-cert-manager/</link>
      <pubDate>Mon, 15 Mar 2021 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2021/03/15/notes-on-microk8s-and-cert-manager/</guid>
      <description>&lt;p&gt;Last couple of weeks I&amp;rsquo;ve been using &lt;a href=&#34;https://microk8s.io/&#34;&gt;MicroK8s&lt;/a&gt; for local development.&lt;/p&gt;&#xA;&lt;p&gt;Installing current version of &lt;a href=&#34;https://cert-manager.io/docs/&#34;&gt;cert-manager&lt;/a&gt; just worked by following the &lt;a href=&#34;https://cert-manager.io/docs/installation/kubernetes/&#34;&gt;installation instructions&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.2.0/cert-manager.yaml&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Then I enabled the &lt;a href=&#34;https://microk8s.io/docs/addon-ingress&#34;&gt;ingress addon&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;microk8s.enable ingress&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Configuring &lt;a href=&#34;https://letsencrypt.org/&#34;&gt;Let&amp;rsquo;s Encrypt&lt;/a&gt; required some deviations from the &lt;a href=&#34;https://cert-manager.io/docs/configuration/acme/&#34;&gt;documentation&lt;/a&gt;. Only resources of type ClusterIssuer and public as ingress class seem to work:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-yml&#34; data-lang=&#34;yml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;apiVersion&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;cert-manager.io/v1&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;kind&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;ClusterIssuer&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;metadata&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;letsencrypt-staging&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;spec&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;acme&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;email&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;tim@timvw.be&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;server&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;https://acme-staging-v02.api.letsencrypt.org/directory&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;privateKeySecretRef&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;letsencrypt-staging&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;solvers&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;- &lt;span style=&#34;color:#0550ae&#34;&gt;http01&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;        &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;ingress&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;          &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;class&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;public&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#24292e&#34;&gt;---&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;apiVersion&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;cert-manager.io/v1&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;kind&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;ClusterIssuer&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;metadata&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;letsencrypt-prod&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;spec&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;acme&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;server&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;https://acme-v02.api.letsencrypt.org/directory&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;email&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;tim@timvw.be&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;privateKeySecretRef&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;letsencrypt-prod&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;solvers&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;- &lt;span style=&#34;color:#0550ae&#34;&gt;http01&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;        &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;ingress&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;          &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;class&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;public &lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;When using nginx as ingress class I ran into various errors:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Use cases for Github Actions</title>
      <link>https://timvw.be/2021/01/20/use-cases-for-github-actions/</link>
      <pubDate>Wed, 20 Jan 2021 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2021/01/20/use-cases-for-github-actions/</guid>
      <description>&lt;p&gt;These days many systems are built with &lt;a href=&#34;http://catb.org/~esr/writings/taoup/html/ch01s06.html&#34;&gt;Unix Philosophy&lt;/a&gt; in mind,&#xA;but the applications are in the form of &lt;a href=&#34;https://opencontainers.org/&#34;&gt;containers&lt;/a&gt;. How many malicious containers images would be out there? :)&lt;/p&gt;&#xA;&lt;p&gt;Here are a couple of examples where I leveraged &lt;a href=&#34;https://github.com/features/actions&#34;&gt;Github Actions&lt;/a&gt; to glue such applications:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#hugo&#34; title=&#34;hugo&#34;&gt;Publishing this blog with HUGO&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#central&#34; title=&#34;central&#34;&gt;Releasing on central&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#terraform&#34; title=&#34;terraform&#34;&gt;Managing cloud infrastructure&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;hugo&#34;&gt;Publishing this blog with HUGO&lt;/h2&gt;&#xA;&lt;p&gt;Frustrated with jekyll ndependency hell I decided to swith to &lt;a href=&#34;https://gohugo.io/&#34;&gt;HUGO&lt;/a&gt;. It&amp;rsquo;s fast, really fast. And does whatever I need it to do.&lt;/p&gt;</description>
    </item>
    <item>
      <title>cluster-info on k8s cluster with limited permissions</title>
      <link>https://timvw.be/2021/01/05/cluster-info-on-k8s-cluster-with-limited-permissions/</link>
      <pubDate>Tue, 05 Jan 2021 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2021/01/05/cluster-info-on-k8s-cluster-with-limited-permissions/</guid>
      <description>&lt;p&gt;When you have limited access (eg: only a specific &lt;a href=&#34;https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/&#34;&gt;namespace&lt;/a&gt; (~ &lt;a href=&#34;https://docs.openshift.com/enterprise/3.0/architecture/core_concepts/projects_and_users.html#:~:text=A%20Kubernetes%20namespace%20provides%20a,provide%20a%20unique%20scope%20for%3A&amp;amp;text=The%20ability%20to%20limit%20community%20resource%20consumption.&#34;&gt;openshift project&lt;/a&gt;) on a kubernetes cluster you may not be able to run kubectl cluster-info.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;➜  ~ kubectl cluster-info&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;To further debug and diagnose cluster problems, use &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;kubectl cluster-info dump&amp;#39;&lt;/span&gt;.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Error from server &lt;span style=&#34;color:#0550ae&#34;&gt;(&lt;/span&gt;Forbidden&lt;span style=&#34;color:#0550ae&#34;&gt;)&lt;/span&gt;: services is forbidden: User &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;timvw&amp;#34;&lt;/span&gt; cannot list resource &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;services&amp;#34;&lt;/span&gt; in API group &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt; in the namespace &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;kube-system&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;As soon as you run the command in your namespace  it will work:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;➜  ~ kubectl cluster-info -n spark&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Kubernetes master is running at https://api.customer.example:443&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;To further debug and diagnose cluster problems, use &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;kubectl cluster-info dump&amp;#39;&lt;/span&gt;.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Leverage Terraform to create virtual machine scaleset with spot instances</title>
      <link>https://timvw.be/2020/12/09/leverage-terraform-to-create-virtual-machine-scaleset-with-spot-instances/</link>
      <pubDate>Wed, 09 Dec 2020 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2020/12/09/leverage-terraform-to-create-virtual-machine-scaleset-with-spot-instances/</guid>
      <description>&lt;p&gt;In a &lt;a href=&#34;https://timvw.be/2020/02/10/terraform-azure-k8s-nginx-letsencrypt.html&#34;&gt;previous&lt;/a&gt; post I demonstrated how easy it has become to deploy a webapplications with an HTTPS backend on Kubernetes and Azure. Let&amp;rsquo;s expand this cluster with a node pool that is backed by &lt;a href=&#34;https://azure.microsoft.com/en-us/pricing/spot/&#34;&gt;spot&lt;/a&gt; instances:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;resource &amp;#34;azurerm_kubernetes_cluster_node_pool&amp;#34; &amp;#34;spot&amp;#34; {&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;name                  = &amp;#34;spot&amp;#34;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;kubernetes_cluster_id = azurerm_kubernetes_cluster.k8s.id&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;vm_size         = &amp;#34;standard_D2s_v4&amp;#34;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;node_count      = 0&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;enable_auto_scaling = true&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;min_count = 0&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;max_count = 5&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;priority = &amp;#34;Spot&amp;#34;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;eviction_policy = &amp;#34;Delete&amp;#34;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;spot_max_price = 0.02&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;tags       = var.tags&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;}&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The nodes in this pool will be &lt;a href=&#34;https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/&#34;&gt;tainted&lt;/a&gt; with kubernetes.azure.com/scalesetpriority=spot:NoSchedule.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Leverage Terraform, NGINX Ingress Controller, cert-manager and Let&#39;s Encrypt to quickly create a Kubernetes cluster on AWS.</title>
      <link>https://timvw.be/2020/02/25/leverage-terraform-nginx-ingress-controller-cert-manager-and-lets-encrypt-to-quickly-create-a-kubernetes-cluster-on-aws./</link>
      <pubDate>Tue, 25 Feb 2020 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2020/02/25/leverage-terraform-nginx-ingress-controller-cert-manager-and-lets-encrypt-to-quickly-create-a-kubernetes-cluster-on-aws./</guid>
      <description>&lt;p&gt;In my &lt;a href=&#34;https://timvw.be/2020/02/10/terraform-azure-k8s-nginx-letsencrypt.html&#34;&gt;previous&lt;/a&gt; post I demonstrated how easy it has become to deploy a webapplications with an HTTPS backend on Kubernetes and Azure. In this post I demonstrate the same but on AWS.&lt;/p&gt;&#xA;&lt;p&gt;In order to follow along you should clone the sample code from this &lt;a href=&#34;https://github.com/timvw/sample-terraform-aws-k8s-nginx-letsencrypt&#34;&gt;repository&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git clone https://github.com/timvw/sample-terraform-aws-k8s-nginx-letsencrypt&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;First &lt;a href=&#34;hhttps://www.terraform.io/docs/providers/aws/index.html&#34;&gt;configure the aws access_key and secret_key for Terraform&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;export&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;AWS_ACCESS_KEY&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;XXXXXXXXXXXXXXXXXX&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;export&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;AWS_SECRET_KEY&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;XXXXXXXXXXXXXXXXXX&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;export&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;AWS_DEFAULT_REGION&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;eu-west-1&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;With all this configuration in place we can instruct Terraform to create the kubernetes cluster:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Leverage Terraform, NGINX Ingress Controller, cert-manager and Let&#39;s Encrypt to quickly create a Kubernetes cluster which can serve webapps over HTTPS.</title>
      <link>https://timvw.be/2020/02/10/leverage-terraform-nginx-ingress-controller-cert-manager-and-lets-encrypt-to-quickly-create-a-kubernetes-cluster-which-can-serve-webapps-over-https./</link>
      <pubDate>Mon, 10 Feb 2020 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2020/02/10/leverage-terraform-nginx-ingress-controller-cert-manager-and-lets-encrypt-to-quickly-create-a-kubernetes-cluster-which-can-serve-webapps-over-https./</guid>
      <description>&lt;p&gt;In this post I demonstrate how easy it has become to create a kubernetes cluster which serves webapplications over HTTPS.&lt;/p&gt;&#xA;&lt;p&gt;In order to follow along you should clone the sample code from this &lt;a href=&#34;https://github.com/timvw/sample-terraform-azure-k8s-nginx-letsencrypt&#34;&gt;repository&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git clone https://github.com/timvw/sample-terraform-azure-k8s-nginx-letsencrypt&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;First &lt;a href=&#34;https://www.terraform.io/docs/providers/azurerm/guides/service_principal_client_secret.html&#34;&gt;configure the azure service principal for Terraform&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;export&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;ARM_CLIENT_ID&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;XXXXX-XXXXX-XXXXX-XXXXX-XXXXX&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;export&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;ARM_CLIENT_SECRET&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;XXXXX-XXXXX-XXXXX-XXXXX-XXXXX&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;export&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;ARM_SUBSCRIPTION_ID&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;XXXXX-XXXXX-XXXXX-XXXXX-XXXXX&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;export&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;ARM_TENANT_ID&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;XXXXX-XXXXX-XXXXX-XXXXX-XXXXX&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The resources in this example depend on the following variables: client_id, client_secret, aks_service_principal_app_id and aks_service_principal_client_secret. One way to configure them is by exporting their values as a TF_VAR_xxx:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Looking back at 2016</title>
      <link>https://timvw.be/2016/12/31/looking-back-at-2016/</link>
      <pubDate>Sat, 31 Dec 2016 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2016/12/31/looking-back-at-2016/</guid>
      <description>&lt;p&gt;Starting 2016 at Emergency Care was a game changer for me.&lt;/p&gt;&#xA;&lt;p&gt;On a personal level I have successfully changed my diet and lost 45kg (BMI went from 50 to 35), completed Start2Run (0-5km/30min) and Continue2Run (5-10km/60min). Looking forward to loosing more weight and getting a BMI &amp;lt; 30 again. Finishing a 1/2 marathon would be awesome too. Had plenty of quality family time as well!&lt;/p&gt;&#xA;&lt;p&gt;On a professional level I have changed focus from Enterprise Apps/.NET to Data intensive (Big Data, Augmented/Business Intelligence and a bit of Machine learning) mainly using Scala. Had some serious fun bringing a Kafka cluster in place as the central messaging interface in an industrial setting (24/7) continuously pushing &amp;gt; 1 million messages/sec. Became familiar with Docker and looking forward to see it replace Java Application Servers.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Parsing lines from Spark RDD</title>
      <link>https://timvw.be/2016/11/20/parsing-lines-from-spark-rdd/</link>
      <pubDate>Sun, 20 Nov 2016 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2016/11/20/parsing-lines-from-spark-rdd/</guid>
      <description>&lt;p&gt;A typical &lt;a href=&#34;http://spark.apache.org/&#34;&gt;Apache Spark&lt;/a&gt; application using RDD api starts as following:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-scala&#34; data-lang=&#34;scala&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;val&lt;/span&gt; lines &lt;span style=&#34;color:#cf222e&#34;&gt;=&lt;/span&gt; sc&lt;span style=&#34;color:#0550ae&#34;&gt;.&lt;/span&gt;textFile&lt;span style=&#34;color:#0550ae&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;/path/to/data&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;val&lt;/span&gt; records &lt;span style=&#34;color:#cf222e&#34;&gt;=&lt;/span&gt; lines&lt;span style=&#34;color:#0550ae&#34;&gt;.&lt;/span&gt;map&lt;span style=&#34;color:#0550ae&#34;&gt;(&lt;/span&gt;parseLineToRecord&lt;span style=&#34;color:#0550ae&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;case&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Record&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;(...)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;def&lt;/span&gt; parseLineToRecord&lt;span style=&#34;color:#0550ae&#34;&gt;(&lt;/span&gt;line&lt;span style=&#34;color:#cf222e&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;String&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;Record&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#cf222e&#34;&gt;val&lt;/span&gt; parts &lt;span style=&#34;color:#cf222e&#34;&gt;=&lt;/span&gt; line&lt;span style=&#34;color:#0550ae&#34;&gt;.&lt;/span&gt;split&lt;span style=&#34;color:#0550ae&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;\t&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#0550ae&#34;&gt;...&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#1f2328&#34;&gt;Record&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;(..)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In case of bad records you very often want to discard the unparseable lines:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-scala&#34; data-lang=&#34;scala&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;def&lt;/span&gt; parseLineToRecordOption&lt;span style=&#34;color:#0550ae&#34;&gt;(&lt;/span&gt;line&lt;span style=&#34;color:#cf222e&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;String&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Option&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;Record&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#cf222e&#34;&gt;try&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#0550ae&#34;&gt;...&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#1f2328&#34;&gt;Some&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;Record&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;(..))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#0550ae&#34;&gt;}&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;catch&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#cf222e&#34;&gt;case&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;_&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;None&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#0550ae&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;val&lt;/span&gt; records &lt;span style=&#34;color:#cf222e&#34;&gt;=&lt;/span&gt; lines&lt;span style=&#34;color:#0550ae&#34;&gt;.&lt;/span&gt;map&lt;span style=&#34;color:#0550ae&#34;&gt;(&lt;/span&gt;parseLineToRecordOption&lt;span style=&#34;color:#0550ae&#34;&gt;).&lt;/span&gt;filter&lt;span style=&#34;color:#0550ae&#34;&gt;(&lt;/span&gt;x &lt;span style=&#34;color:#cf222e&#34;&gt;=&amp;gt;&lt;/span&gt; x&lt;span style=&#34;color:#0550ae&#34;&gt;.&lt;/span&gt;isDefined&lt;span style=&#34;color:#0550ae&#34;&gt;).&lt;/span&gt;map&lt;span style=&#34;color:#0550ae&#34;&gt;(&lt;/span&gt;x &lt;span style=&#34;color:#cf222e&#34;&gt;=&amp;gt;&lt;/span&gt; x&lt;span style=&#34;color:#0550ae&#34;&gt;.&lt;/span&gt;get&lt;span style=&#34;color:#0550ae&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And then you discover that you there is an &lt;a href=&#34;https://github.com/scala/scala/blob/2.12.x/src/library/scala/Option.scala&#34;&gt;implicit conversion from Option[T] to Iterable[T]&lt;/a&gt;.&#xA;The nice thing is that you now can use flatMap instead of filter + map:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Blog migrated to Jekyll</title>
      <link>https://timvw.be/2016/10/04/blog-migrated-to-jekyll/</link>
      <pubDate>Tue, 04 Oct 2016 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2016/10/04/blog-migrated-to-jekyll/</guid>
      <description>&lt;p&gt;As many other people I have decided to leave Wordpress behind and move to Jekyll instead.&lt;/p&gt;&#xA;&lt;p&gt;Most posts have been migrated pretty well but I do not feel like bothering with them anymore.&#xA;In fact, some of them have become irrelevant, some of them are just wrong and others only attract spammers. In summary: they are not worth my time anymore. In case you really loved them, you can still send a pull-request :P&lt;/p&gt;</description>
    </item>
    <item>
      <title>Docker toolbox to the rescue</title>
      <link>https://timvw.be/2016/10/01/docker-toolbox-to-the-rescue/</link>
      <pubDate>Sat, 01 Oct 2016 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2016/10/01/docker-toolbox-to-the-rescue/</guid>
      <description>&lt;p&gt;With the help of &lt;a href=&#34;https://www.docker.com/products/docker-toolbox&#34;&gt;Docker Toolbox&lt;/a&gt; a lot of apps become easily available&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;By default volumes can only be mapped on folders under the user home directory.&lt;/p&gt;&#xA;&lt;p&gt;Here is how to enable mapping of the entire c-drive&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;#!/bin/sh&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;# script to expose c-drive to docker vm and docker containers&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;#&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;# stop the docker vm&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker-machine stop default&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;# share your windows c-drive with the docker (host) vm&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;/c/Program&lt;span style=&#34;color:#0a3069&#34;&gt;\ &lt;/span&gt;Files/Oracle/VirtualBox/VBoxManage.exe sharedfolder add default --name C_DRIVE --hostpath c:/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;# start the docker (host) vm&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker-machine start default&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;# mount the c-drive in the docker (host) vm&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker-machine ssh default &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;sudo chown docker /var/lib/boot2docker/profile &amp;amp;&amp;amp; echo mount -t vboxsf C_DRIVE /c &amp;gt;&amp;gt; /var/lib/boot2docker/profile&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Examples&lt;/p&gt;</description>
    </item>
    <item>
      <title>About maven dependency type &#39;bundle&#39;</title>
      <link>https://timvw.be/2016/01/29/about-maven-dependency-type-bundle/</link>
      <pubDate>Fri, 29 Jan 2016 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2016/01/29/about-maven-dependency-type-bundle/</guid>
      <description>&lt;p&gt;Earlier this week my build failed because maven was not able to resolve an (indirect) dependency on some package. It took me a while to notice that the dependency node in the pom file had an extra attribute: type = bundle. It only took a couple of minutes to find a good explanation &lt;a href=&#34;http://stackoverflow.com/questions/14913615/osgi-bundle-vs-jar-dependency&#34;&gt;here&lt;/a&gt;. Build fixed 😉&lt;/p&gt;</description>
    </item>
    <item>
      <title>Composing functions and leveraging scala.util.Try</title>
      <link>https://timvw.be/2016/01/29/composing-functions-and-leveraging-scala.util.try/</link>
      <pubDate>Fri, 29 Jan 2016 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2016/01/29/composing-functions-and-leveraging-scala.util.try/</guid>
      <description>&lt;p&gt;Last couple of days I have been hacking around trying to find a cute way to express the intent of my code. Typically it involves parsing some input, validating whatever rules that are in charge and persisting some values. In scala one can compose such a function by using the &lt;a href=&#34;http://www.scala-lang.org/api/2.11.x/index.html#scala.Function1&#34;&gt;andThen&lt;/a&gt; method. Here is a concrete example:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-scala&#34; data-lang=&#34;scala&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;def&lt;/span&gt; id&lt;span style=&#34;color:#0550ae&#34;&gt;(&lt;/span&gt;x&lt;span style=&#34;color:#cf222e&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;String&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;=&lt;/span&gt; x  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;def&lt;/span&gt; parseInput &lt;span style=&#34;color:#cf222e&#34;&gt;=&lt;/span&gt; id &lt;span style=&#34;color:#cf222e&#34;&gt;_&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;def&lt;/span&gt; validate &lt;span style=&#34;color:#cf222e&#34;&gt;=&lt;/span&gt; id &lt;span style=&#34;color:#cf222e&#34;&gt;_&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;def&lt;/span&gt; persist &lt;span style=&#34;color:#cf222e&#34;&gt;=&lt;/span&gt; id &lt;span style=&#34;color:#cf222e&#34;&gt;_&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;def&lt;/span&gt; usecase1 &lt;span style=&#34;color:#cf222e&#34;&gt;=&lt;/span&gt; parseInput andThen validate andThen persist&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Inspired by the excellent series on &lt;a href=&#34;http://fsharpforfunandprofit.com/posts/recipe-part2/&#34;&gt;Railway Oriented Programming&lt;/a&gt; series by &lt;a href=&#34;@ScottWlaschin&#34;&gt;Scott Wlaschin&lt;/a&gt; I wanted to take advange of &lt;a href=&#34;http://www.scala-lang.org/files/archive/api/current/index.html#scala.util.Try&#34;&gt;scala.util.Try&lt;/a&gt; to remove try/catch clutter from my code. With a little helper function I can now compose my usecase as following:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using Gson to serialize Scala objects</title>
      <link>https://timvw.be/2016/01/14/using-gson-to-serialize-scala-objects/</link>
      <pubDate>Thu, 14 Jan 2016 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2016/01/14/using-gson-to-serialize-scala-objects/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://github.com/google/gson&#34;&gt;gson&lt;/a&gt; is a pretty nice library that converts Java objects into JSON and back. When using this library from Scala things become a bit harder (eg: Plenty of people have difficulties when their scala object has an (im)mutable Map or List).&lt;/p&gt;&#xA;&lt;p&gt;Here is an example to convert a JSON object to a Map[String,String]:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-scala&#34; data-lang=&#34;scala&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;import&lt;/span&gt; &lt;span style=&#34;color:#24292e&#34;&gt;com.google.gson.Gson&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;import&lt;/span&gt; &lt;span style=&#34;color:#24292e&#34;&gt;scala.collection.JavaConversions._&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;val&lt;/span&gt; mapJson &lt;span style=&#34;color:#cf222e&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;{ &amp;#39;a&amp;#39;: &amp;#39;b&amp;#39;, &amp;#39;c&amp;#39;: &amp;#39;d&amp;#39; }&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;val&lt;/span&gt; map &lt;span style=&#34;color:#cf222e&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Gson&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;().&lt;/span&gt;fromJson&lt;span style=&#34;color:#0550ae&#34;&gt;(&lt;/span&gt;mapJson&lt;span style=&#34;color:#0550ae&#34;&gt;,&lt;/span&gt; classOf&lt;span style=&#34;color:#0550ae&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;java.util.Map&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;String&lt;/span&gt;, &lt;span style=&#34;color:#cf222e&#34;&gt;String&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;]])&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now that we know that this works, we hide the java types in the constructor and expose a nicer scala type via a method:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Notes on running spark-notebook</title>
      <link>https://timvw.be/2015/08/27/notes-on-running-spark-notebook/</link>
      <pubDate>Thu, 27 Aug 2015 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2015/08/27/notes-on-running-spark-notebook/</guid>
      <description>&lt;p&gt;These days &lt;a href=&#34;https://www.docker.com/&#34;&gt;Docker&lt;/a&gt; makes it extremely easy to get started with virtually any application you like. At first I was a bit skeptical but over the last couple of months I have changed my mind. Now I strongly believe this is a game changer. Even more when it comes to Windows. Anyway, these days kitematic (GUI to manage docker images) allows you to simply pick the &lt;a href=&#34;https://github.com/andypetrella/spark-notebook&#34;&gt;spark-notebook&lt;/a&gt; by Andy Petrella.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.timvw.be/wp-content/uploads/2015/08/docker_pick_image.png&#34;&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/uploads/2015/08/docker_pick_image-300x152.png&#34; alt=&#34;docker_pick_image&#34; width=&#34;300&#34; height=&#34;152&#34; class=&#34;size-medium wp-image-2486&#34; srcset=&#34;http://www.timvw.be/wp-content/uploads/2015/08/docker_pick_image-300x152.png 300w, http://www.timvw.be/wp-content/uploads/2015/08/docker_pick_image-1024x518.png 1024w, http://www.timvw.be/wp-content/uploads/2015/08/docker_pick_image-500x253.png 500w&#34; sizes=&#34;(max-width: 300px) 100vw, 300px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Scaffolding scala projects</title>
      <link>https://timvw.be/2015/08/19/scaffolding-scala-projects/</link>
      <pubDate>Wed, 19 Aug 2015 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2015/08/19/scaffolding-scala-projects/</guid>
      <description>&lt;p&gt;These days the cool kids scaffold their projects with &lt;a href=&#34;http://yeoman.io/&#34;&gt;Yeoman&lt;/a&gt;. Obviously I could not stay behind, so here is my first &lt;a href=&#34;https://github.com/timvw/generator-scala&#34;&gt;generator for scala&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://camo.githubusercontent.com/2d553cce06333627904d8e33b61c91dfa7ae7bc4/687474703a2f2f692e696d6775722e636f6d2f4a4861416c424a2e706e67&#34; alt=&#34;&#34;&gt;&lt;/img&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>ConcurrencyCheck with EF/Devart on Oracle</title>
      <link>https://timvw.be/2015/02/20/concurrencycheck-with-ef/devart-on-oracle/</link>
      <pubDate>Fri, 20 Feb 2015 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2015/02/20/concurrencycheck-with-ef/devart-on-oracle/</guid>
      <description>&lt;p&gt;Earlier this week I was wondering how I could easily achieve optimistic concurrency in a system using EF/Devart targetting an Oracle database (Not really my preferred technologies, but whatever:P). Here is a potential solution:&lt;/p&gt;&#xA;&lt;p&gt;Using a column for optimistic concurrency is documented on the devart website:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[Table(&amp;#34;TEST&amp;#34;)]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Test&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt; IRequireConcurrencyCheck  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;...&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;&#x9;[Required]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;&#x9;[Column(&amp;#34;VERSION&amp;#34;)]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;&#x9;[ConcurrencyCheck]&lt;/span&gt; &lt;span style=&#34;color:#57606a&#34;&gt;// TELL EF to use this column as our &amp;#34;timestamp/logical version&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;virtual&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; Version &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;get&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;protected&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;set&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &lt;span style=&#34;color:#57606a&#34;&gt;// protected, so users of this type can not touch this (easily)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;By introducing an interface that exposes a version number like below:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Failure to load mono-supplied .dylib (libgdiplus.dylib) when running from console</title>
      <link>https://timvw.be/2014/09/27/failure-to-load-mono-supplied-.dylib-libgdiplus.dylib-when-running-from-console/</link>
      <pubDate>Sat, 27 Sep 2014 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2014/09/27/failure-to-load-mono-supplied-.dylib-libgdiplus.dylib-when-running-from-console/</guid>
      <description>&lt;p&gt;So earlier this week I was bit by the following bug: &lt;a href=&#34;https://bugzilla.xamarin.com/show_bug.cgi?id=22140&#34;&gt;Bug 22140 &amp;ndash; Failure to load mono-supplied .dylib when running from console.&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;The workaround that works for me is the following: Edit /Library/Frameworks/Mono.framework/Versions/3.8.0/etc/mono/config and&lt;/p&gt;&#xA;&lt;p&gt;replace the entries for libgdiplus:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;dllmap&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;dll=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;gdiplus&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;target=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;/Library/Frameworks/Mono.framework/Versions/3.8.0/lib/libgdiplus.dylib&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;os=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;!windows&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;dllmap&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;dll=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;gdiplus.dll&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;target=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;/Library/Frameworks/Mono.framework/Versions/3.8.0/lib/libgdiplus.dylib&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;os=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;!windows&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;dllmap&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;dll=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;gdi32&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;target=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;/Library/Frameworks/Mono.framework/Versions/3.8.0/lib/libgdiplus.dylib&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;os=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;!windows&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;dllmap&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;dll=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;gdi32.dll&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;target=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;/Library/Frameworks/Mono.framework/Versions/3.8.0/lib/libgdiplus.dylib&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;os=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;!windows&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Deploying a Cloud Service to Azure with Octopus</title>
      <link>https://timvw.be/2014/08/15/deploying-a-cloud-service-to-azure-with-octopus/</link>
      <pubDate>Fri, 15 Aug 2014 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2014/08/15/deploying-a-cloud-service-to-azure-with-octopus/</guid>
      <description>&lt;p&gt;Currently Octopus has limited support to deploy a Cloud Service on Azure. A typical use-case is that you need a different Web.Config file per environment. Simply add the Web.Environment.Config files to your NuGet package and use the following &lt;a href=&#34;https://gist.github.com/timvw/4e32226dd1ff149b5eab.js&#34;&gt;PreDeploy.ps1&lt;/a&gt; script:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;# Load unzip support&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;Reflection.Assembly&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]::&lt;/span&gt;LoadWithPartialName&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;System.IO.Compression.FileSystem&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#6639ba&#34;&gt;Out-Null&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;function&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;Unzip($zipFile&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$destination&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;If&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;Test-Path&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$destination&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;){&lt;/span&gt;&#x9;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#6639ba&#34;&gt;Remove-Item&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$destination&lt;/span&gt; -Recurse &lt;span style=&#34;color:#1f2328&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#6639ba&#34;&gt;Out-Null&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#6639ba&#34;&gt;New-Item&lt;/span&gt; -ItemType directory -Force -Path &lt;span style=&#34;color:#953800&#34;&gt;$destination&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#6639ba&#34;&gt;Out-Null&lt;/span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;System.IO.Compression.ZipFile&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]::&lt;/span&gt;ExtractToDirectory&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$zipFile&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$destination&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#6639ba&#34;&gt;Out-Null&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;# Unzip deployment package  &lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$CsPkg&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Customer.Project.Api.Azure.cspkg&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Unzip &lt;span style=&#34;color:#953800&#34;&gt;$CsPkg&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;azurePackage&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Unzip &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;Get-Item&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;join-path&lt;/span&gt; -path &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;azurePackage&amp;#34;&lt;/span&gt; -childPath &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;*.cssx&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;))&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;website&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;# Perform replacements, eg: replace Web.Config  &lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$ConfigFileToUse&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Web.&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$OctopusParameters&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Octopus.Environment.Name&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;.config&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;Copy-Item&lt;/span&gt; -Path &lt;span style=&#34;color:#953800&#34;&gt;$ConfigFileToUse&lt;/span&gt; -Destination &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;website/sitesroot/0/Web.Config&amp;#34;&lt;/span&gt; -Force&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;# Repackage  &lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$role&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Customer.Project.Api&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$contentPath&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;website\approot&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$rolePath&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;website/approot&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$webPath&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;website/sitesroot/0&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$cspackPath&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;C:\Program Files\Microsoft SDKs\Windows Azure\.NET SDK\v2.2\bin\cspack.exe&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$cspackPath&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;ServiceDefinition.csdef&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;/out:&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$CsPkg&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;/role:&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$role&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;;&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$rolePath&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;;Customer.Project.Api.dll&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;/sites:&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$role&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;;Web;&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$webPath&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;/sitePhysicalDirectories:&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$role&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;;Web;&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$webPath&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;&lt;/span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Cute sort implementation</title>
      <link>https://timvw.be/2014/07/28/cute-sort-implementation/</link>
      <pubDate>Mon, 28 Jul 2014 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2014/07/28/cute-sort-implementation/</guid>
      <description>&lt;p&gt;For years I had been implementing my &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/tfakywbh(v=vs.110).aspx&#34;&gt;sort functions&lt;/a&gt; as following:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;x&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;y&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;x&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;PartName &lt;span style=&#34;color:#1f2328&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;null&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; y&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;PartName &lt;span style=&#34;color:#1f2328&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;null&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;x&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;PartName &lt;span style=&#34;color:#1f2328&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;null&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;y&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;PartName &lt;span style=&#34;color:#1f2328&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;null&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; x&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;PartName&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;CompareTo&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;y&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;PartName&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Earlier today I found the following cute variant while browsing through the &lt;a href=&#34;https://github.com/ServiceStack/ServiceStack/blob/v3/src/ServiceStack/WebHost.Endpoints/Utils/FilterAttributeCache.cs&#34;&gt;ServiceStack&lt;/a&gt; codebase:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;x&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;y&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&amp;gt;&lt;/span&gt; x&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Priority &lt;span style=&#34;color:#1f2328&#34;&gt;-&lt;/span&gt; y&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Priority  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Clone all your repositories on another machine</title>
      <link>https://timvw.be/2014/04/23/clone-all-your-repositories-on-another-machine/</link>
      <pubDate>Wed, 23 Apr 2014 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2014/04/23/clone-all-your-repositories-on-another-machine/</guid>
      <description>&lt;p&gt;Recently I was configuring a new machine (God, i love &lt;a href=&#34;https://chocolatey.org/&#34;&gt;Chocolatey&lt;/a&gt;) and I wanted to take all the repositories I have under c:/src and clone them on my new machine. Here is how i did that:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;# write all remote fetch locations into repositories.txt  &lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;find /c/src -type d -mindepth &lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt; -maxdepth &lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt; -exec git -work-tree&lt;span style=&#34;color:#0550ae&#34;&gt;={}&lt;/span&gt; -git-dir&lt;span style=&#34;color:#0550ae&#34;&gt;={}&lt;/span&gt;/.git remote -v &lt;span style=&#34;color:#0a3069&#34;&gt;\;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;|&lt;/span&gt; grep fetch &lt;span style=&#34;color:#1f2328&#34;&gt;|&lt;/span&gt; awk &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;{print $2}&amp;#39;&lt;/span&gt; &amp;gt; repositories.txt&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;# clone each repository  &lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cat repositories.txt &lt;span style=&#34;color:#1f2328&#34;&gt;|&lt;/span&gt; xargs -l1 git clone&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Or as a gist: &lt;a href=&#34;https://gist.github.com/timvw/11208834&#34;&gt;https://gist.github.com/timvw/11208834&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A parameterized active pattern to match the first elements of an array</title>
      <link>https://timvw.be/2014/01/30/a-parameterized-active-pattern-to-match-the-first-elements-of-an-array/</link>
      <pubDate>Thu, 30 Jan 2014 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2014/01/30/a-parameterized-active-pattern-to-match-the-first-elements-of-an-array/</guid>
      <description>&lt;p&gt;Been writing code in F# for almost a year and never blogged about it. Time to change that. Earlier today someone asked the following on twitter:&lt;/p&gt;&#xA;&lt;p&gt;&lt;quote&gt;Is it possible to pattern match the first part of an array in #FSharp? Something like | 1::2::3::tail but for arrays? #lazyweb&lt;/quote&gt;&lt;/p&gt;&#xA;&lt;p&gt;I accepted the challenge :)&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-fsharp&#34; data-lang=&#34;fsharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;let&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;(|&lt;/span&gt;Array&lt;span style=&#34;color:#0550ae&#34;&gt;|_|)&lt;/span&gt; pattern toMatch &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;      &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;let&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;patternLength&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#24292e&#34;&gt;Array&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;length pattern&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;let&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;toMatchLength&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#24292e&#34;&gt;Array&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;length toMatch&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;let&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;tailLength&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; toMatchLength &lt;span style=&#34;color:#0550ae&#34;&gt;-&lt;/span&gt; patternLength&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; patternLength &lt;span style=&#34;color:#0550ae&#34;&gt;&amp;gt;&lt;/span&gt; toMatchLength &lt;span style=&#34;color:#cf222e&#34;&gt;then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;None&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;let&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;firstElementsAreEqual&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;[&lt;/span&gt; 0 &lt;span style=&#34;color:#0550ae&#34;&gt;..&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;(&lt;/span&gt;patternLength &lt;span style=&#34;color:#0550ae&#34;&gt;-&lt;/span&gt; 1&lt;span style=&#34;color:#0550ae&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;|&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#24292e&#34;&gt;Seq&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;forall &lt;span style=&#34;color:#0550ae&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;fun&lt;/span&gt; i &lt;span style=&#34;color:#0550ae&#34;&gt;-&amp;gt;&lt;/span&gt; pattern&lt;span style=&#34;color:#0550ae&#34;&gt;.[&lt;/span&gt;i&lt;span style=&#34;color:#0550ae&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; toMatch&lt;span style=&#34;color:#0550ae&#34;&gt;.[&lt;/span&gt;i&lt;span style=&#34;color:#0550ae&#34;&gt;])&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; firstElementsAreEqual &lt;span style=&#34;color:#cf222e&#34;&gt;then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;Some&lt;span style=&#34;color:#0550ae&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#24292e&#34;&gt;Array&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;sub toMatch patternLength tailLength&lt;span style=&#34;color:#0550ae&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;else&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;None&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;match&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;[|&lt;/span&gt;1&lt;span style=&#34;color:#0550ae&#34;&gt;;&lt;/span&gt;2&lt;span style=&#34;color:#0550ae&#34;&gt;;&lt;/span&gt;3&lt;span style=&#34;color:#0550ae&#34;&gt;|]&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;with&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;|&lt;/span&gt; Array &lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;\&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;[|&lt;/span&gt;1&lt;span style=&#34;color:#0550ae&#34;&gt;|]&lt;/span&gt; tail &lt;span style=&#34;color:#0550ae&#34;&gt;-&amp;gt;&lt;/span&gt; sprintf &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;bingo %i&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;(&lt;/span&gt;tail &lt;span style=&#34;color:#0550ae&#34;&gt;|&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#24292e&#34;&gt;Array&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;sum&lt;span style=&#34;color:#0550ae&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#57606a&#34;&gt;// the tail is [|2;3|\]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Or as a gist: &lt;a href=&#34;https://gist.github.com/timvw/8717796&#34;&gt;https://gist.github.com/timvw/8717796&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Comments are disabled on this blog</title>
      <link>https://timvw.be/2014/01/23/comments-are-disabled-on-this-blog/</link>
      <pubDate>Thu, 23 Jan 2014 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2014/01/23/comments-are-disabled-on-this-blog/</guid>
      <description>&lt;p&gt;As of now comments are disabled on this blog. Want to reply? Write your own post and pingback or engage a conversation on twitter with &lt;a href=&#34;https://twitter.com/timvw&#34;&gt;@timvw&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The curious case of trailing spaces in SQL</title>
      <link>https://timvw.be/2013/04/27/the-curious-case-of-trailing-spaces-in-sql/</link>
      <pubDate>Sat, 27 Apr 2013 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2013/04/27/the-curious-case-of-trailing-spaces-in-sql/</guid>
      <description>&lt;p&gt;A while ago I was quite surprised to see that the following query returns 1 instead of 0:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;SELECT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;COUNT&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;WHERE&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;N&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;Tim&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;N&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;Tim &amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;-- notice the trailing space&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Apparently this is just standard behaviour. Here is an extract from &lt;a href=&#34;http://www.andrew.cmu.edu/user/shadow/sql/sql1992.txt&#34;&gt;sql1992.txt&lt;/a&gt; (Section 8.2 Paragraph 3):&lt;/p&gt;&#xA;&lt;quote&gt; &#xA;&lt;pre&gt;3) The comparison of two character strings is determined as fol-&#xA;            lows:&#xA;&#xA;            a) If the length in characters of X is not equal to the length&#xA;              in characters of Y, then the shorter string is effectively&#xA;              replaced, for the purposes of comparison, with a copy of&#xA;              itself that has been extended to the length of the longer&#xA;              string by concatenation on the right of one or more pad char-&#xA;              acters, where the pad character is chosen based on CS. If&#xA;              CS has the NO PAD attribute, then the pad character is an&#xA;              implementation-dependent character different from any char-&#xA;              acter in the character set of X and Y that collates less&#xA;              than any string under CS. Otherwise, the pad character is a&#xA;              &amp;lt;space&gt;.&#xA;&#xA;            b) The result of the comparison of X and Y is given by the col-&#xA;              lating sequence CS.&#xA;&#xA;            c) Depending on the collating sequence, two strings may com-&#xA;              pare as equal even if they are of different lengths or con-&#xA;              tain different sequences of characters. When the operations&#xA;              MAX, MIN, DISTINCT, references to a grouping column, and the&#xA;              UNION, EXCEPT, and INTERSECT operators refer to character&#xA;              strings, the specific value selected by these operations from&#xA;              a set of such equal values is implementation-dependent.&#xA;&lt;/pre&gt;&#xA;&lt;/quote&gt;</description>
    </item>
    <item>
      <title>Sample query to demonstrate influence of collation in Sql Server</title>
      <link>https://timvw.be/2012/10/18/sample-query-to-demonstrate-influence-of-collation-in-sql-server/</link>
      <pubDate>Thu, 18 Oct 2012 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2012/10/18/sample-query-to-demonstrate-influence-of-collation-in-sql-server/</guid>
      <description>&lt;p&gt;Lately I had the pleasure to investigate &lt;a href=&#34;http://technet.microsoft.com/en-us/library/aa174903(v=sql.80).aspx&#34;&gt;collations&lt;/a&gt; and here is a sample query that demonstrates how a collation impacts the behaviour of a query:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;WITH&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Words&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;AS&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#x9;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;SELECT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;N&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;Een&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;AS&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;word&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#x9;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;UNION&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;ALL&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#x9;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;SELECT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;N&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;Eèn&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#x9;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#x9;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;UNION&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;ALL&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#x9;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;SELECT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;N&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;EEN&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;SELECT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;word&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#x9;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;FROM&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Words&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;WHERE&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;word&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#x9;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;--COLLATE Latin1_General_CS_AS -- returns Een&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;--COLLATE Latin1_General_CI_AI -- returns Een, Eèn and EEN&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;--COLLATE LAtin1_General_CI_AS -- returns Een and EEN&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;COLLATE&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;Latin1_General_CS_AI&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;-- returns Een and Eèn&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;N&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;Een&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Copy all mp3 files in Music folder to USB dribe</title>
      <link>https://timvw.be/2012/09/22/copy-all-mp3-files-in-music-folder-to-usb-dribe/</link>
      <pubDate>Sat, 22 Sep 2012 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2012/09/22/copy-all-mp3-files-in-music-folder-to-usb-dribe/</guid>
      <description>&lt;p&gt;Copying all mp3 files from my Music folder to a USB drive is pretty easy on my Macbook:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;find Music -name *.mp3 -exec cp &lt;span style=&#34;color:#0550ae&#34;&gt;{}&lt;/span&gt; /Volumes/SANDISK &lt;span style=&#34;color:#0a3069&#34;&gt;\;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Using eID on OS X Mountain Lion</title>
      <link>https://timvw.be/2012/08/06/using-eid-on-os-x-mountain-lion/</link>
      <pubDate>Mon, 06 Aug 2012 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2012/08/06/using-eid-on-os-x-mountain-lion/</guid>
      <description>&lt;p&gt;Last week or so I got myself a MacBook Air and I am really loving it so far. Today I needed to use my &lt;a href=&#34;http://eid.belgium.be/en/&#34;&gt;eID&lt;/a&gt; so I installed the middleware application without any hassle but had a hard time configuring Safari. Apparently Apply removed support for &lt;a href=&#34;http://en.wikipedia.org/wiki/PKCS_?11&#34;&gt;PKCS #11&lt;/a&gt; in &lt;a href=&#34;http://www.apple.com/osx/&#34;&gt;OS X Mountain Lion&lt;/a&gt;. After installing &lt;a href=&#34;http://smartcardservices.macosforge.org&#34;&gt;SmartCard Services&lt;/a&gt; the certificates appeared in the Keychain and I became able to authenticate on websites using my certificate&lt;/p&gt;</description>
    </item>
    <item>
      <title>Add missing books to iTunes</title>
      <link>https://timvw.be/2012/05/20/add-missing-books-to-itunes/</link>
      <pubDate>Sun, 20 May 2012 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2012/05/20/add-missing-books-to-itunes/</guid>
      <description>&lt;p&gt;These days i read most books on my ipad. The problem is that iTunes does not seem to add pdf files when i choose &amp;lsquo;Add Folder&amp;rsquo; to the library. So here is a small application that adds them one by one (way too lazy/unmotivated to do this by hand).&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://gist.github.com/2759128&#34;&gt;https://gist.github.com/2759128&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Multiclean solution</title>
      <link>https://timvw.be/2012/04/26/multiclean-solution/</link>
      <pubDate>Thu, 26 Apr 2012 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2012/04/26/multiclean-solution/</guid>
      <description>&lt;p&gt;One of my favorite powershell commands when cleaning up:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$RootFolder&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;C:\tfs&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;Get-ChildItem&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$RootFolder&lt;/span&gt; bin -Recurse &lt;span style=&#34;color:#1f2328&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#6639ba&#34;&gt;Remove-Item&lt;/span&gt; -Recurse&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;Get-ChildItem&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$RootFolder&lt;/span&gt; obj -Recurse &lt;span style=&#34;color:#1f2328&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#6639ba&#34;&gt;Remove-Item&lt;/span&gt; -Recurse&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>An example of Common Table Expression and Window function usage...</title>
      <link>https://timvw.be/2012/03/27/an-example-of-common-table-expression-and-window-function-usage.../</link>
      <pubDate>Tue, 27 Mar 2012 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2012/03/27/an-example-of-common-table-expression-and-window-function-usage.../</guid>
      <description>&lt;p&gt;Earlier this week some colleague had been assigned a maintenance task and asked me how I would solve it. Every customer is permitted to have an amount of publications. All excess publications should be removed from the system (only the n most recent ones are permitted to remain on the system).&lt;/p&gt;&#xA;&lt;p&gt;Here is an example of the Customer table:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;CREATE&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;TABLE&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;dbo&lt;span style=&#34;color:#1f2328&#34;&gt;].[&lt;/span&gt;Customer&lt;span style=&#34;color:#1f2328&#34;&gt;](&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#x9;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;CustomerId&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;int&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;IDENTITY&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;NOT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;NULL&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#x9;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;CustomerName&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;nvarchar&lt;span style=&#34;color:#1f2328&#34;&gt;](&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;50&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;NOT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;NULL&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#x9;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;PermittedPublications&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;int&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;NOT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;NULL&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;INSERT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;INTO&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;dbo&lt;span style=&#34;color:#1f2328&#34;&gt;].[&lt;/span&gt;Customer&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#x9;&#x9;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#x9;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;([&lt;/span&gt;CustomerName&lt;span style=&#34;color:#1f2328&#34;&gt;],&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;PermittedPublications&lt;span style=&#34;color:#1f2328&#34;&gt;])&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;VALUES&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#x9;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;timvw&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;),&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#x9;&#x9;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#x9;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;mike&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;3&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;An example of the customer publications table:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Say no to primitives in your API.. and make your software more explicit</title>
      <link>https://timvw.be/2011/10/28/say-no-to-primitives-in-your-api..-and-make-your-software-more-explicit/</link>
      <pubDate>Fri, 28 Oct 2011 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2011/10/28/say-no-to-primitives-in-your-api..-and-make-your-software-more-explicit/</guid>
      <description>&lt;p&gt;A while ago I wrote some code like this:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;interface&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;ICanBroadcast&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; Broadcast&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; message&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;...&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; Broadcast&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; message&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; author&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;...&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;A bit later the requirements changed and from now on it was required to specify the topic:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;interface&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;ICanBroadcast&lt;/span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; Broadcast&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; message&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; topic&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;...&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; Broadcast&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; message&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; author&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; topic&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;...&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In case you were using Broadcast(string message) the compiler would rightfully inform you that no such method exists. In case you were using Broadcast(string message, string author) the compiler does not catch the error and incorrectly uses the author as topic. I can only hope that you have a suite of tests that makes you notice that something is wrong when you upgrade to my latest release.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Force the removal of a file with PowerShell</title>
      <link>https://timvw.be/2011/10/18/force-the-removal-of-a-file-with-powershell/</link>
      <pubDate>Tue, 18 Oct 2011 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2011/10/18/force-the-removal-of-a-file-with-powershell/</guid>
      <description>&lt;p&gt;Last couple of weeks I have been generating a lot of files (and restricting their ACLs) and today I decided to remove all those files. The problem is that my user account did not have permissions on those files. Here is a small script that will first take ownership of the file, then grants FullControl permissions, and finally removes the file 🙂&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;function&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;RemoveFile&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#x9;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;param&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$FileName&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;amp;&lt;/span&gt;takeown &lt;span style=&#34;color:#1f2328&#34;&gt;/&lt;/span&gt;F &lt;span style=&#34;color:#953800&#34;&gt;$FileName&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#953800&#34;&gt;$User&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;System.Security.Principal.WindowsIdentity&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]::&lt;/span&gt;GetCurrent&lt;span style=&#34;color:#1f2328&#34;&gt;().&lt;/span&gt;User&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#953800&#34;&gt;$Acl&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#6639ba&#34;&gt;Get-Acl&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$FileName&lt;/span&gt;&#x9;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#953800&#34;&gt;$Acl&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;SetOwner&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$User&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#x9;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#953800&#34;&gt;$AccessRule&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#6639ba&#34;&gt;New-Object&lt;/span&gt; System&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Security&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;AccessControl&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;FileSystemAccessRule&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$User&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;FullControl&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Allow&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#x9;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#953800&#34;&gt;$Acl&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;SetAccessRule&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$AccessRule&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#x9;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#6639ba&#34;&gt;Set-Acl&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$FileName&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$Acl&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#6639ba&#34;&gt;Remove-Item&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$FileName&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;Get-ChildItem&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;*.&lt;/span&gt;txt -R &lt;span style=&#34;color:#1f2328&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; RemoveFile &lt;span style=&#34;color:#953800&#34;&gt;$_&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;FullName&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Edit on 2011-10-19&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Remove all access rules from a directory</title>
      <link>https://timvw.be/2011/09/22/remove-all-access-rules-from-a-directory/</link>
      <pubDate>Thu, 22 Sep 2011 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2011/09/22/remove-all-access-rules-from-a-directory/</guid>
      <description>&lt;p&gt;A while ago i needed to write some code that removes all (existing/inherited) access rules from a given directory. It was pretty frustrating to notice that all my attempts seemed to fail (&lt;a href=&#34;http://msdn.microsoft.com/en-us/library/system.security.accesscontrol.commonobjectsecurity.removeaccessrule.aspx&#34;&gt;RemoveAccessRule&lt;/a&gt;, &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/system.security.accesscontrol.objectsecurity.purgeaccessrules.aspx&#34;&gt;PurgeAccessRule&lt;/a&gt;, &amp;hellip;)&lt;/p&gt;&#xA;&lt;p&gt;Finally i found that &lt;a href=&#34;&#34;&gt;SetAccessRuleProtection&lt;/a&gt; was the method that i needed to invoke.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; Folder &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;@&amp;#34;c:\temp\secured&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; directory &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; DirectoryInfo&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;Folder&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; directorySecurity &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; directory&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetAccessControl&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;directorySecurity&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;SetAccessRuleProtection&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;false&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;directory&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;SetAccessControl&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;directorySecurity&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br/&gt;&#xA;&lt;div id=&#34;attachment_2235&#34; style=&#34;width: 387px&#34; class=&#34;wp-caption alignnone&#34;&gt;&#xA;  &lt;a href=&#34;http://www.timvw.be/wp-content/uploads/2011/09/directorysecurity.png&#34;&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/uploads/2011/09/directorysecurity.png&#34; alt=&#34;Image of the security properties tab in windows&#34; title=&#34;directorysecurity&#34; width=&#34;377&#34; height=&#34;461&#34; class=&#34;size-full wp-image-2235&#34; srcset=&#34;http://www.timvw.be/wp-content/uploads/2011/09/directorysecurity.png 377w, http://www.timvw.be/wp-content/uploads/2011/09/directorysecurity-245x300.png 245w&#34; sizes=&#34;(max-width: 377px) 100vw, 377px&#34; /&gt;&lt;/a&gt;&#xA;  &lt;p class=&#34;wp-caption-text&#34;&gt;&#xA;    Image of the security properties tab in windows&#xA;  &lt;/p&gt;</description>
    </item>
    <item>
      <title>Use SQL Server Profiler to see if a connection is pooled</title>
      <link>https://timvw.be/2011/08/19/use-sql-server-profiler-to-see-if-a-connection-is-pooled/</link>
      <pubDate>Fri, 19 Aug 2011 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2011/08/19/use-sql-server-profiler-to-see-if-a-connection-is-pooled/</guid>
      <description>&lt;p&gt;It took me a couple of websearches to discover how i can see in SQL Server Profiler whether or not a connection is pooled. Apparently you have to check &amp;lsquo;Show all columns&amp;rsquo; and then you can check the &amp;lsquo;EventSubClass&amp;rsquo; column:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.timvw.be/wp-content/uploads/2011/08/sql_server_profiler_eventsubclass.png&#34;&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/uploads/2011/08/sql_server_profiler_eventsubclass.png&#34; alt=&#34;&#34; title=&#34;sql_server_profiler_eventsubclass&#34; width=&#34;847&#34; height=&#34;536&#34; class=&#34;alignnone size-full wp-image-2217&#34; srcset=&#34;http://www.timvw.be/wp-content/uploads/2011/08/sql_server_profiler_eventsubclass.png 847w, http://www.timvw.be/wp-content/uploads/2011/08/sql_server_profiler_eventsubclass-300x189.png 300w&#34; sizes=&#34;(max-width: 847px) 100vw, 847px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;This is how it looks like in your trace window:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.timvw.be/wp-content/uploads/2011/08/sql_server_profiler_eventsubclass_trace.png&#34;&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/uploads/2011/08/sql_server_profiler_eventsubclass_trace.png&#34; alt=&#34;&#34; title=&#34;sql_server_profiler_eventsubclass_trace&#34; width=&#34;769&#34; height=&#34;407&#34; class=&#34;alignnone size-full wp-image-2221&#34; srcset=&#34;http://www.timvw.be/wp-content/uploads/2011/08/sql_server_profiler_eventsubclass_trace.png 769w, http://www.timvw.be/wp-content/uploads/2011/08/sql_server_profiler_eventsubclass_trace-300x158.png 300w&#34; sizes=&#34;(max-width: 769px) 100vw, 769px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>SqlConnectionStringBuilder sets the Pooling property to true by default</title>
      <link>https://timvw.be/2011/08/18/sqlconnectionstringbuilder-sets-the-pooling-property-to-true-by-default/</link>
      <pubDate>Thu, 18 Aug 2011 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2011/08/18/sqlconnectionstringbuilder-sets-the-pooling-property-to-true-by-default/</guid>
      <description>&lt;p&gt;Here is something that surprised me: SqlConnectionStringBuilder sets the &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnectionstringbuilder.pooling.aspx&#34;&gt;Pooling&lt;/a&gt; property to true by default.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Specialized solution for aggregate string concatenation</title>
      <link>https://timvw.be/2011/08/01/specialized-solution-for-aggregate-string-concatenation/</link>
      <pubDate>Mon, 01 Aug 2011 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2011/08/01/specialized-solution-for-aggregate-string-concatenation/</guid>
      <description>&lt;p&gt;I have noticed that most people come up with the following solution to build a string in T-SQL:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;WITH&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Numbers&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;AS&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#x9;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#x9;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;SELECT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;TOP&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;n&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#x9;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#x9;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;FROM&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Nums&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#x9;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;SELECT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;@&lt;/span&gt;message&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;COALESCE&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;@&lt;/span&gt;message&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;CAST&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;([&lt;/span&gt;n&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;AS&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;nvarchar&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;))&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#x9;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;FROM&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Numbers&lt;span style=&#34;color:#1f2328&#34;&gt;];&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;SELECT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;@&lt;/span&gt;message&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;STUFF&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;@&lt;/span&gt;message&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;SELECT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;@&lt;/span&gt;message&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;&#xA;&lt;p&gt;Important! Microsoft has no official documentation describing this aggregate concatenation&#xA;technique that is based on the assignment SELECT syntax. The behavior described here is&#xA;based on observation alone. The current implementation of the ConcatOrders function doesn’t&#xA;incorporate&#xA;an ORDER BY clause and does not guarantee the order of concatenation. According&#xA;to a blog entry by Microsoft’s Conor Cunningham, it seems that SQL Server will respect an&#xA;ORDER BY clause if specified (&lt;a href=&#34;http://blogs.msdn.com/sqltips/archive/2005/07/20/441053.aspx)&#34;&gt;http://blogs.msdn.com/sqltips/archive/2005/07/20/441053.aspx)&lt;/a&gt;.&#xA;Conor is a very credible source, but I should stress that besides&#xA;this blog entry I haven’t found&#xA;any official documentation describing how a multi-row assignment&#xA;SELECT should behave—with&#xA;or without an ORDER BY clause.&lt;/p&gt;</description>
    </item>
    <item>
      <title>TryGetResult</title>
      <link>https://timvw.be/2011/08/01/trygetresult/</link>
      <pubDate>Mon, 01 Aug 2011 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2011/08/01/trygetresult/</guid>
      <description>&lt;p&gt;I think this entry has been in the pipeline for a couple of years now and today i have decided to finally post it 😉 I got frustrated with the annoying out parameter in TryGet methods so i decided to use a different signature using TryGetResult:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;TryGetResult&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; TryGetResult&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;   &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;   &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    Success &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;false&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; TryGetResult&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;T result&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;   &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    Success &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    Result &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; result&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;bool&lt;/span&gt; Success &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;get&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;set&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; T Result &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;get&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;set&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And now your TryGet methods can have the following signature:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Launch DtExec from PowerShell</title>
      <link>https://timvw.be/2011/07/15/launch-dtexec-from-powershell/</link>
      <pubDate>Fri, 15 Jul 2011 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2011/07/15/launch-dtexec-from-powershell/</guid>
      <description>&lt;p&gt;Running an SSIS package from PowerShell (using DTExec) can be as simple as:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;RunPackage &lt;span style=&#34;color:#0550ae&#34;&gt;-File&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;C:\test.dtsx&amp;#39;&lt;/span&gt; -DatabaseHost &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;.&amp;#39;&lt;/span&gt; -DatabaseName &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;TEST&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Here are the functions that make it this simple:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;function&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;GetDtExecPath&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#953800&#34;&gt;$DtsPath&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;Get-ItemProperty&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\100\DTS\Setup&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;).&lt;/span&gt;SQLPath&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#953800&#34;&gt;$DtExecPath&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;Resolve-Path&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$DtsPath&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;\Binn\DTExec.exe&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#953800&#34;&gt;$DtExecPath&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;function&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;GetDtExecPropertyPathValue&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;      &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#cf222e&#34;&gt;param&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#953800&#34;&gt;$PropertyPath&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#953800&#34;&gt;$Value&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$PropertyPath&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;;\&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;`&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;\&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;`&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$Value&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;\&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;`&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;\&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;`&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;function&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;RunPackage&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#cf222e&#34;&gt;param&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;        &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#953800&#34;&gt;$DtExecPath&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;GetDtExecPath&lt;span style=&#34;color:#1f2328&#34;&gt;),&lt;/span&gt;       &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#953800&#34;&gt;$File&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;test.dtsx&amp;#39;&lt;/span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#953800&#34;&gt;$Params&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;/FILE &lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$File&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#cf222e&#34;&gt;for&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$i&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$i&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;-lt&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$Args&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Length&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$i&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;+=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;       &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#953800&#34;&gt;$PropertyPath&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$Args&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$i&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;].&lt;/span&gt;SubString&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;       &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#953800&#34;&gt;$Value&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$Args&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$i&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;];&lt;/span&gt;       &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#953800&#34;&gt;$PropertyPathValue&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; GetDtExecPropertyPathValue -PropertyPath &lt;span style=&#34;color:#953800&#34;&gt;$PropertyPath&lt;/span&gt; -Value &lt;span style=&#34;color:#953800&#34;&gt;$Value&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;       &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#953800&#34;&gt;$Params&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;+=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34; /SET &lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$PropertyPathValue&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#1f2328&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$DtExecPath&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$Params&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Building a Nums table (quickly)</title>
      <link>https://timvw.be/2011/07/13/building-a-nums-table-quickly/</link>
      <pubDate>Wed, 13 Jul 2011 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2011/07/13/building-a-nums-table-quickly/</guid>
      <description>&lt;p&gt;A while ago i presented my approach to generate a nums table &lt;a href=&#34;http://www.timvw.be/2010/12/11/techniques-learned-in-sqltopia-look-ma-no-loops/&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;DECLARE&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;@&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;count&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;INT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;1000&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;WITH&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Nums1&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;AS&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;SELECT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;AS&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Value&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;UNION&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;SELECT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;AS&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Value&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Nums2&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;AS&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;SELECT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;A&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;FROM&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Nums1&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;AS&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;A&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Nums1&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;AS&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;B&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Nums1&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;AS&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;C&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Nums3&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;AS&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;SELECT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;A&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;FROM&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Nums2&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;AS&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;A&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Nums2&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;AS&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;B&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Nums2&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;AS&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;C&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Nums4&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;AS&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;SELECT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;A&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;FROM&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Nums3&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;AS&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;A&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Nums3&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;AS&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;B&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Numbers&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;AS&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;SELECT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;TOP&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;@&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;count&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;ROW_NUMBER&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;OVER&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;ORDER&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;BY&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Value&lt;span style=&#34;color:#1f2328&#34;&gt;])&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;AS&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Value&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;FROM&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Nums4&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;SELECT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;FROM&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Numbers&lt;span style=&#34;color:#1f2328&#34;&gt;];&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Because we only use this code once to fill the table we don&amp;rsquo;t really care that it is not very fast. Today i discovered there is a way to speed it up in this wonderful book: &lt;a href=&#34;http://oreilly.com/catalog/9780735626034/&#34;&gt;Inside Microsoft® SQL Server® 2008: T-SQL Querying&lt;/a&gt;:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using User-Defined Table Type with Identity column in ADO.NET</title>
      <link>https://timvw.be/2011/07/13/using-user-defined-table-type-with-identity-column-in-ado.net/</link>
      <pubDate>Wed, 13 Jul 2011 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2011/07/13/using-user-defined-table-type-with-identity-column-in-ado.net/</guid>
      <description>&lt;p&gt;A while ago i wanted to use a &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/bb522526.aspx&#34;&gt;User-Defined Table Type&lt;/a&gt; to pass in a set of records. Nothing special about this except that the first column of the UDTT was an Identity column:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;CREATE&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;TYPE&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Star&lt;span style=&#34;color:#1f2328&#34;&gt;].[&lt;/span&gt;example&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;AS&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;TABLE&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Ordinal&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;int&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;IDENTITY&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;NOT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;NULL&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Name&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;nvarchar&lt;span style=&#34;color:#1f2328&#34;&gt;](&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;200&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;NOT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;NULL&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;After finding a lot of posts saying that this is not supported a colleague of mine, &lt;a href=&#34;http://stevehorsfield.wordpress.com/&#34;&gt;Stephen Horsfield&lt;/a&gt;, found a way to do it as following:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Set variables in SSIS package at runtime</title>
      <link>https://timvw.be/2011/05/19/set-variables-in-ssis-package-at-runtime/</link>
      <pubDate>Thu, 19 May 2011 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2011/05/19/set-variables-in-ssis-package-at-runtime/</guid>
      <description>&lt;p&gt;The documentation on &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/ms162810.aspx&#34;&gt;dtexec Utility (SSIS Tool)&lt;/a&gt; says the following:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;/Set propertyPath;value&lt;/p&gt;&#xA;&lt;p&gt;(Optional). Overrides the configuration of a variable, property, container, log provider, Foreach enumerator, or connection within a package. When this option is used, /Set changes the propertyPath argument to the value specified. Multiple /Set options can be specified.&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;At first sight this works like a charm but as soon as your value has a space dtexec seems to get confused 🙁 It took me a couple of websearches to find a &lt;a href=&#34;http://www.sqldev.org/sql-server-integration-services/escape-character-for-set-option-of-dtexec-34546.shtml&#34;&gt;post that suggests the following&lt;/a&gt;:&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to handle (short) bursts of work</title>
      <link>https://timvw.be/2011/05/09/how-to-handle-short-bursts-of-work/</link>
      <pubDate>Mon, 09 May 2011 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2011/05/09/how-to-handle-short-bursts-of-work/</guid>
      <description>&lt;p&gt;Here is a summary of how businesses around me handle short bursts of work:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;When i go to the doctor:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;find an empty seat in the waiting room&lt;/li&gt;&#xA;&lt;li&gt;observe who&amp;rsquo;s before me&lt;/li&gt;&#xA;&lt;li&gt;wait untill all those people have been seen by the doctor&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;When i go to the supermarket:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;join the queue at the end&lt;/li&gt;&#xA;&lt;li&gt;wait untill al before me have been helped&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;When i go the the bakery:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;get a number from a ticketing machine at the entrance&lt;/li&gt;&#xA;&lt;li&gt;wait untill a seller indicates he&amp;rsquo;s willing to process my requests&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;When i go to my car dealer:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Invoke parameterized stored procedure with PowerShell</title>
      <link>https://timvw.be/2011/03/21/invoke-parameterized-stored-procedure-with-powershell/</link>
      <pubDate>Mon, 21 Mar 2011 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2011/03/21/invoke-parameterized-stored-procedure-with-powershell/</guid>
      <description>&lt;p&gt;Here is a quick snippet that demonstrates how you can invoke a parametrized stored procedure with PowerShell:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$CreateTraceCommand&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$SqlConnection&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;CreateCommand&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$CreateTraceCommand&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;CommandType &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;System.Data.CommandType&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;StoredProcedure&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$CreateTraceCommand&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;CommandText &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;sp_trace_create&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$TraceIdParameter&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$CreateTraceCommand&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Parameters&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;@traceid&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;System.Data.SqlDbType&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Int&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$TraceIdParameter&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Direction &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;System.Data.ParameterDirection&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Output&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$OptionParameter&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$CreateTraceCommand&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Parameters&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;@options&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;System.Data.SqlDbType&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Int&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$OptionParameter&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Value &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;int&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$TraceFileParameter&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$CreateTraceCommand&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Parameters&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;@tracefile&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;System.Data.SqlDbType&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;NVarChar&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$TraceFileParameter&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Value &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;c:\temp\test&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;void&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$CreateTraceCommand&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ExecuteNonQuery&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$TraceId&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$TraceIdParameter&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Value&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;Write-Host&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;You created a trace with &lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;``&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;`&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Global hotkeys for iTunes on windows</title>
      <link>https://timvw.be/2011/03/16/global-hotkeys-for-itunes-on-windows/</link>
      <pubDate>Wed, 16 Mar 2011 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2011/03/16/global-hotkeys-for-itunes-on-windows/</guid>
      <description>&lt;p&gt;These days i use iTunes as media player. Unlike winamp this program does not seem to support system-wide hotkeys to control playback. This is the place where a productivity tool like &lt;a href=&#34;http://www.autohotkey.com/&#34;&gt;AutoHotkey&lt;/a&gt; comes into the rescue ;).&lt;/p&gt;&#xA;&lt;p&gt;I have configured the following keys:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Move to next song: [Ctrl] + [Alt] + [Right]&lt;/li&gt;&#xA;&lt;li&gt;Move to previous song: [Ctrl] + [Alt] + [Left]&lt;/li&gt;&#xA;&lt;li&gt;Toggle play/pause: [Ctrl] + [Alt] + p&lt;/li&gt;&#xA;&lt;li&gt;Turn volume up: [Ctrl] + [Alt] + [Up]&lt;/li&gt;&#xA;&lt;li&gt;Turn volume down: [Ctrl] + [Alt] + [Down]&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;^!right::&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;DetectHiddenWindows , On&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ControlSend , ahk_parent, ^&lt;span style=&#34;color:#0550ae&#34;&gt;{&lt;/span&gt;right&lt;span style=&#34;color:#0550ae&#34;&gt;}&lt;/span&gt;, iTunes ahk_class iTunes &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;DetectHiddenWindows , Off&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;^!left:: &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;DetectHiddenWindows , On&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ControlSend , ahk_parent, ^&lt;span style=&#34;color:#0550ae&#34;&gt;{&lt;/span&gt;left&lt;span style=&#34;color:#0550ae&#34;&gt;}&lt;/span&gt;, iTunes ahk_class iTunes&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;DetectHiddenWindows , Off&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;^!p:: &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;DetectHiddenWindows , On &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ControlSend , ahk_parent, &lt;span style=&#34;color:#0550ae&#34;&gt;{&lt;/span&gt;space&lt;span style=&#34;color:#0550ae&#34;&gt;}&lt;/span&gt;, iTunes ahk_class iTunes&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;DetectHiddenWindows , Off&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;^!up::&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;DetectHiddenWindows , On&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ControlSend, ahk_parent, ^&lt;span style=&#34;color:#0550ae&#34;&gt;{&lt;/span&gt;UP&lt;span style=&#34;color:#0550ae&#34;&gt;}&lt;/span&gt;, iTunes ahk_class iTunes&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;DetectHiddenWindows , Off&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;^!down::&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;DetectHiddenWindows , On&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ControlSend, ahk_parent, ^&lt;span style=&#34;color:#0550ae&#34;&gt;{&lt;/span&gt;DOWN&lt;span style=&#34;color:#0550ae&#34;&gt;}&lt;/span&gt;, iTunes ahk_class iTunes&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;DetectHiddenWindows , Off &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Navigation to the webpage was canceled</title>
      <link>https://timvw.be/2011/03/16/navigation-to-the-webpage-was-canceled/</link>
      <pubDate>Wed, 16 Mar 2011 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2011/03/16/navigation-to-the-webpage-was-canceled/</guid>
      <description>&lt;p&gt;Earlier today i ran into the &amp;lsquo;Navigation to the webpage was canceled&amp;rsquo; when i tried to open a CHM file:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.timvw.be/wp-content/uploads/2011/03/chm_navigation_to_page_was_canceled.png&#34;&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/uploads/2011/03/chm_navigation_to_page_was_canceled.png&#34; alt=&#34;&#34; title=&#34;chm_navigation_to_page_was_canceled&#34; width=&#34;698&#34; height=&#34;312&#34; class=&#34;alignnone size-full wp-image-2112&#34; srcset=&#34;http://www.timvw.be/wp-content/uploads/2011/03/chm_navigation_to_page_was_canceled.png 698w, http://www.timvw.be/wp-content/uploads/2011/03/chm_navigation_to_page_was_canceled-300x134.png 300w&#34; sizes=&#34;(max-width: 698px) 100vw, 698px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Navigating to the file properties allows me to unblock the file:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.timvw.be/wp-content/uploads/2011/03/chm_unblock.png&#34;&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/uploads/2011/03/chm_unblock.png&#34; alt=&#34;&#34; title=&#34;chm_unblock&#34; width=&#34;377&#34; height=&#34;515&#34; class=&#34;alignnone size-full wp-image-2113&#34; srcset=&#34;http://www.timvw.be/wp-content/uploads/2011/03/chm_unblock.png 377w, http://www.timvw.be/wp-content/uploads/2011/03/chm_unblock-219x300.png 219w&#34; sizes=&#34;(max-width: 377px) 100vw, 377px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;And now i can happily use the CHM file:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.timvw.be/wp-content/uploads/2011/03/chm_working.png&#34;&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/uploads/2011/03/chm_working.png&#34; alt=&#34;&#34; title=&#34;chm_working&#34; width=&#34;698&#34; height=&#34;312&#34; class=&#34;alignnone size-full wp-image-2114&#34; srcset=&#34;http://www.timvw.be/wp-content/uploads/2011/03/chm_working.png 698w, http://www.timvw.be/wp-content/uploads/2011/03/chm_working-300x134.png 300w&#34; sizes=&#34;(max-width: 698px) 100vw, 698px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Consume locally build software without overloading your $PATH</title>
      <link>https://timvw.be/2011/03/12/consume-locally-build-software-without-overloading-your-path/</link>
      <pubDate>Sat, 12 Mar 2011 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2011/03/12/consume-locally-build-software-without-overloading-your-path/</guid>
      <description>&lt;p&gt;How do you consume locally build software? For a while now i have used the following approach:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Create a ~/bin folder&lt;/li&gt;&#xA;&lt;li&gt;Add that ~/bin folder to my $PATH&lt;/li&gt;&#xA;&lt;li&gt;Add symlinks from binary to ~/bin (ln -s ~/src/git-tfs/GitTfs.Vs2010/bin/debug/git-tfs.exe git-tfs)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Please let me know about your strategy..&lt;/p&gt;</description>
    </item>
    <item>
      <title>Dynamic scriptblock with PowerShell</title>
      <link>https://timvw.be/2011/03/12/dynamic-scriptblock-with-powershell/</link>
      <pubDate>Sat, 12 Mar 2011 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2011/03/12/dynamic-scriptblock-with-powershell/</guid>
      <description>&lt;p&gt;Earlier this week i tried to run a command on a remote computer but it did not seem to work:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$name&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;tim&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$computer&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;localhost&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;Invoke-Command&lt;/span&gt; -ComputerName &lt;span style=&#34;color:#953800&#34;&gt;$computer&lt;/span&gt; -ScriptBlock &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#6639ba&#34;&gt;Write-Host&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Hello &lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$name&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Because powershell serialises the { Write-Host &amp;ldquo;Hello $name&amp;rdquo; } as a string this ends up at the remote computer as { Write-Host &amp;ldquo;Hello $null&amp;rdquo; }. In order to send our &amp;ldquo;dynamic&amp;quot;command string over the wire we have to make sure it is serialised correctly:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Some PowerShell functions to work with SSIS packages</title>
      <link>https://timvw.be/2011/03/12/some-powershell-functions-to-work-with-ssis-packages/</link>
      <pubDate>Sat, 12 Mar 2011 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2011/03/12/some-powershell-functions-to-work-with-ssis-packages/</guid>
      <description>&lt;p&gt;Here are some powershell functions (using XPath) that come in handy when working with SSIS packages:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;function&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;FindConnectionManagerNames&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#x9;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;param&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$fileName&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#953800&#34;&gt;$xml&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;xml&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;Get-Content&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$fileName&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#x9;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#953800&#34;&gt;$ns&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#6639ba&#34;&gt;New-Object&lt;/span&gt; Xml&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;XmlNamespaceManager &lt;span style=&#34;color:#953800&#34;&gt;$xml&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;NameTable&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#x9;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#953800&#34;&gt;$ns&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;AddNamespace&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;DTS&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;www.microsoft.com/SqlServer/Dts&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#x9;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#953800&#34;&gt;$xml&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;SelectNodes&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;//DTS:ConnectionManager/DTS:Property[@DTS:Name=&amp;#39;ObjectName&amp;#39;]&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$ns&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;Foreach&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$_&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;#text&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;function&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;GetConnectionManagerConnectionString&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;param&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$fileName&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$connectionManagerName&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#953800&#34;&gt;$xml&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;xml&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;Get-Content&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$fileName&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#953800&#34;&gt;$ns&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#6639ba&#34;&gt;New-Object&lt;/span&gt; Xml&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;XmlNamespaceManager &lt;span style=&#34;color:#953800&#34;&gt;$xml&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;NameTable&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#953800&#34;&gt;$ns&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;AddNamespace&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;DTS&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;www.microsoft.com/SqlServer/Dts&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#953800&#34;&gt;$path&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;//DTS:ConnectionManager[DTS:Property=&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$connectionManagerName&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;]/DTS:ObjectData/DTS:ConnectionManager/DTS:Property[@DTS:Name=&amp;#39;ConnectionString&amp;#39;]&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#953800&#34;&gt;$xml&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;SelectSingleNode&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$path&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$ns&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;).&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;#text&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;function&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;FindVariables&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#x9;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;param&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$fileName&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#953800&#34;&gt;$xml&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;xml&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;Get-Content&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$fileName&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#953800&#34;&gt;$ns&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#6639ba&#34;&gt;New-Object&lt;/span&gt; Xml&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;XmlNamespaceManager &lt;span style=&#34;color:#953800&#34;&gt;$xml&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;NameTable&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#953800&#34;&gt;$ns&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;AddNamespace&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;DTS&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;www.microsoft.com/SqlServer/Dts&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#953800&#34;&gt;$xml&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;SelectNodes&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;//DTS:Variable/DTS:Property[@DTS:Name=&amp;#39;ObjectName&amp;#39;]&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$ns&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;Foreach&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$_&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;#text&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;function&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;GetVariable&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#x9;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;param&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$fileName&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$variableName&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#953800&#34;&gt;$xml&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;xml&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;Get-Content&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$fileName&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#953800&#34;&gt;$ns&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#6639ba&#34;&gt;New-Object&lt;/span&gt; Xml&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;XmlNamespaceManager &lt;span style=&#34;color:#953800&#34;&gt;$xml&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;NameTable&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#953800&#34;&gt;$ns&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;AddNamespace&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;DTS&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;www.microsoft.com/SqlServer/Dts&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#953800&#34;&gt;$xml&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;SelectSingleNode&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;//DTS:Variable[DTS:Property=&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$variableName&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;]/DTS:VariableValue&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$ns&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;).&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;#text&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Some tips for .Net developers using git on cygwin</title>
      <link>https://timvw.be/2011/03/12/some-tips-for-.net-developers-using-git-on-cygwin/</link>
      <pubDate>Sat, 12 Mar 2011 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2011/03/12/some-tips-for-.net-developers-using-git-on-cygwin/</guid>
      <description>&lt;p&gt;Here are some tips that i want to share with fellow .Net developers that use git on cygwin.&lt;/p&gt;&#xA;&lt;p&gt;First of all i defined some aliases in my ~/.bashrc:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;# open explorer in the current working directory &lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;alias&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;explorer&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;explorer.exe &amp;#34;\`cygpath -aw \&amp;#34;$PWD\&amp;#34;\`&amp;#34;&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;# invoke MSBuild&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;alias&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;msbuild&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;/cygdrive/c/Windows/Microsoft.NET/Framework/v4.0.30319/MSBuild.exe&amp;amp;&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Because i do not like the TFS source control story i use &lt;a href=&#34;https://github.com/spraints/git-tfs&#34;&gt;git-tfs&lt;/a&gt;. As a .Net developer you want to add the following to your .git/info/exclude file:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using WinMerge as difftool on cygwin/git</title>
      <link>https://timvw.be/2011/03/12/using-winmerge-as-difftool-on-cygwin/git/</link>
      <pubDate>Sat, 12 Mar 2011 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2011/03/12/using-winmerge-as-difftool-on-cygwin/git/</guid>
      <description>&lt;p&gt;Last couple of weeks i have been using &lt;a href=&#34;http://git-scm.com/&#34;&gt;Git&lt;/a&gt; on &lt;a href=&#34;http://www.cygwin.com&#34;&gt;cygwin&lt;/a&gt; and i got very satisfying results out of it. One thing that i wanted to tweak was the ability to use &lt;a href=&#34;http://winmerge.org/&#34;&gt;WinMerge&lt;/a&gt; to compare files. Here is how i do it:&lt;/p&gt;&#xA;&lt;p&gt;Here is my ~/.gitconfig:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;[&lt;/span&gt;user&lt;span style=&#34;color:#0550ae&#34;&gt;]&lt;/span&gt;&#x9;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;name&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; Tim Van Wassenhove&#x9;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;email&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; git@timvw.be&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;[&lt;/span&gt;diff&lt;span style=&#34;color:#0550ae&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;external&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;~/bin/git-diff-wrapper.sh&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Here is my ~/bin/git-diff-wrapper.sh (it uses &lt;a href=&#34;http://www.cygwin.com/cygwin-ug-net/using-utils.html&#34;&gt;cygpath&lt;/a&gt; to translate the paths):&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;#!/bin/sh&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;/cygdrive/c/Program Files/WinMerge/WinMergeU.EXE&amp;#34;&lt;/span&gt; /e /ub /dl other /dr &lt;span style=&#34;color:#6639ba&#34;&gt;local&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;\`cygpath -aw &lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$1&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;\`&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;\`cygpath -aw &lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$2&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;\`&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;\`cygpath -aw &lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$5&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;\`&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And now we are good to go 😉&lt;/p&gt;</description>
    </item>
    <item>
      <title>Get/SetVariable value from SSIS VariableDispenser</title>
      <link>https://timvw.be/2011/03/08/get/setvariable-value-from-ssis-variabledispenser/</link>
      <pubDate>Tue, 08 Mar 2011 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2011/03/08/get/setvariable-value-from-ssis-variabledispenser/</guid>
      <description>&lt;p&gt;Here is some code that allows you to Get/Set a variable (object) value from/on the &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.dts.runtime.variabledispenser.aspx&#34;&gt;VariableDispenser&lt;/a&gt; in an SSIS package:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; T GetVariable&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt; VariableDispenser variableDispenser&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; scopedVariableName&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  Variables variables &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;null&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#cf222e&#34;&gt;try&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    variableDispenser&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;LockForRead&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;scopedVariableName&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    variableDispenser&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetVariables&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;ref&lt;/span&gt; variables&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;variables&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;].&lt;/span&gt;Value&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#cf222e&#34;&gt;finally&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;variables &lt;span style=&#34;color:#1f2328&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;null&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; variables&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Unlock&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; SetVariable&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt; VariableDispenser variableDispenser&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; scopedVariableName&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; T &lt;span style=&#34;color:#cf222e&#34;&gt;value&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  Variables variables &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;null&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#cf222e&#34;&gt;try&lt;/span&gt;   &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    variableDispenser&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;LockForWrite&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;scopedVariableName&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    variableDispenser&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetVariables&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;ref&lt;/span&gt; variables&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    variables&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;].&lt;/span&gt;Value &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;value&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#cf222e&#34;&gt;finally&lt;/span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;   &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;variables &lt;span style=&#34;color:#1f2328&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;null&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; variables&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Unlock&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Consume custom SSIS tasks without GAC installation</title>
      <link>https://timvw.be/2011/03/05/consume-custom-ssis-tasks-without-gac-installation/</link>
      <pubDate>Sat, 05 Mar 2011 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2011/03/05/consume-custom-ssis-tasks-without-gac-installation/</guid>
      <description>&lt;p&gt;For a while i thought that in order to consume a custom SSIS task you had to install the assembly in the GAC. Now i know better 😉&lt;/p&gt;&#xA;&lt;p&gt;For the designer (BIDS) you have to copy the files to&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;C:\Program Files\Microsoft SQL Server\100\DTS\Tasks&lt;/li&gt;&#xA;&lt;li&gt;C:\Program Files\Microsoft SQL Server\100\DTS\PipelineComponents&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;For the runtime (BIDS) you have to copy the files to&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;And for dtexec you have to copy the files to&lt;/p&gt;</description>
    </item>
    <item>
      <title>Exploring messaging at lower levels...</title>
      <link>https://timvw.be/2011/02/26/exploring-messaging-at-lower-levels.../</link>
      <pubDate>Sat, 26 Feb 2011 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2011/02/26/exploring-messaging-at-lower-levels.../</guid>
      <description>&lt;p&gt;Yesterday a colleague of mine, &lt;a href=&#34;http://neildoesdotnet.blogspot.com/&#34;&gt;Neil Robbins&lt;/a&gt;, asked me how a piece of code would look like if I apply the Hollywood principle on it (Don&amp;rsquo;t call us, we&amp;rsquo;ll cal you).&lt;/p&gt;&#xA;&lt;p&gt;Let me start with setting the scene: The purpose of the code is to provide items via provider and to consume those items via a consumer.&lt;/p&gt;&#xA;&lt;p&gt;Here is how my oldskool function signatures would look like:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;ItemProviderFactory&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; ItemProvider Create&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;..&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;ItemProvider&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;   &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; IEnumerable&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;Item&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; Provide&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;..&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;ItemConsumerFactory&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; ItemConsumer Create&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;..&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;ItemConsumer&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; Consume&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;IEnumerable&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;Item&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; items&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;..&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;My Hollywood style function signatures look like the following:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Get current file in PowerShell</title>
      <link>https://timvw.be/2011/01/24/get-current-file-in-powershell/</link>
      <pubDate>Mon, 24 Jan 2011 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2011/01/24/get-current-file-in-powershell/</guid>
      <description>&lt;p&gt;A while ago i wrote a small script to take care of deployment. Configuring the source folders went as following:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;param&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#953800&#34;&gt;$BaseDir&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;Get-Location&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;).&lt;/span&gt;Path&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#953800&#34;&gt;$WebDir&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;Resolve-Path&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$BaseDir&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;\web&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;),&lt;/span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#953800&#34;&gt;$DatabaseDir&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;Resolve-Path&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$BaseDir&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;\database&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The problem with this code is that it only works when your current working directory is set to the location of this script. An administrator (or build system) invokes the script as following:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;PS &lt;/span&gt;C:&lt;span style=&#34;color:#1f2328&#34;&gt;\&lt;/span&gt;Users&lt;span style=&#34;color:#1f2328&#34;&gt;\&lt;/span&gt;Admin&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&amp;amp;&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;D:\Deployments\20110124\Deploy.ps1&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Because we don&amp;rsquo;t want to annoy the consumer of our script with the burden of making sure he is in the correct directory we modified our code as following:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Polling the existence of a file with PowerShell</title>
      <link>https://timvw.be/2011/01/24/polling-the-existence-of-a-file-with-powershell/</link>
      <pubDate>Mon, 24 Jan 2011 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2011/01/24/polling-the-existence-of-a-file-with-powershell/</guid>
      <description>&lt;p&gt;Sometimes you run into a situations where a given task spawns a separate thread and completes it&amp;rsquo;s work on that separate thread. Eg: sending a bit XMLA to SQL Server Analysis Services with Microsoft.AnalysisServices.Deployment.exe and then waiting for the processing to be completed. Anyway, here is a simple function that will wait untill a given file exists:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;function&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;WaitForFile($File&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#cf222e&#34;&gt;while&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(!(&lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;Test-Path&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$File&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;))&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#6639ba&#34;&gt;Start-Sleep&lt;/span&gt; -s &lt;span style=&#34;color:#0550ae&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;   &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Get entire message body from an Intent</title>
      <link>https://timvw.be/2011/01/06/get-entire-message-body-from-an-intent/</link>
      <pubDate>Thu, 06 Jan 2011 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2011/01/06/get-entire-message-body-from-an-intent/</guid>
      <description>&lt;p&gt;I recently started programming the &lt;a href=&#34;http://www.android.com/&#34;&gt;Android&lt;/a&gt; and noticed that most examples for processing an incoming SMS are not entirely correct.&lt;/p&gt;&#xA;&lt;p&gt;An SMS message is &lt;a href=&#34;http://en.wikipedia.org/wiki/SMS#Message_size&#34;&gt;limited&lt;/a&gt; to 160 characters. Current mobile phones break up a larger message in multiple messages transparently for the user. When Android notifies you about an incoming SMS it has all parts (of that large message) available. So here is how you reconstruct the entire message body from an Intent&lt;/p&gt;</description>
    </item>
    <item>
      <title>Techniques learned in SQLtopia: Look Ma, no loops!</title>
      <link>https://timvw.be/2010/12/11/techniques-learned-in-sqltopia-look-ma-no-loops/</link>
      <pubDate>Sat, 11 Dec 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/12/11/techniques-learned-in-sqltopia-look-ma-no-loops/</guid>
      <description>&lt;p&gt;I have been programming in c-based languages for more than 10 years now. Lately i have spent quite a bit of time in SQLtopia and learned a couple of techniques that are quite different from what i was used to.&lt;/p&gt;&#xA;&lt;p&gt;Let me explain with an example: The boss comes in and asks for a report that contains all the days on which i have worked this year. As a typical c# programmer i come up with the following solution: Iterate over all the days in the year and skip the days i was out on holidays:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Exploring window functions</title>
      <link>https://timvw.be/2010/12/10/exploring-window-functions/</link>
      <pubDate>Fri, 10 Dec 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/12/10/exploring-window-functions/</guid>
      <description>&lt;p&gt;Here is a sample query that allows you to explore the behavior of various &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/ms189461.aspx&#34;&gt;aggregate window functions&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;WITH&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Nums1&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;AS&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;SELECT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;AS&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Value&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;UNION&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;SELECT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;AS&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Value&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Nums2&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;AS&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;SELECT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;A&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;FROM&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Nums1&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;AS&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;A&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Nums1&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;AS&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;B&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Nums1&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;AS&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;C&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Nums3&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;AS&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;SELECT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;A&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;FROM&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Nums2&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;AS&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;A&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Nums2&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;AS&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;B&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Nums2&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;AS&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;C&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Nums4&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;AS&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;SELECT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;A&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;FROM&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Nums3&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;AS&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;A&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Nums3&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;AS&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;B&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;-- Build numbers from 1 to 1000&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Numbers&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;AS&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;SELECT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;TOP&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;1000&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;ROW_NUMBER&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;OVER&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;ORDER&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;BY&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Value&lt;span style=&#34;color:#1f2328&#34;&gt;])&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;AS&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Value&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;FROM&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Nums4&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;SELECT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Value&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;ROW_NUMBER&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;OVER&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;PARTITION&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;BY&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Value&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;100&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;ORDER&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;BY&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Value&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;%&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;AS&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;RowNumber&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;RANK&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;OVER&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;PARTITION&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;BY&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Value&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;100&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;ORDER&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;BY&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Value&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;%&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;AS&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Rank&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;DENSE_RANK&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;OVER&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;PARTITION&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;BY&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Value&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;100&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;ORDER&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;BY&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Value&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;%&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;AS&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;DenseRank&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;NTILE&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;4&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;OVER&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;PARTITION&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;BY&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Value&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;100&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;ORDER&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;BY&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Value&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;%&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;AS&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Tile100&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;FROM&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Numbers&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;ORDER&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;BY&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;Value&lt;span style=&#34;color:#1f2328&#34;&gt;];&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Convert AAC/M4A files to MP3 with VLC and PowerShell</title>
      <link>https://timvw.be/2010/11/20/convert-aac/m4a-files-to-mp3-with-vlc-and-powershell/</link>
      <pubDate>Sat, 20 Nov 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/11/20/convert-aac/m4a-files-to-mp3-with-vlc-and-powershell/</guid>
      <description>&lt;p&gt;Here is a way to convert your AAC/M4A files to MP3 using &lt;a href=&#34;http://www.videolan.org/vlc&#34;&gt;VLC&lt;/a&gt; media player:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;vlc.exe -I dummy old.m4a :sout=#transcode{acodec=$codec,vcodec=dummy}:standard{access=file,mux=raw,dst=new.mp3} vlc://quit&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Let&amp;rsquo;s wrap this command in a bit of PowerShell:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;function&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;ConvertToMp3([switch&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$inputObject&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$vlc&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;C:\Program Files\VideoLAN\VLC\vlc.exe&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;      &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#cf222e&#34;&gt;PROCESS&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;            &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#953800&#34;&gt;$codec&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;mp3&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;        &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#953800&#34;&gt;$oldFile&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$_&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#953800&#34;&gt;$newFile&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$oldFile&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;FullName&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Replace&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$oldFile&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Extension&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;.&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$codec&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#1f2328&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$vlc&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;&lt;/span&gt; -I dummy &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$oldFile&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;:sout=#transcode{acodec=&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$codec&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;,vcodec=dummy}:standard{access=file,mux=raw,dst=\&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;`&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$newFile&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;\&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;`&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;}&amp;#34;&lt;/span&gt; vlc&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;//&lt;/span&gt;quit &lt;span style=&#34;color:#1f2328&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#6639ba&#34;&gt;out-null&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#57606a&#34;&gt;#Only remove source files when you are sure that the conversion works as you want          &lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#57606a&#34;&gt;#Remove-Item $oldFile;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And now we can use this function for *all* m4a files in a given folder:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Configure Visual Studio 2010 environment in PowerShell</title>
      <link>https://timvw.be/2010/11/17/configure-visual-studio-2010-environment-in-powershell/</link>
      <pubDate>Wed, 17 Nov 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/11/17/configure-visual-studio-2010-environment-in-powershell/</guid>
      <description>&lt;p&gt;Instead of using the &amp;ldquo;Visual Studo Command Prompt (2010)&amp;rdquo; i wanted to use PowerShell instead. I found &lt;a href=&#34;http://blogs.msdn.com/b/ploeh/archive/2008/04/09/visualstudio2008powershell.aspx&#34;&gt;this&lt;/a&gt; post which does it for VS2008. Extending it for VS2010 was pretty easy:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;function&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;SetVS2008&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#953800&#34;&gt;$vs90comntools&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;Get-ChildItem&lt;/span&gt; env&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;:&lt;/span&gt;VS90COMNTOOLS&lt;span style=&#34;color:#1f2328&#34;&gt;).&lt;/span&gt;Value&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#953800&#34;&gt;$batchFile&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;System.IO.Path&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]::&lt;/span&gt;Combine&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$vs90comntools&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;vsvars32.bat&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#6639ba&#34;&gt;Get-Batchfile&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$BatchFile&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;System.Console&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]::&lt;/span&gt;Title &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Visual Studio 2008 Windows PowerShell&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;function&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;SetVS2010&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#953800&#34;&gt;$vs100comntools&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;Get-ChildItem&lt;/span&gt; env&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;:&lt;/span&gt;VS100COMNTOOLS&lt;span style=&#34;color:#1f2328&#34;&gt;).&lt;/span&gt;Value&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#953800&#34;&gt;$batchFile&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;System.IO.Path&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]::&lt;/span&gt;Combine&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$vs100comntools&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;vsvars32.bat&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#6639ba&#34;&gt;Get-Batchfile&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$BatchFile&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;System.Console&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]::&lt;/span&gt;Title &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Visual Studio 2010 Windows PowerShell&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;function&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;Get-Batchfile($file&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#953800&#34;&gt;$cmd&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;\&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;`&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$file&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;\&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;`&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt; &amp;amp; set&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;cmd &lt;span style=&#34;color:#1f2328&#34;&gt;/&lt;/span&gt;c &lt;span style=&#34;color:#953800&#34;&gt;$cmd&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#6639ba&#34;&gt;Foreach-Object&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#953800&#34;&gt;$p&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$v&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$_&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;split&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;=&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#6639ba&#34;&gt;Set-Item&lt;/span&gt; -path env&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$p&lt;/span&gt; -value &lt;span style=&#34;color:#953800&#34;&gt;$v&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Load all script files at PowerShell startup</title>
      <link>https://timvw.be/2010/11/17/load-all-script-files-at-powershell-startup/</link>
      <pubDate>Wed, 17 Nov 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/11/17/load-all-script-files-at-powershell-startup/</guid>
      <description>&lt;p&gt;These days i have quite some scripts files that i want to be loaded each time i launch PowerShell. &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/bb613488%28VS.85%29.aspx&#34;&gt;Windows PowerShell Profiles&lt;/a&gt; teaches me where i should store my $profile. Here is what it looks like:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;# Lookup powershell scripts location&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$UserProfile&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;Get-ChildItem&lt;/span&gt; Env&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;:&lt;/span&gt;UserProfile&lt;span style=&#34;color:#1f2328&#34;&gt;).&lt;/span&gt;Value&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$ScriptFolder&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$UserProfile&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;\My documents\WindowsPowerShell&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;# Source all .ps1 files in PowerShell profile folder  &lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;Get-ChildItem&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$ScriptFolder&lt;/span&gt; -name -include &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;*.ps1&amp;#39;&lt;/span&gt; -exclude &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;profile.ps1&amp;#39;&lt;/span&gt;   &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;foreach&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(.&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$ScriptFolder&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;\&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$_&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;};&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;# Configure environment for VS2010  &lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;SetVS2010&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Get variable value from variable with PowerShell</title>
      <link>https://timvw.be/2010/11/11/get-variable-value-from-variable-with-powershell/</link>
      <pubDate>Thu, 11 Nov 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/11/11/get-variable-value-from-variable-with-powershell/</guid>
      <description>&lt;p&gt;Sometimes you only know at runtime in which variable a certain value is stored. Let me clarify with an example:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$tim&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;30&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$evy&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;24&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$name&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#6639ba&#34;&gt;Read-Host&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Enter your name&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In essence, if $name equals tim we want to use $tim and if $name equals evy we want to use $evy. This can be achieved with Get-Variable:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$age&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#6639ba&#34;&gt;Get-Variable&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$name&lt;/span&gt; -valueOnly&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;Write-Host&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Your age is &lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$age&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Update ConfigurationStrings in SSIS package with PowerShell</title>
      <link>https://timvw.be/2010/11/11/update-configurationstrings-in-ssis-package-with-powershell/</link>
      <pubDate>Thu, 11 Nov 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/11/11/update-configurationstrings-in-ssis-package-with-powershell/</guid>
      <description>&lt;p&gt;Here are some functions that allow you to update ConfigurationStrings in a SSIS package (dtsx) using PowerShell:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;function&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;UpdateConfigurationStrings($file&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#953800&#34;&gt;$xml&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;xml&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;Get-Content&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$file&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#953800&#34;&gt;$ns&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#6639ba&#34;&gt;New-Object&lt;/span&gt; Xml&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;XmlNamespaceManager &lt;span style=&#34;color:#953800&#34;&gt;$xml&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;NameTable&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#953800&#34;&gt;$ns&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;AddNamespace&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;DTS&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;www.microsoft.com/SqlServer/Dts&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;UpdateConfigurationNodes &lt;span style=&#34;color:#953800&#34;&gt;$xml&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$ns&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#6639ba&#34;&gt;Set-Content&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$file&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$xml&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;OuterXml&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;function&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;UpdateConfigurationNodes($xml&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$ns&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#953800&#34;&gt;$selectConfigurationNodes&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;//DTS:Configuration&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#953800&#34;&gt;$xml&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;SelectNodes&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$selectConfigurationNodes&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$ns&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;foreach&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; UpdateConfigurationNode &lt;span style=&#34;color:#953800&#34;&gt;$_&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$ns&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;};&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;function&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;UpdateConfigurationNode($configurationNode&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$ns&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#953800&#34;&gt;$selectConfigurationString&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;./DTS:Property[@DTS:Name=&amp;#39;ConfigurationString&amp;#39;]&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#953800&#34;&gt;$configurationStringNode&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$configurationNode&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;SelectSingleNode&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$selectConfigurationString&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$ns&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#953800&#34;&gt;$oldConfigurationStringValue&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$configurationStringNode&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;#text&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#953800&#34;&gt;$newConfigurationStringValue&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; GetNewConfigurationStringValue &lt;span style=&#34;color:#953800&#34;&gt;$oldConfigurationStringValue&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#953800&#34;&gt;$configurationStringNode&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;#text&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$newConfigurationStringValue&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;function&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;GetNewConfigurationStringValue($oldConfigurationStringValue&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#57606a&#34;&gt;# implement some logic to determine new value&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;new value&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Build your solution with Visual Studio from MSBuild</title>
      <link>https://timvw.be/2010/11/07/build-your-solution-with-visual-studio-from-msbuild/</link>
      <pubDate>Sun, 07 Nov 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/11/07/build-your-solution-with-visual-studio-from-msbuild/</guid>
      <description>&lt;p&gt;Unfortunately MSBuild and &lt;a href=&#34;http://bidshelper.codeplex.com/&#34;&gt;BIDS Helper&lt;/a&gt; are not able to build an .asdatabase from our Analysis Services project (.dwproj). Here is a task which invokes Visual Studio to build such a solution:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;Target&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Name=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;DevEnvBuild&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;Error&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Condition=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;&amp;#39;$(SolutionFile)&amp;#39;==&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Text=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Missing SolutionFile&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;PropertyGroup&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;DevEnvTool&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Condition=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;&amp;#39;$(DevEnvTool)&amp;#39;==&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;gt;&lt;/span&gt;C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/DevEnvTool&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;DevEnvSwitch&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Condition=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;&amp;#39;$(DevEnvSwitch)&amp;#39;==&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;gt;&lt;/span&gt;Build&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/DevEnvSwitch&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;DevEnvBuildCommand&amp;gt;&lt;/span&gt;&amp;#34;$(DevEnvTool)&amp;#34; &amp;#34;$(SolutionFile)&amp;#34; /$(DevEnvSwitch)&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/DevEnvBuildCommand&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/PropertyGroup&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;Exec&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Command=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;$(DevEnvBuildCommand)&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/Target&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Invoke PowerShell script from MSBuild</title>
      <link>https://timvw.be/2010/11/07/invoke-powershell-script-from-msbuild/</link>
      <pubDate>Sun, 07 Nov 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/11/07/invoke-powershell-script-from-msbuild/</guid>
      <description>&lt;p&gt;Here is a small MSBuild target that allows you to invoke a PowerShell script, eg: powershell.exe &amp;amp; &amp;lsquo;script.ps1&amp;rsquo; -SomeParam &amp;lsquo;x&amp;rsquo;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;Target&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Name=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;InvokePowerShell&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;PropertyGroup&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;PowerShellCommand&amp;gt;&lt;/span&gt;&amp;#34;$(PowerShellTool)&amp;#34; &amp;#34;&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;&amp;amp;&lt;/span&gt; &amp;#39;$(ScriptFile)&amp;#39; -SomeParam &amp;#39;$(SomeParam)&amp;#39; &amp;#34;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/PowerShellCommand&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/PropertyGroup&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;Exec&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Command=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;$(PowerShellCommand)&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/Target&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Modify a text file with PowerShell</title>
      <link>https://timvw.be/2010/11/07/modify-a-text-file-with-powershell/</link>
      <pubDate>Sun, 07 Nov 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/11/07/modify-a-text-file-with-powershell/</guid>
      <description>&lt;p&gt;A while ago i wanted to update a connection string in a configuration file. My first attempt was the following:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;Get-Content&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$File&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;Foreach&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$_&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;-Replace&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Source&amp;gt;(.*?)&amp;lt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Source&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$New&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;lt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#6639ba&#34;&gt;Set-Content&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$File&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Running this scripts leads to the following error: &amp;ldquo;Set-Content : The process cannot access the file because it is being used by another process.&amp;rdquo; In order to avoid this you can complete the read operation before you start writing as following:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;Get-Content&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$File&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;Foreach&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$_&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;-Replace&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Source&amp;gt;(.*?)&amp;lt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Source&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$New&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;lt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#6639ba&#34;&gt;Set-Content&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$File&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Deploying a Database Project does not create artefacts for custom schemas</title>
      <link>https://timvw.be/2010/11/01/deploying-a-database-project-does-not-create-artefacts-for-custom-schemas/</link>
      <pubDate>Mon, 01 Nov 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/11/01/deploying-a-database-project-does-not-create-artefacts-for-custom-schemas/</guid>
      <description>&lt;p&gt;Last week we noticed that the artefacts for a custom schema in our Database Project were not created (or updated). It took us a while to figure out what was wrong. When you add a script via the &amp;lsquo;Add Existing item&amp;rsquo; menu in VS2010 the file&amp;rsquo;s &lt;strong&gt;Build Action&lt;/strong&gt; is set to &lt;strong&gt;Not in Build&lt;/strong&gt; for some unknown reason. As soon as we changed the value to &lt;strong&gt;Build&lt;/strong&gt; and Deployed again our artefacts were created.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Update all repositories with Powershell</title>
      <link>https://timvw.be/2010/10/25/update-all-repositories-with-powershell/</link>
      <pubDate>Mon, 25 Oct 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/10/25/update-all-repositories-with-powershell/</guid>
      <description>&lt;p&gt;I typically store the repositories i am working on under D:\Code. Each morning i had to right click on each of those folders and select &amp;lsquo;SVN Update&amp;rsquo; using &lt;a href=&#34;http://tortoisesvn.tigris.org/&#34;&gt;Tortoise SVN&lt;/a&gt;. Today i decided there had to be a better way to accomplish this tedious task:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;dir &lt;/span&gt;d:&lt;span style=&#34;color:#1f2328&#34;&gt;\&lt;/span&gt;code &lt;span style=&#34;color:#1f2328&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;foreach&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; svn update &lt;span style=&#34;color:#953800&#34;&gt;$_&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;FullName &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And in case you really like tortoise, you can do the following:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;dir &lt;/span&gt;c:&lt;span style=&#34;color:#1f2328&#34;&gt;\&lt;/span&gt;code &lt;span style=&#34;color:#1f2328&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;foreach&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; tortoiseproc &lt;span style=&#34;color:#1f2328&#34;&gt;/&lt;/span&gt;command&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;:&lt;/span&gt;update &lt;span style=&#34;color:#1f2328&#34;&gt;/&lt;/span&gt;closeonend&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;/&lt;/span&gt;path&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;:&lt;/span&gt;$&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$_&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;FullName&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>T-SQL: Remove all rows from all tables in your schema</title>
      <link>https://timvw.be/2010/09/07/t-sql-remove-all-rows-from-all-tables-in-your-schema/</link>
      <pubDate>Tue, 07 Sep 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/09/07/t-sql-remove-all-rows-from-all-tables-in-your-schema/</guid>
      <description>&lt;p&gt;Sometimes i want to quickly clean up a database and start from fresh. Here is a small script that does exactly that.. (I just run the script a couple of times, untill no affected rows remain&amp;hellip; Far more efficient than figuring out which constraints exist, building up a dependency tree, and cleanly deleting all rows):&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;-- Remove all rows from all tables&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;DECLARE&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;@&lt;/span&gt;tableName&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;VARCHAR&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;255&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;DECLARE&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;tableNames&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;CURSOR&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;FOR&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;SELECT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;name&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;FROM&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;sys&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Tables&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;OPEN&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;tableNames&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;FETCH&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;NEXT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;FROM&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;tableNames&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;INTO&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;@&lt;/span&gt;tableName&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;WHILE&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;@@&lt;/span&gt;FETCH_STATUS&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;BEGIN&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#x9;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;EXEC&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;DELETE FROM [&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;@&lt;/span&gt;tableName&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;]&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#x9;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;FETCH&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;NEXT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;FROM&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;tableNames&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;INTO&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;@&lt;/span&gt;tableName&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;END&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;CLOSE&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;tableNames&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;DEALLOCATE&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;tableNames&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>WIF: whr parameter is a hint for user Home Realm</title>
      <link>https://timvw.be/2010/09/07/wif-whr-parameter-is-a-hint-for-user-home-realm/</link>
      <pubDate>Tue, 07 Sep 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/09/07/wif-whr-parameter-is-a-hint-for-user-home-realm/</guid>
      <description>&lt;p&gt;Yesterday i was reading the &lt;a href=&#34;http://claimsid.codeplex.com/&#34;&gt;Claims Based Identity &amp;amp; Access Control Guide&lt;/a&gt; and learned that the whr parameter is a hint from the application to the STS about the user&amp;rsquo;s STS. So if i look back at the code in &lt;a href=&#34;http://www.timvw.be/wif-change-sts-per-request/&#34;&gt;WIF: Change STS per request&lt;/a&gt; i should not hardcode the HomeRealm parameter to timvw but use the company name instead.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; GetRedirectUrl&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; company&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; companySts&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; realm&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; returnUrl&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; signInRequestMessage &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; SignInRequestMessage&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; Uri&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;companySts&lt;span style=&#34;color:#1f2328&#34;&gt;),&lt;/span&gt; realm&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Context &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; returnUrl&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;HomeRealm &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; company&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;};&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; signInRequestMessage&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteQueryString&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>WIF: Change STS per request</title>
      <link>https://timvw.be/2010/09/05/wif-change-sts-per-request/</link>
      <pubDate>Sun, 05 Sep 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/09/05/wif-change-sts-per-request/</guid>
      <description>&lt;p&gt;Here is some code that will redirect unauthenticated users to their respective STS (Eg: A user visiting ~/CompanyA/Default.aspx will be asked to authenticate at the STS linked to CompanyA.&lt;/p&gt;&#xA;&lt;p&gt;Notice that in the enterprise you typically have multiple applications that require this kind of behavior, so you would solve this by establishing trust between your app(s) and your STS + establish trust between your STS and the client STSes.)&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Global&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt; HttpApplication&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;protected&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; wSFederationAuthenticationModule_RedirectingToIdentityProvider&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;object&lt;/span&gt; sender&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; RedirectingToIdentityProviderEventArgs e&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;e&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Cancel &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;RedirectToCompanySts&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; RedirectToCompanySts&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; httpContext &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; HttpContext&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Current&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; rawUrl &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; httpContext&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Request&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;RawUrl&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; returnUrl &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; rawUrl&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; companyName &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; ExtractCompanyName&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;rawUrl&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; companySts &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; GetCompanySts&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;companyName&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; realm &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; GetRealm&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;companyName&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; redirectUrl &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; GetRedirectUrl&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;companySts&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; realm&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; returnUrl&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;httpContext&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Response&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Redirect&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;redirectUrl&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;false&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;httpContext&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ApplicationInstance&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;CompleteRequest&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; ExtractCompanyName&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; rawUrl&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; regex &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;@&amp;#34;~/(.\*?)/.\*&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; relativeUrl &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; VirtualPathUtility&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ToAppRelative&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;rawUrl&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; match &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; Regex&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Match&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;relativeUrl&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; regex&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; match&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Success &lt;span style=&#34;color:#1f2328&#34;&gt;?&lt;/span&gt; match&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Groups&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;].&lt;/span&gt;Value &lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; GetCompanySts&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; companyName&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;companyName &lt;span style=&#34;color:#1f2328&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;CompanyA&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;@&amp;#34;http://localhost/STS2Site&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;@&amp;#34;http://localhost/STSSite&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; GetRealm&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; companyName&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; realm &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;@&amp;#34;http://localhost/RPSite/&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(!&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;IsNullOrEmpty&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;companyName&lt;span style=&#34;color:#1f2328&#34;&gt;))&lt;/span&gt; realm &lt;span style=&#34;color:#1f2328&#34;&gt;+=&lt;/span&gt; companyName &lt;span style=&#34;color:#1f2328&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;/&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; realm&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; GetRedirectUrl&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; companySts&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; realm&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; returnUrl&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; signInRequestMessage &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; SignInRequestMessage&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; Uri&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;companySts&lt;span style=&#34;color:#1f2328&#34;&gt;),&lt;/span&gt; realm&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;Context &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; returnUrl&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;HomeRealm &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;timvw&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;};&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; signInRequestMessage&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteQueryString&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Making the TemplateFileTask easier to use...</title>
      <link>https://timvw.be/2010/08/25/making-the-templatefiletask-easier-to-use.../</link>
      <pubDate>Wed, 25 Aug 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/08/25/making-the-templatefiletask-easier-to-use.../</guid>
      <description>&lt;p&gt;One of the disadvantages of the TemplateFile task (&lt;a href=&#34;http://msbuildtasks.tigris.org/&#34;&gt;msbuildtasks&lt;/a&gt;) is the fact that it requires a lot of typing to define template values&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;ItemGroup&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Condition=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34; &amp;#39;$(ConfigurationEnvironment)&amp;#39;==&amp;#39;build&amp;#39; &amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;Tokens&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Include=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;a&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;ReplacementValue&amp;gt;&lt;/span&gt;localhost&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/ReplacementValue&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/Tokens&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;Tokens&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Include=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;b&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;ReplacementValue&amp;gt;&amp;lt;mynode/&amp;gt;&amp;lt;/ReplacementValue&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/Tokens&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/ItemGroup&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Here is a format proposition to make this a lot more finger friendly&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;configuration&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;variables&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;env=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;build&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;x&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;name=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;a&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;gt;&lt;/span&gt;localhost&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/x&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;x&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;name=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;b&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;gt;&amp;lt;mynode/&amp;gt;&amp;lt;/x&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/variables&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/configuration&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Here is the msbuild script we need to achieve that&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;PropertyGroup&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;ConfigurationFile&amp;gt;&lt;/span&gt;configuration.xml&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/ConfigurationFile&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;ConfigurationEnvironment&amp;gt;&lt;/span&gt;build&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/ConfigurationEnvironment&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/PropertyGroup&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&amp;lt;!-- Retreive all template values for the specific environment --&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;XmlQuery&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;XmlFileName=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;$(ConfigurationFile)&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;XPath =&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;//variables[@env=&amp;#39;$(ConfigurationEnvironment)&amp;#39;]/*&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;Output&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;TaskParameter=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Values&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;ItemName=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Values&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/XmlQuery&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;--&lt;/span&gt; &lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;Construct&lt;/span&gt; &lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;@Tokens&lt;/span&gt; &lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;--&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;ItemGroup&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;Tokens&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Include=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;%(Values.name)&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;ReplacementValue&amp;gt;&lt;/span&gt;%(Values._innerxml)&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/ReplacementValue&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/Tokens&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/ItemGroup&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&amp;lt;!-- Generate the configuration files --&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;Message&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Text=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Available variables:&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;Message&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Text=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;====================&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;Message&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Text=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;%(Tokens.Identity): %(Tokens.ReplacementValue)&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Happy coding!&lt;/p&gt;</description>
    </item>
    <item>
      <title>What i dislike about the Web.config Transformation in VS2010</title>
      <link>https://timvw.be/2010/08/25/what-i-dislike-about-the-web.config-transformation-in-vs2010/</link>
      <pubDate>Wed, 25 Aug 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/08/25/what-i-dislike-about-the-web.config-transformation-in-vs2010/</guid>
      <description>&lt;p&gt;There are a couple of things that i strongly dislike about the &lt;a href=&#34;http://blogs.msdn.com/b/webdevtools/archive/2009/05/04/web-deployment-web-config-transformation.aspx&#34;&gt;Web.config transformation in VS2010&lt;/a&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Only works with XML files (eg: Can&amp;rsquo;t be used to generate a release notes.txt file)&lt;/li&gt;&#xA;&lt;li&gt;&lt;del datetime=&#34;2010-08-26T08:05:21+00:00&#34;&gt;Does not seem to support externalized sections, eg: log4net.config in a separate file&lt;/del&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;del datetime=&#34;2010-08-26T08:05:21+00:00&#34;&gt;No support to copy/paste transform files&lt;/del&gt;&lt;/li&gt;&#xA;&lt;li&gt;Only works when Visual Studio 2010 is installed (And i am still not convinced a build server should have this).&lt;/li&gt;&#xA;&lt;li&gt;Ties environment to build configuration&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Lesson learned: Don&amp;rsquo;t trust your co-workers, always double-check!&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Clean TemplateFile hack</title>
      <link>https://timvw.be/2010/08/17/clean-templatefile-hack/</link>
      <pubDate>Tue, 17 Aug 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/08/17/clean-templatefile-hack/</guid>
      <description>&lt;p&gt;A while ago i wrote about a &lt;a href=&#34;http://www.timvw.be/clever-templatefile-hack/&#34;&gt;Clever TemplateFile hack&lt;/a&gt; to use some xml block as ReplacementValue. Today i realized there is a clean way to achieve this by defining the value as &lt;a href=&#34;http://www.w3schools.com/xml/xml_cdata.asp&#34;&gt;CDATA&lt;/a&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;TemplateTokens&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Include=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;mex&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;ReplacementValue&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#57606a&#34;&gt;&amp;lt;![CDATA[&amp;lt;endpoint address=&amp;#34;mex&amp;#34; binding=&amp;#34;mexHttpBinding&amp;#34; contract=&amp;#34;IMetadataExchange&amp;#34; /&amp;gt;]]&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/ReplacementValue&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/TemplateTokens&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Behind Closed Doors: Secrets of Great Management</title>
      <link>https://timvw.be/2010/07/29/behind-closed-doors-secrets-of-great-management/</link>
      <pubDate>Thu, 29 Jul 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/07/29/behind-closed-doors-secrets-of-great-management/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.pragprog.com/titles/rdbcd/behind-closed-doors&#34;&gt;Behind Closed Doors: Secrets of Great Management&lt;/a&gt; first let&amp;rsquo;s you look behind the closed doors of all those private meetings and then provides you a set of techniques that allow you to be(come) a better manager. All 160 pages were worth reading!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ship It!: A Practical Guide to Successful Software Projects</title>
      <link>https://timvw.be/2010/07/29/ship-it-a-practical-guide-to-successful-software-projects/</link>
      <pubDate>Thu, 29 Jul 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/07/29/ship-it-a-practical-guide-to-successful-software-projects/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.pragprog.com/titles/prj/ship-it&#34;&gt;Ship It!: A Practical Guide to Successful Software Projects&lt;/a&gt; is focussed on one core idea: &amp;ldquo;The List&amp;rdquo;. The place in which you track your (and your teams) to-do and done work. I do not agree with everything written in the book but would still want to recommend it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Brownfield Application Development in .NET</title>
      <link>https://timvw.be/2010/07/22/brownfield-application-development-in-.net/</link>
      <pubDate>Thu, 22 Jul 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/07/22/brownfield-application-development-in-.net/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.manning.com/baley/&#34;&gt;Brownfield Application Development in .NET&lt;/a&gt; is one of the better books i have read recently. The first part is about the ecosystem (version control, automated build, continuous integration, testing, defect management, &amp;hellip; ), the second part is about the code (OO-principles, layering, dependencies, ui patterns, &amp;hellip;) and the last chapter talks about ways to maintain the momentum. Very much recommended!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Quick reminder about the workings of Type.IsAssignableFrom</title>
      <link>https://timvw.be/2010/07/21/quick-reminder-about-the-workings-of-type.isassignablefrom/</link>
      <pubDate>Wed, 21 Jul 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/07/21/quick-reminder-about-the-workings-of-type.isassignablefrom/</guid>
      <description>&lt;p&gt;Here is a quick reminder about the workings of &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/system.type.isassignablefrom.aspx&#34;&gt;Type.IsAssignableFrom&lt;/a&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Fruit&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Banana&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt; Fruit &lt;span style=&#34;color:#1f2328&#34;&gt;{}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[Test]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; CanAssignBananaToFruit&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; fruit &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;typeof&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;Fruit&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; banana &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;typeof&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;Banana&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Assert&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;IsTrue&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;fruit&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;IsAssignableFrom&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;banana&lt;span style=&#34;color:#1f2328&#34;&gt;));&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[Test]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; CanNotAssignFruitToBanana&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; fruit &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;typeof&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;Fruit&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; banana &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;typeof&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;Banana&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Assert&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;IsFalse&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;banana&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;IsAssignableFrom&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;fruit&lt;span style=&#34;color:#1f2328&#34;&gt;));&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I really hate this API because it always seems backward to me. Here is how i really want to use it&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Assert&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;IsTrue&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;banana&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;CanBeAssignedTo&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;fruit&lt;span style=&#34;color:#1f2328&#34;&gt;));&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Assert&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;IsFalse&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;fruit&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;CanBeAssignedTo&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;banana&lt;span style=&#34;color:#1f2328&#34;&gt;));&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;With the aid of an extension method we can easily achieve this&lt;/p&gt;</description>
    </item>
    <item>
      <title>97 Things Every Programmer Should Know</title>
      <link>https://timvw.be/2010/07/20/97-things-every-programmer-should-know/</link>
      <pubDate>Tue, 20 Jul 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/07/20/97-things-every-programmer-should-know/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://oreilly.com/catalog/9780596809492&#34;&gt;97 Things Every Programmer Should Know&lt;/a&gt; was the last book that i wanted to read at the pool during summer holidays. As with all 97 things books you get a lot of valuable tips but i found this book not as exciting as the previous ones&amp;hellip;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Debug It!: Find, Repair, and Prevent Bugs in Your Code</title>
      <link>https://timvw.be/2010/07/20/debug-it-find-repair-and-prevent-bugs-in-your-code/</link>
      <pubDate>Tue, 20 Jul 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/07/20/debug-it-find-repair-and-prevent-bugs-in-your-code/</guid>
      <description>&lt;p&gt;A while ago i noticed that &lt;a href=&#34;http://davybrion.com/blog/2010/01/highly-recommended-book-debug-it/&#34;&gt;Davy Brion&lt;/a&gt; recommended &lt;a href=&#34;http://pragprog.com/titles/pbdp/debug-it&#34;&gt;Debug It!: Find, Repair, and Prevent Bugs in Your Code&lt;/a&gt; so i decided to give it a read. Although i really liked the suggested process for investigating bugs where you have absolutely no clue of what is going on, i am not convinced that this is a must read book.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Implementing Lean Software Development: From Concept to Cash</title>
      <link>https://timvw.be/2010/07/20/implementing-lean-software-development-from-concept-to-cash/</link>
      <pubDate>Tue, 20 Jul 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/07/20/implementing-lean-software-development-from-concept-to-cash/</guid>
      <description>&lt;p&gt;Not going to waste time re-iterating what&amp;rsquo;s in the book because you can find that here: &lt;a href=&#34;http://www.poppendieck.com/ilsd.htm&#34;&gt;Implementing Lean Software Development: From Concept to Cash&lt;/a&gt;. Just make sure that you get your copy and read it from beginning to end. Afterwards you may want to hand it over to your manager 😉&lt;/p&gt;</description>
    </item>
    <item>
      <title>Manage It!: Your Guide to Modern Pragmatic Project Management</title>
      <link>https://timvw.be/2010/07/20/manage-it-your-guide-to-modern-pragmatic-project-management/</link>
      <pubDate>Tue, 20 Jul 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/07/20/manage-it-your-guide-to-modern-pragmatic-project-management/</guid>
      <description>&lt;p&gt;A while ago i noticed that more and more of my work is related to coaching and managing other developers. In order to become better at that i ordered my copy of &lt;a href=&#34;http://pragprog.com/titles/jrpm/manage-it&#34;&gt;Manage It!: Your Guide to Modern Pragmatic Project Management&lt;/a&gt;. A book with plenty of useful (practical) tips. Definitely worth reading!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Removing Dead Tracks (Duplicates that don&#39;t exist) from iTunes using C#</title>
      <link>https://timvw.be/2010/07/20/removing-dead-tracks-duplicates-that-dont-exist-from-itunes-using-c/</link>
      <pubDate>Tue, 20 Jul 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/07/20/removing-dead-tracks-duplicates-that-dont-exist-from-itunes-using-c/</guid>
      <description>&lt;p&gt;Last week i noticed the following post from Scott Hanselman: &lt;a href=&#34;http://www.hanselman.com/blog/RemovingDeadTracksDuplicatesThatDontExistFromITunesUsingC.aspx&#34;&gt;Removing Dead Tracks (Duplicates that don&amp;rsquo;t exist) from iTunes using C#&lt;/a&gt;. As a good boy scout i noticed that these days iTunesLib.IITTrackCollection inherits from IEnumerable so i rewrote the code a little&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Program&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;&#x9;[STAThread]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; Main&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; itunes &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; iTunesApp&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;itunes&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;DeleteTracksThatDoNotExist&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;ITunesExtensions&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; DeleteTracksThatDoNotExist&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt; IiTunes itunes&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; tracksThatDoNotExist &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; FindTracksThatDoNotExist&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;itunes&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;foreach&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; track &lt;span style=&#34;color:#cf222e&#34;&gt;in&lt;/span&gt; tracksThatDoNotExist&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; track&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Delete&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; IEnumerable&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;iitfileOrCDTrack&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; FindTracksThatDoNotExist&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt; IiTunes iTunes&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; iTunes&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;LibraryPlaylist&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Tracks&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;OfType&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;iitfileOrCDTrack&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Where&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;track &lt;span style=&#34;color:#1f2328&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;!&lt;/span&gt;File&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Exists&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;track&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Location&lt;span style=&#34;color:#1f2328&#34;&gt;));&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>The Productive Programmer</title>
      <link>https://timvw.be/2010/07/20/the-productive-programmer/</link>
      <pubDate>Tue, 20 Jul 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/07/20/the-productive-programmer/</guid>
      <description>&lt;p&gt;The first part of the book covers some tools that may improve your productivity (but nothing that i did not use already). The second part covers development techniques (again, nothing new under the sun). Despite the author&amp;rsquo;s intentions i found reading &lt;a href=&#34;http://oreilly.com/catalog/9780596519544&#34;&gt;The Productive Programmer&lt;/a&gt; a disappointment.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Sometimes you can write it better than Resharper</title>
      <link>https://timvw.be/2010/07/03/sometimes-you-can-write-it-better-than-resharper/</link>
      <pubDate>Sat, 03 Jul 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/07/03/sometimes-you-can-write-it-better-than-resharper/</guid>
      <description>&lt;p&gt;Here is a real-life example of when people are much better expressing intent than a tool: Consider the following code from a typical Silverlight Navigation application&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;foreach&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;UIElement child &lt;span style=&#34;color:#cf222e&#34;&gt;in&lt;/span&gt; LinksStackPanel&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Children&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; hb &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; child &lt;span style=&#34;color:#cf222e&#34;&gt;as&lt;/span&gt; HyperlinkButton&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;hb &lt;span style=&#34;color:#1f2328&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;null&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; hb&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;NavigateUri &lt;span style=&#34;color:#1f2328&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;null&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;..&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Resharper proposed to write this as following&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;foreach&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; hb &lt;span style=&#34;color:#cf222e&#34;&gt;in&lt;/span&gt; LinksStackPanel&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Children&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Select&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;child &lt;span style=&#34;color:#1f2328&#34;&gt;=&amp;gt;&lt;/span&gt; child &lt;span style=&#34;color:#cf222e&#34;&gt;as&lt;/span&gt; HyperlinkButton&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Where&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;hb &lt;span style=&#34;color:#1f2328&#34;&gt;=&amp;gt;&lt;/span&gt; hb &lt;span style=&#34;color:#1f2328&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;null&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; hb&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;NavigateUri &lt;span style=&#34;color:#1f2328&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;null&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;..&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Here is what i wrote instead&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;foreach&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; hb &lt;span style=&#34;color:#cf222e&#34;&gt;in&lt;/span&gt; LinksStackPanel&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Children&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;OfType&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;hyperlinkButton&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Where&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;hb &lt;span style=&#34;color:#1f2328&#34;&gt;=&amp;gt;&lt;/span&gt; hb&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;NavigateUri &lt;span style=&#34;color:#1f2328&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;null&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;..&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Convention over configuration with MSBuild</title>
      <link>https://timvw.be/2010/06/26/convention-over-configuration-with-msbuild/</link>
      <pubDate>Sat, 26 Jun 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/06/26/convention-over-configuration-with-msbuild/</guid>
      <description>&lt;p&gt;A while ago i blogged that i was using the TemplateFile task from the &amp;lt;a hrefhttp://msbuildtasks.tigris.org/&amp;quot;&amp;gt;MSBuild Community Tasks Project&lt;/a&gt; to generate configuration files. Each project that required templating would have modified it&amp;rsquo;s csproj file as following&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&amp;lt;!-- To modify your build process, add your task inside one of the targets below and uncomment it.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;Other similar extension points exist, see Microsoft.Common.targets. --&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;import&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Project=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;$(MSBuildProjectDirectory)\config.msbuild&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;target&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Name=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;BeforeBuild&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;callTarget&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Targets=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;GenerateConfigurationFiles&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/target&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And each of these config.msbuild files looked as following&lt;/p&gt;</description>
    </item>
    <item>
      <title>Setting up a self-contained build</title>
      <link>https://timvw.be/2010/06/26/setting-up-a-self-contained-build/</link>
      <pubDate>Sat, 26 Jun 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/06/26/setting-up-a-self-contained-build/</guid>
      <description>&lt;p&gt;Here is something you may have experienced already: As a newcomer on an existing project, you check out the code from source-control and discover that the build is broken. When you ask around no-one else seems to have that problem but a helpful collegue is kind enough to tell you that you can find the installers for the missing dependencies at location X (Let&amp;rsquo;s not even mention the places where those installers are not available *sigh*).&lt;/p&gt;</description>
    </item>
    <item>
      <title>97 Things Every Project Manager Should Know: Collective Wisdom from the Experts</title>
      <link>https://timvw.be/2010/05/28/97-things-every-project-manager-should-know-collective-wisdom-from-the-experts/</link>
      <pubDate>Fri, 28 May 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/05/28/97-things-every-project-manager-should-know-collective-wisdom-from-the-experts/</guid>
      <description>&lt;p&gt;Lately i felt the need to work on my management skills so apart from practicing each day i decided to search for some inspiration in &lt;a href=&#34;http://www.amazon.com/Things-Every-Project-Manager-Should/dp/0596804164&#34;&gt;97 Things Every Project Manager Should Know: Collective Wisdom from the Experts&lt;/a&gt;. All i can say is that it&amp;rsquo;s yet another book in the series that is worth reading.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Microsoft SQL Server 2008 Internals</title>
      <link>https://timvw.be/2010/05/28/microsoft-sql-server-2008-internals/</link>
      <pubDate>Fri, 28 May 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/05/28/microsoft-sql-server-2008-internals/</guid>
      <description>&lt;p&gt;Around new year i found out that i would be working with SQL Server 2008 so i needed a crash course. &lt;a href=&#34;http://www.amazon.com/Microsoft-SQL-Server-2008-Internals/dp/0735626243&#34;&gt;Microsoft SQL Server 2008 Internals&lt;/a&gt; is really not intended to be that, but it does cover the basics and then dives (way too) deep in detail. Although i stopped reading halfway the dives i found the book very interesting!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Support both GET and HEAD requests on the same method with WCF REST</title>
      <link>https://timvw.be/2010/05/28/support-both-get-and-head-requests-on-the-same-method-with-wcf-rest/</link>
      <pubDate>Fri, 28 May 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/05/28/support-both-get-and-head-requests-on-the-same-method-with-wcf-rest/</guid>
      <description>&lt;p&gt;A while ago i had to modify an existing &lt;a href=&#34;http://msdn.microsoft.com/en-us/netframework/cc950529.aspx&#34;&gt;WCF REST&lt;/a&gt; service which was being consumed by &lt;a href=&#34;http://en.wikipedia.org/wiki/Background_Intelligent_Transfer_Service&#34;&gt;BITS&lt;/a&gt;. Apparently the implementation has changed in Windows7 in such a way that the BITS client first makes a HEAD request to discover the file size.&lt;/p&gt;&#xA;&lt;p&gt;The following attempts did not work&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;// A method can not have both WebGet and WebInvoke attributes&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[OperationContract]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[WebGet]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[WebInvoke(Method=&amp;#34;HEAD&amp;#34;)]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; Stream Download&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; token&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;and&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;// A method can not have multiple WebInvoke attributes&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[OperationContract]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[WebInvoke(Method=&amp;#34;GET&amp;#34;)]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[WebInvoke(&amp;#34;HEAD&amp;#34;)]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; Stream Download&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; token&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The trick is to use * as Method and handle the method related logic in your code&lt;/p&gt;</description>
    </item>
    <item>
      <title>WCF REST: generate correct Content-Length header for HEAD request</title>
      <link>https://timvw.be/2010/05/28/wcf-rest-generate-correct-content-length-header-for-head-request/</link>
      <pubDate>Fri, 28 May 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/05/28/wcf-rest-generate-correct-content-length-header-for-head-request/</guid>
      <description>&lt;p&gt;The point of a HEAD request is to return a Content-Length header, but with an empty body.&#xA;The WCF transport stack has the annoying &amp;lsquo;feature&amp;rsquo; that it &amp;lsquo;corrects&amp;rsquo; the Content-Length header based on the stream that is returned.&#xA;With the aid of Carlos Figueira&amp;rsquo;s &lt;a href=&#34;http://social.msdn.microsoft.com/Forums/en/wcf/thread/c2672206-f255-4b14-b45e-7e3d057f4ffc&#34;&gt;MyLengthOnlyStream&lt;/a&gt; i was able to workaround that &amp;lsquo;feature&amp;rsquo; :)&#xA;(I know, i know, a good old HttpHandler is so much easier to implement!)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Windows Internals: Including Windows Server 2008 and Windows Vista, Fifth Edition</title>
      <link>https://timvw.be/2010/05/28/windows-internals-including-windows-server-2008-and-windows-vista-fifth-edition/</link>
      <pubDate>Fri, 28 May 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/05/28/windows-internals-including-windows-server-2008-and-windows-vista-fifth-edition/</guid>
      <description>&lt;p&gt;Given the fact that i have been developing software for MS-Windows the last couple of years i found it important to learn a bit more about the internals of the operating systems on which my applications run so i ordered a copy of &lt;a href=&#34;http://www.amazon.com/Windows%C2%AE-Internals-Including-Windows-PRO-Developer/dp/0735625301&#34;&gt;Windows Internals: Including Windows Server 2008 and Windows Vista, Fifth Edition&lt;/a&gt; back in september and learned quite a bit from the chapters that i found interesting: security, authorization, networking and analyzing crashes. I skimmed through the chapters on memory management, scheduling and file systems because they reminded me too much of Tanenbaum&amp;rsquo;s excellent &lt;a href=&#34;http://www.amazon.com/Modern-Operating-Systems-Andrew-Tanenbaum/dp/0136006639/ref=dp_ob_title_bk&#34;&gt;Modern Operating Systems&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Enumerating SpecialFolders</title>
      <link>https://timvw.be/2010/05/02/enumerating-specialfolders/</link>
      <pubDate>Sun, 02 May 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/05/02/enumerating-specialfolders/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://msdn.microsoft.com/en-us/library/system.environment.specialfolder.aspx&#34;&gt;Environment.SpecialFolder&lt;/a&gt; is a value-type that i always seem to forget about. Let&amp;rsquo;s try to do something about that by posting about it here :)&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;foreach&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; name &lt;span style=&#34;color:#cf222e&#34;&gt;in&lt;/span&gt; Enum&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetNames&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;typeof&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;Environment&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;SpecialFolder&lt;span style=&#34;color:#1f2328&#34;&gt;)))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; specialFolder &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;Environment&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;SpecialFolder&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;Enum&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Parse&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;typeof&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;Environment&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;SpecialFolder&lt;span style=&#34;color:#1f2328&#34;&gt;),&lt;/span&gt; name&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteLine&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;{0,25} =&amp;gt; {1}&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; name&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; Environment&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetFolderPath&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;specialFolder&lt;span style=&#34;color:#1f2328&#34;&gt;));&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;table&gt;&#xA;  &lt;tr&gt;&#xA;    &lt;td&gt;&#xA;      Desktop&#xA;    &lt;/td&gt;&#xA;    &lt;td&gt;&#xA;      C:\Users\timvw\Desktop&#xA;    &lt;/td&gt;&#xA;  &lt;/tr&gt;&#xA;  &lt;tr&gt;&#xA;    &lt;td&gt;&#xA;      Programs&#xA;    &lt;/td&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;&#xA;  C:\Users\timvw\AppData\Roaming\Microsoft\Windows\Start Menu\Programs&#xA;&amp;lt;/td&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;  &lt;/tr&gt;&#xA;  &lt;tr&gt;&#xA;    &lt;td&gt;&#xA;      Personal&#xA;    &lt;/td&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;&#xA;  C:\Users\timvw\Documents&#xA;&amp;lt;/td&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;  &lt;/tr&gt;&#xA;  &lt;tr&gt;&#xA;    &lt;td&gt;&#xA;      MyDocuments&#xA;    &lt;/td&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;&#xA;  C:\Users\timvw\Documents&#xA;&amp;lt;/td&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;  &lt;/tr&gt;&#xA;  &lt;tr&gt;&#xA;    &lt;td&gt;&#xA;      Favorites&#xA;    &lt;/td&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;&#xA;  C:\Users\timvw\Favorites&#xA;&amp;lt;/td&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;  &lt;/tr&gt;&#xA;  &lt;tr&gt;&#xA;    &lt;td&gt;&#xA;      Startup&#xA;    &lt;/td&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;&#xA;  C:\Users\timvw\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup&#xA;&amp;lt;/td&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;  &lt;/tr&gt;&#xA;  &lt;tr&gt;&#xA;    &lt;td&gt;&#xA;      Recent&#xA;    &lt;/td&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;&#xA;  C:\Users\timvw\AppData\Roaming\Microsoft\Windows\Recent&#xA;&amp;lt;/td&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;  &lt;/tr&gt;&#xA;  &lt;tr&gt;&#xA;    &lt;td&gt;&#xA;      SendTo&#xA;    &lt;/td&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;&#xA;  C:\Users\timvw\AppData\Roaming\Microsoft\Windows\SendTo&#xA;&amp;lt;/td&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;  &lt;/tr&gt;&#xA;  &lt;tr&gt;&#xA;    &lt;td&gt;&#xA;      StartMenu&#xA;    &lt;/td&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;&#xA;  C:\Users\timvw\AppData\Roaming\Microsoft\Windows\Start Menu&#xA;&amp;lt;/td&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;  &lt;/tr&gt;&#xA;  &lt;tr&gt;&#xA;    &lt;td&gt;&#xA;      MyMusic&#xA;    &lt;/td&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;&#xA;  C:\Users\timvw\Music&#xA;&amp;lt;/td&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;  &lt;/tr&gt;&#xA;  &lt;tr&gt;&#xA;    &lt;td&gt;&#xA;      DesktopDirectory&#xA;    &lt;/td&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;&#xA;  C:\Users\timvw\Desktop&#xA;&amp;lt;/td&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;  &lt;/tr&gt;&#xA;  &lt;tr&gt;&#xA;    &lt;td&gt;&#xA;      MyComputer&#xA;    &lt;/td&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;&#xA;&amp;lt;/td&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;  &lt;/tr&gt;&#xA;  &lt;tr&gt;&#xA;    &lt;td&gt;&#xA;      Templates&#xA;    &lt;/td&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;&#xA;  C:\Users\timvw\AppData\Roaming\Microsoft\Windows\Templates&#xA;&amp;lt;/td&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;  &lt;/tr&gt;&#xA;  &lt;tr&gt;&#xA;    &lt;td&gt;&#xA;      ApplicationData&#xA;    &lt;/td&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;&#xA;  C:\Users\timvw\AppData\Roaming&#xA;&amp;lt;/td&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;  &lt;/tr&gt;&#xA;  &lt;tr&gt;&#xA;    &lt;td&gt;&#xA;      LocalApplicationData&#xA;    &lt;/td&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;&#xA;  C:\Users\timvw\AppData\Local&#xA;&amp;lt;/td&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;  &lt;/tr&gt;&#xA;  &lt;tr&gt;&#xA;    &lt;td&gt;&#xA;      InternetCache&#xA;    &lt;/td&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;&#xA;  C:\Users\timvw\AppData\Local\Microsoft\Windows\Temporary Internet Files&#xA;&amp;lt;/td&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;  &lt;/tr&gt;&#xA;  &lt;tr&gt;&#xA;    &lt;td&gt;&#xA;      Cookies&#xA;    &lt;/td&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;&#xA;  C:\Users\timvw\AppData\Roaming\Microsoft\Windows\Cookies&#xA;&amp;lt;/td&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;  &lt;/tr&gt;&#xA;  &lt;tr&gt;&#xA;    &lt;td&gt;&#xA;      History&#xA;    &lt;/td&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;&#xA;  C:\Users\timvw\AppData\Local\Microsoft\Windows\History&#xA;&amp;lt;/td&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;  &lt;/tr&gt;&#xA;  &lt;tr&gt;&#xA;    &lt;td&gt;&#xA;      CommonApplicationData&#xA;    &lt;/td&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;&#xA;  C:\ProgramData&#xA;&amp;lt;/td&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;  &lt;/tr&gt;&#xA;  &lt;tr&gt;&#xA;    &lt;td&gt;&#xA;      System&#xA;    &lt;/td&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;&#xA;  C:\Windows\system32&#xA;&amp;lt;/td&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;  &lt;/tr&gt;&#xA;  &lt;tr&gt;&#xA;    &lt;td&gt;&#xA;      ProgramFiles&#xA;    &lt;/td&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;&#xA;  C:\Program Files&#xA;&amp;lt;/td&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;  &lt;/tr&gt;&#xA;  &lt;tr&gt;&#xA;    &lt;td&gt;&#xA;      MyPictures&#xA;    &lt;/td&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;&#xA;  C:\Users\timvw\Pictures&#xA;&amp;lt;/td&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;  &lt;/tr&gt;&#xA;  &lt;tr&gt;&#xA;    &lt;td&gt;&#xA;      CommonProgramFiles&#xA;    &lt;/td&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;&#xA;  C:\Program Files\Common Files&#xA;&amp;lt;/td&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;  &lt;/tr&gt;&#xA;&lt;/table&gt;</description>
    </item>
    <item>
      <title>Get root directory for IsolatedStorageFiles</title>
      <link>https://timvw.be/2010/05/01/get-root-directory-for-isolatedstoragefiles/</link>
      <pubDate>Sat, 01 May 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/05/01/get-root-directory-for-isolatedstoragefiles/</guid>
      <description>&lt;p&gt;Sometimes you want to know the absolute path of a file that is persisted with &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/system.io.isolatedstorage.isolatedstoragefile(VS.95).aspx&#34;&gt;IsolatedStorageFile&lt;/a&gt;. Apparently there is an internal property RootDirectory which contains this information&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;IsolatedStorageFileExtensions&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; GetRootDirectory&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt; IsolatedStorageFile isf&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; property &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; isf&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetType&lt;span style=&#34;color:#1f2328&#34;&gt;().&lt;/span&gt;GetProperty&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;RootDirectory&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; BindingFlags&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Instance &lt;span style=&#34;color:#1f2328&#34;&gt;|&lt;/span&gt; BindingFlags&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Public &lt;span style=&#34;color:#1f2328&#34;&gt;|&lt;/span&gt; BindingFlags&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;NonPublic &lt;span style=&#34;color:#1f2328&#34;&gt;|&lt;/span&gt; BindingFlags&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetProperty&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;property&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetValue&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;isf&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;null&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Here is a real world example of using &lt;a href=&#34;http://sharpbits.codeplex.com/&#34;&gt;SharpBITS.NET&lt;/a&gt; to download a file to IsolatedStorage:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Program&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; Main&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; mgr &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; BitsManager&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;mgr&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;OnJobError &lt;span style=&#34;color:#1f2328&#34;&gt;+=&lt;/span&gt; mgr_OnJobError&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;mgr&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;OnJobTransferred &lt;span style=&#34;color:#1f2328&#34;&gt;+=&lt;/span&gt; mgr_OnJobTransferred&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; job &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; mgr&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;CreateJob&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;job@&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;+&lt;/span&gt; DateTime&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Now&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; JobType&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Download&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; src &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;@&amp;#34;http://localhost/&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; dst &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; Path&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Combine&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;GetIsfRoot&lt;span style=&#34;color:#1f2328&#34;&gt;(),&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;test.html&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;job&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;AddFile&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;src&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;dst&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;job&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Resume&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteLine&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;running...&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ReadKey&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; mgr_OnJobTransferred&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;object&lt;/span&gt; sender&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; NotificationEventArgs e&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;e&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Job&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Complete&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteLine&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;completed: &amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;+&lt;/span&gt; e&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Job&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;DisplayName&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; mgr_OnJobError&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;object&lt;/span&gt; sender&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; ErrorNotificationEventArgs e&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteLine&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;error: &amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;+&lt;/span&gt; e&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Error&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Description&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; GetIsfRoot&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;using&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; f &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; IsolatedStorageFile&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetUserStoreForAssembly&lt;span style=&#34;color:#1f2328&#34;&gt;())&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; f&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetRootDirectory&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>97 Things Every Software Architect Should Know: Collective Wisdom from the Experts</title>
      <link>https://timvw.be/2010/04/19/97-things-every-software-architect-should-know-collective-wisdom-from-the-experts/</link>
      <pubDate>Mon, 19 Apr 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/04/19/97-things-every-software-architect-should-know-collective-wisdom-from-the-experts/</guid>
      <description>&lt;p&gt;I learned a couple of valuable lessons from &lt;a href=&#34;http://www.amazon.com/Things-Every-Software-Architect-Should/dp/059652269X&#34;&gt;97 Things Every Software Architect Should Know: Collective Wisdom from the Experts&lt;/a&gt; so i would certainly recommend this very readabile book!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Exploring System.Interactive</title>
      <link>https://timvw.be/2010/02/18/exploring-system.interactive/</link>
      <pubDate>Thu, 18 Feb 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/02/18/exploring-system.interactive/</guid>
      <description>&lt;p&gt;A couple of weeks ago i was working on an application that would transfer data through a couple of components as a List&lt;object&gt;. In essence, all we were doing over and over again was the following:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;interface&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;IMapper&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;TEntity FromObjectList&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;List objectList&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;List ToObjectList&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;TEntity entity&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;My initial implementation (using EnumerableEx operators from &lt;a href=&#34;http://msdn.microsoft.com/en-us/devlabs/ee794896.aspx&#34;&gt;Reactive Extensions&lt;/a&gt;) looked like this&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; TEntity FromObjectList&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;List objectList&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; entity &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; TEntity&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;properties&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Zip&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;objectList&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;property&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;value&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&amp;gt;&lt;/span&gt; AssignValueToProperty&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;entity&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; property&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;value&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Run&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; entity&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; AssignValueToProperty&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;object&lt;/span&gt; entity&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; PropertyInfo property&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;object&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;value&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;property&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;SetValue&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;entity&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;value&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;null&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; List ToObjectList&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;TEntity entity&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; properties&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Select&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;property &lt;span style=&#34;color:#1f2328&#34;&gt;=&amp;gt;&lt;/span&gt; property&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetValue&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;entity&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;null&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ToList&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And the consumer code looks like this:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Learned something from Resharper: Enumerable.OfType&lt;TResult&gt;</title>
      <link>https://timvw.be/2010/02/17/learned-something-from-resharper-enumerable.oftypetresult/</link>
      <pubDate>Wed, 17 Feb 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/02/17/learned-something-from-resharper-enumerable.oftypetresult/</guid>
      <description>&lt;p&gt;A couple of weeks ago i discovered &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/bb360913.aspx&#34;&gt;Enumerable.OfType&lt;TResult&gt;&lt;/a&gt; when i let Resharper rewrite my code as a Linq statement. Here is the original code:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; selectedPersons &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; List&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;personSelectItem&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;foreach&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; selectedItem &lt;span style=&#34;color:#cf222e&#34;&gt;in&lt;/span&gt; selectedItems&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; selectedPerson &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; selectedItem &lt;span style=&#34;color:#cf222e&#34;&gt;as&lt;/span&gt; PersonSelectItem&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;selectedPerson &lt;span style=&#34;color:#1f2328&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;null&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;continue&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;selectedPersons&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;selectedPerson&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And here is how it looks after the rewrite:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; selectedPersons &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; selectedItems&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;OfType&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;personSelectItem&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;().&lt;/span&gt;ToList&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Yup, the &lt;a href=&#34;http://www.jetbrains.com/resharper/&#34;&gt;Resharper&lt;/a&gt; license was definitely worth it&amp;rsquo;s money.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Calculate EndpointAddress for Silverlight client</title>
      <link>https://timvw.be/2010/02/15/calculate-endpointaddress-for-silverlight-client/</link>
      <pubDate>Mon, 15 Feb 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/02/15/calculate-endpointaddress-for-silverlight-client/</guid>
      <description>&lt;p&gt;Because Silverlight checks the origin it considers http://localhost and http://127.0.0.1 as different locations. In case you want your visitors to be able to use both addresses you can recalculate the address as following:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;EndpointAddress GetEndpointAddress&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;EndpointAddress endpointAddress&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; scheme &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; Application&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Current&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Host&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Source&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetComponents&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;UriComponents&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Scheme&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; UriFormat&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Unescaped&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; serverAndPort &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; Application&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Current&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Host&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Source&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetComponents&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;UriComponents&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;HostAndPort&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; UriFormat&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Unescaped&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; pathAndQuery &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; endpointAddress&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Uri&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetComponents&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;UriComponents&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;PathAndQuery&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; UriFormat&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Unescaped&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; EndpointAddress&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;scheme &lt;span style=&#34;color:#1f2328&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;://&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;+&lt;/span&gt; serverAndPort &lt;span style=&#34;color:#1f2328&#34;&gt;+&lt;/span&gt; pathAndQuery&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And you can use this method as following:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; client &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; DirectoryServiceClient&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;client&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Endpoint&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Address &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; GetEndpointAddress&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;client&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Endpoint&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Address&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;client&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetMessageCompleted &lt;span style=&#34;color:#1f2328&#34;&gt;+=&lt;/span&gt; ClientGetMessageCompleted&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;client&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetMessageAsync&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Clever TemplateFile hack</title>
      <link>https://timvw.be/2010/02/12/clever-templatefile-hack/</link>
      <pubDate>Fri, 12 Feb 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/02/12/clever-templatefile-hack/</guid>
      <description>&lt;p&gt;In my current project i use TemplateFileTask (&lt;a href=&#34;http://msbuildtasks.tigris.org/&#34;&gt;MSBuild Community Tasks Project&lt;/a&gt;) to generate configuration files. I ran into the problem that i don&amp;rsquo;t want to expose a MEX endpoint in production. This is my initial template file&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;service&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;behaviorconfiguration=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;DemoBehavior&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;name=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;DemoService.FileService&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;endpoint&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;address=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;binding=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;ws2007HttpBinding&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;contract=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;DemoService.IFileService&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;${MexEndpoint}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/service&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And here is my initial msbuild task&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;Project&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;ToolsVersion=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;3.5&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;dDfaultTargets=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;GenerateConfigFiles&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;xmlns=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;http://schemas.microsoft.com/developer/msbuild/2003&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;Import&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Project=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;Target&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Name=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;GenerateConfigFiles&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;PropertyGroup&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;MexEndpoint&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;endpoint&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;address=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;mex&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;binding=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;mexHttpBinding&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;contract=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;IMetadataExchange&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/MexEndpoint&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/PropertyGroup&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;PropertyGroup&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Condition=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34; &amp;#39;$(Env)&amp;#39;==&amp;#39;Production&amp;#39; &amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;MexEndpoint&amp;gt;&amp;lt;/MexEndpoint&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/PropertyGroup&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;ItemGroup&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;Tokens&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Include=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;MexEndpoint&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;ReplacementValue&amp;gt;&lt;/span&gt;$(MexEndpoint)&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/ReplacementValue&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/Tokens&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/ItemGroup&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;TemplateFile&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Template=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Web.template.config&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;OutputFileName=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Web.config&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Tokens=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;@(Tokens)&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/Target&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/Project&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This results in the following configuration file: (WCF does not like the xml namespace declaration):&lt;/p&gt;</description>
    </item>
    <item>
      <title>Another missing method for IEnumerable&lt;T&gt;</title>
      <link>https://timvw.be/2010/02/10/another-missing-method-for-ienumerablet/</link>
      <pubDate>Wed, 10 Feb 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/02/10/another-missing-method-for-ienumerablet/</guid>
      <description>&lt;p&gt;Currently there are two overloads for OrderBy on Enumerable&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;OrderBy(this IEnumerable&lt;TSource&gt; source, Func&amp;lt;TSource, TKey&amp;gt; keySelector)&lt;/li&gt;&#xA;&lt;li&gt;OrderBy(this IEnumerable&lt;TSource&gt; source, Func&amp;lt;TSource, TKey&amp;gt; keySelector, IComparer&lt;TKey&gt; comparer)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Because i don&amp;rsquo;t want to implement an IComparer&lt;TKey&gt; each time i have implemented the following class&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;DelegateComparer&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt; IComparer&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; Func&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;t&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; T&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; CompareFunction &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;get&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;set&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; DelegateComparer&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;Func&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;t&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; T&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; compareFunction&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;CompareFunction &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; compareFunction&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; Compare&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;T x&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; T y&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; CompareFunction&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;x&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; y&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And now i can define a nice extension method:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Verify that a X509Certificate can be used for key exchange</title>
      <link>https://timvw.be/2010/02/02/verify-that-a-x509certificate-can-be-used-for-key-exchange/</link>
      <pubDate>Tue, 02 Feb 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/02/02/verify-that-a-x509certificate-can-be-used-for-key-exchange/</guid>
      <description>&lt;p&gt;Here is another method that earned it&amp;rsquo;s place in my ever growing toolbox:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;bool&lt;/span&gt; CanDoKeyExchange&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt; X509Certificate2 certificate&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(!&lt;/span&gt;certificate&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;HasPrivateKey&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;false&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; privateKey &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; certificate&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;PrivateKey &lt;span style=&#34;color:#cf222e&#34;&gt;as&lt;/span&gt; RSACryptoServiceProvider&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;privateKey &lt;span style=&#34;color:#1f2328&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;null&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;false&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; canDoKeyExchange &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; privateKey&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;CspKeyContainerInfo&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;KeyNumber &lt;span style=&#34;color:#1f2328&#34;&gt;==&lt;/span&gt; KeyNumber&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Exchange&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; canDoKeyExchange&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Presenting ValueType&lt;T&gt;</title>
      <link>https://timvw.be/2010/01/28/presenting-valuetypet/</link>
      <pubDate>Thu, 28 Jan 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/01/28/presenting-valuetypet/</guid>
      <description>&lt;p&gt;Here is a base class for some code that i have written once too many in my life: (In case you&amp;rsquo;re an early adaptor (.Net 4.0) you may want to use System.Tuple&lt;T1&gt; as base class)&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;ValueType&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt; IComparable&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; IComparable&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;valueType&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&amp;gt;,&lt;/span&gt; IEquatable&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;valueType&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;where&lt;/span&gt; T &lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt; IComparable&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;protected&lt;/span&gt; T Value &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;get&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;set&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; ValueType&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;T &lt;span style=&#34;color:#cf222e&#34;&gt;value&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;Value &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;value&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;override&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; GetHashCode&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; Value&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetHashCode&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;override&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; ToString&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; Value&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ToString&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;override&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;bool&lt;/span&gt; Equals&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;object&lt;/span&gt; obj&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; Equals&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;obj &lt;span style=&#34;color:#cf222e&#34;&gt;as&lt;/span&gt; ValueType&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;bool&lt;/span&gt; Equals&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;ValueType&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; other&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; Compare&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; other&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; CompareTo&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;object&lt;/span&gt; obj&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; CompareTo&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; obj &lt;span style=&#34;color:#cf222e&#34;&gt;as&lt;/span&gt; ValueType&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; CompareTo&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;ValueType&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; other&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; Compare&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; other&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; Compare&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;ValueType&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; instance1&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; ValueType&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; instance2&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;ReferenceEquals&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;instance1&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; instance2&lt;span style=&#34;color:#1f2328&#34;&gt;))&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;ReferenceEquals&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;instance1&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;null&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;))&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;ReferenceEquals&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;instance2&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;null&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;))&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;ReferenceEquals&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;instance1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Value&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; instance2&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Value&lt;span style=&#34;color:#1f2328&#34;&gt;))&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;ReferenceEquals&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;instance1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Value&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;null&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;))&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;ReferenceEquals&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;instance2&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Value&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;null&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;))&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; instance1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Value&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;CompareTo&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;instance2&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Value&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;bool&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;operator&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;==(&lt;/span&gt;ValueType&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; instance1&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; ValueType&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; instance2&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; Compare&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;instance1&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; instance2&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;bool&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;operator&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;!=(&lt;/span&gt;ValueType&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; instance1&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; ValueType&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; instance2&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;!(&lt;/span&gt;instance1 &lt;span style=&#34;color:#1f2328&#34;&gt;==&lt;/span&gt; instance2&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;bool&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;operator&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;(&lt;/span&gt;ValueType&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; instance1&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; ValueType&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; instance2&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; Compare&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;instance1&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; instance2&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;bool&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;operator&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;(&lt;/span&gt;ValueType&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; instance1&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; ValueType&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; instance2&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; Compare&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;instance1&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; instance2&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Do we need an EventAggregator when we have an IOC container?</title>
      <link>https://timvw.be/2010/01/27/do-we-need-an-eventaggregator-when-we-have-an-ioc-container/</link>
      <pubDate>Wed, 27 Jan 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/01/27/do-we-need-an-eventaggregator-when-we-have-an-ioc-container/</guid>
      <description>&lt;p&gt;An &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/cc707867.aspx&#34;&gt;Event Aggregator&lt;/a&gt; is an example of a &lt;a href=&#34;http://www.eaipatterns.com/PublishSubscribeChannel.html&#34;&gt;Publish/Subscribe channel&lt;/a&gt;. A while ago i started wondering if we still need an Event Aggregator in our compisite applications if we have an IOC container that takes cares of dependency wiring. An IOC container can easily inject the Event/MessageHandler(s) in the Event/MessagePublisher(s)&amp;hellip; I&amp;rsquo;m still not sure about the answer (Yes/No).&lt;/p&gt;</description>
    </item>
    <item>
      <title>About dependencies</title>
      <link>https://timvw.be/2010/01/26/about-dependencies/</link>
      <pubDate>Tue, 26 Jan 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/01/26/about-dependencies/</guid>
      <description>&lt;p&gt;This weekend i noticed a couple of posts by Uncle Bob trying to get some discussions going. In &lt;a href=&#34;http://blog.objectmentor.com/articles/2010/01/23/mocking-mocking-and-testing-outcomes&#34;&gt;Mocking Mocking and Testing Outcomes&lt;/a&gt; at some point he generates a fake of some class&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;“Oh, ick!” you say. Yes, I agree it’s a lot of code. On the other hand, it took me just a single keystroke on my IDE to generate all those dummy methods. (In IntelliJ it was simply command-I to implement all unimplemented methods.) So it wasn’t particularly hard. And, of course, I can put this code somewhere where nobody had to look at it unless they want to. It has the advantage that anybody who knows Java can understand it, and can look right at the methods to see what they are returning. No “special” knowledge of the mocking framework is necessary.&lt;/p&gt;</description>
    </item>
    <item>
      <title>About forced design</title>
      <link>https://timvw.be/2010/01/23/about-forced-design/</link>
      <pubDate>Sat, 23 Jan 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/01/23/about-forced-design/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;if you need typemock your design is wrong.&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;Although i understand what people are trying to say with that quote, it&amp;rsquo;s wrong on many levels. I pretty much agree with everything that Roy wrote in &lt;a href=&#34;http://weblogs.asp.net/rosherove/archive/2009/11/12/test-driven-design-willed-vs-forced-designs.aspx&#34;&gt;Test driven design – Willed vs. Forced Designs&lt;/a&gt;. As some commenters pointed out it is hard to convince management that they need an isolation framework, let alone that they have to pay for one.&lt;/p&gt;&#xA;&lt;p&gt;A couple of thoughts:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Programming the Bus Pirate with C#</title>
      <link>https://timvw.be/2010/01/16/programming-the-bus-pirate-with-c/</link>
      <pubDate>Sat, 16 Jan 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/01/16/programming-the-bus-pirate-with-c/</guid>
      <description>&lt;p&gt;A while ago i received my &lt;a href=&#34;http://code.google.com/p/the-bus-pirate/&#34;&gt;Bus Pirate&lt;/a&gt; from &lt;a href=&#34;http://www.seeedstudio.com/depot/&#34;&gt;Seeed Studio Depot&lt;/a&gt;. In essence it is a universal serial bus interface and i would love to program it using c#. I know that i can use the DataReceived event and then fiddle with bits (read &lt;a href=&#34;http://msmvps.com/blogs/coad/archive/2005/03/23/39466.aspx#usb&#34;&gt;here&lt;/a&gt; if you&amp;rsquo;re into that kind of self-punishment) but spawning a separate thread to do the blocking work is ten times less work to get it up and running&lt;/p&gt;</description>
    </item>
    <item>
      <title>About raising events</title>
      <link>https://timvw.be/2010/01/09/about-raising-events/</link>
      <pubDate>Sat, 09 Jan 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/01/09/about-raising-events/</guid>
      <description>&lt;p&gt;Very often i see people write the following to &amp;lsquo;safely&amp;rsquo; raise a method&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;event&lt;/span&gt; EventHandler Stopped&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; RaiseStoppedEvent&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;Stopped &lt;span style=&#34;color:#1f2328&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;null&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; Stopped&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; EventArgs&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Empty&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Some developers think that they should program defensively and avoid the potential concurrency problem&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;event&lt;/span&gt; EventHandler Stopped&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; RaiseStoppedEvent&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; handler &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; Stopped&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;handler&lt;span style=&#34;color:#1f2328&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;null&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; handler&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; EventArgs&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Empty&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And then there is Tim&amp;rsquo;s way to raise an event: (If i&amp;rsquo;m not mistaken it was &lt;a href=&#34;http://www.ayende.com&#34;&gt;Ayende&lt;/a&gt; who once blogged about this)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Add &amp;quot;Run as administrator&amp;quot; to .sln files</title>
      <link>https://timvw.be/2010/01/09/add-quotrun-as-administratorquot-to-.sln-files/</link>
      <pubDate>Sat, 09 Jan 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/01/09/add-quotrun-as-administratorquot-to-.sln-files/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.howtogeek.com/howto/windows-vista/add-run-as-administrator-to-any-file-type-in-windows-vista/&#34;&gt;Another trick&lt;/a&gt; i learned from the &amp;ldquo;How-To Geek&amp;rdquo; is how to add a &amp;ldquo;Run as administrator&amp;rdquo; option in the windows shell for .sln files which makes life considerably easier 😉&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://www.timvw.be/wp-content/code/csharp/AddRunAsAdministratorToSlnFilesInShell.reg.txt&#34;&gt;AddRunAsAdministratorToSlnFilesInShell.reg.txt&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://www.timvw.be/wp-content/code/csharp/AddRunAsAdministratorAsDefaultToSlnFilesInShell.reg.txt&#34;&gt;AddRunAsAdministratorAsDefaultToSlnFilesInShell.reg.txt&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Creating graphs with the Silverlight Toolkit</title>
      <link>https://timvw.be/2010/01/08/creating-graphs-with-the-silverlight-toolkit/</link>
      <pubDate>Fri, 08 Jan 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/01/08/creating-graphs-with-the-silverlight-toolkit/</guid>
      <description>&lt;p&gt;As i wrote already: In a chart the elements on the X-axis are usually numbers or dates, and the elements on the Y-axis are usually doubles. We can define such a combination as following&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Point&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; T X &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;get&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;set&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;double&lt;/span&gt; Y &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;get&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;set&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Here is a little helper function for creating line series that are used by the &lt;a href=&#34;http://silverlight.codeplex.com/&#34;&gt;Silverlight Toolkit&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; LineSeries Create&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; title&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; Series&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; series&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; Func&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;t&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;double&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; f&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;where&lt;/span&gt; T &lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt; IComparable&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; points &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; series&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Select&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;x &lt;span style=&#34;color:#1f2328&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; Point&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; X &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; x&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; Y &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; f&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;x&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;});&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; lineSeries &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; LineSeries&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;Title &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; title&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;ItemsSource &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; points&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;IndependentValuePath &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;X&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;DependentValuePath &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Y&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;};&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; lineSeries&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Given all this infrastructure we can easily draw the graph of a function:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Creating series of elements</title>
      <link>https://timvw.be/2010/01/08/creating-series-of-elements/</link>
      <pubDate>Fri, 08 Jan 2010 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2010/01/08/creating-series-of-elements/</guid>
      <description>&lt;p&gt;Lately i have done quite a bit of charting. Very often the X-axis is populated with a series of numbers or dates. This can be as simple as: (My very little DSL in &lt;a href=&#34;http://codebetter.com/blogs/jeremy.miller/archive/2010/01/06/writing-internal-dsl-s-in-msdn.aspx&#34;&gt;Jeremy D. Miller Style&lt;/a&gt;)&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[Test]&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; ShouldBeAbleToGetSeriesOfNumbers&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#57606a&#34;&gt;// Arrange&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; series &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;3.&lt;/span&gt;To&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;5&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#57606a&#34;&gt;// Act&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; elements &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; series&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Elements&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#57606a&#34;&gt;// Assert&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; expected &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[]&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;3&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;4&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;5&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;};&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;CollectionAssert&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;AreEqual&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;expected&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; elements&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[Test]&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; ShouldBeAbleToGetSeriesOfDays&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#57606a&#34;&gt;// Arrange&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; now &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; DateTime&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Now&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Date&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; twoDaysLater &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; now&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;AddDays&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; series &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; now&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;To&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;twoDaysLater&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#57606a&#34;&gt;// Act&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; elements &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; series&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Elements&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#57606a&#34;&gt;// Assert&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; expectedDays &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[]&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; now&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; now&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;AddDays&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;),&lt;/span&gt; now&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;AddDays&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;};&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;CollectionAssert&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;AreEqual&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;expectedDays&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; elements&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And here is the code that makes these tests pass&lt;/p&gt;</description>
    </item>
    <item>
      <title>Refactoring to Patterns</title>
      <link>https://timvw.be/2009/12/27/refactoring-to-patterns/</link>
      <pubDate>Sun, 27 Dec 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/12/27/refactoring-to-patterns/</guid>
      <description>&lt;p&gt;Earlier this month i ordered my copy of &lt;a href=&#34;http://www.amazon.com/Refactoring-Patterns-Joshua-Kerievsky/dp/0321213351&#34;&gt;Refactoring to Patterns&lt;/a&gt;. This books has two parts: the first part describes patterns and code smells (anti-patterns) and the second part is a catalog of refactorings. The first part is not bad, but i appreciated the second part much more. I did not read the book from front to cover and skipped the &amp;lsquo;mechanics&amp;rsquo; sections (abstract steps to take in order to accomplish a particular refactoring). I focussed on the &amp;rsquo;example&amp;rsquo; sections instead which demonstrate the application of the previously mentionned mechanics.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ninject: connect an IProxyFactory component to the kernel</title>
      <link>https://timvw.be/2009/12/16/ninject-connect-an-iproxyfactory-component-to-the-kernel/</link>
      <pubDate>Wed, 16 Dec 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/12/16/ninject-connect-an-iproxyfactory-component-to-the-kernel/</guid>
      <description>&lt;p&gt;Because it&amp;rsquo;s the second time that i run into this i will post the solution here so that i (and all the other people that run into the same issue) can easily solve it next time. Anyway, i was playing with &lt;a href=&#34;http://ninject.org/&#34;&gt;Ninject&lt;/a&gt; and ran into the following exception:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Error activating XXX: the implementation type YYY requests static interceptors, or dynamic interceptors have been defined.&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;In order to provide interception, you must connect an IProxyFactory component to the kernel.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Nomadic Developer: Surviving and Thriving in the World of Technology Consulting</title>
      <link>https://timvw.be/2009/12/07/the-nomadic-developer-surviving-and-thriving-in-the-world-of-technology-consulting/</link>
      <pubDate>Mon, 07 Dec 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/12/07/the-nomadic-developer-surviving-and-thriving-in-the-world-of-technology-consulting/</guid>
      <description>&lt;p&gt;This is probably one of the shortest book reviews ever, but there is not much to say about &lt;a href=&#34;http://www.amazon.co.uk/Nomadic-Developer-Surviving-Technology-Consulting/dp/0321606396&#34;&gt;The Nomadic Developer: Surviving and Thriving in the World of Technology Consulting&lt;/a&gt;. Just read it if you are (or considering to become) an IT-consultant because it really covers both good and bad aspects in depth.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Bing vs Google in 5 seconds</title>
      <link>https://timvw.be/2009/12/05/bing-vs-google-in-5-seconds/</link>
      <pubDate>Sat, 05 Dec 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/12/05/bing-vs-google-in-5-seconds/</guid>
      <description>&lt;p&gt;A while ago i sat in a meeting and some ms-fanboy used &lt;a href=&#34;http://www.bing.com&#34;&gt;Bing&lt;/a&gt; to find out how much 60 inches were in meters. The first page had pages with conversion factors but none of them contained the actual answer. I suggested that he&amp;rsquo;d use &lt;a href=&#34;http://www.google.com&#34;&gt;Google&lt;/a&gt; instead and while he was keying in the question the answer already appeared.&lt;/p&gt;&#xA;&lt;p&gt;Today i wanted to make a screencast of this difference in experience but it seems that bing has the &amp;lsquo;conversion&amp;rsquo; feature now too. Wondering about what would make me switch search engines&amp;hellip;&lt;/p&gt;</description>
    </item>
    <item>
      <title>In case you really have to Append one array to another</title>
      <link>https://timvw.be/2009/12/04/in-case-you-really-have-to-append-one-array-to-another/</link>
      <pubDate>Fri, 04 Dec 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/12/04/in-case-you-really-have-to-append-one-array-to-another/</guid>
      <description>&lt;p&gt;Here is another problem i&amp;rsquo;ve seen people solve once too many: Append one array to another. STOP. Revisit the problem. Can&amp;rsquo;t you simply use List&lt;T&gt; and move on to solving actual business problems? In case you really can&amp;rsquo;t get rid of the arrays read the following&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Given&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;source &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[]&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; SourceElement &lt;span style=&#34;color:#1f2328&#34;&gt;};&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;destination &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[]&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; DestinationElement &lt;span style=&#34;color:#1f2328&#34;&gt;};&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;and&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;When&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;source&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;AppendTo&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;ref&lt;/span&gt; destination&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;and&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ThenTheDestinationShouldStillHaveTheDestinationElement&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Assert&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;AreEqual&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;DestinationElement&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; destination&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;and&lt;/p&gt;</description>
    </item>
    <item>
      <title>Easy pattern for Control state</title>
      <link>https://timvw.be/2009/11/21/easy-pattern-for-control-state/</link>
      <pubDate>Sat, 21 Nov 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/11/21/easy-pattern-for-control-state/</guid>
      <description>&lt;p&gt;If you have decided that your WebControl requires to maintain it&amp;rsquo;s state you will want to figure out how to implement Control state. Most examples on the web will then create an array of objects and then hardcode the indices to find stuff back&amp;hellip; Simply define a serializable inner class and use that instead of the &amp;lsquo;magic array object&amp;rsquo;. Eg&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;SilverlightHost&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt; WebControl&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;&#x9;[Serializable]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;State&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;object&lt;/span&gt; BaseState &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;get&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;set&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; SilverlightUrl &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;get&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;set&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; SilverlightErrorHandlerUrl &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;get&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;set&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; Dictionary&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; Parameters &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;get&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;set&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;protected&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;override&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; OnInit&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;EventArgs e&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;base&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;OnInit&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;e&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;Page&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;RegisterRequiresControlState&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;protected&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;override&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;object&lt;/span&gt; SaveControlState&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; state &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; State&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;BaseState &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;base&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;SaveControlState&lt;span style=&#34;color:#1f2328&#34;&gt;(),&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;SilverlightUrl &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; SilverlightUrl&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;SilverlightErrorHandlerUrl &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; SilverlightErrorHandlerUrl&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;Parameters &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; parameters&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;};&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; state&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;protected&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;override&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; LoadControlState&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;object&lt;/span&gt; savedState&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; state &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;State&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;savedState&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;SilverlightUrl &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; state&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;SilverlightUrl&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;SilverlightErrorHandlerUrl &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; state&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;SilverlightErrorHandlerUrl&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;parameters &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; state&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Parameters&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;base&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;LoadControlState&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;state&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;BaseState&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Silverlight and unit testing..</title>
      <link>https://timvw.be/2009/11/19/silverlight-and-unit-testing../</link>
      <pubDate>Thu, 19 Nov 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/11/19/silverlight-and-unit-testing../</guid>
      <description>&lt;p&gt;A while ago i was looking for a unittesting framework that can be used with Silverlight. Because i don&amp;rsquo;t want to launch a webbrowser on my buildserver i ruled the &lt;a href=&#34;http://code.msdn.microsoft.com/silverlightut/&#34;&gt;Unit Test Framework for Microsoft Silverlight&lt;/a&gt; out. A couple of websearches later i decided to try a Silverlight port of good ol&amp;rsquo; NUnit, &lt;a href=&#34;http://code.google.com/p/nunitsilverlight/&#34;&gt;nunitsilverlight&lt;/a&gt;, and was pretty pleased with results.&lt;/p&gt;&#xA;&lt;p&gt;A couple of things to keep in mind though:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Make sure your test runner loads the correct System assembly (Possible solution: set Copy Local to true in your test project)&lt;/li&gt;&#xA;&lt;li&gt;In case your test runner has to run tests in both &amp;lsquo;regular&amp;rsquo; and &amp;lsquo;silverlight&amp;rsquo; assemblies, make sure that your runner uses separate AppDomains (For NUnit use the /Domain=Multiple option)&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Couple of methods missing on ObservableCollection</title>
      <link>https://timvw.be/2009/11/06/couple-of-methods-missing-on-observablecollection/</link>
      <pubDate>Fri, 06 Nov 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/11/06/couple-of-methods-missing-on-observablecollection/</guid>
      <description>&lt;p&gt;Here are a couple of methods that are missing on &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/ms668604.aspx&#34;&gt;ObservableCollection&lt;T&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;ObservableCollectionExtensions&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; AddRange&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt; ObservableCollection&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; observableCollection&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; IEnumerable&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; elements&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;foreach&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; element &lt;span style=&#34;color:#cf222e&#34;&gt;in&lt;/span&gt; elements&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; observableCollection&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;element&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; ObservableCollection&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; Create&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;(&lt;/span&gt;IEnumerable&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; elements&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; observableCollection &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; ObservableCollection&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;observableCollection&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;AddRange&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;elements&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; observableCollection&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Presenting FilterList</title>
      <link>https://timvw.be/2009/11/06/presenting-filterlist/</link>
      <pubDate>Fri, 06 Nov 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/11/06/presenting-filterlist/</guid>
      <description>&lt;p&gt;Earlier today i decided to add &amp;lsquo;Filtering&amp;rsquo; to my SortableBindingList. This resulted in writing a &lt;a href=&#34;http://www.timvw.be/wp-content/code/csharp/FilterList.txt&#34;&gt;FilterList&lt;/a&gt; class. This class can be easily used as following&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; textBoxFilter_KeyUp&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;object&lt;/span&gt; sender&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; KeyEventArgs e&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; filterChars &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;textBoxFilter&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Text&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ToLower&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Filter&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;filterChars&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; Filter&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; filterChars&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; persons &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;FilterList&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;person&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;)&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;dataGridView1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;DataSource&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;persons&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Filter&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;p &lt;span style=&#34;color:#1f2328&#34;&gt;=&amp;gt;&lt;/span&gt; p&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Firstname&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ToLower&lt;span style=&#34;color:#1f2328&#34;&gt;().&lt;/span&gt;Contains&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;filterChars&lt;span style=&#34;color:#1f2328&#34;&gt;));&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I even created a screencast to demonstrate it:&lt;/p&gt;&#xA;&lt;p&gt;[mediaplayer src=&amp;lsquo;http://www.timvw.be/screencasts/filterlist.wmv&amp;rsquo; width=512 height=344]&lt;/p&gt;</description>
    </item>
    <item>
      <title>Another method i wrote once too many</title>
      <link>https://timvw.be/2009/11/01/another-method-i-wrote-once-too-many/</link>
      <pubDate>Sun, 01 Nov 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/11/01/another-method-i-wrote-once-too-many/</guid>
      <description>&lt;p&gt;Virtually every Silverlight application will fetch resources at one point or another. In case you&amp;rsquo;re using the &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/system.net.webclient(VS.95).aspx&#34;&gt;WebClient&lt;/a&gt; you have probably written the following in your xxxCompletedEventHandler&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;e&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Error &lt;span style=&#34;color:#1f2328&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;null&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;!&lt;/span&gt;e&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Cancelled&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#57606a&#34;&gt;// do something with the result&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Anyway, i don&amp;rsquo;t like repetition so i captured the conditions in a method:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;ExtensionMethods&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;bool&lt;/span&gt; HasResult&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt; AsyncCompletedEventArgs e&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;e&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Error &lt;span style=&#34;color:#1f2328&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;null&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;false&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;e&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Cancelled&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;false&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And now we can write our code as:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;e&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;HasResult&lt;span style=&#34;color:#1f2328&#34;&gt;())&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#57606a&#34;&gt;// do something with the result&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Apart from saving a couple of keystrokes this also allows us to easily add another condition to determine the success of the operation.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Party for one</title>
      <link>https://timvw.be/2009/10/29/party-for-one/</link>
      <pubDate>Thu, 29 Oct 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/10/29/party-for-one/</guid>
      <description>&lt;p&gt;Inspired by Jimmy Bogard&amp;rsquo;s &lt;a href=&#34;http://www.lostechies.com/blogs/jimmy_bogard/archive/2009/10/15/more-missing-linq-operators.aspx&#34;&gt;More missing LINQ operators&lt;/a&gt; i found another one&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; IEnumerable&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; MakeEnumerable&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt; T element&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;yield&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; element&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Presenting PathBuilder</title>
      <link>https://timvw.be/2009/10/29/presenting-pathbuilder/</link>
      <pubDate>Thu, 29 Oct 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/10/29/presenting-pathbuilder/</guid>
      <description>&lt;p&gt;Currently it is annoying to build a path with &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/fyy7a5kt.aspx&#34;&gt;Path.Combine&lt;/a&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; home1 &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; Path&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Combine&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;Path&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Combine&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;Path&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Combine&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;C&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Users&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;),&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;timvw&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;),&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;My Documents&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And here is how it can be:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; home2 &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; PathBuilder&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Combine&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;C&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Users&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;timvw&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;My Documents&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The implementation is pretty simple:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;PathBuilder&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; Combine&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;params&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[]&lt;/span&gt; parts&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; parts&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Aggregate&lt;span style=&#34;color:#1f2328&#34;&gt;((&lt;/span&gt;l&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; r&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&amp;gt;&lt;/span&gt; Path&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Combine&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;l&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; r&lt;span style=&#34;color:#1f2328&#34;&gt;));&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Separation of concerns: Behavior = Trigger &#43; TriggerAction</title>
      <link>https://timvw.be/2009/10/19/separation-of-concerns-behavior-trigger--triggeraction/</link>
      <pubDate>Mon, 19 Oct 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/10/19/separation-of-concerns-behavior-trigger--triggeraction/</guid>
      <description>&lt;p&gt;If you look at my &lt;a href=&#34;http://www.timvw.be/true-keybehavior-with-system-windows-interactivity-behavior/&#34;&gt;KeyBehavior&lt;/a&gt; you notice that it is doing two things: register for events so that the behavior can be triggered and handle the actual command invocation. In order to enhance reuse we can refactor this KeyBehavior in a KeyTrigger and an InvokeCommandAction. Well, we&amp;rsquo;re not going to do that, because they exist already in the silverlight sdk.&lt;/p&gt;&#xA;&lt;p&gt;A shortcoming of the InvokeCommandAction is that it can only invoke commands on the FrameworkElement itself, thus we write a custom implementation that finds commands on the DataContext instead&lt;/p&gt;</description>
    </item>
    <item>
      <title>True KeyBehavior with System.Windows.Interactivity.Behavior</title>
      <link>https://timvw.be/2009/10/19/true-keybehavior-with-system.windows.interactivity.behavior/</link>
      <pubDate>Mon, 19 Oct 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/10/19/true-keybehavior-with-system.windows.interactivity.behavior/</guid>
      <description>&lt;p&gt;Yesterday i demonstrated how attached properties can be used to invoke commands on specific key presses (and releases). With the aid of System.Windows.Interactivity.Behavior we can implement a true behavior and we get an extension point to do the required cleanup.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/images/BlendKeyBehavior.png&#34; alt=&#34;screenshot of Blend managing a KeyBehavior&#34;&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;grid&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;interactivity:Interaction.Behaviors&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;inf:KeyBehavior&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;inf:KeyBehavior.DownKeyCommands&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;inf:KeyCommandName&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Key=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Right&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;CommandName=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;PlayerRight&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;inf:KeyCommandName&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Key=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Left&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;CommandName=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;PlayerLeft&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;inf:KeyCommandName&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Key=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Up&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;CommandName=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;PlayerUp&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;inf:KeyCommandName&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Key=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Down&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;CommandName=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;PlayerDown&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/inf:KeyBehavior.DownKeyCommands&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/inf:KeyBehavior&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/interactivity:Interaction.Behaviors&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/grid&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The behavior implementation is the same as yesterday, only this time we thankfully override the OnAttached and OnDetaching methods&lt;/p&gt;</description>
    </item>
    <item>
      <title>Silverlight: leveraging attached properties to handle key events</title>
      <link>https://timvw.be/2009/10/17/silverlight-leveraging-attached-properties-to-handle-key-events/</link>
      <pubDate>Sat, 17 Oct 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/10/17/silverlight-leveraging-attached-properties-to-handle-key-events/</guid>
      <description>&lt;p&gt;I strongly believe that input handling is a responsability that belongs to the View. At first i simply added the following in the code-behind of my GameView&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;protected&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;override&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; OnKeyDown&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;KeyEventArgs e&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;base&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;OnKeyDown&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;e&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;e&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Key &lt;span style=&#34;color:#1f2328&#34;&gt;==&lt;/span&gt; Key&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Left&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; Model&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;MovePlayerLeft&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;...&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;But i wanted to play with the cool kids so i exposed ICommand properties on my ViewModel instead and rewrote the code like this&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;protected&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;override&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; OnKeyDown&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;KeyEventArgs e&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;base&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;OnKeyDown&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;e&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;e&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Key &lt;span style=&#34;color:#1f2328&#34;&gt;==&lt;/span&gt; Key&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Left&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; Model&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;PlayerLeft&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Execute&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;null&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;...&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Offcourse, designers should not have to write code at all, thus i searched for a different solution. Because there isn&amp;rsquo;t a behavior that allows me to differentiate the command based on the actual key being pressed i wrote my own KeyEvents class which allows the designer to map a key to a command. Here is an example&lt;/p&gt;</description>
    </item>
    <item>
      <title>Exploring graphical programming with Blend, Visual State Manager and Behaviors</title>
      <link>https://timvw.be/2009/10/16/exploring-graphical-programming-with-blend-visual-state-manager-and-behaviors/</link>
      <pubDate>Fri, 16 Oct 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/10/16/exploring-graphical-programming-with-blend-visual-state-manager-and-behaviors/</guid>
      <description>&lt;p&gt;A while ago i presented the &lt;a href=&#34;http://www.timvw.be/experimenting-with-controlstatemachine-and-fluent-interfaces/&#34;&gt;ControlStateMachine&lt;/a&gt; and in Silverlight this concept is implemented as the &lt;a href=&#34;http://windowsclient.net/wpf/wpf35/wpf-35sp1-toolkit-visual-state-manager-overview.aspx&#34;&gt;Visual State Manager&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;In my sokoban implementation i have a cellview which exists out of 6 canvasses but only two of them (one for the cell type and one for the piece type) are visible at any given point in time. I have implemented this with 6 properties CanvasXVisible (with X being Player, Box, Wall, Goal, Floor and Cell) in my ViewModel but a State Machine / Manager may help clarify how the visibility of the canvasses are related. Here are the 2 visual state groups and their states that i would need for the CellView&lt;/p&gt;</description>
    </item>
    <item>
      <title>About databinding and composite views</title>
      <link>https://timvw.be/2009/10/13/about-databinding-and-composite-views/</link>
      <pubDate>Tue, 13 Oct 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/10/13/about-databinding-and-composite-views/</guid>
      <description>&lt;p&gt;A couple of days ago i had a databound ItemsControl (collection of Model.Cell) which instantiated sub views (with their own viewmodel).&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;grid&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;grid.Resources&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;dataTemplate&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;x:Key=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;CellTemplate&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;views:CellView&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/dataTemplate&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/grid.Resources&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;itemsControl&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;ItemTemplate=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;{StaticResource CellTemplate}&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;ItemsSource=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;{Binding Cells}&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/grid&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Because each CellViewModel needs to know which cell they manage i used the following dirty hack&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; CellView&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Loaded &lt;span style=&#34;color:#1f2328&#34;&gt;+=&lt;/span&gt; CellView_Loaded&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; CellView_Loaded&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;object&lt;/span&gt; sender&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; RoutedEventArgs e&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;DataContext &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; CellViewModel&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;DataContext&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Later on that day i realised there was a much cleaner solution: Let the BoardViewModel expose a collection of ViewModels.CellViewModel instead of Model.Cell. What a relief that i don&amp;rsquo;t have to use the Loaded event hack.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Exploring M-V-VM</title>
      <link>https://timvw.be/2009/10/13/exploring-m-v-vm/</link>
      <pubDate>Tue, 13 Oct 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/10/13/exploring-m-v-vm/</guid>
      <description>&lt;p&gt;A couple of years ago a collegue recommended &lt;a href=&#34;http://www.amazon.com/Data-Binding-Windows-Forms-2-0/dp/032126892X&#34;&gt;Data Binding with Windows Forms 2.0: Programming Smart Client Data Applications with .NET&lt;/a&gt; and i noticed that my code started to gravitate towards an &lt;a href=&#34;http://en.wikipedia.org/wiki/Model_View_ViewModel&#34;&gt;Model-View-ViewModel&lt;/a&gt; architecture. Due to shortcomings and painful experiences i gave up on databinding and began to use &lt;a href=&#34;http://martinfowler.com/eaaDev/PassiveScreen.html&#34;&gt;Passieve View&lt;/a&gt; instead.&lt;/p&gt;&#xA;&lt;p&gt;Passive View doesn&amp;rsquo;t work (well) with smart views so i decided to give M-V-VM another because i really wanted to leverage WPF&amp;rsquo;s rich support for databinding.&lt;/p&gt;</description>
    </item>
    <item>
      <title>ViewModel to translate domain messages to view events</title>
      <link>https://timvw.be/2009/10/13/viewmodel-to-translate-domain-messages-to-view-events/</link>
      <pubDate>Tue, 13 Oct 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/10/13/viewmodel-to-translate-domain-messages-to-view-events/</guid>
      <description>&lt;p&gt;Here is an example of a ViewModel that translates domain messages to view events:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;GameViewModel&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt; INotifyPropertyChanged&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; IListener&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;boardChanged&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;event&lt;/span&gt; PropertyChangedEventHandler PropertyChanged &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;delegate&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;};&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; GameViewModel&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; messageBus &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; ServiceLocator&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;MessageBus&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;messageBus&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Subscribe&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;boardChanged&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; IListener&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;boardChanged&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;.&lt;/span&gt;Handle&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;BoardChanged message&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;PropertyChanged&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Board&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Sokoban: Creating graphics with Expression Design</title>
      <link>https://timvw.be/2009/10/12/sokoban-creating-graphics-with-expression-design/</link>
      <pubDate>Mon, 12 Oct 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/10/12/sokoban-creating-graphics-with-expression-design/</guid>
      <description>&lt;p&gt;Earlier this morning i decided to improve the graphics the little. I launched Expression Design, created a new image, and drew each possible cell and piece in a seperate layer. With this technique i can easily preview how a &amp;ldquo;Box&amp;rdquo; on &amp;ldquo;Goal&amp;rdquo; looks like.&lt;/p&gt;&#xA;&lt;p&gt;For each layer i simply copied the XAML from Expression Design into my Cell.xaml file. Apparently all the layers are interpreted as a Canvas and the layer name determines their x:Name which makes it pretty easy to make the correct canvasses visible. With a simple ScaleTransform i can ensure that the canvasses are sized correctly.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Presenting Sokoban with Silverlight</title>
      <link>https://timvw.be/2009/10/10/presenting-sokoban-with-silverlight/</link>
      <pubDate>Sat, 10 Oct 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/10/10/presenting-sokoban-with-silverlight/</guid>
      <description>&lt;p&gt;Despite the blablah postings, i have been able to code a little, so here is the boomboom: Sokoban.&lt;/p&gt;&#xA;&lt;div id=&#34;silverlightControlHost&#34;&gt;&#xA;  &lt;br /&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Silverlight wishlist</title>
      <link>https://timvw.be/2009/10/10/silverlight-wishlist/</link>
      <pubDate>Sat, 10 Oct 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/10/10/silverlight-wishlist/</guid>
      <description>&lt;p&gt;Here are the features that i would love to see in Silverlight:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Allow users to copy text from the UI (Or was the UX argument an excuse for playing with new toys?)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;MSTEST (I know that [Here are the features that i would love to see in Silverlight:&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Allow users to copy text from the UI (Or was the UX argument an excuse for playing with new toys?)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;MSTEST (I know that](&lt;a href=&#34;http://code.msdn.microsoft.com/silverlightut/&#34;&gt;http://code.msdn.microsoft.com/silverlightut/&lt;/a&gt;) exists.)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Configuring Apache to serve Office 2007 documents with the correct MIME type</title>
      <link>https://timvw.be/2009/10/09/configuring-apache-to-serve-office-2007-documents-with-the-correct-mime-type/</link>
      <pubDate>Fri, 09 Oct 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/10/09/configuring-apache-to-serve-office-2007-documents-with-the-correct-mime-type/</guid>
      <description>&lt;p&gt;Untill now i haven&amp;rsquo;t published any Office 2007 documents but i noticed that my webhost hasn&amp;rsquo;t configured apache to serve such documents with the correct MIME types. This resulted in my web browser downloading .docx files as zip archives. Here&amp;rsquo;s how a couple of additions to .htaccess tackle the problem:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-apache&#34; data-lang=&#34;apache&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;AddType&lt;/span&gt; application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;AddType&lt;/span&gt; application/vnd.openxmlformats-officedocument.spreadsheetml.template xltx&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;AddType&lt;/span&gt; application/vnd.openxmlformats-officedocument.presentationml.template potx&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;AddType&lt;/span&gt; application/vnd.openxmlformats-officedocument.presentationml.slideshow ppsx&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;AddType&lt;/span&gt; application/vnd.openxmlformats-officedocument.presentationml.presentation sldx&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;AddType&lt;/span&gt; application/vnd.openxmlformats-officedocument.presentationml.slide sldx&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;AddType&lt;/span&gt; application/vnd.openxmlformats-officedocument.wordprocessingml.document docx&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;AddType&lt;/span&gt; application/vnd.openxmlformats-officedocument.wordprocessingml.template dotx&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;AddType&lt;/span&gt; application/vnd.ms-excel.addin.macroEnabled.12 xlam&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;AddType&lt;/span&gt; application/vnd.ms-excel.sheet.binary.macroEnabled.12 xslb&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Fluent Builders: More than creating context specifications</title>
      <link>https://timvw.be/2009/10/08/fluent-builders-more-than-creating-context-specifications/</link>
      <pubDate>Thu, 08 Oct 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/10/08/fluent-builders-more-than-creating-context-specifications/</guid>
      <description>&lt;p&gt;Last couple of months i have been using the concept of (Fluent) Builder classes in order to create context specifications and i &lt;a href=&#34;http://www.timvw.be/about-the-design-of-a-fluent-interface/&#34;&gt;blogged about the steps i take to design their API&lt;/a&gt;. Lately i have realised that this concept has more uses than context specifcation only. Here is an example:&lt;/p&gt;&#xA;&lt;p&gt;In sokoban a game board can be stored in plain text using the following &amp;lsquo;protocol&amp;rsquo;:&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Level element&lt;/th&gt;&#xA;          &lt;th&gt;Character&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Wall&lt;/td&gt;&#xA;          &lt;td&gt;#&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Player&lt;/td&gt;&#xA;          &lt;td&gt;@&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Player on Goal&lt;/td&gt;&#xA;          &lt;td&gt;+&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Box&lt;/td&gt;&#xA;          &lt;td&gt;$&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Box on Goal&lt;/td&gt;&#xA;          &lt;td&gt;*&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Goal&lt;/td&gt;&#xA;          &lt;td&gt;.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Floor&lt;/td&gt;&#xA;          &lt;td&gt;(space)&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;Notice how a Fluent Builder allows us to implement this protocol with some elegant code:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Fluent Builders: The case against implicit conversion</title>
      <link>https://timvw.be/2009/10/08/fluent-builders-the-case-against-implicit-conversion/</link>
      <pubDate>Thu, 08 Oct 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/10/08/fluent-builders-the-case-against-implicit-conversion/</guid>
      <description>&lt;p&gt;Most people add an implicit conversion to their builder API which gives them the advantage that they don&amp;rsquo;t have to call Build explicitely. I have decided that i do not want to have this implicit conversion for a couple of reasons:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;C# does not allow to define implicit conversions to or from an interface&lt;/li&gt;&#xA;&lt;li&gt;Implicit conversions are not very discoverable&lt;/li&gt;&#xA;&lt;li&gt;Implicit conversions can break the API&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Here is an example to clarify that last reason: Consider an OrderBuilder which requires the user to provide a product and then a quantity:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Fluent Builders: The case against implicit conversion (2)</title>
      <link>https://timvw.be/2009/10/08/fluent-builders-the-case-against-implicit-conversion-2/</link>
      <pubDate>Thu, 08 Oct 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/10/08/fluent-builders-the-case-against-implicit-conversion-2/</guid>
      <description>&lt;p&gt;Here is another example that demonstrates how implicit conversion in a Fluent Builder can lead to surprises (&lt;a href=&#34;http://elegantcode.com/2009/03/21/be-careful-with-the-var-keyword-and-expression-builders/&#34;&gt;Jan Van Ryswyck noticed this too&lt;/a&gt;). Originally the code in my &lt;a href=&#34;http://www.timvw.be/fluent-builders-the-case-against-implicit-conversion/&#34;&gt;previous example&lt;/a&gt; was the following:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; order &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; OrderBuilder&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Wich would make the c# compiler conclude that order is an OrderBuilder instead of an Order.&lt;/p&gt;</description>
    </item>
    <item>
      <title>MSTEST tip: Add &#34;Full Class Name&#34; column to results view</title>
      <link>https://timvw.be/2009/10/08/mstest-tip-add-full-class-name-column-to-results-view/</link>
      <pubDate>Thu, 08 Oct 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/10/08/mstest-tip-add-full-class-name-column-to-results-view/</guid>
      <description>&lt;p&gt;I firmly believe that adding the &amp;lsquo;Full Class Name&amp;rsquo; column to MSTEST&amp;rsquo;s result view makes it a lot easier to clarify the requirements:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/images/mstest-result-enhanced.png&#34; alt=&#34;screenshot of mstest result view with full class name column added&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>About Expression Blend</title>
      <link>https://timvw.be/2009/10/05/about-expression-blend/</link>
      <pubDate>Mon, 05 Oct 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/10/05/about-expression-blend/</guid>
      <description>&lt;p&gt;At first i developed most WPF interfaces by writing XAML in the code view of Visual Studio. Those days are gone 😉 These days i find it a lot easier to use Expression Blend (eg: paths, animations and timelines) but i reallly don&amp;rsquo;t like it that Blend adds design-time information to the XAML that is intended to be used in production code. A tool should not add clutter to your code!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Professional WPF Programming: NET Development with the Windows Presentation Foundation</title>
      <link>https://timvw.be/2009/10/05/professional-wpf-programming-net-development-with-the-windows-presentation-foundation/</link>
      <pubDate>Mon, 05 Oct 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/10/05/professional-wpf-programming-net-development-with-the-windows-presentation-foundation/</guid>
      <description>&lt;p&gt;I am very disappointed with &lt;a href=&#34;http://www.amazon.co.uk/Professional-WPF-Programming-Development-Presentation/dp/0470041803&#34;&gt;Professional WPF Programming: NET Development with the Windows Presentation Foundation&lt;/a&gt;. Apart from the two chapters that cover Expression Blend i found nothing worth reading in this book. This is probably the last Wrox book that i buy.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Programming WPF, Second Edition</title>
      <link>https://timvw.be/2009/10/05/programming-wpf-second-edition/</link>
      <pubDate>Mon, 05 Oct 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/10/05/programming-wpf-second-edition/</guid>
      <description>&lt;p&gt;I felt it was time to get up to speed with WPF so i decided to buy &lt;a href=&#34;http://oreilly.com/catalog/9780596510374&#34;&gt;Programming WPF, Second edition&lt;/a&gt;. This book answered a lot of my newbie questions (where is the application entry point etc) right from the start. I liked it so much that i decided to read a second time 😉 Most definitely recommended.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Brad Abrams and extension methods to the rescue..</title>
      <link>https://timvw.be/2009/09/29/brad-abrams-and-extension-methods-to-the-rescue../</link>
      <pubDate>Tue, 29 Sep 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/09/29/brad-abrams-and-extension-methods-to-the-rescue../</guid>
      <description>&lt;p&gt;Currently i am implementing &lt;a href=&#34;http://en.wikipedia.org/wiki/Sokoban&#34;&gt;Sokoban&lt;/a&gt; and i was pondering which methods i should add to my Cell class:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;bool HoldsWall&lt;/li&gt;&#xA;&lt;li&gt;bool HoldsBox&lt;/li&gt;&#xA;&lt;li&gt;bool HoldsPlayer&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Or&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;bool HoldsPieceOfType(Type type)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Which option should i choose? With the aid of extension methods (in the same namespace) i can have them both:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;namespace&lt;/span&gt; &lt;span style=&#34;color:#24292e&#34;&gt;Sokoban.Domain&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;ExtensionMethods&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;bool&lt;/span&gt; HoldsBox&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt; Cell cell&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; cell&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;HoldsPieceOfType&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;typeof&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;Box&lt;span style=&#34;color:#1f2328&#34;&gt;));&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;bool&lt;/span&gt; HoldsPlayer&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt; Cell cell&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; cell&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;HoldsPieceOfType&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;typeof&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;Player&lt;span style=&#34;color:#1f2328&#34;&gt;));&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;bool&lt;/span&gt; HoldsWall&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt; Cell cell&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; cell&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;HoldsPieceOfType&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;typeof&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;Wall&lt;span style=&#34;color:#1f2328&#34;&gt;));&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In case you don&amp;rsquo;t like this solution, blame &lt;a href=&#34;http://blogs.msdn.com/brada/&#34;&gt;Brad Abrams&lt;/a&gt; who inspired me to implement it this way with his session at &lt;a href=&#34;http://www.visug.be&#34;&gt;Visug&lt;/a&gt; yesterday.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Improve readability with LINQ</title>
      <link>https://timvw.be/2009/09/29/improve-readability-with-linq/</link>
      <pubDate>Tue, 29 Sep 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/09/29/improve-readability-with-linq/</guid>
      <description>&lt;p&gt;At first i was not very fond of LINQ but it seems that i am finally convinced that LINQ may improve readability:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;bool&lt;/span&gt; IsCompleted&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; boxesNotOnGoal &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;from&lt;/span&gt; cell &lt;span style=&#34;color:#cf222e&#34;&gt;in&lt;/span&gt; Cells&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;where&lt;/span&gt; cell&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;HoldsBox&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;!&lt;/span&gt;cell&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;IsGoal&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;select&lt;/span&gt; cell&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Piece&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; boxesNotOnGoal&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Any&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Tim.TransitionTo(&#34;MCPD: Enterprise Application Developer 3.5&#34;)</title>
      <link>https://timvw.be/2009/09/18/tim.transitiontomcpd-enterprise-application-developer-3.5/</link>
      <pubDate>Fri, 18 Sep 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/09/18/tim.transitiontomcpd-enterprise-application-developer-3.5/</guid>
      <description>&lt;p&gt;I figured that it might help convince people that i stay up to date with current technology so i decided to take (and pass) the following exams: &lt;a href=&#34;http://www.microsoft.com/learning/en/us/exam.aspx?ID=70-568&amp;amp;locale=en-us&#34;&gt;70-568&lt;/a&gt; and &lt;a href=&#34;http://www.microsoft.com/learning/en/us/exam.aspx?ID=70-569&amp;amp;locale=en-us&#34;&gt;70-569&lt;/a&gt;. This means that i have now earned the following credentials:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;MCPD: Enterprise Application Development 3.5&lt;/li&gt;&#xA;&lt;li&gt;MCTS: .NET Framework 3.5, Windows Forms Applications&lt;/li&gt;&#xA;&lt;li&gt;MCTS: .NET Framework 3.5, ASP.NET Applications&lt;/li&gt;&#xA;&lt;li&gt;MCTS: .NET Framework 3.5, Windows Communication Foundation Applications&lt;/li&gt;&#xA;&lt;li&gt;MCTS: .NET Framework 3.5, ADO.NET Applications&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>About under construction pages</title>
      <link>https://timvw.be/2009/09/11/about-under-construction-pages/</link>
      <pubDate>Fri, 11 Sep 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/09/11/about-under-construction-pages/</guid>
      <description>&lt;p&gt;Why do people visit a website? To find information. Thus, when you publish a page to announce that the information is not there (yet) you are wasting your visitors time. Instead of creating the actual content you wasted time while your were creating an under construction page. A loss-loss situation instead of a win-win one.&lt;/p&gt;&#xA;&lt;p&gt;Admitted, in some cases it can be helpful to give your visitors an idea of what they can expect (eg: links to articles that are not written yet appear in red in the &lt;a href=&#34;http://www.jeremydmiller.com/ppatterns/Default.aspx?Page=MainPage&amp;amp;AspxAutoDetectCookieSupport=1&#34;&gt;Presentation Patterns wiki&lt;/a&gt;), but &lt;strong&gt;in general: Under construction pages stink&lt;/strong&gt;. And here is someone who shares that feeling: &lt;a href=&#34;http://www.cs.utah.edu/~gk/atwork/&#34;&gt;This icon says more about me than it does about my web page&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Instruct T4 to use C# v3.5</title>
      <link>https://timvw.be/2009/09/11/instruct-t4-to-use-c%23-v3.5/</link>
      <pubDate>Fri, 11 Sep 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/09/11/instruct-t4-to-use-c%23-v3.5/</guid>
      <description>&lt;p&gt;Consider this simple T4 template:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;&amp;lt;&lt;/span&gt;# for (var i = 0; i &lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt; 10&lt;/span&gt;&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;++i)&lt;/span&gt; &lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;WriteLine(&amp;#34;hello&amp;#34;);&lt;/span&gt; &lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;}&lt;/span&gt; &lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;#&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Trying to build the project results in a compilation error because &amp;lsquo;var&amp;rsquo; is an unknown type. A bit of research learned me that i should instruct the processor to use a specific c# version like this:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;&amp;lt;&lt;/span&gt;#@ template language=&amp;#34;C#v3.5&amp;#34; inherits=&amp;#34;Microsoft.VisualStudio.TextTemplating.VSHost.ModelingTextTransformation&amp;#34; #&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;&amp;lt;&lt;/span&gt;# for (var i = 0; i &lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt; 10&lt;/span&gt;&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;++i)&lt;/span&gt; &lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;WriteLine(&amp;#34;hello&amp;#34;);&lt;/span&gt; &lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;}&lt;/span&gt; &lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;#&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Problem solved 🙂&lt;/p&gt;</description>
    </item>
    <item>
      <title>Advertising on this blog</title>
      <link>https://timvw.be/2009/08/29/advertising-on-this-blog/</link>
      <pubDate>Sat, 29 Aug 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/08/29/advertising-on-this-blog/</guid>
      <description>&lt;p&gt;If you are an &lt;a href=&#34;http://adblockplus.org/en/&#34;&gt;Adblock Plus&lt;/a&gt; user like me it is very likely that you have not noticed that i added Google Ads to this blog a month or two ago. Given that the total earnings are less than 5$ i have decided to remove them.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Extension methods to improve readability</title>
      <link>https://timvw.be/2009/08/28/extension-methods-to-improve-readability/</link>
      <pubDate>Fri, 28 Aug 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/08/28/extension-methods-to-improve-readability/</guid>
      <description>&lt;p&gt;A common reason to take advantage of extension methods is to enhance readability (think fluent interfaces). My team uses the &lt;a href=&#34;http://en.wikipedia.org/wiki/Specification_pattern&#34;&gt;specification pattern&lt;/a&gt; regularly and in case a requirement says something like &amp;ldquo;if the player has reached level 10 a message should be displayed&amp;rdquo; they would implement it as&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; HasReachedLevel&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;).&lt;/span&gt;IsSatisfiedBy&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;player&lt;span style=&#34;color:#1f2328&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;view&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;DisplayMessage&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Congratulations! You have reached level 10.&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Pretty good but did you notice that they changed the order of player and level in their (code) story? With the aid of an extension method we can express this requirement as&lt;/p&gt;</description>
    </item>
    <item>
      <title>About the design of a fluent interface</title>
      <link>https://timvw.be/2009/08/17/about-the-design-of-a-fluent-interface/</link>
      <pubDate>Mon, 17 Aug 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/08/17/about-the-design-of-a-fluent-interface/</guid>
      <description>&lt;p&gt;Now that i have &lt;a href=&#34;&#34;&gt;presented a simple ControlStateMachine&lt;/a&gt; i can raise the bar a little. A statemachine that handles commands. Here is how a developer should be able to initialize this machine:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sut&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WhenIn&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;States&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Loading&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;On&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;Commands&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Next&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Do&lt;span style=&#34;color:#1f2328&#34;&gt;(()&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&amp;gt;&lt;/span&gt; Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteLine&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;got next command while loading...&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Do&lt;span style=&#34;color:#1f2328&#34;&gt;(()&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&amp;gt;&lt;/span&gt; Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteLine&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;doing it again...&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;On&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;Commands&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Previous&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Do&lt;span style=&#34;color:#1f2328&#34;&gt;(()&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&amp;gt;&lt;/span&gt; Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteLine&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;got previous command while loading...&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;));&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sut&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WhenIn&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;States&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Ready&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;On&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;Commands&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Previous&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Do&lt;span style=&#34;color:#1f2328&#34;&gt;(()&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&amp;gt;&lt;/span&gt; Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteLine&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;got previous command while ready...&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;));&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;So how should we define our methods to accomplish this initialization style? Let&amp;rsquo;s begin with identifying the methods we need.&lt;/p&gt;</description>
    </item>
    <item>
      <title>About the implementation of a fluent interface</title>
      <link>https://timvw.be/2009/08/17/about-the-implementation-of-a-fluent-interface/</link>
      <pubDate>Mon, 17 Aug 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/08/17/about-the-implementation-of-a-fluent-interface/</guid>
      <description>&lt;p&gt;Now that i have &lt;a href=&#34;http://www.timvw.be/about-the-design-of-a-fluent-interface/&#34;&gt;defined my API for initialization&lt;/a&gt; it is time to implement it. Inspired by the Moq.Language and Moq.Language.Flow namespaces in &lt;a href=&#34;http://code.google.com/p/moq/&#34;&gt;Moq&lt;/a&gt; i have decided to define my interfaces in a separate namespace: Infrastructure.StateMachineLanguage.&lt;/p&gt;&#xA;&lt;p&gt;Ever since i have read &lt;a href=&#34;http://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882&#34;&gt;Clean code&lt;/a&gt; i feel the need to write classes that do one thing (and one thing only) so i came up with the following classes&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;something to store commands per state, CommandsForState&lt;/li&gt;&#xA;&lt;li&gt;something to store actions per command, ActionsForCommand&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;For the implementation of the IChooseCommandAndAction interface i have decided to create a class that falls back on my classes that handle IChooseCommand and IChooseAction already&lt;/p&gt;</description>
    </item>
    <item>
      <title>Presenting ControlStateMachine</title>
      <link>https://timvw.be/2009/08/17/presenting-controlstatemachine/</link>
      <pubDate>Mon, 17 Aug 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/08/17/presenting-controlstatemachine/</guid>
      <description>&lt;p&gt;Here is a situation we are all familiar with: A form that only displays a certain set of controls depending on the mode or state of the application. Let me start with an example: At design time there are three buttons&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/images/controlstatemachine.design.png&#34; alt=&#34;screenshot of flowlayoutpanel with three buttons: edit, save and cancel.&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;The user can look at the data and decide to edit it:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/images/controlstatemachine.display.png&#34; alt=&#34;screenshot of flowlayoutpanel with only one visible button: edit.&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Presenting ControlChanges</title>
      <link>https://timvw.be/2009/08/15/presenting-controlchanges/</link>
      <pubDate>Sat, 15 Aug 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/08/15/presenting-controlchanges/</guid>
      <description>&lt;p&gt;Because i noticed that i kept writing the same operations on control over and over again i decided to capture them in a couple of functions. I presume most of you have done this already. Here is the list of operations:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/images/controlchanges.cd.png&#34; alt=&#34;screenshot of a class diagram with the following operations: MakeVisible, MakeInvisible and TheOnlyVisibleControlsAre.&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;In case it is not clear what these methods should do i have defined the following specifications for them:&lt;/p&gt;</description>
    </item>
    <item>
      <title>About reading books</title>
      <link>https://timvw.be/2009/08/13/about-reading-books/</link>
      <pubDate>Thu, 13 Aug 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/08/13/about-reading-books/</guid>
      <description>&lt;p&gt;A while ago &lt;a href=&#34;http://gabriel.lozano-moran.name/blog/PermaLink,guid,1fbcd60c-0b3e-40c2-a0e1-3f61e4f81fab.aspx&#34;&gt;Gabriel&lt;/a&gt; wrote the following:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;PS3: you can read all the books that you want, in the end to truly master .NET you need experience and more experience! Normally it would take you about 10 years of relevant experience to get to that level of expertise&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;I agree that expertise only comes from experience but i do believe that good books can guide you to &lt;a href=&#34;http://blogs.msdn.com/brada/archive/2003/10/02/50420.aspx&#34;&gt;the pit of success&lt;/a&gt; and help you recognize solutions that are doomed to fail.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Clean Code: A Handbook of Agile Software Craftsmanship</title>
      <link>https://timvw.be/2009/08/13/clean-code-a-handbook-of-agile-software-craftsmanship/</link>
      <pubDate>Thu, 13 Aug 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/08/13/clean-code-a-handbook-of-agile-software-craftsmanship/</guid>
      <description>&lt;p&gt;For my summer holidays i needed a book that was easy readable (size, weight, content) and &lt;a href=&#34;http://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882&#34;&gt;Clean Code: A Handbook of Agile Software Craftsmanship&lt;/a&gt; was a perfect match for my reading sessions at the pool. Even better, i found inspiration to write cleaner (and thus better) code. This book is most certainly recommend!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Experimenting with ControlStateMachine and Fluent interfaces</title>
      <link>https://timvw.be/2009/08/13/experimenting-with-controlstatemachine-and-fluent-interfaces/</link>
      <pubDate>Thu, 13 Aug 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/08/13/experimenting-with-controlstatemachine-and-fluent-interfaces/</guid>
      <description>&lt;p&gt;A long time ago i read &lt;a href=&#34;http://codebetter.com/blogs/jeremy.miller/archive/2007/07/25/the-build-your-own-cab-series-table-of-contents.aspx&#34;&gt;Build your own CAB series&lt;/a&gt; and recently i noticed that there is a wiki: &lt;a href=&#34;http://www.jeremydmiller.com/ppatterns/Default.aspx?Page=MainPage&amp;amp;AspxAutoDetectCookieSupport=1&#34;&gt;Presentation Patterns Wiki!&lt;/a&gt; and it inspired me to experiment with state machines. Here are a couple of examples:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;controlStateMachine &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; ControlStateMachine&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;states&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;controlStateMachine&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;AfterEachStateChange&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Do&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;MakeRelevantButtonsVisible&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;controlStateMachine&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WhenStateChangesTo&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;States&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;RetrievingSubscriptionPeriod&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;TheOnlyVisibleControlsAre&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;flowLayoutPanel1&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; datePicker1&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;controlStateMachine&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WhenStateChangesTo&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;States&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;RetrievingCustomerInformation&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;MakeVisible&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;customerInput1&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Do&lt;span style=&#34;color:#1f2328&#34;&gt;(()&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&amp;gt;&lt;/span&gt; customerInput1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Dock &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; DockStyle&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Fill&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;controlStateMachine&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WhenStateChangesTo&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;States&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Ready&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;MakeInvisible&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;customerInput1&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And here is another example:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;wizardStateMachine &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; WizardStateMachine&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;states&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;(&lt;/span&gt;controlStateMachine&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;wizardStateMachine&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;InState&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;States&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;RetrievingSubscriptionPeriod&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;OnCommand&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;WizardCommands&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Next&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;TransitionTo&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;States&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;RetrievingCustomerInformation&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;wizardStateMachine&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;InState&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;States&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;RetrievingCustomerInformation&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;OnCommand&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;WizardCommands&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Back&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;TransitionTo&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;States&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;RetrievingSubscriptionPeriod&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;OnCommand&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;WizardCommands&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Finish&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;TransitionTo&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;States&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Ready&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;wizardStateMachine&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;InState&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;States&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Ready&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;OnCommand&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;WizardCommands&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;New&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Do&lt;span style=&#34;color:#1f2328&#34;&gt;(()&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&amp;gt;&lt;/span&gt; MessageBox&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Show&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Currently not supported&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;));&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Stay tuned for future posts where i describe the problem space that have lead to this API.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Iconoclast: A Neuroscientist Reveals How to Think Differently</title>
      <link>https://timvw.be/2009/07/13/iconoclast-a-neuroscientist-reveals-how-to-think-differently/</link>
      <pubDate>Mon, 13 Jul 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/07/13/iconoclast-a-neuroscientist-reveals-how-to-think-differently/</guid>
      <description>&lt;p&gt;Because i really enjoyed &lt;a href=&#34;http://www.timvw.be/managing-humans-biting-and-humorous-tales-of-a-software-engineering-manager/&#34;&gt;managing humans&lt;/a&gt; i bought another book mentionned by Joel Spolsky: &lt;a href=&#34;http://www.amazon.com/Iconoclast-Neuroscientist-Reveals-Think-Differently/dp/1422115011/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1247393811&amp;amp;sr=8-1&#34;&gt;Iconoclast: A Neuroscientist Reveals How to Think Differently&lt;/a&gt;. This book would be an excellent read at the pool on a holiday location, but at home it was nothing more than an entertaining read. Not really recommended.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions</title>
      <link>https://timvw.be/2009/07/11/enterprise-integration-patterns-designing-building-and-deploying-messaging-solutions/</link>
      <pubDate>Sat, 11 Jul 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/07/11/enterprise-integration-patterns-designing-building-and-deploying-messaging-solutions/</guid>
      <description>&lt;p&gt;A while ago we had a session on &lt;a href=&#34;http://www.altdotnet.be/14/section.aspx/16&#34;&gt;messaging&lt;/a&gt; at &lt;a href=&#34;http://www.altdotnet.be/&#34;&gt;ALT.NET Belgium&lt;/a&gt; and it was then that i decided i should order my copy of &lt;a href=&#34;http://www.amazon.com/Enterprise-Integration-Patterns-Designing-Addison-Wesley/dp/0321200683&#34;&gt;Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions&lt;/a&gt;. I found first half of the book pretty interesting but got bored around chapter 8 and skipped some sections from there. All in all this book this book is pretty good and if you know a thing or two about TCP/IP implementations you might even recognize some patterns in a different problem space.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Small modification to achieve better modularity with Prism</title>
      <link>https://timvw.be/2009/07/11/small-modification-to-achieve-better-modularity-with-prism/</link>
      <pubDate>Sat, 11 Jul 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/07/11/small-modification-to-achieve-better-modularity-with-prism/</guid>
      <description>&lt;p&gt;I have been experimenting with WPF and Prism (&lt;a href=&#34;http://msdn.microsoft.com/en-us/library/cc707819.aspx&#34;&gt;Composite Application Guidance for WPF and Silverlight&lt;/a&gt;) and ran into a major issue: modularity. Here is an excerpt from the documentation&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Modules have explicit boundaries, typically by subsystem or feature. Having these boundaries makes it easier for separate teams to develop modules. On large applications, teams may be organized by cross-cutting capabilities in addition to being organized by a specific subsystem or feature. For example, there may be a team assigned to shared components of the application, such as the shell or the common infrastructure module.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Beyond the basics: IPropertyAccessor</title>
      <link>https://timvw.be/2009/06/27/beyond-the-basics-ipropertyaccessor/</link>
      <pubDate>Sat, 27 Jun 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/06/27/beyond-the-basics-ipropertyaccessor/</guid>
      <description>&lt;p&gt;Consider the following classes: an abstract Account and a concrete SavingAccount&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;abstract&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Account&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; Id &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;get&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;protected&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;set&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; CustomerId &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;get&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;protected&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;set&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;abstract&lt;/span&gt; AccountType Type &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;get&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;SavingAccount&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt; Account&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; ISavingAccount&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; SavingAccount&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; SavingAccount&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; customerId&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; CustomerId &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; customerId&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;override&lt;/span&gt; AccountType Type &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;get&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; AccountType&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;SavingAccount&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And this is the schema on which we want to map these classes&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/images/accounts_schema.png&#34; alt=&#34;screenshot of accounts schema&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;We define a &lt;a href=&#34;http://fluentnhibernate.org/&#34;&gt;Fluent&lt;/a&gt; NHibernate mapping as following:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;AccountMap&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt; ClassMap&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;account&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; AccountMap&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;WithTable&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Accounts&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;Id&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;a &lt;span style=&#34;color:#1f2328&#34;&gt;=&amp;gt;&lt;/span&gt; a&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Id&lt;span style=&#34;color:#1f2328&#34;&gt;).&lt;/span&gt;ColumnName&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;account_id&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;Map&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;a &lt;span style=&#34;color:#1f2328&#34;&gt;=&amp;gt;&lt;/span&gt; a&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;CustomerId&lt;span style=&#34;color:#1f2328&#34;&gt;).&lt;/span&gt;ColumnName&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;customer_id&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;Map&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;a &lt;span style=&#34;color:#1f2328&#34;&gt;=&amp;gt;&lt;/span&gt; a&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Type&lt;span style=&#34;color:#1f2328&#34;&gt;).&lt;/span&gt;ColumnName&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;account_type&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;SetAttribute&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;lazy&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;false&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;JoinedSubClass&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;savingAccount&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;saving\_account\_id&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; MapSavingAccount&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; MapSavingAccount&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;JoinedSubClassPart&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;savingAccount&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; jscp&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;jscp&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WithTableName&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;SavingAccounts&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;jscp&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;SetAttribute&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;lazy&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;false&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;As soon as we try to use this mapping we run into an &amp;ldquo;Could not find a setter for property &amp;lsquo;Type&amp;rsquo; in class &amp;lsquo;Banking.Domain.CheckingAccount&amp;rdquo; exception. A quick look with reflector teaches us there are a couple of strategies, but none of them suits our needs.&lt;/p&gt;</description>
    </item>
    <item>
      <title>VS2010: Unable to insert a breakpoint by clicking next to the line number</title>
      <link>https://timvw.be/2009/06/16/vs2010-unable-to-insert-a-breakpoint-by-clicking-next-to-the-line-number/</link>
      <pubDate>Tue, 16 Jun 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/06/16/vs2010-unable-to-insert-a-breakpoint-by-clicking-next-to-the-line-number/</guid>
      <description>&lt;p&gt;For some reason i was &lt;a href=&#34;https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=464203&#34;&gt;unable to insert a breakpoint by clicking next to the line number&lt;/a&gt; in VS2010. Anyway, here is the trick that made the problem disappear for me: Go to &amp;ldquo;Tools &amp;gt; Import and export settings&amp;hellip; &amp;quot; and choose &amp;ldquo;Reset all settings&amp;rdquo;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Adding items to SendTo folder</title>
      <link>https://timvw.be/2009/06/07/adding-items-to-sendto-folder/</link>
      <pubDate>Sun, 07 Jun 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/06/07/adding-items-to-sendto-folder/</guid>
      <description>&lt;p&gt;When i tried to access the SendTo folder i got a message box saying: &amp;ldquo;Access is denied&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/images/SendTo_Denied.png&#34; alt=&#34;screenshot of access denied message box&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;A bit of searching thought me that the folder can be accessed via the &amp;ldquo;shell:sendto&amp;rdquo; command.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/images/SendTo_Shell.png&#34; alt=&#34;screenshot of shell:sendto command&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;And now i can add a shortcut to Notepad2 which i use to inspect a Visual Studio solution or project file.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/images/SendTo_Usage.png&#34; alt=&#34;screenshot that displays usage of custom sendto target&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>First thoughts about Windows 7</title>
      <link>https://timvw.be/2009/06/06/first-thoughts-about-windows-7/</link>
      <pubDate>Sat, 06 Jun 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/06/06/first-thoughts-about-windows-7/</guid>
      <description>&lt;p&gt;It is almost two years ago that i decided to &lt;a href=&#34;http://www.timvw.be/about-the-wow-i-removed-vista-from-my-harddisk-experience/&#34;&gt;uninstall Vista&lt;/a&gt; after a bad first impression. Nowadays i have learned to live with it, but i guess i will never understand what all the fuss was about.&lt;/p&gt;&#xA;&lt;p&gt;I can imagine that the marketing department will generate a lot of noise about Windows 7 but i am not convinced that there are actually people waiting for yet another OS. Anyway, i installed Windows 7 somewhere last week and i must say that i am pretty pleased with it. I guess that you didn&amp;rsquo;t see that one coming, do you? Me, finally liking an operation system that comes from Microsoft 😉&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using the Do handler for a method with out parameters</title>
      <link>https://timvw.be/2009/05/25/using-the-do-handler-for-a-method-with-out-parameters/</link>
      <pubDate>Mon, 25 May 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/05/25/using-the-do-handler-for-a-method-with-out-parameters/</guid>
      <description>&lt;p&gt;As you can read in &lt;a href=&#34;http://ayende.com/Wiki/(S(mc1hst55a1303emfc34dkmyr))/Rhino+Mocks+The+Do()+Handler.ashx&#34;&gt;the documentation&lt;/a&gt; for Rhino Mocks:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;There are times when the returning a static value is not good enough for the scenario that you are testing, so for those cases, you can use the Do() handler to add custom behavior when the method is called. In general, the Do() handler simply replaces the method call. Its return value will be returned from the mocked call (as well as any exception thrown). The handler&amp;rsquo;s signature must match the method signature, since it gets the same parameters as the call.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Measuring elapsed time</title>
      <link>https://timvw.be/2009/05/16/measuring-elapsed-time/</link>
      <pubDate>Sat, 16 May 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/05/16/measuring-elapsed-time/</guid>
      <description>&lt;p&gt;As the documentation for &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch.aspx&#34;&gt;System.Diagnostics.Stopwatch&lt;/a&gt; says&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;In a typical Stopwatch scenario, you call the Start method, then eventually call the Stop method, and then you check elapsed time using the Elapsed property.&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;I find it a shame that they didn&amp;rsquo;t provide a method that covers this particular scenario so i did it myself&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Stopwatch&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; TimeSpan Measure&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt; Action action&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; stopwatch &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; System&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Diagnostics&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Stopwatch&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;stopwatch&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Start&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;action&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Invoke&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;stopwatch&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Stop&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; stopwatch&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Elapsed&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Consuming this method is as simple as&lt;/p&gt;</description>
    </item>
    <item>
      <title>Sparkles</title>
      <link>https://timvw.be/2009/05/05/sparkles/</link>
      <pubDate>Tue, 05 May 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/05/05/sparkles/</guid>
      <description>&lt;p&gt;In my opinion Pieter Gheysens is one of those persons that has contributed something valuable to the Belgian .Net community: Great Visug sessions and some interesting courses at Compuware so i shamelessly plug his new company &lt;a href=&#34;http://www.sparkles.be&#34;&gt;Sparkles&lt;/a&gt; here. Now go and find out how they can make you a better developer!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Easy deployment through virtualisation</title>
      <link>https://timvw.be/2009/05/03/easy-deployment-through-virtualisation/</link>
      <pubDate>Sun, 03 May 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/05/03/easy-deployment-through-virtualisation/</guid>
      <description>&lt;p&gt;A couple of years ago, i think somewhere in 2003, i realised that hardware virtualisation was the way to go. Whenever i talked with people about distributing and deploying applications with a virtual machine image instead of a traditional installer they laughed at me (or atleast gave me a strange look of disbelief). The availability of multiple machines can be represented in a windowing environment through a metaphor of multiple desktops. Anyway, i&amp;rsquo;m still convinced that there will be a point in time where users have access to multiple applications that run in their own virtual machine. Time will tell.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Enterprise Service Bus</title>
      <link>https://timvw.be/2009/05/03/enterprise-service-bus/</link>
      <pubDate>Sun, 03 May 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/05/03/enterprise-service-bus/</guid>
      <description>&lt;p&gt;I believe it was at an &lt;a href=&#34;http://www.altdotnet.be&#34;&gt;Alt.Net&lt;/a&gt; meeting that the &lt;a href=&#34;http://www.amazon.com/Enterprise-Service-Bus-David-Chappell/dp/0596006756&#34;&gt;Enterprise Service Bus&lt;/a&gt; book was mentionned and i recently decided to give it a read. This book covers everything there is to know about an ESB. From a developer point of view it can serve as a good introduction to the core components and applied patterns but nothing more.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Beautiful Code: Leading Programmers Explain How They Think</title>
      <link>https://timvw.be/2009/04/25/beautiful-code-leading-programmers-explain-how-they-think/</link>
      <pubDate>Sat, 25 Apr 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/04/25/beautiful-code-leading-programmers-explain-how-they-think/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.amazon.com/Beautiful-Code-Leading-Programmers-Practice/dp/0596510047&#34;&gt;Beautiful Code: Leading Programmers Explain How They Think&lt;/a&gt; is another book that i started reading a couple of weeks ago. A couple of chapters were pretty interesting but i skipped the parts with large chunks of code because i get bored with code in books. Code should be read on a computer display in an editor! Despite many others, i can&amp;rsquo;t say that this book was worth it.&lt;/p&gt;&#xA;&lt;p&gt;Reading this book made me realize that posting large chunks of code in a blog post is boring too. So i have decided to write more about ideas and concepts instead of code.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Essentials of Organizational Behavior</title>
      <link>https://timvw.be/2009/04/25/essentials-of-organizational-behavior/</link>
      <pubDate>Sat, 25 Apr 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/04/25/essentials-of-organizational-behavior/</guid>
      <description>&lt;p&gt;Somewhere in 2007 I started reading &lt;a href=&#34;http://www.amazon.com/Essentials-Organizational-Behavior-Stephen-Robbins/dp/0136077617/ref=sr_1_2?ie=UTF8&amp;amp;s=books&amp;amp;qid=1240060292&amp;amp;sr=8-2&#34;&gt;Essentials of Organizational Behavior&lt;/a&gt; and only finished it earlier this week. This book covers behavior of humans, humans in organizations, and organizations. Although the book covers the topics pretty well i must say that i liked Managing Humans: Biting and Humorous Tales of a Software Engineering Manager more.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mastering regular expressions</title>
      <link>https://timvw.be/2009/04/25/mastering-regular-expressions/</link>
      <pubDate>Sat, 25 Apr 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/04/25/mastering-regular-expressions/</guid>
      <description>&lt;p&gt;A regular expression is a domain specific language for identifying parts in text and is one of those things every software developer should have learned. I ordered my copy of &lt;a href=&#34;http://www.amazon.com/Mastering-Regular-Expressions-Jeffrey-Friedl/dp/1565922573&#34;&gt;Mastering regular expressions&lt;/a&gt; way back in 2001 and found it incredibly good! Allthough there are books that cover a specific dialect better, i still think this book is recommended because it also teaches the reader to read regular expressions.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Pondering about code generation</title>
      <link>https://timvw.be/2009/04/18/pondering-about-code-generation/</link>
      <pubDate>Sat, 18 Apr 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/04/18/pondering-about-code-generation/</guid>
      <description>&lt;p&gt;A while ago i was listening to &lt;a href=&#34;http://www.dotnetrocks.com/default.aspx?showNum=436&#34;&gt;&amp;lsquo;Kathleen Dollard on MEF and More&amp;rsquo; on NET Rocks!&lt;/a&gt; and it got me thinking.&lt;/p&gt;&#xA;&lt;p&gt;For a long time i considered code generation as a way to reduce the tedious parts of software development by spitting out considerable amounts of code and I immediately thought of tools like &lt;a href=&#34;msdn.microsoft.com/en-us/library/bb126445.aspx&#34;&gt;T4&lt;/a&gt;: Text Template Transformation Toolkit and &lt;a href=&#34;msdn.microsoft.com/en-us/teamsystem/aa718948.aspx&#34;&gt;GAT&lt;/a&gt;: Guidance Automation Toolkit.&lt;/p&gt;&#xA;&lt;p&gt;I believe that in order to become more productive we need a solution that requires less code spitting by means of better frameworks and higher languages. Eg: C# allows us to think about computer instructions on a much higher level than assembly language.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Managing Humans: Biting and Humorous Tales of a Software Engineering Manager</title>
      <link>https://timvw.be/2009/04/04/managing-humans-biting-and-humorous-tales-of-a-software-engineering-manager/</link>
      <pubDate>Sat, 04 Apr 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/04/04/managing-humans-biting-and-humorous-tales-of-a-software-engineering-manager/</guid>
      <description>&lt;p&gt;A while ago i heared Joel Spolsky shamelessly promote &lt;a href=&#34;http://www.amazon.com/Managing-Humans-Humorous-Software-Engineering/dp/159059844X&#34;&gt;Managing Humans: Biting and Humorous Tales of a Software Engineering Manager&lt;/a&gt; and decided to give it a read. No boring process descriptions, but short and consice chapters, fed with real life examples, transmitting the message to the reader. I loved reading this book.&lt;/p&gt;</description>
    </item>
    <item>
      <title>POC: Moq API adapter for Rhino Mocks</title>
      <link>https://timvw.be/2009/04/03/poc-moq-api-adapter-for-rhino-mocks/</link>
      <pubDate>Fri, 03 Apr 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/04/03/poc-moq-api-adapter-for-rhino-mocks/</guid>
      <description>&lt;p&gt;One of my main concerns with third party software, and software in general, is maintainability. The Rhino Mocks project has been out there for a couple of years now and i&amp;rsquo;m pretty confident that it won&amp;rsquo;t go away anytime soon. The Moq project is a lot younger and will have to proove that it can stay alive&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;Anyway, because most people seem to digg the Moq API i have decided to write an adapter that provides the same API using Rhino Mocks. Here are some simple examples&lt;/p&gt;</description>
    </item>
    <item>
      <title>xUnit Test Patterns: Refactoring Test Code</title>
      <link>https://timvw.be/2009/03/28/xunit-test-patterns-refactoring-test-code/</link>
      <pubDate>Sat, 28 Mar 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/03/28/xunit-test-patterns-refactoring-test-code/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.amazon.com/xUnit-Test-Patterns-Refactoring-Addison-Wesley/dp/0131495054&#34;&gt;xUnit Test Patterns: Refactoring Test Code&lt;/a&gt; starts with narratives on philosophy, principles, strategies and test smells. The second part covers test smells but i skimmed through these chapters because i have already had the joy to experience these anti-patterns first hand 🙁 Most chapters in the third part, covering actual patterns, caught my attention and inspired me. Although it&amp;rsquo;s quite big, 700+ pages, this book is most certainly recommended!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Strict mocks lead to overspecification</title>
      <link>https://timvw.be/2009/03/24/strict-mocks-lead-to-overspecification/</link>
      <pubDate>Tue, 24 Mar 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/03/24/strict-mocks-lead-to-overspecification/</guid>
      <description>&lt;p&gt;Here is an example that demonstrates how strick mocks lead to overspecification. Imagine that we are creating a simple screen in a &lt;a href=&#34;http://martinfowler.com/eaaDev/PassiveScreen.html&#34;&gt;Passive View&lt;/a&gt; architecture. The first feature that we implement is displaying the message &amp;ldquo;edit&amp;rdquo; when the user clicks the edit button&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[Fact]&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; ShouldDisplayEditClickMessage&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#57606a&#34;&gt;// Establish context&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;MockRepository mockRepository &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; MockRepository&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;IView view &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; mockRepository&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;StrictMock&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;iview&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Expect&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Call&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;delegate&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; view&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;EditClick &lt;span style=&#34;color:#1f2328&#34;&gt;+=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;null&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}).&lt;/span&gt;IgnoreArguments&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;mockRepository&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Replay&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;view&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#57606a&#34;&gt;// Create sut&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Presenter sut &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; Presenter&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;view&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#57606a&#34;&gt;// Setup expectations&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;mockRepository&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;BackToRecord&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;view&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; BackToRecordOptions&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Expectations&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Expect&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Call&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;delegate&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; view&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;DisplayClickMessage&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;edit&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;});&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;mockRepository&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ReplayAll&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#57606a&#34;&gt;// Exercise&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;RhinoMocksExtensions&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetEventRaiser&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;view&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;delegate&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;IView v&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; v&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;EditClick &lt;span style=&#34;color:#1f2328&#34;&gt;+=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;null&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;})&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Raise&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;view&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; EventArgs&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Empty&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#57606a&#34;&gt;// Verify&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;mockRepository&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;VerifyAll&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/images/overspecification-01.PNG&#34; alt=&#34;screenshot of test runner with all tests passing&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Comparing Moq to Rhino Mocks</title>
      <link>https://timvw.be/2009/03/23/comparing-moq-to-rhino-mocks/</link>
      <pubDate>Mon, 23 Mar 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/03/23/comparing-moq-to-rhino-mocks/</guid>
      <description>&lt;p&gt;So which mocking framework should we use? Do we fall back on good old &lt;a href=&#34;http://ayende.com/projects/rhino-mocks.aspx&#34;&gt;Rhino Mocks&lt;/a&gt; or do we choose for the new kid on the block &lt;a href=&#34;http://code.google.com/p/moq/&#34;&gt;Moq&lt;/a&gt;?&lt;/p&gt;&#xA;&lt;p&gt;From a technical point of view i would dare to say that they will be able to support the same set of features because they&amp;rsquo;re both based on Castle&amp;rsquo;s &lt;a href=&#34;http://www.castleproject.org/dynamicproxy/index.html&#34;&gt;DynamicProxy&lt;/a&gt;. Rhino Mocks has the advantages that it, unlike Moq, supports the mocking of Delegates and can be used in a .Net 2.0 only environment. Whether or not we should care about these differences is a question i will leave unanswered.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Getting started with Moq</title>
      <link>https://timvw.be/2009/03/21/getting-started-with-moq/</link>
      <pubDate>Sat, 21 Mar 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/03/21/getting-started-with-moq/</guid>
      <description>&lt;p&gt;In this article I will demonstrate the Moq API by means of a simple application that allows the user to manage a quote.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/images/QuoteOfTheDay-01.jpg&#34; alt=&#34;screenshot of quote manager displaying opening screen.&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/images/QuoteOfTheDay-02.jpg&#34; alt=&#34;screenshot of quote manager displaying edit screen.&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;In order to prevent that we have to rewrite our application when we move to a different graphical environment such as Web Forms, Silverlight or WPF I have decided to apply the [Humble Object](&lt;a href=&#34;http://xunitpatterns.com/Humble&#34;&gt;http://xunitpatterns.com/Humble&lt;/a&gt; Object.html) pattern in the design. The implementation of the application has been based on the &lt;a href=&#34;http://martinfowler.com/eaaDev/PassiveScreen.html&#34;&gt;Passive View pattern&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Another reason for not using mstest</title>
      <link>https://timvw.be/2009/03/14/another-reason-for-not-using-mstest/</link>
      <pubDate>Sat, 14 Mar 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/03/14/another-reason-for-not-using-mstest/</guid>
      <description>&lt;p&gt;As you can read in &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/ms182172(VS.80).aspx&#34;&gt;CA1001&lt;/a&gt;: Types that own disposable fields should be disposable. Pretty solid advice, but for some reason the mstest runner does not dispose of classes that implement IDisposable. A possible workaround is to apply a &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.testtools.unittesting.testcleanupattribute(VS.80).aspx&#34;&gt;TestCleanupAttribute&lt;/a&gt; to the Dispose method, but this is really contradictory with the &amp;ldquo;Shared test fixture&amp;rdquo; approach mstest uses. Imho, there is only one clean solution: use a decent testing framework instead.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Setup expectation with successive function calls using Moq</title>
      <link>https://timvw.be/2009/03/14/setup-expectation-with-successive-function-calls-using-moq/</link>
      <pubDate>Sat, 14 Mar 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/03/14/setup-expectation-with-successive-function-calls-using-moq/</guid>
      <description>&lt;p&gt;In the &lt;a href=&#34;http://code.google.com/p/moq/wiki/QuickStart&#34;&gt;Quickstart&lt;/a&gt; guide we find an example that shows us how to setup a different return value for each invocation as following&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;// returning different values on each invocation&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; mock &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; Mock&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;ifoo&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; calls &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mock&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Setup&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;foo &lt;span style=&#34;color:#1f2328&#34;&gt;=&amp;gt;&lt;/span&gt; foo&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Execute&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;ping&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Returns&lt;span style=&#34;color:#1f2328&#34;&gt;(()&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&amp;gt;&lt;/span&gt; calls&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Callback&lt;span style=&#34;color:#1f2328&#34;&gt;(()&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&amp;gt;&lt;/span&gt; calls&lt;span style=&#34;color:#1f2328&#34;&gt;++);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;// returns 0 on first invocation, 1 on the next, and so on&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteLine&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;mock&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Object&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Execute&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;ping&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;));&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In &lt;a href=&#34;http://www.madprops.org/blog/moq-triqs-successive-expectations/&#34;&gt;Moq Triqs &amp;ndash; Successive Expectations&lt;/a&gt; i found inspiration to implement an extension method that allows me to define an expectation that calls a set of successive functions&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using sed</title>
      <link>https://timvw.be/2009/03/05/using-sed/</link>
      <pubDate>Thu, 05 Mar 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/03/05/using-sed/</guid>
      <description>&lt;p&gt;For a couple of days now i&amp;rsquo;ve been pondering about posting something about my love for &lt;a href=&#34;http://www.gnu.org/software/textutils/&#34;&gt;GNU text-utilities&lt;/a&gt; but never got round to it. A couple of minutes ago i read Phil Windley&amp;rsquo;s &lt;a href=&#34;http://www.windley.com/archives/2009/03/using_grep_and_find.shtml&#34;&gt;Using Grep and Find&lt;/a&gt; post so here is a one-liner that shows how you can add a reference to a msbuild target file to all csproj files in a given folder:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;find -name *.csproj -exec sed -i -e &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;#^&amp;lt;/project&amp;gt;$# &amp;lt;import Project=&amp;#34;X:\\BuildTasks\\Corp.targets&amp;#34; /&amp;gt;\r\n&amp;lt;/project&amp;gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;{}&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;\;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Or if you are frustrated with System.Diagnostics.CodeAnalysis.SuppressMessageAttributes and want to remove them from all your cs files:&lt;/p&gt;</description>
    </item>
    <item>
      <title>NHibernate in Action</title>
      <link>https://timvw.be/2009/02/23/nhibernate-in-action/</link>
      <pubDate>Mon, 23 Feb 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/02/23/nhibernate-in-action/</guid>
      <description>&lt;p&gt;Last week i received my copy of &lt;a href=&#34;http://www.amazon.com/NHibernate-Action-Pierre-Henri-Kuat%C3%A9/dp/1932394923&#34;&gt;NHibernate in Action&lt;/a&gt;. This book provides much more than the typical examples you find in the product documentation like architectural guidance on the application of O/R Mapping. Even with my Hibernate experience i found some interesting insights in the NHibernate features. This book is most certainly recommended!&lt;/p&gt;</description>
    </item>
    <item>
      <title>JavaScript: The Good Parts</title>
      <link>https://timvw.be/2009/02/13/javascript-the-good-parts/</link>
      <pubDate>Fri, 13 Feb 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/02/13/javascript-the-good-parts/</guid>
      <description>&lt;p&gt;This week i have been reading &lt;a href=&#34;http://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockford/dp/0596517742&#34;&gt;JavaScript: The Good Parts&lt;/a&gt;. Although the book is pretty thin, approximitaly. 150 pages, the information that is inside the book is really powerful. The book provides deep insight for people that are considering to implement functionality in JavaScript. I would say that this is a must read.&lt;/p&gt;&#xA;&lt;p&gt;Here is an example of something that i learned from the book (A workaround for an error in the ECMAScript Language Specification which causes this to be set incorrectly for inner functions)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Microsoft .NET: Architecting Applications for the Enterprise</title>
      <link>https://timvw.be/2009/02/13/microsoft-.net-architecting-applications-for-the-enterprise/</link>
      <pubDate>Fri, 13 Feb 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/02/13/microsoft-.net-architecting-applications-for-the-enterprise/</guid>
      <description>&lt;p&gt;Earlier this month i have read &lt;a href=&#34;http://www.amazon.com/Microsoft%C2%AE-NET-Architecting-Applications-PRO-Developer/dp/073562609X&#34;&gt;Microsoft .NET: Architecting Applications for the Enterprise&lt;/a&gt;. This time i was pretty pleased to notice that the author, &lt;a href=&#34;http://weblogs.asp.net/despos/&#34;&gt;Dino Esposito&lt;/a&gt;, did not fill the book with references to other books written by him. All in all the book painted a pretty accurate picture of enterprise application development that is obviously inspired by masterworks like: &lt;a href=&#34;http://www.amazon.com/Design-Patterns-Object-Oriented-Addison-Wesley-Professional/dp/0201633612&#34;&gt;Design Patterns: Elements of Reusable Object-Oriented Software&lt;/a&gt;, &lt;a href=&#34;http://www.amazon.com/Enterprise-Application-Architecture-Addison-Wesley-Signature/dp/0321127420&#34;&gt;Patterns of Enterprise Application Architecture&lt;/a&gt; and &lt;a href=&#34;http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215&#34;&gt;Domain-Driven Design: Tackling Complexity in the Heart of Software&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Non-Designer&#39;s Design Book</title>
      <link>https://timvw.be/2009/02/13/non-designers-design-book/</link>
      <pubDate>Fri, 13 Feb 2009 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2009/02/13/non-designers-design-book/</guid>
      <description>&lt;p&gt;A couple of weeks ago the &lt;a href=&#34;http://www.amazon.com/Non-Designers-Design-Book-3rd-Designers/dp/0321534042&#34;&gt;Non-Designer&amp;rsquo;s Design Book&lt;/a&gt; was mentionned in some podcast i was listening to and i decided to give it a read. The author has stuffed the color printed book with examples describing the four basic design principles:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;Contrast&lt;/strong&gt;: The idea behind contrast is to avoid elements on the page that are merely similar. If the elements (type, color, size, line thickness, shape, space, etc.) are not the same, then make them very different. Contrast is often the most important visual attraction on a page.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Repetition&lt;/strong&gt;: Repeat visual elements of the design throughout the piece. You can repeat color, shape, texture, spatial relationships, line thicknesses, sizes, etc. This helps develop the organization and strengthens the unity.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Alignment&lt;/strong&gt;: Nothing should be placed on the page arbitrarily. Every element should have some visual connection with another element on the page. This creates a clean, sophisticated, fresh look.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Proximity&lt;/strong&gt;: Items relating to each other should be grouped close together. When several items are in close proximity to each other, they become one visual unit rather than several separate units. This helps organize information and reduces clutter.&lt;/li&gt;&#xA;&lt;/ol&gt;</description>
    </item>
    <item>
      <title>The art of Unit Testing</title>
      <link>https://timvw.be/2008/12/29/the-art-of-unit-testing/</link>
      <pubDate>Mon, 29 Dec 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/12/29/the-art-of-unit-testing/</guid>
      <description>&lt;p&gt;This weekend i have been reading &lt;a href=&#34;http://artofunittesting.com/&#34;&gt;The art of Unit Testing&lt;/a&gt; via the &lt;a href=&#34;http://www.manning.com/about/meap.html&#34;&gt;Manning Early Access Program&lt;/a&gt;. This book does not really teach you how to write unit tests but tries to answer those questions you start asking yourself after a while: How can i organize my tests? How do i make sure they are maintainable? Although the book is not loaded with new concepts, the existing ones are well covered. Probably one of the first books in this genre for the .Net world and most certainly recommended for reading.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Programming Microsoft ASP.NET 2.0 Applications: Advanced Topics</title>
      <link>https://timvw.be/2008/12/27/programming-microsoft-asp.net-2.0-applications-advanced-topics/</link>
      <pubDate>Sat, 27 Dec 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/12/27/programming-microsoft-asp.net-2.0-applications-advanced-topics/</guid>
      <description>&lt;p&gt;Although i was most of the week in bed with a cold i managed to finish reading &lt;a href=&#34;http://www.amazon.com/Programming-Microsoft-ASP-NET-2-0-Applications/dp/0735621772&#34;&gt;Programming Microsoft ASP.NET 2.0 Applications: Advanced Topics&lt;/a&gt;. This book contained less references to the previous book (luckily, because that one has been superseded now). I found it a bit confusing when the author explained half of a topic, diversified to something completely different, and then finished the topic. If you want some more insight in the ASP.NET machinery this book is recommended. What i did miss is a section on the inner workings of View State and change tracking but i have yet to find a book that covers this topic.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Presenting MyTestRunner</title>
      <link>https://timvw.be/2008/12/24/presenting-mytestrunner/</link>
      <pubDate>Wed, 24 Dec 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/12/24/presenting-mytestrunner/</guid>
      <description>&lt;p&gt;Here are a couple of reasons why i dislike the &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/ms243147(VS.80).aspx&#34;&gt;Unit Testing Framework&lt;/a&gt; that comes with &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/fda2bad5(VS.80).aspx&#34;&gt;Visual Studio Team System&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Not all versions of Visual Studio are capable of running the tests.&lt;/li&gt;&#xA;&lt;li&gt;Test inheritance is not supported.&lt;/li&gt;&#xA;&lt;li&gt;Running tests via mstest.exe is slow.&lt;/li&gt;&#xA;&lt;li&gt;Visual Studio creating tens of .vmsdi files.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;There are already a couple of better frameworks out there, and currently &lt;a href=&#34;http://mbunit.com/&#34;&gt;MbUnit&lt;/a&gt; is my favorite one, certainly in combination with &lt;a href=&#34;http://www.testdriven.net/&#34;&gt;TestDriven.NET&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;I have created a custom implementation of the Microsoft.VisualStudio.QualityTools.UnitTestingFramework assembly. Actually, the assembly only has a couple of Attributes for the moment but contributions are always welcome 😉&lt;/p&gt;</description>
    </item>
    <item>
      <title>Applying Domain-Driven Design and Patterns: With Examples in C# and .NET</title>
      <link>https://timvw.be/2008/12/22/applying-domain-driven-design-and-patterns-with-examples-in-c%23-and-.net/</link>
      <pubDate>Mon, 22 Dec 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/12/22/applying-domain-driven-design-and-patterns-with-examples-in-c%23-and-.net/</guid>
      <description>&lt;p&gt;In his book, &lt;a href=&#34;http://www.amazon.com/Applying-Domain-Driven-Design-Patterns-Examples/dp/0321268202&#34;&gt;Applying Domain-Driven Design and Patterns: With Examples in C# and .NET&lt;/a&gt;, Jimmy Nilsson covers the most common questions you ask yourself when you are thinking about applying DDD to one of your projects. Sometimes i found the ordering of the chapters a bit odd but all in all it was an excellent read and most certainly recommended.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Exploring AJAX on the ASP.NET platform</title>
      <link>https://timvw.be/2008/12/14/exploring-ajax-on-the-asp.net-platform/</link>
      <pubDate>Sun, 14 Dec 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/12/14/exploring-ajax-on-the-asp.net-platform/</guid>
      <description>&lt;p&gt;I finally found some time to experiment with AJAX on the ASP.NET platform. The first technique i looked into was &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/bb386573.aspx&#34;&gt;Partial-Page Rendering&lt;/a&gt; with controls like &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/bb386454.aspx&#34;&gt;UpdatePanel&lt;/a&gt;. It gave me an awkward feeling but even Dino Esposito, who spent a whole chapter on this technique in his &lt;a href=&#34;http://www.amazon.com/Programming-Microsoft-ASP-NET-Dino-Esposito/dp/0735625271&#34;&gt;book&lt;/a&gt;, seems to &lt;a href=&#34;http://weblogs.asp.net/despos/archive/2007/09/19/partial-rendering-misses-ajax-architectural-points.aspx&#34;&gt;share&lt;/a&gt; that feeling.&lt;/p&gt;&#xA;&lt;p&gt;Page methods, public static methods that are decorated with the &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/system.web.services.webmethodattribute.aspx&#34;&gt;WebMethodAttribute&lt;/a&gt; declared on a &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/system.web.ui.page.aspx&#34;&gt;Page&lt;/a&gt; are exposed as a WebService method and return the result as &lt;a href=&#34;http://www.json.org/&#34;&gt;JSON&lt;/a&gt;. An easy solution but it comes with the cost that it does not offer much flexibility.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Programming Microsoft ASP.NET 3.5</title>
      <link>https://timvw.be/2008/12/14/programming-microsoft-asp.net-3.5/</link>
      <pubDate>Sun, 14 Dec 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/12/14/programming-microsoft-asp.net-3.5/</guid>
      <description>&lt;p&gt;Having heared only positive things about &lt;a href=&#34;http://weblogs.asp.net/despos/&#34;&gt;Dino Esposito&lt;/a&gt;&amp;rsquo;s way of writing i decided to read &lt;a href=&#34;http://www.amazon.com/Programming-Microsoft-ASP-NET-Dino-Esposito/dp/0735625271&#34;&gt;Programming Microsoft ASP.NET 3.5&lt;/a&gt;. The book is written in a way that invites you to read and experiment with the contents. It covered the essentials of ASP.NET programming but i did not have the feeling that it added much to what i had read in &lt;a href=&#34;http://www.amazon.com/Professional-ASP-NET-2-0-Programmer/dp/0764576100&#34;&gt;Professional ASP.NET 2.0&lt;/a&gt;. After a while i became annoyed with the numerous references to &lt;a href=&#34;http://www.amazon.com/gp/product/0735621772/sr=1-1/qid=1156801743/ref=sr_1_1/104-6313703-3867159?ie=UTF8&amp;amp;s=books&#34;&gt;Programming Microsoft ASP.NET 2.0 Applications: Advanced Topics&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Release It!: Design and Deploy Production-Ready Software</title>
      <link>https://timvw.be/2008/11/22/release-it-design-and-deploy-production-ready-software/</link>
      <pubDate>Sat, 22 Nov 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/11/22/release-it-design-and-deploy-production-ready-software/</guid>
      <description>&lt;p&gt;I really loved reading &lt;a href=&#34;http://www.pragprog.com/titles/tpp/the-pragmatic-programmer&#34;&gt;The Pragmatic Programmer: From Journeyman to Master&lt;/a&gt; from The Pragmatic Programmers so when i noticed that a couple of bloggers were recommending &lt;a href=&#34;http://www.amazon.com/Release-Production-Ready-Software-Pragmatic-Programmers/dp/0978739213&#34;&gt;Release It!: Design and Deploy Production-Ready Software&lt;/a&gt; i decided to read it too. This book covers what happens to an application after it has been deployed in production. I really appreciated the first chapters with anti-patterns and patterns. At the end of the book the author also touches the problem of dependencies between machines and deployed applications and briefly offers a management solution under the name OpsDb. All in all, this book made me conscient about a set of problems i would not think about otherwise.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Query a specific Google Calendar</title>
      <link>https://timvw.be/2008/10/22/query-a-specific-google-calendar/</link>
      <pubDate>Wed, 22 Oct 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/10/22/query-a-specific-google-calendar/</guid>
      <description>&lt;p&gt;Despite the multiple copies of the &lt;a href=&#34;http://code.google.com/apis/calendar/developers_guide_dotnet.html&#34;&gt;API Developer&amp;rsquo;s Guide: .NET&lt;/a&gt; i found i was unable to find how i should query a specific calendar (not the default). Anyway, it can be done by using the CalendarEntry.Content.BaseUri as the query uri. Here is an example&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;CalendarHelper&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; OwnedCalendarsUrl &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;http://www.google.com/calendar/feeds/default/owncalendars/full&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;readonly&lt;/span&gt; CalendarService svc&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; CalendarHelper&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; username&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; password&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;svc &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; CalendarService&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;demo&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;svc&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;setUserCredentials&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;username&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; password&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; IEnumerable&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;calendarEntry&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; FindOwnedCalendars&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;CalendarQuery query &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; CalendarQuery&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;OwnedCalendarsUrl&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;CalendarFeed result &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;svc&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Query&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;query&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;foreach&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;CalendarEntry entry &lt;span style=&#34;color:#cf222e&#34;&gt;in&lt;/span&gt; result&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Entries&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;yield&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; entry&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; CalendarEntry GetCalendar&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; name&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;from&lt;/span&gt; calendar &lt;span style=&#34;color:#cf222e&#34;&gt;in&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;FindOwnedCalendars&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;where&lt;/span&gt; calendar&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Title&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Text &lt;span style=&#34;color:#1f2328&#34;&gt;==&lt;/span&gt; name&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;select&lt;/span&gt; calendar&lt;span style=&#34;color:#1f2328&#34;&gt;).&lt;/span&gt;SingleOrDefault&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; IEnumerable&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;atomEntry&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; FindEvents&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;CalendarEntry calendar&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; DateTime begin&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; DateTime end&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;EventQuery myQuery &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; EventQuery&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;calendar&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Content&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;AbsoluteUri&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;myQuery&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;StartTime &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; begin&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;myQuery&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;EndTime &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; end&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;EventFeed result &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;svc&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Query&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;myQuery&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; i &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; i &lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt; result&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Entries&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Count&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;++&lt;/span&gt;i&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;yield&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; result&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Entries&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;i&lt;span style=&#34;color:#1f2328&#34;&gt;];&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; Main&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;CalendarHelper helper &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; CalendarHelper&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;user@gmail.com&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;xxx&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;DateTime begin &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; DateTime&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;2008&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;DateTime end&lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; DateTime&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;2009&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;12&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;31&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;IEnumerable&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;calendarEntry&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; calendars &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; helper&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;FindOwnedCalendars&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;foreach&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;CalendarEntry calendar &lt;span style=&#34;color:#cf222e&#34;&gt;in&lt;/span&gt; calendars&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteLine&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;calendar&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Title&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Text&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;IEnumerable&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;atomEntry&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; calendarEvents &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; helper&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;FindEvents&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;calendar&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; begin&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; end&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;foreach&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;AtomEntry calendarEvent &lt;span style=&#34;color:#cf222e&#34;&gt;in&lt;/span&gt; calendarEvents&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteLine&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;{0}: {1}&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; calendarEvent&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Updated&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; calendarEvent&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Title&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Text&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteLine&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Write&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;{0}Press any key to continue...&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; Environment&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;NewLine&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ReadKey&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Refactoring Application Environment (Part 2)</title>
      <link>https://timvw.be/2008/10/17/refactoring-application-environment-part-2/</link>
      <pubDate>Fri, 17 Oct 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/10/17/refactoring-application-environment-part-2/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://lucamilan.blogspot.com/&#34;&gt;Luca Milan&lt;/a&gt; notified me of a design issue. Until now the ApplicationEnvironment had an Instance property as following:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; ApplicationEnvironment Instance &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;get&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;...&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;A lot of flexibility can be added by extracting an interface IApplicationEnvironment and use that as return type for the property:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; IApplicationEnvironment Instance &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;get&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;...&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now that we have &lt;a href=&#34;http://www.codeplex.com/CommonServiceLocator&#34;&gt;Common Service Locator&lt;/a&gt; i have decided to completely remove the Instance property. Code that requires an instance of the IApplicationEnvironment will have to resolve it via the ServiceLocator:&lt;/p&gt;</description>
    </item>
    <item>
      <title>How does the controller know which action method to invoke?</title>
      <link>https://timvw.be/2008/10/15/how-does-the-controller-know-which-action-method-to-invoke/</link>
      <pubDate>Wed, 15 Oct 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/10/15/how-does-the-controller-know-which-action-method-to-invoke/</guid>
      <description>&lt;p&gt;Yesterday i attended another great &lt;a href=&#34;http://www.visug.be&#34;&gt;VISUG&lt;/a&gt; event on ASP.NET presented by &lt;a href=&#34;http://blog.maartenballiauw.be/&#34;&gt;Maarten Balliauw&lt;/a&gt;. He demonstrated a custom filter but did not dig into the mechanics of action method resolving. With the aid of of the ActionName attribute we can map different methods to the same action. The following methods will all map to the same &amp;ldquo;Detail&amp;rdquo; action&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; ActionResult Detail&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; productId&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;...&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; ActionResult Detail&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; productId&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; name&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;...&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[ActionName(&amp;#34;Detail&amp;#34;)]&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; ActionResult DisplayDetail&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; productId&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;...&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[ActionName(&amp;#34;Detail&amp;#34;)]&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; ActionResult ModifyDetail&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; productId&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; name&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;...&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;So how does the Controller know which method to invoke? The answer can be found in the ActionMethodSelector which tries to find the method as following&lt;/p&gt;</description>
    </item>
    <item>
      <title>Adaptive control behavior: LinkButton without javascript</title>
      <link>https://timvw.be/2008/10/14/adaptive-control-behavior-linkbutton-without-javascript/</link>
      <pubDate>Tue, 14 Oct 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/10/14/adaptive-control-behavior-linkbutton-without-javascript/</guid>
      <description>&lt;p&gt;&amp;lsquo;Experiment with &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/67276kc5.aspx&#34;&gt;Adaptive Control Behavior&lt;/a&gt;&amp;rsquo; has been an item on my TO-DO list for a very long time and this weekend i finally found some time to do exactly that. Because i hate it that a &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.linkbutton.aspx&#34;&gt;LinkButton&lt;/a&gt; renders as &lt;a href=&#34;javascript:__doPostBackxxx&#34;&gt; i decided to develop a &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/system.web.ui.adapters.controladapter.aspx&#34;&gt;ControlAdapter&lt;/a&gt; that makes the LinkButton work without JavaScript. While i was at it i also wrote adapters for the &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.loginstatus(VS.80).aspx&#34;&gt;LoginStatus&lt;/a&gt; and &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.login.aspx&#34;&gt;Login&lt;/a&gt; controls. Feel free to play with the &lt;a href=&#34;http://www.timvw.be/wp-content/code/csharp/AdaptiveRenderingDemo.zip&#34;&gt;Adaptive Rendering Demo&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Revisited the int and string ValueObject templates</title>
      <link>https://timvw.be/2008/10/13/revisited-the-int-and-string-valueobject-templates/</link>
      <pubDate>Mon, 13 Oct 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/10/13/revisited-the-int-and-string-valueobject-templates/</guid>
      <description>&lt;p&gt;After reading &lt;a href=&#34;http://blogs.msdn.com/bclteam/archive/2008/10/06/the-compare-contract-kim-hamilton.aspx&#34;&gt;The Compare Contract&lt;/a&gt; last week i realized that my &lt;a href=&#34;http://www.timvw.be/presenting-templates-for-int-and-string-valueobjects&#34;&gt;templates for int and string ValueObjects&lt;/a&gt; did not comply with the contract so i decided to add a unittest that reproduces the faulty behavior (and then corrected the implementation)&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[TestMethod]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; ShouldReturnPositiveWhenComparedWithNull&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;$&lt;/span&gt;classname&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;$&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;value&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; &lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;$&lt;/span&gt;classname&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;$&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Assert&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;IsTrue&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;value&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;CompareTo&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;null&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Anyway, feel free to download the corrected &lt;a href=&#34;http://www.timvw.be/wp-content/code/csharp/IntValueObject.zip&#34;&gt;IntValueObject&lt;/a&gt; and &lt;a href=&#34;http://www.timvw.be/wp-content/code/csharp/StringValueObject.zip&#34;&gt;StringValueObject&lt;/a&gt; templates.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Best Damn Windows Server 2003 Book Period</title>
      <link>https://timvw.be/2008/10/06/the-best-damn-windows-server-2003-book-period/</link>
      <pubDate>Mon, 06 Oct 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/10/06/the-best-damn-windows-server-2003-book-period/</guid>
      <description>&lt;p&gt;Last week i have read &lt;a href=&#34;http://www.amazon.com/Windows-Server-Period-Computer-Security/dp/1931836124&#34;&gt;The Best Damn Windows Server 2003 Book Period&lt;/a&gt;. Although the book contains some interesting guidance i became annoyed with the fact that the book is overloaded with screenshots. Without those screenshots this book would contain around 250 interesting pages.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Experimenting with NDepend</title>
      <link>https://timvw.be/2008/09/27/experimenting-with-ndepend/</link>
      <pubDate>Sat, 27 Sep 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/09/27/experimenting-with-ndepend/</guid>
      <description>&lt;p&gt;Google Reader found 122 posts in my &lt;a href=&#34;http://www.timvw.be/wp-links-opml.php&#34;&gt;blogroll&lt;/a&gt; about &lt;a href=&#34;http://www.ndepend.com&#34;&gt;NDepend&lt;/a&gt; so i happily accepted the professional license which &lt;a href=&#34;http://codebetter.com/blogs/patricksmacchia/&#34;&gt;Patrick Smacchia&lt;/a&gt; (thank you) offered me earlier this week. I quickly picked the assemblies from a project that has evolved over more than 5 years (.NET 1.0, 1.1 and 2.0) and the tool generated a screen loaded with data, but i found it difficult to extract any valuable information out of the statistics. Although i found zooming in the UI impressive, i was a bit disappointed.&lt;/p&gt;</description>
    </item>
    <item>
      <title>.NET System Management Services</title>
      <link>https://timvw.be/2008/09/26/.net-system-management-services/</link>
      <pubDate>Fri, 26 Sep 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/09/26/.net-system-management-services/</guid>
      <description>&lt;p&gt;Earlier this week i finished reading &lt;a href=&#34;http://www.amazon.com/System-Management-Services-Alexander-Golomshtok/dp/1590590589&#34;&gt;.NET System Management Services&lt;/a&gt;. Although the book was published back in 2003, it still contains a lot of useful information on using the classes in the &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/system.management.aspx&#34;&gt;System.Management&lt;/a&gt; namespace. I did not like the fact that the author really made the effort to explain each line of code in the book. On the other hand, the book contains a lot of useful tips that help with writing &lt;a href=&#34;http://en.wikipedia.org/wiki/Windows_Management_Instrumentation&#34;&gt;WMI&lt;/a&gt; queries, generating managed classes around WMI classes (and objects) and even applications that query &lt;a href=&#34;http://nl.wikipedia.org/wiki/Simple_Network_Management_Protocol&#34;&gt;SNMP&lt;/a&gt; via WMI. All in all, i can recommend the book if you are going to use the System.Management API.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Presenting templates for int and string ValueObjects</title>
      <link>https://timvw.be/2008/09/26/presenting-templates-for-int-and-string-valueobjects/</link>
      <pubDate>Fri, 26 Sep 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/09/26/presenting-templates-for-int-and-string-valueobjects/</guid>
      <description>&lt;p&gt;Most &lt;a href=&#34;http://domaindrivendesign.org/discussion/messageboardarchive/ValueObjects.html&#34;&gt;ValueObjects&lt;/a&gt; that i have implemented were wrappers around an int or a string. Apart from the domain specific rules, there is a lot of repetitive work in implementing operator overloads, IEquatable&lt;T&gt;, IComparable&lt;T&gt;, &amp;hellip; Thus i decided to create a couple of Item templates that generate this code (and related tests).&lt;/p&gt;&#xA;&lt;p&gt;Simply save &lt;a href=&#34;http://www.timvw.be/wp-content/code/csharp/IntValueObject.zip&#34;&gt;IntValueObject.zip&lt;/a&gt; and &lt;a href=&#34;http://www.timvw.be/wp-content/code/csharp/StringValueObject.zip&#34;&gt;StringValueObject.zip&lt;/a&gt; under %My Documents%\Visual Studio 2005\Templates\ItemTemplates and click on &amp;ldquo;Add New Item&amp;rdquo; in your project:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/images/template_add_new_item.gif&#34; alt=&#34;screenshot of add new item dialog in visual studio&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Why MockRepository does not implement IDisposable</title>
      <link>https://timvw.be/2008/09/26/why-mockrepository-does-not-implement-idisposable/</link>
      <pubDate>Fri, 26 Sep 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/09/26/why-mockrepository-does-not-implement-idisposable/</guid>
      <description>&lt;p&gt;Earlier this week i was experimenting with &lt;a href=&#34;http://ayende.com/projects/rhino-mocks.aspx&#34;&gt;Rhino Mocks&lt;/a&gt; and i was wondering why the MockRepository does not implement &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/system.idisposable.aspx&#34;&gt;IDisposable&lt;/a&gt; unlike most other mocking frameworks for .NET&lt;/a&gt;. After a bit of searching i found out that (&lt;a href=&#34;http://groups.google.com/group/RhinoMocks/browse_thread/thread/c1a89f58d512d03e/48ca85746276c97b?lnk=gst&amp;amp;q=idisposable+mockrepository&amp;amp;pli=1&#34;&gt;here&lt;/a&gt;) originally the MockRepository did implement the interface, but that the implementation was removed because it is can be painful (hiding the original exception) when unexpected exceptions are thrown.&lt;/p&gt;&#xA;&lt;p&gt;I really like the API. Here is a simple example and notice that i did not have to provide the method name (as in the string &amp;ldquo;GetTime&amp;rdquo;) for the excepted calls.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Refactoring ApplicationEnvironment</title>
      <link>https://timvw.be/2008/09/23/refactoring-applicationenvironment/</link>
      <pubDate>Tue, 23 Sep 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/09/23/refactoring-applicationenvironment/</guid>
      <description>&lt;p&gt;Yesterday i blogged about an &lt;a href=&#34;http://www.timvw.be/presenting-applicationenvironment/&#34;&gt;ApplicationEnvironment&lt;/a&gt; which had a dependency on the application configuration file. With my &lt;a href=&#34;http://www.timvw.be/presenting-configurationfilesession/&#34;&gt;ConfigurationFileSession&lt;/a&gt; i was able to test the implementation despite that dependency. Today i modified the design a little so that i do not require the ConfigurationFileSession hack anymore.&lt;/p&gt;&#xA;&lt;p&gt;First i added an internal constructor as following&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;internal&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;protected&lt;/span&gt; ApplicationEnvironment&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;DateTime instanceEpoch&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; DateTime applicationEpoch&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;instanceEpoch &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; instanceEpoch&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;applicationEpoch &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; applicationEpoch&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Then i made the internals visible to the test project&lt;/p&gt;</description>
    </item>
    <item>
      <title>Refactoring EffectivityManager</title>
      <link>https://timvw.be/2008/09/23/refactoring-effectivitymanager/</link>
      <pubDate>Tue, 23 Sep 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/09/23/refactoring-effectivitymanager/</guid>
      <description>&lt;p&gt;A while ago i presented the &lt;a href=&#34;http://www.timvw.be/presenting-a-generic-effectivitymanager/&#34;&gt;EffectivityManager&lt;/a&gt;. Having used this class for a while i have decided to rename it to Temporal&lt;T&gt;. The implementation of IList&lt;T&gt; is not required anymore because a user is typically only interested in a specific effectivity, not the evolution of the effectivities.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;interface&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;ITemporal&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; Modify&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;T element&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; DateTime &lt;span style=&#34;color:#cf222e&#34;&gt;from&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;IEffectivity&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; GetSnapshot&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;DateTime validityDate&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;bool&lt;/span&gt; TryGetSnapshot&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;DateTime validityDate&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;out&lt;/span&gt; IEffectivity&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; effectivity&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In the implementation i have added a constructor that accepts a &lt;a href=&#34;http://www.timvw.be/presenting-a-generic-discreterange/&#34;&gt;DiscreteValuesGenerator&lt;DateTime&gt;&lt;/a&gt; which makes it possible to create Periods with a resolution of a day instead of seconds.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Presenting ApplicationEnvironment</title>
      <link>https://timvw.be/2008/09/22/presenting-applicationenvironment/</link>
      <pubDate>Mon, 22 Sep 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/09/22/presenting-applicationenvironment/</guid>
      <description>&lt;p&gt;Imagine we are an ice cream vendor. During summer months our available capacity is twice as high as in the rest of the year. In code this problem looks like the following&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; AvailableCapacity&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;get&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;DateTime now &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; DateTime&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;UtcNow&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; DateTime&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;now&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Year&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;6&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;=&lt;/span&gt; now &lt;span style=&#34;color:#1f2328&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; now &lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; DateTime&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;now&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Year&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;9&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;10000&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;else&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;5000&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This code is pretty difficult to test because it depends on DateTime.UtcNow. In order to get control over that dependency i have defined an ApplicationEnvironment and rewritten the code as following&lt;/p&gt;</description>
    </item>
    <item>
      <title>Presenting ConfigurationFileSession</title>
      <link>https://timvw.be/2008/09/22/presenting-configurationfilesession/</link>
      <pubDate>Mon, 22 Sep 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/09/22/presenting-configurationfilesession/</guid>
      <description>&lt;p&gt;Here is a little class that allows you to use different configuration files. I find it extremely useful for tests where i want to mock the values that would be retrieved via the &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.aspx&#34;&gt;ConfigurationManager&lt;/a&gt;. Here are a couple of examples how it can be used&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[TestMethod]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; ShouldUseSystemTimeWhenNoValuesAreProvided&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;using&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; ConfigurationFileSession&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;WithoutDateTimeManipulation.config&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;ApplicationEnvironment&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Instance&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Refresh&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;DateTime now &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; DateTime&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;UtcNow&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;TimeSpan allowedDifference &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; TimeSpan&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;FromSeconds&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;TimeSpan actualDifference &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; ApplicationEnvironment&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Instance&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;CurrentDateTime &lt;span style=&#34;color:#1f2328&#34;&gt;--&lt;/span&gt; configurationNow&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;Assert&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;IsTrue&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;actualDifference &lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt; allowedDifference&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;&#x9;&#x9;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[TestMethod]&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; ShouldUseValuesAsProvided&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;using&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; ConfigurationFileSession&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;WithDateTimeManipulation.config&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;))&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;ApplicationEnvironment&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Instance&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Refresh&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;DateTime now &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; DateTime&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;2000&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;TimeSpan allowedDifference &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; TimeSpan&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;FromSeconds&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;TimeSpan actualDifference &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; ApplicationEnvironment&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Instance&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;CurrentDateTime &lt;span style=&#34;color:#1f2328&#34;&gt;-&lt;/span&gt; configurationNow&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;Assert&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;IsTrue&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;actualDifference &lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt; allowedDifference&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Feel free to download the code from &lt;a href=&#34;http://www.codeplex.com/BeTimvwFramework&#34;&gt;BeTimvwFramework&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Visual Studio 2008 (SP1) crashes when opening ViewPage in designer</title>
      <link>https://timvw.be/2008/09/16/visual-studio-2008-sp1-crashes-when-opening-viewpage-in-designer/</link>
      <pubDate>Tue, 16 Sep 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/09/16/visual-studio-2008-sp1-crashes-when-opening-viewpage-in-designer/</guid>
      <description>&lt;p&gt;Visual Studio 2008 (SP1) crashed every time i tried to open a ViewPage with the Web Form Editor (designer). Kudos go to eniac who &lt;a href=&#34;http://haacked.com/archive/2008/09/05/mvcfutures-and-asp.net-mvc-beta.aspx&#34;&gt;suggested&lt;/a&gt; the removal of the &lt;a href=&#34;http://code.msdn.microsoft.com/PowerCommands&#34;&gt;Power Commands&lt;/a&gt; add-in. This made the crashes disappear.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Presenting a couple of custom MarkupExtensions</title>
      <link>https://timvw.be/2008/09/10/presenting-a-couple-of-custom-markupextensions/</link>
      <pubDate>Wed, 10 Sep 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/09/10/presenting-a-couple-of-custom-markupextensions/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://en.wikipedia.org/wiki/Xaml&#34;&gt;XAML&lt;/a&gt; provides us a way to declare objects with xml. Because i don&amp;rsquo;t want to clutter my domain classes with attributes like &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/system.componentmodel.typeconverterattribute.aspx&#34;&gt;TypeConverterAttribute&lt;/a&gt;, i needed a different approach to manipulate the parsing. This is where custom &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/system.windows.markup.markupextension.aspx&#34;&gt;MarkupExtension&lt;/a&gt;s come to the rescue. Here is an example where i use the &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/ms752340.aspx&#34;&gt;x:Array MarkupExtension&lt;/a&gt; in order to load a list of Lines into my IList&lt;string&gt; Lines property&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&amp;lt;?xml version=&amp;#34;1.0&amp;#34; encoding=&amp;#34;utf-8&amp;#34; ?&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;d:Address&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;xmlns:x=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;http://schemas.microsoft.com/winfx/2006/xaml&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;xmlns:s=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;clr-namespace:System;assembly=mscorlib&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;xmlns:d=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;clr-namespace:XamlDemo.Domain;assembly=XamlDemo&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;xmlns:e=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;clr-namespace:XamlDemo.Infrastructure.Extensions;assembly=XamlDemo&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;d:Address.Lines&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;x:Array&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Type=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;s:String&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;s:String&amp;gt;&lt;/span&gt;Ikaroslaan 21&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/s:String&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;s:String&amp;gt;&lt;/span&gt;B-1930 Zaventem&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/s:String&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/x:Array&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/d:Address.Lines&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/d:Address&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;By default all XAML documents have all the data embedded. Sometimes this is undesirable so i decided to define External and ExternalList MarkupExtensions that allow us to specify that the resource is elsewhere available. Here is an example of Jeff who has one address in a different file, Domain\Address\Leuven\Brusselsestraat_400.xaml&lt;/p&gt;</description>
    </item>
    <item>
      <title>Distributed Data Applications with ASP.NET, Second Edition</title>
      <link>https://timvw.be/2008/09/06/distributed-data-applications-with-asp.net-second-edition/</link>
      <pubDate>Sat, 06 Sep 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/09/06/distributed-data-applications-with-asp.net-second-edition/</guid>
      <description>&lt;p&gt;Last week i finally got round to reading &lt;a href=&#34;http://www.amazon.com/gp/product/1590593189/&#34;&gt;Distributed Data Applications with ASP.NET, Second Edition&lt;/a&gt;. The book was written in 2004 and handles technologies like &lt;a href=&#34;http://en.wikipedia.org/wiki/HTML_Application&#34;&gt;HTML Applications&lt;/a&gt; and &lt;a href=&#34;http://en.wikipedia.org/wiki/XMLHttpRequest&#34;&gt;XMLHttpRequest&lt;/a&gt;. Although the book is loaded with code, it also contains plenty of reasoning behind the choice of one approach over another which made me appreciate the book. Definitely worth the 1.5 euros i paid for it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>More on choosing names for tests</title>
      <link>https://timvw.be/2008/09/06/more-on-choosing-names-for-tests/</link>
      <pubDate>Sat, 06 Sep 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/09/06/more-on-choosing-names-for-tests/</guid>
      <description>&lt;p&gt;Choosing names with the &lt;a href=&#34;http://www.timvw.be/experimenting-with-naming-conventions-for-unit-tests/&#34;&gt;technique i presented yesterday&lt;/a&gt; leads to at least one class per method. To tackle that explosion of classes i have made two decisions:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Add a folder for each tested class, this way all the When&lt;MethodName&gt;ing classes are grouped.&lt;/li&gt;&#xA;&lt;li&gt;Create a single WhenUsing&lt;ClassName&gt; class to group simple test methods.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;Here is a screenshot to clarify the changes:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/images/unittest_naming_conventions2.gif&#34; alt=&#34;screenshot of visual studio displaying new approach for test naming&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Presenting WindowsIdentityHelper</title>
      <link>https://timvw.be/2008/09/06/presenting-windowsidentityhelper/</link>
      <pubDate>Sat, 06 Sep 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/09/06/presenting-windowsidentityhelper/</guid>
      <description>&lt;p&gt;One of the difficulties of using the &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/system.security.principal.windowsidentity.aspx&#34;&gt;WindowsIdentity&lt;/a&gt; class is the fact that it requires a handle (&lt;a href=&#34;http://msdn.microsoft.com/en-us/library/system.intptr.aspx&#34;&gt;IntPtr&lt;/a&gt;) to a Windows Security Token. Using the &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/aa378184(VS.85).aspx&#34;&gt;LogonUser&lt;/a&gt; functionality we can get a hold of such a handle&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[DllImport(Advapi32File, CharSet = DefaultCharSet, SetLastError = DefaultSetLastError)]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;extern&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;bool&lt;/span&gt; LogonUser&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; &lt;span style=&#34;color:#57606a&#34;&gt;/* other parameters */&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;out&lt;/span&gt; IntPtr userTokenHandle&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The easiest way to avoid memory leaks is to implement a custom &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.safehandle.aspx&#34;&gt;SafeHandle&lt;/a&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;SafeTokenHandle&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt; SafeHandleZeroOrMinusOneIsInvalid&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;protected&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;internal&lt;/span&gt; SafeTokenHandle&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;base&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;protected&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;override&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;bool&lt;/span&gt; ReleaseHandle&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(!&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;IsInvalid&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; NativeMethods&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;CloseHandle&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;handle&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;With that SafeHandle in place we can change the signature to&lt;/p&gt;</description>
    </item>
    <item>
      <title>Experimenting with naming conventions for unit tests</title>
      <link>https://timvw.be/2008/09/05/experimenting-with-naming-conventions-for-unit-tests/</link>
      <pubDate>Fri, 05 Sep 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/09/05/experimenting-with-naming-conventions-for-unit-tests/</guid>
      <description>&lt;p&gt;To be honest, i never really took the time to think about the names of my unit tests. Although i noticed posts like &lt;a href=&#34;http://codebetter.com/blogs/david_laribee/archive/2007/12/17/approaching-bdd.aspx&#34;&gt;this one&lt;/a&gt; and &lt;a href=&#34;http://elegantcode.com/2008/05/01/thanks-to-bdd/&#34;&gt;this one&lt;/a&gt; they never inspired me to think about it. Earlier this week, &lt;a href=&#34;http://www.goeleven.com&#34;&gt;Yves Goeleven&lt;/a&gt; demonstrated the power of using &lt;a href=&#34;http://en.wikipedia.org/wiki/Behavior_driven_development&#34;&gt;BDD&lt;/a&gt; inspired naming conventions and i was immediately sold. I applied the style on a couple of tests in &lt;a href=&#34;http://www.codeplex.com/BeTimvwFramework&#34;&gt;BeTimvwFramework&lt;/a&gt; and i must say that i like the resulting tests:&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Microsoft Certified Professional Developer: Enterprise Applications Developer on Visual Studio 2005</title>
      <link>https://timvw.be/2008/09/05/the-microsoft-certified-professional-developer-enterprise-applications-developer-on-visual-studio-2005/</link>
      <pubDate>Fri, 05 Sep 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/09/05/the-microsoft-certified-professional-developer-enterprise-applications-developer-on-visual-studio-2005/</guid>
      <description>&lt;p&gt;Not that anyone should care, apart from my manager, i &lt;a href=&#34;http://www.timvw.be/mcts/&#34;&gt;posted&lt;/a&gt; that the only remaining exam was &lt;a href=&#34;http://www.microsoft.com/learning/en/us/exams/70-549.mspx&#34;&gt;070-549&lt;/a&gt; PRO: Designing and Developing Enterprise Applications by Using the Microsoft .NET Framework a while ago. And this morning i passed that exam 🙂 This means that i have earned the &amp;ldquo;&lt;a href=&#34;http://www.microsoft.com/learning/mcp/mcpd/entapp/default.mspx&#34;&gt;MCPD: Enterprise Applications Developer&lt;/a&gt;&amp;rdquo; certificate that demonstrates that i have the comprehensive skills required to build n-tier solutions that target both Web and client user experiences.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Presenting AssemblyTypePicker</title>
      <link>https://timvw.be/2008/09/01/presenting-assemblytypepicker/</link>
      <pubDate>Mon, 01 Sep 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/09/01/presenting-assemblytypepicker/</guid>
      <description>&lt;p&gt;I really like the way the &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/exy1facf(VS.80).aspx&#34;&gt;Object Browser&lt;/a&gt; makes the types in an assembly visible. Because i have a couple of programs that require a given type as input, i have decided to add a TypeTree control to &lt;a href=&#34;http://www.codeplex.com/BeTimvwFramework&#34;&gt;BeTimvwFramework&lt;/a&gt; that mimicks the Object Browser. Here are a couple of screenshots of the control in a demo application that allows the user to generate interfaces and wrapper classes based on a selected type:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Presenting EventHandlerHelper</title>
      <link>https://timvw.be/2008/09/01/presenting-eventhandlerhelper/</link>
      <pubDate>Mon, 01 Sep 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/09/01/presenting-eventhandlerhelper/</guid>
      <description>&lt;p&gt;Being bored of writing code to raise an event, i have added an EventHandlerHelper to &lt;a href=&#34;http://www.codeplex.com/BeTimvwFramework&#34;&gt;BeTimvwFramework&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;EventHandlerHelper&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;&#x9;[MethodImpl(MethodImplOptions.NoInlining)]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; Raise&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;(&lt;/span&gt;EventHandler&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; handler&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;object&lt;/span&gt; sender&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; T e&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;where&lt;/span&gt; T &lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt; EventArgs&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;handler &lt;span style=&#34;color:#1f2328&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;null&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;handler&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;sender&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; e&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Presenting ItemEventArgs&lt;T&gt;</title>
      <link>https://timvw.be/2008/09/01/presenting-itemeventargst/</link>
      <pubDate>Mon, 01 Sep 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/09/01/presenting-itemeventargst/</guid>
      <description>&lt;p&gt;Because i believe in the &lt;a href=&#34;http://en.wikipedia.org/wiki/Don%27t_repeat_yourself&#34;&gt;DRY&lt;/a&gt; principle i decided to add a generic ItemEventArgs class to &lt;a href=&#34;http://www.codeplex.com/BeTimvwFramework&#34;&gt;BeTimvwFramework&lt;/a&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;ItemEventArgs&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt; EventArgs&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; T item&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; ItemEventArgs&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;T item&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;item &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; item&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; T Item&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;get&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;item&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;set&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;item &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;value&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Presenting OneTimePasswordMembershipProvider</title>
      <link>https://timvw.be/2008/08/29/presenting-onetimepasswordmembershipprovider/</link>
      <pubDate>Fri, 29 Aug 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/08/29/presenting-onetimepasswordmembershipprovider/</guid>
      <description>&lt;p&gt;What good is a &lt;a href=&#34;http://www.timvw.be/presenting-timeotpclient/&#34;&gt;TimeOTP&lt;/a&gt; client if you don&amp;rsquo;t have anything to use it with? Last week i have implemented a &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/system.web.security.membershipprovider.aspx&#34;&gt;MembershipProvider&lt;/a&gt; that uses &lt;a href=&#34;http://www.timvw.be/presenting-hmac-based-otp-and-time-based-otp/&#34;&gt;Time-based One-Time Password&lt;/a&gt; to validate the user credentials. Basically, it is a wrapper around an existing MembershipProvider, you get to choose which one via the providerType attribute in the configuration, and requires that it can access the password of users. Here is an example configuration that relies on the SqlMembershipProvider&lt;/p&gt;</description>
    </item>
    <item>
      <title>Presenting TimeOTPClient</title>
      <link>https://timvw.be/2008/08/23/presenting-timeotpclient/</link>
      <pubDate>Sat, 23 Aug 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/08/23/presenting-timeotpclient/</guid>
      <description>&lt;p&gt;Because most people have their java enabled mobile phone with them, and I did not want to buy an expensive token generator I decided to write a &lt;a href=&#34;http://en.wikipedia.org/wiki/MIDlet&#34;&gt;MIDlet&lt;/a&gt; that can generate passwords as specified in the &lt;a href=&#34;http://www.ietf.org/internet-drafts/draft-mraihi-totp-timebased-00.txt&#34;&gt;TOTP&lt;/a&gt; algorithm. This project is build with &lt;a href=&#34;http://java.sun.com/products/sjwtoolkit&#34;&gt;Sun Java Wireless Toolkit for CLDC&lt;/a&gt;. Feel free to download the sources, &lt;a href=&#34;http://www.timvw.be/wp-content/code/java/TimeOTPClient.zip&#34;&gt;TimeOTPClient.zip&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/images/timeotpclient_inputsecret.gif&#34; alt=&#34;screenshot of TimeOTPClient input area&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/images/timeotpclient_generated.gif&#34; alt=&#34;screenshot of TimeOTPClient generated password area&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Presenting HMAC-Based OTP and Time-Based OTP</title>
      <link>https://timvw.be/2008/08/22/presenting-hmac-based-otp-and-time-based-otp/</link>
      <pubDate>Fri, 22 Aug 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/08/22/presenting-hmac-based-otp-and-time-based-otp/</guid>
      <description>&lt;p&gt;I could not find a .NET implementation of the HMAC-Based One Time Password (HOTP) algorithm as specified in &lt;a href=&#34;ftp://ftp.rfc-editor.org/in-notes/rfc4226.txt&#34;&gt;RFC4226&lt;/a&gt; so i decided to write one myself. Because the &lt;a href=&#34;http://www.ietf.org/internet-drafts/draft-mraihi-totp-timebased-00.txt&#34;&gt;Time-Based OTP (TOTP)&lt;/a&gt; algorithm is an application of HOTP, more specifically: TOTP = HOTP(K, T) with T = (Current Unix time &amp;ndash; T0) / Timestep, i have implemented that algorithm too.&lt;/p&gt;&#xA;&lt;p&gt;You can find both Be.Timvw.Framework.Security.HmacOneTimePassword and Be.Timvw.Framework.Security.TimeOneTimePassword in the &lt;a href=&#34;http://www.codeplex.com/BeTimvwFramework&#34;&gt;BeTimvwFramework&lt;/a&gt;. For more information about authentication i would recommend the &lt;a href=&#34;http://www.openauthentication.org/specifications&#34;&gt;specifications and technicals resources&lt;/a&gt; at the &lt;a href=&#34;http://www.openauthentication.org/&#34;&gt;OATH&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Presenting TimeSpanHelper</title>
      <link>https://timvw.be/2008/08/20/presenting-timespanhelper/</link>
      <pubDate>Wed, 20 Aug 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/08/20/presenting-timespanhelper/</guid>
      <description>&lt;p&gt;A &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/system.timespan.aspx&#34;&gt;TimeSpan&lt;/a&gt; is a structure that represents a time interval or a duration. To make the everything as clear as possible, a well designed system should not only know the quantity, but also the unit of that quantity. In order to create a TimeSpan that represents the right value, you will probably use one of the &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/system.timespan_methods.aspx&#34;&gt;FromXXX (Hours, Days, Minutes, Seconds) methods&lt;/a&gt; as following&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;double&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;value&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; unit &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Day&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;TimeSpan actual&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;unit &lt;span style=&#34;color:#1f2328&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Day&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;actual &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; TimeSpan&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;FromDays&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;value&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;else&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;unit &lt;span style=&#34;color:#1f2328&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Hour&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;actual &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; TimeSpan&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;FromHours&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;value&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;// more else if statements...&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;After a while you get bored of writing that same if-else (or switch) construct and you end up wishing for something like&lt;/p&gt;</description>
    </item>
    <item>
      <title>.NET 2.0 Wrox Box: Professional ASP.NET 2.0, Professional C# 2005, Professional .NET 2.0 Generics, and Professional .NET Framework 2.0</title>
      <link>https://timvw.be/2008/08/16/.net-2.0-wrox-box-professional-asp.net-2.0-professional-c%23-2005-professional-.net-2.0-generics-and-professional-.net-framework-2.0/</link>
      <pubDate>Sat, 16 Aug 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/08/16/.net-2.0-wrox-box-professional-asp.net-2.0-professional-c%23-2005-professional-.net-2.0-generics-and-professional-.net-framework-2.0/</guid>
      <description>&lt;p&gt;The books in the &lt;a href=&#34;http://www.amazon.com/NET-2-0-Wrox-Box-Professional/dp/0470048409&#34;&gt;.NET 2.0 Wrox Box: Professional ASP.NET 2.0, Professional C# 2005, Professional .NET 2.0 Generics, and Professional .NET Framework 2.0&lt;/a&gt; were the first books i bought as a .NET developer. I can recommend each and every book in that box.&lt;/p&gt;</description>
    </item>
    <item>
      <title>CLR via C#</title>
      <link>https://timvw.be/2008/08/16/clr-via-c/</link>
      <pubDate>Sat, 16 Aug 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/08/16/clr-via-c/</guid>
      <description>&lt;p&gt;I find that &lt;a href=&#34;http://www.amazon.com/CLR-via-Second-Pro-Developer/dp/0735621632&#34;&gt;CLR via C#, Second Edition&lt;/a&gt; is another book that every .NET developer should read at least twice. (It&amp;rsquo;s sitting on my bookshelf waiting for that second reading.)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Deploying .NET Applications: Learning MSBuild and ClickOnce</title>
      <link>https://timvw.be/2008/08/16/deploying-.net-applications-learning-msbuild-and-clickonce/</link>
      <pubDate>Sat, 16 Aug 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/08/16/deploying-.net-applications-learning-msbuild-and-clickonce/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.amazon.com/Deploying-NET-Applications-Learning-ClickOnce/dp/1590596528&#34;&gt;Deploying .NET Applications: Learning MSBuild and ClickOnce&lt;/a&gt; is a book that will help you grasp the core concepts of MSBuild. This book is a great headstart if you&amp;rsquo;re starting out with MSBuild and find the documentation confusing. The second part of the book, about clickonce, was less interesting. I&amp;rsquo;m still waiting for &lt;a href=&#34;http://www.sedodream.com/&#34;&gt;Sayed Ibrahim Hashimi&lt;/a&gt; to release a book that only convers MSBuild.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Domain-Driven Design: Tackling Complexity in the Heart of Software</title>
      <link>https://timvw.be/2008/08/16/domain-driven-design-tackling-complexity-in-the-heart-of-software/</link>
      <pubDate>Sat, 16 Aug 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/08/16/domain-driven-design-tackling-complexity-in-the-heart-of-software/</guid>
      <description>&lt;p&gt;A couple of weeks ago i&amp;rsquo;ve re-read &lt;a href=&#34;http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215&#34;&gt;Domain-Driven Design: Tackling Complexity in the Heart of Software&lt;/a&gt;. Just like &lt;a href=&#34;http://www.amazon.com/Design-Patterns-Object-Oriented-Addison-Wesley-Professional/dp/0201633612&#34;&gt;Design Patterns: Elements of Reusable Object-Oriented Software&lt;/a&gt; and &lt;a href=&#34;http://www.amazon.com/Enterprise-Application-Architecture-Addison-Wesley-Signature/dp/0321127420&#34;&gt;Patterns of Enterprise Application Architecture&lt;/a&gt; this is a book that i consider to b e required literature for every developer.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Foundations of WF: an Introduction to Windows Workflow Foundation</title>
      <link>https://timvw.be/2008/08/16/foundations-of-wf-an-introduction-to-windows-workflow-foundation/</link>
      <pubDate>Sat, 16 Aug 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/08/16/foundations-of-wf-an-introduction-to-windows-workflow-foundation/</guid>
      <description>&lt;p&gt;Last month i found out that &lt;a href=&#34;http://www.amazon.com/Foundations-WF-Introduction-Workflow-Foundation/dp/1590597184&#34;&gt;Foundations of WF: an Introduction to Windows Workflow Foundation&lt;/a&gt; is a little book that does nothing more than guide you through visual studio wizards. Since i was expecting a book that would introduce me to the concepts and architectural decisions of wf i was disappointed. Not recommended.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Professional Visual Studio 2005 Team System</title>
      <link>https://timvw.be/2008/08/16/professional-visual-studio-2005-team-system/</link>
      <pubDate>Sat, 16 Aug 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/08/16/professional-visual-studio-2005-team-system/</guid>
      <description>&lt;p&gt;I received my copy of &lt;a href=&#34;http://www.amazon.com/Professional-Visual-Studio-System-Programmer/dp/0764584367&#34;&gt;Professional Visual Studio 2005 Team System&lt;/a&gt; at a &lt;a href=&#34;http://www.visug.be&#34;&gt;Visug&lt;/a&gt; event but i can&amp;rsquo;t say that i found it really interesting. It is simply impossible to cover everything on Team System in one book.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Programming WCF Services</title>
      <link>https://timvw.be/2008/08/16/programming-wcf-services/</link>
      <pubDate>Sat, 16 Aug 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/08/16/programming-wcf-services/</guid>
      <description>&lt;p&gt;Having seen Juval Loway deliver a session on WCF for the x-th time this year i found it was time to read &lt;a href=&#34;http://www.amazon.com/Programming-WCF-Services-Juval-Lowy/dp/0596526997&#34;&gt;Programming WCF Services&lt;/a&gt;. This book is a reference work loaded with architectural advice.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Art of Agile Development</title>
      <link>https://timvw.be/2008/08/16/the-art-of-agile-development/</link>
      <pubDate>Sat, 16 Aug 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/08/16/the-art-of-agile-development/</guid>
      <description>&lt;p&gt;A couple of months ago i&amp;rsquo;ve read &lt;a href=&#34;http://www.amazon.com/Art-Agile-Development-James-Shore/dp/0596527675/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1218864880&amp;amp;sr=1-1&#34;&gt;The Art of Agile Development&lt;/a&gt;. Like most books on agile, this book uses the &lt;a href=&#34;http://en.wikipedia.org/wiki/Extreme_programming&#34;&gt;XP&lt;/a&gt; methodology to provide guidance for agile development. I especially liked the last chapter, seek technical excellence, where the authors remind the reader that what ultimately matters is success and that the practices, principles and values are merely guides along the way.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The never ending race</title>
      <link>https://timvw.be/2008/08/16/the-never-ending-race/</link>
      <pubDate>Sat, 16 Aug 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/08/16/the-never-ending-race/</guid>
      <description>&lt;p&gt;You are probably wondering what all these short book reviews are all about. A little longer than two years ago i graduated and became a passionate .NET developer. During these two years i have learned quite a lot (only to find out that there is so much more out there that i know nothing about). Under &lt;a href=&#34;http://www.timvw.be/category/book-reviews/&#34;&gt;Book reviews&lt;/a&gt; you can find a list of books that have found a place on my bookshelf the last two years. Despite the reading of numerous e-books, articles and blog posts combined with a good portion of experiments i still have the feeling that i have got some catching up to do. Sigh. (Luckily enough i do realize that this is a feeling that will never go away when you have a job in information technology.)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Presenting UriHelper</title>
      <link>https://timvw.be/2008/08/09/presenting-urihelper/</link>
      <pubDate>Sat, 09 Aug 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/08/09/presenting-urihelper/</guid>
      <description>&lt;p&gt;Adding parameters to an &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/system.uri.aspx&#34;&gt;Uri&lt;/a&gt; is an example where my &lt;a href=&#34;http://www.timvw.be/presenting-namevaluecollectionhelper/&#34;&gt;NameValueCollectionHelper&lt;/a&gt; comes in handy. Although &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/system.uritemplate.aspx&#34;&gt;UriTemplate&lt;/a&gt; allows us to bind parameters, it doesn&amp;rsquo;t really support add/remove/fail on duplicate parameters. Here is an example&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[TestMethod]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; TestAddParametersReplaceWithReplaceOfExistingParameters&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Uri originalUri &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; Uri&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;http://www.example.com/path/?key1=val1&amp;amp;key2=val2#abcd&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;NameValueCollection parameters &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; NameValueCollection&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;parameters&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;key1&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;newval&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;parameters&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;key3&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;val3&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Uri expected &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; Uri&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;http://www.example.com/path/?key1=newval&amp;amp;key2=val2&amp;amp;key3=val3#abcd&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Uri actual &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; UriHelper&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;AddParameters&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;originalUri&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; parameters&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; DuplicateKeyBehavior&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Replace&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Assert&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;AreEqual&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;expected&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; actual&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Once again, source of this class can be found at &lt;a href=&#34;http://www.codeplex.com/BeTimvwFramework&#34;&gt;BeTimvwFramework&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Pro ASP.NET 2.0 Website Programming</title>
      <link>https://timvw.be/2008/08/09/pro-asp.net-2.0-website-programming/</link>
      <pubDate>Sat, 09 Aug 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/08/09/pro-asp.net-2.0-website-programming/</guid>
      <description>&lt;p&gt;A couple of weeks ago i&amp;rsquo;ve read &lt;a href=&#34;http://www.amazon.com/Pro-ASP-NET-2-0-Website-Programming/dp/1590595467&#34;&gt;Pro ASP.NET 2.0 Website Programming&lt;/a&gt;. The book contains a couple of nice ideas. I really appreciated the recommendation to use parameter binding when you manually compose queries. My biggest disappointment lies in the fact that the book doesn&amp;rsquo;t practice what it preaches. Many code samples use a stringbuilder to generate sql queriers 🙁&lt;/p&gt;</description>
    </item>
    <item>
      <title>Presenting NameValueCollectionHelper</title>
      <link>https://timvw.be/2008/08/08/presenting-namevaluecollectionhelper/</link>
      <pubDate>Fri, 08 Aug 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/08/08/presenting-namevaluecollectionhelper/</guid>
      <description>&lt;p&gt;Here are a couple functions that i find extremely useful when i&amp;rsquo;m working with a &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/system.collections.specialized.namevaluecollection.aspx&#34;&gt;NameValueCollection&lt;/a&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;NameValueCollectionHelper&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; AddOrIgnoreOnDuplicateKey&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;NameValueCollection collection&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; NameValueCollection nameValuesToAdd&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; AddOrReplaceOnDuplicateKey&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;NameValueCollection collection&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; NameValueCollection nameValuesToAdd&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; AddOrCombineOnDuplicateKey&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;NameValueCollection collection&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; NameValueCollection nameValuesToAdd&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; AddOrFailOnDuplicateKey&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;NameValueCollection collection&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; NameValueCollection nameValuesToAdd&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;All these methods provide a specific scenario of the more generic Add operation&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;NameValueCollectionHelper&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; Dictionary&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;duplicateKeyBehavior&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; Action&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;nameValueCollection&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; NameValueCollection&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt; duplicateKeyBehaviors&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; NameValueCollectionHelper&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;duplicateKeyBehaviors &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; Dictionary&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;duplicateKeyBehavior&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; Action&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;nameValueCollection&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; NameValueCollection&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&amp;gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;duplicateKeyBehaviors&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;DuplicateKeyBehavior&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Ignore&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; NameValueCollectionHelper&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;AddOrIgnoreOnDuplicateKey&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;duplicateKeyBehaviors&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;DuplicateKeyBehavior&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Replace&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; NameValueCollectionHelper&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;AddOrReplaceOnDuplicateKey&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;duplicateKeyBehaviors&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;DuplicateKeyBehavior&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Combine&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; NameValueCollectionHelper&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;AddOrCombineOnDuplicateKey&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;duplicateKeyBehaviors&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;DuplicateKeyBehavior&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Fail&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; NameValueCollectionHelper&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;AddOrFailOnDuplicateKey&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;NameValueCollection collection&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; NameValueCollection nameValuesToAdd&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; DuplicateKeyBehavior duplicateKeyBehavior&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;duplicateKeyBehaviors&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;duplicateKeyBehavior&lt;span style=&#34;color:#1f2328&#34;&gt;](&lt;/span&gt;collection&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; nameValuesToAdd&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You should already know that the source is available at &lt;a href=&#34;http://www.codeplex.com/BeTimvwFramework&#34;&gt;BeTimvwFramework&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Presenting EnumerableHelper</title>
      <link>https://timvw.be/2008/08/06/presenting-enumerablehelper/</link>
      <pubDate>Wed, 06 Aug 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/08/06/presenting-enumerablehelper/</guid>
      <description>&lt;p&gt;I noticed (eg: &lt;a href=&#34;http://derek-says.blogspot.com/2008/08/generic-collections-and-inheritance.html&#34;&gt;here&lt;/a&gt;) that i&amp;rsquo;m not the only one that has experienced some annoyances when working with generics. Here are a couple of methods that i find extremely helpful when i&amp;rsquo;m working with &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/9eekhta0.aspx&#34;&gt;IEnumerable&lt;T&gt;&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;IEnumerable&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;tbase&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; Convert&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;tderived&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; TBase&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;(&lt;/span&gt;IEnumerable&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;tderived&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; enumerable&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;where&lt;/span&gt; TDerived &lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt; TBase&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;IEnumerable&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;t&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; Convert&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;t&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;(&lt;/span&gt;IEnumerable enumerable&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;bool&lt;/span&gt; HaveSameElements&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;t&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;(&lt;/span&gt;IEnumerable&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;t&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; enumerable1&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; IEnumerable&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;t&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; enumerable2&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; Func&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;bool&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; T&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; areEqual&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;bool&lt;/span&gt; HaveSameElements&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;IEnumerable enumerable1&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; IEnumerable enumerable2&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; Func&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;bool&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;object&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;object&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; areEqual&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;bool&lt;/span&gt; HaveSameElements&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;IEnumerable enumerable1&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; IEnumerable enumerable2&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You can download the actual implementation of this Be.Timvw.Framework.Collections.Generic.EnumerableHelper class in &lt;a href=&#34;http://www.codeplex.com/BeTimvwFramework&#34;&gt;BeTimvwFramework&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries</title>
      <link>https://timvw.be/2008/08/04/framework-design-guidelines-conventions-idioms-and-patterns-for-reusable-.net-libraries/</link>
      <pubDate>Mon, 04 Aug 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/08/04/framework-design-guidelines-conventions-idioms-and-patterns-for-reusable-.net-libraries/</guid>
      <description>&lt;p&gt;I finally found some time to read &lt;a href=&#34;http://www.amazon.com/Framework-Design-Guidelines-Conventions-Development/dp/0321246756&#34;&gt;Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries&lt;/a&gt; this week. The book is loaded with annotations for the do and do not lists that this book contains. There is almost no code&amp;hellip; I&amp;rsquo;m looking forward to the &lt;a href=&#34;http://www.amazon.com/Framework-Design-Guidelines-Conventions-Development/dp/0321545613/ref=sr_1_2?ie=UTF8&amp;amp;s=books&amp;amp;qid=1217864039&amp;amp;sr=1-2&#34;&gt;second edition&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Presenting the SortableBindingList&lt;T&gt; (take two)</title>
      <link>https://timvw.be/2008/08/02/presenting-the-sortablebindinglistt-take-two/</link>
      <pubDate>Sat, 02 Aug 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/08/02/presenting-the-sortablebindinglistt-take-two/</guid>
      <description>&lt;p&gt;I&amp;rsquo;m in the progress of adding classes that i find interesting to the &lt;a href=&#34;http://www.codeplex.com/BeTimvwFramework&#34;&gt;BeTimvwFramework&lt;/a&gt; project. The original implementation of my &lt;a href=&#34;http://www.timvw.be/presenting-the-sortablebindinglistt/&#34;&gt;SortableBindingList&lt;T&gt;&lt;/a&gt; relied on &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/system.icomparable.aspx&#34;&gt;IComparable&lt;/a&gt; to implement ApplySortCore(PropertyDescriptor property, ListSortDirection direction). I received some good feedback and &lt;a href=&#34;http://www.timvw.be/improvements-for-the-sortablebindinglist-and-typedlist/&#34;&gt;blogged about those improvements&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Because some of my classes only implement &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/4d7sx9hd.aspx&#34;&gt;IComparable&lt;T&gt;&lt;/a&gt; i needed support for this too. My first thought was to use Comparer&lt;T&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;IComparer comparer &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; Comparer&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;t&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;.&lt;/span&gt;Default&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;itemsList&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Sort&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;delegate&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;T t1&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; T t2&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;object&lt;/span&gt; property1 &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; prop&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetValue&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;t1&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;object&lt;/span&gt; property2 &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; prop&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetValue&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;t2&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; reverse &lt;span style=&#34;color:#1f2328&#34;&gt;*&lt;/span&gt; comparer&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Compare&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;property1&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; property2&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;});&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Obviously that didn&amp;rsquo;t work. The problem is that i received the default Comparer for T, instead of the Comparer for the type of the property. Anyway, with a bit of reflection i got access to that Comparer&lt;/p&gt;</description>
    </item>
    <item>
      <title>NHibernate SessionFactory configuration</title>
      <link>https://timvw.be/2008/07/28/nhibernate-sessionfactory-configuration/</link>
      <pubDate>Mon, 28 Jul 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/07/28/nhibernate-sessionfactory-configuration/</guid>
      <description>&lt;p&gt;My preferred way for configuring &lt;a href=&#34;http://www.nhibernate.org&#34;&gt;NHibernate&lt;/a&gt; is as following&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Create a hibernate.cfg.xml file for session-factory settings.&lt;/li&gt;&#xA;&lt;li&gt;Add mapping files, named type.hbm.xml, as embedded resources to the library project that implements the repository.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;When i looked at the &lt;a href=&#34;http://www.hibernate.org/hib_docs/nhibernate/1.2/reference/en/html_single/#configuration-programmatic&#34;&gt;documentation&lt;/a&gt; i found the following&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Another alternative (probably the best) way is to let NHibernate load all of the mapping files contained in an Assembly:&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Configuration cfg &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; Configuration&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cfg&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;AddAssembly&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;NHibernate.Auction&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Whenever i tried that code i received an InvalidOperationException: Could not find the dialect in the configuration. In order to make the configuration work the way i prefer you have to do the following&lt;/p&gt;</description>
    </item>
    <item>
      <title>Error loading testrunconfig: Failed to instantiate type Microsoft.VisualStudio.TestTools.WebStress.WebTestRunConfig</title>
      <link>https://timvw.be/2008/07/26/error-loading-testrunconfig-failed-to-instantiate-type-microsoft.visualstudio.testtools.webstress.webtestrunconfig/</link>
      <pubDate>Sat, 26 Jul 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/07/26/error-loading-testrunconfig-failed-to-instantiate-type-microsoft.visualstudio.testtools.webstress.webtestrunconfig/</guid>
      <description>&lt;p&gt;Earlier this week i ran into the following exception when opening a solution: &amp;ldquo;Error loading TestRunConfig1.testrunconfig: Failed to instantiate type Microsoft.VisualStudio.TestTools.WebStress.WebTestRunConfig&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/images/testrunconfig_notexpectedformat.gif&#34; alt=&#34;screenshot of testrunconfig not expected format dialog box&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Apparently (&lt;a href=&#34;http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=228438&amp;amp;SiteID=1&#34;&gt;here&lt;/a&gt; and &lt;a href=&#34;http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=425717&amp;amp;SiteID=1&#34;&gt;here&lt;/a&gt;) the VS2005 Developer edition is missing a couple of libraries that the VS2005 Tester edition adds to the testrunconfig. If your tests don&amp;rsquo;t depend on these, the simplest way to solve this problem is to remove all the values nodes, and their childnodes, where the type is defined in the Microsoft.VisualStudio.QualityTools.LoadTest, Microsoft.VisualStudio.QualityTools.WebTest and Microsoft.VisualStudio.QualityTools.LoadTest.WebStress assemblies.&lt;/p&gt;</description>
    </item>
    <item>
      <title>About the Specification pattern</title>
      <link>https://timvw.be/2008/07/22/about-the-specification-pattern/</link>
      <pubDate>Tue, 22 Jul 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/07/22/about-the-specification-pattern/</guid>
      <description>&lt;p&gt;A couple of days ago i mentionned &lt;a href=&#34;http://www.goeleven.com&#34;&gt;Yves Goeleven&amp;rsquo;s blog&lt;/a&gt; as a reference for solutions using &lt;a href=&#34;http://en.wikipedia.org/wiki/Domain-driven_design&#34;&gt;DDD&lt;/a&gt; principles. Let&amp;rsquo;s have a look at his implementation of the AndSpecification and OrSpecification in &lt;a href=&#34;http://www.goeleven.com/blog/entryDetail.aspx?entry=57&#34;&gt;Design Patterns &amp;ndash; The Specification Pattern &amp;ndash; Part I&lt;/a&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;AndSpecification&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt; CompositeSpecification&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;override&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;bool&lt;/span&gt; IsSatisfiedBy&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;T candidate&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;bool&lt;/span&gt; isSatisfied &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;foreach&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; ISpecification&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; spec &lt;span style=&#34;color:#cf222e&#34;&gt;in&lt;/span&gt; Specifications&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;isSatisfied &lt;span style=&#34;color:#1f2328&#34;&gt;&amp;amp;=&lt;/span&gt; spec&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;IsSatisfiedBy&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;candidate&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; isSatisfied&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;OrSpecification&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt; CompositeSpecification&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;override&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;bool&lt;/span&gt; IsSatisfiedBy&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;T obj&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;bool&lt;/span&gt; isSatisfied &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;false&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;foreach&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; ISpecification&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; spec &lt;span style=&#34;color:#cf222e&#34;&gt;in&lt;/span&gt; Specifications&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;isSatisfied &lt;span style=&#34;color:#1f2328&#34;&gt;|=&lt;/span&gt; spec&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;IsSatisfiedBy&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;obj&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; isSatisfied&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I believe that it would be better if the implementations had the same lazy evaluation behaviour as the C# &amp;amp;&amp;amp; and || operators. Eg: in C# one can write (a &amp;amp;&amp;amp; b) and if a evaluates to false, then b is not evaluated anymore. Consider the following code&lt;/p&gt;</description>
    </item>
    <item>
      <title>.NET Domain-Driven Design with C#: Problem -- Design -- Solution</title>
      <link>https://timvw.be/2008/07/19/.net-domain-driven-design-with-c%23-problem--design--solution/</link>
      <pubDate>Sat, 19 Jul 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/07/19/.net-domain-driven-design-with-c%23-problem--design--solution/</guid>
      <description>&lt;p&gt;Since i didn&amp;rsquo;t find many reviews on &lt;a href=&#34;http://blogs.interknowlogy.com/timmccarthy/&#34;&gt;Tim McCarthy&amp;rsquo;s&lt;/a&gt; book: &lt;a href=&#34;http://www.amazon.com/dp/0470147563?tag=timcsbl-20&amp;amp;camp=14573&amp;amp;creative=327641&amp;amp;linkCode=as1&amp;amp;creativeASIN=0470147563&amp;amp;adid=0G2QZKFS5TEKWFYAGKWG&amp;amp;&#34;&gt;.NET Domain-Driven Design with C#: Problem &amp;ndash; Design &amp;ndash; Solution&lt;/a&gt;, i&amp;rsquo;ve decided to write a short one myself:&lt;/p&gt;&#xA;&lt;p&gt;This book offers a real-world example of a project using &lt;a href=&#34;http://en.wikipedia.org/wiki/Domain-driven_design&#34;&gt;DDD&lt;/a&gt;. If you already have experience with DDD you will read pretty quickly through the chapters.&lt;/p&gt;&#xA;&lt;p&gt;Here are a couple of items in the book i found noteworthy:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;The IAggregateRoot marker interface that is used as a constraint on the IRepository&lt;T&gt; interface.&lt;/li&gt;&#xA;&lt;li&gt;Code that demonstrated the power of WPF through the implementation of &lt;a href=&#34;http://blogs.msdn.com/dancre/archive/2006/10/11/datamodel-view-viewmodel-pattern-series.aspx&#34;&gt;Model-View-ViewModel&lt;/a&gt; and usage of the &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/system.windows.input.icommand.aspx&#34;&gt;ICommand&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Used the &lt;a href=&#34;http://martinfowler.com/eaaCatalog/unitOfWork.html&#34;&gt;IUnitOfWork.Commit&lt;/a&gt; method to plug a Synchronization Service into the application.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;All in all, the book is worth the 26$. In case that you&amp;rsquo;re looking for more examples, i would recommend &lt;a href=&#34;http://www.goeleven.com/blog/entryDetail.aspx?entry=89&#34;&gt;Domain Driven Design &amp;ndash; Table of contents and source code&lt;/a&gt; as another source of inspiration&amp;hellip;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Presenting a generic DiscreteValuesRange</title>
      <link>https://timvw.be/2008/07/16/presenting-a-generic-discretevaluesrange/</link>
      <pubDate>Wed, 16 Jul 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/07/16/presenting-a-generic-discretevaluesrange/</guid>
      <description>&lt;p&gt;Let me start with a real world example demonstrating the usefulness of a generic DiscreteValuesRange. Imagine that i run a grid computing business and my clients want to book capacity on the grid for a given period. Before their booking is approved, i have to verify that the client has contracts that allow him to use the system for each day of the booking period. Usually, such a check is implemented as following&lt;/p&gt;</description>
    </item>
    <item>
      <title>Presenting HtmlClipboard</title>
      <link>https://timvw.be/2008/06/30/presenting-htmlclipboard/</link>
      <pubDate>Mon, 30 Jun 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/06/30/presenting-htmlclipboard/</guid>
      <description>&lt;p&gt;Very often i need to encode/decode the contents of my Clipboard so i decided to write a little tray application to help me&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/images/htmlclipboard.gif&#34; alt=&#34;screenshot of htmlclipboard tray application&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;With the aid of &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/system.windows.forms.clipboard.aspx&#34;&gt;Clipboard&lt;/a&gt; and &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/system.web.httputility.aspx&#34;&gt;HttpUtility&lt;/a&gt; this is quite easy to implement&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; toolStripMenuItemDecode_Click&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;object&lt;/span&gt; sender&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; EventArgs e&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; original &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; Clipboard&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetText&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; decodedHtml &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; HttpUtility&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;HtmlDecode&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;original&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Clipboard&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;SetText&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;decodedHtml&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; toolStripMenuItemEncode_Click&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;object&lt;/span&gt; sender&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; EventArgs e&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; original &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; Clipboard&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetText&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; encodedHtml &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; HttpUtility&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;HtmlEncode&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;original&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Clipboard&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;SetText&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;encodedHtml&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Anyway, feel free to download &lt;a href=&#34;http://www.timvw.be/wp-content/code/csharp/HtmlClipboard.zip&#34;&gt;HtmlClipboard.zip&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Example implementation of a callback method for use in the Asynchronous Programming Model</title>
      <link>https://timvw.be/2008/06/28/example-implementation-of-a-callback-method-for-use-in-the-asynchronous-programming-model/</link>
      <pubDate>Sat, 28 Jun 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/06/28/example-implementation-of-a-callback-method-for-use-in-the-asynchronous-programming-model/</guid>
      <description>&lt;p&gt;I always seem to forget about the mechanics of implementing a Callback method that can be used in the &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/ms228963(VS.80).aspx&#34;&gt;Asynchronous Programming Model (APM)&lt;/a&gt;. So here is a simple example in C# 3.0 using the &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/bb549151.aspx&#34;&gt;Func&amp;lt;T, TResult&amp;gt;&lt;/a&gt; delegate&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Program&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; Main&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[]&lt;/span&gt; args&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;Func&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; echoDelegate &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; Echo&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;IAsyncResult asyncResult &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; echoDelegate&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;BeginInvoke&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;some input&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; EchoCallback&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;x&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;WaitHandle&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WaitAll&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; WaitHandle&lt;span style=&#34;color:#1f2328&#34;&gt;[]&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;asyncResult&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;AsyncWaitHandle&lt;span style=&#34;color:#1f2328&#34;&gt;});&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Write&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;{0}Press any key to continue...&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; Environment&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;NewLine&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ReadKey&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; Echo&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; input&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Format&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Echoing {0}&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; input&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; EchoCallback&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;object&lt;/span&gt; state&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;IAsyncResult r &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;IAsyncResult&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;state&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;Debug&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Assert&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;r&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;AsyncState &lt;span style=&#34;color:#1f2328&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;x&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;AsyncResult asyncResult &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;AsyncResult&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;state&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;Func&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; echoDelegate &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;Func&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;)&lt;/span&gt;asyncResult&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;AsyncDelegate&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; echoResult &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; echoDelegate&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;EndInvoke&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;asyncResult&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;Debug&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Assert&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;echoResult &lt;span style=&#34;color:#1f2328&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Echoing some input&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteLine&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;EchoCallback completed.&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>MCTS&#43;&#43;</title>
      <link>https://timvw.be/2008/06/26/mcts-/</link>
      <pubDate>Thu, 26 Jun 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/06/26/mcts-/</guid>
      <description>&lt;p&gt;Today i passed Exam &lt;a href=&#34;http://www.microsoft.com/learning/en/us/exams/70-529.mspx&#34;&gt;70-529&lt;/a&gt; and thus became a &lt;a href=&#34;http://www.microsoft.com/learning/mcp/mcts/distapps/default.mspx&#34;&gt;MCTS: .NET Framework 2.0 Distributed Applications&lt;/a&gt;. This means that there is only one exam left, &lt;a href=&#34;http://www.microsoft.com/learning/en/us/exams/70-549.mspx&#34;&gt;70-549&lt;/a&gt;, in order to become a &lt;a href=&#34;http://www.microsoft.com/learning/mcp/mcpd/entapp/default.mspx&#34;&gt;MCPD: Enterprise Applications Developer on Visual Studio 2005&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Note about makecert.exe</title>
      <link>https://timvw.be/2008/06/21/note-about-makecert.exe/</link>
      <pubDate>Sat, 21 Jun 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/06/21/note-about-makecert.exe/</guid>
      <description>&lt;p&gt;A couple of days ago i didn&amp;rsquo;t have a binary version of &lt;a href=&#34;http://www.openssl.org&#34;&gt;OpenSSL&lt;/a&gt; around so i decided to use &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/bfsktky3(VS.80).aspx&#34;&gt;Makecert.exe&lt;/a&gt;. I generated a couple of test certificates and started playing around with them.&lt;/p&gt;&#xA;&lt;p&gt;Whenever i tried to decrypt an instance of &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/system.security.cryptography.xml.encryptedxml(VS.80).aspx&#34;&gt;EncryptedXml&lt;/a&gt; a &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/system.security.cryptography.cryptographicexception.aspx&#34;&gt;CryptographicException&lt;/a&gt; (&amp;ldquo;Bad Key.&amp;rdquo;) was thrown and when i tried to use a &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/aa529579.aspx&#34;&gt;mutualCertificate11Security&lt;/a&gt; assertion (&lt;a href=&#34;http://msdn.microsoft.com/en-us/library/aa139619.aspx&#34;&gt;WSE 3.0&lt;/a&gt;) the same CryptographicException (&amp;ldquo;WSE600: Unable to unwrap a symmetric key using the private key of an X.509 certificate. Please check if the account &amp;lsquo;ASPNET&amp;rsquo; has permissions to read the private key of certificate with subject name&amp;hellip; &amp;ldquo;) was thrown.&lt;/p&gt;</description>
    </item>
    <item>
      <title>PInvoke Interop Assistant released</title>
      <link>https://timvw.be/2008/06/17/pinvoke-interop-assistant-released/</link>
      <pubDate>Tue, 17 Jun 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/06/17/pinvoke-interop-assistant-released/</guid>
      <description>&lt;p&gt;Earlier at &lt;a href=&#34;http://www.microsoft.com/events/TechEd2008/default.mspx&#34;&gt;Tech Ed North America&lt;/a&gt; i heared how &lt;a href=&#34;&#34;&gt;Jesse Kaplan&lt;/a&gt;, program Manager for Extensibility and add-ins for the CLR team, announced a new tool to help us with PInvoke signatures. Today i noticed that the tool, &lt;a href=&#34;http://www.codeplex.com/clrinterop&#34;&gt;PInvoke Interop Assistant&lt;/a&gt; has now been made available at CodePlex.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Enumerate all properties and their value of an object</title>
      <link>https://timvw.be/2008/06/14/enumerate-all-properties-and-their-value-of-an-object/</link>
      <pubDate>Sat, 14 Jun 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/06/14/enumerate-all-properties-and-their-value-of-an-object/</guid>
      <description>&lt;p&gt;Earlier today someone asked me how to generate a List with all the properties (and their respective value) that an object has. With C# 2.0 i would have created a class to represent a single element, PropertyRow, with a Name and a Value property and a class that is IEnumerable&lt;PropertyRow&gt; to hold all PropertyRows.&lt;/p&gt;&#xA;&lt;p&gt;With C# 3.0 we can take advantage of &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/bb397696.aspx&#34;&gt;anonymous types&lt;/a&gt; and the code we have to write is fairly minimal&lt;/p&gt;</description>
    </item>
    <item>
      <title>Became Microsoft Certified Technology Specialist...</title>
      <link>https://timvw.be/2008/06/09/became-microsoft-certified-technology-specialist.../</link>
      <pubDate>Mon, 09 Jun 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/06/09/became-microsoft-certified-technology-specialist.../</guid>
      <description>&lt;p&gt;Not that i really care, but &lt;a href=&#34;http://wimvdd.blogspot.com&#34;&gt;my manager&lt;/a&gt; seems to do, last week, during a couple of dead moments at Tech-Ed North America (I&amp;rsquo;ll blog about that later on this week) i decided to take a couple of exams (&lt;a href=&#34;http://www.microsoft.com/learning/en/us/exams/70-536.mspx&#34;&gt;70-536&lt;/a&gt;, &lt;a href=&#34;http://www.microsoft.com/learning/en/us/exams/70-526.mspx&#34;&gt;70-526&lt;/a&gt; and &lt;a href=&#34;http://www.microsoft.com/learning/en/us/exams/70-528.mspx&#34;&gt;70-528&lt;/a&gt;) and passed them 😉&lt;/p&gt;&#xA;&lt;p&gt;This means that i&amp;rsquo;m now a &lt;a href=&#34;http://www.microsoft.com/learning/mcp/mcts/winapps/default.mspx&#34;&gt;MCTS: .NET Framework 2.0 Windows Applications&lt;/a&gt; and a &lt;a href=&#34;http://www.microsoft.com/learning/mcp/mcts/webapps/default.mspx&#34;&gt;MCTS: .NET Framework 2.0 Web Applications&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Feel free to check out &lt;a href=&#34;http://www.microsoft.com/learning/mcp/transcripts&#34;&gt;my transcript&lt;/a&gt; with Transcript&lt;/p&gt;</description>
    </item>
    <item>
      <title>Exploring the Microsoft Sync Framework</title>
      <link>https://timvw.be/2008/05/24/exploring-the-microsoft-sync-framework/</link>
      <pubDate>Sat, 24 May 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/05/24/exploring-the-microsoft-sync-framework/</guid>
      <description>&lt;p&gt;Earlier this week i&amp;rsquo;ve been experimenting with the &lt;a href=&#34;http://msdn.microsoft.com/en-us/sync/default.aspx&#34;&gt;Microsoft Sync Framework&lt;/a&gt;. In a typical n-tier architecture the client can&amp;rsquo;t access the remote database directly but uses a proxy instead. The available [Earlier this week i&amp;rsquo;ve been experimenting with the &lt;a href=&#34;http://msdn.microsoft.com/en-us/sync/default.aspx&#34;&gt;Microsoft Sync Framework&lt;/a&gt;. In a typical n-tier architecture the client can&amp;rsquo;t access the remote database directly but uses a proxy instead. The available](&lt;a href=&#34;http://msdn.microsoft.com/en-us/library/microsoft.synchronization.data.serversyncproviderproxy(SQL.100).aspx&#34;&gt;http://msdn.microsoft.com/en-us/library/microsoft.synchronization.data.serversyncproviderproxy(SQL.100).aspx&lt;/a&gt;) has only one constructor which accepts an object. With reflector i found out that the proxy simply uses reflection to call some methods. Here are a couple of helper classes that help you prevent runtime errors due to this approach&lt;/p&gt;</description>
    </item>
    <item>
      <title>Presenting a generic Effectivity</title>
      <link>https://timvw.be/2008/05/19/presenting-a-generic-effectivity/</link>
      <pubDate>Mon, 19 May 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/05/19/presenting-a-generic-effectivity/</guid>
      <description>&lt;p&gt;Very often we have to manage objects and their changes over time. Usually we implement this by adding a &lt;a href=&#34;http://www.timvw.be/presenting-a-generic-range/&#34;&gt;Range&lt;DateTime&gt;&lt;/a&gt; to the data. &lt;a href=&#34;http://martinfowler.com/&#34;&gt;Martin Fowler&lt;/a&gt; has a name for this pattern: &lt;a href=&#34;http://martinfowler.com/ap2/effectivity.html&#34;&gt;Effectivity&lt;/a&gt; and i have an implementation for the following interface&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;interface&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;IEffectivity&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt; IComparable&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;ieffectivity&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;T Element &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;get&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;IRange&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;dateTime&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; ValidityPeriod &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;get&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;bool&lt;/span&gt; IsEffectiveOn&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;DateTime validityDate&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Feel free to download &lt;a href=&#34;http://www.timvw.be/wp-content/code/csharp/IEffectivity.txt&#34;&gt;IEffectivity.txt&lt;/a&gt;, &lt;a href=&#34;http://www.timvw.be/wp-content/code/csharp/Effectivity.txt&#34;&gt;Effectivity.txt&lt;/a&gt; and &lt;a href=&#34;http://www.timvw.be/wp-content/code/csharp/EffectivityTester.txt&#34;&gt;EffectivityTester.txt&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Presenting a generic EffectivityManager</title>
      <link>https://timvw.be/2008/05/19/presenting-a-generic-effectivitymanager/</link>
      <pubDate>Mon, 19 May 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/05/19/presenting-a-generic-effectivitymanager/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve already presented a &lt;a href=&#34;http://www.timvw.be/presenting-a-generic-effectivity/&#34;&gt;Generic Effectivity&lt;/a&gt;. Offcourse, managing all these effectivities (versions of data) can be handled in a generic way too. A bit of experience mixed with &lt;a href=&#34;http://martinfowler.com/ap2/timeNarrative.html&#34;&gt;Patterns for things that change with time&lt;/a&gt; allowed me to come up with the following interface&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;interface&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;IEffectivityManager&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt; IList&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;ieffectivity&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;IEffectivity&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;T t&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; DateTime begin&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;IEffectivity&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; GetSnapshot&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;DateTime validityDate&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;bool&lt;/span&gt; TryGetSnapshot&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;DateTime validityDate&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;out&lt;/span&gt; IEffectivity&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; effectivity&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Feel free to download &lt;a href=&#34;http://www.timvw.be/wp-content/code/csharp/IEffectivityManager.txt&#34;&gt;IEffectivityManager.txt&lt;/a&gt;, &lt;a href=&#34;http://www.timvw.be/wp-content/code/csharp/EffectivityManager.txt&#34;&gt;EffectivityManager.txt&lt;/a&gt; and &lt;a href=&#34;http://www.timvw.be/wp-content/code/csharp/EffectivityManagerTester.txt&#34;&gt;EffectivityManagerTester.txt&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Presenting a generic Range</title>
      <link>https://timvw.be/2008/05/17/presenting-a-generic-range/</link>
      <pubDate>Sat, 17 May 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/05/17/presenting-a-generic-range/</guid>
      <description>&lt;p&gt;Quite often i&amp;rsquo;m writing code that compares one value against a range of other values. Most implementations compare the value against the boundaries (smallest and largest in the collection of other values). Having written this sort of code way too much i&amp;rsquo;ve decided to generalize the problem and distill an interface&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;interface&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;IRange&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;T Begin &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;get&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;set&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;T End &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;get&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;set&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;bool&lt;/span&gt; Includes&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;T t&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;bool&lt;/span&gt; Includes&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;IRange&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; range&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;bool&lt;/span&gt; Overlaps&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;IRange&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; range&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Offcourse, i&amp;rsquo;ve also written implementation. Feel free to download &lt;a href=&#34;http://www.timvw.be/wp-content/code/csharp/IRange.txt&#34;&gt;IRange.txt&lt;/a&gt;, &lt;a href=&#34;http://www.timvw.be/wp-content/code/csharp/Range.txt&#34;&gt;Range.txt&lt;/a&gt; and &lt;a href=&#34;http://www.timvw.be/wp-content/code/csharp/RangeTester.txt&#34;&gt;RangeTester.txt&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Build OpenSSL with Visual Studio 2008</title>
      <link>https://timvw.be/2008/04/21/build-openssl-with-visual-studio-2008/</link>
      <pubDate>Mon, 21 Apr 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/04/21/build-openssl-with-visual-studio-2008/</guid>
      <description>&lt;p&gt;These days building &lt;a href=&#34;http://www.openssl.org&#34;&gt;OpenSSL&lt;/a&gt; with Visual Studio 2008 has become really easy. I don&amp;rsquo;t like to edit .cnf files so i decided to patch the code a little so that the default configuration file becomes openssl.config&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; basePath &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;@&amp;#34;C:\src\openssl-0.9.8g&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; originalConfigfile &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;openssl.cnf&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; updatedConfigfile &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;openssl.config&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;foreach&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; filename &lt;span style=&#34;color:#cf222e&#34;&gt;in&lt;/span&gt; Directory&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetFiles&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;basePath&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;\*.\*&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; SearchOption&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;AllDirectories&lt;span style=&#34;color:#1f2328&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; contents &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; File&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ReadAllText&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;filename&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;contents&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Contains&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;originalConfigfile&lt;span style=&#34;color:#1f2328&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteLine&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;filename&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;File&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteAllText&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;filename&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; contents&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Replace&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;originalConfigfile&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; updatedConfigfile&lt;span style=&#34;color:#1f2328&#34;&gt;));&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;File&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteAllText&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;basePath &lt;span style=&#34;color:#1f2328&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;@&amp;#34;\apps\&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;+&lt;/span&gt; updatedConfigfile&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; File&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ReadAllText&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;basePath &lt;span style=&#34;color:#1f2328&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;@&amp;#34;\apps\&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;+&lt;/span&gt; originalConfigfile&lt;span style=&#34;color:#1f2328&#34;&gt;));&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Open a Visual Studio 2008 Command prompt and add references to the &lt;a href=&#34;http://blogs.msdn.com/windowssdk&#34;&gt;Microsoft SDK&lt;/a&gt; as following&lt;/p&gt;</description>
    </item>
    <item>
      <title>Easily switching between configuration files with MSBuild</title>
      <link>https://timvw.be/2008/03/22/easily-switching-between-configuration-files-with-msbuild/</link>
      <pubDate>Sat, 22 Mar 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/03/22/easily-switching-between-configuration-files-with-msbuild/</guid>
      <description>&lt;p&gt;A couple of days ago i wrote about &lt;a href=&#34;http://www.timvw.be/easily-switching-between-appconfig-files-with-msbuild/&#34;&gt;Easily switching between App.Config files with MSBuild&lt;/a&gt;. Christophe Gijbels, a fellow &lt;a href=&#34;http://www.compuware.be/root/Careers/index.asp&#34;&gt;compuwarrior&lt;/a&gt;, pointed out that developers usually need to copy more than a single App.Config file&amp;hellip; I would propose to add a Folder for each Customer that contains all the specific configuration files. Eg&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/images/customerconfigurations.gif&#34; alt=&#34;screenshot of solution explorer with proposed folder structures&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Now i have to configure MSBuild so that the right files are copied into the &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/bb629394.aspx&#34;&gt;OutDir&lt;/a&gt;:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Why doesn&#39;t Visual Studio display my MSBuild message texts?</title>
      <link>https://timvw.be/2008/03/22/why-doesnt-visual-studio-display-my-msbuild-message-texts/</link>
      <pubDate>Sat, 22 Mar 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/03/22/why-doesnt-visual-studio-display-my-msbuild-message-texts/</guid>
      <description>&lt;p&gt;In order to debug an &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/wea2sca5.aspx&#34;&gt;MSBuild&lt;/a&gt; script i added a couple of &lt;Message&gt; tasks, but when i asked Visual Studio to Build i didn&amp;rsquo;t get to see the output&amp;hellip; By default Visual Studio will use &amp;ldquo;Minimal&amp;rdquo; as &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/ms164311.aspx&#34;&gt;verbosity&lt;/a&gt; level. You can change this via Tools -&amp;gt; Options -&amp;gt; Projects and Solutions -&amp;gt; Build and Run.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/images/msbuildverbosity.gif&#34; alt=&#34;screenshot of configuration dialog in visual studio that allows the user to set the verbosity of msbuild&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Easily switching between App.Config files with MSBuild</title>
      <link>https://timvw.be/2008/03/17/easily-switching-between-app.config-files-with-msbuild/</link>
      <pubDate>Mon, 17 Mar 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/03/17/easily-switching-between-app.config-files-with-msbuild/</guid>
      <description>&lt;p&gt;Imagine the following situation: One codebase, two customers with different &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/kkz9kefa(VS.80).aspx&#34;&gt;Application Configuration files&lt;/a&gt;. How can we easily switch between the different configurations? By taking advantage of the &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/kkz9kefa(VS.80).aspx&#34;&gt;Build Configurations&lt;/a&gt; functionality in Visual Studio we can easily switch between different configurations&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/images/vsconfigurationmanager.gif&#34; alt=&#34;screenshot of the configuration manager in visual studio&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;A brute-force solution would be to add a &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/42x5kfw4(VS.80).aspx&#34;&gt;Post-build Event&lt;/a&gt; that copies the desired App.Config file to the destination directory. In the Microsoft.Common.targets file (usually at C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727) around line 725 you can read how &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/wea2sca5.aspx&#34;&gt;MSBuild&lt;/a&gt; chooses the App.Config that is copied to the destination folder&lt;/p&gt;</description>
    </item>
    <item>
      <title>Heroes happened {Here}</title>
      <link>https://timvw.be/2008/03/14/heroes-happened-here/</link>
      <pubDate>Fri, 14 Mar 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/03/14/heroes-happened-here/</guid>
      <description>&lt;p&gt;I&amp;rsquo;m back from &lt;a href=&#34;http://www.microsoft.com/belux/heroeshappenhere/default.aspx&#34;&gt;Heroes Happen Here&lt;/a&gt;. Even with a fullhouse this convention was well organized and evertyhing went pretty smooth (In my experience that is true for all events organised by Microsoft). One suggestion though: Reduce the sugar buffet (although the cake and muffins are very tasty) and add some healthy fruit 😉&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;m glad to notice, despite the fact that the main reason seems to be &lt;a href=&#34;http://en.wikipedia.org/wiki/Search_engine_optimisation&#34;&gt;SEO&lt;/a&gt;, web developers are encouraged to develop websites that work without JavaScript and that they add it afterwards as a real usability enhancement.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using Linq for statically-typed reflection</title>
      <link>https://timvw.be/2008/03/14/using-linq-for-statically-typed-reflection/</link>
      <pubDate>Fri, 14 Mar 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/03/14/using-linq-for-statically-typed-reflection/</guid>
      <description>&lt;p&gt;I discovered the &lt;a href=&#34;http://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=clarius&amp;amp;ReleaseId=9495&#34;&gt;TypedReflector&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;on &lt;a href=&#34;http://www.clariusconsulting.net/blogs/kzu/archive/2007/12/30/49063.aspx&#34;&gt;Daniel Cazzulino&amp;rsquo;s Blog&lt;/a&gt;. In essence, a simplified version of the code looks like&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Reflector&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; PropertyInfo GetProperty&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;t&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; TRet&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;(&lt;/span&gt;Expression&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;func&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;t&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; TRet&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt; expression&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; GetMemberInfo&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;expression&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;as&lt;/span&gt; PropertyInfo&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; FieldInfo GetField&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;t&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; TRet&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;(&lt;/span&gt;Expression&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;func&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;t&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; TRet&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt; expression&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; GetMemberInfo&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;expression&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;as&lt;/span&gt; FieldInfo&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; MethodInfo GetMethod&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;t&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; TRet&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;(&lt;/span&gt;Expression&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;func&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;t&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; TRet&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt; expression&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; GetMemberInfo&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;expression&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;as&lt;/span&gt; MethodInfo&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; MemberInfo GetMemberInfo&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;Expression memberInfoExpression&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;Expression lambdaBodyExpression &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;((&lt;/span&gt;LambdaExpression&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;memberInfoExpression&lt;span style=&#34;color:#1f2328&#34;&gt;).&lt;/span&gt;Body&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;switch&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;lambdaBodyExpression&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;NodeType&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;case&lt;/span&gt; ExpressionType&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;MemberAccess&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;((&lt;/span&gt;MemberExpression&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;lambdaBodyExpression&lt;span style=&#34;color:#1f2328&#34;&gt;).&lt;/span&gt;Member&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;case&lt;/span&gt; ExpressionType&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Call&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;((&lt;/span&gt;MethodCallExpression&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;lambdaBodyExpression&lt;span style=&#34;color:#1f2328&#34;&gt;).&lt;/span&gt;Method&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;default&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;throw&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; ArgumentException&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Unsupported NodeType&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This class allows me to write the following&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using System.DirectoryServices.AccountManagement to find the members of an AD group</title>
      <link>https://timvw.be/2008/03/08/using-system.directoryservices.accountmanagement-to-find-the-members-of-an-ad-group/</link>
      <pubDate>Sat, 08 Mar 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/03/08/using-system.directoryservices.accountmanagement-to-find-the-members-of-an-ad-group/</guid>
      <description>&lt;p&gt;A while ago i posted some code that demonstrated how to &lt;a href=&#34;http://www.timvw.be/find-the-members-of-an-ad-group/&#34;&gt;find the members of an AD group&lt;/a&gt;. If you&amp;rsquo;re using the brandnew .Net 3.5 framework you can take advantage of the &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.directoryservices.accountmanagement.aspx&#34;&gt;System.DirectoryServices.AccountManagement&lt;/a&gt; library which is an abstraction for AD (DS, LDS) and SAM accounts. Using this new library my method can be simplified&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; IEnumerable&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; FindUsernames&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; groupname&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;PrincipalContext principalContext &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; PrincipalContext&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;ContextType&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Domain&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;mydomain&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;GroupPrincipal groupPrincipal &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; GroupPrincipal&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;FindByIdentity&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;principalContext&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; groupname&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;foreach&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;Principal principal &lt;span style=&#34;color:#cf222e&#34;&gt;in&lt;/span&gt; groupPrincipal&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Members&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;yield&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; principal&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;DistinguishedName&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If you&amp;rsquo;re looking for more information i would recommend that you read &lt;a href=&#34;http://msdn2.microsoft.com/en-us/magazine/cc135979.aspx&#34;&gt;Managing Directory Security Principals in the .NET Framework 3.5&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Exploring alternative input: ActiveHome</title>
      <link>https://timvw.be/2008/03/06/exploring-alternative-input-activehome/</link>
      <pubDate>Thu, 06 Mar 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/03/06/exploring-alternative-input-activehome/</guid>
      <description>&lt;p&gt;A while ago i bought &lt;a href=&#34;http://www.easycomputing.com/product.asp?ref=3655&#34;&gt;Media Centerkit&lt;/a&gt; for an euro or two. I wouldn&amp;rsquo;t recommend the product because it comes with crappy software. Anyway, i was only interested in playing with the hardware (RF Remote and USB Receiver) so i downloaded the &lt;a href=&#34;http://www.activehomepro.com/sdk/sdk-info.html&#34;&gt;ActiveHome Professional SDK&lt;/a&gt;. Once you install this you can add a reference to &amp;ldquo;ActiveHomeScript 1.0 Type Library&amp;rdquo; under the COM tab in Visual Studio. I wrote a little library so that i can consume the ActiveHomeClass.RecvAction in a Type-safe way&lt;/p&gt;</description>
    </item>
    <item>
      <title>Find the members of an AD group</title>
      <link>https://timvw.be/2008/03/05/find-the-members-of-an-ad-group/</link>
      <pubDate>Wed, 05 Mar 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/03/05/find-the-members-of-an-ad-group/</guid>
      <description>&lt;p&gt;Because i always seem to forget about the syntax of LDAP Search Filters (&lt;a href=&#34;http://www.ietf.org/rfc/rfc2254.txt&#34;&gt;RFC 2254: The String Representation of LDAP Search Filters&lt;/a&gt; and &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/ms675768(VS.85).aspx&#34;&gt;Creating a Query Filter&lt;/a&gt;) i&amp;rsquo;m going to post a basic demo of &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.directoryservices.directorysearcher.aspx&#34;&gt;DirectorySearcher&lt;/a&gt; that returns the members that are part of a given AD group&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; Main&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[]&lt;/span&gt; args&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;foreach&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; member &lt;span style=&#34;color:#cf222e&#34;&gt;in&lt;/span&gt; FindUsernames&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;CWBE-PS-.NetDev&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteLine&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;member&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Write&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;{0}Press any key to continue...&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; Environment&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;NewLine&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ReadKey&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; IEnumerable&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; FindUsernames&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; groupname&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; filter &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;(&amp;amp;(&amp;amp;(objectCategory=Group)(objectClass=Group))(name={0}))&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;filter &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Format&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;filter&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; groupname&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;DirectoryEntry directoryEntry &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; DirectoryEntry&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;DirectorySearcher searcher &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; DirectorySearcher&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;directoryEntry&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;searcher&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;SearchScope &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; SearchScope&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Subtree&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;searcher&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Filter &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; filter&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;DirectoryEntry groupEntry &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; searcher&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;FindOne&lt;span style=&#34;color:#1f2328&#34;&gt;().&lt;/span&gt;GetDirectoryEntry&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;PropertyValueCollection members &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;PropertyValueCollection&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;groupEntry&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Properties&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;member&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;];&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; ConvertAll&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;object&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;((&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;object&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[])&lt;/span&gt;members&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Value&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; IEnumerable&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;to&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; ConvertAll&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;from&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; To&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;(&lt;/span&gt;IEnumerable&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;from&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; elements&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Type toType &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;typeof&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;To&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;foreach&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;From element &lt;span style=&#34;color:#cf222e&#34;&gt;in&lt;/span&gt; elements&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;yield&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;To&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;Convert&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ChangeType&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;element&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; toType&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Display WorkItems in a WinForms application</title>
      <link>https://timvw.be/2008/02/29/display-workitems-in-a-winforms-application/</link>
      <pubDate>Fri, 29 Feb 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/02/29/display-workitems-in-a-winforms-application/</guid>
      <description>&lt;p&gt;Using the Microsoft.TeamFoundation.WorkItemTracking.Controls assembly it is possibe to display WorkItems. Here is a little demo application that will display all the WorkItems that have been changed by one of the given users in the given range&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/images/workitemtracker.gif&#34; alt=&#34;screenshot of workitemtracker application&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Feel free to download the source: &lt;a href=&#34;http://www.timvw.be/wp-content/code/csharp/WorkItemTracker.zip&#34;&gt;WorkItemTracker.zip&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Edit (05/03/2008):&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Refactored the code a little and added some features like sortable columns, loading default tfsserver and users from App.Config, &amp;hellip;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Find WorkItems that have been changed between two dates</title>
      <link>https://timvw.be/2008/02/28/find-workitems-that-have-been-changed-between-two-dates/</link>
      <pubDate>Thu, 28 Feb 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/02/28/find-workitems-that-have-been-changed-between-two-dates/</guid>
      <description>&lt;p&gt;Sometimes i want to know which WorkItems i have closed (or completed) between two dates. According to &lt;a href=&#34;http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2528099&amp;amp;SiteID=1&#34;&gt;Amit Ghosh&lt;/a&gt; it&amp;rsquo;s not possible to write such a query so i wrote some code that uses the &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/bb130146(VS.80).aspx&#34;&gt;TFS SDK&lt;/a&gt; to get that list&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; Main&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[]&lt;/span&gt; args&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;TeamFoundationServer tfs &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; TeamFoundationServerFactory&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetServer&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;tfsrtm08&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;WorkItemStore wis &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;WorkItemStore&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;tfs&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetService&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;typeof&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;WorkItemStore&lt;span style=&#34;color:#1f2328&#34;&gt;));&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;DateTime begin &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; DateTime&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;2008&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;DateTime end &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; DateTime&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;2008&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;28&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; username &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Darren&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;foreach&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;WorkItem workItem &lt;span style=&#34;color:#cf222e&#34;&gt;in&lt;/span&gt; FindChangesByUserInRange&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;wis&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; username&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; begin&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; end&lt;span style=&#34;color:#1f2328&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteLine&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;[{0:00000}] {1}&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; workItem&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Id&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; workItem&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Title&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteLine&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Press any key to continue...&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ReadKey&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; List&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;workItem&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; FindChangesByUserInRange&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;WorkItemStore workItemStore&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; username&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; DateTime begin&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; DateTime end&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; query &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;SELECT System.ID, System.Title FROM workitems WHERE [Changed By] EVER &amp;#39;{0}&amp;#39; AND [State] IN (&amp;#39;Closed&amp;#39;, &amp;#39;Resolved&amp;#39;) AND [Changed Date] &amp;gt;= &amp;#39;{1}&amp;#39;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;query &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Format&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;query&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; username&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; begin&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Date&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ToShortDateString&lt;span style=&#34;color:#1f2328&#34;&gt;());&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;List&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;workItem&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; result &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; List&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;workItem&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;foreach&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;WorkItem workItem &lt;span style=&#34;color:#cf222e&#34;&gt;in&lt;/span&gt; workItemStore&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Query&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;query&lt;span style=&#34;color:#1f2328&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;IsChangedByUserInRange&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;workItem&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; username&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; begin&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; end&lt;span style=&#34;color:#1f2328&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;result&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;workItem&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; result&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;bool&lt;/span&gt; IsChangedByUserInRange&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;WorkItem workItem&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; username&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; DateTime begin&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; DateTime end&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;foreach&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;Revision rev &lt;span style=&#34;color:#cf222e&#34;&gt;in&lt;/span&gt; workItem&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Revisions&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; changedBy &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;rev&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Fields&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Changed By&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;].&lt;/span&gt;Value&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;changedBy &lt;span style=&#34;color:#1f2328&#34;&gt;==&lt;/span&gt; username&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;DateTime changedDate &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;DateTime&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;rev&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Fields&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Changed Date&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;].&lt;/span&gt;Value&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;begin &lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;=&lt;/span&gt; changedDate &lt;span style=&#34;color:#1f2328&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; changedDate &lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;=&lt;/span&gt; end&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;false&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Writing Xml without the XmlDeclaration</title>
      <link>https://timvw.be/2008/02/26/writing-xml-without-the-xmldeclaration/</link>
      <pubDate>Tue, 26 Feb 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/02/26/writing-xml-without-the-xmldeclaration/</guid>
      <description>&lt;p&gt;Consider the following xml file:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&amp;lt;?xml version=&amp;#34;1.0&amp;#34; encoding=&amp;#34;utf-8&amp;#34; ?&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&amp;lt;!-- some comment --&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;root&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/root&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&amp;lt;!-- another comment --&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If you look at the &lt;a href=&#34;http://www.w3.org/TR/REC-xml/#sec-well-formed&#34;&gt;Well-Formed XML Documents&lt;/a&gt; section in the &lt;a href=&#34;http://www.w3.org/TR/REC-xml/&#34;&gt;XML specification&lt;/a&gt; you see that a well-formed document is defined as:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;[1] document ::= &lt;a href=&#34;http://www.w3.org/TR/REC-xml/#NT-prolog&#34;&gt;prolog&lt;/a&gt; &lt;a href=&#34;http://www.w3.org/TR/REC-xml/#NT-element&#34;&gt;element&lt;/a&gt; &lt;a href=&#34;http://www.w3.org/TR/REC-xml/#NT-Misc&#34;&gt;Misc*&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;Since there is only 1 root element (ever), i assumed that if you &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.xml.xmldocument.load.aspx&#34;&gt;Load&lt;/a&gt; this file with &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.xml.xmldocument.aspx&#34;&gt;XmlDocument&lt;/a&gt; their would be only one &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.xml.xmlnode.aspx&#34;&gt;XmlNode&lt;/a&gt; in the document &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.xml.xmlnode.childnodes.aspx&#34;&gt;ChildNodes&lt;/a&gt;. In reality there ChildNodes.Count returns 4.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Introducing DeferredExecutionHelper</title>
      <link>https://timvw.be/2008/02/23/introducing-deferredexecutionhelper/</link>
      <pubDate>Sat, 23 Feb 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/02/23/introducing-deferredexecutionhelper/</guid>
      <description>&lt;p&gt;Sometimes i don&amp;rsquo;t want a costly function to be performed unless it&amp;rsquo;s really necessary. In Patterns of Enterprise Application Architecture it&amp;rsquo;s described as &lt;a href=&#34;http://www.martinfowler.com/eaaCatalog/lazyLoad.html&#34;&gt;Lazy Load&lt;/a&gt;. Anyway, in order to achieve that i&amp;rsquo;ve written a wrapper for &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.runtime.remoting.proxies.realproxy.aspx&#34;&gt;RealProxy&lt;/a&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;DeferredExecutionHelper&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; IList&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;Tresult&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; GetListHelper&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; TResult&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;(&lt;/span&gt;Func&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; IList&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;Tresult&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt; costlyFunction&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; T t&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; Proxy&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; IList&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;Tresult&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&amp;gt;(&lt;/span&gt;costlyFunction&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; t&lt;span style=&#34;color:#1f2328&#34;&gt;).&lt;/span&gt;ResultProxy&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; TResult GetHelper&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; TResult&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;(&lt;/span&gt;Func&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; TResult&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; costlyFunction&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; T t&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;where&lt;/span&gt; TResult &lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt; MarshalByRefObject&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; Proxy&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; TResult&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;(&lt;/span&gt;costlyFunction&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; t&lt;span style=&#34;color:#1f2328&#34;&gt;).&lt;/span&gt;ResultProxy&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Here are a couple of unittests that demonstrate how the wrapper can be used for MarshalByRefObjects&lt;/p&gt;</description>
    </item>
    <item>
      <title>Generating Artifacts By Using Text Templates</title>
      <link>https://timvw.be/2008/02/21/generating-artifacts-by-using-text-templates/</link>
      <pubDate>Thu, 21 Feb 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/02/21/generating-artifacts-by-using-text-templates/</guid>
      <description>&lt;p&gt;Since i remember myself thinking &amp;ldquo;I should look up that .tt templating thing&amp;rdquo; already a couple of times and always forgot to actually do so, i&amp;rsquo;m posting it here: &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/bb126445.aspx&#34;&gt;Generating Artifacts By Using Text Templates&lt;/a&gt;. The tools comes with the &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/bb166441(VS.80).aspx&#34;&gt;Visual Studio SDK&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How the name of an embedded resource is generated in a C# project</title>
      <link>https://timvw.be/2008/02/20/how-the-name-of-an-embedded-resource-is-generated-in-a-c%23-project/</link>
      <pubDate>Wed, 20 Feb 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/02/20/how-the-name-of-an-embedded-resource-is-generated-in-a-c%23-project/</guid>
      <description>&lt;p&gt;A while ago i was wondering how the name of an embedded resource is generated in a C# project. Earlier today i was looking in Microsoft.CSharp.targets and found the answer&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;The CreateManifestResourceNames target create the manifest resource names from the .RESX files.&lt;/p&gt;&#xA;&lt;p&gt;[IN]&#xA;@(ResxWithNoCulture) - The names the non-culture .RESX files.&#xA;@(ResxWithCulture) - The names the culture .RESX files.&#xA;@(NonResxWithNoCulture) - The names of the non-culture non-RESX files (like bitmaps, etc).&#xA;@(NonResxWithCulture) - The names of the culture non-RESX files (like bitmaps, etc).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updating Assembly References with TFS</title>
      <link>https://timvw.be/2008/02/18/updating-assembly-references-with-tfs/</link>
      <pubDate>Mon, 18 Feb 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/02/18/updating-assembly-references-with-tfs/</guid>
      <description>&lt;p&gt;A while ago i &lt;a href=&#34;http://www.timvw.be/programming-the-csproj-file/&#34;&gt;posted some code that allows you to update the Assembly references&lt;/a&gt;. Here is some code that uses the &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/bb130146(VS.80).aspx&#34;&gt;Team Foundation Server SDK&lt;/a&gt; that checks the csproj files out and updates their references. Afterwards it&amp;rsquo;s possible to check the modified csproj files in with a reference to a WorkItem (or to undo the checkout in case no modifications were made).&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; Main&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; tfsServerName &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;tfsrtm08&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; projectsPath &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;@&amp;#34;D:\Projects&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteLine&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Connecting to TFS [&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;+&lt;/span&gt; tfsServerName &lt;span style=&#34;color:#1f2328&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;]...&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;TeamFoundationServer teamFoundationServer &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; TeamFoundationServerFactory&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetServer&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; tfsServerName &lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteLine&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; Environment&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;NewLine &lt;span style=&#34;color:#1f2328&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Modified ProjectFiles:&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;List&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;workspace&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; workSpacesWithUpdatedProjectFiles &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; UpdateReferencesInProjectFiles&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; teamFoundationServer&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; projectsPath &lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteLine&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; Environment&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;NewLine &lt;span style=&#34;color:#1f2328&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Modified Workspaces: &amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;foreach&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; Workspace workSpace &lt;span style=&#34;color:#cf222e&#34;&gt;in&lt;/span&gt; workSpacesWithUpdatedProjectFiles &lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteLine&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; workSpace&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Name &lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#57606a&#34;&gt;//int workItemId = -1;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#57606a&#34;&gt;//CheckInPendingChanges( teamFoundationServer, workItemId, workSpacesWithUpdatedProjectFiles );&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Write&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;{0}Press any key to continue...&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; Environment&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;NewLine &lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ReadKey&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; List&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;workspace&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; UpdateReferencesInProjectFiles&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; TeamFoundationServer teamFoundationServer&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; projectsPath &lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;VersionControlServer versionControlServer &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;VersionControlServer&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; teamFoundationServer&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetService&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;typeof&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; VersionControlServer &lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;List&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;workspace&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; workSpacesWithUpdatedProjectFiles &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; List&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;workspace&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;foreach&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; projectFileName &lt;span style=&#34;color:#cf222e&#34;&gt;in&lt;/span&gt; ProjectFile&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Find&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; projectsPath &lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;Workspace workSpace &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; versionControlServer&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetWorkspace&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; Path&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetFullPath&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; projectFileName &lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;workSpace&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;PendEdit&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; projectFileName &lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; UpdateReferencesInProjectFile&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; projectFileName &lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteLine&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; projectFileName &lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;!&lt;/span&gt;workSpacesWithUpdatedProjectFiles&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Contains&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; workSpace &lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;workSpacesWithUpdatedProjectFiles&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; workSpace &lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;workSpace&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Undo&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; projectFileName &lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; workSpacesWithUpdatedProjectFiles&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; CheckInPendingChanges&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; TeamFoundationServer teamFoundationServer&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; workItemId&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; List&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;workspace&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; workSpacesWithUpdatedProjectFiles &lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;WorkItemStore workItemStore &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;WorkItemStore&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; teamFoundationServer&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetService&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;typeof&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; WorkItemStore &lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;WorkItem workItem &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; workItemStore&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetWorkItem&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; workItemId &lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;WorkItemCheckinInfo&lt;span style=&#34;color:#1f2328&#34;&gt;[]&lt;/span&gt; workItemChanges &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; WorkItemCheckinInfo&lt;span style=&#34;color:#1f2328&#34;&gt;[]&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; WorkItemCheckinInfo&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; workItem&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; WorkItemCheckinAction&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Associate &lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;};&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;foreach&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; Workspace workSpace &lt;span style=&#34;color:#cf222e&#34;&gt;in&lt;/span&gt; workSpacesWithUpdatedProjectFiles &lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;PendingChange&lt;span style=&#34;color:#1f2328&#34;&gt;[]&lt;/span&gt; pendingChanges &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; workSpace&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetPendingChanges&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;workSpace&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;CheckIn&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; pendingChanges&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Empty&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;null&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; workItemChanges&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;null&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Feel free to download the code: &lt;a href=&#34;http://www.timvw.be/wp-content/code/csharp/ReferenceManager.zip&#34;&gt;ReferenceManager.zip&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Programming the csproj file</title>
      <link>https://timvw.be/2008/01/25/programming-the-csproj-file/</link>
      <pubDate>Fri, 25 Jan 2008 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2008/01/25/programming-the-csproj-file/</guid>
      <description>&lt;p&gt;Imagine that you have a couple of project files that reference framework libraries that are on a buildserver. Upgrading to a newer version requires that you update all the references&amp;hellip; I wrote some wrapper classes (&lt;a href=&#34;http://www.timvw.be/wp-content/code/csharp/ProjectFile.txt&#34;&gt;ProjectFile&lt;/a&gt;, &lt;a href=&#34;http://www.timvw.be/wp-content/code/csharp/AssemblyReference.txt&#34;&gt;AssemblyReference&lt;/a&gt;) that make this tedious task a breeze. Here is an example of their usage&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; path &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;D:\\Projects\\MyProject&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[]&lt;/span&gt; projectFileNames &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; ProjectFile&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Find&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;path&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;foreach&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; projectFileName &lt;span style=&#34;color:#cf222e&#34;&gt;in&lt;/span&gt; projectFileNames&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;ProjectFile projectFile &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; ProjectFile&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;projectFileName&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;bool&lt;/span&gt; updated &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;false&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;foreach&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;AssemblyReference assemblyReference &lt;span style=&#34;color:#cf222e&#34;&gt;in&lt;/span&gt; projectFile&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;AssemblyReferences&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;assemblyReference&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;HintPath&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ToLower&lt;span style=&#34;color:#1f2328&#34;&gt;().&lt;/span&gt;StartsWith&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;\\\\buildserver\\framework\\2.0&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; newHintPath &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; assemblyReference&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;HintPath&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Replace&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;\\2.0\\&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;\\2.1\\&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;assemblyReference&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;HintPath &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; newHintPath&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;AssemblyName assemblyName &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; AssemblyName&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetAssemblyName&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;assemblyReference&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;HintPath&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;assemblyReference&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;AssemblyName &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; assemblyName&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;FullName &lt;span style=&#34;color:#1f2328&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;, processorArchitecture=&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;+&lt;/span&gt; assemblyName&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ProcessorArchitecture&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;updated &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;updated&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;projectFile&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Save&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Edit:&lt;/strong&gt; Be careful because it might be possible that the code changes the encoding of your csproj file (and it seems that the TFS 2005 merge tool doesn&amp;rsquo;t like that). Currently files are written as UTF-8, which is the default for VS2005 csproj files.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Build your own netstat.exe with c#</title>
      <link>https://timvw.be/2007/09/09/build-your-own-netstat.exe-with-c/</link>
      <pubDate>Sun, 09 Sep 2007 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2007/09/09/build-your-own-netstat.exe-with-c/</guid>
      <description>&lt;p&gt;Earlier today i wrote ManagedIpHelper, a wrapper for &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/aa366073.aspx&#34;&gt;IP Helper API&lt;/a&gt; it&amp;rsquo;s &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/aa365928.aspx&#34;&gt;GetExtendedTcpTable&lt;/a&gt;. Using this wrapper i could easily create my own version of netstat.exe. The following code generates the same output (but much faster) than &amp;ldquo;netstat.exe -anvbp tcp&amp;rdquo;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; Main&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[]&lt;/span&gt; args&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteLine&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Active Connections&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteLine&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteLine&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34; Proto Local Address Foreign Address State PID&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;foreach&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;TcpRow tcpRow &lt;span style=&#34;color:#cf222e&#34;&gt;in&lt;/span&gt; ManagedIpHelper&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetExtendedTcpTable&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteLine&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34; {0,-7}{1,-23}{2, -23}{3,-14}{4}&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;TCP&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; tcpRow&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;LocalEndPoint&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; tcpRow&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;RemoteEndPoint&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; tcpRow&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;State&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; tcpRow&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ProcessId&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;Process process &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; Process&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetProcessById&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;tcpRow&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ProcessId&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;process&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ProcessName &lt;span style=&#34;color:#1f2328&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;System&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;foreach&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;ProcessModule processModule &lt;span style=&#34;color:#cf222e&#34;&gt;in&lt;/span&gt; process&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Modules&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteLine&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34; {0}&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; processModule&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;FileName&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteLine&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34; [{0}]&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; Path&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetFileName&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;process&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;MainModule&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;FileName&lt;span style=&#34;color:#1f2328&#34;&gt;));&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteLine&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34; -- unknown component(s) --&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteLine&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34; [{0}]&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;System&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteLine&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Write&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;{0}Press any key to continue...&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; Environment&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;NewLine&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ReadKey&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;As always, feel free to download the code for the &lt;a href=&#34;http://www.timvw.be/wp-content/code/csharp/managediphelperanddemo.zip&#34;&gt;ManagedIpHelper and demo&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Presenting SqlCeClientFactory</title>
      <link>https://timvw.be/2007/09/09/presenting-sqlceclientfactory/</link>
      <pubDate>Sun, 09 Sep 2007 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2007/09/09/presenting-sqlceclientfactory/</guid>
      <description>&lt;p&gt;Apart from Microsoft.SqlServerCe.Client.SqlCeClientFactory in Microsoft.SqlServerCe.Client (an undocumented and unsupported library) there is no DbProviderFactory for System.Data.SqlServerCe. Today i decided to write a SqlCeClientFactory&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;SqlCeClientFactory&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt; DbProviderFactory&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;readonly&lt;/span&gt; SqlCeClientFactory Instance &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; SqlCeClientFactory&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;override&lt;/span&gt; DbCommand CreateCommand&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; SqlCeCommand&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;override&lt;/span&gt; DbCommandBuilder CreateCommandBuilder&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; SqlCeCommandBuilder&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;override&lt;/span&gt; DbConnection CreateConnection&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; SqlCeConnection&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;override&lt;/span&gt; DbDataAdapter CreateDataAdapter&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; SqlCeDataAdapter&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;override&lt;/span&gt; DbParameter CreateParameter&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; SqlCeParameter&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;As you can see, the implementation is trivial, so i still wonder why microsoft didn&amp;rsquo;t provide it. Anyway, here is how our App.config would look like if we wanted to register and use the SqlCeClientFactory (we could also install the assembly in the GAC and edit machine.config so that all applications can take advantage of it)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Query a Web Service hosted outside IIS with it&#39;s DNS name</title>
      <link>https://timvw.be/2007/09/08/query-a-web-service-hosted-outside-iis-with-its-dns-name/</link>
      <pubDate>Sat, 08 Sep 2007 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2007/09/08/query-a-web-service-hosted-outside-iis-with-its-dns-name/</guid>
      <description>&lt;p&gt;Yesterday someone asked the following:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;div&gt;&#xA;  I am developing a Web Service inside a Windows Service via the soap.tcp protocol. This all works, and I have created the webservice at soap.tcp://localhost:9090/BookService.&lt;/p&gt; &#xA;  &lt;p&gt;&#xA;    However, when I set the Url to soap.tcp://example.com:9090/BookService on my local machine, I get an exception that the computer actively refused the connection.&#xA;  &lt;/p&gt;&#xA;&lt;/div&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;My first attempt was to simulate the problem. I added an entry in my hosts file so that example.com resolves to 192.168.10.1 (My machine&amp;rsquo;s IP address) and wrote the following code&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using DateTimePicker and Custom Format</title>
      <link>https://timvw.be/2007/08/29/using-datetimepicker-and-custom-format/</link>
      <pubDate>Wed, 29 Aug 2007 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2007/08/29/using-datetimepicker-and-custom-format/</guid>
      <description>&lt;p&gt;Today we ran into a nasty problem with &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.windows.forms.datetimepickerformat.aspx&#34;&gt;DateTimePickerFormat&lt;/a&gt;.Custom. We allow the user to input a month/date with a DateTimePicker as following (nothing fancy)&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; Form1_Load&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;object&lt;/span&gt; sender&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; EventArgs e&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;dateTimePicker1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Value &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; DateTime&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;2007&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;8&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;31&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;dateTimePicker1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Format &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; DateTimePickerFormat&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Custom&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;dateTimePicker1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;CustomFormat &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;MM/yyyy&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now, change to 09/2007 and notice that you get an Exception, because the control tries to create an unrepresentable new DateTime(2007, 8+1, 31). Thus, if you&amp;rsquo;re going to use the DateTimePicker for MM/yyyy input make sure to set it&amp;rsquo;s value to a DateTimeTime with a day component that exists for all months/years (thus a value between 1 and 28).&lt;/p&gt;</description>
    </item>
    <item>
      <title>ClickOnce Deployment is not user-friendly!</title>
      <link>https://timvw.be/2007/08/26/clickonce-deployment-is-not-user-friendly/</link>
      <pubDate>Sun, 26 Aug 2007 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2007/08/26/clickonce-deployment-is-not-user-friendly/</guid>
      <description>&lt;p&gt;Today i was experimenting with &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/t71a733d(VS.80).aspx&#34;&gt;ClickOnce Deployment&lt;/a&gt;. Some people have warned for the elevation of permissions: &lt;a href=&#34;http://www.leastprivilege.com/BewareBeAwareOfClickOnceDefaultSettings.aspx&#34;&gt;Be aware of ClickOnce default settings&lt;/a&gt;. What i find even more annoying is the fact that all you get to see are the following dialogs&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/images/clickonce-permissions-01.gif&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/images/clickonce-permissions-02.gif&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;If the user has to make an informed decision about the permissions he&amp;rsquo;s going to grant to an application he should have atleast an easily accessible dialog that displays the PermissionSet that is being request. &lt;strong&gt;Having to browse to the manifest file to find the PermissionSet is NOT user-friendly!&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>WordPress: Import Blogroll from Sage</title>
      <link>https://timvw.be/2007/08/25/wordpress-import-blogroll-from-sage/</link>
      <pubDate>Sat, 25 Aug 2007 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2007/08/25/wordpress-import-blogroll-from-sage/</guid>
      <description>&lt;p&gt;Earlier today i exported the list with blogs i read from &lt;a href=&#34;http://sage.mozdev.org/&#34;&gt;Sage&lt;/a&gt; and tried to import them into &lt;a href=&#34;http://wordpress.org&#34;&gt;WordPress&lt;/a&gt;. Although all the entries had been processed but none of them appeared. Apparently you have to rename the xmlUrl attribute to htmlUrl in the &lt;a href=&#34;http://en.wikipedia.org/wiki/OPML&#34;&gt;OPML&lt;/a&gt; file. With Vim that&amp;rsquo;s as simple as &amp;ldquo;:%s/xmlUrl/htmlUrl/g&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;Anyway, feel free to see if you find anything interesting in the &lt;a href=&#34;http://www.timvw.be/wp-links-opml.php&#34;&gt;list of blogs i&amp;rsquo;m reading&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Bending the code generation of IExtenderProvider to your will</title>
      <link>https://timvw.be/2007/08/21/bending-the-code-generation-of-iextenderprovider-to-your-will/</link>
      <pubDate>Tue, 21 Aug 2007 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2007/08/21/bending-the-code-generation-of-iextenderprovider-to-your-will/</guid>
      <description>&lt;p&gt;In &lt;a href=&#34;http://www.timvw.be/exploring-codedomserializer/&#34;&gt;Exploring CodeDomSerializer&lt;/a&gt; i already explained how we can modify the code that the Visual Studio designer generates for us. With a typical &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.componentmodel.iextenderprovider.aspx&#34;&gt;IExtenderProvider&lt;/a&gt; the designer generates an initializer, SetXXX methods and a variable declaration, which looks like&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;constantsExtenderProvider1 &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; WindowsApplication1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ConstantsExtenderProvider&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;constantsExtenderProvider1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;SetConstants&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;button1&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[]&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Operation1&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Operation5&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;});&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;constantsExtenderProvider1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;SetConstants&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;null&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; ConstantsExtenderProvider constantsExtenderProvider1&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now, what if we&amp;rsquo;re not happy with those generated SetXXX methods on each Component? The problem is that this code is not generated by the serializer for the ConstantsExtenderProvider but by the serializers for the Components. An easy workaround for this problem is to set the &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.componentmodel.designerserializationvisibilityattribute.aspx&#34;&gt;DesignerSerializationVisibilityAttribute&lt;/a&gt; on the GetXXX method in our IExtenderProvider to &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.componentmodel.designerserializationvisibility.aspx&#34;&gt;Hidden&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Exploring CodeDomSerializer</title>
      <link>https://timvw.be/2007/08/17/exploring-codedomserializer/</link>
      <pubDate>Fri, 17 Aug 2007 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2007/08/17/exploring-codedomserializer/</guid>
      <description>&lt;p&gt;Sometimes we want absolute control over the code that the visual studio designer generates. Imagine that we have a UserControl with a Number property and instead of the default &amp;ldquo;this.userControl1.Number = 27;&amp;rdquo; code that the designer would generate we want it like &amp;ldquo;this.userControl1.Number = 1 + 3 + 23&amp;rdquo;. In order to achieve this we first have to inform the designer that we want custom serialization. This is done by adding a &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.componentmodel.design.serialization.designerserializerattribute.aspx&#34;&gt;DesignerSerializerAttribute&lt;/a&gt; to our UserControl&lt;/p&gt;</description>
    </item>
    <item>
      <title>StreamHelper</title>
      <link>https://timvw.be/2007/08/17/streamhelper/</link>
      <pubDate>Fri, 17 Aug 2007 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2007/08/17/streamhelper/</guid>
      <description>&lt;p&gt;The following is an example of a classic mistake for people that read from a &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.io.stream.aspx&#34;&gt;Stream&lt;/a&gt;&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;div&gt;&#xA;  Basically I think I&#39;ve discovered a bug or limitation of the HttpListenerRequest that I can&#39;t find documented anywhere and am unsure how to proceed.&lt;/p&gt; &#xA;  &lt;p&gt;&#xA;    Basically, I&#39;ve been trying to write a function to strip any uploaded files out of the InputStream of the HttpListenerRequest. The function works fine until the files are over 128kb (ish).&#xA;  &lt;/p&gt;</description>
    </item>
    <item>
      <title>List string resources</title>
      <link>https://timvw.be/2007/08/11/list-string-resources/</link>
      <pubDate>Sat, 11 Aug 2007 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2007/08/11/list-string-resources/</guid>
      <description>&lt;p&gt;Earlier today someone asked how he could list the string resources (name, value and comment) in a Resource file. Here is some code that generates a nice list of the information&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; Main&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[]&lt;/span&gt; args&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;DislayResourceStrings&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;GetResourceStrings&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;@&amp;#34;C:\Resource1.resx&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;));&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Write&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;{0}Press any key to continue...&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; Environment&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;NewLine&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ReadKey&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; List&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;resourceString&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; GetResourceStrings&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; path&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;List&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;resourceString&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; resourceStrings &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; List&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;resourceString&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;XPathDocument doc &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; XPathDocument&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;path&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;foreach&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;XPathNavigator node &lt;span style=&#34;color:#cf222e&#34;&gt;in&lt;/span&gt; doc&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;CreateNavigator&lt;span style=&#34;color:#1f2328&#34;&gt;().&lt;/span&gt;Select&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;//data&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; type &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; node&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetAttribute&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Empty&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;type &lt;span style=&#34;color:#1f2328&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Empty&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;XPathNavigator nav&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; name &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; node&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetAttribute&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Empty&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;nav &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; node&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;SelectSingleNode&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;./value&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;value&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; nav &lt;span style=&#34;color:#1f2328&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;null&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;?&lt;/span&gt; nav&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Value &lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Empty&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;nav &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; node&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;SelectSingleNode&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;./comment&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; comment &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; nav &lt;span style=&#34;color:#1f2328&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;null&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;?&lt;/span&gt; nav&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Value &lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Empty&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;resourceStrings&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; ResourceString&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;name&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;value&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; comment&lt;span style=&#34;color:#1f2328&#34;&gt;));&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; resourceStrings&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; DisplayResourceStrings&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;List&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;resourceString&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; resourceStrings&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; format &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;{0, -25} {1, -25} {2, -25}&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteLine&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;format&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Name&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Value&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Comment&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteLine&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;format&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;---&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;----&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;-----&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;foreach&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;ResourceString resourceString &lt;span style=&#34;color:#cf222e&#34;&gt;in&lt;/span&gt; resourceStrings&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteLine&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;format&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; resourceString&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Name&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; resourceString&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Value&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; resourceString&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Comment&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;struct&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;ResourceString&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; Name&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; Value&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; Comment&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; ResourceString&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; name&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;value&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; comment&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Name &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; name&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Value &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;value&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Comment &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; comment&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Debugging custom UITypeEditors</title>
      <link>https://timvw.be/2007/08/10/debugging-custom-uitypeeditors/</link>
      <pubDate>Fri, 10 Aug 2007 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2007/08/10/debugging-custom-uitypeeditors/</guid>
      <description>&lt;p&gt;If you read this you&amp;rsquo;re probably gonna think: What a moron! Anyway, i&amp;rsquo;m sharing this in the hope that i&amp;rsquo;ll be the last to undergo the following. In order to test my custom &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.drawing.design.uitypeeditor.aspx&#34;&gt;UITypeEditor&lt;/a&gt; i did the following&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Create a &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.windows.forms.usercontrol.aspx&#34;&gt;UserControl&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Add a property to the control&lt;/li&gt;&#xA;&lt;li&gt;Add an &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.componentmodel.editorattribute.aspx&#34;&gt;Editor&lt;/a&gt; attribute to the property&lt;/li&gt;&#xA;&lt;li&gt;Build&lt;/li&gt;&#xA;&lt;li&gt;Drag a UserControl on the designer form&lt;/li&gt;&#xA;&lt;li&gt;Test via Visual Studio&amp;rsquo;s Property Window if the UITypeEditor works as expected&lt;/li&gt;&#xA;&lt;li&gt;Everytime i changed some code: &lt;strong&gt;Restart Visual Studio&lt;/strong&gt;, load the project and repeat 6.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;A tedious task to say the least. Yesterday i figured out that i could &lt;strong&gt;drag a &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.windows.forms.propertygrid.aspx&#34;&gt;PropertyGrid&lt;/a&gt; on the designer form, and set it&amp;rsquo;s SelectedObject property to a class with a property that uses the custom UITypeEditor; Instead of having to reload visual studio i can simply start a debug session, and click on the property in the PropertyGrid.&lt;/strong&gt; Now it&amp;rsquo;s a breeze to develop custom UITypeEditors.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Helper methods for DbProviderFactory</title>
      <link>https://timvw.be/2007/08/07/helper-methods-for-dbproviderfactory/</link>
      <pubDate>Tue, 07 Aug 2007 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2007/08/07/helper-methods-for-dbproviderfactory/</guid>
      <description>&lt;p&gt;Here are a couple of functions that make it easier to take advantage of the DbProviderFactory to create DbConnections&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; DbConnection GetDbConnection&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; connectionStringName&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; GetDbConnection&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;ConfigurationManager&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ConnectionStrings&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;connectionStringName&lt;span style=&#34;color:#1f2328&#34;&gt;]);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; DbConnection GetDbConnection&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;ConnectionStringSettings connectionStringSettings&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; GetDbConnection&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;connectionStringSettings&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ProviderName&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; connectionStringSettings&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ConnectionString&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; DbConnection GetDbConnection&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; providerInvariantName&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; connectionString&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;DbConnection connection &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; DbProviderFactories&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetFactory&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;providerInvariantName&lt;span style=&#34;color:#1f2328&#34;&gt;).&lt;/span&gt;CreateConnection&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;connection&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ConnectionString &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; connectionString&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; connection&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Using these functions, the pattern for querying a database could be something as following:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;using&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;DbConnection conn &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; GetDbConnection&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Local_Northwind&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;conn&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Open&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;using&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;DbCommand cmd &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; conn&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;CreateCommand&lt;span style=&#34;color:#1f2328&#34;&gt;())&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;cmd&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;CommandText &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;SELECT EmployeeID, FirstName, LastName FROM Employees&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;using&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;DbDataReader reader &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; cmd&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ExecuteReader&lt;span style=&#34;color:#1f2328&#34;&gt;())&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#57606a&#34;&gt;// process the result&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Professional SQL Server 2005 Reporting Services</title>
      <link>https://timvw.be/2007/08/04/professional-sql-server-2005-reporting-services/</link>
      <pubDate>Sat, 04 Aug 2007 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2007/08/04/professional-sql-server-2005-reporting-services/</guid>
      <description>&lt;p&gt;Last couple of days i&amp;rsquo;ve been reading &lt;a href=&#34;http://www.wrox.com/WileyCDA/WroxTitle/productCd-0764568787.html&#34;&gt;Professional SQL Server Reporting Services&lt;/a&gt;. Today i wanted to display some images so i decided to use the Northwind database which has an Employees table that contains photos.. I set the MIMEType to image/bmp, Source to Database and Value to =Fields!Photo.Value but i kept getting a red cross instead of the image&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/images/reportingservices-01.gif&#34; alt=&#34;image of a sql server reporting service report where an error box appears instead of the image&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Exploring formatting...</title>
      <link>https://timvw.be/2007/07/28/exploring-formatting.../</link>
      <pubDate>Sat, 28 Jul 2007 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2007/07/28/exploring-formatting.../</guid>
      <description>&lt;p&gt;In the documentation you can read the following for &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.globalization.cultureinfo.aspx&#34;&gt;CultureInfo&lt;/a&gt;&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;div&gt;&#xA;  The CultureInfo class holds culture-specific information, such as the associated language, sublanguage, country/region, calendar, and cultural conventions. This class also provides access to culture-specific instances of DateTimeFormatInfo, NumberFormatInfo, CompareInfo, and TextInfo. These objects contain the information required for culture-specific operations, such as casing, formatting dates and numbers, and comparing strings.&#xA;&lt;/div&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;First i&amp;rsquo;ll initialize an instance of a customized CultureInfo and install it in the current thread:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using interfaces with Drag and Drop</title>
      <link>https://timvw.be/2007/07/26/using-interfaces-with-drag-and-drop/</link>
      <pubDate>Thu, 26 Jul 2007 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2007/07/26/using-interfaces-with-drag-and-drop/</guid>
      <description>&lt;p&gt;Earlier today i was refactoring some graphical components. I wanted to use an interface instead of concrete implementations for my drag and drop code&amp;hellip; Although i was using an instance of Foo, and thus IFoo, the following code never allowed me to drop&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;interface&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;IFoo&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Foo&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt; IFoo &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; label1_MouseDown&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;object&lt;/span&gt; sender&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; MouseEventArgs e&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;DoDragDrop&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; Foo&lt;span style=&#34;color:#1f2328&#34;&gt;(),&lt;/span&gt; DragDropEffects&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;All&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; Form1_DragEnter&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;object&lt;/span&gt; sender&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; DragEventArgs e&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#57606a&#34;&gt;// for an instance of Foo it returns false,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#57606a&#34;&gt;// if you use typeof(Foo) it returns true though...&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;e&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Data&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetDataPresent&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;typeof&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;IFoo&lt;span style=&#34;color:#1f2328&#34;&gt;)))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;e&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Effect &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; DragDropEffects&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;All&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Simply wrapping the concrete instance in a &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.windows.forms.dataobject(VS.80).aspx&#34;&gt;DataObject&lt;/a&gt; results in the desired behaviour&lt;/p&gt;</description>
    </item>
    <item>
      <title>Pondering about DateTime and it&#39;s Ticks...</title>
      <link>https://timvw.be/2007/07/18/pondering-about-datetime-and-its-ticks.../</link>
      <pubDate>Wed, 18 Jul 2007 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2007/07/18/pondering-about-datetime-and-its-ticks.../</guid>
      <description>&lt;p&gt;Recently someone was able to convince me that there is no problem with using &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/System.Datetime.aspx&#34;&gt;System.DateTime&lt;/a&gt; for the storage of localtimes (even if DST is in effect), because it works with &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.datetime.ticks.aspx&#34;&gt;Ticks&lt;/a&gt; and i bought into his base + offset story&amp;hellip;. The following table explains his reasoning&lt;/p&gt;&#xA;&lt;table width=&#34;100%&#34;&gt;&#xA;  &lt;tr&gt;&#xA;    &lt;th style=&#34;width: 33%&#34;&gt;&#xA;      Utc&#xA;    &lt;/th&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;th style=&amp;quot;width: 33%&amp;quot;&amp;gt;&#xA;  Localtime&#xA;&amp;lt;/th&amp;gt;&#xA;&#xA;&amp;lt;th style=&amp;quot;width: 33%&amp;quot;&amp;gt;&#xA;  Ticks (Localtime)&#xA;&amp;lt;/th&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;  &lt;/tr&gt;&#xA;  &lt;tr&gt;&#xA;    &lt;td&gt;&#xA;      2007-10-27 23:59:59&#xA;    &lt;/td&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;&#xA;  2007-10-28 01:59:59&#xA;&amp;lt;/td&amp;gt;&#xA;&#xA;&amp;lt;td&amp;gt;&#xA;  63329133&amp;lt;b&amp;gt;599&amp;lt;/b&amp;gt;0000000&#xA;&amp;lt;/td&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;  &lt;/tr&gt;&#xA;  &lt;tr style=&#34;background-color: orange&#34;&gt;&#xA;    &lt;td&gt;&#xA;      +1 second&#xA;    &lt;/td&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;&#xA;  2007-10-28 02:00:00&#xA;&amp;lt;/td&amp;gt;&#xA;&#xA;&amp;lt;td&amp;gt;&#xA;  63329133&amp;lt;b&amp;gt;600&amp;lt;/b&amp;gt;0000000&#xA;&amp;lt;/td&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;  &lt;/tr&gt;&#xA;  &lt;tr&gt;&#xA;    &lt;td&gt;&#xA;      +2 seconds&#xA;    &lt;/td&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;&#xA;  2007-10-28 02:00:01&#xA;&amp;lt;/td&amp;gt;&#xA;&#xA;&amp;lt;td&amp;gt;&#xA;  63329133&amp;lt;b&amp;gt;601&amp;lt;/b&amp;gt;0000000&#xA;&amp;lt;/td&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;  &lt;/tr&gt;&#xA;  &lt;tr&gt;&#xA;    &lt;td&gt;&#xA;      +60 minutes&#xA;    &lt;/td&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;&#xA;  2007-10-28 02:59:59&#xA;&amp;lt;/td&amp;gt;&#xA;&#xA;&amp;lt;td&amp;gt;&#xA;  63329137&amp;lt;b&amp;gt;199&amp;lt;/b&amp;gt;0000000&#xA;&amp;lt;/td&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;  &lt;/tr&gt;&#xA;  &lt;tr&gt;&#xA;    &lt;td&gt;&#xA;      +60 minutes and 1 second&#xA;    &lt;/td&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;&#xA;  2007-10-28 02:00:00&#xA;&amp;lt;/td&amp;gt;&#xA;&#xA;&amp;lt;td&amp;gt;&#xA;  63329133&amp;lt;b&amp;gt;200&amp;lt;/b&amp;gt;0000000&#xA;&amp;lt;/td&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;  &lt;/tr&gt;&#xA;  &lt;tr&gt;&#xA;    &lt;td&gt;&#xA;      +60 minutes and 2 seconds&#xA;    &lt;/td&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;&#xA;  2007-10-28 02:00:01&#xA;&amp;lt;/td&amp;gt;&#xA;&#xA;&amp;lt;td&amp;gt;&#xA;  63329133&amp;lt;b&amp;gt;201&amp;lt;/b&amp;gt;0000000&#xA;&amp;lt;/td&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;  &lt;/tr&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;This reasoning gives you the impression that for each second &lt;strong&gt;1&lt;/strong&gt;0000000 is added to the ticks.. However, this is faulty and in reality you get the following&lt;/p&gt;</description>
    </item>
    <item>
      <title>Update from localtime to UTC or any other timezone with Oracle</title>
      <link>https://timvw.be/2007/07/17/update-from-localtime-to-utc-or-any-other-timezone-with-oracle/</link>
      <pubDate>Tue, 17 Jul 2007 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2007/07/17/update-from-localtime-to-utc-or-any-other-timezone-with-oracle/</guid>
      <description>&lt;p&gt;Imagine that you have a table with a column of the type DATETIME. You&amp;rsquo;ve been storing data as localtime and after a while you need to convert these datetimes to UTC. Here&amp;rsquo;s a possible approach&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;UPDATE&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;events&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;SET&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;start&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;SYS_EXTRACT_UTC&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;FROM_TZ&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;start&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;Europe/Brussels&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;));&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You get a more generic variant using the AT TIME ZONE clause&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;UPDATE&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;events&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;SET&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;start&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;FROM_TZ&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;start&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;Europe/Brussels&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;AT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;TIME&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;ZONE&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;America/Denver&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>About Authorization</title>
      <link>https://timvw.be/2007/07/06/about-authorization/</link>
      <pubDate>Fri, 06 Jul 2007 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2007/07/06/about-authorization/</guid>
      <description>&lt;p&gt;Yesterday i visited an evening session about authentication and authorization at &lt;a href=&#34;http://www.compuware.be&#34;&gt;Compuware&lt;/a&gt; (Yes, i&amp;rsquo;ve got interesting collegues that are willing to share their knowledige). Anyway, i left the meeting with a couple of questions&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;How does System.Security.Principal.PrincipalPolicy work under &lt;a href=&#34;http://www.mono-project.com/Main_Page&#34;&gt;Mono&lt;/a&gt;?&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Well, NoPrincipal and UnauthenticatedPrincipal behave exactly the same way as they do in the Microsoft implementation. For the WindowsPrincipal the unix groups are used to determine the result of IsInRole. eg&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;//lists the groups the user timvw is part of:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;//timvw@debian:~$ groups&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;//timvw dialout cdrom floppy audio video plugdev&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;AppDomain&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;CurrentDomain&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;SetPrincipalPolicy&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;PrincipalPolicy&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WindowsPrincipal&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;IPrincipal principal &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; Thread&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;CurrentPrincipal&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[]&lt;/span&gt; roles &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[]&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;floppy&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;wheel&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;};&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;foreach&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; role &lt;span style=&#34;color:#cf222e&#34;&gt;in&lt;/span&gt; roles&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteLine&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;{0} is in the {1} role: {2}.&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; principal&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Identity&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Name&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; role&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; principal&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;IsInRole&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;role&lt;span style=&#34;color:#1f2328&#34;&gt;));&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;// the output:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;//timvw@debian:~$ ./Main.exe&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;//timvw is in the floppy role: True.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;//timvw is in the wheel role: False.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;How are instances of IPrincipal propgated into other threads?&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>About additional precision and unpredicted behaviour...</title>
      <link>https://timvw.be/2007/06/26/about-additional-precision-and-unpredicted-behaviour.../</link>
      <pubDate>Tue, 26 Jun 2007 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2007/06/26/about-additional-precision-and-unpredicted-behaviour.../</guid>
      <description>&lt;p&gt;Earlier today someone posted the following code&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;float&lt;/span&gt; a &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0.12f&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;float&lt;/span&gt; b &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; a &lt;span style=&#34;color:#1f2328&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;100f&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteLine&lt;span style=&#34;color:#1f2328&#34;&gt;((&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; b&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#57606a&#34;&gt;// prints 12&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteLine&lt;span style=&#34;color:#1f2328&#34;&gt;((&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)(&lt;/span&gt;a &lt;span style=&#34;color:#1f2328&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;100f&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;));&lt;/span&gt; &lt;span style=&#34;color:#57606a&#34;&gt;// prints 11 !!!!!!!!&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;An (extensive) explanation for this strange behaviour can be found at &lt;a href=&#34;http://blogs.msdn.com/davidnotario/archive/2005/08/08/449092.aspx&#34;&gt;CLR and floating point: Some answers to common questions&lt;/a&gt;&amp;hellip; A possible way to force the compiler and runtime to get rid of the additional precision would be the following&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteLine&lt;span style=&#34;color:#1f2328&#34;&gt;((&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;float&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)(&lt;/span&gt;a &lt;span style=&#34;color:#1f2328&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;100f&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;));&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Improvements for the SortableBindingList (and TypedList)</title>
      <link>https://timvw.be/2007/05/10/improvements-for-the-sortablebindinglist-and-typedlist/</link>
      <pubDate>Thu, 10 May 2007 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2007/05/10/improvements-for-the-sortablebindinglist-and-typedlist/</guid>
      <description>&lt;p&gt;I found out that the sorting didn&amp;rsquo;t work for &amp;lsquo;Expression&amp;rsquo; properties. My first thought was to add another switch to the logic of the already existing code&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;object&lt;/span&gt; value1 &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; t1&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;object&lt;/span&gt; value2 &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; t2&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;prop&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Name&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;StartsWith&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;||&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#57606a&#34;&gt;// do something to find the &amp;#39;ExpressionProperty&amp;#39; values&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;foreach&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; property &lt;span style=&#34;color:#cf222e&#34;&gt;in&lt;/span&gt; prop&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Name&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Split&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;.&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#57606a&#34;&gt;// navigate through the relations&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;PropertyInfo propertyInfo &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; value1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetType&lt;span style=&#34;color:#1f2328&#34;&gt;().&lt;/span&gt;GetProperty&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;property&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;value1 &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; propertyInfo&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetValue&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;value1&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;null&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;value2 &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; propertyInfo&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetValue&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;value2&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;null&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Since i already have a PropertyDescriptor it seems a lot smarter to use it&amp;rsquo;s GetValue instead&lt;/p&gt;</description>
    </item>
    <item>
      <title>About .Net events in Belgium</title>
      <link>https://timvw.be/2007/05/09/about-.net-events-in-belgium/</link>
      <pubDate>Wed, 09 May 2007 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2007/05/09/about-.net-events-in-belgium/</guid>
      <description>&lt;p&gt;Earlier this evening i visited &amp;ldquo;Visual C++ &amp;lsquo;Orcas&amp;rsquo; and a Microsoft C++ Strategy&amp;rdquo;, an &lt;a href=&#34;http://www.microsoft.com/belux/msdn/nl/default.mspx&#34;&gt;MSDN Belux&lt;/a&gt; event. Since the events are for free, time would be the only thing you can loose&amp;hellip;. But as always with these events, they are worth the time. I even liked the jokes this time ;)) The speaker, Ronald Laeremans, now the Program Unit Manager for Visual C++ talked and kept talking about his passion 🙂 30 minutes after his session &lt;a href=&#34;http://blogs.msdn.com/tommer/&#34;&gt;Tom&lt;/a&gt; eventually found a way to stop him.. I can only recommend that you visit these events too&amp;hellip; Scheduled&lt;/p&gt;</description>
    </item>
    <item>
      <title>Presenting the ExpressionDescriptor</title>
      <link>https://timvw.be/2007/05/08/presenting-the-expressiondescriptor/</link>
      <pubDate>Tue, 08 May 2007 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2007/05/08/presenting-the-expressiondescriptor/</guid>
      <description>&lt;p&gt;A couple of days ago i presented you the &lt;a href=&#34;http://www.timvw.be/presenting-the-typedlistt/&#34;&gt;TypedList&lt;/a&gt; which supports navigation through subproperties. Another common feature request is the possibility to add a column that has a value based on other values in the row (like a DataColumn with it&amp;rsquo;s Expression property set). With the plumbing code i&amp;rsquo;ve written it&amp;rsquo;s as simple as implementing the following interface&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;interface&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;IExpressionProvider&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;componentType&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; PropertyType&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; Name &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;get&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;PropertyType GetValue&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;ComponentType component&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;An example implementation could be an expression that represents the duration of an Appointment&lt;/p&gt;</description>
    </item>
    <item>
      <title>Presenting the TypedList&lt;T&gt;</title>
      <link>https://timvw.be/2007/05/05/presenting-the-typedlistt/</link>
      <pubDate>Sat, 05 May 2007 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2007/05/05/presenting-the-typedlistt/</guid>
      <description>&lt;p&gt;A while ago i presented the &lt;a href=&#34;http://www.timvw.be/presenting-the-sortablebindinglistt/&#34;&gt;SortableBindingList&lt;/a&gt;. One of the nice features you get with DataSets is that you can use relations to navigate through the data. Business Objects don&amp;rsquo;t give you this functionality by default. Today i implemented a BindingList that supports navigation through relations. First i&amp;rsquo;ll present you the Business Objects&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/images/typedlist-1.gif&#34; alt=&#34;screenshot of business objects&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;We would like to create an overview of the appointments using a datagridview&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/images/typedlist-2.gif&#34; alt=&#34;screenshot of wanted ui&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Exploring DataGridViewComboBoxColumn databinding (part2)</title>
      <link>https://timvw.be/2007/05/03/exploring-datagridviewcomboboxcolumn-databinding-part2/</link>
      <pubDate>Thu, 03 May 2007 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2007/05/03/exploring-datagridviewcomboboxcolumn-databinding-part2/</guid>
      <description>&lt;p&gt;A while ago i wrote about &lt;a href=&#34;http://www.timvw.be/exploring-datagridviewcomboboxcolumn-databinding/&#34;&gt;Exploring DataGridViewComboBoxColumn databinding&lt;/a&gt; using Business Objects. Some people asked me to give an example using DataSets&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;ll start with creating a DataSet, add two DataTables, and create a relation on PersonType.Id (int32). In the designer this looks like&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/images/databind-dataset1.gif&#34; alt=&#34;screenshot of dataset designer displaying person and persontype&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Next i create a DataSetDac that will return an instance of a Filled PersonDataSet (In real life you would probably use a TableAdapter and get the data from a database) The code is as simple as&lt;/p&gt;</description>
    </item>
    <item>
      <title>Presenting the MultiPanel</title>
      <link>https://timvw.be/2007/04/29/presenting-the-multipanel/</link>
      <pubDate>Sun, 29 Apr 2007 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2007/04/29/presenting-the-multipanel/</guid>
      <description>&lt;p&gt;A while ago i was thinking that i would be nice to have a control that exposes multiple designer panels, but only shows one at a time&amp;hellip; Somewhat like a TabControl, but without the header.. Anyway, i found out (&lt;a href=&#34;http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1518961&amp;amp;SiteID=1&#34;&gt;here&lt;/a&gt;) that a TabControl can be tweaked into that behaviour&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;MultiPanel&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt; TabControl&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;protected&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;override&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; WndProc&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;ref&lt;/span&gt; Message m&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;m&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Msg &lt;span style=&#34;color:#1f2328&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0x1328&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;!&lt;/span&gt;DesignMode&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;m&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Result &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;IntPtr&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;base&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WndProc&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;ref&lt;/span&gt; m&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In the designer it appears as following&lt;/p&gt;</description>
    </item>
    <item>
      <title>Performing long running tasks in a Windows Application</title>
      <link>https://timvw.be/2007/04/27/performing-long-running-tasks-in-a-windows-application/</link>
      <pubDate>Fri, 27 Apr 2007 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2007/04/27/performing-long-running-tasks-in-a-windows-application/</guid>
      <description>&lt;p&gt;A while ago i blogged about &lt;a href=&#34;http://www.timvw.be/about-thread-safe-gui/&#34;&gt;Thread Safe UI&lt;/a&gt;. Today someone asked the following&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;div&gt;&#xA;  On a form i have a datagridview and two button. One is for insert in a database the values in datagridview, and the other to update data in db.&lt;br /&gt; Now, i would like to have a kind of &#39;progress form&#39; during the insert or the update. At the end, only when the operation is finished, the user can reuse the main form.&#xA;&lt;/div&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;The first thing i do is define a delegate (void Performer()) that will do the work of a long running operation. The reason i do this is because the compiler generates a class Performer that inherits from System.MulticastDelegate and exposes Begin- and EndInvoke methods.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Get the complement of a Color</title>
      <link>https://timvw.be/2007/04/26/get-the-complement-of-a-color/</link>
      <pubDate>Thu, 26 Apr 2007 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2007/04/26/get-the-complement-of-a-color/</guid>
      <description>&lt;p&gt;Here is a simple function that returns the complement of a given Color&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; GetComplement&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;Color color&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; Color&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;FromArgb&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;MaxValue &lt;span style=&#34;color:#1f2328&#34;&gt;--&lt;/span&gt; color&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ToArgb&lt;span style=&#34;color:#1f2328&#34;&gt;());&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Get hexadecimal RGB value from System.Drawing.Color</title>
      <link>https://timvw.be/2007/04/17/get-hexadecimal-rgb-value-from-system.drawing.color/</link>
      <pubDate>Tue, 17 Apr 2007 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2007/04/17/get-hexadecimal-rgb-value-from-system.drawing.color/</guid>
      <description>&lt;p&gt;Here&amp;rsquo;s a simple function that returns the &lt;a href=&#34;http://en.wikipedia.org/wiki/Hexadecimal&#34;&gt;hexadecimal&lt;/a&gt; &lt;a href=&#34;http://en.wikipedia.org/wiki/Rgb&#34;&gt;RGB&lt;/a&gt; value of a &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.drawing.color.aspx&#34;&gt;System.Drawing.Color&lt;/a&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; ToHexadecimalRgb&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;Color color&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; color&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ToArgb&lt;span style=&#34;color:#1f2328&#34;&gt;().&lt;/span&gt;ToString&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;X&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;).&lt;/span&gt;Substring&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;EDIT&lt;/strong&gt; Apparently there is also a &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.drawing.colortranslator.aspx&#34;&gt;ColorTranslator&lt;/a&gt; with methods &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.drawing.colortranslator.tohtml.aspx&#34;&gt;ToHtml&lt;/a&gt; and &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.drawing.colortranslator.fromhtml.aspx&#34;&gt;FromHtml&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Programming .NET Components</title>
      <link>https://timvw.be/2007/04/07/programming-.net-components/</link>
      <pubDate>Sat, 07 Apr 2007 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2007/04/07/programming-.net-components/</guid>
      <description>&lt;p&gt;I couple of weeks ago i got a copy of &lt;a href=&#34;http://www.oreilly.com/catalog/pnetcomp2/&#34;&gt;Programming .NET Components&lt;/a&gt;&amp;hellip; I can only suggest to read it yourself because i found it really good 😉 Anyway, in one of the chapters &lt;a href=&#34;http://www.oreillynet.com/pub/au/741&#34;&gt;Juval Lowy&lt;/a&gt; talks about context and interception (&lt;a href=&#34;http://msdn.microsoft.com/msdnmag/issues/03/03/ContextsinNET/default.aspx&#34;&gt;msdnmag article&lt;/a&gt;). I got inspired and implemented my own log4net LoggingSink&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;LoggingSink&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt; IMessageSink&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;...&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; IMessage SyncProcessMessage&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;IMessage msg&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;IMethodMessage methodMessage &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; msg &lt;span style=&#34;color:#cf222e&#34;&gt;as&lt;/span&gt; IMethodMessage&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;ILog log &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; LogManager&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetLogger&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;methodMessage&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;TypeName&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;log&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Debug&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;methodMessage&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;IMessage message &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;nextSink&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;SyncProcessMessage&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;msg&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;IMethodReturnMessage methodReturnMessage &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; message &lt;span style=&#34;color:#cf222e&#34;&gt;as&lt;/span&gt; IMethodReturnMessage&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;methodReturnMessage &lt;span style=&#34;color:#1f2328&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;null&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;log&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Debug&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;methodReturnMessage&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; message&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I also implemented my own MethodMessageRenderer and MethodReturnMessageRenderer using an ObjectRenderer that was inspired on the ObjectDumper that comes with the &lt;a href=&#34;http://blogs.msdn.com/charlie/archive/2007/03/01/february-ctp-now-available.aspx&#34;&gt;LINQ CTP samples&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>DataGridView to Excel</title>
      <link>https://timvw.be/2007/04/05/datagridview-to-excel/</link>
      <pubDate>Thu, 05 Apr 2007 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2007/04/05/datagridview-to-excel/</guid>
      <description>&lt;p&gt;The &lt;a href=&#34;http://www.carlosag.net/Tools/ExcelXmlWriter/Default.aspx&#34;&gt;CarlosAg Excel Xml Writer Library&lt;/a&gt; does not require &lt;a href=&#34;http://office.microsoft.com/en-us/excel/default.aspx&#34;&gt;Excel&lt;/a&gt; in order to generate Excel Workbooks. I already presented a method to print a DataGridView (&lt;a href=&#34;http://www.timvw.be/print-a-control/&#34;&gt;here&lt;/a&gt;) and now i present you a method that allows you to export a DataGridView to an Excel Workbook: &lt;a href=&#34;http://www.timvw.be/wp-content/code/csharp/DataGridViewToExcel.zip&#34;&gt;DataGridViewToExcel.zip&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/images/datagridview-to-excel-1.gif&#34; alt=&#34;screenshot of the source datagridview&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/images/datagridview-to-excel-2.gif&#34; alt=&#34;screenshot of the generated excel workbook&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Developer &amp; IT Pro Days 2007</title>
      <link>https://timvw.be/2007/03/29/developer-it-pro-days-2007/</link>
      <pubDate>Thu, 29 Mar 2007 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2007/03/29/developer-it-pro-days-2007/</guid>
      <description>&lt;p&gt;Last days i&amp;rsquo;ve visited a couple of interesting sessions at the &lt;a href=&#34;http://www.microsoft.com/belux/devitprodays/&#34;&gt;Developer &amp;amp; IT Pro Days 2007&lt;/a&gt;. All in all the event was pretty well organised&amp;hellip; In the closing word of the event, &lt;a href=&#34;http://blogs.msdn.com/czhower/&#34;&gt;Chad Z. Hower&lt;/a&gt; found himself quite funny when he set the title of a form in an exception throwing application to &amp;lsquo;Java Application&amp;rsquo;. Unlike the rest of the crowd i didn&amp;rsquo;t see the humor in it&amp;hellip; Anyway, when his Visual Studio Orcas started choking i wet my pants too 😉&lt;/p&gt;</description>
    </item>
    <item>
      <title>Simulate AutoIncrement</title>
      <link>https://timvw.be/2007/03/24/simulate-autoincrement/</link>
      <pubDate>Sat, 24 Mar 2007 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2007/03/24/simulate-autoincrement/</guid>
      <description>&lt;p&gt;Earlier today someone asked the following&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;div&gt;&#xA;  I&#39;m trying to move selected data from one table to another. The following works apart from the destination table is not incrementing the ID (I&#39;m not using auto increment for that field).&lt;br /&gt; &lt;br /&gt; How can I increase the value of field_1_id for each select &gt; insert? I&#39;m guessing SQL doesn&#39;t loop through each SELECT match an insert correspondingly?&#xA;&lt;/div&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;Here is a possible answer: (Don&amp;rsquo;t forget to wrap these queries in a transaction if your MySQL Engine supports it)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Little INotifyPropertyChanged helper</title>
      <link>https://timvw.be/2007/03/19/little-inotifypropertychanged-helper/</link>
      <pubDate>Mon, 19 Mar 2007 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2007/03/19/little-inotifypropertychanged-helper/</guid>
      <description>&lt;p&gt;Most implementations of INotifyPropertyChanged look as following (notice that you have to make sure that the hardcoded PropertyName is spelled correctly)&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;MyClass&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt; INotifyPropertyChanged&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;event&lt;/span&gt; PropertyChangedEventHandler PropertyChanged&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; x&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; X&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;get&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;x&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;set&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;x &lt;span style=&#34;color:#1f2328&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;value&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;x &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;value&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;OnPropertyChanged&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;X&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;&#x9;[MethodImpl(MethodImplOptions.NoInlining)]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; Fire&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;Delegate del&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;params&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;object&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[]&lt;/span&gt; args&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;del &lt;span style=&#34;color:#1f2328&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;null&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;foreach&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;Delegate sink &lt;span style=&#34;color:#cf222e&#34;&gt;in&lt;/span&gt; del&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetInvocationList&lt;span style=&#34;color:#1f2328&#34;&gt;())&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;try&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; sink&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;DynamicInvoke&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;args&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;catch&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;protected&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;virtual&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; OnPropertyChanged&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; propertyName &lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Fire&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;PropertyChanged&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; PropertyChangedEventArgs&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; propertyName &lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Everytime you refactor a property you also have to make sure to refactor the string with it&amp;rsquo;s name in the setter method. Here&amp;rsquo;s a helper method that makes life a little easier&lt;/p&gt;</description>
    </item>
    <item>
      <title>Presenting the SortableBindingList&lt;T&gt;</title>
      <link>https://timvw.be/2007/02/22/presenting-the-sortablebindinglistt/</link>
      <pubDate>Thu, 22 Feb 2007 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2007/02/22/presenting-the-sortablebindinglistt/</guid>
      <description>&lt;p&gt;If you are databinding your custom objects (in a Bindinglist of &lt;T&gt;) to a DataGridView you will notice that the users can&amp;rsquo;t sort the rows by clicking on the columnheaders&amp;hellip; Unlike an unbound DataGridView, the SortCompare event is not raised. Here is a class that uses IComparer to implement a BindingList that supports Sorting:&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Please read the &lt;a href=&#34;http://www.timvw.be/presenting-the-sortablebindinglistt-take-two/&#34;&gt;follow up article&lt;/a&gt; to find the updated source code.&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Using this SortableBindingList is as easy as&lt;/p&gt;</description>
    </item>
    <item>
      <title>Don&#39;t wait until the DateTimePicker has lost focus to write back the values</title>
      <link>https://timvw.be/2007/02/07/dont-wait-until-the-datetimepicker-has-lost-focus-to-write-back-the-values/</link>
      <pubDate>Wed, 07 Feb 2007 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2007/02/07/dont-wait-until-the-datetimepicker-has-lost-focus-to-write-back-the-values/</guid>
      <description>&lt;p&gt;Drag a TextBox and a DateTimePicker control on a Form and databind them to a DateTime property, eg&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;partial&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Form1&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt; Form&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; Form1&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;InitializeComponent&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;SimpleObject simpleObject &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; SimpleObject&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;simpleObject&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Birthday &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; DateTime&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Now&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;dateTimePicker1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;DataBindings&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Value&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; simpleObject&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Birthday&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;textBox1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;DataBindings&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Text&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; simpleObject&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Birthday&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; DataSourceUpdateMode&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;OnPropertyChanged&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;SimpleObject&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt; INotifyPropertyChanged&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; DateTime birthday&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;event&lt;/span&gt; PropertyChangedEventHandler PropertyChanged&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; DateTime Birthday&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;get&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;birthday&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;set&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;birthday &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;value&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;OnPropertyChanged&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Birthday&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; OnPropertyChanged&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; propertyName&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;PropertyChanged &lt;span style=&#34;color:#1f2328&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;null&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;PropertyChanged&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; PropertyChangedEventArgs&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;propertyName&lt;span style=&#34;color:#1f2328&#34;&gt;));&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The annoying bit is that every time the user picks a datetime, he has to move the focus before the changes in the DateTimePicker control are written back to the datasource&amp;hellip; You can circumvent this by handling the CloseUp event of the DataTimePicker as following&lt;/p&gt;</description>
    </item>
    <item>
      <title>Control the order of Properties in your Class</title>
      <link>https://timvw.be/2007/02/04/control-the-order-of-properties-in-your-class/</link>
      <pubDate>Sun, 04 Feb 2007 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2007/02/04/control-the-order-of-properties-in-your-class/</guid>
      <description>&lt;p&gt;Sometimes you want to manipulate the order in which properties are used for databinding. Eg: If you drag and drop an object datasource on a DataGridView you have no control in which order it binds the properties. Offcourse, you can order the columns by moving them around&amp;hellip; Today someone asked the following&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;div&gt;&#xA;  I would like to have it come from the class in the order I want it. Any suggestions on how to set the display order without referencing the actual member names?&#xA;&lt;/div&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;I started with the implementation of a PropertyOrderAttribute&lt;/p&gt;</description>
    </item>
    <item>
      <title>About the Wow, i removed Vista from my harddisk, experience</title>
      <link>https://timvw.be/2007/01/29/about-the-wow-i-removed-vista-from-my-harddisk-experience/</link>
      <pubDate>Mon, 29 Jan 2007 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2007/01/29/about-the-wow-i-removed-vista-from-my-harddisk-experience/</guid>
      <description>&lt;p&gt;A couple of weeks ago i decided to install Vista Ultimate&amp;hellip; Despite the marketing efforts my only &lt;a href=&#34;http://www.experiencethewow.be/&#34;&gt;Wow&lt;/a&gt; experience was yesterday when i decided to remove it&amp;hellip; (Simply boot with your XP installation cd, run fixboot and fixmbr from the rescue console and you&amp;rsquo;re set ;))&lt;/p&gt;</description>
    </item>
    <item>
      <title>Presenting the DataGridViewLargeTextBoxCell</title>
      <link>https://timvw.be/2007/01/27/presenting-the-datagridviewlargetextboxcell/</link>
      <pubDate>Sat, 27 Jan 2007 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2007/01/27/presenting-the-datagridviewlargetextboxcell/</guid>
      <description>&lt;p&gt;Today i decided to experiment a bit with custom &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.windows.forms.datagridviewcell.aspx&#34;&gt;DataGridViewCell&lt;/a&gt; implementations. If you insert large text into a DataGridView it will (at best) wrap the text. I wanted my DataGridView to behave like &lt;a href=&#34;http://office.microsoft.com/excel/&#34;&gt;Excel&lt;/a&gt; so that the whole text is displayed. Here are a couple of screenshots of the result&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/images/datagridviewlargetextboxcell-1.gif&#34; alt=&#34;the large text flows over it&amp;rsquo;s surrounding columns&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/images/datagridviewlargetextboxcell-2.gif&#34; alt=&#34;the editingcontrol is resized to fit the complete text&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Feel free to download &lt;a href=&#34;http://www.timvw.be/wp-content/code/csharp/CustomDataGridViewCells.zip&#34;&gt;CustomDataGridViewCells.zip&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>About Thread-Safe GUI...</title>
      <link>https://timvw.be/2007/01/21/about-thread-safe-gui.../</link>
      <pubDate>Sun, 21 Jan 2007 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2007/01/21/about-thread-safe-gui.../</guid>
      <description>&lt;p&gt;If you&amp;rsquo;re writing windows applications you&amp;rsquo;ll most certainly recognize the following piece of code&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;delegate&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; UpdateIntResultDelegate&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; result&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; UpdateIntResult&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; result&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;labelIntResult&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;InvokeRequired&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;labelIntResult&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Invoke&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; UpdateIntResultDelegate&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;UpdateIntResult&lt;span style=&#34;color:#1f2328&#34;&gt;),&lt;/span&gt; result&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;myDataSource&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;IntResult &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; result&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;delegate&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; UpdateStringResultDelegate&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; result&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; UpdateStringResult&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; result&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;labelStringResult&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;InvokeRequired&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;labelStringResult&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Invoke&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; UpdateStringResultDelegate&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;UpdateStringResult&lt;span style=&#34;color:#1f2328&#34;&gt;),&lt;/span&gt; result&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;myDataSource&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;StringResult &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; result&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Today i was fed up with defining all these Delegates.. So i decided to define a generic delegate instead&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;delegate&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; Delegate&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;t&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;(&lt;/span&gt;T t&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And now i can reuse this Delegate for my two update methods&lt;/p&gt;</description>
    </item>
    <item>
      <title>Reading and writing unmanged structs from binary files</title>
      <link>https://timvw.be/2007/01/20/reading-and-writing-unmanged-structs-from-binary-files/</link>
      <pubDate>Sat, 20 Jan 2007 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2007/01/20/reading-and-writing-unmanged-structs-from-binary-files/</guid>
      <description>&lt;p&gt;I still remember one of the first tasks during my internship (At a software shop that still used Visual Studio 6 as development environment) last year: Develop a GUI application using .Net that allows the user to manipulate data stored in a binary file which was generated by c/c++ program. As a newcomer to C# programming i just couldn&amp;rsquo;t find the right attributes to &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/04fy9ya1.aspx&#34;&gt;Marshal&lt;/a&gt; the following structs&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;struct&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;test1&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;char&lt;/span&gt; name&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;9&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;];&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; score&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;};&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;struct&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;test2&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;test1 items&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;];&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;After a couple of days they wanted me to deliver a product, so i decided to stop experimenting and wrote the application in C++ (&lt;a href=&#34;http://www.timvw.be/reading-unmanaged-structs-with-net/&#34;&gt;Example&lt;/a&gt;). Since i don&amp;rsquo;t like unanswered questions, i decided to give it another try this afternoon&amp;hellip; It didn&amp;rsquo;t take long to come up with the following&lt;/p&gt;</description>
    </item>
    <item>
      <title>Exploring DataGridViewComboBoxColumn databinding</title>
      <link>https://timvw.be/2007/01/17/exploring-datagridviewcomboboxcolumn-databinding/</link>
      <pubDate>Wed, 17 Jan 2007 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2007/01/17/exploring-datagridviewcomboboxcolumn-databinding/</guid>
      <description>&lt;p&gt;Let&amp;rsquo;s start with a simple example: Each Person has a Name (string) and PersonTypeCode (an Enumerated value) property. We drag a DataGridView on the designer form and add two columns (DataGridViewComboBoxColumn for the PersonTypeCode property). And then we hook up the Bindingsource as following&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Form1&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt; Form&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; Form1&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;InitializeComponent&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;dataGridView1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;AutoGenerateColumns &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;false&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ColumnName&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;DataPropertyName &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Name&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ColumnPersonTypeCode&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;DataPropertyName &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;PersonTypeCode&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;BindingSource bindingSource &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; BindingSource&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;bindingSource&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;DataSource &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; FindPersons&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;dataGridView1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;DataSource &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; bindingSource&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; BindingList&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;person&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; FindPersons&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;BindingList&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;person&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; bindingList &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; BindingList&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;person&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;bindingList&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; Person&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Timvw&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; PersonTypeCode&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Geek&lt;span style=&#34;color:#1f2328&#34;&gt;));&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;bindingList&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; Person&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;John Doe&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; PersonTypeCode&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Anonymous&lt;span style=&#34;color:#1f2328&#34;&gt;));&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;bindingList&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; Person&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;An Onymous&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; PersonTypeCode&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Anonymous&lt;span style=&#34;color:#1f2328&#34;&gt;));&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;bindingList&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; Person&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Jenna Jameson&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; PersonTypeCode&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Babe&lt;span style=&#34;color:#1f2328&#34;&gt;));&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; bindingList&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;enum&lt;/span&gt; PersonTypeCode&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Geek &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Anonymous &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Babe &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;2&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Person&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; PersonTypeCode personTypeCode&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; name&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; Person&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; name&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; PersonTypeCode personTypeCode&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;name &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; name&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;personTypeCode &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; personTypeCode&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; Name&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;get&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;name&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;set&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;name &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;value&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; PersonTypeCode PersonTypeCode&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;get&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;personTypeCode&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;set&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;personTypeCode &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;value&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If we run this code we run in the following error:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Making WebRequests in parallel...</title>
      <link>https://timvw.be/2007/01/14/making-webrequests-in-parallel.../</link>
      <pubDate>Sun, 14 Jan 2007 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2007/01/14/making-webrequests-in-parallel.../</guid>
      <description>&lt;p&gt;Under the assumption that making sequential WebRequests is slower than making them in parallel i wrote a little program that returns the HTTP status code for each URI in a list. Because the number of WaitHandles on a system is limited to 64 and i would have been required to hack around this limitation i decided to use ThreadPool instead&amp;hellip;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;using&lt;/span&gt; &lt;span style=&#34;color:#24292e&#34;&gt;System&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;using&lt;/span&gt; &lt;span style=&#34;color:#24292e&#34;&gt;System.Collections.Generic&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;using&lt;/span&gt; &lt;span style=&#34;color:#24292e&#34;&gt;System.Text&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;using&lt;/span&gt; &lt;span style=&#34;color:#24292e&#34;&gt;System.Threading&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;using&lt;/span&gt; &lt;span style=&#34;color:#24292e&#34;&gt;System.Net&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;namespace&lt;/span&gt; &lt;span style=&#34;color:#24292e&#34;&gt;ManyRequests&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Program&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; Main&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[]&lt;/span&gt; args&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;List&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;uri&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; uris &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; List&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;uri&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;uris&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; Uri&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;http://www.timvw.be&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;));&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;uris&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; Uri&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;http://example.com/does\_not\_exist&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;));&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;uris&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; Uri&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;http://www.timvw.be/c-sharp&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;));&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;uris&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; Uri&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;http://www.timvw.be/rss-feed/&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;));&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;uris&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; Uri&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;http://localhost&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;));&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteLine&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Getting the HttpStatusCodes...&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;HttpStatusCodeReader httpStatusCodeReader &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; HttpStatusCodeReader&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;uris&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[]&lt;/span&gt; httpStatusCodes &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; httpStatusCodeReader&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetHttpStatusCodes&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; i &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; i &lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt; uris&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Count&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;++&lt;/span&gt;i&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteLine&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;{0} {1}&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; httpStatusCodes&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;i&lt;span style=&#34;color:#1f2328&#34;&gt;],&lt;/span&gt; uris&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;i&lt;span style=&#34;color:#1f2328&#34;&gt;]);&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Write&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;{0}Press any key to continueâ€¦&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; Environment&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;NewLine&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ReadKey&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;HttpStatusCodeReader&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; List&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;uri&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; uris&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[]&lt;/span&gt; httpStatusCodes&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;object&lt;/span&gt; syncLock&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; completed&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; HttpStatusCodeReader&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;List&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;uri&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; uris&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;uris &lt;span style=&#34;color:#1f2328&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;null&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;throw&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; ArgumentNullException&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;uris&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;foreach&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;Uri uri &lt;span style=&#34;color:#cf222e&#34;&gt;in&lt;/span&gt; uris&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;uri&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Scheme &lt;span style=&#34;color:#1f2328&#34;&gt;!=&lt;/span&gt; Uri&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;UriSchemeHttp &lt;span style=&#34;color:#1f2328&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; uri&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Scheme &lt;span style=&#34;color:#1f2328&#34;&gt;!=&lt;/span&gt; Uri&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;UriSchemeHttps&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;throw&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; ArgumentException&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;uri&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ToString&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34; is not valid http(s) uri.&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;uris&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;uris &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; uris&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;httpStatusCodes &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;uris&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Count&lt;span style=&#34;color:#1f2328&#34;&gt;];&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;syncLock &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;object&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;completed &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[]&lt;/span&gt; GetHttpStatusCodes&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; i &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; i &lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;httpStatusCodes&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Length&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;++&lt;/span&gt;i&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;HttpWebRequest httpWebRequest &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; WebRequest&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Create&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;uris&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;i&lt;span style=&#34;color:#1f2328&#34;&gt;])&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;as&lt;/span&gt; HttpWebRequest&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;httpWebRequest&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Method &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;HEAD&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;httpWebRequest&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;AllowAutoRedirect &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;httpWebRequest&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;BeginGetResponse&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetResponseCompleted&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;object&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[]&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; httpWebRequest&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; i &lt;span style=&#34;color:#1f2328&#34;&gt;});&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;lock&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;syncLock&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;while&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;completed &lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;httpStatusCodes&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Length&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;&#x9;Monitor&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Wait&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;syncLock&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;httpStatusCodes&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; GetResponseCompleted&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;IAsyncResult ar&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;object&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[]&lt;/span&gt; objects &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; ar&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;AsyncState &lt;span style=&#34;color:#cf222e&#34;&gt;as&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;object&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[];&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;HttpWebRequest httpWebRequest &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; objects&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;as&lt;/span&gt; HttpWebRequest&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; index &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;objects&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;];&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;HttpWebResponse httpWebResponse &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;null&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;try&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;httpWebResponse &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; httpWebRequest&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;EndGetResponse&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;ar&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;as&lt;/span&gt; HttpWebResponse&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;httpStatusCodes&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;index&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;httpWebResponse&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;StatusCode&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;catch&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;WebException webException&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;httpWebResponse &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; webException&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Response &lt;span style=&#34;color:#cf222e&#34;&gt;as&lt;/span&gt; HttpWebResponse&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;httpWebResponse &lt;span style=&#34;color:#1f2328&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;null&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;httpStatusCodes&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;index&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;httpWebResponse&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;StatusCode&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;finally&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;httpWebResponse &lt;span style=&#34;color:#1f2328&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;null&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;&#x9;httpWebResponse&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Close&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;lock&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;syncLock&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;&#x9;Interlocked&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;ref&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;completed&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;&#x9;Monitor&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Pulse&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;syncLock&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Hide and unhide columns (or rows) in the DataGridView</title>
      <link>https://timvw.be/2007/01/13/hide-and-unhide-columns-or-rows-in-the-datagridview/</link>
      <pubDate>Sat, 13 Jan 2007 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2007/01/13/hide-and-unhide-columns-or-rows-in-the-datagridview/</guid>
      <description>&lt;p&gt;Once in a while i see the following question&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;div&gt;&#xA;  I have to create a customized datagridview to enable the expandable columns. Expandable column in the sense drilling down the columns.... One column can hide multiple columns. The user can see the child columns by clicking the + button before the column name&#xA;&lt;/div&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;Using the Visibile property of the DataGridViewColumn makes this a no-brainer. Let&amp;rsquo;s take the &lt;a href=&#34;http://www.timvw.be/developing-a-datasource-for-your-datagridview/&#34;&gt;Databound DataGridView&lt;/a&gt; and implement functionality to hide/unhide the quarterly results. All you have to do is add a DataGridViewButtonColumn and handle the DataGridView CellClick event as following&lt;/p&gt;</description>
    </item>
    <item>
      <title>Presenting a Generic RemotingHelper</title>
      <link>https://timvw.be/2007/01/12/presenting-a-generic-remotinghelper/</link>
      <pubDate>Fri, 12 Jan 2007 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2007/01/12/presenting-a-generic-remotinghelper/</guid>
      <description>&lt;p&gt;Last couple of months i&amp;rsquo;ve been experimenting with &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/kwdt6w2k.aspx&#34;&gt;Remoting&lt;/a&gt;. Here is a class that helps a client to acquire proxies to an endpoint served by the requested well-known object&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;RemotingHelper&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; RemotingHelper&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;RemotingConfiguration&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Configure&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;AppDomain&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;CurrentDomain&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;SetupInformation&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ConfigurationFile&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;false&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;object&lt;/span&gt; GetService&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; fullName&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;WellKnownClientTypeEntry&lt;span style=&#34;color:#1f2328&#34;&gt;[]&lt;/span&gt; wellKnownClientTypeEntries &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; RemotingConfiguration&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetRegisteredWellKnownClientTypes&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;foreach&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;WellKnownClientTypeEntry welknownClientTypeEntry &lt;span style=&#34;color:#cf222e&#34;&gt;in&lt;/span&gt; wellKnownClientTypeEntries&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;welknownClientTypeEntry&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ObjectType&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;FullName &lt;span style=&#34;color:#1f2328&#34;&gt;==&lt;/span&gt; fullName&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; Activator&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetObject&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;welknownClientTypeEntry&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ObjectType&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; welknownClientTypeEntry&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ObjectUrl&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;throw&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; ArgumentException&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;fullName &lt;span style=&#34;color:#1f2328&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34; is not a wellKnownClientType.&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; T GetService&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;t&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; RemotingHelper&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetService&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;typeof&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;).&lt;/span&gt;FullName&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Getting a proxy is as easy as (Presuming that you&amp;rsquo;ve configured the system.runtime.remoting in your App.config)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Databinding a Nullable&lt;T&gt; property</title>
      <link>https://timvw.be/2007/01/10/databinding-a-nullablet-property/</link>
      <pubDate>Wed, 10 Jan 2007 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2007/01/10/databinding-a-nullablet-property/</guid>
      <description>&lt;p&gt;I find it frustrating that data binding does not really support Nullable&lt;T&gt;. Anyway, it&amp;rsquo;s relatively easy to workaround this shortcoming&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;partial&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Form1&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt; Form&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; MyDataSource myDataSource&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; Form1&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;InitializeComponent&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;myDataSource &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; MyDataSource&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;textBox1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;DataBindings&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Text&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;myDataSource&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Double&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;textBox1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;DataBindings&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Text&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;].&lt;/span&gt;Parse &lt;span style=&#34;color:#1f2328&#34;&gt;+=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Text_Parse&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; Text_Parse&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;object&lt;/span&gt; sender&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; ConvertEventArgs e &lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; e&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Value &lt;span style=&#34;color:#1f2328&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;null&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;||&lt;/span&gt; e&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Value&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ToString&lt;span style=&#34;color:#1f2328&#34;&gt;().&lt;/span&gt;Length &lt;span style=&#34;color:#1f2328&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;e&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Value &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;null&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; buttonTellMe_Click&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;object&lt;/span&gt; sender&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; EventArgs e&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;myDataSource&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Double&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;HasValue&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;MessageBox&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Show&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;The double is: &amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;myDataSource&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Double&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;MessageBox&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Show&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;The double is null&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;MyDataSource&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;double?&lt;/span&gt; _double&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;double?&lt;/span&gt; Double&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;get&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;_double&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;set&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;_double &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;value&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/images/databind-nullabletext1.gif&#34; alt=&#34;screenshot of double value in textbox&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Generating UTF-8 with System.Xml.XmlWriter</title>
      <link>https://timvw.be/2007/01/08/generating-utf-8-with-system.xml.xmlwriter/</link>
      <pubDate>Mon, 08 Jan 2007 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2007/01/08/generating-utf-8-with-system.xml.xmlwriter/</guid>
      <description>&lt;p&gt;Today i decided to experiment with &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.xml.xmlwriter.aspx&#34;&gt;XmlWriter&lt;/a&gt;. The first i wanted to do was set the Encoding to UTF-8.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;StringBuilder stringBuilder &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; StringBuilder&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;XmlWriter xmlWriter &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; XmlWriter&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Create&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;stringBuilder&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;xmlWriter&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Settings&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Encoding &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; Encoding&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;UTF8&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;When i ran this code i recieved the following exception: XmlException was unhandled: The &amp;lsquo;XmlWriterSettings.Encoding&amp;rsquo; property is read only and cannot be set. The documentation for the &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.xml.xmlwriter.settings.aspx&#34;&gt;Settings&lt;/a&gt; property clearly says&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;div&gt;&#xA;  The XmlWriterSettings object returned by the Settings property cannot be modified. Any attempt to change individual settings results in an exception being thrown.&#xA;&lt;/div&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;So i wrote the following&lt;/p&gt;</description>
    </item>
    <item>
      <title>The NullableDateAndTimePicker Control</title>
      <link>https://timvw.be/2007/01/07/the-nullabledateandtimepicker-control/</link>
      <pubDate>Sun, 07 Jan 2007 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2007/01/07/the-nullabledateandtimepicker-control/</guid>
      <description>&lt;p&gt;A while ago i presented the concept of a &lt;a href=&#34;http://www.timvw.be/a-dateandtimepicker-control/&#34;&gt;DateAndTimePicker&lt;/a&gt;. Today someone asked if it&amp;rsquo;s possible to give the user an option to &amp;rsquo;not choose a DateTime&amp;rsquo;. I created a UserControl that has both a DateAndTimePicker and a CheckBox with a Value property of Nullable&lt;DateTime&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/images/dateandtimepicker-nullable-1.gif&#34; alt=&#34;screenshot of the nullable dateandtimepicker&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/images/dateandtimepicker-nullable-2.gif&#34; alt=&#34;screenshot of the nullable dateandtimepicker&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Feel free to download the updated &lt;a href=&#34;http://www.timvw.be/wp-content/code/csharp/DateAndTimePicker.zip&#34;&gt;DateAndTimePicker.zip&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Enable and disable TabPages on a TabControl</title>
      <link>https://timvw.be/2007/01/06/enable-and-disable-tabpages-on-a-tabcontrol/</link>
      <pubDate>Sat, 06 Jan 2007 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2007/01/06/enable-and-disable-tabpages-on-a-tabcontrol/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/images/disabled-tabcontrol-1.gif&#34; alt=&#34;screenshot of tabcontrol with disabled tabpages&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/images/disabled-tabcontrol-2.gif&#34; alt=&#34;screenshot of tabcontrol with disabled tabpages&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Apparently &lt;a href=&#34;http://www.microsoft.com&#34;&gt;Microsoft&lt;/a&gt; choose not to implement support for disabled &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.windows.forms.tabpage.aspx&#34;&gt;TabPage&lt;/a&gt;s. The reason seems to be that it&amp;rsquo;s against their &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/aa511493.aspx&#34;&gt;Guidelines for Tabs&lt;/a&gt;. Let&amp;rsquo;s ignore the guideline and implement the support anyway. First we set the &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.windows.forms.tabcontrol.drawmode.aspx&#34;&gt;DrawMode&lt;/a&gt; property of the &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.windows.forms.tabcontrol.aspx&#34;&gt;TabControl&lt;/a&gt; to &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.windows.forms.tabdrawmode.aspx&#34;&gt;OwnerDrawFixed&lt;/a&gt;. Next we add an eventhandler for the &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.windows.forms.tabcontrol.drawitem.aspx&#34;&gt;DrawItem&lt;/a&gt; Event&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; tabControl1_DrawItem&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;object&lt;/span&gt; sender&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; DrawItemEventArgs e&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;TabControl tabControl &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; sender &lt;span style=&#34;color:#cf222e&#34;&gt;as&lt;/span&gt; TabControl&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;TabPage tabPage &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; tabControl&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;TabPages&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;e&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Index&lt;span style=&#34;color:#1f2328&#34;&gt;];&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Rectangle tabRectangle &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; tabControl&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetTabRect&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;e&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Index&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;tabControl&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Alignment &lt;span style=&#34;color:#1f2328&#34;&gt;==&lt;/span&gt; TabAlignment&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Left &lt;span style=&#34;color:#1f2328&#34;&gt;||&lt;/span&gt; tabControl&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Alignment &lt;span style=&#34;color:#1f2328&#34;&gt;==&lt;/span&gt; TabAlignment&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Right&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;float&lt;/span&gt; rotateAngle &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;90&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;tabControl&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Alignment &lt;span style=&#34;color:#1f2328&#34;&gt;==&lt;/span&gt; TabAlignment&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Left&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;rotateAngle &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;270&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;PointF cp &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; PointF&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;tabRectangle&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Left &lt;span style=&#34;color:#1f2328&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;tabRectangle&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Width &lt;span style=&#34;color:#1f2328&#34;&gt;/&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;),&lt;/span&gt; tabRectangle&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Top &lt;span style=&#34;color:#1f2328&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;tabRectangle&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Height &lt;span style=&#34;color:#1f2328&#34;&gt;/&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;));&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;e&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Graphics&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;TranslateTransform&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;cp&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;X&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; cp&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Y&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;e&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Graphics&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;RotateTransform&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;rotateAngle&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;tabRectangle &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; Rectangle&lt;span style=&#34;color:#1f2328&#34;&gt;(-(&lt;/span&gt;tabRectangle&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Height &lt;span style=&#34;color:#1f2328&#34;&gt;/&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;),&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;-(&lt;/span&gt;tabRectangle&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Width &lt;span style=&#34;color:#1f2328&#34;&gt;/&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;),&lt;/span&gt; tabRectangle&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Height&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; tabRectangle&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Width&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;using&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;SolidBrush foreBrush &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; SolidBrush&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;tabPage&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ForeColor&lt;span style=&#34;color:#1f2328&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;using&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;SolidBrush backBrush &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; SolidBrush&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;tabPage&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;BackColor&lt;span style=&#34;color:#1f2328&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(!&lt;/span&gt;tabPage&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Enabled&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;foreBrush&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Color &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; SystemColors&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GrayText&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;e&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Graphics&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;FillRectangle&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;backBrush&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; tabRectangle&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;using&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;StringFormat stringFormat &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; StringFormat&lt;span style=&#34;color:#1f2328&#34;&gt;())&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;stringFormat&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Alignment &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; StringAlignment&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Center&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;stringFormat&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;LineAlignment &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; StringAlignment&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Center&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;e&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Graphics&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;DrawString&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;tabPage&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Text&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; e&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Font&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; foreBrush&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; tabRectangle&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; stringFormat&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;e&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Graphics&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ResetTransform&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And we handle the &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.windows.forms.tabcontrol.selecting.aspx&#34;&gt;Selecting&lt;/a&gt; Event as following&lt;/p&gt;</description>
    </item>
    <item>
      <title>Developing a DataSource for your DataGridView</title>
      <link>https://timvw.be/2007/01/04/developing-a-datasource-for-your-datagridview/</link>
      <pubDate>Thu, 04 Jan 2007 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2007/01/04/developing-a-datasource-for-your-datagridview/</guid>
      <description>&lt;p&gt;Imagine that you want to develop a DataSource that is capable to represent the data displayed in the following excel sheet&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/images/dgv-ds-1.gif&#34; alt=&#34;screenshot of excel sheet&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;For each region the values are given. The YEAR value is defined as the sum of Q1, Q2, Q3 and Q4, eg: for EMEA this is SUM(B2:E2). The GLOBAL values are calculated as the sum of the regions for the quarter, eg: for Q1 this is SUM(B2:B5). We&amp;rsquo;ll start with the easiest task: Add columns to the DGV and define the headers&lt;/p&gt;</description>
    </item>
    <item>
      <title>Print a Control</title>
      <link>https://timvw.be/2006/12/31/print-a-control/</link>
      <pubDate>Sun, 31 Dec 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/12/31/print-a-control/</guid>
      <description>&lt;p&gt;A while ago i discovered the &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.windows.forms.control.drawtobitmap.aspx&#34;&gt;DrawToBitmap&lt;/a&gt; method on the &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.windows.forms.control.aspx&#34;&gt;Control&lt;/a&gt; class. The availability of this method makes it relatively easy to implement a &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.drawing.printing.printpageeventhandler.aspx&#34;&gt;PrintPageEventHandler&lt;/a&gt; for the &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.drawing.printing.printdocument.aspx&#34;&gt;PrintDocument&lt;/a&gt; class. Here is an example implementation that prints a DataGridView&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; buttonPrint_Click&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;object&lt;/span&gt; sender&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; EventArgs e&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;printDocument1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Print&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; printDocument1_BeginPrint&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;object&lt;/span&gt; sender&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; PrintEventArgs e&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;currentPage &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; printDocument1_PrintPage&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;object&lt;/span&gt; sender&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; System&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Drawing&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Printing&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;PrintPageEventArgs e&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Size oldSize &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;dataGridView1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Size&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;dataGridView1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Height &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; Math&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Max&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;dataGridView1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Height&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;dataGridView1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;PreferredSize&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Height&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;dataGridView1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Width &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; Math&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Max&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;dataGridView1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Width&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;dataGridView1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;PreferredSize&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Width&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; requiredPagesForWidth &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;((&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;dataGridView1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Width &lt;span style=&#34;color:#1f2328&#34;&gt;/&lt;/span&gt; e&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;MarginBounds&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Width&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; requiredPagesForHeight &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;((&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;dataGridView1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Height &lt;span style=&#34;color:#1f2328&#34;&gt;/&lt;/span&gt; e&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;MarginBounds&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Height&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; requiredPages &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; requiredPagesForWidth &lt;span style=&#34;color:#1f2328&#34;&gt;*&lt;/span&gt; requiredPagesForHeight&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;e&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;HasMorePages &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;currentPage &lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt; requiredPages &lt;span style=&#34;color:#1f2328&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; posX &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;((&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;currentPage &lt;span style=&#34;color:#1f2328&#34;&gt;%&lt;/span&gt; requiredPagesForWidth&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;\&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;*&lt;/span&gt; e&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;MarginBounds&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Width&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; posY &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;((&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;currentPage &lt;span style=&#34;color:#1f2328&#34;&gt;/&lt;/span&gt; requiredPagesForWidth&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;\&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;*&lt;/span&gt; e&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;MarginBounds&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Height&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Graphics graphics &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; e&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Graphics&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Bitmap bitmap &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; Bitmap&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;dataGridView1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Width&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;dataGridView1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Height&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;dataGridView1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;DrawToBitmap&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;bitmap&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;dataGridView1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Bounds&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;graphics&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;DrawImage&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;bitmap&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; Rectangle&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;e&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;MarginBounds&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;X&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; e&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;MarginBounds&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Y&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; e&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;MarginBounds&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Width&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; e&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;MarginBounds&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Height&lt;span style=&#34;color:#1f2328&#34;&gt;),&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; Rectangle&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;posX&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; posY&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; e&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;MarginBounds&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Width&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; e&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;MarginBounds&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Height&lt;span style=&#34;color:#1f2328&#34;&gt;),&lt;/span&gt; GraphicsUnit&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Pixel&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;dataGridView1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Size &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; oldSize&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;++&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;currentPage&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now that you understand the main idea, let&amp;rsquo;s wrap it in a class and make it reusable: &lt;a href=&#34;http://www.timvw.be/wp-content/code/csharp/ResizedControlPrintPageEventHandler.txt&#34;&gt;ResizedControlPrintPageEventHandler&lt;/a&gt;. Using this class is as simple as&lt;/p&gt;</description>
    </item>
    <item>
      <title>An example of why i don&#39;t like the ext/filter API</title>
      <link>https://timvw.be/2006/12/27/an-example-of-why-i-dont-like-the-ext/filter-api/</link>
      <pubDate>Wed, 27 Dec 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/12/27/an-example-of-why-i-dont-like-the-ext/filter-api/</guid>
      <description>&lt;p&gt;Earlier this week i decided to experiment with the &lt;a href=&#34;http://be2.php.net/manual/en/function.filter-input.php&#34;&gt;Filter&lt;/a&gt; functions. Here&amp;rsquo;s an example that illustrates why i think the API needs to be improved&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;?&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;php&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$isgoodapi&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;filter_input&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;INPUT_GET&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;isgoodapi&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;FILTER_VALIDATE_BOOLEAN&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;is_null&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$isgoodapi&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;))&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;echo&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;the &amp;#39;isgoodapi&amp;#39; argument is missing.&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;else&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$isgoodapi&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;===&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;FALSE&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;echo&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;The &amp;#39;isgoodapi&amp;#39; argument must be a valid boolean.&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;else&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;echo&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;isgoodapi is: &lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;$isgoodapi&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;.&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;?&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And now you request the page with ?isgoodapi=false. The obvious problem is the fact that the function returns multiple &amp;lsquo;sorts&amp;rsquo; of return values: Value of the requested variable on success, FALSE if the filter fails, or NULL if the variable_name variable is not set. If the flag FILTER_NULL_ON_FAILURE is used, it returns FALSE if the variable is not set and NULL if the filter fails.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Exploring System.CodeDom</title>
      <link>https://timvw.be/2006/12/26/exploring-system.codedom/</link>
      <pubDate>Tue, 26 Dec 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/12/26/exploring-system.codedom/</guid>
      <description>&lt;p&gt;Today i wanted to experiment with &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.codedom.aspx&#34;&gt;System.CodeDom&lt;/a&gt;. This little program requests the user to input names for a namespace, class and method. It also asks the user to input the code that should go into the method body. Then it generates an assembly (test.dll) and creates a new appdomain in which the assembly is loaded&amp;hellip; Finally it initializes an instance of the created class and calls the method&amp;hellip;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; Main&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[]&lt;/span&gt; args&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; loopEnd &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;while&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;loopEnd &lt;span style=&#34;color:#1f2328&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;X&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#57606a&#34;&gt;//string namespaceName = &amp;#34;MySpace&amp;#34;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#57606a&#34;&gt;//string className = &amp;#34;MyClass&amp;#34;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#57606a&#34;&gt;//string methodName = &amp;#34;MyMethod&amp;#34;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#57606a&#34;&gt;//StringBuilder stringBuilder = new StringBuilder(&amp;#34;System.Console.WriteLine(\&amp;#34;hihi\&amp;#34;);&amp;#34;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Write&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Enter namespace: &amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; namespaceName &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ReadLine&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Write&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Enter class: &amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; className &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ReadLine&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Write&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Enter method: &amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; methodName &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ReadLine&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;StringBuilder stringBuilder &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; StringBuilder&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteLine&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Enter method body (X to stop)&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; input &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ReadLine&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;while&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;input &lt;span style=&#34;color:#1f2328&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;X&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;stringBuilder&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Append&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;input&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;input &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ReadLine&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;CodeCompileUnit codeCompileUnit &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; CodeCompileUnit&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;CodeAttributeDeclaration assemblyTitleAttribute &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; CodeAttributeDeclaration&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;System.Reflection.AssemblyTitle&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;assemblyTitleAttribute&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Arguments&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; CodeAttributeArgument&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; CodePrimitiveExpression&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;A Generated Assembly&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)));&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;codeCompileUnit&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;AssemblyCustomAttributes&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;assemblyTitleAttribute&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;CodeTypeDeclaration codeTypeDeclaration &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; CodeTypeDeclaration&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;codeTypeDeclaration&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Name &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; className&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;codeTypeDeclaration&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;IsClass &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;codeTypeDeclaration&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Attributes &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; MemberAttributes&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Public&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;CodeMemberMethod codeMemberMethod &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; CodeMemberMethod&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;codeMemberMethod&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Name &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; methodName&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;codeMemberMethod&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Attributes &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; MemberAttributes&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Public&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;codeMemberMethod&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ReturnType &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; CodeTypeReference&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;typeof&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;));&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;codeMemberMethod&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Statements&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; CodeSnippetStatement&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;stringBuilder&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ToString&lt;span style=&#34;color:#1f2328&#34;&gt;()));&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;codeTypeDeclaration&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Members&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;codeMemberMethod&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;CodeNamespace codeNamespace &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; CodeNamespace&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;namespaceName&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;codeNamespace&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Types&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;codeTypeDeclaration&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;codeCompileUnit&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Namespaces&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;codeNamespace&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;CompilerParameters compilerParameters &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; CompilerParameters&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;compilerParameters&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;OutputAssembly &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;test.dll&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;compilerParameters&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GenerateExecutable &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;false&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;compilerParameters&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GenerateInMemory &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;false&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;CSharpCodeProvider cSharpCodeProvider &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; CSharpCodeProvider&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;CompilerResults compilerResults &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; cSharpCodeProvider&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;CompileAssemblyFromDom&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;compilerParameters&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; codeCompileUnit&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;AppDomain appDomain &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; AppDomain&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;CreateDomain&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;new appdomain&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;Assembly assembly &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; appDomain&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Load&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;compilerResults&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;CompiledAssembly&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;FullName&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;object&lt;/span&gt; instance &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; assembly&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;CreateInstance&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;namespaceName &lt;span style=&#34;color:#1f2328&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;+&lt;/span&gt; className&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;instance&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetType&lt;span style=&#34;color:#1f2328&#34;&gt;().&lt;/span&gt;InvokeMember&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;methodName&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; BindingFlags&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Instance &lt;span style=&#34;color:#1f2328&#34;&gt;|&lt;/span&gt; BindingFlags&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Public &lt;span style=&#34;color:#1f2328&#34;&gt;|&lt;/span&gt; BindingFlags&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;InvokeMethod&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;null&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; instance&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;null&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;AppDomain&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Unload&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;appDomain&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteLine&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Enter X to end (enter something different to continue)&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;loopEnd &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ReadLine&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Drag and Drop Microsoft Office Outlook Contacts on your WinForm</title>
      <link>https://timvw.be/2006/12/19/drag-and-drop-microsoft-office-outlook-contacts-on-your-winform/</link>
      <pubDate>Tue, 19 Dec 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/12/19/drag-and-drop-microsoft-office-outlook-contacts-on-your-winform/</guid>
      <description>&lt;p&gt;Earlier today i saw someone that wanted to know how to drag and drop Microsoft Office Outlook Contacts on his winform (and get the data of the contact). Here are the few lines of code that do what he asked for&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;// in the constructor of the form (or in the InitializeComponent method if you set it via the Designer)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;AllowDrop &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;// handle the DragOver event&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; Form1_DragOver&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;object&lt;/span&gt; sender&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; DragEventArgs e&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;e&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Effect &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; DragDropEffects&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;All&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;// handle the DragDrop event&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; Form1_DragDrop&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;object&lt;/span&gt; sender&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; DragEventArgs e&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; text &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;e&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Data&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetData&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Text&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;label1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Text &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; text&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#57606a&#34;&gt;// for more finegrained access to the data&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#57606a&#34;&gt;//string[] lines = text.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/images/outlookcontactdragdrop.jpg&#34; alt=&#34;screenshot of outlook contact that was dragged and dropped on the form&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>A DateAndTimePicker control</title>
      <link>https://timvw.be/2006/12/18/a-dateandtimepicker-control/</link>
      <pubDate>Mon, 18 Dec 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/12/18/a-dateandtimepicker-control/</guid>
      <description>&lt;p&gt;The &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.windows.forms.datetimepicker.aspx&#34;&gt;DateTimePicker&lt;/a&gt; control allows the user to input a Date or a Time. The problem is that you can&amp;rsquo;t let the user pick both a date and a time with one instance of the control (unless you set the CustomFormat property and give up the &amp;rsquo;nice&amp;rsquo; ui) so i decided to build my own DateAndTimePicker control&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/images/dateandtimepicker.jpg&#34; alt=&#34;screenshot of the dateandtimepicker control&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Feel free to download and extended the &lt;a href=&#34;http://www.timvw.be/wp-content/code/csharp/DateAndTimePicker.zip&#34;&gt;DateAndTimePicker.zip&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Looking up the MediaType of a given Logical Drive</title>
      <link>https://timvw.be/2006/12/18/looking-up-the-mediatype-of-a-given-logical-drive/</link>
      <pubDate>Mon, 18 Dec 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/12/18/looking-up-the-mediatype-of-a-given-logical-drive/</guid>
      <description>&lt;p&gt;Earlier today i saw someone asking how he could find out the MediaType of a given logical drive. The easy solution would be to iterate over &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.io.driveinfo.getdrives.aspx&#34;&gt;DriveInfo.GetDrives&lt;/a&gt; and pick the one you are looking for&amp;hellip; Anyway, i thought it would be nice to experiment with &lt;a href=&#34;http://msdn.microsoft.com/library/default.asp?url=./library/en-us/wmisdk/wmi/wmi_start_page.asp&#34;&gt;WMI&lt;/a&gt; so i wrote a little function that uses &lt;a href=&#34;http://msdn.microsoft.com/library/default.asp?url=./library/en-us/wmisdk/wmi/Win32_LogicalDisk.asp&#34;&gt;Win32_LogicalDisk&lt;/a&gt; to look the MediaType up&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; Main&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[]&lt;/span&gt; args&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;char&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[]&lt;/span&gt; driveLetters &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;char&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[]&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;a&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;c&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;d&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;e&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;};&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;foreach&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;char&lt;/span&gt; driveLetter &lt;span style=&#34;color:#cf222e&#34;&gt;in&lt;/span&gt; driveLetters&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;try&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteLine&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Drive {0} is a {1}&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; driveLetter&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; GetMediaType&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;driveLetter&lt;span style=&#34;color:#1f2328&#34;&gt;));&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;catch&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;ManagementException&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteLine&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Drive {0} was not found&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; driveLetter&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteLine&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Press any key to continue...&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ReadKey&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; GetMediaType&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;char&lt;/span&gt; driveLetter&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;ManagementObject disk &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; ManagementObject&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;win32_logicaldisk.deviceid=\&amp;#34;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;+&lt;/span&gt; driveLetter &lt;span style=&#34;color:#1f2328&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;:\&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;disk&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Get&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; GetMediaMeaning&lt;span style=&#34;color:#1f2328&#34;&gt;((&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;uint&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;disk&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;MediaType&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; GetMediaMeaning&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;uint&lt;/span&gt; mediaType&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Dictionary&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;uint&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; mediaTypes &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; Dictionary&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;uint&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;mediaTypes&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Unknown Format&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;mediaTypes&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;51/4-Inch Floppy Disk -- 1.2Mb -- 512bytes/sector&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;mediaTypes&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;31/2-Inch Floppy Disk -- 1.44Mb -512bytes/sector&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;mediaTypes&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;3&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;31/2-Inch Floppy Disk -- 2.88Mb -- 512bytes/sector&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;mediaTypes&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;4&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;31/2-Inch Floppy Disk -- 20.8Mb -- 512bytes/sector&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;mediaTypes&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;5&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;31/2-Inch Floppy Disk -- 720Kb -- 512bytes/sector&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;mediaTypes&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;6&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;51/4-Inch Floppy Disk -- 360Kb -- 512bytes/sector&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;mediaTypes&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;7&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;51/4-Inch Floppy Disk -- 320Kb -- 512bytes/sector&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;mediaTypes&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;8&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;51/4-Inch Floppy Disk -- 320Kb -- 1024bytes/sector&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;mediaTypes&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;9&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;51/4-Inch Floppy Disk -- 180Kb -- 512bytes/sector&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;mediaTypes&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;51/4-Inch Floppy Disk -- 160Kb -- 512bytes/sector&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;mediaTypes&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;11&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Removable media other than floppy&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;mediaTypes&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;12&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Fixed hard disk media&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;mediaTypes&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;13&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;31/2-Inch Floppy Disk -- 120Mb -- 512bytes/sector&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;mediaTypes&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;14&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;31/2-Inch Floppy Disk -- 640Kb -- 512bytes/sector&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;mediaTypes&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;15&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;51/4-Inch Floppy Disk -- 640Kb -- 512bytes/sector&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;mediaTypes&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;16&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;51/4-Inch Floppy Disk -- 720Kb -- 512bytes/sector&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;mediaTypes&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;17&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;31/2-Inch Floppy Disk -- 1.2Mb -- 512bytes/sector&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;mediaTypes&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;18&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;31/2-Inch Floppy Disk -- 1.23Mb -- 1024bytes/sector&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;mediaTypes&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;19&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;51/4-Inch Floppy Disk -- 1.23Mb -- 1024bytes/sector&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;mediaTypes&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;20&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;31/2-Inch Floppy Disk -- 128Mb -- 512bytes/sector&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;mediaTypes&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;21&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;31/2-Inch Floppy Disk -- 230Mb -- 512bytes/sector&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;mediaTypes&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;22&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;8-Inch Floppy Disk -- 256Kb -- 128bytes/sector&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; meaning &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Unknown format&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;mediaTypes&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;TryGetValue&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;mediaType&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;out&lt;/span&gt; meaning&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; meaning&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Simple OutlookBar Control</title>
      <link>https://timvw.be/2006/12/17/simple-outlookbar-control/</link>
      <pubDate>Sun, 17 Dec 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/12/17/simple-outlookbar-control/</guid>
      <description>&lt;p&gt;Earlier this evening i wanted to experiment with the &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.windows.forms.toolstrip.aspx&#34;&gt;ToolStrip&lt;/a&gt; class so i decided to design a simple OutlookBar Control and a demo application that uses this control. Feel free to download &lt;a href=&#34;http://www.timvw.be/wp-content/code/csharp/OutlookBar.zip&#34;&gt;OutlookBar.zip&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/images/outlookbardemo.jpg&#34; alt=&#34;screenshot of OutlookBar demo&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Pondering about the difference between abstract classes and interfaces</title>
      <link>https://timvw.be/2006/12/16/pondering-about-the-difference-between-abstract-classes-and-interfaces/</link>
      <pubDate>Sat, 16 Dec 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/12/16/pondering-about-the-difference-between-abstract-classes-and-interfaces/</guid>
      <description>&lt;p&gt;Back in May i was asked to explain the difference between an &lt;a href=&#34;http://msdn.microsoft.com/library/en-us/csref/html/vcreftheinterfacetype.asp&#34;&gt;interface&lt;/a&gt; and an &lt;a href=&#34;http://msdn.microsoft.com/library/en-us/csspec/html/vclrfcsharpspec_10_1_1_1.asp&#34;&gt;abstract class&lt;/a&gt; at a job interview. Obviously the interviewer wanted me to tell him that an abstract class allows you to provide a partial implementation&amp;hellip; I answered that the major difference is the fact that with interface-based programming you&amp;rsquo;re not forced into an inheritance tree that might not make sense and that i didn&amp;rsquo;t see much use for abstract classes (I&amp;rsquo;m not sure he saw that one coming :P). For some unknown reason this kept spinning in my head&amp;hellip; Here&amp;rsquo;s an example of an abstract class and a concrete implementation&lt;/p&gt;</description>
    </item>
    <item>
      <title>Helper methods for DateTime</title>
      <link>https://timvw.be/2006/12/14/helper-methods-for-datetime/</link>
      <pubDate>Thu, 14 Dec 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/12/14/helper-methods-for-datetime/</guid>
      <description>&lt;p&gt;Here are a couple of methods that help you with the manipulation of DateTime structs:&lt;/p&gt;&#xA;&lt;p&gt;Code: &lt;a href=&#34;./wp-content/code/csharp/DateTimeHelpers.txt&#34;&gt;csharp/DateTimeHelpers.txt&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>What goes up must come down...</title>
      <link>https://timvw.be/2006/12/13/what-goes-up-must-come-down.../</link>
      <pubDate>Wed, 13 Dec 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/12/13/what-goes-up-must-come-down.../</guid>
      <description>&lt;p&gt;What goes up must come down&amp;hellip; So you might think that after each CellMouseDown event you recieve a CellMouseUp event&amp;hellip; Well, here is some code that proves that isn&amp;rsquo;t always true&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;partial&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Form1&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt; Form&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; lastEvent&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; Form1&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;InitializeComponent&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;dataGridView1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ColumnCount &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;dataGridView1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;RowCount &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; LastEvent&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;get&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;lastEvent&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;set&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;lastEvent &lt;span style=&#34;color:#1f2328&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;value&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;MessageBox&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Show&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;i&amp;#39;ve detected two &amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;value&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34; after each other&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;lastEvent &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;value&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; dataGridView1_CellMouseDown&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;object&lt;/span&gt; sender&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; DataGridViewCellMouseEventArgs e&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;LastEvent &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;MouseDown&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; dataGridView1_CellMouseUp&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;object&lt;/span&gt; sender&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; DataGridViewCellMouseEventArgs e&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;LastEvent &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;MouseUp&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And with a bit of a twisted optical mouse it&amp;rsquo;s pretty easy to see the following MessageBox&lt;/p&gt;</description>
    </item>
    <item>
      <title>Master-Slave for databound ComboBoxes</title>
      <link>https://timvw.be/2006/11/25/master-slave-for-databound-comboboxes/</link>
      <pubDate>Sat, 25 Nov 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/11/25/master-slave-for-databound-comboboxes/</guid>
      <description>&lt;p&gt;In most examples on the Internet you&amp;rsquo;ll find that the Master has a property that returns the allowed Slaves. Here&amp;rsquo;s an example that does not require such a property. Let&amp;rsquo;s start with a simple class that represents a Person.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Person&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; name&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; Person&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; name&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;name &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; name&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; Name&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;get&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;name&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;set&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;name &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;value&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And now we define a class to hold the choosen Master and Slave persons.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A better look at the Foreach statement</title>
      <link>https://timvw.be/2006/11/23/a-better-look-at-the-foreach-statement/</link>
      <pubDate>Thu, 23 Nov 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/11/23/a-better-look-at-the-foreach-statement/</guid>
      <description>&lt;p&gt;Earlier this week i was a bit surprised that the following code compiled without errors or warning messages. I expected at least a warning that i was trying to assign a double value to an integer parameter&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; Main&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[]&lt;/span&gt; args&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;double&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[]&lt;/span&gt; values &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;double&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[]&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;1.1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;2.2&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;3.3&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;4.4&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;5.5&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;};&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteLine&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;foreach with int:&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#57606a&#34;&gt;// happily iterate over the double values as if they are ints...&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#57606a&#34;&gt;// this outputs the lines 1, 2, 3, 4 and 5.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;foreach&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;value&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;in&lt;/span&gt; values&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteLine&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;value&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;So i decided to dive into the &lt;a href=&#34;http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-334.pdf&#34;&gt;C# Language Specification&lt;/a&gt; (Section 15.8.4 The foreach statement) where i found the following:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Querying Active Directory</title>
      <link>https://timvw.be/2006/11/04/querying-active-directory/</link>
      <pubDate>Sat, 04 Nov 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/11/04/querying-active-directory/</guid>
      <description>&lt;p&gt;A while ago i wanted to figure out which demo accounts i had already created in my &lt;a href=&#34;http://www.microsoft.com/windowsserver2003/technologies/directory/activedirectory/default.mspx&#34;&gt;Active Directory&lt;/a&gt;. Since i was smart enough to give them all a description &amp;lsquo;Demo User&amp;rsquo; this was easily done as following&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;using&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; DirectoryEntry directoryEntry &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; DirectoryEntry&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;using&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; DirectorySearcher directorySearcher &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; DirectorySearcher&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;directorySearcher&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Filter &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;(&amp;amp;(objectClass=user)(description=Demo User))&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;directorySearcher&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;SearchScope &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; SearchScope&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Subtree&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;directorySearcher&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Sort &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; SortOption&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;displayname&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; SortDirection&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Ascending &lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;SearchResultCollection results &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; directorySearcher&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;FindAll&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;foreach&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; SearchResult result &lt;span style=&#34;color:#cf222e&#34;&gt;in&lt;/span&gt; results &lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;ResultPropertyCollection propertyCollection &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; result&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Properties&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteLine&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;{0}: {1}&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; propertyCollection&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;\&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;displayname&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;\&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;\&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;\&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;].&lt;/span&gt;ToString&lt;span style=&#34;color:#1f2328&#34;&gt;(),&lt;/span&gt; propertyCollection&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;\&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;\&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;\&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;\&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;].&lt;/span&gt;ToString&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Using a collection as parameter for a stored procedure</title>
      <link>https://timvw.be/2006/10/23/using-a-collection-as-parameter-for-a-stored-procedure/</link>
      <pubDate>Mon, 23 Oct 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/10/23/using-a-collection-as-parameter-for-a-stored-procedure/</guid>
      <description>&lt;p&gt;Sometimes you want to select rows where a value is in a specific collection. Here&amp;rsquo;s an example that show how you can select all the rows in the TEST table with an id of 1, 2 or 3. First we create an SQL type to contain a list of numbers&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;CREATE&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;TYPE&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;LIST_NUMBER&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;AS&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;TABLE&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;OF&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;NUMBER&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Next thing to do is add a custom type and function header to the package specification&lt;/p&gt;</description>
    </item>
    <item>
      <title>Searching made easy</title>
      <link>https://timvw.be/2006/10/22/searching-made-easy/</link>
      <pubDate>Sun, 22 Oct 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/10/22/searching-made-easy/</guid>
      <description>&lt;p&gt;Very often i have to write queries that return all the rows where one or more columns match a specific value. If i add for every column the condition &amp;lsquo;P_COLUMN IS NULL OR COLUMN = P_COLUMN&amp;rsquo; to the WHERE clause i only have to write one query. Here&amp;rsquo;s an example of such a query&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;PROCEDURE&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;FIND_TESTS&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#x9;&lt;/span&gt;P_ID&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;IN&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;TEST&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ID&lt;span style=&#34;color:#0550ae&#34;&gt;%&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;Type&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#x9;&lt;/span&gt;P_TITLE&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;IN&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;TEST&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;TITLE&lt;span style=&#34;color:#0550ae&#34;&gt;%&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;Type&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#x9;&lt;/span&gt;P_TYPE_CODE&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;IN&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;TEST&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;TYPE_CODE&lt;span style=&#34;color:#0550ae&#34;&gt;%&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;Type&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#x9;&lt;/span&gt;P_CURSOR&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;OUT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;CURSOR&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;REF&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;AS&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;BEGIN&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;OPEN&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;P_CURSOR&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;FOR&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;SELECT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;ID&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;TITLE&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;TYPE_CODE&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;FROM&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;TEST&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;WHERE&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;P_ID&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;IS&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;NULL&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;OR&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;ID&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;P_ID&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;AND&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;P_TITLE&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;IS&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;NULL&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;OR&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;TITLE&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;LIKE&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;P_TITLE&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;AND&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;P_TYPE_CODE&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;IS&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;NULL&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;OR&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;TYPE_CODE&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;LIKE&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;P_TYPE_CODE&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;ORDER&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;BY&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;ID&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;ASC&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;END&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;A couple of examples how you can use this query&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updating the Internet Options / Lan Settings</title>
      <link>https://timvw.be/2006/10/12/updating-the-internet-options-/-lan-settings/</link>
      <pubDate>Thu, 12 Oct 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/10/12/updating-the-internet-options-/-lan-settings/</guid>
      <description>&lt;p&gt;A while ago i wrote that i had created two .reg files to update my Internet Options / Lan Settings (&lt;a href=&#34;http://www.timvw.be/automating-the-configuration-of-internet-options-and-lan-settings/&#34;&gt;Automating the configuration of Internet Options / Lan Settings&lt;/a&gt;). Yesterday i build a little Windows Service that automates this completely. With &lt;a href=&#34;http://windowssdk.msdn.microsoft.com/en-gb/library/aa366329.aspx&#34;&gt;NotifyAddrChange&lt;/a&gt; i am notified whenever a change occurs in the table that maps IPv4 addresses to interfaces&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[DllImport(&amp;#34;iphlpapi.dll&amp;#34;, CharSet = CharSet.Ansi)]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;extern&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; NotifyAddrChange&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;ref&lt;/span&gt; IntPtr handle&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; IntPtr overlapped&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The main loop of the service looks like this&lt;/p&gt;</description>
    </item>
    <item>
      <title>Screenshot of DataGridViews</title>
      <link>https://timvw.be/2006/10/08/screenshot-of-datagridviews/</link>
      <pubDate>Sun, 08 Oct 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/10/08/screenshot-of-datagridviews/</guid>
      <description>&lt;p&gt;The problem with a regular screenshot is that you only get to see a part of the DataGridViews. Here&amp;rsquo;s an example of a typical form&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/images/datagridviews-with-scrollbars.jpg&#34; alt=&#34;image of datagridview with scrollbars&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Here is a snippet that makes a screenshot of the complete DataGridViews&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;List&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;bitmap&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; bitmaps &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; List&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;bitmap&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Size size &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; Size&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; i &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; i &lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;4&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;++&lt;/span&gt;i&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#57606a&#34;&gt;// lookup the datagridview &lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;DataGridView dataGridView &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;DataGridView&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Controls&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;dataGridView&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;+&lt;/span&gt; i&lt;span style=&#34;color:#1f2328&#34;&gt;];&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#57606a&#34;&gt;// maximize the datagridview size (choosing between current and preferred) &lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Size oldSize &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; dataGridView&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Size&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Size newSize &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; dataGridView&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;PreferredSize&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;dataGridView&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Size&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Width &lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; newSize&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Width&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;newSize&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Width &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; dataGridView&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Size&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Width&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;dataGridView&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Size&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Height &lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; newSize&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Height&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;newSize&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Height &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; dataGridView&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Size&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Height&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;dataGridView&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Size &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; newSize&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#57606a&#34;&gt;// draw the datagridview into a bitmap&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Bitmap bitmap &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; Bitmap&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;dataGridView&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Width&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; dataGridView&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Height&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;dataGridView&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;DrawToBitmap&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;bitmap&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; Rectangle&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; dataGridView&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Width&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; dataGridView&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Height&lt;span style=&#34;color:#1f2328&#34;&gt;));&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#57606a&#34;&gt;// restore the datagridview to it&amp;#39;s original size&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;dataGridView&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Size &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; oldSize&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;bitmaps&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;bitmap&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#57606a&#34;&gt;// update total bitmap size&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;newSize&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Width &lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; size&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Width&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;size&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Width &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; newSize&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Width&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;size&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Height &lt;span style=&#34;color:#1f2328&#34;&gt;+=&lt;/span&gt; newSize&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Height&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;// copy all the bitmaps into one large bitmap&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Bitmap bitmapComplete &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; Bitmap&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;size&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Width&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; size&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Height&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Graphics g &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; Graphics&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;FromImage&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;bitmapComplete&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; height &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; i &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; i &lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;4&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;++&lt;/span&gt;i&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;g&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;DrawImageUnscaled&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;bitmaps&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;i &lt;span style=&#34;color:#1f2328&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;],&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; height&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;height &lt;span style=&#34;color:#1f2328&#34;&gt;+=&lt;/span&gt; bitmaps&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;i &lt;span style=&#34;color:#1f2328&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;].&lt;/span&gt;Height&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;// bitmapComplete is ready for use &lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;// eg: pictureBox1.Image = bitmapComplete &lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;// eg: bitmapComplete.Save(@&amp;#34;C:\screenshot.jpg&amp;#34;, ImageFormat.Jpeg); &lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/images/datagridviews-without-scrollbars.jpg&#34; alt=&#34;image of generated screenshot&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Accessing ConnectionStrings from App.config in a Console Application Project</title>
      <link>https://timvw.be/2006/10/04/accessing-connectionstrings-from-app.config-in-a-console-application-project/</link>
      <pubDate>Wed, 04 Oct 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/10/04/accessing-connectionstrings-from-app.config-in-a-console-application-project/</guid>
      <description>&lt;p&gt;Earlier today i added a configuration file to my Console Applicaton Project (Add Item -&amp;gt; Application Configuration File). Via &lt;a href=&#34;http://www.google.be/url?sa=t&amp;amp;ct=res&amp;amp;cd=1&amp;amp;url=http%3A%2F%2Fmsdn2.microsoft.com%2Fen-us%2Flibrary%2Fsystem.configuration.configurationsettings.aspx&amp;amp;ei=Z80jRYH_C6emiAKbksTEDA&amp;amp;sig=___7EifcEUZZI1hKTg7xiADzIZfIk=&amp;amp;sig2=l3qMgh7T4zcrtCc2IZOp-A&#34;&gt;ConfigurationSettings&lt;/a&gt; i could only access the AppSettings. It took me a while to figure out that i had to add a reference to System.Configuration.dll. Once that was done i could access the ConnectionStrings via &lt;a href=&#34;http://www.google.be/url?sa=t&amp;amp;ct=res&amp;amp;cd=1&amp;amp;url=http%3A%2F%2Fmsdn2.microsoft.com%2Fen-us%2Flibrary%2Fsystem.configuration.configurationmanager.aspx&amp;amp;ei=wM0jRbOxF7mEiALA4smRDA&amp;amp;sig=__mZt6_vi0x3-IpA4WDtLjmB8J4qU=&amp;amp;sig2=RhtohKiKtaGgUOTNFNtJ-w&#34;&gt;ConfigurationManager&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>From UnixTime to DateTime and back</title>
      <link>https://timvw.be/2006/10/04/from-unixtime-to-datetime-and-back/</link>
      <pubDate>Wed, 04 Oct 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/10/04/from-unixtime-to-datetime-and-back/</guid>
      <description>&lt;p&gt;Here are a couple of functions that allow you to convert from &lt;a href=&#34;http://en.wikipedia.org/wiki/Unixtime&#34;&gt;UnixTime&lt;/a&gt; to &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.datetime.aspx&#34;&gt;DateTime&lt;/a&gt; and back&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Util&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; DateTime UnixTime&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;get&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; DateTime&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;1970&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; DateTime FromUnixTime&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;double&lt;/span&gt; unixTime &lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; UnixTime&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;AddSeconds&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; unixTime &lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;double&lt;/span&gt; ToUnixTime&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; DateTime dateTime &lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;TimeSpan timeSpan &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; dateTime &lt;span style=&#34;color:#1f2328&#34;&gt;--&lt;/span&gt; UnixTime&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; timeSpan&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;TotalSeconds&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Code  39 barcodes recognizer</title>
      <link>https://timvw.be/2006/09/18/code-39-barcodes-recognizer/</link>
      <pubDate>Mon, 18 Sep 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/09/18/code-39-barcodes-recognizer/</guid>
      <description>&lt;p&gt;Earlier today i read &lt;a href=&#34;http://community.bartdesmet.net/blogs/bart/archive/2006/09/18/4432.aspx&#34;&gt;Code 39 barcodes in C#&lt;/a&gt; by &lt;a href=&#34;http://community.bartdesmet.net/blogs/bart/default.aspx&#34;&gt;Bart De Smet&lt;/a&gt;. The article shows the reader how to generate a &lt;a href=&#34;http://en.wikipedia.org/wiki/Code_39&#34;&gt;Code 39 barcode&lt;/a&gt;. I thought it would be cool if you could actually recognize the barcode in the generated bitmaps so i last couple of hours i wrote a BarCode39 Reader 🙂 Feel free to get &lt;a href=&#34;http://www.timvw.be/wp-content/code/csharp/BarCode39Reader.zip&#34;&gt;BarCode39Reader.zip&lt;/a&gt; sources now!(PS: I forgot to write this is still a very quick &amp;rsquo;n dirty hack. I don&amp;rsquo;t write bad code, just create a lot of opportunities to refactor 😉&lt;/p&gt;</description>
    </item>
    <item>
      <title>Anonymous methods</title>
      <link>https://timvw.be/2006/09/16/anonymous-methods/</link>
      <pubDate>Sat, 16 Sep 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/09/16/anonymous-methods/</guid>
      <description>&lt;p&gt;Suppose you add a couple of buttons to a panel as shown below. What do you think the message in the MessageBoxes will be?&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;partial&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Form1&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt; Form &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; Form1&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;InitializeComponent&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; i &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; i &lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;++&lt;/span&gt;i&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;Button button &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; Button&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;button&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Text &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; String&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Format&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;{0:00}&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; i&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;flowLayoutPanel1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Controls&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; button &lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;button&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Click &lt;span style=&#34;color:#1f2328&#34;&gt;+=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; EventHandler&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;delegate&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;Object sender&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; EventArgs e&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;MessageBox&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Show&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;String&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Format&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;You clicked button {0:00}&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; i&lt;span style=&#34;color:#1f2328&#34;&gt;));&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;});&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In case you&amp;rsquo;re wondering why they all have the message &amp;ldquo;You clicked button 10&amp;rdquo; i suggest you read the following articles&lt;/p&gt;</description>
    </item>
    <item>
      <title>DataGridView with EditOnEnter as EditMode</title>
      <link>https://timvw.be/2006/09/16/datagridview-with-editonenter-as-editmode/</link>
      <pubDate>Sat, 16 Sep 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/09/16/datagridview-with-editonenter-as-editmode/</guid>
      <description>&lt;p&gt;Earlier this week i found that when a &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.windows.forms.datagridview.aspx&#34;&gt;DataGridView&lt;/a&gt; has it&amp;rsquo;s &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.windows.forms.datagridview.editmode.aspx&#34;&gt;EditMode&lt;/a&gt; property set to &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.windows.forms.datagridvieweditmode.aspx&#34;&gt;EditOnEnter&lt;/a&gt; the user cannot select an entire row by clicking on the row header. This prevents the user from being able to delete a row. A couple of websearches later i found a &lt;a href=&#34;http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=98504&#34;&gt;bugreport&lt;/a&gt; but the proposed workarounds didn&amp;rsquo;t work for me 🙁 Here is a workaround that does work for me&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; dataGridView1_MouseClick&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;object&lt;/span&gt; sender&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; MouseEventArgs e &lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;DataGridView&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;HitTestInfo hitInfo &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;dataGridView1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;HitTest&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;e&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;X&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; e&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Y&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; hitInfo&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Type &lt;span style=&#34;color:#1f2328&#34;&gt;==&lt;/span&gt; DataGridViewHitTestType&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;RowHeader &lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;dataGridView1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;EditMode &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; DataGridViewEditMode&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;EditOnKeystrokeOrF2&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;dataGridView1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;EndEdit&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;dataGridView1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;EditMode &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; DataGridViewEditMode&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;EditOnEnter&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Drag and Drop on a DataGridView</title>
      <link>https://timvw.be/2006/09/16/drag-and-drop-on-a-datagridview/</link>
      <pubDate>Sat, 16 Sep 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/09/16/drag-and-drop-on-a-datagridview/</guid>
      <description>&lt;p&gt;Here is a bit of sample code that allows you to drag and drop a cellvalue in a DataGridView (don&amp;rsquo;t forget to set the AllowDrop property of the DataGridView to true). Notice that you need to translate the X and Y properties of the DragEventArgs first (unlike the X and Y properties of the MouseEventArgs)&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; dataGridView1_MouseDown&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;object&lt;/span&gt; sender&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; MouseEventArgs e &lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;DataGridView&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;HitTestInfo info &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;dataGridView1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;HitTest&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; e&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;X&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; e&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Y &lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; info&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;RowIndex &lt;span style=&#34;color:#1f2328&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; info&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ColumnIndex &lt;span style=&#34;color:#1f2328&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;Object &lt;span style=&#34;color:#cf222e&#34;&gt;value&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;dataGridView1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Rows&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;info&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;RowIndex&lt;span style=&#34;color:#1f2328&#34;&gt;].&lt;/span&gt;Cells&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;info&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ColumnIndex&lt;span style=&#34;color:#1f2328&#34;&gt;].&lt;/span&gt;Value&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;value&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;null&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;dataGridView1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Rows&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;info&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;RowIndex&lt;span style=&#34;color:#1f2328&#34;&gt;].&lt;/span&gt;Cells&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;info&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ColumnIndex&lt;span style=&#34;color:#1f2328&#34;&gt;].&lt;/span&gt;Value &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;null&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;DoDragDrop&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;value&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; DragDropEffects&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Move &lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; dataGridView1_DragDrop&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;object&lt;/span&gt; sender&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; DragEventArgs e &lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Point p &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;dataGridView1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;PointToClient&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; Point&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; e&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;X&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; e&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Y &lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;DataGridView&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;HitTestInfo info &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;dataGridView1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;HitTest&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; p&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;X&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; p&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Y &lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; info&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;RowIndex &lt;span style=&#34;color:#1f2328&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; info&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ColumnIndex &lt;span style=&#34;color:#1f2328&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;Object &lt;span style=&#34;color:#cf222e&#34;&gt;value&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;Object&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;e&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Data&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetData&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;typeof&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;dataGridView1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Rows&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;info&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;RowIndex&lt;span style=&#34;color:#1f2328&#34;&gt;].&lt;/span&gt;Cells&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;info&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ColumnIndex&lt;span style=&#34;color:#1f2328&#34;&gt;].&lt;/span&gt;Value &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;value&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; dataGridView1_DragEnter&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;object&lt;/span&gt; sender&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; DragEventArgs e &lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;e&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Effect &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; DragDropEffects&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Move&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Inconsistent Drag and Drop API</title>
      <link>https://timvw.be/2006/09/16/inconsistent-drag-and-drop-api/</link>
      <pubDate>Sat, 16 Sep 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/09/16/inconsistent-drag-and-drop-api/</guid>
      <description>&lt;p&gt;Every System.Windows.Forms.Control has the following events&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;public event DragEventHandler &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.windows.forms.control.dragdrop.aspx&#34;&gt;DragDrop&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;public event DragEventHandler &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.windows.forms.control.dragenter.aspx&#34;&gt;DragEnter&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;public event EventHandler &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.windows.forms.control.dragleave.aspx&#34;&gt;DragLeave&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;public event DragEventHandler &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.windows.forms.control.dragover.aspx&#34;&gt;DragOver&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;This means, when the user drags something away of the control, you can&amp;rsquo;t access the data anymore (unless you cached it somewhere when the DragEnter or DragOver events occured). Here is an extract from Microsoft patterns and practives on &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/ms229011.aspx&#34;&gt;Event Design&lt;/a&gt;&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;div&gt;&#xA;  If you define an event that takes an EventArgs instance instead of a derived class that you define, you cannot add data to the event in later versions. For that reason, it is preferable to create an empty derived class of EventArgs. This allows you add data to the event in later versions without introducing breaking changes.&#xA;&lt;/div&gt;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>Adding DataGridViewColumns (lots of them)</title>
      <link>https://timvw.be/2006/09/14/adding-datagridviewcolumns-lots-of-them/</link>
      <pubDate>Thu, 14 Sep 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/09/14/adding-datagridviewcolumns-lots-of-them/</guid>
      <description>&lt;p&gt;Last couple of days i&amp;rsquo;ve been trying to add a couple (750+) columns into a DataGridView. Initially i tried the following&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;dataGridView1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ColumnCount &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;750&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The code above results in the following error: &lt;strong&gt;Sum of the columns&amp;rsquo; FillWeight values cannot exceed 65535.&lt;/strong&gt; Then i tried the following&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;DataGridViewColumn&lt;span style=&#34;color:#1f2328&#34;&gt;[]&lt;/span&gt; columns &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; DataGridViewColumn&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;750&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;];&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; i &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; i &lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt; columns&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Length&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;++&lt;/span&gt;i &lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;DataGridViewColumn column &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; DataGridViewColumn&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;column&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;CellTemplate &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; DataGridViewTextBoxCell&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;column&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;FillWeight &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; columns&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;i&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; column&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;dataGridView1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Columns&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;AddRange&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; columns &lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This results in the following error: &lt;strong&gt;At least one of the DataGridView control&amp;rsquo;s columns has no cell template.&lt;/strong&gt; Thus i tried the following&lt;/p&gt;</description>
    </item>
    <item>
      <title>Implementing Master/Detail for Custom Objects with DataGridViewComboBoxColumns</title>
      <link>https://timvw.be/2006/09/10/implementing-master/detail-for-custom-objects-with-datagridviewcomboboxcolumns/</link>
      <pubDate>Sun, 10 Sep 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/09/10/implementing-master/detail-for-custom-objects-with-datagridviewcomboboxcolumns/</guid>
      <description>&lt;p&gt;Imagine you have the following two classes&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Parent&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; id&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; name&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; Parent&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; id&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; name &lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;id &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; id&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;name &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; name&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; Id &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;get&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;id&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; Name &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;get&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;name&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Child&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt; Parent &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; parentId&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; Child&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; id&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; parentId&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; name &lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;base&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; id&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; name &lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;parentId &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; parentId&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; ParentId &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;get&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;parentId&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In the first ComboBoxColumn you display a list of possible Parents. In the second ComboBoxColumn you display Children, but only those that belong to the Chosen Parent. Here is how it goes&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using DataGridViewComboBoxColumn with Custom Objects</title>
      <link>https://timvw.be/2006/09/10/using-datagridviewcomboboxcolumn-with-custom-objects/</link>
      <pubDate>Sun, 10 Sep 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/09/10/using-datagridviewcomboboxcolumn-with-custom-objects/</guid>
      <description>&lt;p&gt;Earlier today i was playing with the &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.windows.forms.datagridview.aspx&#34;&gt;DataGridView&lt;/a&gt; control. I wanted to have a couple of &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/xwx934x7.aspx&#34;&gt;DataGridViewComboBoxColumn&lt;/a&gt;s in order to limit the available input options for the user. The documentation clearly mentions the following&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;div&gt;&#xA;  The DataGridViewComboBoxColumn will only work properly if there is a mapping between all its cell values that are populated by the DataGridView.DataSource property and the range of choices populated either by the DataSource property or the Items property. If this mapping doesn&#39;t exist, the message &#34;An Error happened Formatting, Display&#34; will appear when the column is in view.&#xA;&lt;/div&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;Here is sample of a custom object&lt;/p&gt;</description>
    </item>
    <item>
      <title>Playing with VMWare Server</title>
      <link>https://timvw.be/2006/09/09/playing-with-vmware-server/</link>
      <pubDate>Sat, 09 Sep 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/09/09/playing-with-vmware-server/</guid>
      <description>&lt;p&gt;Earlier today i decided to add an image to my VMWare Server. The creation of the image went smooth but at the end of the process i recieved the following error: &lt;strong&gt;Unable to add virtual machine &amp;lsquo;E:\&amp;hellip;..&amp;rsquo; to the inventory: Virtual machine is already in the inventory&amp;quot;.&lt;/strong&gt; When i tried to open the machine via File &amp;gt; Open i recieved the error again. Here is a workaround for this problem: Choose &amp;lsquo;View&amp;rsquo; in the menubar and click on Inventory F9. At the left of the screen you&amp;rsquo;ll see a list of machines that are in the Inventory. If you delete the entries (right click on the machines in the list and choose delete) you&amp;rsquo;ll be able to Open your newly created machine 🙂&lt;/p&gt;</description>
    </item>
    <item>
      <title>Generate a menu with month names</title>
      <link>https://timvw.be/2006/09/03/generate-a-menu-with-month-names/</link>
      <pubDate>Sun, 03 Sep 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/09/03/generate-a-menu-with-month-names/</guid>
      <description>&lt;p&gt;I still see people building their calendar control or month (or day) picker with a hardcoded array of month (or day) names. With the use of &lt;a href=&#34;http://www.php.net/strftime&#34;&gt;strftime&lt;/a&gt; you can easily build a &lt;a href=&#34;http://www.php.net/setlocale&#34;&gt;locale aware&lt;/a&gt; version. Here is an example&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;?&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;php&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;function&lt;/span&gt; &lt;span style=&#34;color:#6639ba&#34;&gt;SelectMonths&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$name&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;selectMonths&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$id&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;selectMonths&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$current_month&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;date&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;n&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;echo&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;&amp;lt;select name=&amp;#34;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;.&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$name&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;&amp;#34; id=&amp;#34;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;.&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$id&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;.&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;&amp;#34;&amp;gt;&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$i&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$i&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;13&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;++&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$i&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;echo&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;&amp;lt;option value=&amp;#34;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;.&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$i&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;.&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;&amp;#34;&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$i&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$current\_month&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;echo&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39; selected&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$month\_name&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;strftime&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;%B&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;mktime&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$i&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;2006&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;));&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;echo&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;&amp;gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;.&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$month_name&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;.&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;&amp;lt;/option&amp;gt;&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;echo&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;&amp;lt;/select&amp;gt;&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;?&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And now you can easily generate a localized menu&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;?&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;php&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;include&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;SelectMonths.php&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;SelectMonths&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;// Tested on a Windows host - Read the http://be.php.net/setlocale&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;setlocale&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;LC_TIME&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;dutch&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;SelectMonths&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;?&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>List the month names</title>
      <link>https://timvw.be/2006/09/03/list-the-month-names/</link>
      <pubDate>Sun, 03 Sep 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/09/03/list-the-month-names/</guid>
      <description>&lt;p&gt;As i wrote in &lt;a href=&#34;http://www.timvw.be/generate-a-menu-with-month-names/&#34;&gt;Generate a menu with month names&lt;/a&gt; it&amp;rsquo;s silly to hardcode month names. Here&amp;rsquo;s a C# sample using localization/globalization&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;using&lt;/span&gt; &lt;span style=&#34;color:#24292e&#34;&gt;System&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;using&lt;/span&gt; &lt;span style=&#34;color:#24292e&#34;&gt;System.Globalization&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;using&lt;/span&gt; &lt;span style=&#34;color:#24292e&#34;&gt;System.Threading&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;namespace&lt;/span&gt; &lt;span style=&#34;color:#24292e&#34;&gt;ConsoleApplication1&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Program&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; ListMonths&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; i &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; i &lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;13&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;++&lt;/span&gt;i &lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;DateTime dateTime &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; DateTime&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; DateTime&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Now&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Year&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; i&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteLine&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; dateTime&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ToString&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;MMMM&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;WriteLine&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; Main&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[]&lt;/span&gt; args &lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;Thread&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;CurrentThread&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;CurrentCulture &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; CultureInfo&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;en-US&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;false&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;ListMonths&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;Thread&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;CurrentThread&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;CurrentCulture &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; CultureInfo&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;nl-BE&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;false&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;ListMonths&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Write&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;{0}Press any key to continue...&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; Environment&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;NewLine &lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ReadKey&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Selecting custom Objects from a ComboBox</title>
      <link>https://timvw.be/2006/09/03/selecting-custom-objects-from-a-combobox/</link>
      <pubDate>Sun, 03 Sep 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/09/03/selecting-custom-objects-from-a-combobox/</guid>
      <description>&lt;p&gt;Earlier this week someone asked me how he could select custom objects from a &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.windows.forms.combobox.aspx&#34;&gt;ComboBox&lt;/a&gt;. Here is the code he used&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; FillComboBoxPersons&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;List&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;person&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; persons&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;comboBoxPersons&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Items&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Clear&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;comboBoxPersons&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Items&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;-- Select Person -------------&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;foreach&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; Person person &lt;span style=&#34;color:#cf222e&#34;&gt;in&lt;/span&gt; persons &lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;comboBoxPersons&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Items&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; person&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Name &lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;comboBoxPersons&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;SelectedIndex &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In order to get the selected item he then used the &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.windows.forms.combobox.selectedindex.aspx&#34;&gt;SelectedIndex&lt;/a&gt; property to lookup the Person in a cache of the persons collection.&lt;/p&gt;&#xA;&lt;p&gt;Here is an approach that doesn&amp;rsquo;t require you to have a cache of the collection (Since the persons are already stored in the items)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Selecting custom Objects from a DataGridView</title>
      <link>https://timvw.be/2006/09/03/selecting-custom-objects-from-a-datagridview/</link>
      <pubDate>Sun, 03 Sep 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/09/03/selecting-custom-objects-from-a-datagridview/</guid>
      <description>&lt;p&gt;Here is a way that allows the user to select a row (custom object properties are used as column values) from a &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.windows.forms.datagridview.aspx&#34;&gt;DataGridView&lt;/a&gt; assuming that the &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.windows.forms.datagridview.selectionmode.aspx&#34;&gt;SelectionMode&lt;/a&gt; property is set FullRowSelect&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; FillDataGridViewPersons&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; List&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;person&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt; persons &lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;dataGridViewPersons&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Rows&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Clear&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; i &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; i &lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt; persons&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Count&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;++&lt;/span&gt;i &lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;dataGridViewPersons&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Rows&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;dataGridViewPersons&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Rows&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;i&lt;span style=&#34;color:#1f2328&#34;&gt;].&lt;/span&gt;Tag &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; persons&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;i&lt;span style=&#34;color:#1f2328&#34;&gt;];&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;dataGridViewPersons&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Rows&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;i&lt;span style=&#34;color:#1f2328&#34;&gt;].&lt;/span&gt;SetValues&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;object&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[]&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; persons&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;i&lt;span style=&#34;color:#1f2328&#34;&gt;].&lt;/span&gt;Id&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; persons&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;i&lt;span style=&#34;color:#1f2328&#34;&gt;].&lt;/span&gt;Name &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; buttonDoSomething_Click&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;object&lt;/span&gt; sender&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; EventArgs e &lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;dataGridViewPersons&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;SelectedRows&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Count &lt;span style=&#34;color:#1f2328&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; selectedRowIndex &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;dataGridViewPersons&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;SelectedCells&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;].&lt;/span&gt;RowIndex&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;Person selectedPerson &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;Person&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;dataGridViewPersons&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Rows&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;selectedRowIndex&lt;span style=&#34;color:#1f2328&#34;&gt;].&lt;/span&gt;Tag&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;MessageBox&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Show&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; String&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Format&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;You selected the person with &#x9;} &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Automating the configuration of Internet Options / Lan Settings</title>
      <link>https://timvw.be/2006/09/02/automating-the-configuration-of-internet-options-/-lan-settings/</link>
      <pubDate>Sat, 02 Sep 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/09/02/automating-the-configuration-of-internet-options-/-lan-settings/</guid>
      <description>&lt;p&gt;I got tired of manually changing my Internet Options / Lan Settings. It was really time to say goodbye to the dialog below&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/images/lansettingsdialog.jpg&#34; alt=&#34;screenshot of lan settings dialog&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;With the help of &lt;a href=&#34;http://support.microsoft.com/kb/310516/&#34;&gt;How to add, modify, or delete registry subkeys and values by using a registration entries (.reg) file&lt;/a&gt; i wrote two little files that add/remove the automatic configuration location.The work.reg file looks like&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-reg&#34; data-lang=&#34;reg&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;REGEDIT4&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;HKEY_CURRENT_USER&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;\Software\Microsoft\Windows\CurrentVersion\Internet Settings]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;#34;AutoConfigURL&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;http://192.168.1.99/&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And the home.reg file looks like:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Dynamic CSS with PHP</title>
      <link>https://timvw.be/2006/08/27/dynamic-css-with-php/</link>
      <pubDate>Sun, 27 Aug 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/08/27/dynamic-css-with-php/</guid>
      <description>&lt;p&gt;Both html and css are simply text. Thus you should be able to generate css as easily as html with php. Now if you add a reference to the css.php file in your html (eg: &lt;link rel=&#34;stylesheet&#34; href=&#34;http://example.com/css.php&#34; type=&#34;text/css&#34; media=&#34;screen&#34; /&gt;) you&amp;rsquo;ll probably experience that your browser ignores the file. How is this possible? Here is an example of a simple css.php file&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;body&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;background&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;color&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;?&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;php&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;echo&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;yellow&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#57606a&#34;&gt;?&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Here is a simulation of what your browser recieves when it requests the file:&lt;/p&gt;</description>
    </item>
    <item>
      <title>tweaking Oracle SQL Developer</title>
      <link>https://timvw.be/2006/08/27/tweaking-oracle-sql-developer/</link>
      <pubDate>Sun, 27 Aug 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/08/27/tweaking-oracle-sql-developer/</guid>
      <description>&lt;p&gt;A couple of days ago i discovered &lt;a href=&#34;http://www.oracle.com/technology/products/database/sql_developer/index.html&#34;&gt;Oracle SQL Developer&lt;/a&gt;, a new and free graphical tool for database development. At first i was impressed by all it&amp;rsquo;s features but when i tried to modify a couple of existing stored procedures the application freezed. &lt;a href=&#34;http://forums.oracle.com/forums/profile.jspa?userID=481264&#34;&gt;EricH&lt;/a&gt; directed me to the &lt;a href=&#34;http://www.oracle.com/technology/products/database/sql_developer/files/faqs.html#q3&#34;&gt;FAQ: Can I suppress Code Insight (and why would I want to)?&lt;/a&gt;. Now that i have added the &amp;lsquo;AddVMOption -J-Dsdev.insight=false&amp;rsquo; to my sqldeveloper.conf the application runs smooth&lt;/p&gt;</description>
    </item>
    <item>
      <title>Unable to enlist in a distributed transaction</title>
      <link>https://timvw.be/2006/08/26/unable-to-enlist-in-a-distributed-transaction/</link>
      <pubDate>Sat, 26 Aug 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/08/26/unable-to-enlist-in-a-distributed-transaction/</guid>
      <description>&lt;p&gt;Earlier today we were confronted with the following &lt;a href=&#34;http://msdn2.microsoft.com/en-US/library/system.data.oracleclient.oracleexception.aspx&#34;&gt;OracleException&lt;/a&gt;: &lt;strong&gt;Unable to enlist in a distributed transaction&lt;/strong&gt;. Our code (and accompanying tests) had been running fine for the last two weeks thus we expected there was a problem with the database. A member of the DBA team assurred us there was nothing wrong with the database. Finally we discovered that we had created a circular reference and thus the program ended up in an endless loop (well untill the database decided it had been enough anyway :p). Here is a simplified version of the problem&lt;/p&gt;</description>
    </item>
    <item>
      <title>Experimenting with Oracle and PL/SQL</title>
      <link>https://timvw.be/2006/08/21/experimenting-with-oracle-and-pl/sql/</link>
      <pubDate>Mon, 21 Aug 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/08/21/experimenting-with-oracle-and-pl/sql/</guid>
      <description>&lt;p&gt;As i already wrote, last couple of days i&amp;rsquo;ve been experimenting with PL/SQL. At work we use &lt;a href=&#34;http://www.toadsoft.com/toad_oracle.htm&#34;&gt;Toad for Oracle&lt;/a&gt; but since &lt;a href=&#34;http://www.toadsoft.com/&#34;&gt;TOADSoft&lt;/a&gt; only offers a limited freeware version i decided to write my code with &lt;a href=&#34;http://www.vim.org&#34;&gt;GVim&lt;/a&gt; and use &lt;a href=&#34;http://orafaq.com/faqplus.htm#WHAT&#34;&gt;SQL*Plus&lt;/a&gt; at home. Here are a couple of lines i added to my login.sql file&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;DEFINE&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;_EDITOR&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;gvim -c &amp;#34;set filetype=sql&amp;#34;&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;SET&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;SERVEROUTPUT&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;ON&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;SET&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;LINESIZE&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;120&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;SET&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;AUTOCOMMIT&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;OFF&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;ALTER&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;SESSION&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;SET&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;NLS_DATE_FORMAT&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;YYYY-MM-DD&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In a stored procedure i created and filled an instance of NUMBER_TABLE (CREATE TYPE NUMBER_TABLE AS TABLE OF NUMBER) and my stored procedure tried to select all the rows in that table (SELECT * FROM V_NUMBER_TABLE). Apparently the engine didn&amp;rsquo;t know this type @runtime despite the fact that i declared it in my stored procedure (V_NUMBER TABLE NUMBER_TABLE := NUMBER_TABLE();) and the engine compiled the package without errors. I got round that problem as following&lt;/p&gt;</description>
    </item>
    <item>
      <title>Installing MSDN Library May 2006</title>
      <link>https://timvw.be/2006/08/14/installing-msdn-library-may-2006/</link>
      <pubDate>Mon, 14 Aug 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/08/14/installing-msdn-library-may-2006/</guid>
      <description>&lt;p&gt;Today i downloaded the freely available &lt;a href=&#34;http://www.microsoft.com/downloads/details.aspx?FamilyId=373930CB-A3D7-4EA5-B421-DD6818DC7C41&amp;amp;displaylang=en&#34;&gt;MSDN Library (May 2006 Edition)&lt;/a&gt;. I appended .iso to the filenames and mounted the first image with &lt;a href=&#34;http://ww2.nero.com/nero6/eng/Nero_ImageDrive_prev.html&#34;&gt;Nero ImageDrive&lt;/a&gt;. After a while i got the following error message: &amp;ldquo;Source file not found: _17693_RTL_x86_enu_NET_Framework_SDK_HxS.cab&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/images/msdn-library-2006-05-error.jpg&#34; alt=&#34;error message with msdn library installer&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Apparently this file exists on the second disk (Why doesn&amp;rsquo;t the installer ask me to insert the second disk?). And yes, a little while later the same thing happens again when the third disk is expected&amp;hellip;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Inserting pause to your Console Applications</title>
      <link>https://timvw.be/2006/08/05/inserting-pause-to-your-console-applications/</link>
      <pubDate>Sat, 05 Aug 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/08/05/inserting-pause-to-your-console-applications/</guid>
      <description>&lt;p&gt;When i write Console Applications i find myself to write the following two lines quite often&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Write&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;{0}Press any key to continue...&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; Environment&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;NewLine&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Console&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ReadKey&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;As you already know i&amp;rsquo;m lazy so i decided to write an &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/ms165392.aspx&#34;&gt;IntelliSense Code Snippet&lt;/a&gt;. When i type &amp;ldquo;pau&amp;rdquo; Intellisense show the following:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/images/intellisense-drop-down-list.jpg&#34; alt=&#34;Intellisense drop down list&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Next i hit the tab button twice and i get the following effect:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/images/intellisense-code-snippet.jpg&#34; alt=&#34;Intellisense code snippet&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Download &lt;a href=&#34;http://www.timvw.be/wp-content/code/csharp/pause.txt&#34;&gt;pause.txt&lt;/a&gt; and save it as Pause.snippet in your %My DocumentS\Visual Studio 2005\Code Snippets\Visual C#\My Code Snippets% folder.&lt;/p&gt;</description>
    </item>
    <item>
      <title>eID with .NET</title>
      <link>https://timvw.be/2006/07/23/eid-with-.net/</link>
      <pubDate>Sun, 23 Jul 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/07/23/eid-with-.net/</guid>
      <description>&lt;p&gt;When i started working (already 3 weeks ago) i recieved a laptop. Friday i discovered that this laptop has a &lt;a href=&#34;http://en.wikipedia.org/wiki/Smartcard&#34;&gt;Smart card&lt;/a&gt; reader and i wanted to experiment with it. I thought it would be nice if i could read the data on my &lt;a href=&#34;http://eid.belgium.be/&#34;&gt;eID&lt;/a&gt;. Apart from &lt;a href=&#34;http://download.microsoft.com/download/4/f/d/4fd49a94-8772-4bd0-88ca-bf46e2d029fc/WHITEPAPERS/Accessing%20the%20eID%20Middleware%20from%20.NET%20(Version%201.0).doc&#34;&gt;Accessing the eID Middleware from .NET (Version 1.0)&lt;/a&gt; i couldn&amp;rsquo;t find much information. I decided to use the document as the basis for my own libeid wrapper. With the Simple (Wrapper API) reading data becomes extremely easy&lt;/p&gt;</description>
    </item>
    <item>
      <title>Windows Multimedia Video Capture</title>
      <link>https://timvw.be/2006/06/26/windows-multimedia-video-capture/</link>
      <pubDate>Mon, 26 Jun 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/06/26/windows-multimedia-video-capture/</guid>
      <description>&lt;p&gt;On my computer the &lt;a href=&#34;http://msdn.microsoft.com/library/default.asp?url=./library/en-us/wia/wia/overviews/startpage.asp&#34;&gt;WIA (Windows Image Acquisition)&lt;/a&gt; API is SLOOOOOW. So i decided to give the &lt;a href=&#34;http://windowssdk.msdn.microsoft.com/en-us/library/ms713477(VS.80).aspx&#34;&gt;Windows Multimedia Video Capture&lt;/a&gt; API a try. I didn&amp;rsquo;t take long to &lt;a href=&#34;http://msdn.microsoft.com/library/default.asp?url=./library/en-us/cpguide/html/cpconcreatingprototypesinmanagedcode.asp&#34;&gt;create the prototypes in Managed Code&lt;/a&gt; and &lt;a href=&#34;http://msdn.microsoft.com/library/en-us/cpguide/html/cpconcallingdllfunction.asp&#34;&gt;call the DLL functions&lt;/a&gt;. Everything runs really smooth now&amp;hellip; As always, feel free to download the &lt;a href=&#34;http://www.timvw.be/wp-content/code/csharp/testavicap32.zip&#34;&gt;testavicap32&lt;/a&gt; sources now!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Windows Image Acquisition</title>
      <link>https://timvw.be/2006/06/24/windows-image-acquisition/</link>
      <pubDate>Sat, 24 Jun 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/06/24/windows-image-acquisition/</guid>
      <description>&lt;p&gt;Earlier today i decided to toy around with my webcam. A couple of websearches later i ended up at &lt;a href=&#34;http://msdn.microsoft.com/library/default.asp?url=./library/en-us/wia/wia/overviews/startpage.asp&#34;&gt;WIA (Windows Image Acquisition)&lt;/a&gt;. I found a couple of articles (eg: &lt;a href=&#34;http://msdn.microsoft.com/coding4fun/someassemblyrequired/lookatme/default.aspx&#34;&gt;here&lt;/a&gt; and &lt;a href=&#34;http://blogs.msdn.com/robburke/archive/2005/09/21/472541.aspx&#34;&gt;here&lt;/a&gt;) that showed how to capture images. I wanted to display the caputered image in a &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.windows.forms.picturebox.aspx&#34;&gt;PictureBox&lt;/a&gt;. Unfortunately everybody seems to save the WIA.ImageFile to a file and then load the imagefile into a PictureBox. It&amp;rsquo;s obvious that i don&amp;rsquo;t want to save the image into a file first. Here is my workaround&lt;/p&gt;</description>
    </item>
    <item>
      <title>Experimenting with LINQ Preview (May 2006)</title>
      <link>https://timvw.be/2006/06/20/experimenting-with-linq-preview-may-2006/</link>
      <pubDate>Tue, 20 Jun 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/06/20/experimenting-with-linq-preview-may-2006/</guid>
      <description>&lt;p&gt;Today i downloaded and installed &lt;a href=&#34;http://www.microsoft.com/downloads/details.aspx?familyid=1e902c21-340c-4d13-9f04-70eb5e3dceea&amp;amp;displaylang=en&#34;&gt;LINQ Preview (May 2006)&lt;/a&gt;. Well, that was the plan anyway:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/images/linq-2006-06-error.png&#34; alt=&#34;error with linq preview installer&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;A couple of minutes later i found &lt;a href=&#34;http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=394174&amp;amp;SiteID=1&#34;&gt;this page&lt;/a&gt; and was able to solve the problem by adding the following users with administrative rights: Power Users, Users and Creator Owner.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A TableModel for Entity Beans</title>
      <link>https://timvw.be/2006/06/18/a-tablemodel-for-entity-beans/</link>
      <pubDate>Sun, 18 Jun 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/06/18/a-tablemodel-for-entity-beans/</guid>
      <description>&lt;p&gt;For my graduation project i needed a component that could display a list of &lt;a href=&#34;http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/EJBConcepts4.html&#34;&gt;Entity Beans&lt;/a&gt;. I found that &lt;a href=&#34;http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/JTable.html&#34;&gt;JTable&lt;/a&gt; is such a component and with the help of custom &lt;a href=&#34;http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/table/TableCellRenderer.html&#34;&gt;TableCellRenderer&lt;/a&gt; and &lt;a href=&#34;http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/table/TableCellEditor.html&#34;&gt;TableCellEditor&lt;/a&gt; components i was able to customize the rendering to my needs. In order to get the data into the JTable i implemented a custom &lt;a href=&#34;http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/table/TableModel.html&#34;&gt;TableModel&lt;/a&gt;, namely &lt;a href=&#34;http://www.timvw.be/wp-content/code/java/EntityTableModel.java.txt&#34;&gt;EntityTableModel&lt;/a&gt;. Now i can easily generate a JTable that displays Entity Beans&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-java&#34; data-lang=&#34;java&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;// fetch the elements we want to display&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;Object&lt;span style=&#34;color:#0550ae&#34;&gt;[]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;elements&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;employeeController&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#x9;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;getEntityManager&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#x9;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;createNamedQuery&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;findEmployees&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#x9;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;getResultList&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#x9;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;toArray&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;// build map with column name, entity attribute pairs&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;HashMap&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;&lt;/span&gt;string&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;String&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;colAttrs&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;LinkedHashMap&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;&lt;/span&gt;string&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;String&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;colAttrs&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;put&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;First Name&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;firstName&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;colAttrs&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;put&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Last Name&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;lastName&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;// build collection with editable attributes&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;Collection&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;&lt;/span&gt;string&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;editables&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;ArrayList&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;&lt;/span&gt;string&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;// initialise the tablemodel&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;TableModel&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;tableModel&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;EntityTableModel&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;elements&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;colAttrs&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;editables&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;// initialise the table&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;JTable&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;table&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;JTable&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;tableModel&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>BBCode for Graphics2D</title>
      <link>https://timvw.be/2006/06/14/bbcode-for-graphics2d/</link>
      <pubDate>Wed, 14 Jun 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/06/14/bbcode-for-graphics2d/</guid>
      <description>&lt;p&gt;For my graduation project we needed the ability to print a couple of bills etc. Printing lines was pretty simple with the &lt;a href=&#34;http://www.timvw.be/wp-content/code/java/LinesPrinter.java.txt&#34;&gt;LinesPrinter&lt;/a&gt; i blogged about a while ago. We had two choices: either implement a specific &lt;a href=&#34;http://java.sun.com/j2se/1.5.0/docs/api/java/awt/print/Printable.html#print(java.awt.Graphics,%20java.awt.print.PageFormat,%20int)&#34;&gt;print method&lt;/a&gt; for each module or implement a reusable markup system. Obviously we went for the second option and came up with something alike &lt;a href=&#34;http://en.wikipedia.org/wiki/BBCode&#34;&gt;BBCode&lt;/a&gt;. The codes we implemented are&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;[b]..[/b] for bold&lt;/li&gt;&#xA;&lt;li&gt;[i]..[/i] for italic&lt;/li&gt;&#xA;&lt;li&gt;[color=x]..[/color] for color x&lt;/li&gt;&#xA;&lt;li&gt;[c]..[/c] for centered text&lt;/li&gt;&#xA;&lt;li&gt;[r]..[/r] for right aligned text&lt;/li&gt;&#xA;&lt;li&gt;[ll=x]..[/ll] for left aligned text starting from the x-th column at the left&lt;/li&gt;&#xA;&lt;li&gt;[lr=x]..[/lr] for left aligned text starting from the x-th column at the right&lt;/li&gt;&#xA;&lt;li&gt;[rl=x]..[/ll] for right aligned text starting from the x-th column at the left&lt;/li&gt;&#xA;&lt;li&gt;[rr=x]..[/ll] for right aligned text starting from the x-th column at the right&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Since the code is written to work on a &lt;a href=&#34;http://java.sun.com/j2se/1.5.0/docs/api/java/awt/Graphics2D.html&#34;&gt;Graphics2D&lt;/a&gt; device you can also render the formatted text on a jpanel etc instead of a printer device. Here is a screenshot of a generated bill (on a jpanel):&lt;/p&gt;</description>
    </item>
    <item>
      <title>Couple of screenshots of my graduation project</title>
      <link>https://timvw.be/2006/06/12/couple-of-screenshots-of-my-graduation-project/</link>
      <pubDate>Mon, 12 Jun 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/06/12/couple-of-screenshots-of-my-graduation-project/</guid>
      <description>&lt;p&gt;Here are a couple of screenshots of my graduation project i&amp;rsquo;ve been working on last couple of weeks. The GUI is built with Swing, the bussiness rules make extensive use of the Apache BeanUtils and Hibernate Validators packages and with PostgreSQL we have a solid database. Since it takes a while to load the EntityManagerFactory we&amp;rsquo;ve added a simple splashscreen:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.timvw.be/wp-content/images/grad01.png&#34;&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/images/gradtn01.png&#34; alt=&#34;splashscreen&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;The base screen displays a map with the tables in the restaurant. The color of the tables depends on the state of the visit (eg: just arrived, ordered some items, eating soup, eating dessert, paid the bill). There is also the possiblity to group tables. Offcourse you have the possibility to rearrange the tables and add/remove the maps:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Printing an array of strings</title>
      <link>https://timvw.be/2006/05/31/printing-an-array-of-strings/</link>
      <pubDate>Wed, 31 May 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/05/31/printing-an-array-of-strings/</guid>
      <description>&lt;p&gt;Yesterday i&amp;rsquo;ve been experimenting with &lt;a href=&#34;http://java.sun.com/printing/&#34;&gt;Printing on the Java Platform&lt;/a&gt;. I needed to generate a printout of ordered menuitems on the default printer. It took a while before i found out there is translation needed between the coordinates of the &lt;a href=&#34;http://java.sun.com/j2se/1.4.2/docs/api/java/awt/Graphics.html&#34;&gt;Graphics&lt;/a&gt; device and the &lt;a href=&#34;http://java.sun.com/j2se/1.4.2/docs/api/java/awt/print/PageFormat.html&#34;&gt;PageFormat&lt;/a&gt;. Here is my &lt;a href=&#34;http://www.timvw.be/wp-content/code/java/LinesPrinter.java.txt&#34;&gt;LinesPrinter&lt;/a&gt;. Here is an example of how you can use the class&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-java&#34; data-lang=&#34;java&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ArrayList&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;&lt;/span&gt;string&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;lines&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;ArrayList&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;&lt;/span&gt;string&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;StringBuffer&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;buf&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;StringBuffer&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;De RegaPan\t&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;buf&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;append&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;DateFormat&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;getDateTimeInstance&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;().&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;format&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;Date&lt;span style=&#34;color:#1f2328&#34;&gt;()));&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;lines&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;add&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;buf&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;toString&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;());&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;lines&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;add&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;DecimalFormat&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;df&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;DecimalFormat&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;##.00&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;Enumeration&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;e&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;billModel&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;elements&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;while&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;e&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;hasMoreElements&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;())&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#x9;&lt;/span&gt;Order&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;o&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;Order&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;e&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;nextElement&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#x9;&lt;/span&gt;MenuItem&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;mi&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;o&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;getMenuItem&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#x9;&lt;/span&gt;buf&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;StringBuffer&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;mi&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;getName&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;());&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#x9;&lt;/span&gt;buf&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;append&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;\t&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#x9;&lt;/span&gt;buf&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;append&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;df&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;format&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;mi&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;getPriceIncVat&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;()));&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#x9;&lt;/span&gt;lines&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;add&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;buf&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;toString&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;());&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;lines&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;add&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;\t-------&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;lines&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;add&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;\t&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;df&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;format&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;getTotal&lt;span style=&#34;color:#1f2328&#34;&gt;()));&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;LinesPrinter&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;print&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;((&lt;/span&gt;String&lt;span style=&#34;color:#0550ae&#34;&gt;[]&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;lines&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;toArray&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;String&lt;span style=&#34;color:#0550ae&#34;&gt;[&lt;/span&gt;0&lt;span style=&#34;color:#0550ae&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;));&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Building a chain of responsibility with delegates</title>
      <link>https://timvw.be/2006/05/30/building-a-chain-of-responsibility-with-delegates/</link>
      <pubDate>Tue, 30 May 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/05/30/building-a-chain-of-responsibility-with-delegates/</guid>
      <description>&lt;p&gt;Imagine that you have to write a function that verifies if there is a license available for a given clientID. Suppose that there are a couple of possibilities to find an available license. Your code would probably look like the following&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;// This code verifies if the client with the given clientID is licensed&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;// returns the licenseID or 0 if no license is available&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; Int32 IsLicensed&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;Int32 clientID&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; result &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#57606a&#34;&gt;// verify if there is already a license &amp;#39;assigned&amp;#39; to the client&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;result &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; IsAssigned&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;clientID&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;result &lt;span style=&#34;color:#1f2328&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#57606a&#34;&gt;// find a dedicated license (license that is bound to the given client)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;result &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; IsDedicated&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;clientID&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;result &lt;span style=&#34;color:#1f2328&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#57606a&#34;&gt;// find a nondedicated license (license that can be used by any client)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;result &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; IsNonDedicated&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;clientID&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; result&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;It&amp;rsquo;s obvious that this structures becomes more complex as the number of possible ways to get a license grows. If you look a while at the structure you&amp;rsquo;ll notice a pattern: each function (IsAssigned, IsDedicated, IsNonDedicted) verifies if there is a license availble. If the function didn&amp;rsquo;t find a license the next function is performed. If you translate this to OO you would end up with something similar to the following&lt;/p&gt;</description>
    </item>
    <item>
      <title>Running .NET applications on Debian GNU/Linux with Mono</title>
      <link>https://timvw.be/2006/04/25/running-.net-applications-on-debian-gnu/linux-with-mono/</link>
      <pubDate>Tue, 25 Apr 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/04/25/running-.net-applications-on-debian-gnu/linux-with-mono/</guid>
      <description>&lt;p&gt;Today i noticed &lt;a href=&#34;http://www.linux.com/article.pl?sid=06/04/12/1921225&#34;&gt;Running .Net applications on Linux with Mono&lt;/a&gt; and the author wrote the following:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;I found that on Debian at this stage I got an error: The assembly mscorlib.dll was not found or could not be loaded. It should have been installed in the &amp;lsquo;/usr/lib/mono/2.0/mscorlib.dll&amp;rsquo; directory. I cured that by executing:&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;$ cd /usr/lib/mono&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;$ sudo ln -s 1.0 2.0&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;There is only one error, and it&amp;rsquo;s in the &lt;a href=&#34;en.wikipedia.org/wiki/PEBKAC&#34;&gt;PEBKAC&lt;/a&gt; category. I can understand that the author couldn&amp;rsquo;t find the TargetFrameworkVersion tag in his project file and generated 2.0 code. What i don&amp;rsquo;t understand is that he didn&amp;rsquo;t notice the &lt;a href=&#34;http://www.mono-project.com/Downloads&#34;&gt;Other Downloads&lt;/a&gt; section and that there are &lt;a href=&#34;http://www.debian.org&#34;&gt;Debian&lt;/a&gt; packages available with support for the 2.0 runtime. Ok, apt-get might complain about the packages and you would have to add a key to your keyring as following before you can install the packages&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using .Net assemblies in your WIN32 application</title>
      <link>https://timvw.be/2006/04/22/using-.net-assemblies-in-your-win32-application/</link>
      <pubDate>Sat, 22 Apr 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/04/22/using-.net-assemblies-in-your-win32-application/</guid>
      <description>&lt;p&gt;Imagine that you&amp;rsquo;ve got an extensive codebase using WIN32/MFC and don&amp;rsquo;t want to give that up but on the other hand you&amp;rsquo;d like to take advantage of DOTNET classes then here&amp;rsquo;s a simple solution: First we write an Interface and an Implementation with C# as following&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;interface&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;IQuoteClient&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;String getQuote&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Boolean setQuote&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;String quote&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;QuoteClient&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt; IQuoteClient &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#57606a&#34;&gt;// COM requires a parameterless constructor&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; QuoteClient&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; getQuote&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; String&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Format&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;quote&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;bool&lt;/span&gt; setQuote&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;string&lt;/span&gt; quote&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Go the project Properties and check the &amp;ldquo;Make assembly COM-Visible&amp;rdquo; box which you find in the Application tab, Assembly Information. Then you go to the Build tab and check &amp;ldquo;Register for COM interop&amp;rdquo; box and at the Signing tab you check the &amp;ldquo;Sign the assembly&amp;rdquo; box and assign a key. Build the project.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Simple serialization and deserialization of public class members</title>
      <link>https://timvw.be/2006/04/21/simple-serialization-and-deserialization-of-public-class-members/</link>
      <pubDate>Fri, 21 Apr 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/04/21/simple-serialization-and-deserialization-of-public-class-members/</guid>
      <description>&lt;p&gt;Here is a simple generic class that allows you to serialize classes (well, their public members) into XML and deserialize the XML to objects again. Make sure the class (or struct) has a parameterless constructor and that all the members that you want to serialize are public. Here is the code&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;SimpleSerializer&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;lt;&lt;/span&gt;t&lt;span style=&#34;color:#1f2328&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; String Serialize&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;T o&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;using&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;MemoryStream m &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; MemoryStream&lt;span style=&#34;color:#1f2328&#34;&gt;())&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;XmlSerializer s &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; XmlSerializer&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;o&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetType&lt;span style=&#34;color:#1f2328&#34;&gt;());&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;s&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Serialize&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;m&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; o&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; Encoding&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;UTF8&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetString&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;m&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;ToArray&lt;span style=&#34;color:#1f2328&#34;&gt;());&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; T Deserialize&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;String xml&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;using&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;MemoryStream m &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; MemoryStream&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;Encoding&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;UTF8&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;GetBytes&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;xml&lt;span style=&#34;color:#1f2328&#34;&gt;)))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;XmlSerializer s &lt;span style=&#34;color:#1f2328&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; XmlSerializer&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;typeof&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;));&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;T&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;s&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Deserialize&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;m&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Here is a simple example of a class that will be serialized&lt;/p&gt;</description>
    </item>
    <item>
      <title>Building apache-win32 with Visual Studio 2005</title>
      <link>https://timvw.be/2006/04/15/building-apache-win32-with-visual-studio-2005/</link>
      <pubDate>Sat, 15 Apr 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/04/15/building-apache-win32-with-visual-studio-2005/</guid>
      <description>&lt;p&gt;Today i decided to build apache-win32. Here&amp;rsquo;s how i did it:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Download Apache &lt;a href=&#34;http://apache.be.proserve.nl/httpd/httpd-2.2.0-win32-src-rev2.zip&#34;&gt;httpd-2.2.0-win32-src-rev2.zip&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Unzip and read README.TXT, INSTALL.TXT and docs/manual/platform/win_compiling.html.en&lt;/li&gt;&#xA;&lt;li&gt;Save &lt;a href=&#34;http://cm.bell-labs.com/cm/cs/who/bwk/awk95.exe&#34;&gt;awk95.exe&lt;/a&gt; as awk.exe in a directory that&amp;rsquo;s in your %PATH%.&lt;/li&gt;&#xA;&lt;li&gt;Open Apache.dsw with VS2005 and choose &amp;ldquo;Yes To All&amp;rdquo; to convert the project.&lt;/li&gt;&#xA;&lt;li&gt;Uncheck abs, mod_deflate and mod_ssl in the the configuration form via Build -&amp;gt; Configuration Manager.&lt;/li&gt;&#xA;&lt;li&gt;Choose InstallBin, click right and Set as StartUp Project.&lt;/li&gt;&#xA;&lt;li&gt;Open InstallBin/Makefile.win and remove the lines 129, 130, 131, 133, 134, 135 and 136.&lt;/li&gt;&#xA;&lt;li&gt;Start debugging (F5). Stop debugging and end the httpd.exe process via your Task Manager.&lt;/li&gt;&#xA;&lt;li&gt;Download and extract &lt;a href=&#34;http://www.zlib.net/zlib-1.2.3.tar.bz2&#34;&gt;zlib-1.2.3.tar.bz2&lt;/a&gt; into srclib/zlib.&lt;/li&gt;&#xA;&lt;li&gt;Prepend &amp;ldquo;dword ptr&amp;rdquo; to the second argument of the movd instructions on lines647, 649, 663 and 720 in srclib/zlib/contrib/masmx86/inffas32.asm&lt;/li&gt;&#xA;&lt;li&gt;Open srclib/zlib/projects/visualc6/zlib.dsp, choose the zlib project in the solution explorer. Choose &amp;ldquo;LIB ASM Release&amp;rdquo; in the configuration explorer and build zlib.&lt;/li&gt;&#xA;&lt;li&gt;Copy srclib/zlib/projects/visualc6/Win32_LIB_ASM_Release/zlib.lib to srclib/zlib.&lt;/li&gt;&#xA;&lt;li&gt;Check the mod_deflate in the configuration form via Build -&amp;gt; Configuration Manager.&lt;/li&gt;&#xA;&lt;li&gt;Choose the mod_deflate project in the solution explorer and build it.&lt;/li&gt;&#xA;&lt;li&gt;The original &lt;a href=&#34;http://www.openssl.org/source/openssl-0.9.8a.tar.gz&#34;&gt;openssl-0.9.8a.tar.gz&lt;/a&gt; doesn&amp;rsquo;t compile with Visual Studio 2005 but someone has already made a &lt;a href=&#34;http://bbdev.fluffy.co.uk/svn/box/chris/win32/support/openssl-0.9.8a-win32fix.patch&#34;&gt;patch&lt;/a&gt;. Download &lt;a href=&#34;http://bbdev.fluffy.co.uk/svn/box/chris/win32/support/openssl-0.9.8a-vc2005.zip&#34;&gt;openssl-0.9.8a-vc2005.zip&lt;/a&gt; and extract it into srclib/openssl.&lt;/li&gt;&#xA;&lt;li&gt;Open a Visual Studio 2005 Command Prompt and cd to the openssl directory and run: &amp;ldquo;perl Configure VC-WIN32&amp;rdquo; (don&amp;rsquo;t close this prompt yet).&lt;/li&gt;&#xA;&lt;li&gt;Insert before line 61 in srclib/openssl/ms/do_masm.bat the following line: &amp;ldquo;perl util\mk1mf.pl debug dll VC-WIN32 &amp;gt; ms\ntdll-dbg.mak&amp;rdquo;. Now run: &amp;ldquo;ms\do_masm&amp;rdquo; and &amp;ldquo;nmake -f ms\ntdll-dbg.mak&amp;rdquo;.&lt;/li&gt;&#xA;&lt;li&gt;Check the abs and mod_ssl project in the configuration from via Build -&amp;gt; Configuration Manager.&lt;/li&gt;&#xA;&lt;li&gt;Build the two projects.&lt;/li&gt;&#xA;&lt;li&gt;Done!&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Select best 3 laptimes for each player</title>
      <link>https://timvw.be/2006/04/14/select-best-3-laptimes-for-each-player/</link>
      <pubDate>Fri, 14 Apr 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/04/14/select-best-3-laptimes-for-each-player/</guid>
      <description>&lt;p&gt;Imagine that you have a schema where you store all the times a player needed to complete a parcours. A possible schema could be (&lt;a href=&#34;http://www.postgresql.org&#34;&gt;postgresql&lt;/a&gt;)&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;CREATE&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;TABLE&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;laptimes&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;lap_id&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;SERIAL&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;NOT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;NULL&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;player_id&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;INT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;NOT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;NULL&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;laptime&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;INT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;NOT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;NULL&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;PRIMARY&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;KEY&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;lap_id&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;INSERT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;INTO&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;laptimes&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;player_id&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;laptime&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;VALUES&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;250&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;INSERT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;INTO&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;laptimes&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;player_id&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;laptime&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;VALUES&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;450&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;INSERT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;INTO&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;laptimes&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;player_id&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;laptime&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;VALUES&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;350&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;INSERT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;INTO&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;laptimes&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;player_id&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;laptime&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;VALUES&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;300&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;INSERT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;INTO&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;laptimes&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;player_id&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;laptime&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;VALUES&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;327&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;INSERT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;INTO&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;laptimes&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;player_id&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;laptime&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;VALUES&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;327&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;INSERT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;INTO&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;laptimes&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;player_id&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;laptime&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;VALUES&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;249&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;INSERT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;INTO&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;laptimes&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;player_id&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;laptime&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;VALUES&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;123&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;INSERT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;INTO&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;laptimes&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;player_id&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;laptime&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;VALUES&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;489&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;INSERT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;INTO&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;laptimes&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;player_id&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;laptime&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;VALUES&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;158&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;INSERT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;INTO&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;laptimes&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;player_id&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;laptime&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;VALUES&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;3&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;158&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;INSERT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;INTO&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;laptimes&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;player_id&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;laptime&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;VALUES&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;3&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;120&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;INSERT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;INTO&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;laptimes&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;player_id&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;laptime&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;VALUES&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;3&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;190&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;INSERT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;INTO&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;laptimes&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;player_id&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;laptime&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;VALUES&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;4&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;600&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now imagine that you want to display the best 3 results for each player. Here&amp;rsquo;s how&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using a function with parameters as parameter</title>
      <link>https://timvw.be/2006/04/04/using-a-function-with-parameters-as-parameter/</link>
      <pubDate>Tue, 04 Apr 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/04/04/using-a-function-with-parameters-as-parameter/</guid>
      <description>&lt;p&gt;Imagine that you have a function that expects a reference to a function. Here is an example of such a function&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;function&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;bar&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;fn&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;fn&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now imagine that the function that you want to pass to bar accepts a parameter. Here is an example of such a function&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;function&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;foo&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;arg&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;alert&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;arg&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;With the help of a closure this is no problem&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;bar&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;function&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;e&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;foo&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;hello&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;});&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;PS: &lt;a href=&#34;http://forums.devnetwork.net/viewtopic.php?t=46561&#34;&gt;Kudos&lt;/a&gt; go to &lt;a href=&#34;http://forums.devnetwork.net/profile.php?mode=viewprofile&amp;amp;u=7815&#34;&gt;Weirdan&lt;/a&gt; for providing the solution to this problem.&lt;/p&gt;</description>
    </item>
    <item>
      <title>JSpace</title>
      <link>https://timvw.be/2006/04/03/jspace/</link>
      <pubDate>Mon, 03 Apr 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/04/03/jspace/</guid>
      <description>&lt;p&gt;I wrote a simple shoot-em-up game: &lt;a href=&#34;http://www.timvw.be/wp-content/code/java/JSpace.zip&#34;&gt;JSpace.zip&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Allow a form to be posted only once</title>
      <link>https://timvw.be/2006/04/02/allow-a-form-to-be-posted-only-once/</link>
      <pubDate>Sun, 02 Apr 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/04/02/allow-a-form-to-be-posted-only-once/</guid>
      <description>&lt;p&gt;People can fill in a form and submit it. Then they can hit their back button, and choose to submit it again. Usually the second time this form is being posted, the values in that form aren&amp;rsquo;t valid anymore and thus corrupt the database.&lt;/p&gt;&#xA;&lt;p&gt;Most developpers i know try to work around this problem by using the header function or the html meta tags to set the expiration date. However, this solution does not only limit the usability of a site, it simply does not work for visitors that have a browser that ignores the expiration date.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using cmd.exe</title>
      <link>https://timvw.be/2006/04/01/using-cmd.exe/</link>
      <pubDate>Sat, 01 Apr 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/04/01/using-cmd.exe/</guid>
      <description>&lt;p&gt;Earlier someone asked me how he could use &lt;a href=&#34;http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/cmd.mspx?mfr=true&#34;&gt;windows cmd.exe&lt;/a&gt; with PHP. People run into trouble as soon as there are quotes needed because there are special characters (&amp;gt;/&amp;amp;()[]{}^=;!&amp;rsquo;+,`~ and &lt;space&gt;) in the command. I do it like this&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;?&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;php&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$result&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;`&amp;#34;&amp;#34;c:\\my path\\prog.exe&amp;#34; &amp;#34;filename&amp;#34;&amp;#34;`&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;?&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In case you have to do it often you might want to wrap it into a little function like this&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;?&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;php&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;function&lt;/span&gt; &lt;span style=&#34;color:#6639ba&#34;&gt;cmd&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$command&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$arguments&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;null&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#953800&#34;&gt;$commandline&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#cf222e&#34;&gt;foreach&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;func_get_args&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;as&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$word&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#953800&#34;&gt;$commandline&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;.=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;&amp;#34;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;.&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$word&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;.&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;&amp;#34; &amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#953800&#34;&gt;$commandline&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;rtrim&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$commandline&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39; &amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#953800&#34;&gt;$commandline&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;&amp;#34;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;.&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$commandline&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;.&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;&amp;#34;&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;`$commandline`&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;// run blah.exe&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;cmd&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;blah.exe&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;// run c:\my path\blah.exe with the arguments &amp;#34;foo&amp;#34; and &amp;#34;bar bar&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;cmd&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;c:\\my path\\blah.exe&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;foo&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;bar bar&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;?&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Silly bug in Visual Studio 2005 editor</title>
      <link>https://timvw.be/2006/03/29/silly-bug-in-visual-studio-2005-editor/</link>
      <pubDate>Wed, 29 Mar 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/03/29/silly-bug-in-visual-studio-2005-editor/</guid>
      <description>&lt;p&gt;If you try to compile the code below you will see that the i in the second loop is not defined in my main function. Position your mouse over the i, click right and choose &amp;ldquo;Go To Definition&amp;rdquo; in the context menu. Why does the cursor move to the i in the struct? Btw, if you remove the first for loop this doesn&amp;rsquo;t happen.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#57606a&#34;&gt;&amp;#34;stdafx.h&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;struct&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; i&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; BLAH&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#6639ba&#34;&gt;_tmain&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; argc&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; _TCHAR&lt;span style=&#34;color:#0550ae&#34;&gt;*&lt;/span&gt; argv&lt;span style=&#34;color:#1f2328&#34;&gt;[])&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; i &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; i &lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;++&lt;/span&gt;i&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;i &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; i &lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;++&lt;/span&gt;i&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>More about marshalling</title>
      <link>https://timvw.be/2006/03/28/more-about-marshalling/</link>
      <pubDate>Tue, 28 Mar 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/03/28/more-about-marshalling/</guid>
      <description>&lt;p&gt;Last month i&amp;rsquo;ve started programming with the &lt;a href=&#34;http://msdn.microsoft.com/netframework/&#34;&gt;.NET Framework&lt;/a&gt; using Visual Basic, C++.NET and C# on a daily basis. The first thing i noticed is that some useful functions that were available in kernel32.dll, user32.dll, etc. have been removed from the &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/ms306608.aspx&#34;&gt;API&lt;/a&gt;. At &lt;a href=&#34;http://www.pinvoke.net&#34;&gt;pinvoke.net&lt;/a&gt; you find a summary of the functions in these &lt;a href=&#34;http://en.wikipedia.org/wiki/Dynamic-link_library&#34;&gt;DLL&lt;/a&gt;s and the PInvoke signatures.The most common approach is to build classes for the DLLs as following&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;namespace&lt;/span&gt; &lt;span style=&#34;color:#24292e&#34;&gt;InterOp&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;User32&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;&#x9;&#x9;[DllImport(&amp;#34;user32.dll&amp;#34;)]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;extern&lt;/span&gt; IntPtr GetDesktopWindow&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;&#x9;&#x9;[DllImport(&amp;#34;user32.dll&amp;#34;)]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;extern&lt;/span&gt; IntPtr GetWindowDC&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;IntPtr hWnd&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;&#x9;&#x9;[DllImport(&amp;#34;user32.dll&amp;#34;)]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;extern&lt;/span&gt; IntPtr ReleaseDC&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;IntPtr hWnd&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; IntPtr hDC&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;&#x9;&#x9;[DllImport(&amp;#34;user32.dll&amp;#34;)]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;extern&lt;/span&gt; IntPtr GetWindowRect&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;IntPtr hWnd&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; RECT rect&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;GDI32&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;&#x9;&#x9;[DllImport(&amp;#34;gdi32.dll&amp;#34;)]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;extern&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;bool&lt;/span&gt; DeleteDC&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;IntPtr hDC&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;&#x9;&#x9;[DllImport(&amp;#34;gdi32.dll&amp;#34;)]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;extern&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;bool&lt;/span&gt; DeleteObject&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;IntPtr hObject&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;&#x9;&#x9;[DllImport(&amp;#34;gdi32.dll&amp;#34;)]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;extern&lt;/span&gt; IntPtr SelectObject&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;IntPtr hDC&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; IntPtr hObject&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Adding support for localization to a WordPress plugin</title>
      <link>https://timvw.be/2006/03/19/adding-support-for-localization-to-a-wordpress-plugin/</link>
      <pubDate>Sun, 19 Mar 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/03/19/adding-support-for-localization-to-a-wordpress-plugin/</guid>
      <description>&lt;p&gt;WordPress uses &lt;a href=&#34;http://www.gnu.org/software/gettext/&#34;&gt;GNU gettext&lt;/a&gt;, as explained in &lt;a href=&#34;http://codex.wordpress.org/Localizing_WordPress&#34;&gt;Translating WordPress&lt;/a&gt; and &lt;a href=&#34;http://codex.wordpress.org/Writing_a_Plugin&#34;&gt;Writing a Plugin&lt;/a&gt;, for &lt;a href=&#34;http://en.wikipedia.org/wiki/Software_localization&#34;&gt;localization&lt;/a&gt;. I decided that my plugins should support l10n too. Here is how i realised it:&lt;/p&gt;&#xA;&lt;p&gt;I started with defining the WPLANG constant in my wp-config.php:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;define&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;WPLANG&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;en_EN&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Then i changed the beginning of my localized plugin as following:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;?&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;php&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;/*&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;Plugin Name: WP-SpamFilter&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;Version: 0.4&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;Plugin URI: http://timvw.madoka.be/?p=533&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;Description: Mark the new comment as spam if the sender is in the spammers list.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;Author URI: http://timvw.be&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;*/&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;// If this function does not exist it means that the file is accessed directly.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;// Accessing this file directly is not allowed.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;!&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;function_exists&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;load_plugin_textdomain&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;))&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;exit&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;load_plugin_textdomain&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;wp_spamfilter&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;wp-content/plugins/wp-spamfilter&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In wp-includes/wp-l10n.php you see that the result of this call is that the locale and the path are used to determine the mo-file to be loaded. Because this function uses ABSPATH it&amp;rsquo;s impossible to use dirname(&lt;strong&gt;FILE&lt;/strong&gt;) as path parameter&lt;/p&gt;</description>
    </item>
    <item>
      <title>Internationalizing strings with variables</title>
      <link>https://timvw.be/2006/03/19/internationalizing-strings-with-variables/</link>
      <pubDate>Sun, 19 Mar 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/03/19/internationalizing-strings-with-variables/</guid>
      <description>&lt;p&gt;Yesterday i wrote that you can use __($string, $domain) and _e($string, $domain) to internationalize a string with &lt;a href=&#34;http://www.wordpress.org&#34;&gt;WordPress&lt;/a&gt;. I forgot to mention that if you use &lt;a href=&#34;http://www.php.net/sprintf&#34;&gt;sprintf&lt;/a&gt; you can handle strings with variables too. An example:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;echo&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;sprintf&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;__&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;There are %d monkeys in the %s&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;),&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$domain&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;),&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$number&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$location&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Plugin template for WordPress</title>
      <link>https://timvw.be/2006/03/19/plugin-template-for-wordpress/</link>
      <pubDate>Sun, 19 Mar 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/03/19/plugin-template-for-wordpress/</guid>
      <description>&lt;p&gt;Today i&amp;rsquo;ve been cleaning up my code. All my plugins live in a directory %plugin_name% under the wp-content/plugins directory. Here is the code for %plugin_name%/%plugin_name%.php&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;?&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;php&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;/*&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;Plugin Name: %plugin_name%&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;Version: %plugin_version%&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;Plugin URI: %plugin_uri%&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;Description: %plugin_description%&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;Author URI: %plugin_author_uri%&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;*/&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;// Direct access is not allowed.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;!&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;function\_exists&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;load_plugin_textdomain&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;))&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;exit&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;else&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;require&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;%plugin_name%.php&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$plugin_name&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;substr&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;basename&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;__FILE__&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;),&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;4&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;// You can add optional parameters to the constructor, eg: the wpdb instance.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;$&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;%&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;plugin_class&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;%&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;plugin_class&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;%&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$plugin_name&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;?&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now it&amp;rsquo;s time to implement the %plugin_class%. Here is the template for %plugin_name%/%plugin_class%.php:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Adding an action when your plugin is activated</title>
      <link>https://timvw.be/2006/03/15/adding-an-action-when-your-plugin-is-activated/</link>
      <pubDate>Wed, 15 Mar 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/03/15/adding-an-action-when-your-plugin-is-activated/</guid>
      <description>&lt;p&gt;The WordPress documentation says that you have to call add_action(&amp;lsquo;activate_pluginurl&amp;rsquo;, &amp;lsquo;somefunction&amp;rsquo;) to trigger somefunction when your plugin is activated. Unfortunately i couldn&amp;rsquo;t find with what pluginurl should be replaced. After a bit of experimenting i&amp;rsquo;ve found that in wp-admin/plugins.php the following is called when a plugin is activated:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;do_action&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;activate_&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;.&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;trim&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$_GET&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;plugin&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;));&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;So it appears that you simply have to use the path of your plugin relative to /wp-content/plugins. Eg: you have a plugin in /wp-content/plugins/wp-spamfilter/wp-spamfilter.php then you have to call add_action as following:&lt;/p&gt;</description>
    </item>
    <item>
      <title>More marshalling...</title>
      <link>https://timvw.be/2006/03/01/more-marshalling.../</link>
      <pubDate>Wed, 01 Mar 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/03/01/more-marshalling.../</guid>
      <description>&lt;p&gt;This snippet uses &lt;a href=&#34;http://windowssdk.msdn.microsoft.com/library/default.asp?url=./library/en-us/sysinfo/base/getprivateprofilestring.asp&#34;&gt;GetPrivateProfileString&lt;/a&gt; that is available in kernel32.dll. Apparently microsoft has decided to remove this useful function from the dotnet api.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;DllImport&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;kernel32&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; SetLastError&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;extern&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; GetPrivateProfileString&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;String &lt;span style=&#34;color:#0550ae&#34;&gt;^&lt;/span&gt;pSection&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;String &lt;span style=&#34;color:#0550ae&#34;&gt;^&lt;/span&gt;pKey&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;String &lt;span style=&#34;color:#0550ae&#34;&gt;^&lt;/span&gt;pDefault&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;StringBuilder &lt;span style=&#34;color:#0550ae&#34;&gt;^&lt;/span&gt;pValue&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; pBufferLen&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;String &lt;span style=&#34;color:#0550ae&#34;&gt;^&lt;/span&gt;pFile&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;StringBuilder &lt;span style=&#34;color:#0550ae&#34;&gt;^&lt;/span&gt;buf &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; gcnew StringBuilder&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;256&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;GetPrivateProfileString&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;logsection&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;file&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;default&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;buf&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;buf&lt;span style=&#34;color:#0550ae&#34;&gt;-&amp;gt;&lt;/span&gt;Capacity&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;example.ini&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;std&lt;span style=&#34;color:#0550ae&#34;&gt;::&lt;/span&gt;string &lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;\&lt;/span&gt;_log&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;\&lt;/span&gt;_file &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; string&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;char&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; Marshal&lt;span style=&#34;color:#0550ae&#34;&gt;::&lt;/span&gt;StringToHGlobalAnsi&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;logf&lt;span style=&#34;color:#1f2328&#34;&gt;).&lt;/span&gt;ToPointer&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Reading unmanaged structs with .NET</title>
      <link>https://timvw.be/2006/02/27/reading-unmanaged-structs-with-.net/</link>
      <pubDate>Mon, 27 Feb 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/02/27/reading-unmanaged-structs-with-.net/</guid>
      <description>&lt;p&gt;Last week i&amp;rsquo;ve spend a lot of time studying &lt;a href=&#34;http://msdn.microsoft.com/library/default.asp?url=./library/en-us/cpref/html/frlrfSystemRuntimeInteropServices.asp&#34;&gt;System::Runtime::InteropServices&lt;/a&gt;. It took me a while to figure out how i could read unmanaged structs with .NET &lt;a href=&#34;http://msdn.microsoft.com/library/default.asp?url=./library/en-us/cpref/html/frlrfsystemio.asp&#34;&gt;System::IO&lt;/a&gt;. Here is a bit of sample code (Should be obvious enough to write a template or generic class for all sorts of structs, just like i did at the office)&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;typedef&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;struct&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;char&lt;/span&gt; name&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;9&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;];&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; name&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;double&lt;/span&gt; sterr&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; TEST&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;FileStream &lt;span style=&#34;color:#0550ae&#34;&gt;^&lt;/span&gt;f &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; gcnew FileStream&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;C:&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;\\&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;TEST.DAT&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; FileMode&lt;span style=&#34;color:#0550ae&#34;&gt;::&lt;/span&gt;Open&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; FileAccess&lt;span style=&#34;color:#0550ae&#34;&gt;::&lt;/span&gt;ReadWrite&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;BinaryReader &lt;span style=&#34;color:#0550ae&#34;&gt;^&lt;/span&gt;r &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; gcnew BinaryReader&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;f&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;array&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;&lt;/span&gt;byte&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;^&lt;/span&gt;buf &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; r&lt;span style=&#34;color:#0550ae&#34;&gt;-&amp;gt;&lt;/span&gt;ReadBytes&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;sizeof&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;TEST&lt;span style=&#34;color:#1f2328&#34;&gt;));&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;TEST test&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Marshal&lt;span style=&#34;color:#0550ae&#34;&gt;::&lt;/span&gt;Copy&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;buf&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;IntPtr&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;&amp;amp;&lt;/span&gt;test&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;sizeof&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;TEST&lt;span style=&#34;color:#1f2328&#34;&gt;));&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Access a control by name</title>
      <link>https://timvw.be/2006/02/25/access-a-control-by-name/</link>
      <pubDate>Sat, 25 Feb 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/02/25/access-a-control-by-name/</guid>
      <description>&lt;p&gt;I know a mathematician that can do magic with stats. That&amp;rsquo;s also the reason why he works at &lt;a href=&#34;http://epp.eurostat.cec.eu.int/portal/page?_pageid=1090,30070682,1090_33076576&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&#34;&gt;Eurostat&lt;/a&gt;. He&amp;rsquo;s automating a lot of his work by programming in &lt;a href=&#34;http://msdn.microsoft.com/isv/technology/vba/default.aspx&#34;&gt;Visual Basic for Applications&lt;/a&gt;. He asked me if i wanted to look at his code because he had the feeling there was a smell. Here are a couple lines&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-vb&#34; data-lang=&#34;vb&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;With&lt;/span&gt; SomeForm&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;txtJanvier60&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Value &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; vaData1&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;1&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; 2&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;txtFevrier60&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Value &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; vaData1&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;1&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; 3&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;txtJanvier61&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Value &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; vaData1&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;1&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; 2&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;txtFevrier61&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Value &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; vaData1&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;1&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; 3&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;...&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;txtJanvier70&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Value &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; vaData1&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;1&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; 2&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;txtFevrier70&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Value &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; vaData1&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;1&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; 3&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;With&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;It took me 5 minutes to search the web and change his code as following:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Removing selected items from a ListBox</title>
      <link>https://timvw.be/2006/02/16/removing-selected-items-from-a-listbox/</link>
      <pubDate>Thu, 16 Feb 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/02/16/removing-selected-items-from-a-listbox/</guid>
      <description>&lt;p&gt;Today i was experimenting with a couple of windows controls. For some reason i wasn&amp;rsquo;t able to remove the selected items from a &lt;a href=&#34;http://msdn.microsoft.com/library/default.asp?url=./library/en-us/cpref/html/frlrfsystemwindowsformslistboxmemberstopic.asp&#34;&gt;ListBox&lt;/a&gt;. Here is the code that didn&amp;rsquo;t work&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-vbnet&#34; data-lang=&#34;vbnet&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;For&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;Each&lt;/span&gt; index &lt;span style=&#34;color:#0550ae&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;Integer&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; ListBox1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;SelectedIndices&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;ListBox2&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Items&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;ListBox1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Items&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;index&lt;span style=&#34;color:#1f2328&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;ListBox1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Items&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Remove&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;index&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;For&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The problem is that when you remove an item from the collection the indices change. Here is a possible solution&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-vbnet&#34; data-lang=&#34;vbnet&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;Dim&lt;/span&gt; index &lt;span style=&#34;color:#0550ae&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;Integer&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; ListBox1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;SelectedIndex&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;While&lt;/span&gt; index &lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;-&lt;/span&gt;1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;ListBox2&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Items&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Add&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;ListBox1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Items&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;index&lt;span style=&#34;color:#1f2328&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;ListBox1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Items&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;Remove&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;index&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;index &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; ListBox1&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;SelectedIndex&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;While&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Pagination for all</title>
      <link>https://timvw.be/2006/02/12/pagination-for-all/</link>
      <pubDate>Sun, 12 Feb 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/02/12/pagination-for-all/</guid>
      <description>&lt;p&gt;Suppose you have a a large collection of items and you want to display them. Users don&amp;rsquo;t want to see 5000 items at once. They only want to see a couple of items and have the possibility to look at the next (or previous) couple of items. The solution for this problem is usually named pagination. You can compare this technique with &lt;a href=&#34;http://en.wikipedia.org/paging&#34;&gt;paging&lt;/a&gt;. Most people seem to come up with their own (My)SQL specific implementation. Here are a couple of examples how you can use &lt;a href=&#34;http://www.timvw.be/wp-content/code/php/pagination.txt&#34;&gt;mine&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Preparing for my internship</title>
      <link>https://timvw.be/2006/02/11/preparing-for-my-internship/</link>
      <pubDate>Sat, 11 Feb 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/02/11/preparing-for-my-internship/</guid>
      <description>&lt;p&gt;Only two more days before my internship starts. I&amp;rsquo;m a bit nervous and excited to dive into this adventure. Today i decided to fresh my knowledge of (MS)-C++ a bit up. I&amp;rsquo;ve read a tutorial on &lt;a href=&#34;http://www.newty.de/fpt/index.html&#34;&gt;function pointers&lt;/a&gt; and &lt;a href=&#34;http://msdn.microsoft.com/library/default.asp?url=./library/en-us/vccore98/html/_core_argument_passing_and_naming_conventions.asp&#34;&gt;naming conventions&lt;/a&gt;. A couple of weeks ago i already had a look at &lt;a href=&#34;http://linuxquality.sunsite.dk/articles/memberpointers/&#34;&gt;pointers to member functions&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#57606a&#34;&gt;&amp;lt;iostream&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;using&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;namespace&lt;/span&gt; std&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; &lt;span style=&#34;color:#6639ba&#34;&gt;customcallback&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;cout &lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;running custom callback&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; endl&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;typedef&lt;/span&gt; &lt;span style=&#34;color:#6639ba&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;\&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;*&lt;/span&gt;method&lt;span style=&#34;color:#1f2328&#34;&gt;)(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#6639ba&#34;&gt;sum&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; a&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; b&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; a &lt;span style=&#34;color:#0550ae&#34;&gt;+&lt;/span&gt; b&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;method &lt;span style=&#34;color:#6639ba&#34;&gt;dosum&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;&amp;amp;&lt;/span&gt;sum&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#6639ba&#34;&gt;main&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;\&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;*&lt;/span&gt;plugin&lt;span style=&#34;color:#1f2328&#34;&gt;)()&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#6639ba&#34;&gt;NULL&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;plugin &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;&amp;amp;&lt;/span&gt;customcallback&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;plugin&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;method mymethod &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; dosum&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;cout &lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; mymethod&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;4&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; endl&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>GNU screen</title>
      <link>https://timvw.be/2006/02/06/gnu-screen/</link>
      <pubDate>Mon, 06 Feb 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/02/06/gnu-screen/</guid>
      <description>&lt;p&gt;Another tool that belongs to my favorites is &lt;a href=&#34;http://www.gnu.org/software/screen/&#34;&gt;GNU Screen&lt;/a&gt;. A couple of years ago i had a bad internet connection and when i was working on a remote shell i was always logged out and had to start over. I really hated that 😉 Today i don&amp;rsquo;t have this problem anymore, but i like to keep &lt;a href=&#34;http://www.irssi.org&#34;&gt;Irssi&lt;/a&gt; (an &lt;a href=&#34;http://en.wikipedia.org/wiki/IRC&#34;&gt;IRC&lt;/a&gt; user-agent) running, even when i&amp;rsquo;m not logged in. &lt;a href=&#34;http://gentoo-wiki.com/TIP_Using_screen&#34;&gt;TIP Using Screen&lt;/a&gt; is an article that gives a couple of other reasons to use it and explains how it works. The default settings suck if you also use &lt;a href=&#34;http://www.gnu.org/software/emacs/&#34;&gt;GNU Emacs&lt;/a&gt;. So i had to figure out a couple of keypresses. With &amp;ldquo;cat -v&amp;rdquo; i could easily see what those keypresses were. Here is my .screenrc file&lt;/p&gt;</description>
    </item>
    <item>
      <title>GNU sort</title>
      <link>https://timvw.be/2006/02/06/gnu-sort/</link>
      <pubDate>Mon, 06 Feb 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/02/06/gnu-sort/</guid>
      <description>&lt;p&gt;I already wrote that &lt;a href=&#34;http://www.gnu.org/software/coreutils/&#34;&gt;GNU Core Utilities&lt;/a&gt; (&lt;a href=&#34;http://www.gnu.org/software/textutils/textutils.html&#34;&gt;GNU Textutils&lt;/a&gt;) have become my favorite text processing tools. Today i wanted to sort a couple of lines using the last three numbers of each line. Here is an example&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;c:/data/backup/JA-229&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;c:/data/backup/JA-221&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;c:/data/backup/JA-233&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;c:/data/backup/NE-046&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;c:/data/backup/NE-049&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;c:/data/backup/JA-217&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;c:/data/backup/JA-225&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;With the command &amp;ldquo;sort -n -t- -k2 myfile.txt&amp;rdquo; i quickly got what i needed.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Multiple joins explained</title>
      <link>https://timvw.be/2006/02/03/multiple-joins-explained/</link>
      <pubDate>Fri, 03 Feb 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/02/03/multiple-joins-explained/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ll try to explain how a join on more than one table works. I&amp;rsquo;ve noticed people get confused by it. Assume we have the following tables&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;newsitems(news_id,post_id)&lt;/li&gt;&#xA;&lt;li&gt;postitems(post_id,user_id,content)&lt;/li&gt;&#xA;&lt;li&gt;users(user_id,name,password)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;We want to display for each newsitem the content and the author.&lt;/p&gt;&#xA;&lt;p&gt;Our base table would be the newsitems, and then we join using the item_id. Thus the query would be&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;SELECT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;FROM&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;newsitems&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;INNER&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;JOIN&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;ON&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;postitems&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;USING&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;post_id&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This returns a &amp;ldquo;virtual table&amp;rdquo; that has looks like this result(news_id,post_id,user_id,content).&lt;/p&gt;</description>
    </item>
    <item>
      <title>ManyToMany relationships with Java Persistence (JSR-220)</title>
      <link>https://timvw.be/2006/01/28/manytomany-relationships-with-java-persistence-jsr-220/</link>
      <pubDate>Sat, 28 Jan 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/01/28/manytomany-relationships-with-java-persistence-jsr-220/</guid>
      <description>&lt;p&gt;The scenario is as following: each table can have many reservations, and each reservation can span many tables. Here is our first trial&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-java&#34; data-lang=&#34;java&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;// Table.java&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;@ManyToMany&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &lt;/span&gt;targetEntity&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;Reservation&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;class&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;List&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;getReservations&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{..}&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;// Reservation.java  &lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;@ManyToMany&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;   &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &lt;/span&gt;targetEntity&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;Table&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;class&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;List&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;getTables&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{..}&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;We end up with linktables tables_reservations and reservations_tables. This is not what we want. It should not be possible to remove a table when there are still reservations related to that table. We change our code so that table becomes the owner of the relationship.&lt;/p&gt;</description>
    </item>
    <item>
      <title>OneToMany relationships with Java Persistence (JSR 220)</title>
      <link>https://timvw.be/2006/01/25/onetomany-relationships-with-java-persistence-jsr-220/</link>
      <pubDate>Wed, 25 Jan 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/01/25/onetomany-relationships-with-java-persistence-jsr-220/</guid>
      <description>&lt;p&gt;Let&amp;rsquo;s experiment a bit with &lt;a href=&#34;http://www.hibernate.org&#34;&gt;Hibernate&lt;/a&gt;. We want to model the tables employee and shift. Each employee has multiple shifts (and each shift belongs to an employee). We want an employee table and a shift table (which has the employee_id as a foreign key).&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-java&#34; data-lang=&#34;java&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;// Employee.java&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;@OneToMany&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;targetEntity&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;Shift&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;class&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;List&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;getShifts&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{...}&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;// Shift.java&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;@ManyToOne&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;Employee&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;getEmployee&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{...}&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The code above generates the following tables: employee, employee_shift and shift. Time to read the documentation and discover the mappedBy attribute.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Setting up an SSH tunnel</title>
      <link>https://timvw.be/2006/01/19/setting-up-an-ssh-tunnel/</link>
      <pubDate>Thu, 19 Jan 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/01/19/setting-up-an-ssh-tunnel/</guid>
      <description>&lt;p&gt;On the machine example there is a (&lt;a href=&#34;http://en.wikipedia.org/wiki/TCP/IP&#34;&gt;tcp/ip&lt;/a&gt;) program listening on port 12345. The protocol it talks is some &lt;a href=&#34;http://en.wikipedia.org/wiki/Plain_text&#34;&gt;plaintext&lt;/a&gt; language. I want to talk with it, but i do not want others to know what i am sending to it. I am lucky enough to have remote access to that machine via &lt;a href=&#34;http://en.wikipedia.org/wiki/Ssh&#34;&gt;ssh&lt;/a&gt;. I setup a tunnel with the following command&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ssh -N -L 12345:example:12345 timvw@example&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now my program can connect to localhost:12345 and ssh will make sure that it ends up at example.:12345 without others being able to see the actual data. For windows users i suggest that you take a look at &lt;a href=&#34;http://www.chiark.greenend.org.uk/~sgtatham/putty&#34;&gt;Plink&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Accept posted XML data</title>
      <link>https://timvw.be/2006/01/18/accept-posted-xml-data/</link>
      <pubDate>Wed, 18 Jan 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/01/18/accept-posted-xml-data/</guid>
      <description>&lt;p&gt;I remember that i have spent a lot of time finding something that allowed me to accept the posted XML data. The solution was very simple&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$data&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;file_get_contents&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;php://input&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Select the first 50 words of an article</title>
      <link>https://timvw.be/2006/01/18/select-the-first-50-words-of-an-article/</link>
      <pubDate>Wed, 18 Jan 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/01/18/select-the-first-50-words-of-an-article/</guid>
      <description>&lt;p&gt;I am cleaning up my code snippets and i found the following little trick in one of them that i have removed. Assuming that different words are separated by spaces we can use &lt;a href=&#34;http://dev.mysql.com/doc/refman/5.0/en/string-functions.html&#34;&gt;SUBSTRING_INDEX&lt;/a&gt; as following&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;SELECT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;SUBSTRING_INDEX&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;body&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39; &amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;50&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;AS&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;dn&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;FROM&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;mytable&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Brainteaser</title>
      <link>https://timvw.be/2006/01/14/brainteaser/</link>
      <pubDate>Sat, 14 Jan 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/01/14/brainteaser/</guid>
      <description>&lt;p&gt;Earlier today Chung Leong, an intelligent regular at &lt;a href=&#34;news://comp.lang.php&#34;&gt;comp.lang.php&lt;/a&gt;, posted a little brainteaser:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;The two functions in the example below behave differently. The difference is easy to spot, of ocurse. The challenge is correctly explaining why this is so. Why does the second function seemingly corrupt the cloned copy of an object?&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;function&lt;/span&gt; &lt;span style=&#34;color:#6639ba&#34;&gt;BritneySpear&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$obj&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$attr&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&amp;amp;&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$obj&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;attributes&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$clone&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#57606a&#34;&gt;/* clone */&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$obj&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$obj&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;attributes&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;‘Length’&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$obj&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;data&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;“”&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$clone&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$data&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;“This&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;is&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;test”&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$obj1&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;attributes&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;array&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;‘Length’&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;strlen&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$data&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;));&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$obj1&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;data&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$data&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$clone1&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Bobcat&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$obj1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;print_r&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$clone1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$obj2&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;attributes&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;array&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;‘Length’&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;strlen&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$data&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;));&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$obj2&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;data&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$data&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$clone2&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;BritneySpear&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$obj2&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;print_r&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$clone2&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;?&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;&#xA;&lt;p&gt;Result:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Format sourcecode with VIM</title>
      <link>https://timvw.be/2006/01/14/format-sourcecode-with-vim/</link>
      <pubDate>Sat, 14 Jan 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/01/14/format-sourcecode-with-vim/</guid>
      <description>&lt;p&gt;I once read an article that explained how i could make &lt;a href=&#34;http://www.vim.org&#34;&gt;Vim&lt;/a&gt; format my code but i forgot what the command was. Many websearches for &amp;ldquo;vim indent code&amp;rdquo; later i had the luminous idea to search for &amp;ldquo;vim format code&amp;rdquo; instead. The first site i visited already had the answer i had been looking for: &amp;ldquo;gg=G&amp;rdquo;. Simple as that.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How private is private really?</title>
      <link>https://timvw.be/2006/01/12/how-private-is-private-really/</link>
      <pubDate>Thu, 12 Jan 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/01/12/how-private-is-private-really/</guid>
      <description>&lt;p&gt;Today i ended up at &lt;a href=&#34;http://derickrethans.nl/private_properties_exposed.php&#34;&gt;private properties exposed&lt;/a&gt; (Apparently it is also used by &lt;a href=&#34;http://www.phpunit.de/en/index.php&#34;&gt;PHPUnit&lt;/a&gt;)&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;foo&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;private&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$bar&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;42&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$obj&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;foo&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$propname&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;\0&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;foo&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;\0&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;bar&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$a&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;array&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$obj&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;echo&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$a&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$propname&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;];&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Restore from a MySQL dumpfile</title>
      <link>https://timvw.be/2006/01/12/restore-from-a-mysql-dumpfile/</link>
      <pubDate>Thu, 12 Jan 2006 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2006/01/12/restore-from-a-mysql-dumpfile/</guid>
      <description>&lt;p&gt;If you are a longtime user of &lt;a href=&#34;http://dev.mysql.com/doc/refman/5.0/en/mysqldump.html&#34;&gt;mysqldump&lt;/a&gt; you may have experienced that restoring with mysql &amp;lt; dumpfile doesn&amp;rsquo;t always work because of referential problems. Here is a little script that takes care of it: &lt;a href=&#34;http://www.timvw.be/wp-content/code/bash/mysql-restore.txt&#34;&gt;mysql-restore.txt&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Simple HTTP proxy with Perl</title>
      <link>https://timvw.be/2005/12/20/simple-http-proxy-with-perl/</link>
      <pubDate>Tue, 20 Dec 2005 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2005/12/20/simple-http-proxy-with-perl/</guid>
      <description>&lt;p&gt;Today i had to demonstrate my version of a HTTP proxy and hand in the code. There are already various programs that do this, but here is my version: &lt;a href=&#34;http://www.timvw.be/wp-content/code/perl/httpproxy.txt&#34;&gt;httpproxy.txt&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Problem with switch from mandatory to roaming profile</title>
      <link>https://timvw.be/2005/12/17/problem-with-switch-from-mandatory-to-roaming-profile/</link>
      <pubDate>Sat, 17 Dec 2005 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2005/12/17/problem-with-switch-from-mandatory-to-roaming-profile/</guid>
      <description>&lt;p&gt;Today i was experimenting with my &lt;a href=&#34;http://en.wikipedia.org/wiki/Windows_Server_2003&#34;&gt;Windows Server 2003&lt;/a&gt; and the &lt;a href=&#34;http://en.wikipedia.org/wiki/Active_Directory&#34;&gt;Active Directory&lt;/a&gt;. I was able to setup &lt;a href=&#34;http://www.enterprisenetworkingplanet.com/netos/article.php/625291&#34;&gt;Roaming and Mandatory profiles&lt;/a&gt;. After my tests with the mandatory profile i changed it back to a regular roaming profile. I was surprised when i noticed that my changes to the profile were not saved. It seems that files are copied from the active directory to the domain pc (but not removed). The problem is that if there is already a ntuser.man file on the domain pc this pc will continue to think that it&amp;rsquo;s a mandatory profile. Solution: Remove the copy of the profile on the domain pc.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How (not) to apply for a job?</title>
      <link>https://timvw.be/2005/12/06/how-not-to-apply-for-a-job/</link>
      <pubDate>Tue, 06 Dec 2005 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2005/12/06/how-not-to-apply-for-a-job/</guid>
      <description>&lt;p&gt;Today i was part of a jury looking for a junior programmer. Most of them had an extensive list with programming languages on their curriculum vitae, eg: &lt;a href=&#34;http://www.w3.org/TR/html4/&#34;&gt;html&lt;/a&gt;, &lt;a href=&#34;http://www.w3.org/XML/&#34;&gt;xml&lt;/a&gt;, &lt;a href=&#34;http://www.w3.org/Style/CSS/&#34;&gt;css&lt;/a&gt;, &amp;hellip; Ok, there are people out there that consider writing markup language is programming too.&lt;/p&gt;&#xA;&lt;p&gt;Most of them mentionned they had some experiences with &lt;a href=&#34;http://www.perl.org&#34;&gt;Perl&lt;/a&gt;. My first question was: What are the kind of problems you would solve with Perl? In which areas does it seem to be right tool? A couple of them told me that they had written a proxy server or used it on linux. Fine, but i would have expected at least one to tell me that Perl (Practical Extraction and Report Language) seems to be the right tool for text manipulation&amp;hellip;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Wordfinder</title>
      <link>https://timvw.be/2005/11/15/wordfinder/</link>
      <pubDate>Tue, 15 Nov 2005 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2005/11/15/wordfinder/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve noticed there are still a lot of shows on television that want you to find a word. So i wrote a little wordfinder that does this for you using the ispell wordlist. As always, you can download the &lt;a href=&#34;http://www.timvw.be/wp-content/code/php/wordfinder.txt&#34;&gt;wordfinder.txt&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Parsing http headers</title>
      <link>https://timvw.be/2005/11/14/parsing-http-headers/</link>
      <pubDate>Mon, 14 Nov 2005 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2005/11/14/parsing-http-headers/</guid>
      <description>&lt;p&gt;Today i updated my HTTP proxy a little. &lt;a href=&#34;http://www.w3.org/Protocols/rfc2616/rfc2616.html&#34;&gt;RFC 2616&lt;/a&gt; describes &lt;a href=&#34;http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2&#34;&gt;Message Headers&lt;/a&gt; as following:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;div&gt;&#xA;  &lt;pre&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;message-header = field-name &amp;ldquo;:&amp;rdquo; [ field-value ]&#xA;field-name     = token&#xA;field-value    = *( field-content | LWS )&#xA;field-content  = &amp;lt;the OCTETs making up the field-value and consisting of&#xA;either *TEXT or combinations of token, separators,&#xA;and quoted-string&amp;gt;&#xA;&lt;/pre&gt;&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;/div&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;Here is the code i used to get the field-name and field-value. Do you see the bug?&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-perl&#34; data-lang=&#34;perl&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;my&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$name&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$value&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#6639ba&#34;&gt;split&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;/:/&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$in&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Location headers look like &amp;lsquo;header: &lt;a href=&#34;http://www.example.com&#34;&gt;http://www.example.com&lt;/a&gt;&amp;rsquo;. Now, the problem is that &lt;a href=&#34;http://perldoc.perl.org/functions/split.html&#34;&gt;split&lt;/a&gt; returns a list with &amp;rsquo;location&amp;rsquo;, &amp;lsquo;http&amp;rsquo; and &amp;lsquo;&lt;a href=&#34;https://www.example.com&#34;&gt;www.example.com&lt;/a&gt;&amp;rsquo;. Here is the solution:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Changing the include_path</title>
      <link>https://timvw.be/2005/11/06/changing-the-include_path/</link>
      <pubDate>Sun, 06 Nov 2005 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2005/11/06/changing-the-include_path/</guid>
      <description>&lt;p&gt;PHP has a feature to change the &lt;a href=&#34;http://www.php.net/manual/en/ini.core.php#ini.include-path&#34;&gt;include_path&lt;/a&gt; programatically. The problem is that the path separator is : on unix and ; on windows. Luckily there is a constant &lt;a href=&#34;http://www.php.net/manual/en/reserved.constants.php&#34;&gt;PATH_SEPARATOR&lt;/a&gt; to overcome this issue. Here is how i would do it&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;?&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;php&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;ini_set&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;error_reporting&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;E_ALL&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;ini_set&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;display_errors&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;TRUE&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$include_paths&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;array&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;.&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;/home/users/timvw/phpincs&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;/home/users/timvw/pear&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#1f2328&#34;&gt;ini_get&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;include_path&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;ini_set&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;include_path&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;implode&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;PATH_SEPARATOR&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$include_paths&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;));&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;?&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Introducing the masterpage</title>
      <link>https://timvw.be/2005/11/06/introducing-the-masterpage/</link>
      <pubDate>Sun, 06 Nov 2005 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2005/11/06/introducing-the-masterpage/</guid>
      <description>&lt;p&gt;Most websites have the same layout and an area with dynamic content. So most people choose for the following solution: generate a couple of template files for the static content and then write the code for the dynamic content and include the static templates. Here is how the code for a contact and an aboutme page would look like&lt;/p&gt;&#xA;&lt;p&gt;contact.php&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;?&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;php&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;include&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;header.php&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;include&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;leftpanel.php&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;// code for contact page&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;include&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;rightpanel.php&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;include&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;footer.php&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;?&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;aboutme.php&lt;/p&gt;</description>
    </item>
    <item>
      <title>Problem with Base and MySQL support</title>
      <link>https://timvw.be/2005/11/04/problem-with-base-and-mysql-support/</link>
      <pubDate>Fri, 04 Nov 2005 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2005/11/04/problem-with-base-and-mysql-support/</guid>
      <description>&lt;p&gt;Today i decided to try out the new &lt;a href=&#34;http://www.openoffice.org/&#34;&gt;OpenOffice.org&lt;/a&gt; release. Creating a presentation with &lt;a href=&#34;http://www.openoffice.org/product/impress.html&#34;&gt;Impress&lt;/a&gt; went pretty smooth. After that i wanted to check out &lt;a href=&#34;http://www.openoffice.org/product/base.html&#34;&gt;Base&lt;/a&gt; with a MySQL backend but i got an error message that the JDBC driver could not be loaded.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/images/ooo2mysqlfail.jpg&#34; alt=&#34;Could not load JDBC driver dialog&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;I immediately knew that i had to add the &lt;a href=&#34;http://www.mysql.com/products/connector/j/&#34;&gt;MySQL driver&lt;/a&gt; to the classpath. A little websearch learned me i have to choose Tools-&amp;gt;Options in the menu. And from there i can modify the classpath via the OpenOffice.org-&amp;gt;Java panel.&lt;/p&gt;</description>
    </item>
    <item>
      <title>GNU text utilities</title>
      <link>https://timvw.be/2005/11/03/gnu-text-utilities/</link>
      <pubDate>Thu, 03 Nov 2005 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2005/11/03/gnu-text-utilities/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve already written that i like the &lt;a href=&#34;http://www.gnu.org/software/textutils/textutils.html&#34;&gt;GNU Textutils&lt;/a&gt; a lot. Today someone had the following problem: A textfile with words. It&amp;rsquo;s possible that a word is repeated a couple of times. He wants to generate a newfile without duplicate words. The solution is pretty simple&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sort words.txt &lt;span style=&#34;color:#1f2328&#34;&gt;|&lt;/span&gt; uniq &amp;gt; newfile.txt&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Passing a filehandle as parameter</title>
      <link>https://timvw.be/2005/10/20/passing-a-filehandle-as-parameter/</link>
      <pubDate>Thu, 20 Oct 2005 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2005/10/20/passing-a-filehandle-as-parameter/</guid>
      <description>&lt;p&gt;To keep things maintainable we split our program in modules, classes, functions&amp;hellip; In &lt;a href=&#34;http://perldoc.perl.org/perlsub.html&#34;&gt;perlsub&lt;/a&gt; from the execellent perl documentation you can lookup the syntax of how to use functions. Offcourse, you have to digg pretty deep to find out how you can pass a filehandle&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-perl&#34; data-lang=&#34;perl&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;# clientproc(*STDOUT);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;# pass the socket&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;clientproc&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;*&lt;/span&gt;CH&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;sub&lt;/span&gt; &lt;span style=&#34;color:#6639ba&#34;&gt;clientproc&lt;/span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#953800&#34;&gt;$fh&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#6639ba&#34;&gt;shift&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#cf222e&#34;&gt;print&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$fh&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;hello world&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>a little hint for writing and testing a script</title>
      <link>https://timvw.be/2005/10/18/a-little-hint-for-writing-and-testing-a-script/</link>
      <pubDate>Tue, 18 Oct 2005 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2005/10/18/a-little-hint-for-writing-and-testing-a-script/</guid>
      <description>&lt;p&gt;I noticed that most people think Vim sucks and they constantly perform the following keystrokes&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-dos&#34; data-lang=&#34;dos&#34;&gt;:wq &#xA;perl somefile.pl &#xA;vim somefile.pl&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Here is the first trick, you do not need to exit vim to perform a command. Simply type the following while you are in vim&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-dos&#34; data-lang=&#34;dos&#34;&gt;:!perl somefile.pl&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Offcourse, you do not want to type the filename all the time, so you use the following&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-dos&#34; data-lang=&#34;dos&#34;&gt;:!perl %&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Now, if you are using a different scripting language it might be more portable to make the file executable (chmod u+x) and make sure the &lt;a href=&#34;http://en.wikipedia.org/wiki/Shebang&#34;&gt;Shebang&lt;/a&gt; points to the right interpreter. Your script would be something like the following then&lt;/p&gt;</description>
    </item>
    <item>
      <title>Odd behaviour with arrays</title>
      <link>https://timvw.be/2005/10/12/odd-behaviour-with-arrays/</link>
      <pubDate>Wed, 12 Oct 2005 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2005/10/12/odd-behaviour-with-arrays/</guid>
      <description>&lt;p&gt;A while ago i was really stumbled by the behaviour of a server. This problem solved itself after the sysadmin noticed that he forgot to upgrade &lt;a href=&#34;http://www.ioncube.com/&#34;&gt;ionCube&lt;/a&gt; after a php upgrade.Here is the code that i ran&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$array&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;array&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$array&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[]&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;array&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;name&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;row1&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;value&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;1&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$array&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[]&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;array&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;name&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;row2&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;value&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;3&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$array&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[]&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;array&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;name&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;row3&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;value&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;2&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;foreach&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$array&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;as&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$row&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#1f2328&#34;&gt;print_r&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$row&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#cf222e&#34;&gt;echo&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The expected output is&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;Array&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;row1&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;value&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;Array&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;row2&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;value&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;3&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;Array&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;row3&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;value&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;2&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;For some odd reason this is the output i got&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;Array&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;Array&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;row1&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;value&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;Array&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;Array&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;row2&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;value&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;3&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Image scroller</title>
      <link>https://timvw.be/2005/09/01/image-scroller/</link>
      <pubDate>Thu, 01 Sep 2005 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2005/09/01/image-scroller/</guid>
      <description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;// +—————————————————————————&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;// | // |&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;// | A javascript picture scroller&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;// +—————————————————————————&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;i&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;pics&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; &lt;span style=&#34;color:#6639ba&#34;&gt;Array&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;// define the pictures you want to show (html id, image url, link url)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;pics&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;++&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;picture&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;‘&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;pic&lt;/span&gt;&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;’&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;‘&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;images&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;scroller&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;top03&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;jpg&lt;/span&gt;&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;’&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;‘&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;http&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;//www.microsoft.com’);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;//pics[i++] = new picture(‘pic’ + i, ‘/images/scroller/top04.jpg’, ‘http://www.khleuven.be’);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;pics&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;++&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;picture&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;‘&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;pic&lt;/span&gt;&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;’&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;‘&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;images&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;scroller&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;top05&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;jpg&lt;/span&gt;&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;’&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;‘&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;rss&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;php&lt;/span&gt;&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;’&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;pics&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;++&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;picture&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;‘&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;pic&lt;/span&gt;&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;’&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;‘&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;images&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;scroller&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;top11&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;jpg&lt;/span&gt;&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;’&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;”&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;// define the sleep interval&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;slow&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;100&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;/**&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;* global variables&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;*/&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;lastindex&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;pics&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;length&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;pause&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;pictures&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;offset&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;left&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;/**&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;* Scroll&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;*&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;* @param id the id in which the scroller should be drawn&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;*/&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;function&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;scroller&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;id&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#57606a&#34;&gt;// load pictures&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&lt;/span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;pictures&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; &lt;span style=&#34;color:#6639ba&#34;&gt;Array&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;lastindex&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;i&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;i&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;lastindex&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;++&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;pictures&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Image&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;pictures&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;].&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;src&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;pics&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;].&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;pictureurl&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;offset&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#6639ba&#34;&gt;document&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;getElementById&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;id&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;).&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;offsetLeft&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;161&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#57606a&#34;&gt;// attach pictures to html, display:none&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&lt;/span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;i&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;i&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;lastindex&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;++&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;purl&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;pics&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;].&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;pictureurl&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;lurl&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;pics&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;].&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;linkurl&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;pid&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;pics&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;].&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;id&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;ileft&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#6639ba&#34;&gt;document&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;getElementById&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;id&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;).&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;innerHTML&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;+=&lt;/span&gt; &lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;‘&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;href&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;’ + lurl + ‘&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;img&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;src&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;’ + purl + ‘&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;id&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;’ + pid + ‘&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;style&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;display: none; position: absolute; left:’ + ileft + ‘px; top: 27px;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;/&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;/a&amp;gt;’;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#57606a&#34;&gt;// start&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&lt;/span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;pause&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;setInterval&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;start()&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;500&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;/**&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;* A container for a picture&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;*&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;* @param id the DOM id for this picture&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;* @param imageurl the URL where the picture can be found&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;* @param linkurl the URL where the user should be directed to if he clicks the picture&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;*/&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;function&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;picture&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;id&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;pictureurl&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;linkurl&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;id&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;id&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;pictureurl&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;pictureurl&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;linkurl&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;linkurl&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;/**&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;* Determine of the pictures are ready to be displayed&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;*/&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;function&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;ready&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#57606a&#34;&gt;// test if there is a picture that is not completely loaded&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&lt;/span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;i&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;i&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;lastindex&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;++&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;id&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;pics&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;].&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;id&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;!&lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;document&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;getElementById&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;id&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;).&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;complete&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;false&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;/**&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;* Do the actual scrolling&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;*/&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;function&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;work&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#57606a&#34;&gt;// move all the pictures to the left&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&lt;/span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;i&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;i&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;lastindex&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;++&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;left&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;-=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#57606a&#34;&gt;// if picture is out the container, position it at the right of the other pictures&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&lt;/span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;left&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;offset&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;n&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;i&lt;/span&gt; &lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;–&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;n&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;n&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;lastindex&lt;/span&gt; &lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;–&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;l&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;left&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;n&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;];&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;l&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;+=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;pictures&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;n&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;].&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;width&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;left&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;l&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;id&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;pics&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;].&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;id&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;ileft&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;left&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;];&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#6639ba&#34;&gt;document&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;getElementById&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;id&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;).&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;style&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;left&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;ileft&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;‘&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;px&lt;/span&gt;&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;’&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;/**&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;* Start the scroller&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;*/&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;function&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;start&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;ready&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;())&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#6639ba&#34;&gt;window&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;clearInterval&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;pause&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#57606a&#34;&gt;// calculate positions and make visible&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&lt;/span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;left&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; &lt;span style=&#34;color:#6639ba&#34;&gt;Array&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;lastindex&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;i&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;i&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;lastindex&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;++&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;l&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;offset&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#cf222e&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;n&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;n&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;++&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;n&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;l&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;+=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;pictures&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;n&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;].&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;width&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;left&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;l&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;id&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;pics&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;].&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;id&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;ileft&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;left&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;];&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#6639ba&#34;&gt;document&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;getElementById&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;id&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;).&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;style&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;display&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;‘&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;inline&lt;/span&gt;&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;’&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#6639ba&#34;&gt;document&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;getElementById&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;id&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;).&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;style&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;left&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;ileft&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;‘&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;px&lt;/span&gt;&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;’&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#57606a&#34;&gt;// work&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&lt;/span&gt;&#x9;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;interval&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;setInterval&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;‘&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;work&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;’&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;slow&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Currency convertor</title>
      <link>https://timvw.be/2005/08/29/currency-convertor/</link>
      <pubDate>Mon, 29 Aug 2005 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2005/08/29/currency-convertor/</guid>
      <description>&lt;p&gt;I discovered that the &lt;a href=&#34;http://www.ecb.int&#34;&gt;European Central Bank (ECB)&lt;/a&gt; has a page with &lt;a href=&#34;http://www.ecb.int/stats/exchange/eurofxref/html/index.en.html&#34;&gt;Euro foreign exchange rates&lt;/a&gt;. I thought it would be a nice exercise to write a little script that works with the &lt;a href=&#34;http://www.ecb.int/stats/eurofxref/eurofxref-hist.xml&#34;&gt;XML data&lt;/a&gt; source. Get &lt;a href=&#34;http://www.timvw.be/wp-content/code/php/currencyconvertor.txt&#34;&gt;currencyconvertor.txt&lt;/a&gt; now!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Telnet server</title>
      <link>https://timvw.be/2005/08/20/telnet-server/</link>
      <pubDate>Sat, 20 Aug 2005 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2005/08/20/telnet-server/</guid>
      <description>&lt;p&gt;A telnet server that writes the content of a file to it&amp;rsquo;s clients: &lt;a href=&#34;http://www.timvw.be/wp-content/code/java/banner.txt&#34;&gt;banner.txt&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tests if $host is a proxy server</title>
      <link>https://timvw.be/2005/08/20/tests-if-host-is-a-proxy-server/</link>
      <pubDate>Sat, 20 Aug 2005 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2005/08/20/tests-if-host-is-a-proxy-server/</guid>
      <description>&lt;p&gt;Code: &lt;a href=&#34;./wp-content/code/php/proxytester.txt&#34;&gt;php/proxytester.txt&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Generating JavaScript strings</title>
      <link>https://timvw.be/2005/07/29/generating-javascript-strings/</link>
      <pubDate>Fri, 29 Jul 2005 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2005/07/29/generating-javascript-strings/</guid>
      <description>&lt;p&gt;Well, I&amp;rsquo;ve always experienced the generating JavaScript strings with PHP as a PITA. An example, which requires you to take care of the escaping of quotes, is the string: &amp;lsquo;O&amp;rsquo;Reilly has nice books&amp;rsquo;. Today i had this brilliant idea to do it as following:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;?&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;php&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$str&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;addslashes&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Hello peter&amp;#39;s cats&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;echo&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;&amp;lt;script type=&amp;#39;text/javascript&amp;#39;&amp;gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;echo&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;alert(&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;$str&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;)&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;echo&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;?&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>value-of in an attribute</title>
      <link>https://timvw.be/2005/07/25/value-of-in-an-attribute/</link>
      <pubDate>Mon, 25 Jul 2005 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2005/07/25/value-of-in-an-attribute/</guid>
      <description>&lt;p&gt;There were days that i did not like XSL because it seemed to be impossible to insert a value inside an attribute. For example:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;form&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;action=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;&amp;lt;xsl:value-of select=&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f6f8fa;background-color:#82071e&#34;&gt;/page/action&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;/&amp;gt;&lt;/span&gt;&amp;#34; method=&amp;#34;post&amp;#34;&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Today i&amp;rsquo;ve seen that other people also struggle with this issue. So here is the solution:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;form&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;action=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;{/page/action}&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;method=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;post&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Read from STDIN without echoing the input back</title>
      <link>https://timvw.be/2005/07/24/read-from-stdin-without-echoing-the-input-back/</link>
      <pubDate>Sun, 24 Jul 2005 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2005/07/24/read-from-stdin-without-echoing-the-input-back/</guid>
      <description>&lt;p&gt;Today i was looking for a way to read passwords from a PHP-CLI script. So it was important the password didn&amp;rsquo;t appear on the console. I wrote a &lt;a href=&#34;http://www.timvw.be/wp-content/code/php/ttyecho.php.txt&#34;&gt;ttyecho function&lt;/a&gt; that uses &lt;a href=&#34;http://unixhelp.ed.ac.uk/CGI/man-cgi?stty&#34;&gt;stty&lt;/a&gt; to change the terminal line settings.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Scriptable browser</title>
      <link>https://timvw.be/2005/07/10/scriptable-browser/</link>
      <pubDate>Sun, 10 Jul 2005 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2005/07/10/scriptable-browser/</guid>
      <description>&lt;p&gt;Last couple of days i have been trying out &lt;a href=&#34;http://www.lastcraft.com/simple_test.php&#34;&gt;Simple Test&lt;/a&gt;. It allowed me stop stop &lt;a href=&#34;http://www.php.net/echo&#34;&gt;echo&lt;/a&gt; and &lt;a href=&#34;http://www.php.net/print_r&#34;&gt;print_r&lt;/a&gt; variables all over the place. The package also has a &lt;a href=&#34;http://www.lastcraft.com/browser_documentation.php&#34;&gt;Scriptable Browser&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;At &lt;a href=&#34;http://www.smscity.be&#34;&gt;smscity.be&lt;/a&gt; you can earn credits each day. Therefor you have to visit their site and click some links. I wrote a &lt;a href=&#34;http://www.timvw.be/wp-content/code/php/smscity.txt&#34;&gt;smscity.txt script&lt;/a&gt; that does this for me.&lt;/p&gt;&#xA;&lt;p&gt;Now all i had to do is make sure this script is executed each day, so i edited my &lt;a href=&#34;http://unixhelp.ed.ac.uk/CGI/man-cgi?crontab+5&#34;&gt;crontab&lt;/a&gt;. It looks like:&lt;/p&gt;</description>
    </item>
    <item>
      <title>GNU text utilities</title>
      <link>https://timvw.be/2005/07/06/gnu-text-utilities/</link>
      <pubDate>Wed, 06 Jul 2005 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2005/07/06/gnu-text-utilities/</guid>
      <description>&lt;p&gt;More and more i seem to recieve requests from people that need to manipulate some text files.&lt;/p&gt;&#xA;&lt;p&gt;And they do not feel like doing it manually. So here are some examples of how i used the&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.gnu.org/software/textutils/manual/textutils/textutils.html&#34;&gt;GNU text utilities&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;p&gt;I want to split the file below into one with the questions and one with the answers. This can be easily done:&lt;/p&gt;&#xA;&lt;pre&gt;Who is the manual.*I am&#xA;Who am i.*The manual&#xA;What was HLN&#39;s first #1 hit.*Power of love&#xA;Which News man is the oldest.*Huey&#xA;About how many months did it take to record Small World.*4&#xA;Who wrote Jacob&#39;s Ladder.*Bruce Hornsby&#xA;&lt;/pre&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cut -d &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;.&amp;#39;&lt;/span&gt; -f1 trivia.txt &amp;gt; questions.txt&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cut -d &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;*&amp;#39;&lt;/span&gt; -f2 trivia.txt &amp;gt; answers.txt&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I want to know how many times people have logged in. With last i recieve output like below.&lt;/p&gt;</description>
    </item>
    <item>
      <title>I am the manual</title>
      <link>https://timvw.be/2005/07/06/i-am-the-manual/</link>
      <pubDate>Wed, 06 Jul 2005 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2005/07/06/i-am-the-manual/</guid>
      <description>&lt;p&gt;I found this in my inbox on my favorite &lt;a href=&#34;http://www.php.net&#34;&gt;PHP&lt;/a&gt; forum, &lt;a href=&#34;http://forums.devnetwork.net&#34;&gt;DevNetwork&lt;/a&gt;&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;div&gt;&#xA;  &lt;img src=&#34;http://www.timvw.be/wp-content/images/phpdn-i-am-the-manual-badge.gif&#34; alt=&#34;I am the manual&#34; /&gt;&lt;/p&gt; &#xA;  &lt;pre&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;Hi timvw,&#xA;you&amp;rsquo;ve won an award!&lt;/p&gt;&#xA;&lt;p&gt;I Am The Manual Award&lt;/p&gt;&#xA;&lt;p&gt;And the beauty is, you now have a badge to show for it! Smile&lt;/p&gt;&#xA;&lt;p&gt;You can download it and use them as your avatar or in your signature:&lt;/p&gt;&#xA;&lt;p&gt;Congratulations&#xA;patrikG&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://forums.devnetwork.net/viewtopic.php?t=30037&#34;&gt;Forum Rules&lt;/a&gt;&#xA;&lt;a href=&#34;http://www.catb.org/~esr/faqs/smart-questions.html&#34;&gt;How to get what you want!&lt;/a&gt;&#xA;&lt;a href=&#34;http://www.php.net/docs&#34;&gt;PHP Manual!&lt;/a&gt;&#xA;This isn&amp;rsquo;t the code you&amp;rsquo;re looking for.&#xA;&lt;/pre&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Exploring the FTP functions</title>
      <link>https://timvw.be/2005/05/04/exploring-the-ftp-functions/</link>
      <pubDate>Wed, 04 May 2005 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2005/05/04/exploring-the-ftp-functions/</guid>
      <description>&lt;p&gt;I am still drowning in the work, and exams are coming close too, but i decided to blog something about the &lt;a href=&#34;http://www.php.net/ftp&#34;&gt;FTP&lt;/a&gt; functions in &lt;a href=&#34;http://www.php.net&#34;&gt;PHP&lt;/a&gt;. The script will download all the files that are available on the remote server.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;// make sure we have time enough to execute this script&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;set_time_limit&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;1200&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;// connect to the ftp server&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$ftp&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;ftp_connect&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;ftp.scarlet.be&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;ftp_login&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$ftp&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;anonymous&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;password&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;// get the files that are available here&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$local&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;glob&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;*.\*&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;// get the files that are available there&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$remote&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;ftp_nlist&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$ftp&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;.&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;// get the files there that are not availble here&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;foreach&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$remote&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;as&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$file&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;!&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;in_array&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$file&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$local&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;))&lt;/span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#57606a&#34;&gt;// we do not have the file, thus download it  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&lt;/span&gt;    &lt;span style=&#34;color:#1f2328&#34;&gt;ftp_get&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$ftp&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$file&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$file&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;FTP_BINARY&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;// close the connection&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;ftp_close&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$ftp&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Formatted input</title>
      <link>https://timvw.be/2005/03/19/formatted-input/</link>
      <pubDate>Sat, 19 Mar 2005 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2005/03/19/formatted-input/</guid>
      <description>&lt;p&gt;I was in need for formatted input and the decomposition of the input into a stream of tokens so i came up with the following:&lt;/p&gt;&#xA;&lt;p&gt;Code: &lt;a href=&#34;./wp-content/code/java/TokSequence.java.txt&#34;&gt;java/TokSequence.java.txt&lt;/a&gt;&#xA;And now i am ready for formatted input like this:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-java&#34; data-lang=&#34;java&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Main&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;public&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;static&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;void&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;main&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;String&lt;span style=&#34;color:#0550ae&#34;&gt;[]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;args&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;try&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;      &lt;/span&gt;BufferedReader&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;input&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;BufferedReader&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;FileReader&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;file.txt&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;));&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;for&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;String&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;in&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;input&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;readLine&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;())&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;        &lt;/span&gt;TokSequence&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;ts&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;TokSequence&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;StringTokenizer&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;in&lt;span style=&#34;color:#1f2328&#34;&gt;));&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;        &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;userId&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;ts&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;getIn&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;        &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;double&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;score&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;ts&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;getDouble&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;        &lt;/span&gt;String&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;name&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;ts&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;getString&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;        &lt;/span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;// do stuff with userId, score and name&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;catch&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;Exception&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;e&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;      &lt;/span&gt;System&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;err&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;println&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;e&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;      &lt;/span&gt;System&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;exit&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;1&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>More on recursion</title>
      <link>https://timvw.be/2005/03/04/more-on-recursion/</link>
      <pubDate>Fri, 04 Mar 2005 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2005/03/04/more-on-recursion/</guid>
      <description>&lt;p&gt;Yesterday i already wrote that an interative implementation for a recursive function is more efficient. And i gave you an example of the fibonacci function. Well, today i am here to present you an implementation for every recursive function.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Math&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#57606a&#34;&gt;// calculate the linear combination  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#57606a&#34;&gt;// fe:     &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#57606a&#34;&gt;// coefficients = array(1, 2, 3)   &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#57606a&#34;&gt;// values = array(4, 5, 6)     &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#57606a&#34;&gt;// returns: (1 \* 4) + (2 \* 5) + (3 * 6)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#cf222e&#34;&gt;function&lt;/span&gt; &lt;span style=&#34;color:#6639ba&#34;&gt;lc&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$coefficients&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$values&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;     &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;        &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;count&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$coefficients&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;count&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$values&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;))&lt;/span&gt;        &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;             &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;false&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;      &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#953800&#34;&gt;$result&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;        &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#cf222e&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$i&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$i&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;count&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$coefficients&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;++&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$i&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;          &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#953800&#34;&gt;$result&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;+=&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$coefficients&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$i&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$values&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$i&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;];&lt;/span&gt;        &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;         &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$result&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;     &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#57606a&#34;&gt;// lookup the value for the recursive function     &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#57606a&#34;&gt;// fe:     &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#57606a&#34;&gt;// n: 3      &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#57606a&#34;&gt;// coefficients = array(a, b)    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#57606a&#34;&gt;// initvalues = array(0, 1)     &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#57606a&#34;&gt;// returns: 2    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#57606a&#34;&gt;// this is the same as f(n) = (a \* (n-2)) + (b \* (n-1))    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#cf222e&#34;&gt;function&lt;/span&gt; &lt;span style=&#34;color:#6639ba&#34;&gt;recursive&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$n&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$coefficients&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$initvalues&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;          &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$n&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;count&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$initvalues&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;))&lt;/span&gt;         &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;             &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$initvalues&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$n&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;];&lt;/span&gt;          &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#cf222e&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$i&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;count&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$initvalues&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$i&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$n&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;++&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$i&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;        &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;            &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#953800&#34;&gt;$result&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;Math&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;::&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;lc&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$coefficients&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$initvalues&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;            &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#1f2328&#34;&gt;array_shift&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$initvalues&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;             &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#1f2328&#34;&gt;array_push&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$initvalues&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$result&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;        &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$result&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;As an example we use this class to calculate fibonacci(3):&lt;/p&gt;</description>
    </item>
    <item>
      <title>Calculating Fibonacci</title>
      <link>https://timvw.be/2005/03/03/calculating-fibonacci/</link>
      <pubDate>Thu, 03 Mar 2005 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2005/03/03/calculating-fibonacci/</guid>
      <description>&lt;p&gt;What is a &lt;a href=&#34;http://en.wikipedia.org/wiki/Recursion&#34;&gt;recursive&lt;/a&gt; function? It is a function where the value for input n is calculated as a linear combination of the previous 1, 2, &amp;hellip;, n-1 function values. An example is the fibonacci function: f(n) = f(n-1) + f(n-2).&lt;/p&gt;&#xA;&lt;p&gt;If we program this our first code would look like:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;function&lt;/span&gt; &lt;span style=&#34;color:#6639ba&#34;&gt;fibonacci&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$n&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$n&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$n&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;fibonacci&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$n&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;fibonacci&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$n&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;It becomes clear that this is really inefficient. For example if we call fibonacci(3) the following function calls will be made:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Getting started with CVS</title>
      <link>https://timvw.be/2005/02/08/getting-started-with-cvs/</link>
      <pubDate>Tue, 08 Feb 2005 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2005/02/08/getting-started-with-cvs/</guid>
      <description>&lt;p&gt;I got an e-mail that asked me how to get started with CVS as quick as possible. The first time i got lost too. So i&amp;rsquo;ll give a quick summary how i did it (no p-server).&lt;/p&gt;&#xA;&lt;p&gt;The repository will live on a &lt;a href=&#34;http://www.debian.org&#34;&gt;debian&lt;/a&gt; machine in /home/users/timvw/services/cvs.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;timvw@debian: apt-get install cvs &lt;span style=&#34;color:#57606a&#34;&gt;# get the tools&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;timvw@debian: cvs -d /home/users/timvw/services/cvs init &lt;span style=&#34;color:#57606a&#34;&gt;# create repository&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;On my windows machine i use &lt;a href=&#34;http://www.tortoisecvs.org&#34;&gt;TortoiseCVS&lt;/a&gt;. I want to make a module pecl that will contain all my &lt;a href=&#34;http://pecl.php.net&#34;&gt;pecl&lt;/a&gt; related code.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Configuring Mutt for GPG</title>
      <link>https://timvw.be/2005/02/06/configuring-mutt-for-gpg/</link>
      <pubDate>Sun, 06 Feb 2005 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2005/02/06/configuring-mutt-for-gpg/</guid>
      <description>&lt;p&gt;Today i generated a &lt;a href=&#34;http://www.pgpi.org/&#34;&gt;PGP&lt;/a&gt; (Pretty Good Privacy) key for my e-mail address. I also configured my mailclient, &lt;a href=&#34;http://www.mutt.org&#34;&gt;mutt&lt;/a&gt;, for use with &lt;a href=&#34;http://www.gnupg.org&#34;&gt;GnuPG&lt;/a&gt;. I copied a sample file i found on the net but always got an error message: sh: line 1: pgpewrap: command not found. It appears that /usr/lib/mutt/ is not in the path and therefore is not found. Here is the tweaked .muttrc part:&lt;/p&gt;&#xA;&lt;pre&gt;set pgp_decode_command=&#34;gpg %?p?--passphrase-fd 0? --no-verbose --batch --output - %f&#34;&#xA;set pgp_verify_command=&#34;gpg --no-verbose --batch --output - --verify %s %f&#34;&#xA;set pgp_decrypt_command=&#34;gpg --passphrase-fd 0 --no-verbose --batch --output - %f&#34;&#xA;set pgp_sign_command=&#34;gpg --no-verbose --batch --output - --passphrase-fd 0 --armor --detach-sign \&#xA;--textmode %?a?-u %a? %f&#34;&#xA;set pgp_clearsign_command=&#34;gpg --no-verbose --batch --output - --passphrase-fd 0 --armor \&#xA;--textmode --clearsign %?a?-u %a? %f&#34;&#xA;set pgp_encrypt_only_command=&#34;/usr/lib/mutt/pgpewrap gpg --batch --quiet --no-verbose --output - --encrypt \&#xA;--textmode --armor --always-trust --encrypt-to 0xE38BE821 -- -r %r -- %f&#34;&#xA;set pgp_encrypt_sign_command=&#34;/usr/lib/mutt/pgpewrap gpg --passphrase-fd 0 --batch --quiet --no-verbose \&#xA;--textmode --output - --encrypt --sign %?a?-u %a? --armor --always-trust --encrypt-to 0xE38BE821 -- -r %r -- %f&#34;&#xA;set pgp_import_command=&#34;gpg --no-verbose --import -v %f&#34;&#xA;set pgp_export_command=&#34;gpg --no-verbose --export --armor %r&#34;&#xA;set pgp_verify_key_command=&#34;gpg --no-verbose --batch --fingerprint --check-sigs %r&#34;&#xA;set pgp_list_pubring_command=&#34;gpg --no-verbose --batch --with-colons --list-keys %r&#34;&#xA;set pgp_list_secring_command=&#34;gpg --no-verbose --batch --with-colons --list-secret-keys %r&#34;&#xA;set pgp_autosign=no&#xA;set pgp_sign_as=0xE38BE821&#xA;set pgp_replyencrypt=yes&#xA;set pgp_timeout=1800&#xA;set pgp_good_sign=&#34;^gpg: Good signature from&#34;&#xA;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Elegantly generate SQL queries</title>
      <link>https://timvw.be/2005/02/02/elegantly-generate-sql-queries/</link>
      <pubDate>Wed, 02 Feb 2005 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2005/02/02/elegantly-generate-sql-queries/</guid>
      <description>&lt;p&gt;Code: &lt;a href=&#34;./wp-content/code/php/elegantsql.txt&#34;&gt;php/elegantsql.txt&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Bypassing URL file-access is disabled</title>
      <link>https://timvw.be/2005/01/28/bypassing-url-file-access-is-disabled/</link>
      <pubDate>Fri, 28 Jan 2005 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2005/01/28/bypassing-url-file-access-is-disabled/</guid>
      <description>&lt;p&gt;For some odd reason this host has disabled URL file-access.&lt;/p&gt;&#xA;&lt;p&gt;So i needed something simple to bypass this problem:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;function&lt;/span&gt; &lt;span style=&#34;color:#6639ba&#34;&gt;fetch_url&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$url&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;     &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;preg_match&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;#^http://(.\*?)/(.\*)$#&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$url&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$matches&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;))&lt;/span&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#953800&#34;&gt;$host&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$matches&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;];&lt;/span&gt;       &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#953800&#34;&gt;$uri&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$matches&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;];&lt;/span&gt;       &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#953800&#34;&gt;$msg&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;GET /&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;$uri&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt; HTTP/1.0&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;\r\n&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;Host: &lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;$host\r\n\r\n&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#953800&#34;&gt;$fp&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;fsockopen&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$host&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;80&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$errno&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$errstr&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#1f2328&#34;&gt;fwrite&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$fp&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$msg&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;         &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#953800&#34;&gt;$ignore&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;        &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#cf222e&#34;&gt;while&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;!&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;feof&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$fp&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;))&lt;/span&gt;        &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;            &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#953800&#34;&gt;$read&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;fgets&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$fp&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;1024&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;!&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$ignore&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;            &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;     &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#953800&#34;&gt;$contents&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;.=&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$read&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;            &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;preg_match&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;^Content-Type: .*?&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;\r\n&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$read&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;))&lt;/span&gt;          &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;                &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#953800&#34;&gt;$ignore&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;false&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;          &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;        &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#1f2328&#34;&gt;fclose&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$fp&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$contents&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Playing with XML and XSL</title>
      <link>https://timvw.be/2005/01/23/playing-with-xml-and-xsl/</link>
      <pubDate>Sun, 23 Jan 2005 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2005/01/23/playing-with-xml-and-xsl/</guid>
      <description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;// add stuff to an xml document in php4&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$doc&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;domxml_open_mem&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$xml&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$root&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$doc&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;document_element&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$inner&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$doc&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;create_element&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;inner&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$root&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$root&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;append_child&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$inner&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;// add stuff to an xml document in php5&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$doc&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;new&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;DomDocument&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;1.0&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;UTF-8&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$doc&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;loadXML&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$xml&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$root&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$doc&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;getelementsByTagName&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;resultset&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;item&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$inner&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$doc&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;createElement&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;inner&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$root&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;$root&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;appendChild&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$inner&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;);&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href=&#34;http://www.w3.org/TR/xhtml1/&#34;&gt;XHTML&lt;/a&gt; does not allow to have an empty list, &lt;ul&gt;&lt;/ul&gt;. Therefore we need to test first if there are any nodes we want to put in that list. The code to do this looks like:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;xsl:for-each&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;select=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;//resultset/entity&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;div&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;class=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;mainitem&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;div&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;class=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;maintitle&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;xsl:value-of&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;select=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;title&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;div&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;class=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;maincontent&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;xsl:if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;test=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;count(items/item) &amp;gt; 0&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;ul&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;xsl:for-each&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;select=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;items/item&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;gt;&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;li&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;a&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;href=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;{link}&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;gt;&amp;lt;xsl:value-of&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;select=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;title&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;/&amp;gt;&amp;lt;/a&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/xsl:for-each&amp;gt;&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/ul&amp;gt;&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/xsl:if&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/div&amp;gt;&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/xsl:for-each&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>XSLT annoyances</title>
      <link>https://timvw.be/2005/01/20/xslt-annoyances/</link>
      <pubDate>Thu, 20 Jan 2005 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2005/01/20/xslt-annoyances/</guid>
      <description>&lt;p&gt;Today i&amp;rsquo;ve finally made the switch. My code generates &lt;a href=&#34;http://www.w3.org/XML/&#34;&gt;XML&lt;/a&gt; and then i translate it to &lt;a href=&#34;http://www.w3.org/TR/xhtml1/&#34;&gt;XHTML&lt;/a&gt; with &lt;a href=&#34;http://www.w3.org/TR/xslt&#34;&gt;XSLT&lt;/a&gt;. However, if i write&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;textarea&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;name=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;foo&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;gt;&amp;lt;/textarea&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;it will be translated to:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;textarea&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;name=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;foo&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;/&amp;gt;&lt;/span&gt;.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;A not so good workaround is to write: (Notice the space in the xsl:text)&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;textarea&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;name=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;foo&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;gt;&amp;lt;xsl:text&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;/xsl:text&amp;gt;&amp;lt;/textarea&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;UPDATE on 2005-01-20 05:42&lt;/p&gt;&#xA;&lt;p&gt;The solution is to use html as output method instead of xml.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;xsl:output&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;method=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;html&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;UPDATE on 2005-01-21 02:15&lt;/p&gt;&#xA;&lt;p&gt;You may also want to make sure HTML tags do not get transformed:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Basic download script</title>
      <link>https://timvw.be/2004/12/29/basic-download-script/</link>
      <pubDate>Wed, 29 Dec 2004 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2004/12/29/basic-download-script/</guid>
      <description>&lt;p&gt;Code: &lt;a href=&#34;./wp-content/code/php/download.txt&#34;&gt;php/download.txt&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Custom ordering with MySQL</title>
      <link>https://timvw.be/2004/12/09/custom-ordering-with-mysql/</link>
      <pubDate>Thu, 09 Dec 2004 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2004/12/09/custom-ordering-with-mysql/</guid>
      <description>&lt;p&gt;As a follow up to &lt;a href=&#34;http://www.timvw.be/custom-ordering&#34;&gt;Custom Ordering&lt;/a&gt; I discovered the nice &lt;a href=&#34;http://dev.mysql.com/doc/mysql/en/String_functions.html&#34;&gt;Field&lt;/a&gt; function in &lt;a href=&#34;http://www.mysql.com&#34;&gt;MySQL.&lt;/a&gt; after it was mentionned on my favorite &lt;a href=&#34;http://forums.devnetwork.net&#34;&gt;PHP Forum&lt;/a&gt; by &lt;a href=&#34;http://forums.devnetwork.net/profile.php?mode=viewprofile&amp;amp;u=7815&#34;&gt;Weirdan&lt;/a&gt;. It allows one to order a column on a custom order relation.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;SELECT&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;FROM&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;foo&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;ORDER&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;BY&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;FIELD&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;column&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;Z&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;B&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;C&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>TetriNet spectator client</title>
      <link>https://timvw.be/2004/11/08/tetrinet-spectator-client/</link>
      <pubDate>Mon, 08 Nov 2004 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2004/11/08/tetrinet-spectator-client/</guid>
      <description>&lt;p&gt;I present a Spectator (Applet) for TetriNet: &lt;a href=&#34;http://www.timvw.be/wp-content/code/java/JSpectator.zip&#34;&gt;JSpectator.zip&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Custom ordering</title>
      <link>https://timvw.be/2004/07/18/custom-ordering/</link>
      <pubDate>Sun, 18 Jul 2004 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2004/07/18/custom-ordering/</guid>
      <description>&lt;p&gt;Assume we have a fruits table. And we want to select all the fruits that have a red or orange or blue color. But we want the resultset to have first all the fruits with color=red, then the fruits with color=blue and then the fruits with color=orange. It is obvious we can not use an alphabetical order. Thus we have to introduce our own order relation.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;select&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;from&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;fruits&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;where&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;color&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;red&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;or&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;color&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;blue&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;or&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;color&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;orange&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;order&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;by&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;case&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;when&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;color&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;red&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;then&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;when&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;color&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;blue&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;then&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;when&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;color&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;orange&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;then&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;end&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>One login at a time</title>
      <link>https://timvw.be/2004/07/16/one-login-at-a-time/</link>
      <pubDate>Fri, 16 Jul 2004 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2004/07/16/one-login-at-a-time/</guid>
      <description>&lt;p&gt;Today someone asked: &amp;ldquo;In other words, how do we prevent two users from using the same password to access the same account at the same time?&amp;rdquo; You can read my answer in &lt;a href=&#34;http://www.timvw.be/wp-content/code/php/onlyone.txt&#34;&gt;onlyone.txt&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Backup script</title>
      <link>https://timvw.be/2004/06/28/backup-script/</link>
      <pubDate>Mon, 28 Jun 2004 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2004/06/28/backup-script/</guid>
      <description>&lt;p&gt;The current shell server i am using returns bogus output for commands like df. Mind the negative value for 1-k blocks.&lt;/p&gt;&#xA;&lt;p&gt;timvw@localhost:~$ df&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;tr&gt;&#xA;    &lt;td&gt;&#xA;      Filesystem&#xA;    &lt;/td&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;&#xA;  1k-blocks&#xA;&amp;lt;/td&amp;gt;&#xA;&#xA;&amp;lt;td&amp;gt;&#xA;  Used&#xA;&amp;lt;/td&amp;gt;&#xA;&#xA;&amp;lt;td&amp;gt;&#xA;  Available&#xA;&amp;lt;/td&amp;gt;&#xA;&#xA;&amp;lt;td&amp;gt;&#xA;  Use%&#xA;&amp;lt;/td&amp;gt;&#xA;&#xA;&amp;lt;td&amp;gt;&#xA;  Mounted on&#xA;&amp;lt;/td&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;  &lt;/tr&gt;&#xA;  &lt;tr&gt;&#xA;    &lt;td&gt;&#xA;      /dev/hda1&#xA;    &lt;/td&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;&#xA;  &amp;lt;b&amp;gt;-780429856382&amp;lt;/b&amp;gt;&#xA;&amp;lt;/td&amp;gt;&#xA;&#xA;&amp;lt;td&amp;gt;&#xA;  1&#xA;&amp;lt;/td&amp;gt;&#xA;&#xA;&amp;lt;td&amp;gt;&#xA;&amp;lt;/td&amp;gt;&#xA;&#xA;&amp;lt;td&amp;gt;&#xA;  74%&#xA;&amp;lt;/td&amp;gt;&#xA;&#xA;&amp;lt;td&amp;gt;&#xA;  /&#xA;&amp;lt;/td&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;  &lt;/tr&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;It thought it would be a good idea to have a backup once in a while, but most of the times when i did it, i forgot to backup my database. So i wrote a little backup.script that remembers to do that for me.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Get all the languages a visitor accepts</title>
      <link>https://timvw.be/2004/06/26/get-all-the-languages-a-visitor-accepts/</link>
      <pubDate>Sat, 26 Jun 2004 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2004/06/26/get-all-the-languages-a-visitor-accepts/</guid>
      <description>&lt;p&gt;Code: &lt;a href=&#34;./wp-content/code/php/languages.txt&#34;&gt;php/languages.txt&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>A Unix daemon</title>
      <link>https://timvw.be/2004/06/25/a-unix-daemon/</link>
      <pubDate>Fri, 25 Jun 2004 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2004/06/25/a-unix-daemon/</guid>
      <description>&lt;p&gt;Today i&amp;rsquo;ve written a daemon that communicates with the &lt;a href=&#34;http://www.netsize.com&#34;&gt;Netsize SMS Gateway&lt;/a&gt;. The &lt;a href=&#34;http://www.timvw.be/wp-content/code/cpp/daemon.zip&#34;&gt;daemon sources&lt;/a&gt; are available for download. You will have to implement your void getCode(double number, char * code) method yourself though.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.timvw.be/wp-content/images/daemon.png&#34; alt=&#34;daemon&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Listen to online radio</title>
      <link>https://timvw.be/2004/05/21/listen-to-online-radio/</link>
      <pubDate>Fri, 21 May 2004 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2004/05/21/listen-to-online-radio/</guid>
      <description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;#!/bin/sh&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;#&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;# # Up# &lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;# This script allows you to listen to Belgian online radio streams.  &lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;#&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;[&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$1&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;then&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;echo&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;[1] Radio 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;[2] Radio 2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;[3] Studio Brussel&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;[4] Donna&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;[5] 4FM&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;[6] QMusic&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;[7] Topradio &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;[9] Klara&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;Enter your choice: &amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;read&lt;/span&gt; choice  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#953800&#34;&gt;choice&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$1&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;fi&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;case&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;$choice&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;&lt;/span&gt; in&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;1&lt;span style=&#34;color:#0550ae&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;station&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;mms://streampower.belgacom.be:1755/radio1high&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;2&lt;span style=&#34;color:#0550ae&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;station&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;mms://streampower.belgacom.be:1755/ra2vlbhigh&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;3&lt;span style=&#34;color:#0550ae&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;station&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;mms://streampower.belgacom.be:1755/stubruhigh&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;;;&lt;/span&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;4&lt;span style=&#34;color:#0550ae&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;station&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;mms://streampower.belgacom.be:1755/donnahigh&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;;;&lt;/span&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;5&lt;span style=&#34;color:#0550ae&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;station&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;mms://mss.streampower.be/4fmhi&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;;;&lt;/span&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;6&lt;span style=&#34;color:#0550ae&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;station&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;mms://mss.streampower.be/qmusic_ahi&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;;;&lt;/span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;7&lt;span style=&#34;color:#0550ae&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;station&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;mms://mss.streampower.be/topahi&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;;;&lt;/span&gt;     &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;9&lt;span style=&#34;color:#0550ae&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;station&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;mms://streampower.belgacom.be:1755/stubruhigh&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;;;&lt;/span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;*&lt;span style=&#34;color:#0550ae&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#6639ba&#34;&gt;echo&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Wrong choice!&amp;#34;&lt;/span&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;exit&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;esac&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mplayer &lt;span style=&#34;color:#953800&#34;&gt;$station&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;exit&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>A banner script</title>
      <link>https://timvw.be/2004/04/12/a-banner-script/</link>
      <pubDate>Mon, 12 Apr 2004 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2004/04/12/a-banner-script/</guid>
      <description>&lt;p&gt;Recently i wrote a &lt;a href=&#34;http://www.timvw.be/wp-content/code/php/banner.txt&#34;&gt;banner system&lt;/a&gt; that displays different banners based on the visitor&amp;rsquo;s country. It uses the remote address to find the country associated with that address (using &lt;a href=&#34;http://www.maxmind.com/&#34;&gt;geoip&lt;/a&gt;), and then it looks in the database to find a url for that country. If there is no such url, it looks up the default url. And finally it redirects the visitor to the url.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Parsing XML</title>
      <link>https://timvw.be/2004/04/06/parsing-xml/</link>
      <pubDate>Tue, 06 Apr 2004 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2004/04/06/parsing-xml/</guid>
      <description>&lt;p&gt;Today i wrote a little program, &lt;a href=&#34;http://www.timvw.be/wp-content/code/csharp/VolumeMeter.txt&#34;&gt;VolumeMeter&lt;/a&gt; which is usefull for &lt;a href=&#34;http://www.scarlet.be&#34;&gt;Scarlet&lt;/a&gt; customers. It queries &lt;a href=&#34;http://mijn.scarlet.be&#34;&gt;mijn.scarlet.be&lt;/a&gt; and returns how many megabytes they have used this month.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Allow to select multiple items in a selectbox</title>
      <link>https://timvw.be/2003/12/19/allow-to-select-multiple-items-in-a-selectbox/</link>
      <pubDate>Fri, 19 Dec 2003 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2003/12/19/allow-to-select-multiple-items-in-a-selectbox/</guid>
      <description>&lt;p&gt;Code: &lt;a href=&#34;./wp-content/code/php/select-multiple.txt&#34;&gt;php/select-multiple.txt&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Kill a user and his processes</title>
      <link>https://timvw.be/2003/12/12/kill-a-user-and-his-processes/</link>
      <pubDate>Fri, 12 Dec 2003 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2003/12/12/kill-a-user-and-his-processes/</guid>
      <description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;#!/bin/sh &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;# &lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;# # Up#&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;# This script kills all processes that are owned by a given user.  &lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;#&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;[&lt;/span&gt; -n &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;ps -ef &lt;span style=&#34;color:#1f2328&#34;&gt;|&lt;/span&gt; grep &lt;span style=&#34;color:#953800&#34;&gt;$1&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;|&lt;/span&gt; grep -v grep &lt;span style=&#34;color:#1f2328&#34;&gt;|&lt;/span&gt; awk ‘&lt;span style=&#34;color:#0550ae&#34;&gt;{&lt;/span&gt; print &lt;span style=&#34;color:#0550ae&#34;&gt;}&lt;/span&gt;’ &lt;span style=&#34;color:#1f2328&#34;&gt;|&lt;/span&gt; xargs &lt;span style=&#34;color:#6639ba&#34;&gt;kill&lt;/span&gt; -9&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#6639ba&#34;&gt;echo&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;Usage: killuser.sh username&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;fi&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Sokoban</title>
      <link>https://timvw.be/2003/06/18/sokoban/</link>
      <pubDate>Wed, 18 Jun 2003 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2003/06/18/sokoban/</guid>
      <description>&lt;p&gt;Today i finished my own version of the wellknown game Sokoban. Get &lt;a href=&#34;http://www.timvw.be/wp-content/code/java/sokoban.zip&#34;&gt;sokoban.zip&lt;/a&gt; now!&lt;/p&gt;</description>
    </item>
    <item>
      <title>A TetriNet Spectator bot that generates game statistics</title>
      <link>https://timvw.be/2002/09/05/a-tetrinet-spectator-bot-that-generates-game-statistics/</link>
      <pubDate>Thu, 05 Sep 2002 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2002/09/05/a-tetrinet-spectator-bot-that-generates-game-statistics/</guid>
      <description>&lt;p&gt;Get the TetriNet Spectator bot that generates game statistics: &lt;a href=&#34;http://www.timvw.be/wp-content/code/c/statsbot.zip&#34;&gt;statsbot.zip&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>TetriNet server</title>
      <link>https://timvw.be/2002/08/13/tetrinet-server/</link>
      <pubDate>Tue, 13 Aug 2002 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2002/08/13/tetrinet-server/</guid>
      <description>&lt;p&gt;I hacked a TetriNet server together (with some really ugly code in it). Anyway, you can get it at: &lt;a href=&#34;http://www.timvw.be/wp-content/code/java/tserver.zip&#34;&gt;tserver.zip&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Dump a MySQL database into a TetriNet winlist</title>
      <link>https://timvw.be/2002/07/29/dump-a-mysql-database-into-a-tetrinet-winlist/</link>
      <pubDate>Mon, 29 Jul 2002 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2002/07/29/dump-a-mysql-database-into-a-tetrinet-winlist/</guid>
      <description>&lt;p&gt;Code: &lt;a href=&#34;./wp-content/code/c/database2winlist.txt&#34;&gt;c/database2winlist.txt&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Write a TetriNet winlist to a MySQL database</title>
      <link>https://timvw.be/2001/05/05/write-a-tetrinet-winlist-to-a-mysql-database/</link>
      <pubDate>Sat, 05 May 2001 00:00:00 +0000</pubDate>
      <guid>https://timvw.be/2001/05/05/write-a-tetrinet-winlist-to-a-mysql-database/</guid>
      <description>&lt;p&gt;Code: &lt;a href=&#34;./wp-content/code/c/winlist2database.txt&#34;&gt;c/winlist2database.txt&lt;/a&gt;&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
