Hello! I am Sebastiaan Dammann and I blog about programming, system management and personal stuff!
Posts
-
ASP.NET Core 3.0 Endpoint routing naming and link generation
ASP.NET Core 3.0 introduced endpoint routing as a first class citizen. You can easily create endpoints and map them to your own
RequestDelegate
that will process the request. It is however not apparent how you can name your endpoints so you can reference them elsewhere, like in routing and link generation. -
Updated for 2019: Remove the 'Publish' button from the Visual Studio status bar
In Visual Studio 2015 and git is integrated and this includes an button to create a Git repository and/or to publish it to Github. This is nice if you use git. However, when you don’t use git, this button is annoying. Therefore I have earlier developed an extension to hide the button from the Visual Studio status bar.
-
Use Webpack and Hot Module Replacement with System.Web (ASP.NET) projects
Webpack is an tool that is used for module bundling: Compiling multiple javascript modules with their dependencies to one or more executable files. This has worked very well for me in my ASP.NET Core side projects like IFS and Financial App.
-
Hoe je Pulsar horlogeband te verstellen (dutch only)
(This blog post is in Dutch only)
-
How-to: Installing WSL manually on a non-system drive
Windows 10 introduced the excellent Windows Subsystem for Linux also known under the names of WSL, lxss, “Bash on Ubuntu on Windows” and perhaps more names. Traditionally, in the preview, there was only Ubuntu and the name it was called is “Bash on Ubuntu on Windows”. It installed to the
%LOCALAPPDATA%\lxss
folder, which usually resides on your system drive. When finally the Windows Store was introduced to allow downloading more Linux distributions, new Linux on Windows installations were done in%LOCALAPPDATA%\[package name]\rootfs
. -
GDPR / AVG compliance
Next week, on 25 May 2018, the new privacy law of the European Union will be enforced. Although there has been an transition period of two years for everyone to get updated and ready, it appears that until this month, everyone was asleep and didn’t care much for this legislation.
-
Analyzing application architecture with NDepend
As an application ages building up some technical debt is inevitable. Some technical debt cannot be measured (because it is subjective, like “that table structure is hard to query”). Other technical debt like method length or cyclomatic complexity can be measured, and this is where NDepend comes in. In this article we will explore NDepend on one of my open-source projects, financial-app.
-
Introducing the FiddlerFox add-on
Today I like to announce my first Firefox WebExtension add-on: FiddlerFox. It allows better integration of Firefox with the Fiddler web debugger.
-
How-to: Set-up a site-to-site IPSec connection with Ubiquiti Edgerouter and NAT translation/masking
To connect business networks to each other a site-to-site IPSec is often employed. An IPSec connection is widely supported by corporate routing appliances like Cisco ASA, Sonicwall, Kerio and others. In some cases the remote and local subnet may overlap. In that case you need to use NAT translation to virtual IP addresses. This guide will show you how you can set-up an IPSec connection using NAT translation with a Ubiquiti Edgerouter to a Cisco ASA.
-
How-to: Set-up a site-to-site IPSec connection from a Ubiquiti EdgeRouter behind NAT to Cisco ASA
To connect business networks to each other a site-to-site IPSec is often employed. An IPSec connection is widely supported by corporate routing appliances like Cisco ASA, Sonicwall, Kerio and others. It happens Ubiquiti Edgerouters also support IPSec. In our case we needed to implement a site-to-site IPSec connection, with our Ubiquiti being inside a NAT network. This guide will show you how you can implement an IPSec site-to-site connection with your Edgerouter being NATted.
-
How-to: Implement a daily Edgerouter backup
Configuration of a router is often a task which costs a fair amount of time. Therefore it is often useful to keep several backups of the entire configuration partition. The script below takes a backup of the
/config
partition of an Ubiquiti Edgerouter and uploads it to a FTP server. -
How-to: Implement RADIUS authentication on EdgeOS
You can secure your OpenVPN implementation by linking it to your Windows domain. In that way you avoid the hassle of managing multiple certificates while still securing the connection by using a secure login. You can also manage the users right from Active Directory, granting and revoking access as you see fit. This authentication solution can be implemented using RADIUS.
-
How-to: Run an ASP.NET Core application on Windows 10 IoT
So I recently bought a second Raspberry PI to start experimenting with Windows 10 IoT. As it happens, .NET Core is not actually supported nor endorsed anywhere. But it is actually possible to run an ASP.NET Core application on Windows IoT Core. This article will tell you how!
-
Resolve ClassCastException in Omnifaces related to Xalon (or: How to resolve maven dependency issues)
While developing an Java EE application on JBoss 6.1.0 EAP which uses Omnifaces I ran into an issue that caused some pages not to be rendered. A
NoClassDefFoundError
occurred but the actual class did exist! The most odd issue was that this happened after upgrading an unrelated dependency in the maven pom file. -
Defragmenting identity values in T-SQL / SQL Server
In a development SQL database I’m using I had the problem that my primary key columns were overflowing. The primary key columns are integer generated by a SQL
IDENTITY
. Due to various development activities like cloning records I was running out of space for my primary keys. There were however a lot of holes between the primary keys. The script below helps you remove the gaps between identity values and updates all foreign keys accordingly. -
IKEA SLADDA: De IKEA fiets review (Dutch only)
For my English readers: This post is in Dutch only. Sorry!
-
Ordered NUnit testing with the NUnitTestOrdering library
When it comes to integration tests, especially when developing web automation tests, test ordering can be useful. In larger web applications where you might want to test out a workflow, you need to have tests execute in a certain order. MSTest has built-in support for ordered testing, but that implementation it’s own disadvantages. So, what about ordered testing in NUnit? NUnit has very limited support for ordered testing, so I decided to build a library to allow test ordering in NUnit. I gladly announce the NUnitTestOrdering library: Allowing you to order NUnit tests similar to MSTest.
-
Using ASP.NET Custom Errors with ASP.NET MVC Controllers or HTTP handlers
ASP.NET has built-in error handling that allows certain HTTP errors to be redirected to other pages in an web application. You can for example show friendly messages when an HTTP 500 error occurs, or more likely, when an HTTP 400 (Bad Request, caused by ASP.NET request validation) occurs. This can cause issues however if you’re using
ResponseRewrite
and want to rewrite the response to a customIHttpHandler
or MVC controller action. -
Ordered testing with XUnit, NUnit and MSTest part 6: NUnit implementation revised part 2
We have previously implemented some ordered testing with NUnit. However, it required forking NUnit to make the ordering possible.. This made the implementation pretty useless, since you’Il be maintaining your own fork forever. In this blog post we’re going to find a better solution and implement it. The code of this blog post can be found on GitHub. Disclaimer: This code will have rough edges, and may not work for you, kill you cat or blow up in your face.
-
Run GUI programs on Bash on Ubuntu on Windows
Since the Anniversary update of Windows 10 it is possible to run an emulated version of Ubuntu on Windows. The access point to Ubuntu is Bash. You can read more about it on MSDN. But did you know it is also possible to run GUI programs, like Firefox? This article will give short instructions how to run GUI programs.
-
Remove the 'Publish' button from the Visual Studio status bar
In Visual Studio 2015 git is integrated and this includes an button to create a Git repository and/or to publish it to Github. This is nice if you use git. However, when you don’t use git, this button is annoying. Therefore I have developed an extension to hide the button from the Visual Studio status bar.
-
Hyper-V VMs disappeared after reboot and unknown entries showing 'saved-critical'
Among my development tasks, I have also the responsibility to manage the development systems my collegues are working with. After installing regular security updates on our Hyper-V Server 2008 R2 and a subsequent reboot I found myself having a corrupt Hyper-V instance.
-
Ordered testing with XUnit, NUnit and MSTest part 5: NUnit implementation revised
We have previously implemented some basic ordered testing with NUnit. However, it had some severe limitations. The biggest limitation was that test fixture ordering across namespaces didn’t work. This made the implementation pretty useless. In this blog post we’re going to find a solution and implement it. The code of this blog post can be found on GitHub. Disclaimer: This code will have rough edges, and may not work for you, kill you cat or blow up in your face.
-
Typescript: JSON to Knockout mapping using decorators
Inspired by this post of Mark Galea about mapping JSON objects to classes I asked myself the question: Would it be possible to use this technique to map JSON objects to Knockout view models? This is even more so useful since the knockout.mapping plugin is not being maintained. Also, any knockout mapping library causes redundancy in your code: You have to specify types and properties twice in a worst-case scenario: Once in the class, once in the mapping code. There is surely a better way.
-
Ordered testing with XUnit, NUnit and MSTest part 4: XUnit
In the previous post we looked at ordered testing in NUnit. Today we are going to implement ordered tests in XUnit. The code for this post can be found on GitHub. Disclaimer: This code will have rough edges, and may not work for you, kill you cat or blow up in your face.
-
Ordered testing with XUnit, NUnit and MSTest part 3: NUnit
In the previous post we looked briefly at ordered testing in MSTest. Today we are going to implement ordered tests in NUnit. The code for this post can be found on GitHub. Disclaimer: This code will have rough edges, and may not work for you, kill you cat or blow up in your face. We will refine the code in a later post.
-
Ordered testing with XUnit, NUnit and MSTest part 2: MSTest
In the previous post we looked briefly at ordered testing. Today we are going to implement ordered tests in MSTest. The code for this post can be found on GitHub.
-
Ordered testing with XUnit, NUnit and MSTest part 1: The setup
In the previous post we have compared three testing frameworks: MSTest, NUnit, and XUnit. In this series, we are going to implement ordered tests in these frameworks. The code for this post can be found on GitHub.
-
Comparing .NET testing frameworks: Unit testing
In this post we are going to compare several well-known testing frameworks which are used in the .NET ecosystem: MSTest 10 (Visual Studio 2015), XUnit 2.1, and NUnit 3.2. We will look at the basic functionality, extensibility, error reporting, style, and documentation. The code for this blog post can be found at Github.
-
Hello Jekyll... Hello blog... Hello world!
So… here it is. My new Jekyll Github based blog. It took a while to set it up properly, but here it is.
-
How-to: API versioning in .NET
This page used to describe how to do versioning in ASP.NET web api. However, in my site migration it was lost unfortunately.
-
How-to: Use a serial connection to your Netgear ReadyNAS
It is possible to connect to the command-line interface of your Netgear ReadyNAS using a serial connection. I have seen a very old blog post on the internet describing how to connect via serial to a Infrant ReadyNAS NV but it wasn’t very clear how to connect to a Netgear ReadyNAS NVX Pioneer Edition, which I have. I guess I’m not the only one who wants to connect to their ReadyNAS, so I’m sharing my knowlegde here :)