Hello! I am Sebastiaan Dammann and I blog about programming, system management and personal stuff!
Posts
-
How-to: The Creality CR-6 BIQU H2 Direct Drive extruder mounting kit
About a week ago I received the BIQU H2 (hydrogen) direct drive extruder. This direct drive extruder is one of the pinnacles of the new BIQU BX 3D printer. BIQU has released their direct drive extruder separately so it can be mounted on other printers. I have a Creality CR-6 and due to the bed leveling system this will take a few extra steps. This article will explain how to mount it to the Creality CR-6 SE or MAX 3D printer.
-
Discussing the Creality CR-6 community firmware on Tripods Garage
Last Sunday, 17 September, I was invited to Tripods Garage to discuss the Creality CR-6 community firmware I’ve been developing for the last few months. Check the video down below.
-
How-to: Compiling the CR-6 Community Firmware (Marlin) with Visual Studio Code and Platform.io
This guide will show you how to compile the CR-6 Community firmware we’ve been working on for the past couple of months. Always wanted to compile your own firmware, with your own acceleration and stepping defaults? This visual guide is for you.
-
BIQU H2 direct drive extruder: first look and initial impressions
BigTreeTech sent me their BIQU H2 direct drive extruder for review. This extruder is very similar to the extruder on their BIQU BX 3D printer. Let’s take an initial look at what this solution from BigTreeTech offers - what they call the “World’s lighest direct extruder”.
-
How-to: Filament change with the CR-6 and community firmware release 5
We’ve been working for quite some time on the community firmware release 5 for the CR-6. In addition to a whole new user interface, we’ve expanded hardware support to all common hardware configurations of the Creality CR-6. This includes the CR-6 with both types of stock mainboards, the BigTreeTech SKR CR6 motherboard with stock Creality TFT or BTT TFT, and support for the Creality CR-6 MAX. More can be read in the release notes. In addition we’ve improved the working of the filament change during printing functionality. This article will show you how it can be used in the Creality CR-6 community firmware release 5.
-
Anet ET4 Pro review
The 3D printer manufacturer Anet asked me to review their Anet ET4 Pro 3D printer, a 3D printer with the build volume of 220x220x250mm, TMC2208 silent stepper drivers and built-in automatic bed leveling. I’ve had the printer for about a month now, and since my Creality CR-6 SE unfortunately also has a defective motherboard, I’ve had a lot of opportunity to print and use this printer. At this moment, Anet asks just €176 for this 3D printer, delivered from an European warehous, so no taxes. Is this printer a good deal for this price? What can Anet do better? And what is awesome? Read on.
-
How-to: BigTreeTech SKR CR-6 and BTT Touch screen installation on the Creality CR-6 SE
BigTreeTech sent me their motherboard replacement for the Creality CR-6 SE together with their BTT touch screen featured earlier in the BIQU B1 and available as an upgrade for many other 3D printers. The Creality CR-6 SE features a motherboard that has not been without its issues - and also my motherboard has failed within 30 days after using my unit.
-
Stringing, blobs and underextrusion: When in doubt, change your filament
After my work on the Creality CR-6 community firmware and BIQU B1 review I got contacted by the 3D printer manufacturer Anet 3D to test and review their Anet ET4 Pro 3D printer. I received the printer and two rolls of PLA filament. I had quite some trouble getting good prints, and it turns out it was all due to the filament! Read on!
-
How to: Flash Marlin on Anet ET series printers
After my BIQU B1 review and work on the Creality CR-6 community firmware I got contacted by the 3D printer manufacturer Anet 3D to test and review their Anet ET4 Pro 3D printer. The Anet ET series run on Anet’s propietary firmware, but it is actually possible to flash them to the well-known printer firmware Marlin! However, it is a little bit more involved than just putting a bin file on the SD card. This article will show you how to flash Marlin to your Anet ET printer.
-
Creality CR-6 SE: Start a print without drooping filament on the build plate while homing
The auto-bed leveling feature of the Creality CR-6 SE uses a strain gauge connected to the hot-end for leveling. This is also used for homing the hotbed - in combination with the optical Z-endstop the nozzle strain gauge status is probed to determine the zero position for the Z axis. In the default Cura start code, the nozzle is fully heated up to printing temperature which causes some filament to droop out when homing, leaving residue on the bed. Read below to find a solution for this.
-
Creality CR-6 SE and BIQU B1 comparison
In this short article I compare the BIQU B1 and the Creality CR-6. The BIQU B1 I received as a review unit, the Creality CR-6 I got as a reward for backing the Creality CR-6 SE Kickstarter, which did not go too well. Let’s look at various aspects of the printers, like the looks, the technical part, the software and print quality.
-
BIQU B1: The review
End of September I’ve received the BIQU B1 from BIGTREETECH for review purposes. Now almost a month later, what are my thoughts? Is this printer worth the €219 BTT asks for it? What is awesome? What could be improved?
-
I fixed my graphics card by using oven reflow soldering
On this Sunday I just want to share the story of my broken graphics card and how I fixed it for now (because you never know how long it will last). I already have a Nvidia GTX3080 on order so it just has to work long enough until I receive my order.
-
BIQU B1: Print finish notification
A quick blog post because I wanted to have a audible notification when any prints on my BIQU B1 finished.
-
BIQU B1: Unboxing and assembly
Finally I received the BIQU B1 from BIGTREETECH. It was stuck in Dutch customs for almost a month - also partially blaming Fedex for this. But, it is finally here! Let’s unbox and assemble this printer!
-
Resolve Firefox SSL connection errors
A quick blog post because I ran into the issue of Firefox not connecting to certain HTTPS sites, and I could not find a solution. Well, the only offered solution was “clear your profile” but I don’t want to do that. It takes a lot of effort to get back up running, even with Firefox sync.
-
3D printers incoming - Creality CR-6 SE and BIQU B1!
Those who know me a bit know that I love to play with Arduinos and I like make hardware alive by programming. I actually made a “kids do box” for my three kids. It was made of wood, and I’m not very experienced with wood working - so this box is a bit rough. For more advanced designs I don’t have the tools and skills to make it a reality. So, after seeing the Creality CR-6 SE review video on Tweakers.net and many more favorable reviews I decided to take the plunge and dive into the world of 3d printing!
-
Temporary overriding a PackageReference bin path
.NET projects offer
<PackageReference>
items which are used for including NuGet packages in your project. However, the<PackageReference>
is quite black-box at first sight, and does not allow overriding the binary path in case you’d like to temporary use locally built binary. You may need it if public symbols are not available. -
PokerTime: a planning poker app built in ASP.NET Core and Blazor
By now the new corona virus, or SARS-CoV2, has spread around the world like a pandemic. Sadly, many people in the Netherlands are infected as well. My employer has asked everyone who can work from home, to do so. As for myself, I also had a bit of a cough so I didn’t mind staying indoors. With not much to do and a new sprint starting on monday, I went on to creating a planning poker application. Introducing: PokerTime, a realtime collaborative planning poker app built in ASP.NET Core and Blazor.
-
Return: a retrospective app built in ASP.NET Core and Blazor
In .NET Core 3.0 Microsoft introduced a new framework to compete with existing web frameworks like Angular and React. I decided to put it to the test and build a retrospective app with it, October of this year. Introducing: Return, a retrospective app built in ASP.NET Core and Blazor.
-
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 :)