Taking something that can't be done, and then doing it.

by Jiří {x2} Činčura

Waiting for process to exit without blocking

Published 15 Oct 2015 in .NET, C#, and Multithreading/Parallelism/Asynchronous/Concurrency

I have been scripting something in build process of one big project where to make the final binaries bunch of other tools need to be executed. Given that this was in pipeline where most of steps were asynchronous I was eager to have this non-blocking as well and possibly introduce parallelism.

MS Fest 2015 (Brno)

Published 2 Oct 2015 in Announcements & Invitations and Presentations & Speaking

10. a 11. října to opět vypukne - MS Fest 2015. První představení v Brně (Praha a Bratislava budou následovat). Jestliže nemáte o víkendu co dělat, chtěl bych vás nalákat na svoji přednášku.

Pokud programujete v C#, jednoduše nemůžete chybět.

Tak jako vždy slajdy a dema “se dolaďují” a pokud vás něco speciálně zajímá dejte mi vědět.

Mail today?

Published 11 Sep 2015 in Cloud, Email, and Windows

I recently moved my email. Moving from Exchange 2013 to IMAP with CardDAV and CalDAV. I felt the Exchange started to be too much for me and also constraining me a little. The weird behavior of Outlook last week was the trigger.

Thanks to the option to connect to my Exchange also via IMAP exporting emails was easy. Same with contacts. The plain old CSV and that’s it. Finally the calendar. That was bit harder, because export to iCal from Outlook was, well say, dirty. But I found tool called FreeMiCal. After changing the sources a little and also doing some mass changes via Outlook I was able to export it in a format I liked and also format I was able to import into services I was testing. Once the exports were imported it was time to start consuming all the services.

PowerShell: "Stream was not readable"

Published 28 Aug 2015 in PowerShell

Yesterday I was processing some files using a simple PowerShell script. Basically open the file, read it, process lines, save it. Nothing else. And I was randomly getting Stream was not readable error while saving. Few runs and always a different file. Pretty confusing.

Fixing music stuttering on Raspberry Pi (B+) and OpenELEC

Published 27 Aug 2015 in OpenELEC and Raspberry Pi

I like music a lot. When I’m listening for pleasure, not simply as a “noise” on background, I like to enjoy it on my stereo without any fiddling with laptop or cables. I recently took Raspberry Pi (the B+ model) and OpenELEC and connected it to my receiver using HDMI. Everything works fine - I’m even impressed how smooth the OpenELEC runs and how much power the Raspberry Pi has, given the friendly price. There was only one problem. Sometimes. Irregularly. The music was playing fine and suddenly it stopped for a second or two. And then it was fine again for a minute or hour.

Book: "Learning AWS"

Published 25 Aug 2015 in Amazon AWS, Books, and Cloud

Recently I finished reviewing another book for Packt. This time it was not cookbook, but a more or less regular book with text and examples. It’s called Learning AWS. As you can guess from the name this book is about Amazon’s cloud. Because it is not a cookbook, the text contains also some background information to understand the chapter. Great to also learn something new.

Although I’m known to not be heavy Java guy and the demos are in Java (if I remember correctly, all of them), but you’re not coding anything. Just using the application to have something to deploy and configure a bit. So even if you’re i.e. Python guy you will find it valuable too.

And don’t think it’s just for developers. There’s a lot for administrators too. Securing the whole thing, setting up firewalls and VPCs. Especially for VPCs I needed to double check my holes ;) and during that I also gained some knowledge. Or let’s call it DevOps.

Enjoy the book.

Full CI for FirebirdClient

Published 24 Aug 2015 in .NET, C#, Continuous Integration, Firebird, and Test Driven Development (TDD)

Recently I got a good PR changing the tests for FirebirdClient. Basically the suite is now executed for regular server as well as Embedded. Directly. You don’t need to change configuration values and restart tests etc. Great idea. There’s never enough tests. Especially as these are free.

Checking for ConfigureAwait(false) as Visual Studio 2015 analyzer

Published 22 Aug 2015 in .NET, C#, Multithreading/Parallelism/Asynchronous/Concurrency, and Roslyn

Sometime ago I wrote - actually looking at the post date it’s already a year, give or take - a ConfigureAwaitChecker tool. It was partly because I needed tool like that and also I wanted to investigate Roslyn. Perfect combination.

I used the tool quite a few times, but it was not smooth. Going out of Visual Studio, running it and then manually finding the errors in source code back in Visual Studio. Not a best experience. I think sometimes I even skipped using my own tool because of this. When Visual Studio started having final shape the concept of analyzers (and also code fixes) was introduced ([1], [2]). The idea of NuGet distribution looked nice, better than VSIX (expecially if you want to have it per project and for everybody in particular project). I was sold.

Book: "WiX Cookbook"

Published 18 Aug 2015 in Books and WiX

The WiX is a nice tool. And it’s complex, because the MSI is complex like hell. Whenever I need to create an installer (and I hate installers, applications should be mostly “portable”) I build it from pieces I wrote before and only add never used features. That way, over the years, I learned a lot of basic scenarios. Not the best or fastest way.

Almost a year ago I was contacted by Packt Publishing to do a technical review of WiX Cookbook book. And I have to say the content is pretty handy. If you don’t want to deep dive into MSI and WiX and you just need to get things done with maybe a bit of background, this book offers plenty of practical recipes. Although I like to have also the background knowledge, sometimes the ready to use snippet is just what you need.

If you find a mistake there, don’t blame me, my eyes weren’t the only pair checking the content. :)

My old game you'll never stop playing

Published 7 Aug 2015 in .NET, C#, and Games

After yesterday’s post with I-don’t-want-to-just-delete-this-code I realized I have another code I’m keeping already for years. It’s from my college years. At that time I was entering as much programming classes as I could - it was way easier than i.e. “Automata, Grammars, and Complexity” ;) (IB102 is the code in case you’d like to search catalog of Faculty of Informatics Masaryk University), it was fun and I liked it.

Anyway I entered also the newly created class related to CLR, .NET, C# etc. and we had weekly seminars where we actually did the programming. At one point in this seminar I wrote the code below. I don’t know whether it was just some fun project because I had time to do it or some spin-up from assignment we had to do.

Dirty HTML to Markdown converter code

Published 5 Aug 2015 in .NET, C#, and Markdown

Few weeks ago I decided to convert some old posts on this blog to Markdown as the rest. These posts were eight, ten years old, sometimes with code formatting with good old <font> tags. :) Not a pretty markup. After starting manually and realizing it would take me probably half a year I decided to help myself by code.

Windows 10 Windows Updates - and what?

Published 4 Aug 2015 in Windows

Why is there so much of talking about new Windows 10 Windows Updates installation procedure? My RSS reader is full of articles about it. You can’t turn it off. And who cares? Not mentioning you can turn it off, it just takes more effort.

Except some really special cases, which really doesn’t matter for 99,999% users (yes, even developers), it is just common sense. Or at least I think. You need to have an up-to-date system. I implemented same rule in my home network. Every computer, except few (explained below), installs updates automatically.