GitHub Actions for .NET Core NuGet packages
Last weekend I migrated the Giraffe web framework from AppVeyor to GitHub Actions. It proved to be incredibly easy to do so despite me having some very specific requirements on how I wanted the final...
View Article.NET for Beginners
Last night I came across this question on Reddit:I am just starting to learn C# and i am confused about .NET framework & .NET CoreHello, I am just starting to learn c# and i am about to start with...
View ArticleEqual pay for equal work
Remote work is on the rise, the economy is on a decline and businesses are re-structuring themselves around what many consider the new normal. Increasingly more organisations are opening themselves up...
View ArticleUsing .env in .NET
.NET (Core) comes with a lot of bells and whistles. One of them is the sheer amount of managing application secrets and settings. Developers have a variety of options from which they can load...
View ArticleYou don’t need Docker
Note: In this blog post I use the terms Docker and containers interchangeably. I know that Docker is only one of many container technologies and not always the best suited one (e.g. Kubernetes), but...
View Article.NET Basics
So you want to learn .NET but you are confused about the differences between .NET Framework and .NET Core or what the various versions of ASP.NET are or what the relationship is between C# and F#? If...
View ArticleCan we trust Microsoft with Open Source?
Oh boy, what a week of .NET drama again. Not bored yet? Read on, but for this one you’ll need some stamina, because this one is different.Before I start with my actual blog post let me give you a short...
View ArticleFund OSS through package managers
Open source software has become an integral part of our lives. Personally I don’t know a single app, website or other digital product which doesn’t make use of at least one open source project in their...
View ArticleBuilding a secure note sharing service in Go
Welcome to my first Go related article which I am releasing on my blog.In this blog post I’ll be using Go to develop a super small web service which can be used by people or organisations to share...
View ArticleUsing Go generics to pass struct slices for interface slices
Have you ever tried to pass a struct slice into a function which accepts a slice of interfaces? In Go this won't work.Let's have a quick look at an example. Let's assume we have an interface called...
View ArticleHow to make an IStatusCodeHandler portable in NancyFx
I am currently working on several micro services using the NancyFx framework with many projects sharing the same underlying architecture.The IStatusCodeHandler interface is one of the core...
View ArticleDesign, test and document RESTful APIs using RAML in .NET
Building a RESTful API is easy. Building a RESTful API which is easy to consume is more difficult. There are three key elements which make a good API:Intuitive designGood documentationDocumentation...
View ArticleDiagnosing CSS issues on mobile devices with Google Chrome bookmarklets
Yesterday, when I was browsing my blog on my mobile phone I discovered a small CSS issue on one of the pages. One of my recent blog posts had a horizontal scrollbar which shouldn't have been there. A...
View ArticleRunning NancyFx in a Docker container, a beginner's guide to build and run...
The quiet Christmas period is always a good time to explore new technologies and recent trends which have been on my list for a while. This Christmas I spent some time learning the latest ASP.NET...
View ArticleASP.NET 5 like configuration in regular .NET applications
ASP.NET 5 is Microsoft's latest web framework and the new big thing on the .NET landscape. It comes with a whole lot of new features and other changes which makes it very distinctive from previous...
View ArticleUnderstanding ASP.NET Core 1.0 (ASP.NET 5) and why it will replace Classic...
ASP.NET has quite some years on its shoulders now. Fourteen years to be precise. I only started working with ASP.NET in 2008, but even that is already 8 years ago. Since then the framework went through...
View ArticleSHA-256 is not a secure password hashing algorithm
SHA-256 is not a secure password hashing algorithm. SHA-512 neither, regardless of how good it has been salted. Why not? Because both can be computed in the billions per minute with specialised...
View ArticleDon't dispose externally created dependencies
Today I wanted to blog about a common mistake which I often see during code reviews or when browsing open source projects in relation to the IDisposable interface. Heck, even Microsoft got it wrong...
View ArticleCircleCI build history charts and NuGet badges by Buildstats.info
Quick update on Buildstats.info. Two weeks ago I added CircleCI to the list of supported CI systems for the build history chart and last weekend I implemented a new badge for NuGet packages...
View ArticleAutomating CSS and JavaScript minification in ASP.NET MVC 5 with PowerShell
When I started building this blog I kept things very simple in the beginning. First there was nothing but my Hello World blog post and only later when I had more content I added more features over...
View ArticleFiltering the AWS Service Health Dashboard
If you run anything on Amazon Web Services in production then you probably know the AWS Service Health Dashboard very well.Sometimes when you experience a service disruption you might find yourself...
View ArticleAsynchronous F# workflows in NancyFx
I have been playing with F# quite a lot recently and to be honest I started to really like it. Besides the fact that F# is a very powerful language it is a lot of fun too! As a result I began to...
View ArticleWatch US Netflix, Hulu and more from anywhere in the world
If you are reading this then I assume you are one of those unfortunate Netlix, Hulu and Co. users who does not live in the US and is upset that you are treated like a second class citizen by those...
View ArticleCustom error handling and logging in Suave
Some years ago when you wanted to develop a .NET web application it was almost given that it will run on IIS, but today we have a sheer amount of different web server technologies to our availability....
View ArticleJMeter Load Testing from a continuous integration build
In the last two weeks I have been doing a series of load tests and the tool I've been using was Apache JMeter. JMeter is an open source, cross platform load testing tool written in Java. Unlike the...
View ArticleBuildStats.info |> F#
After working on the project on and off for a few months I finally found enough time to finish the migration to F#, Suave and Docker of BuildStats.info.The migration was essentially a complete rewrite...
View ArticleCreating a Slack bot with F# and Suave in less than 5 minutes
Slack has quickly gained a lot of popularity and became one of the leading team communication tools for developers and technology companies. One of the main compelling features was the great amount of...
View ArticleLoad testing a Docker application with JMeter and Amazon EC2
A couple of months ago I blogged about JMeter load testing from a continuous integration build and gave a few tips and tricks on how to get the most out of automated load tests. In this blog post I...
View ArticleBuilding and shipping a .NET Core application with Docker and TravisCI
With the .NET Core ecosystem slowly maturing since the first official release this year I started to increasingly spend more time playing and building software with it.I am a big fan of managed CI...
View ArticleRunning Suave in ASP.NET Core (and on top of Kestrel)
Ho ho ho, happy F# Advent my friends! This is my blog post for the F# Advent Calendar in English 2016. First a quick thanks to Yan Cui who has pointed out this calendar to me last year and a big thanks...
View ArticleError Handling in ASP.NET Core
Almost two years ago I wrote a blog post on demystifying ASP.NET MVC 5 error pages and error logging, which became one of my most popular posts on this blog. At that time of writing the issue was that...
View ArticleThank you Microsoft for being awesome
OK so I have to admit that I can have a pretty big mouth sometimes, which is certainly not a good quality to have. I don't shy away to be (overly) critical if things annoy me:As you can see, about a...
View ArticleFunctional ASP.NET Core
In December 2016 I participated in the F# Advent Calendar where I wrote a blog post on running Suave in ASP.NET Core. As part of that blog post I introduced the Suave.AspNetCore NuGet package which...
View ArticleFunctional ASP.NET Core part 2 - Hello world from Giraffe
This is a follow up blog post on the functional ASP.NET Core article from about two months ago. First of all I'd like to say that this has been the longest period I haven't published anything new to my...
View ArticleGiraffe goes Beta
After 6 months of working on Giraffe, lots of improvements, great community contributions and running several private as well as commercial web applications in production I am really happy to announce...
View ArticleEvolving my open source project from a one man repository to an OSS organisation
Over the last couple of months I have been pretty absent from my every day life, such as keeping up with Twitter, reading and responding to emails, writing blog posts, working on my business and...
View ArticleExtending the Giraffe template with different view engine options
This is going to be a quick but hopefully very useful tutorial on how to create a more complex template for the dotnet new command line tool.If you have ever build a Giraffe web application then you've...
View ArticleAnnouncing Giraffe 1.0.0
I am pleased to announce the release of Giraffe 1.0.0, a functional ASP.NET Core web framework for F# developers. After more than a year of building, improving and testing the foundations of Giraffe it...
View ArticleGiraffe 1.1.0 - More routing handlers, better model binding and brand new...
Last week I announced the release of Giraffe 1.0.0, which (apart from some initial confusion around the transition to TaskBuilder.fs) went mostly smoothly. However, if you have thought that I would be...
View ArticleStop doing security (yourself)
Security has a very special place in software engineering. It is very different than other disciplines, because it is a problem space which cannot be approached with the same mindset as other problem...
View ArticleOpen Source Documentation
Since January 2017, which soon will be two years ago, I've been maintaining an open source project called Giraffe. Giraffe is a functional web framework for F# which allows .NET developers to build...
View ArticleASP.NET Core Firewall
About a month ago I experienced an issue with one of my online services which is running in the Google Cloud and also protected by Cloudflare. I had noticed a spike in traffic which only showed up in...
View ArticleDrawbacks of Stored Procedures
A few weeks ago I had a conversion with someone about the pros and cons of stored procedures. Personally I don't like them and try to avoid stored procedures as much as possible. I know there are some...
View ArticleWhy you should learn F#
If you were thinking of learning a new programming language in 2019 then I would highly recommend to have a close look at F#. No matter if you are already a functional developer from a different...
View ArticleTips and tricks for ASP.NET Core applications
This is a small collection of some tips and tricks which I keep repeating myself in every ASP.NET Core application. There's nothing ground breaking in this list, but some general advice and minor...
View ArticleAutomate frequently used CLI commands
Welcome back to my blog! I haven’t written anything here for more than a year now, which is something I very much regret, but I mostly blame real life for it! Luckily due to the COVID-19 pandemic...
View ArticleThe type system is a programmer's best friend
I am tired of primitive obsession and the excessive use of primitive types to model a domain.A string value is not a great type to convey a user's email address or their country of origin. These values...
View ArticleHow fast is really ASP.NET Core?
In recent years the .NET Team has been heavily advertising ASP.NET Core as one of the fastest web frameworks on the market. The source of those claims has always been the TechEmpower Framework...
View ArticleCreating a pretty console logger using Go's slog package
I had the privilege of attending GopherCon UK last week, and among the many captivating talks, one that stood out to me was "Structured Logging for the Standard Library" presented by Jonathan...
View Article.NET Blazor
.NET Blazor has been touted as a revolutionary framework that allows .NET developers to build interactive web applications using C# instead of JavaScript. It's mainly aimed at ASP.NET Core developers...
View Article