So with .NET 6 we have received loudly announced minimal apis. Well... I would name them normal APIs (I am looking 👀 on express.js ...) but let's put the sarcasm aside and lets see how it could improve API development for F# developers.
Keep Reading →
Yet another IT blog?
There are already a lot of them so what makes this one special? Absolutely nothing! And that is just fine. I believe that every person has something important to say. I speak on my behalf on this blog, feel free to quote, love or hate. I write about programming, architecture, infrastructure and organizational things.
Who are you?
My name is Marcin. I have been working in the IT industry for 9+ years now. It's been a quite fun and hard ride. in 2020 I've decided to start sharing with others - there were too many things that I have been keeping for myself, too much worries, too much silent disagreements to on what's going on in the IT nowadays. Time to wake up! Check out "about" tab if you want to know a bit more about me.
Latest stories
In June Microsoft announced that .NET SDK is stable. For a long time, Selenium was (as far as I know) the only feature-rich web testing framework in .NET (except paid ones like Ranorex or Telerik Test Studio). I never liked the waits I had to do, which often caused the tests to be fragile. Playwright's puppeteer-like SDKs promise automatic wait and support for Python/.Net/Node.js/Java. Let's try this stuff in F#!
Keep Reading →
Everyone (including me) when applying DDD at some points fights with validation and invariants. Probably You tried different approaches already - validating within the domain, duplicating the validation logic for both: application validation and business rules enforcement, or You tried something else. In this post, we will dig out the old (but still living) "always valid" camp, and by using discriminated unions we will model both - always valid entities and aggregate invariants as types. Examples in F#.
Keep Reading →
If you are implementing more than one service and you need to establish asynchronous communication in-between, or if you need bullet-proof asynchronous communication with 3rd party services the outbox pattern might be a handy tool. Let's look at how can we implement one in the beloved F#!
Keep Reading →
One question you might ask yourself before starting a bigger project in F# How to inject dependencies? Let me show you how we used partial application to achieve loosely coupled testable components that can be tested in isolation or together in a broader perspective (acceptance tests). I will use Giraffe as the host, but the technique is free from any framework dependencies.
Keep Reading →
So the company is paying you and other people in the team money for accomplishing certain things... for building products, delivering features, solving problems, doing maintenance. You work hard, so do your peers. What about making the sprint-backlog even more transparent and automate a shout-out of what had been done in the sprint?
Keep Reading →
Just stop 🤬 There is a better way of doing it! Fire one command and spare few seconds multiplied by a hundred times. Welcome to my shortest post on this blog.
Keep Reading →
I am addicted to Spotify, I have Linux, I L💖ve F# so I decided to give it a try to control Spotify on Linux using Terminal. Join the ride! We will add a nice feature that will allow us to download lyrics of the current song and we will meet D-bus and Argu - F# library which makes building CLI apps fun! I will also show you how to publish and use the app in Linux.
Keep Reading →
How do you approach integration with 3rd party services? How do you learn new API which you have to use? Do you write a console app, run and stop it over and over again? If you write a service that will be used by others do you write documentation? Stop wasting time! Learning tests will help you speed up.
Keep Reading →
This is the next part of the C# and F# integration journey. This time we will look into Dapper functional wrapper and option vs nullable type mismatch. Together with the previous post, we will close the loop of C# and F# coexistence.
Keep Reading →
F# is a nice functional alternative in .NET. I have convinced my teammates to use F# in our project at my work in a small new accounting bounded context that would be hosted by .NET Core C# host and Autofac based composition root. We already have a small F# based azure-function which has been a warm-welcomed area to extend/introduce changes so why not take F# to the next level? If you are looking for some hints how to deal with F# and C# in one solution this is a must-read.
Keep Reading →
Radar is a system that uses radio waves to find the position and movement of objects, for example, planes and ships, when they cannot be seen. Analogously Technology radar "uses" engineers and built systems to find the position and movement of languages, platforms, tools, and techniques in trends. In this post I will describe the radar as an actual need in the company and prove its value from a lean perspective.
Keep Reading →
There's a legend around F# that the language is good for science, academic stuff (yes it is good for this as well but not only). Most people think that functional languages are complicated and thus will make them not productive. Nonsense! Let me introduce you to some cool F# features that can make you more productive. You can put away difficult things into the future, meanwhile use F# to write correct and concise code and create bullet-proof cool apps! Let me start with F# justification as a modern language then some functional programming evangelism, after that I will give you some F# selling points.
Keep Reading →
We are just people - continuous work in focus for 8 hours is not something we are capable of. We have to make short breaks, socialize, drink coffee. Don not worry you are not causing any wastes or... or do you? If you do, it is not because of a short break or coffee. I will tell you who should be blamed for the wase in your company - its Tim Woods! (The article is inspired by the Lean production which is also known as Toyota Production System).
Keep Reading →
Once I came up with a team-building workshop which you can carry out with your teammates. It focuses on skills being developed during the project duration. It may help with early burnout detection, silent disagreement or simply it may help you with moving forward with some nice techy idea. After the workshop I've acquired quick feedback with 2 x 4/5 and 2 x 5/5. It should take about 30-40 minutes (depending on few factors).
Keep Reading →
Running migrations using DbUp, FluentMigrator, Ef Migrations or any other tool is really easy to start with. With some tips you may successfully survive a long-running project with no stress or sad expierences.
Keep Reading →
Let me show you how you can combine PostgreSQL, Docker and DbUp to create pleasant and quick database development environment without installing anything (besides docker of course).
Keep Reading →