Tail Recursion and C#

Tail recursion is a powerful optimization since it typically improves both execution time and memory usage for recursive calls. It can also be your enemy if you forget about it. Read more here.

0

Logical task combinators

When I had to use Erlang for the very first time it was a brand new language and I was in collage. Back then Erlang did not have a logical not function so we had to define our own in order to make our code readable. At least given the knowledge me and my lab…

0

Hashtable vs ConcurrentDictionary

Historically I’ve seen the Hashtable be favored over ConcurrentDictionary with the assumption that is was more efficient allowing for lock free reads. Well they both allow lock free reads so which one is really the better option? Read more here!

0

Dependency injection with IObservable

Just when I started working on my little toolbox I read this series on dependency injection for events which was great inspiration. Read more here.

0

Unexpected Progress<T>

When I was working on the WithProgress extensions I learned something about Progress<T> that I didn’t expect. Read more here.

0

Task-based Asynchronous pattern – for your pleasure

If you liked my old series of articles covering TAP and especially the different extension methods I showed. Then you will be even happier now. Read more here.

0

Asynchronous enumerations – summary

So what did we end up to do after the discussion two months ago? Well we ended up using option #1 mostly because it simplified things to have all items available during processing. technically not needed, but it simplified things. My generic advice would be to use option #1 or #2 and to favor option…

0

Asynchronous enumerations – Part 5: MyEnumerationAsync

For background, read the introduction. If you have no need for filtering using LINQ (or Rx) and you do not want to expose an IEnumerable you can create tour own “IEnumeratorAsync” that asynchronously fetches the next item. Again this is something I would advice against. First of all you are loosing the option to use…

0

Asynchronous enumerations – Part 4: IEnumerable<Task<IEnumerable<T>>>

For background, read the introduction. This is really just a variant of option #2 using the fact that you use azure tables and know that you will get several items at a time. In my opinion you shouldn’t even consider this option since it uses a feature of the underlying storage layer and compared to…

0

Asynchronous enumerations – Part 3: IObservable<T>

For background, read the introduction. In part 2 I briefly mentioned that if you have simple filtering needs then you might implement your own LINQ-like methods. Well if you have more advanced filtering needs there is already something out there to help you; Reactive Extensions (Rx). The only thing you have to do is to…

0