tabs ↹ over ␣ ␣ ␣ spaces

by Jiří {x2} Činčura

Getting closer to the "v1" with external procedures in Firebird in .NET

Published 25 May 2017 in .NET, C#, Databases in general, Firebird, and SQL

It’s been a while since the last time I blogged about FbNetExternalEngine. That doesn’t mean there was nothing happening. I was slowly working on it (really slowly, because of … time), plus some companies took interest in it, confirming it’s worth working on it and providing some feedback or nice-to-have features wishes (feel free to share your ideas in comments). So what’s really new?

Checking for big blocks of comments in code (NDepend, Roslyn)

Published 21 May 2017 in .NET, C#, NDepend, and Roslyn

I don’t like comments. Most of the time information in comments is wrong and obsolete. I believe the code should be clear as a fresh snow. Most of the time. Some design decisions or measurements can be commented, but not the code itself. If it needs commenting, it should be rewritten.

One cardinal sin I can’t live with is commenting out code, just because you might need it later or because it’s being “refactored”. Nonsense. Sadly, this is done so often in a team where I’m responsible for code quality. Lucky me.

Thus, to prevent it I decided to test for big chunks of comments in the codebase using a code. More specifically NDepend or Roslyn. Whatever will do the job.

Exploring the finalizers' timeout

Published 16 May 2017 in .NET and .NET Core

I don’t know why, but last week I decided to check whether the 2 seconds timeout for single finalizer and 40 seconds for all finalizers at the end of .NET application are still in place. If you haven’t heard about these two numbers ever, don’t worry. Because if you’ve ever hit one or the other you’ve been doing something seriously wrong. That’s how I’ve got to learn about it as well. ;)

Changes in new FbRemoteEvent

Published 7 May 2017 in .NET, C#, Firebird, and SQL

The implementation of events via the FbRemoteEvent class was nor wrong nor correct. It was correct in a way that it did what it should do, but it was not clean and it was not guiding the developer into the pit of success, you had to know how it works under the covers to work with it properly. I decided to rewrite the implementation, fix some issues and more importantly give it more high-level feel, where you’re actually using some infrastructure, instead of just close the raw implementation.

Template for converting Word's typographer's quotes to straight quotes in PSPad

Published 4 May 2017 in Markdown, PSPad, Text, and Word

I write my posts in Word, mostly. Because Word, with its superb proofing tools, it single handedly the best tool for that. But I also use Markdown to store the posts and I publish from it, because Markdown is just a plain text. The finishing touches code pasting and YAML editing I do in PSPad. Again, because it’s the editor I like and used since forever. However, I use typographer’s quotes in Word. Why wouldn’t it? And although I can leave these in the final text, I prefer to use straight quotes and let these be processed in Markdown to HTML transformation.

Email (life)hack for better vacation with(out) email

Published 4 May 2017 in Lifehack

I have a small lifehack that I’d like to share with you. The fact of today is that you can’t life without an email. OK, maybe you can, but in my world, it would be pretty damn difficult and inconvenient. And so I have email always with me, on my phone. But what if you don’t want to be email-able? Like on vacation?

Workaround for using HTTPS with custom domain on Azure Blob Storage

Published 2 May 2017 in Azure, Azure Storage, CDN, and Cloud

Azure Blob Storage is my favorite cloud service in Azure. Among it’s purpose of storing data, it allows you to set custom domain instead of using <account> Which is handy. On the other hand it does not allow you (currently) to use it with HTTPS because you can’t upload your own certificate, which sucks, sucks donkey balls.

Gopas TechEd 2017

Published 28 Apr 2017 in Presentations & Speaking

Včera jsem zahlédl na Facebooku k TechEdu, že je ještě 20 míst volných. Pokud již registraci máte nebo se vám podaří některé z těch 20 míst ukořistit, mám tu nabídku mých přednášek.

  • Migrace EF6 na EF Core
  • Python pro C# vývojáře

DevDays 2017 (Bratislava)

Published 27 Apr 2017 in Presentations & Speaking

DevDays letos nabídnou kromě klasických přednášek i možnost sledovat keynote //build/ konference ve čtvrtek. Podobná akce proběhne i v Praze. Škoda, že se ani na jedno místo nestihnu dostavit. Ale na sobotní konferenci to už stihnu a připravil jsem si jednu přednášku na téma “IDisposable - implementace a mýty”. Možná trochu netradičně se týká nečeho, co je v .NETu dostupné od “odjakživa”. Přesto je kolem IDisposable za ty roky plno mýtů a zaručených řešení, které ale nemusí být tak úplně korektní. A můj plán je všechny (nebo většinu) vysvětlit a zdůvodnit.

Shutting down VMs in Azure automatically based on schedule

Published 24 Apr 2017 in Azure and Cloud

Azure VMs are great for developers for testing stuff, not only running servers. Then often you don’t need the VM all the time. You can shut it down i.e. during the night and save some money. The only problem is to remember to do it. Especially if the VM is used in a team etc. Luckily Azure portal has a less-known feature, as I’ve found last Friday when chatting with a friend, to help you with it.

Where does the 65521 (static) or 65520 (instance) number of methods in a class come from?

Published 14 Apr 2017 in .NET and C#

If you have been following last two posts about the stack overflows (post 1, post 2), you know I’ve hit some limits. The first was 65535 fields in a class. Which is easy to explain, because the number is actually the maximum value that fits into unsigned 16-bit integer. Makes sense. Then I’ve hit some weird number (or actually numbers) for number of methods. It took me quite a while, with some help, to understand, what the number is based on.

Stopping MSBuild appending TargetFramework to OutputPath

Published 4 Apr 2017 in .NET Core, MSBuild, and Visual Studio

If you’re using the new csproj format maybe you noticed that the OutputPath has the last part automatically appended according to the framework you’re targeting. For example targeting netstandard1.6 would result in build results to be in bin\[Debug|Release]\netstandard1.6, for net462 it would be bin\[Debug|Release]\net462. But what if you don’t like this behavior? What if you want to specify the path exactly?

Disassembling a relay

Published 2 Apr 2017 in Electronics and IoT

I like taking things apart. Or putting them together. New piece of furniture from IKEA is like a small Christmas. It’s something different than programming, yet very similar, at least for me, in how the brain processes the (dis)assembling. Already as a child in school I liked learning how everyday objects work.