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

by Jiří {x2} Činčura

Latest Entries

Task.CompletedTask in .NET 4.6

I wrote about fast path optimizations with having already completed task prepared before in my “Better "cached completed Task”". At that time the was no way to directly access already completed Task the TPL has.

Although you could do it using the trick described there, it was really looking cryptic for somebody reading the code. You could wrap it into your own well-named property, but you know…

Continue reading...

WUG: Visual Studio tipy a triky (Brno)

Aby to nebylo Brnu líto dáme si opakování zlínské “Visual Studio tipy a triky”.

Zároveň malý pohled pod pokličku ukazuje, že ani Ostrava nepřijde zkrátka. ;) Včas vše oznámíme.

Klávesnice je programátorova lopata. Nebo tak něco. No a Visual Studio může být třeba násada. :) Na lopatu nepotřebujete navěsit hromadu ozdob. Potřebujete se jen naučit ji pořádně používat.

Takže 17.2.2015 od 17:00 na WUGu v Brně vám ukážu co všechno se dá rychle dělat, aniž by bylo třeba myší, touchpadů nebo třeba velkých pluginů.

Continue reading...

CherryPy on Azure Websites

Let me state that upfront: I’m a Python newbie. I started playing with slightly over half a year ago as a way to expand my view. Lately I was looking for something new to try among simple scripts that do this or that. I thought something web based is a good way to start. Web is now everywhere and it’s easier than packing up some desktop or mobile application (IMO).

So I started some small research for some web frameworks. Given I’m a newbie I wanted something smart but bare enough to focus on result and not on plumbing. After research where my criteria are obviously skewed I found CherryPy. Reading some tutorials and examples I liked the way it looks and it seemed intuitive.

Continue reading...

Charging Garmin fēnix 2 while in activity

I was recently reading the Forerunner 920XT review. The 920XT apparently does not allow you to charge the watch while in activity. I’m wondering who approved that? Even the old and cheaper series 410 allowed to do that as I wrote. I know the watch is aimed at triathletes and the battery life is enough for even an Ironman triathlon if you’re a bit trained, but there are longer races. Races I like participating in - ultra running (or ultra marathons if you wish).

Continue reading...

Waiting for all tasks, reacting on any

About a week ago I needed to wait on all tasks to complete and also do some side processing as any completes. Sure I could wrap it using ContinueWith or something like that, but I made it from other way around.

I called my method WhenAllOnAny for lack of better ideas. The method ended up pretty straightforward. I’m doing WhenAny as long as there’s at least one task still running. When one completes I fire the event.

Continue reading...

WUG: Visual Studio tipy a triky (Zlín)

Klávesnice je programátorova lopata. Nebo tak něco. No a Visual Studio může být třeba násada. :) Na lopatu nepotřebujete navěsit hromadu ozdob. Potřebujete se jen naučit ji pořádně používat.

Takže 22.1.2015 od 17:30 na WUGu ve Zlíně vám ukážu co všechno se dá rychle dělat, aniž by bylo třeba myší, touchpadů nebo třeba velkých pluginů.

Continue reading...

HttpClient streaming upload

The requirement seemed simple. Get a stream of data and upload it using HTTP to server. The stream might be possibly large so complete buffering is is not an option. Nothing special.

But I was banging my head for last day (actually two times half of the day) solving it. The problem was I had to (and wanted to) use HttpClient because that was what I was using in the rest of the code I have for talking to my API. And HttpClient was fighting a little.

Continue reading...

Upper-casing conventions as SQL likes it in Entity Framework 6

Before Entity Framework 6 was finalized I wrote posts ([1] and [2]) showing how with the help of conventions you can save yourself some tedious typing for databases following strictly SQL standard in respect to upper case and (not)quoting (see previous posts for details).

But that was pre-EF6 era and some API changed. In fact it’s now even way easier to do that.

Continue reading...

How slow the "lock" statement actually is?

When I’m teaching my “parallel-threading-asynchronous-locking-synchronization” course I discuss the lock statement a lot. Not only because it’s probably the most widely used “lock”, but also because it’s pretty easy to fall into a trap if you don’t know what’s going on behind the scenes and around you.

Anyway. I often show how the lock is translated into try-finally block and that it does not come for free. And among other things I’m trying to get into the brains of the people I’m teaching is that you should spent as less time as possible inside lock (of course, with some exceptions) - less contention equals less waiting hence more resources used for real work.

Continue reading...

The magic of "async" keyword

In last couple of weeks I was again confronted number of times with something “asynchronous”. In this post I don’t want to argue about CPU-bound and IO-bound operations with respect to “asynchronous” word. What I’ll talk about is the async keyword. Because it looks like there’s still confusion.

Continue reading...

Set-reset easily

I have to say I’m bit obsessed by writing as less code as possible and having compiler of language do the work. I don’t like cryptic code, though. It needs to read easily. My problem today was simple. I needed simplify the code that sets new value into property, does something and sets back the original value.

Maybe you remember this from good old Delphi or WinForms days. Set the title of button to “Working…”, do the work, put back whatever was on that button before.

Continue reading...

Timing out task

Last week I was working with pretty bad library that from time to time got stuck. No progress. Given the library was fairly young and supported asynchronous methods I suspect there was a deadlock/livelock somewhere. Although the code was open source I had no time (or intention) to debug it. I just needed quick fix.

Continue reading...