<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.atalasoft.com/cs/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">Rick Minerich's Development Wonderland</title><subtitle type="html">A Software Engineering, Algorithms and Programming Language Blog</subtitle><id>http://www.atalasoft.com/cs/blogs/rickm/atom.aspx</id><link rel="alternate" type="text/html" href="http://www.atalasoft.com/cs/blogs/rickm/default.aspx" /><link rel="self" type="application/atom+xml" href="http://www.atalasoft.com/cs/blogs/rickm/atom.aspx" /><generator uri="http://communityserver.org" version="2.1.61025.2">Community Server</generator><updated>2008-03-13T13:53:00Z</updated><entry><title>Custom Serializing Objects for Use in a Debugger Visualizer</title><link rel="alternate" type="text/html" href="http://www.atalasoft.com/cs/blogs/rickm/archive/2008/05/07/custom-serializing-objects-for-use-in-a-debugger-visualizer-codeproject.aspx" /><link rel="enclosure" type="image/jpeg" length="53959" href="http://www.atalasoft.com/cs/blogs/rickm/attachment/13930.ashx" /><id>http://www.atalasoft.com/cs/blogs/rickm/archive/2008/05/07/custom-serializing-objects-for-use-in-a-debugger-visualizer-codeproject.aspx</id><published>2008-05-07T19:02:00Z</published><updated>2008-05-07T19:02:00Z</updated><content type="html">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 of creating a Custom Serializer should be useful to any .NET developer. In our case, we automatically serialize AtalaImages to PNG format by default. It turns out that PNG encoding and decoding is slow enough that visualizing a medium sized image...(&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;</content><author><name>RickM</name><uri>http://www.atalasoft.com/cs/members/RickM.aspx</uri></author><category term="C#" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/C_2300_/default.aspx" /><category term="code" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/code/default.aspx" /><category term=".NET" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/.NET/default.aspx" /><category term="VB.NET" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/VB.NET/default.aspx" /><category term="Tutorials" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Tutorials/default.aspx" /><category term="Debugger" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Debugger/default.aspx" /><category term="VS2008" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/VS2008/default.aspx" /><category term="VS2005" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/VS2005/default.aspx" /><category term="Visualizer" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Visualizer/default.aspx" /><category term="Debugger Visualizer" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Debugger+Visualizer/default.aspx" /><category term="CodeProject" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/CodeProject/default.aspx" /><category term="Visual Studio" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Visual+Studio/default.aspx" /></entry><entry><title>Using PNG Predictors to Enhance GZIP/PKZIP/FLATE Compression</title><link rel="alternate" type="text/html" href="http://www.atalasoft.com/cs/blogs/rickm/archive/2008/05/02/using-png-predictors-to-enhance-gzip-pkzip-flate-compression.aspx" /><link rel="enclosure" type="image/x-png" length="1109" href="http://www.atalasoft.com/cs/blogs/rickm/attachment/13874.ashx" /><id>http://www.atalasoft.com/cs/blogs/rickm/archive/2008/05/02/using-png-predictors-to-enhance-gzip-pkzip-flate-compression.aspx</id><published>2008-05-02T20:25:00Z</published><updated>2008-05-02T20:25:00Z</updated><content type="html">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, they are byte tables: While the values vary, they are often within the same ranges. The first byte can only contain the numbers 0, 1 and 2 and are often the same, the middle two bytes are often the same and the last byte is generally increasing...(&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;</content><author><name>RickM</name><uri>http://www.atalasoft.com/cs/members/RickM.aspx</uri></author><category term="programming" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/programming/default.aspx" /><category term="optimization" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/optimization/default.aspx" /><category term="Tutorials" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Tutorials/default.aspx" /><category term="memory" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/memory/default.aspx" /><category term="pdf" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/pdf/default.aspx" /><category term="compression" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/compression/default.aspx" /></entry><entry><title>10 Hours in F#: Exploring Concurrency Through An Ant Colony Simulation</title><link rel="alternate" type="text/html" href="http://www.atalasoft.com/cs/blogs/rickm/archive/2008/04/25/10-hours-in-fsharp-exploring-concurrency-through-an-ant-colony-simulation.aspx" /><id>http://www.atalasoft.com/cs/blogs/rickm/archive/2008/04/25/10-hours-in-fsharp-exploring-concurrency-through-an-ant-colony-simulation.aspx</id><published>2008-04-25T19:33:00Z</published><updated>2008-04-25T19:33:00Z</updated><content type="html">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 through the interpreter errors was a brutal process indeed. You can grab my slides here and my ant colony simulation here . The Long Version It all started two weeks ago… …I had been reading about F# on various blogs for months and had done little more...(&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;</content><author><name>RickM</name><uri>http://www.atalasoft.com/cs/members/RickM.aspx</uri></author><category term="clojure" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/clojure/default.aspx" /><category term="programming" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/programming/default.aspx" /><category term="F#" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/F_2300_/default.aspx" /><category term="functional" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/functional/default.aspx" /><category term="concurrency" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/concurrency/default.aspx" /><category term="code" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/code/default.aspx" /><category term="experiences" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/experiences/default.aspx" /><category term="optimization" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/optimization/default.aspx" /><category term="fsharp" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/fsharp/default.aspx" /><category term="talks" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/talks/default.aspx" /></entry><entry><title>Increasing the Size of your Stack (.NET Memory Management: Part 3) </title><link rel="alternate" type="text/html" href="http://www.atalasoft.com/cs/blogs/rickm/archive/2008/04/22/increasing-the-size-of-your-stack-net-memory-management-part-3.aspx" /><link rel="enclosure" type="application/x-zip-compressed" length="6659" href="http://www.atalasoft.com/cs/blogs/rickm/attachment/13734.ashx" /><id>http://www.atalasoft.com/cs/blogs/rickm/archive/2008/04/22/increasing-the-size-of-your-stack-net-memory-management-part-3.aspx</id><published>2008-04-22T17:45:00Z</published><updated>2008-04-22T17:45:00Z</updated><content type="html">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 a large dataset. Alternatively, in some threading situations one megabyte per thread/fiber can be too large and bottleneck your system. In this article I will discuss the different ways you can modify the stack size. Articles in This Series Part 1 –...(&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;</content><author><name>RickM</name><uri>http://www.atalasoft.com/cs/members/RickM.aspx</uri></author><category term="programming" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/programming/default.aspx" /><category term="delegates" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/delegates/default.aspx" /><category term="C#" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/C_2300_/default.aspx" /><category term="code" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/code/default.aspx" /><category term="optimization" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/optimization/default.aspx" /><category term=".NET" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/.NET/default.aspx" /><category term="Tutorials" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Tutorials/default.aspx" /><category term="memory" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/memory/default.aspx" /><category term="stack" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/stack/default.aspx" /><category term="allocation" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/allocation/default.aspx" /><category term="asp.net" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/asp.net/default.aspx" /><category term="kernel32" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/kernel32/default.aspx" /><category term="pinvoke" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/pinvoke/default.aspx" /><category term="unsafe" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/unsafe/default.aspx" /></entry><entry><title>Improving Performance Through Stack Allocation (.NET Memory Management: Part 2) </title><link rel="alternate" type="text/html" href="http://www.atalasoft.com/cs/blogs/rickm/archive/2008/04/15/improving-performance-through-stack-allocation-net-memory-management-part-2.aspx" /><id>http://www.atalasoft.com/cs/blogs/rickm/archive/2008/04/15/improving-performance-through-stack-allocation-net-memory-management-part-2.aspx</id><published>2008-04-15T15:06:00Z</published><updated>2008-04-15T15:06:00Z</updated><content type="html">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 Heap and you are passed back a reference to the memory in which that allocated object lives. This is normally a very good thing because it allows you to safely do what you need with it and have it be magically garbage collected when there are no longer...(&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;</content><author><name>RickM</name><uri>http://www.atalasoft.com/cs/members/RickM.aspx</uri></author><category term="programming" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/programming/default.aspx" /><category term="C#" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/C_2300_/default.aspx" /><category term="code" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/code/default.aspx" /><category term=".NET" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/.NET/default.aspx" /><category term="Tutorials" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Tutorials/default.aspx" /><category term="memory" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/memory/default.aspx" /><category term="stack" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/stack/default.aspx" /><category term="allocation" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/allocation/default.aspx" /><category term="stack allocation" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/stack+allocation/default.aspx" /><category term="fixed" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/fixed/default.aspx" /><category term="stackalloc" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/stackalloc/default.aspx" /><category term="struct" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/struct/default.aspx" /><category term="unsafe" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/unsafe/default.aspx" /></entry><entry><title>Code Camp 9 in Waltham, a Retrospective</title><link rel="alternate" type="text/html" href="http://www.atalasoft.com/cs/blogs/rickm/archive/2008/04/07/code-camp-9-in-waltham-a-retrospective.aspx" /><id>http://www.atalasoft.com/cs/blogs/rickm/archive/2008/04/07/code-camp-9-in-waltham-a-retrospective.aspx</id><published>2008-04-07T16:02:00Z</published><updated>2008-04-07T16:02:00Z</updated><content type="html">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 were worthwhile to some degree. However, three stood out to me as particularly informative or entertaining: Advanced Techniques for Everyday Development by Edwin Ames While this talk was all business and no glitter it was by far the most informative...(&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;</content><author><name>RickM</name><uri>http://www.atalasoft.com/cs/members/RickM.aspx</uri></author><category term="C#" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/C_2300_/default.aspx" /><category term="experiences" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/experiences/default.aspx" /><category term=".NET" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/.NET/default.aspx" /><category term="Code Camp" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Code+Camp/default.aspx" /></entry><entry><title>Basic Memory Housekeeping (.NET Memory Management: Part 1)</title><link rel="alternate" type="text/html" href="http://www.atalasoft.com/cs/blogs/rickm/archive/2008/04/03/net-memory-managment-part-1-basic-housekeeping.aspx" /><id>http://www.atalasoft.com/cs/blogs/rickm/archive/2008/04/03/net-memory-managment-part-1-basic-housekeeping.aspx</id><published>2008-04-03T21:25:00Z</published><updated>2008-04-03T21:25:00Z</updated><content type="html">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 Performance Through Stack Allocation Part 3 – Increasing the Size of the Stack Disposing IDisposable Objects When an object implements IDisposable you can explicitly determine when it is finalized. In fact, IDisposable objects sometimes will not release...(&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;</content><author><name>RickM</name><uri>http://www.atalasoft.com/cs/members/RickM.aspx</uri></author><category term="C#" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/C_2300_/default.aspx" /><category term=".NET" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/.NET/default.aspx" /><category term="C++" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/C_2B002B00_/default.aspx" /><category term="VB.NET" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/VB.NET/default.aspx" /><category term="Tutorials" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Tutorials/default.aspx" /><category term="memory" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/memory/default.aspx" /><category term="struct" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/struct/default.aspx" /><category term="structs" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/structs/default.aspx" /><category term="IDisposable" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/IDisposable/default.aspx" /><category term="garbage collection" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/garbage+collection/default.aspx" /><category term="gc" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/gc/default.aspx" /></entry><entry><title>Counting Processors in .NET: The Pros and Cons of Five Different Methods</title><link rel="alternate" type="text/html" 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" /><id>http://www.atalasoft.com/cs/blogs/rickm/archive/2008/04/01/counting-processors-in-net-the-pros-and-cons-of-five-different-methods.aspx</id><published>2008-04-01T18:54:00Z</published><updated>2008-04-01T18:54:00Z</updated><content type="html">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; Supported Platforms: Windows 98 Or Greater, .NET 2.0 or Greater Pros: -Easiest Method -Value Cannot be Changed by The User -No External Calls (All .NET) Cons: -.NET 1.1 Incompatible -Logical CPU Count Only Misc: -Counts Each Core -Counts...(&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;</content><author><name>RickM</name><uri>http://www.atalasoft.com/cs/members/RickM.aspx</uri></author><category term="programming" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/programming/default.aspx" /><category term="C#" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/C_2300_/default.aspx" /><category term="code" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/code/default.aspx" /><category term=".NET" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/.NET/default.aspx" /><category term="C++" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/C_2B002B00_/default.aspx" /><category term="Processors" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Processors/default.aspx" /><category term="VB.NET" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/VB.NET/default.aspx" /></entry><entry><title>Script# converts C# into Javascript</title><link rel="alternate" type="text/html" href="http://www.atalasoft.com/cs/blogs/rickm/archive/2008/03/27/script-converts-c-into-javascript.aspx" /><id>http://www.atalasoft.com/cs/blogs/rickm/archive/2008/03/27/script-converts-c-into-javascript.aspx</id><published>2008-03-27T20:11:00Z</published><updated>2008-03-27T20:11:00Z</updated><content type="html">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 Studio integration as well as a unit testing framework. Nikhil Kothari has a fairly long blog post about it. You can find the documentation and download it from it's website . Share this post: email it! | bookmark it! | digg it! | reddit! | kick...(&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;</content><author><name>RickM</name><uri>http://www.atalasoft.com/cs/members/RickM.aspx</uri></author><category term="C# javascript asp.net Script#" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/C_2300_+javascript+asp.net+Script_2300_/default.aspx" /></entry><entry><title>Improving .Net Performance With Ngen: The Native Image Generator</title><link rel="alternate" type="text/html" href="http://www.atalasoft.com/cs/blogs/rickm/archive/2008/03/26/improving-dotnet-performance-with-ngen-the-native-image-generator.aspx" /><id>http://www.atalasoft.com/cs/blogs/rickm/archive/2008/03/26/improving-dotnet-performance-with-ngen-the-native-image-generator.aspx</id><published>2008-03-26T14:47:00Z</published><updated>2008-03-26T14:47:00Z</updated><content type="html">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 this Microsoft released a tool with .NET 1.1 called NGen (Native Image Generator) which allows you do precompile MSIL to real machine code and in so doing avoid much of the extra run-time overhead. What Do I Get From Generating Native Images? -Faster...(&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;</content><author><name>RickM</name><uri>http://www.atalasoft.com/cs/members/RickM.aspx</uri></author><category term="programming" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/programming/default.aspx" /><category term="F#" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/F_2300_/default.aspx" /><category term="C#" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/C_2300_/default.aspx" /><category term="code" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/code/default.aspx" /><category term="IL" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/IL/default.aspx" /><category term="optimization" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/optimization/default.aspx" /><category term="ngen" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/ngen/default.aspx" /><category term="MSIL" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/MSIL/default.aspx" /><category term=".NET" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/.NET/default.aspx" /></entry><entry><title>IS - The Meta-Meta Language-Language (and parametric compiler)</title><link rel="alternate" type="text/html" href="http://www.atalasoft.com/cs/blogs/rickm/archive/2008/03/24/is-the-meta-meta-language-language-and-parametric-compiler.aspx" /><link rel="enclosure" type="image/jpeg" length="57547" href="http://www.atalasoft.com/cs/blogs/rickm/attachment/13542.ashx" /><id>http://www.atalasoft.com/cs/blogs/rickm/archive/2008/03/24/is-the-meta-meta-language-language-and-parametric-compiler.aspx</id><published>2008-03-24T19:48:00Z</published><updated>2008-03-24T19:48:00Z</updated><content type="html">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, cola, jolt, &amp;amp;c), as far as I can tell the current development version is called cola . The key idea behind IS is that each layer of compilation is represented as pipeline of meta-extensible transformations: These transformations even extend to...(&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;</content><author><name>RickM</name><uri>http://www.atalasoft.com/cs/members/RickM.aspx</uri></author><category term="IS" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/IS/default.aspx" /><category term="programming" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/programming/default.aspx" /><category term="meta" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/meta/default.aspx" /></entry><entry><title>Clojure Impressions</title><link rel="alternate" type="text/html" href="http://www.atalasoft.com/cs/blogs/rickm/archive/2008/03/21/clojure-impressions.aspx" /><id>http://www.atalasoft.com/cs/blogs/rickm/archive/2008/03/21/clojure-impressions.aspx</id><published>2008-03-21T13:25:00Z</published><updated>2008-03-21T13:25:00Z</updated><content type="html">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 painful. Previously, I had never really looked closely at Clojure but I was struck by some of the really inventive ideas rolled into it. Immutable data structures have been heralded as the solution to all of our concurrent programming woes but copying...(&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;</content><author><name>RickM</name><uri>http://www.atalasoft.com/cs/members/RickM.aspx</uri></author><category term="clojure" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/clojure/default.aspx" /><category term="programming" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/programming/default.aspx" /><category term="wmassdevs" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/wmassdevs/default.aspx" /><category term="F#" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/F_2300_/default.aspx" /><category term="functional" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/functional/default.aspx" /></entry><entry><title>The Evolution of Lambda Functions in C#</title><link rel="alternate" type="text/html" href="http://www.atalasoft.com/cs/blogs/rickm/archive/2008/03/20/the-evolution-of-lambda-functions-in-c.aspx" /><id>http://www.atalasoft.com/cs/blogs/rickm/archive/2008/03/20/the-evolution-of-lambda-functions-in-c.aspx</id><published>2008-03-20T14:24:00Z</published><updated>2008-03-20T14:24:00Z</updated><content type="html">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 Methods, and 3.0 Introduced Lambda Expressions. I had been wondering what made Lambda Expressions in C# so much better then Delegates or Anonymous Methods other then the shortened syntax. It turns out that the really interesting thing about Lambdas...(&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;</content><author><name>RickM</name><uri>http://www.atalasoft.com/cs/members/RickM.aspx</uri></author><category term="programming" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/programming/default.aspx" /><category term="delegates" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/delegates/default.aspx" /><category term="anonymous functions" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/anonymous+functions/default.aspx" /><category term="C#" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/C_2300_/default.aspx" /><category term="lamba" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/lamba/default.aspx" /></entry><entry><title>Google's Leptonica</title><link rel="alternate" type="text/html" href="http://www.atalasoft.com/cs/blogs/rickm/archive/2008/03/17/google-s-leptonica.aspx" /><id>http://www.atalasoft.com/cs/blogs/rickm/archive/2008/03/17/google-s-leptonica.aspx</id><published>2008-03-17T18:21:00Z</published><updated>2008-03-17T18:21:00Z</updated><content type="html">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: Most of these tools are available as open source with very non-restrictive licenses. Things that were once hard to implement and expensive to buy will be commoditized . A great example of this is a little known project called Leptonica . Managed...(&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;</content><author><name>RickM</name><uri>http://www.atalasoft.com/cs/members/RickM.aspx</uri></author><category term="google" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/google/default.aspx" /><category term="ecm" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/ecm/default.aspx" /><category term="leptonica" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/leptonica/default.aspx" /><category term="ecmi" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/ecmi/default.aspx" /></entry><entry><title>Immutable Data Structures in OO Languages.</title><link rel="alternate" type="text/html" href="http://www.atalasoft.com/cs/blogs/rickm/archive/2008/03/13/immutable-data-structures-in-oo-languages.aspx" /><id>http://www.atalasoft.com/cs/blogs/rickm/archive/2008/03/13/immutable-data-structures-in-oo-languages.aspx</id><published>2008-03-13T17:53:00Z</published><updated>2008-03-13T17:53:00Z</updated><content type="html">&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;</content><author><name>RickM</name><uri>http://www.atalasoft.com/cs/members/RickM.aspx</uri></author><category term="functional" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/functional/default.aspx" /><category term="concurrency" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/concurrency/default.aspx" /><category term="object oriented" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/object+oriented/default.aspx" /><category term="oo" scheme="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/oo/default.aspx" /></entry></feed>