Coloring white Images with CSS filter

Recently I had to change the color of a white image. Since this image was rendered by a library, which did not allow replacing it by another one, it had to be done with CSS. Although there is a relatively simple solution to it, it proved to be quite a challenge to come up with that.

Read more

Setting up a Reverse-Proxy with Nginx and docker-compose

Nginx is a great piece of software that allows you to easily wrap your application inside a reverse-proxy, which can then handle server-related aspects, like SSL and caching, completely transparent to the application behind it.

Read more

Hosting Asp.Net Core Applications on Windows Server Core

Recently, I’ve found myself in the position of having to host an application on Windows Server. Having never managed a Windows Server before, I struggled to find relevant information, especially since most of it is written for a Windows Server with installed UI, and the default image on Azure is a Core image, without UI. This is mostly documentation for myself, but maybe you find it helpful too.

Read more

Using Scripting to quickly execute repetitive Tasks

Sometimes I have to do a repetitive task for a project, that would take hours if done manually. Shell commands are normally the way to go, but I’ve always had a hard time learning them, and after I did, I forgot them quickly, because I need them very infrequently. So I found another solution.

Read more

The Bliss of Automating my Server Setup

I have a VPS, on which a few of my side-projects are hosted. Recently, I had to set it up a few times, because I made it unusable (please don’t ask me how, it was really stupid).

Every time this happened, it took me hours to set it up again. Granted, I don’t know much about maintaining a server, and you can probably do it a lot faster than me, but you can never be faster than a script. So, after the second time, I finally decided it is time to automate that process.

Read more

Introduction to Crypto Investing

Cryptocurrencies have been rapidly rising in value, dwarfing returns from any other investment category. Bitcoin rose from $434 in the beginning of 2016 to almost $5000 in September 2017. That is over 1100% in less than 2 years!
And still, most people don’t know how to start investing in the crypto space. This article will provide an overview for getting started, and explain some of the risks involved.

Read more

Building a Color Scheme Generator

After reading Practical Color Theory for People Who Code, I immediately thought that the process of generating the color scheme can be automated. This blogpost describes how it is done and how you can use it. The code can be found on Github.

Read more

Learning Gulp for Website Minification

Recently I developed a static website for a company, and as it gets closer to the release date, I try to do everything to satisfy Google PageSpeed Insights.
At first, as a C# developer, I thought about developing a small console application, which takes a folder and minifies all contents inside it. Then I remembered that there are task runners that do exactly that kind of thing. So this is a short summary of what I learned.

Read more

Immediate Font Fallback Rendering for Firefox and Webkit Browsers

Using custom fonts is easy, having excellent usability with them, sadly, is not. In this articles I’ll explain the issues I encountered, and analyze the different ways to resolve them.

Read more

Cached IEnumerable Implementation

Recently I had a little discussion with a colleague about IEnumerable and that it evaluates its entries each time it is enumerated. This peaked my interest, and I decided to implement a cached version.
There are many other implementations out there, some of them very similar to mine. It still seemed like a fun little project, so here it goes.

Read more

Implementing Soft-Delete in pure MySQL

Soft-delete, setting a deleted flag instead of actually deleting, is a great way to ensure the ability to recover accidentally deleted data by users for many applications.
Some technologies, like Ruby on Rails, have soft-delete baked in, so the developer doesn’t have to do anything to use it.
Unfortunately, others don’t have that, and for some it is quite difficult to integrate. I’ve tried it with Entity Framework 6. It worked, but wasn’t nearly as clean as I hoped it would be.
So for the cases where its too much work to add soft-delete to the application, I’ve developed a MySQL script that adds it to the database, without having to change the application at all.

Read more

Keeping Canvas (or any other Element) from rendering outside its Bounds in UWP

Canvas is a panel that enables absolute layouting. It therefore renders its children, per default, even if they are outside of its dimensions, as indicated by the documentation:

The children of a Canvas (if any) are still visible even if the Canvas has any of these conditions:
● Height or Width property of the Canvas is 0.

Sometimes this is not the desired behavior. For example, if the canvas is not the only UI element in your application, it would be pretty annoying if its children would overlap the other (more important) elements (like menus, data display and so on).

Read more

Creating custom Shapes for UWP Apps

In WPF, creating custom shapes was as easy as extending Shape and overriding DefiningGeometry. In UWP, it isn’t that easy.

In UWP, Shape does not have a DefiningGeometry property. But instead, the Path class is not sealed. This means it is possible to inherit from Path. So this is what we’ll do.

Read more

My Journey to developing and publishing my first Nuget Package

[Since the release of this blogpost, Microsoft changed a lot in .Net Core, which makes it no longer relevant]

A few days ago I had an idea about a project, Pather.CSharp. Since libraries in .NET are managed using Nuget, I wanted to publish Pather.CSharp as Nuget Package.

Microsoft revealed a new form of application development with UWP (Universal Windows Platform) and Asp.Net 5, which focuses a lot more on Nuget Packages as dependency.

Read more

The Fallacies using Prism for WPF the first Time

Yesterday I started developing a new WPF application using Prism. That’s when I hit a problem with navigation and RegionManager that was very difficult to debug.

The Problem:

Navigating a Region to another control just did not work. The NavigatonResults Result property was false, but no exception was thrown.

Read more

Ripple Effect in WPF

This article was sparked by a question on StackOverflow. At the beginning I thought that would be a trivial problem. Turns out it was a lot more difficult than expected.

Read more