<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.atalasoft.com/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Rick Minerich's Development Wonderland</title><link>http://www.atalasoft.com/cs/blogs/rickm/default.aspx</link><description>A Software Engineering, Algorithms and Programming Language Blog</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Custom Serializing Objects for Use in a Debugger Visualizer</title><link>http://www.atalasoft.com/cs/blogs/rickm/archive/2008/05/07/custom-serializing-objects-for-use-in-a-debugger-visualizer-codeproject.aspx</link><pubDate>Wed, 07 May 2008 19:02:00 GMT</pubDate><guid isPermaLink="false">647108ca-f046-4d8d-9feb-a7fbd2049b37:13930</guid><dc:creator>RickM</dc:creator><slash:comments>0</slash:comments><comments>http://www.atalasoft.com/cs/blogs/rickm/comments/13930.aspx</comments><wfw:commentRss>http://www.atalasoft.com/cs/blogs/rickm/commentrss.aspx?PostID=13930</wfw:commentRss><wfw:comment>http://www.atalasoft.com/cs/blogs/rickm/rsscomments.aspx?PostID=13930</wfw:comment><description>I have a new CodeProject article up which details how to make a Debugger Visualizer in the case where you need to custom serialize the object. The actual classes I build in the tutorial are only useful with our DotImage project line. However, the process...(&lt;a href="http://www.atalasoft.com/cs/blogs/rickm/archive/2008/05/07/custom-serializing-objects-for-use-in-a-debugger-visualizer-codeproject.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://www.atalasoft.com/cs/aggbug.aspx?PostID=13930" width="1" height="1"&gt;</description><enclosure url="http://www.atalasoft.com/cs/blogs/rickm/attachment/13930.ashx" length="53959" type="image/jpeg" /><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/code/default.aspx">code</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/.NET/default.aspx">.NET</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/VB.NET/default.aspx">VB.NET</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Tutorials/default.aspx">Tutorials</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Debugger/default.aspx">Debugger</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/VS2008/default.aspx">VS2008</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/VS2005/default.aspx">VS2005</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Visualizer/default.aspx">Visualizer</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Debugger+Visualizer/default.aspx">Debugger Visualizer</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/CodeProject/default.aspx">CodeProject</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Visual+Studio/default.aspx">Visual Studio</category></item><item><title>Using PNG Predictors to Enhance GZIP/PKZIP/FLATE Compression</title><link>http://www.atalasoft.com/cs/blogs/rickm/archive/2008/05/02/using-png-predictors-to-enhance-gzip-pkzip-flate-compression.aspx</link><pubDate>Fri, 02 May 2008 20:25:00 GMT</pubDate><guid isPermaLink="false">647108ca-f046-4d8d-9feb-a7fbd2049b37:13874</guid><dc:creator>RickM</dc:creator><slash:comments>1</slash:comments><comments>http://www.atalasoft.com/cs/blogs/rickm/comments/13874.aspx</comments><wfw:commentRss>http://www.atalasoft.com/cs/blogs/rickm/commentrss.aspx?PostID=13874</wfw:commentRss><wfw:comment>http://www.atalasoft.com/cs/blogs/rickm/rsscomments.aspx?PostID=13874</wfw:comment><description>I’ve been doing a lot of work in the PDF space lately. While implementing Binary Cross Reference Streams I was surprised to see that they could be encoded with PNG Predictors. This was surprising to me because binary cross reference streams aren’t images,...(&lt;a href="http://www.atalasoft.com/cs/blogs/rickm/archive/2008/05/02/using-png-predictors-to-enhance-gzip-pkzip-flate-compression.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://www.atalasoft.com/cs/aggbug.aspx?PostID=13874" width="1" height="1"&gt;</description><enclosure url="http://www.atalasoft.com/cs/blogs/rickm/attachment/13874.ashx" length="1109" type="image/x-png" /><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/programming/default.aspx">programming</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/optimization/default.aspx">optimization</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Tutorials/default.aspx">Tutorials</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/memory/default.aspx">memory</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/pdf/default.aspx">pdf</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/compression/default.aspx">compression</category></item><item><title>10 Hours in F#: Exploring Concurrency Through An Ant Colony Simulation</title><link>http://www.atalasoft.com/cs/blogs/rickm/archive/2008/04/25/10-hours-in-fsharp-exploring-concurrency-through-an-ant-colony-simulation.aspx</link><pubDate>Fri, 25 Apr 2008 19:33:00 GMT</pubDate><guid isPermaLink="false">647108ca-f046-4d8d-9feb-a7fbd2049b37:13762</guid><dc:creator>RickM</dc:creator><slash:comments>6</slash:comments><comments>http://www.atalasoft.com/cs/blogs/rickm/comments/13762.aspx</comments><wfw:commentRss>http://www.atalasoft.com/cs/blogs/rickm/commentrss.aspx?PostID=13762</wfw:commentRss><wfw:comment>http://www.atalasoft.com/cs/blogs/rickm/rsscomments.aspx?PostID=13762</wfw:comment><description>Synopsis I gave an hour long talk today, here at Atalasoft, on Concurrency in F# . It featured some slides and a small ant colony simulation to demonstrate different kinds of threading. Overall, I liked developing in F# quite a bit; however, puzzling...(&lt;a href="http://www.atalasoft.com/cs/blogs/rickm/archive/2008/04/25/10-hours-in-fsharp-exploring-concurrency-through-an-ant-colony-simulation.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://www.atalasoft.com/cs/aggbug.aspx?PostID=13762" width="1" height="1"&gt;</description><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/clojure/default.aspx">clojure</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/programming/default.aspx">programming</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/F_2300_/default.aspx">F#</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/functional/default.aspx">functional</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/concurrency/default.aspx">concurrency</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/code/default.aspx">code</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/experiences/default.aspx">experiences</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/optimization/default.aspx">optimization</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/fsharp/default.aspx">fsharp</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/talks/default.aspx">talks</category></item><item><title>Increasing the Size of your Stack (.NET Memory Management: Part 3) </title><link>http://www.atalasoft.com/cs/blogs/rickm/archive/2008/04/22/increasing-the-size-of-your-stack-net-memory-management-part-3.aspx</link><pubDate>Tue, 22 Apr 2008 17:45:00 GMT</pubDate><guid isPermaLink="false">647108ca-f046-4d8d-9feb-a7fbd2049b37:13734</guid><dc:creator>RickM</dc:creator><slash:comments>3</slash:comments><comments>http://www.atalasoft.com/cs/blogs/rickm/comments/13734.aspx</comments><wfw:commentRss>http://www.atalasoft.com/cs/blogs/rickm/commentrss.aspx?PostID=13734</wfw:commentRss><wfw:comment>http://www.atalasoft.com/cs/blogs/rickm/rsscomments.aspx?PostID=13734</wfw:comment><description>In the previous article I discussed a few of the benefits of stack allocation as well as a couple of C# keywords which help you to leverage those benefits. However, the one megabyte default stack size is too small for stack allocation to be used with...(&lt;a href="http://www.atalasoft.com/cs/blogs/rickm/archive/2008/04/22/increasing-the-size-of-your-stack-net-memory-management-part-3.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://www.atalasoft.com/cs/aggbug.aspx?PostID=13734" width="1" height="1"&gt;</description><enclosure url="http://www.atalasoft.com/cs/blogs/rickm/attachment/13734.ashx" length="6659" type="application/x-zip-compressed" /><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/programming/default.aspx">programming</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/delegates/default.aspx">delegates</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/code/default.aspx">code</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/optimization/default.aspx">optimization</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/.NET/default.aspx">.NET</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Tutorials/default.aspx">Tutorials</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/memory/default.aspx">memory</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/stack/default.aspx">stack</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/allocation/default.aspx">allocation</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/asp.net/default.aspx">asp.net</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/kernel32/default.aspx">kernel32</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/pinvoke/default.aspx">pinvoke</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/unsafe/default.aspx">unsafe</category></item><item><title>Improving Performance Through Stack Allocation (.NET Memory Management: Part 2) </title><link>http://www.atalasoft.com/cs/blogs/rickm/archive/2008/04/15/improving-performance-through-stack-allocation-net-memory-management-part-2.aspx</link><pubDate>Tue, 15 Apr 2008 15:06:00 GMT</pubDate><guid isPermaLink="false">647108ca-f046-4d8d-9feb-a7fbd2049b37:13689</guid><dc:creator>RickM</dc:creator><slash:comments>6</slash:comments><comments>http://www.atalasoft.com/cs/blogs/rickm/comments/13689.aspx</comments><wfw:commentRss>http://www.atalasoft.com/cs/blogs/rickm/commentrss.aspx?PostID=13689</wfw:commentRss><wfw:comment>http://www.atalasoft.com/cs/blogs/rickm/rsscomments.aspx?PostID=13689</wfw:comment><description>Articles in This Series Part 1 – Basic Housekeeping Part 2 – Improving Performance Through Stack Allocation Part 3 – Increasing the Size of your Stack Introduction In C#, when you create managed objects or arrays of value types, they are created on the...(&lt;a href="http://www.atalasoft.com/cs/blogs/rickm/archive/2008/04/15/improving-performance-through-stack-allocation-net-memory-management-part-2.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://www.atalasoft.com/cs/aggbug.aspx?PostID=13689" width="1" height="1"&gt;</description><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/programming/default.aspx">programming</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/code/default.aspx">code</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/.NET/default.aspx">.NET</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Tutorials/default.aspx">Tutorials</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/memory/default.aspx">memory</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/stack/default.aspx">stack</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/allocation/default.aspx">allocation</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/stack+allocation/default.aspx">stack allocation</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/fixed/default.aspx">fixed</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/stackalloc/default.aspx">stackalloc</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/struct/default.aspx">struct</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/unsafe/default.aspx">unsafe</category></item><item><title>Code Camp 9 in Waltham, a Retrospective</title><link>http://www.atalasoft.com/cs/blogs/rickm/archive/2008/04/07/code-camp-9-in-waltham-a-retrospective.aspx</link><pubDate>Mon, 07 Apr 2008 16:02:00 GMT</pubDate><guid isPermaLink="false">647108ca-f046-4d8d-9feb-a7fbd2049b37:13631</guid><dc:creator>RickM</dc:creator><slash:comments>1</slash:comments><comments>http://www.atalasoft.com/cs/blogs/rickm/comments/13631.aspx</comments><wfw:commentRss>http://www.atalasoft.com/cs/blogs/rickm/commentrss.aspx?PostID=13631</wfw:commentRss><wfw:comment>http://www.atalasoft.com/cs/blogs/rickm/rsscomments.aspx?PostID=13631</wfw:comment><description>I went to my first Code Camp this weekend. I was a bit wary at first because it was hosted by Microsoft and I hate Corporate Kool-Aid. Thankfully, that was kept to a minimum and the focus was where it should be: on the code. All of the panels I went to...(&lt;a href="http://www.atalasoft.com/cs/blogs/rickm/archive/2008/04/07/code-camp-9-in-waltham-a-retrospective.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://www.atalasoft.com/cs/aggbug.aspx?PostID=13631" width="1" height="1"&gt;</description><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/experiences/default.aspx">experiences</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/.NET/default.aspx">.NET</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Code+Camp/default.aspx">Code Camp</category></item><item><title>Basic Memory Housekeeping (.NET Memory Management: Part 1)</title><link>http://www.atalasoft.com/cs/blogs/rickm/archive/2008/04/03/net-memory-managment-part-1-basic-housekeeping.aspx</link><pubDate>Thu, 03 Apr 2008 21:25:00 GMT</pubDate><guid isPermaLink="false">647108ca-f046-4d8d-9feb-a7fbd2049b37:13602</guid><dc:creator>RickM</dc:creator><slash:comments>5</slash:comments><comments>http://www.atalasoft.com/cs/blogs/rickm/comments/13602.aspx</comments><wfw:commentRss>http://www.atalasoft.com/cs/blogs/rickm/commentrss.aspx?PostID=13602</wfw:commentRss><wfw:comment>http://www.atalasoft.com/cs/blogs/rickm/rsscomments.aspx?PostID=13602</wfw:comment><description>This is the first in a series of posts I will be writing about managing memory in .NET. Before I move on to more complex techniques, I thought it would be good to cover the basics. Articles in This Series Part 1 – Basic Housekeeping Part 2 – Improving...(&lt;a href="http://www.atalasoft.com/cs/blogs/rickm/archive/2008/04/03/net-memory-managment-part-1-basic-housekeeping.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://www.atalasoft.com/cs/aggbug.aspx?PostID=13602" width="1" height="1"&gt;</description><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/.NET/default.aspx">.NET</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/C_2B002B00_/default.aspx">C++</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/VB.NET/default.aspx">VB.NET</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Tutorials/default.aspx">Tutorials</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/memory/default.aspx">memory</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/struct/default.aspx">struct</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/structs/default.aspx">structs</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/IDisposable/default.aspx">IDisposable</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/garbage+collection/default.aspx">garbage collection</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/gc/default.aspx">gc</category></item><item><title>Counting Processors in .NET: The Pros and Cons of Five Different Methods</title><link>http://www.atalasoft.com/cs/blogs/rickm/archive/2008/04/01/counting-processors-in-net-the-pros-and-cons-of-five-different-methods.aspx</link><pubDate>Tue, 01 Apr 2008 18:54:00 GMT</pubDate><guid isPermaLink="false">647108ca-f046-4d8d-9feb-a7fbd2049b37:13585</guid><dc:creator>RickM</dc:creator><slash:comments>3</slash:comments><comments>http://www.atalasoft.com/cs/blogs/rickm/comments/13585.aspx</comments><wfw:commentRss>http://www.atalasoft.com/cs/blogs/rickm/commentrss.aspx?PostID=13585</wfw:commentRss><wfw:comment>http://www.atalasoft.com/cs/blogs/rickm/rsscomments.aspx?PostID=13585</wfw:comment><description>There are a great number of different ways to count the number of processors available to the .NET developer. In this post I will go over some of the more common methods and their pros and cons. The Envirionment.ProcessorCount Way Code: Environment .ProcessorCount;...(&lt;a href="http://www.atalasoft.com/cs/blogs/rickm/archive/2008/04/01/counting-processors-in-net-the-pros-and-cons-of-five-different-methods.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://www.atalasoft.com/cs/aggbug.aspx?PostID=13585" width="1" height="1"&gt;</description><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/programming/default.aspx">programming</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/code/default.aspx">code</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/.NET/default.aspx">.NET</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/C_2B002B00_/default.aspx">C++</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Processors/default.aspx">Processors</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/VB.NET/default.aspx">VB.NET</category></item><item><title>Script# converts C# into Javascript</title><link>http://www.atalasoft.com/cs/blogs/rickm/archive/2008/03/27/script-converts-c-into-javascript.aspx</link><pubDate>Thu, 27 Mar 2008 20:11:00 GMT</pubDate><guid isPermaLink="false">647108ca-f046-4d8d-9feb-a7fbd2049b37:13560</guid><dc:creator>RickM</dc:creator><slash:comments>1</slash:comments><comments>http://www.atalasoft.com/cs/blogs/rickm/comments/13560.aspx</comments><wfw:commentRss>http://www.atalasoft.com/cs/blogs/rickm/commentrss.aspx?PostID=13560</wfw:commentRss><wfw:comment>http://www.atalasoft.com/cs/blogs/rickm/rsscomments.aspx?PostID=13560</wfw:comment><description>Many people in the .NET community seem to really like the Script# compiler. What it does is compile C# into JavaScript instead of MSIL. The compiler also optimizes the output so the the Javascript is as small and fast as possible. It even has full Visual...(&lt;a href="http://www.atalasoft.com/cs/blogs/rickm/archive/2008/03/27/script-converts-c-into-javascript.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://www.atalasoft.com/cs/aggbug.aspx?PostID=13560" width="1" height="1"&gt;</description><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/C_2300_+javascript+asp.net+Script_2300_/default.aspx">C# javascript asp.net Script#</category></item><item><title>Improving .Net Performance With Ngen: The Native Image Generator</title><link>http://www.atalasoft.com/cs/blogs/rickm/archive/2008/03/26/improving-dotnet-performance-with-ngen-the-native-image-generator.aspx</link><pubDate>Wed, 26 Mar 2008 14:47:00 GMT</pubDate><guid isPermaLink="false">647108ca-f046-4d8d-9feb-a7fbd2049b37:13555</guid><dc:creator>RickM</dc:creator><slash:comments>3</slash:comments><comments>http://www.atalasoft.com/cs/blogs/rickm/comments/13555.aspx</comments><wfw:commentRss>http://www.atalasoft.com/cs/blogs/rickm/commentrss.aspx?PostID=13555</wfw:commentRss><wfw:comment>http://www.atalasoft.com/cs/blogs/rickm/rsscomments.aspx?PostID=13555</wfw:comment><description>One of the most often cited reasons to not use .NET is that it is initially compiled to an intermediary language (MSIL) and has to be recompiled every time you run it. In many high performance environments this wasted time is simply unacceptable. To combat...(&lt;a href="http://www.atalasoft.com/cs/blogs/rickm/archive/2008/03/26/improving-dotnet-performance-with-ngen-the-native-image-generator.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://www.atalasoft.com/cs/aggbug.aspx?PostID=13555" width="1" height="1"&gt;</description><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/programming/default.aspx">programming</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/F_2300_/default.aspx">F#</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/code/default.aspx">code</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/IL/default.aspx">IL</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/optimization/default.aspx">optimization</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/ngen/default.aspx">ngen</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/MSIL/default.aspx">MSIL</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/.NET/default.aspx">.NET</category></item><item><title>IS - The Meta-Meta Language-Language (and parametric compiler)</title><link>http://www.atalasoft.com/cs/blogs/rickm/archive/2008/03/24/is-the-meta-meta-language-language-and-parametric-compiler.aspx</link><pubDate>Mon, 24 Mar 2008 19:48:00 GMT</pubDate><guid isPermaLink="false">647108ca-f046-4d8d-9feb-a7fbd2049b37:13542</guid><dc:creator>RickM</dc:creator><slash:comments>1</slash:comments><comments>http://www.atalasoft.com/cs/blogs/rickm/comments/13542.aspx</comments><wfw:commentRss>http://www.atalasoft.com/cs/blogs/rickm/commentrss.aspx?PostID=13542</wfw:commentRss><wfw:comment>http://www.atalasoft.com/cs/blogs/rickm/rsscomments.aspx?PostID=13542</wfw:comment><description>Ian Piumarta and some very smart folks over at the Viewpoints Research Institute have been working on a meta programming language named IS which is specifically designed for implementing other languages. The project actually has several names (IS, idst,...(&lt;a href="http://www.atalasoft.com/cs/blogs/rickm/archive/2008/03/24/is-the-meta-meta-language-language-and-parametric-compiler.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://www.atalasoft.com/cs/aggbug.aspx?PostID=13542" width="1" height="1"&gt;</description><enclosure url="http://www.atalasoft.com/cs/blogs/rickm/attachment/13542.ashx" length="57547" type="image/jpeg" /><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/IS/default.aspx">IS</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/programming/default.aspx">programming</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/meta/default.aspx">meta</category></item><item><title>Clojure Impressions</title><link>http://www.atalasoft.com/cs/blogs/rickm/archive/2008/03/21/clojure-impressions.aspx</link><pubDate>Fri, 21 Mar 2008 13:25:00 GMT</pubDate><guid isPermaLink="false">647108ca-f046-4d8d-9feb-a7fbd2049b37:13518</guid><dc:creator>RickM</dc:creator><slash:comments>1</slash:comments><comments>http://www.atalasoft.com/cs/blogs/rickm/comments/13518.aspx</comments><wfw:commentRss>http://www.atalasoft.com/cs/blogs/rickm/commentrss.aspx?PostID=13518</wfw:commentRss><wfw:comment>http://www.atalasoft.com/cs/blogs/rickm/rsscomments.aspx?PostID=13518</wfw:comment><description>Last night the wmassdevs Group hosted a Clojure presentation by Rich Hickey . Clojure was born of Rich's dissatisfaction with the current state of the concurrent programming and so was built from the ground up around the idea of making this task less...(&lt;a href="http://www.atalasoft.com/cs/blogs/rickm/archive/2008/03/21/clojure-impressions.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://www.atalasoft.com/cs/aggbug.aspx?PostID=13518" width="1" height="1"&gt;</description><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/clojure/default.aspx">clojure</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/programming/default.aspx">programming</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/wmassdevs/default.aspx">wmassdevs</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/F_2300_/default.aspx">F#</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/functional/default.aspx">functional</category></item><item><title>The Evolution of Lambda Functions in C#</title><link>http://www.atalasoft.com/cs/blogs/rickm/archive/2008/03/20/the-evolution-of-lambda-functions-in-c.aspx</link><pubDate>Thu, 20 Mar 2008 14:24:00 GMT</pubDate><guid isPermaLink="false">647108ca-f046-4d8d-9feb-a7fbd2049b37:13512</guid><dc:creator>RickM</dc:creator><slash:comments>0</slash:comments><comments>http://www.atalasoft.com/cs/blogs/rickm/comments/13512.aspx</comments><wfw:commentRss>http://www.atalasoft.com/cs/blogs/rickm/commentrss.aspx?PostID=13512</wfw:commentRss><wfw:comment>http://www.atalasoft.com/cs/blogs/rickm/rsscomments.aspx?PostID=13512</wfw:comment><description>Howard Dierking over at MSDN has a really interesting Blog post entitled " Lambda, Lambda, Lambda! " in which he described the evolution of the lambda function in C#. It seems fairly simple on the surface: 1.0 Introduced Delegates, 2.0 Introduced Anonymous...(&lt;a href="http://www.atalasoft.com/cs/blogs/rickm/archive/2008/03/20/the-evolution-of-lambda-functions-in-c.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://www.atalasoft.com/cs/aggbug.aspx?PostID=13512" width="1" height="1"&gt;</description><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/programming/default.aspx">programming</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/delegates/default.aspx">delegates</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/anonymous+functions/default.aspx">anonymous functions</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/lamba/default.aspx">lamba</category></item><item><title>Google's Leptonica</title><link>http://www.atalasoft.com/cs/blogs/rickm/archive/2008/03/17/google-s-leptonica.aspx</link><pubDate>Mon, 17 Mar 2008 18:21:00 GMT</pubDate><guid isPermaLink="false">647108ca-f046-4d8d-9feb-a7fbd2049b37:13499</guid><dc:creator>RickM</dc:creator><slash:comments>0</slash:comments><comments>http://www.atalasoft.com/cs/blogs/rickm/comments/13499.aspx</comments><wfw:commentRss>http://www.atalasoft.com/cs/blogs/rickm/commentrss.aspx?PostID=13499</wfw:commentRss><wfw:comment>http://www.atalasoft.com/cs/blogs/rickm/rsscomments.aspx?PostID=13499</wfw:comment><description>Google's underground army of PhDs is secretly cranking out huge numbers of really useful and interesting libraries and tools . Within the next few years, these tools are going to drastically change the landscape of much of the software industry. The reason:...(&lt;a href="http://www.atalasoft.com/cs/blogs/rickm/archive/2008/03/17/google-s-leptonica.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://www.atalasoft.com/cs/aggbug.aspx?PostID=13499" width="1" height="1"&gt;</description><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/google/default.aspx">google</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/ecm/default.aspx">ecm</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/leptonica/default.aspx">leptonica</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/ecmi/default.aspx">ecmi</category></item><item><title>Immutable Data Structures in OO Languages.</title><link>http://www.atalasoft.com/cs/blogs/rickm/archive/2008/03/13/immutable-data-structures-in-oo-languages.aspx</link><pubDate>Thu, 13 Mar 2008 17:53:00 GMT</pubDate><guid isPermaLink="false">647108ca-f046-4d8d-9feb-a7fbd2049b37:13473</guid><dc:creator>RickM</dc:creator><slash:comments>0</slash:comments><comments>http://www.atalasoft.com/cs/blogs/rickm/comments/13473.aspx</comments><wfw:commentRss>http://www.atalasoft.com/cs/blogs/rickm/commentrss.aspx?PostID=13473</wfw:commentRss><wfw:comment>http://www.atalasoft.com/cs/blogs/rickm/rsscomments.aspx?PostID=13473</wfw:comment><description>&lt;p&gt;One of the big reasons for the recent push towards functional programming languages is concurrent programming. Everyone is worried about how the switch from more megahertz to more cores is going to impact how they program. &lt;/p&gt;

&lt;p&gt;I was reading an article entitled &lt;a href="http://msdn2.microsoft.com/en-us/magazine/cc164244.aspx?pr=blog"&gt;F# Primer&lt;/a&gt; over on msdn today. It stated that the reason F#, and other functional programming languages, are so much better when it comes to concurrency is that they encourage the use of immutable data structures. However, what is keeping us from using the same idea in our existing C# or C++ code? With an immutable producer-consumer model couldn't you achieve the same effect? Don't get me wrong, I think F# is a great language with concise and elegant syntax. But I don't see why you couldn't achieve similar results with C#'s readonly keyword or by using objects that only allow the setting of values in the constructor while having read only properties. &lt;br&gt;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://www.atalasoft.com/cs/blogs/rickm/archive/2008/03/13/immutable-data-structures-in-oo-languages.aspx&amp;amp;;subject=Immutable+Data+Structures+in+OO+Languages." target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2008/03/13/immutable-data-structures-in-oo-languages.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://www.atalasoft.com/cs/blogs/rickm/archive/2008/03/13/immutable-data-structures-in-oo-languages.aspx&amp;amp;;title=Immutable+Data+Structures+in+OO+Languages." target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2008/03/13/immutable-data-structures-in-oo-languages.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://www.atalasoft.com/cs/blogs/rickm/archive/2008/03/13/immutable-data-structures-in-oo-languages.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2008/03/13/immutable-data-structures-in-oo-languages.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://www.atalasoft.com/cs/blogs/rickm/archive/2008/03/13/immutable-data-structures-in-oo-languages.aspx&amp;amp;title=Immutable+Data+Structures+in+OO+Languages." target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2008/03/13/immutable-data-structures-in-oo-languages.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://www.atalasoft.com/cs/blogs/rickm/archive/2008/03/13/immutable-data-structures-in-oo-languages.aspx&amp;amp;;title=Immutable+Data+Structures+in+OO+Languages." target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2008/03/13/immutable-data-structures-in-oo-languages.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://www.atalasoft.com/cs/blogs/rickm/archive/2008/03/13/immutable-data-structures-in-oo-languages.aspx&amp;amp;;title=Immutable+Data+Structures+in+OO+Languages.&amp;amp;;top=1" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2008/03/13/immutable-data-structures-in-oo-languages.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.atalasoft.com/cs/aggbug.aspx?PostID=13473" width="1" height="1"&gt;</description><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/functional/default.aspx">functional</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/concurrency/default.aspx">concurrency</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/object+oriented/default.aspx">object oriented</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/oo/default.aspx">oo</category></item></channel></rss>