The DotFest conference, part of HardFest conferences, is going to happen 16-17 October online (which is little bit sad, because I’d like to visit Novosibirsk, from where the conference will be streamed) and I’ll be talking about Using Roslyn to improve your codebase. Basically taking advantage of Roslyn’s open design where you can use various pieces of the whole compiler platform and create your own tools with the full power of “compiler” i.e. sematic analysis.
I’ll be talking about Most Common Mistakes in Using Tasks and in Asynchronous Code as part of Svitla Smart Talk event. It will be streamed 22 September, 19:00 (Kyiv time/UTC+3) and it’s free. There’s a generous 30 minute window for Q&A at the end and I’ll try to asnwer as much questions as possible. You can register here. Hope to see you there.
I’m so looking forward to this year’s .NET Developer Days. I think it’s my favorite conference of the year. The current state of the world is not best for conferences, but I hope the #netdd is going to happen at least as planned now. And although the conference is now also online, if the situation permits, I’ll try to be there in-person.
Although I usually try to avoid IaaS services as much as possible, for this side project I needed to expose Kestrel webserver directly and hence the obvious choice for hosting web app – the App Service – wasn’t an option. So I went for a VM. And given it’s a side project, I also wanted to run it cheaply. And why not to try to go all out with B1ls VM using Linux.
Zhruba poslední rok v mé hlavě krystalizoval nápad. Nápad vznikl na dvou pilířích. První je opakující se potřeba firem, kterou jsem potkával na různých konzultacích a školeních, na něco v podobě out-of-company (nebo možná out-of-box) review, konzultace, nápady nebo prostě jen nějaká forma možnost si s někým promluvit a ujasnit si problém nebo řešení. Druhý pilíř je kontinuální, po částech dávkované, vzdělávání a udržování teamu up-to-date.
Na letošním SQL Server Bootcampu, který se koná online, se budete moci dozvědět něco o databázových enginech Firebird a Microsoft SQL Serveru v přednášce “Porovnání Firebird a Microsoft SQL Serveru”, kterou jsem připravil společně Vladimírem Mužným.
I one of APIs I was working a while back I needed to return an empty collection. It was not a performance critical code, yet I decided what would be the best way to do it. Exploring and learning.
I was reading Stephen Cleary’s A New Pattern for Exception Logging blogpost and the
False methods caught my eye and I wanted to write them as “oneliners”.
I wanted to know how is the top-level statements feature in C# 9 handled and what’s actually produced. Although I originally planned to do just a quick test and the look at the IL, I kept testing the feature more and more.
Almost exactly a year ago I was sitting in a restaurant after Update Days: Corestart 3.0 conference with my ↹ over ␣ ␣ ␣ shirt facing Olia Gavrysh, Program Manager at .NET team in Microsoft. And she mentioned how she liked the shirt (and that Immo Landwerth, another Program Manager in .NET team would like it too (maybe that was a sarcasm)) and that I should make the shirt available for buying.
Almost five years ago I wrote post Removing explicit default access modifiers (Roslyn analyzer and codefix) and it was a great exercise and I still prefer to have code without all the
private, etc. noise. But also nowadays Visual Studio supports all sorts of code style rules via EditorConfig file. Can I teach Visual Studio to actually suggest removing explicit default access modifiers?
Tentokrát tu mám jednu pozvánku na akci, kterou si můžete trochu netradičně naladit na svých přijímačích ráno a udělat si společně s mou maličkostí informacemi nabitý start dne ve vašem homeofficu. Jedná je o akci “Raňajky s GOPASom: Optimalizácia v .NET (jednoducho a isto)” tento čtvrtek od 9:00.
I don’t know whether this has been in the portal “forever” and I never noticed or if it’s a new thing. Anyway, it’s a nice feature and I’m enjoying it, so I might as well share that with you.
Online akce teď na WUGu jedou a vypadá to, že se nebude polevovat. Takže, aby data tekla a linky se žhavily, připravte routery 2.6.2020 od 17:30 na WUG. Povíme si něco o tom co je Azure Front Door a tak okolo.
Today was a crazy – rollercoaster like – day. Let me tell you all about it even though it’s about 7 o’clock in the evening now and I’m very tired. I feel like this clown on my daughter’s desk.
Starting tomorrow, for two days, the Cloud Developer Days is going to be held online. And it’s free. I was lucky to have two sessions selected and I hope to meet you on chat.
I miss good old email. You know the tool that anybody can reach you at, you can use any tool you want and basically can do anything with it yourself.
Let me give you bit of “messaging” history from my own world and I’ll circle back to email at the end.
Vypadá to, že místní svět si na remote spolupráci zvyká a přizpůsobují se i konference a jiné akce. Nezahálí ani KROS Dev Meetup a v jeho třetí edici tam povím něco o možnostech zlepšování kódu pomocí Roslynu. Takže si nezapomeňte přidat do kalendáře 19.5 v 18:00. Kromě mě, bude jestě druhá přednáška na téma “Automatické End-to-End testy”.
Firebird 3 added support for transaction ID to go over, originally, 231 and later 232, all the way up to the 248. Although a great improvement it might become a problem if the client library can’t properly handle that in a few places where these numbers are surfaced.
Situace zrovna konferencím nepřeje, ale každoroční TechEd bude a bude online, a víceméně už za týden. Připravil jsem dvě přednášky (jednu společně s Vladimírem Mužným).
FbNetExternalEngine version 4.5 is released. This version contains improvements around Management procedures.
Když už teď IT, webkamerky a mikrofony drží pro většinu lidí soustruhy v chodu, tak proč nezkusit něco online i v rámci WUGu… V úterý 21.4.2020 od 18:00 si zkusíme povědět něco o relativně novém datovém typu
FbNetExternalEngine version 4.1 is released. Although it might look odd having another release so close after the previous, it’s not a bug-fix release. In fact when I released 4.0 I knew 4.1 is probably going to happen soon after. The reason is, I had some performance optimizations prepared, but didn’t had enough numbers to safely put into production. Now I have.
I’m now going through piece of SQL code that contains a lot of stored procedures from over the years and lately also functions (in last year the migration to Firebird 3 really began) and looking into the code to identify functions and procedures to start the rewriting with using FbNetExternalEngine. I’m at the beginning, but I have some interesting piece I’d like to show.
FbNetExternalEngine version 4.0 is finally here. This version contains one significant feature and that’s migration to .NET Core.
For an estimation and planned move of some resources to Azure, I had to do comparison of various VMs and disks. It’s not meant to be exhaustive with all possibilities. Just some numbers one can compare.
Some time back I wrote about Head- and Tail-like methods in C# (and F# and Python and Haskell). For some strange reasons I came across the
Sum method I wrote there and I thought maybe I can rewrite it with switch expression now available in C# and have a nicer looking code. I mean I’m a big fan of succinct (yet still readable) code. But I had no idea what a journey it will be.
You might be wondering: “Am I going to be charged when somebody invokes my Azure Function but with wrong or missing key?". Well, some of the attendees on my currently running Azure course had the same question. And I thought it might be worth sharing the answer publicly.
Každý potřebuje občas měřit rychlost kódu, že jo? Někdy pro porovnání dvou různých verzí, někdy v rámci optimalizací. Ale jak to udělat správně. A co to vlastně znamená “správně”? Jestli vás toto zajímá, přijďte 26.2.2020 na WUG.
I want quick’n’dirty HTTP GET endpoint that sends SMS via Twilio for testing – couldn’t see the forest for the trees
It was a nice workweek evening and for testing I needed simple HTTP GET endpoint that would send SMS via Twilio for testing of really weird integration in my “home automation”. As fast and as easy as possible. Sounds simple, right? Sadly, my brain being fogged by all the cloud goodness couldn’t see the forest for the trees.
Primary source of water in my house is a water well. That means I have a pump down there and a pressure tank in the house. And I like to keep an eye on both of these. With a little bit of ingenuity and the Fibaro Wall Plug I have a simple DIY solution.
New version 18.104.22.168 of ADO.NET provider for Firebird is ready for download. This release brings support for Entity Framework Core 3.1 (3.1.1 to be precise), Entity Framework 6.4 and some small bug fixes.
MS SQL has an
ISDATE function that “returns 1 if the expression is a valid date, time, or datetime value; otherwise, 0”. Although I never used it or had a scenario for it, I was porting some code from MS SQL to Firebird and this function was used, hence I had to create it.
WUG: Entity Framework vs. SQL Server – co jste mohli udělat a neudělali; a co jste dělat neměli a přesto udělali (Brno)
Společně s Vladimírem Mužným si už zítra střihneme náš duet s názvem “Entity Framework vs. SQL Server – co jste mohli udělat a neudělali; a co jste dělat neměli a přesto udělali” na WUGu v Brně. A protože je to duet, bude to dvojnásobné množství informací, tak neseďte doma a přijďte.
Have you ever thought about the most basic structure of an application? The main method and its placement in
Have you ever looked how anonymous classes are implemented? If you did, you know it’s a generated generic class. And if you didn’t, you know now. Either way, you can find more details below. But also building on top of previous post about generic parameters limit in generic classes, where’s the limit here? It surely cannot be higher.
After a small pause in every-year Firebird conferences, filled with few “seminars”, the Firebird Conference is back. This year in Berlin, Germany.
Pretty stupid question, right? Because if it’s more than, say, 20 or 100, it’s enough. But still. Where is the limit?
FbNetExternalEngine version 3.0 is another step towards more useful .NET execution environment inside Firebird. Version 3.0 contains two significant pieces. The first, new, is ability to execute SQL statements inside the same context (aka transaction) as the currently executing code. The other is performance; there’s always room for performance improvements.
“Every” week I discover something new (and I’m not afraid to share it). Today isn’t any different. Apparently, C# compiler is fine with code throwing
null literal. Yes, it looks weird, but if you think about it, it makes sense. Let me show you.
Už se jen dvakrát vyspíme a bude tu další ročník WUG Days (14.-15.9.).
Hlasováním a odborným výběrem byla vybrána 4 😮 moje témata.
New version 22.214.171.124 of ADO.NET provider for Firebird is ready for download. This a small bug-fix release related to wire encryption on Linux.
Last week I was explaining explicit lazy loading on Entity Framework Core and quite understandably the question came about shortening/encapsulating the code, because you might need to use it a lot in some cases. It’s possible and luckily the method can also benefit from overload resolution in C# to handle reference and collection navigation properties transparently.
New version 126.96.36.199 of ADO.NET provider for Firebird is ready for download. The main focus of this release is performance.
If you’re not yet registed for this year’s .NET Developer Days, where I’ll be speaking, you’re going to regret it. Here are (my) 3 reasons.
New version 188.8.131.52 of ADO.NET provider for Firebird is ready for download. The main focus of this release is wire encryption.
In 2007 then Principal Software Architect on Data Programmability team Mike Pizzo wrote in a “random” forum reply about Entity Framework’s
DefiningQuery being the “ultimate escape hatch”. This was later mentioned in Julia Lerman’s famous book Programming Entity Framework. Just to make sure you understand this archeology (and yes, I spent quite some time digging the reply back – kudos to MSDN forum people keeping it still running), Entity Framework (the first version) was released in 2008.
Last week on Friday I was working on some code, I don’t even remember what it was, and there was excessive usage of
this. And my personal pet peeve is writing most readable code in most succinct way possible. For sure
this hurts this (no pun intended). The following class is a result of that Friday’s frustration.
New version 184.108.40.206 of ADO.NET provider for Firebird is ready for download. This release improves the Entity Framework Core support and Firebird Embedded support.
Lately I’ve been doing a lot of debugging often in code that needs to be executed certain way, from certain place and sometimes is also modified post-build a little. And sometimes more stuff, which I’ll not bother you with. And this makes debugging a tiny bit more difficult.
It has been few exciting weeks and days lately and today I’m happy to introduce you to FbNetExternalEngine version 2.0. This version adds support for functions and also improves performance (on top of previous improvements).
Today I’m releasing first small update to the FbNetExternalEngine. The focus is just on performance. No new features were added.
V .NETu se dějou v posledních měsích velké změny. Trochu toho zmatku si srovnáme na WUGu v Košicích 18.6.2019 of 17:00. Tak neváhejte a doražte. Beztak bude pršet a Tatry jsou daleko. 😉
finally block has a little unknown feature, that frankly isn’t even remotely needed for regular day-to-day development, but you already know content on this blog is usually little geeky.
First thing first, I know there’s an
Enum.HasFlag method, yet I’m not interested in it (or optimizations around it). What I like to know is whether one of these two ways –
(EnumValue & mask) != 0 and
(EnumValue & mask) == mask – to check for a (single value) flag in an enum is better.
Few days back I learned geeky little piece about JIT. This is exactly the type of knowledge you don’t have to use, maybe ever, yet it’s crucial the JIT handles it (so you don’t have to), because every smart instruction is performance gained. Literally, every instruction or every CPU cycle counts.
.NET Core 3.0 se blíží a s ním i další várka změn a novinek. A protože jde o další major verzi, není toho málo. Tomáš Herceg a jeho team připravili konferenci Update Days: Corestart 3.0, která se koná 6. – 7. června 2019.
For no particular reason and with no particular goal I decided to see how “fast” some selected services, with the ability to serve a static file, on Azure are. I was interested in the time to serve the file and requests per second. The services I selected are AppService in B1 and S1 plan, Blob Storage GPv2 and CDN in Standard plan from Verizon and Microsoft.
As I was writing previous post I got some idea to “nest”
awaits in the
using definition and make it little bit confusing.
C# 8 is bringing asynchronous disposables via new
IAsyncDisposable and although the basic concept is easy to grasp, other rules of
awaiting still apply here. And one of these is the usage of