Archive for the ‘Concurrent Podcast’ Category

16 Oct 09

Concurrent Podcast (Episode 4): Grand Central Dispatch


Photo by KM&G-Morris

Concurrent Podcast 04: Grand Central Dispatch

This week, we stray from our usual concurrency coverage of .NET to examine Apple’s Grand Central Dispatch. GCD is a new technology in Mac OS X Snow Leopard and offers system level dispatch queues, rather than the usual approach of per process dispatch queues.

One of the new C language feature Apple introduced to make this mechanism possible and convenient are Blocks, which to .NET developers should be familiar as anonymous methods. Both represent closures that allow a block of code with captured locals to be passed along for later execution.

The central nature of GCD has some distinct advantages for maximizing the available hardware and it will be curious to see if other OS manufacturers will adopt similar system level facilities.

To find out about upcoming topics check here, and we always welcome suggestions . If you want to subscribe to just the podcasts, you can find the feed here.

23 Sep 09

Concurrent Podcast (Episode 3): Coroutines

Photo by ToniVC

Concurrent Podcast 03: Coroutines

One topic we’ve mentioned in both previous episodes is Coroutines. We use them extensively at MindTouch and the asynchronous programming model provided by the Dream framework fundamentally relies on them. Since we’re likely to keep bringing them up in the future, we thought it best to cover them sooner rather than later.

For some background reading on Coroutines in C# check out my previous article corporate blog or the same content as a tutorial on the developer site (better code formatting).

As usual, you can find future topic listed here, and we always welcome suggestions on what should take precedence or what other topics to cover. If you want to subscribe to just the podcasts, you can find the feed here.

24 Aug 09

Concurrent Podcast (Episode 2): Why Async matters

Concurrent Podcast 02: Why Async

In Dream and MindTouch 09, we try to follow an async pattern using our own Coroutine framework throughout all systems. This is necessitated by an architectural decision that components of the system are decoupled to use the Http Request/Response pattern between each other. While we optimize for calls within the system to never hit the wire, it is fundamentally constructed so that any component could live across a wire boundary. This means that calls between components could leave the current process. Traditionally that kind of call would block the calling thread. Since this is central to our pipeline, that blocking would drastically reduce the capacity of any install. By using asynchronous calls, we never block, but instead yield the current thread to do some other work while we wait for a response.

Clearly, we’re highly invested in async, but we started having discussion internally why should other programmers care about this pattern. It does add complexity, so is it really a case of YAGNI?

Episode 2 is a product of this debate. We try to cover the use cases developers presently encounter and the ones that are on the horizon, becoming central to future development. We also talk about the complexities and pain involved given the present tooling and infrastructure. We hope that our discussion will give you useful information as you venture into asynchronous programming.

As a sidenote, for Episode 2, we also tried out a different recording setup which did not work out all that well. Apologies for the sound quality this week; we’re still learning the best way of doing this and hope to have significant improvements in place for Episode 3.

As usual, you can find future topic listed here, and we always welcome suggestions on what should take precedence or what other topics to cover. If you want to subscribe to just the podcasts, you can find the feed here.

07 Aug 09

Concurrent Podcast (Episode 1): Lock vs. Lock-Free

Concurrent Podcast 01: Lock vs. Lock-Free

At MindTouch, we spend a lot of time talking about intricacies of concurrency, parallelism and asynchronocity. This usually revolves around refining the capabilities of the Dream framework, which does most of its concurrency with the help of coroutines and asynchronous dispatch. We also venture out and explore other approaches to concurrency to learn of new techniques and ways to tackle what we see as the biggest challenge to software engineering today.

Since we enjoy these discussions, we thought it might be interesting to post them as Podcast. The result is the first episode of the Concurrent Podcast, in which Steve and I talk about the good, bad and ugly of locks; how to avoid them; and when lock-free data structures might just be the ticket. We put together a list of topics for future podcasts. Please let us know what topics you would to see covered as well.

So enjoy our first episode on concurrency and let us know what you think! If you want to subscribe to just the podcasts, you can find the feed here.

Copyright © 2011 MindTouch, Inc. Powered by