<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/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>Rico Mariani's Performance Tidbits : ramblings</title><link>http://blogs.msdn.com/ricom/archive/tags/ramblings/default.aspx</link><description>Tags: ramblings</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>I'm not 30 yet, I'm only 0x2d :)</title><link>http://blogs.msdn.com/ricom/archive/2009/09/07/i-m-not-30-yet-i-m-only-0x2d.aspx</link><pubDate>Tue, 08 Sep 2009 02:35:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9892333</guid><dc:creator>ricom</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/ricom/comments/9892333.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ricom/commentrss.aspx?PostID=9892333</wfw:commentRss><description>&lt;P&gt;A friend of mine pointed out that, in hex, I'm under 30 :)&lt;/P&gt;
&lt;P&gt;How wonderful!&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9892333" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ricom/archive/tags/ramblings/default.aspx">ramblings</category></item><item><title>Visual Studio: Why is there no 64 bit version?  (yet)</title><link>http://blogs.msdn.com/ricom/archive/2009/06/10/visual-studio-why-is-there-no-64-bit-version.aspx</link><pubDate>Thu, 11 Jun 2009 06:34:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9725681</guid><dc:creator>ricom</dc:creator><slash:comments>78</slash:comments><comments>http://blogs.msdn.com/ricom/comments/9725681.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ricom/commentrss.aspx?PostID=9725681</wfw:commentRss><description>&lt;P&gt;&lt;EM&gt;Disclaimer: This is yet another of my trademarked "approximately correct" discussions&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;From time to time customers or partners ask me about our plans to create a 64 bit version of Visual Studio. When is it coming? Why aren’t we making it a priority? Haven’t we noticed that 64 bit PC’s are very popular? Things like that. We just had an internal discussion about “the 64 bit issue” and so I thought I would elaborate a bit on that discussion for the blog-o-sphere.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;So why not 64 bit right away?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Well, there are several concerns with such an endeavor.&lt;/P&gt;
&lt;P&gt;First, from a performance perspective the pointers get larger, so data structures get larger, and the processor cache stays the same size. That basically results in a raw speed hit (your mileage may vary).&amp;nbsp; So you start in a hole and you have to dig yourself out of that hole by using the extra memory above 4G to your advantage.&amp;nbsp; In Visual Studio this can happen in some large solutions but I think a preferable thing to do is to just use less memory in the first place.&amp;nbsp; Many of VS’s algorithms are amenable to this.&amp;nbsp; Here’s an old article that discusses the performance issues at some length: &lt;A href="http://blogs.msdn.com/joshwil/archive/2006/07/18/670090.aspx" mce_href="http://blogs.msdn.com/joshwil/archive/2006/07/18/670090.aspx"&gt;http://blogs.msdn.com/joshwil/archive/2006/07/18/670090.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Secondly, from a cost perspective, probably the shortest path to porting Visual Studio to 64 bit is to port most of it to managed code incrementally and then port the rest.&amp;nbsp; The cost of a full port of that much native code is going to be quite high and of course all known extensions would break and we’d basically have to create a 64 bit ecosystem pretty much like you do for drivers.&amp;nbsp; Ouch.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;[Clarification 6/11/09: The issue is this:&amp;nbsp; If all you wanted to do was move the code to 64 bit then yes the shortest path is to do a direct port.&amp;nbsp; But that’s never the case.&amp;nbsp; In practice porting has an opportunity cost, it competes with other desires.&amp;nbsp; So what happens is more like this:&amp;nbsp; you get teams that have&amp;nbsp;C++ code written for 32 bits and they say “I want to write feature X, if I port to managed I can do feature X plus other things more easily, that seems like a good investment” so they go to managed code for other reasons.&amp;nbsp; But now they also have a path to 64 bit.&amp;nbsp; What’s happening in practice is that more and more of the&amp;nbsp;Visual Studio&amp;nbsp;is becoming managed for reasons unrelated to bitness. Hence a sort of net-hybrid porting strategy over time.]&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;So, all things considered, my feeling is that the best place to run VS for this generation is in the 32 bit emulation mode of a 64 bit operating system; this doubles your available address space without taking the data-space hit and it gives you extra benefits associated with that 64 bit OS.&amp;nbsp; More on those benefits later.&lt;/P&gt;
&lt;P&gt;Having said that, I know there are customers that &lt;EM&gt;would&lt;/EM&gt; benefit from a 64 bit version but I actually think that amount of effort would be better spent in reducing the memory footprint of the IDE’s existing structures rather than doing a port.&amp;nbsp; There are many tradeoffs here and&amp;nbsp; the opportunity cost of the port is high.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Is it expensive because the code is old and of poor quality?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;It’s not really about the quality of the code – a lot of it is only a few releases old – as it is the &lt;I&gt;amount&lt;/I&gt; of code involved.&amp;nbsp; Visual Studio is huge and most of its packages wouldn’t benefit from 64 bit addressing but nearly all of it would benefit from using more lazy algorithms – the tendency to load too much about the current solution is a general problem which results in slowness even when there is enough memory to do the necessary work.&amp;nbsp; Adding more memory to facilitate doing even more work that we shouldn’t be doing in the first place tends to incent the wrong behavior.&amp;nbsp; I want to load less, not more.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Doesn’t being a 64 bit application save you all kinds of page faults and so forth?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;A 64 bit address space for the &lt;EM&gt;process &lt;/EM&gt;isn’t going to help you with page faults except in maybe indirect ways, and it will definitely hurt you in direct ways because your data is bigger.&amp;nbsp; In contrast a 64 bit &lt;EM&gt;operating system &lt;/EM&gt;could help you a lot!&amp;nbsp; If you’re running as a 32 bit app on a 64 bit OS then you get all of the 4G address space and all of that could be backed by physical memory (if you have the RAM) even without you using 64 bit pointers yourself.&amp;nbsp;&amp;nbsp; You’ll see potentially huge improvements related to the size of the disk cache (not in your address space) and the fact that your working set won’t need to be eroded in favor of other processes as much.&amp;nbsp; Transient components and data (like C++ compilers and their big .pch files) stay cached&amp;nbsp; in physical memory, but not in your address space.&amp;nbsp; 32 bit processes accrue all these benefits just as surely as 64 bit ones.&lt;/P&gt;
&lt;P&gt;In fact, the only direct benefit you get from having more address space for your process is that you can allocate more total memory, but if we’re talking about scenarios that already fit in 4G then making the pointers bigger could cause them to not fit and certainly will make them take more memory, never less.&amp;nbsp; If you don’t have abundant memory that growth&amp;nbsp;might make you page, and even if you do have the memory it will certainly make you miss the cache more often.&amp;nbsp; Remember the cache size does not grow in 64 bit mode but your data structures do.&amp;nbsp; Where you might get savings is if the bigger address space allowed you to have less fragmentation and more sharing.&amp;nbsp; But Vista+ &lt;A href="http://en.wikipedia.org/wiki/Address_space_layout_randomization" mce_href="http://en.wikipedia.org/wiki/Address_space_layout_randomization"&gt;auto-relocates&lt;/A&gt; images efficiently anyway for other reasons so this is less of a win.&amp;nbsp; You might also get benefits if the 64 bit instruction set is especially good for your application (e.g. if you do a ton of 64 bit math)&lt;/P&gt;
&lt;P&gt;So, the only way you’re going to see serious benefits is if you have scenarios that simply will not fit into 4G at all.&amp;nbsp; But, in Visual Studio anyway, when we don’t fit into 4G of memory I have never once found myself thinking “wow, System X needs more address space” I always think “wow, System X needs to go on a diet.”&lt;/P&gt;
&lt;P&gt;Your mileage may vary and you can of course imagine certain VS packages (such as a hypothetical data analytics debugging system) that might require staggering amounts of memory but those should be handled as special cases. And it is possible for us to do a hybrid plan with including some 64 bit slave processes.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;I do think we might seem less cool because we’re 32 bit only but I think the right way to fight that battle is with good information, and a great product.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Then why did Office make the decision to go 64 bit?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;This section is &lt;EM&gt;entirely recreational speculation &lt;/EM&gt;because I didn’t ask them (though frankly I should). But I think I can guess why. Maybe a kind reader can tell me how wrong I am :)&lt;/P&gt;
&lt;P&gt;First, some of the hardest porting issues aren’t about getting the code to run properly but are about making sure that the file formats the new code generates remain compatible with previous (and future) versions of those formats. Remember, the ported code now thinks it has 64 bit offsets in some data structures.&amp;nbsp; That compatibility could be expensive to achieve because these things find their way into subtle places – potentially any binary file format could have pointer-size issues. However, Office already did a pass on all its file formats to standardize them on compressed XML, so they cannot possibly have embedded pointers anymore. That’s a nice cost saver on the road to 64 bit products.&lt;/P&gt;
&lt;P&gt;Secondly, on the benefit side, there are customers out there that would love to load enormous datasets into Excel or Access and process them interactively. Now in Visual Studio I can look you in the face and say “even if your solution has more than 4G of files I shouldn’t have to load it all for you to build and refactor it” but that’s a much harder argument to make for say Excel.&lt;/P&gt;
&lt;P&gt;In Visual Studio if you needed to do a new feature like debugging of a giant analytics system that used a lot of memory I would say “make that analytics debugging package 64 bit, the rest can stay the way they are” but porting say half of Excel to 64 bits isn’t exactly practical.&lt;/P&gt;
&lt;P&gt;So the Office folks have different motivations and costs and therefore came to different conclusions -- the above are just my personal uninformed guesses as to why that might be the case.&lt;/P&gt;
&lt;P&gt;One thing is for sure though: I definitely think that the benefits of the 64 bit operating system are huge for everyone. Even if it was nothing more than using all that extra memory as a giant disk cache, just that can be fabulous, and you get a lot more than that!&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9725681" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ricom/archive/tags/performance/default.aspx">performance</category><category domain="http://blogs.msdn.com/ricom/archive/tags/ramblings/default.aspx">ramblings</category><category domain="http://blogs.msdn.com/ricom/archive/tags/design+advice/default.aspx">design advice</category><category domain="http://blogs.msdn.com/ricom/archive/tags/visual+studio/default.aspx">visual studio</category></item><item><title>Is Performance a "functional" requirement?</title><link>http://blogs.msdn.com/ricom/archive/2008/08/27/is-performance-a-functional-requirement.aspx</link><pubDate>Wed, 27 Aug 2008 19:57:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8900780</guid><dc:creator>ricom</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/ricom/comments/8900780.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ricom/commentrss.aspx?PostID=8900780</wfw:commentRss><description>&lt;P&gt;We had an internal thread on this yesterday, maybe I was a little too glib but here is what I had to say about the topic [edited so it can be read standalone]&lt;/P&gt;
&lt;P&gt;The original question, “Is performance a functional requirement” is highly unexciting for me.&amp;nbsp; However the revised question, “What is the best way to capture performance requirements” is profoundly interesting.&amp;nbsp; It is precisely the (anti-)correlations between attainable functionality and level of responsiveness that sometimes makes for the very best engineering work.&amp;nbsp; How do you capture all this?&amp;nbsp; Sometimes pervasively. I would argue that pervasively is in fact the only answer that works in non-trivial cases.&amp;nbsp; And this is not limited to performance as the quality metric of interest – it applies to any quality that is not going to be trivially achieved.&lt;/P&gt;
&lt;P&gt;The nomenclature to me is uninteresting except to the extent that it assists designers and implementers in capturing&amp;nbsp; and understanding the various kinds of requirements – i.e. I know where to put them, I know where to find them, I know that I got them all, because I am, literally, on a first name basis with all the requirement types.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;I don’t want to trivialize that aspect, but, beyond that, meh, whatever… functional schmuntional, I don’t care what you call it, just do it :)&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8900780" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ricom/archive/tags/performance/default.aspx">performance</category><category domain="http://blogs.msdn.com/ricom/archive/tags/ramblings/default.aspx">ramblings</category></item><item><title>Celebrating Twenty with a Pint</title><link>http://blogs.msdn.com/ricom/archive/2008/08/15/celebrating-twenty-with-a-pint.aspx</link><pubDate>Fri, 15 Aug 2008 21:42:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8870391</guid><dc:creator>ricom</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/ricom/comments/8870391.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ricom/commentrss.aspx?PostID=8870391</wfw:commentRss><description>&lt;P&gt;No it isn't what you think. :)&lt;/P&gt;
&lt;P&gt;Today is my 20th anniversary at Microsoft.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Wow.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;20 years of doing anything is pretty amazing and 20 of this definitely counts as amazing, to me anyway.&amp;nbsp; It's been a lot of fun.&lt;/P&gt;
&lt;P&gt;I got to celebrate in a very special way.&amp;nbsp; You see, I have &lt;A href="http://en.wikipedia.org/wiki/Hereditary_hemochromatosis" mce_href="http://en.wikipedia.org/wiki/Hereditary_hemochromatosis"&gt;Hereditary Hemochromatosis&lt;/A&gt; -- an Iron Overload condition -- and I've been having therapy for it for many years.&amp;nbsp; It's really very pleasant therapy, I go to the blood center every few weeks and they take a pint of blood, it keeps the iron under control.&amp;nbsp; I even get cookies and juice! &lt;/P&gt;
&lt;P&gt;Until today they had to throw that blood away because I was a therapeutic donor.&amp;nbsp; Today was special. Many years ago studies had shown that the blood of hemochromatic donors was safe to use and the FDA recently approved my &lt;A href="http://www.psbc.org/home/index.htm" mce_href="http://www.psbc.org/home/index.htm"&gt;local blood center&lt;/A&gt; to join others in&lt;A href="http://www.bloodcenters.org/donating/hemochromatosis.htm" mce_href="http://www.bloodcenters.org/donating/hemochromatosis.htm"&gt; accepting donations&lt;/A&gt; from people with my condition.&lt;/P&gt;
&lt;P&gt;So, although they've been taking my blood for 15 years (sometimes as often as once per week!) today was the first time I *gave* blood that could be used by others.&lt;/P&gt;
&lt;P&gt;I thought it was a great way to celebrate, I hope lots of you join me.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8870391" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ricom/archive/tags/ramblings/default.aspx">ramblings</category></item><item><title>My Last Words to Bill</title><link>http://blogs.msdn.com/ricom/archive/2008/06/30/my-last-words-to-bill.aspx</link><pubDate>Mon, 30 Jun 2008 20:57:10 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8672058</guid><dc:creator>ricom</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/ricom/comments/8672058.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ricom/commentrss.aspx?PostID=8672058</wfw:commentRss><description>&lt;p&gt;We had a little internal yearbook thing you could sign for Bill last week.&amp;#160; This is what I wrote:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Dear Bill, &lt;/p&gt;  &lt;p&gt;In not too many weeks now I&amp;#8217;ll be celebrating my 20th anniversary at Microsoft.&amp;#160; I think I owe you some thanks for these 20 years, and some from before. &lt;/p&gt;  &lt;p&gt;In fall of 1979 I got my first real access to a computer. It was a Commodore PET and it was running Microsoft BASIC.&amp;#160; For me, and many others like me, that exposure caused a radical change in our life trajectories.&amp;#160; &lt;/p&gt;  &lt;p&gt;By Christmas I was learning 6502 assembler and those MOS tech handbooks were not exactly rich in examples.&amp;#160; If you wanted to see *real* code you had to disassemble/understand the ROMs.&amp;#160; So I guess what I&amp;#8217;m saying is that, at the tender age of 15, I was ripping off your intellectual property.&amp;#160; Sorry about that. &lt;/p&gt;  &lt;p&gt;I did manage to get pretty good at 6502 assembler and I like to think some of that code was yours, so I tell my friends I got my first low level programming lessons from Bill Gates.&amp;#160; Of course you didn&amp;#8217;t know it, but it was nonetheless successful long-distance education through the magic of software. &lt;/p&gt;  &lt;p&gt;Eight years, one diploma, and one degree later, I landed in Redmond.&amp;#160; That was 1988.&amp;#160; Since then, I&amp;#8217;ve had many chances to meet, learn from, and work with some great people inside and outside of Microsoft &amp;#8211; even Melinda for a time &amp;#8211; and in turn affect the lives of others.&amp;#160; &lt;/p&gt;  &lt;p&gt;Thank you for the education, the opportunities, and the inspiration. &lt;/p&gt;  &lt;p&gt;-Rico&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8672058" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ricom/archive/tags/ramblings/default.aspx">ramblings</category></item><item><title>Cycles in Computer Science, or Am I Ancient?</title><link>http://blogs.msdn.com/ricom/archive/2008/05/05/cycles-in-computer-science-or-am-i-ancient.aspx</link><pubDate>Mon, 05 May 2008 20:11:32 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8460942</guid><dc:creator>ricom</dc:creator><slash:comments>12</slash:comments><comments>http://blogs.msdn.com/ricom/comments/8460942.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ricom/commentrss.aspx?PostID=8460942</wfw:commentRss><description>&lt;p&gt;It's been a strange couple of weeks.&amp;#160; No, really.&lt;/p&gt;  &lt;p&gt;It all started when a friend of mine, let's call him &amp;quot;Desi&amp;quot;, posted a question asking about what he should do in his last few months of college.&amp;#160; A reasonable enough question and I guess I'm as qualified as anyone to give him some advice because it was a question about computer science courses he could take rather than general career guidance.&amp;#160; Well maybe I'd be qualified to give advice on that too but anyway... let's at least try to stay on topic.&lt;/p&gt;  &lt;p&gt;So far so good.&amp;#160; But here's the kicker, he was considering taking a course in C++ but was dubious about its value because it was &amp;quot;ANCIENT&amp;quot; [emphasis in original].&lt;/p&gt;  &lt;p&gt;Eeep.&lt;/p&gt;  &lt;p&gt;But... but... it can't be ancient.&amp;#160; I mean, wasn't it just last week I was reading some OOPSLA notes on C++ -- no wait that was 20 years ago.&amp;#160; Could it be true?&lt;/p&gt;  &lt;p&gt;But wait it gets better.&lt;/p&gt;  &lt;p&gt;Then I went to this other talk where people were talking about the importance of C++ and how many companies [many of which are important MS customers] have great investments in C++; they have highly valueable and important codebases that their company's future is based on.&amp;#160; Microsoft of course has huge investments in C++ that we expect to endure for some time.&lt;/p&gt;  &lt;p&gt;Wow ok so all that is true but I had this feeling of d&amp;#233;j&amp;#224; vu.&amp;#160; Hadn't I heard a talk just like this one while I was in college?&amp;#160; I think I had... it was about COBOL.&amp;#160; We were too cool for COBOL back then, or perhaps too unenlightened is more accurate.&lt;/p&gt;  &lt;p&gt;Let's see, if we take 1960 as the birth of COBOL (1959-61 seems to be the range of initial activity) that would mean that in 1985 it was 25 years old.&amp;#160; Let's say that my opinion of COBOL in 1985 was not especially high.&amp;#160; But wait that same year could arguably be called the birthday of C++ because the first commercial C++ compiler became available then.&amp;#160; So let's see -- it's now 2008.... so C++ is 23 years old.&amp;#160; The same age as COBOL when I started college.&lt;/p&gt;  &lt;p&gt;The fact that I can even offer this perspective is already making me feel old :)&lt;/p&gt;  &lt;p&gt;But, aside from nostalgia and pointing out what a nub I was in college, what's my point?&amp;#160; I always have a point right.&amp;#160; And I assure you it isn't slamming folks still working on COBOL because high quality COBOL implementations have continued to show the viability/future of that programming language for my entire career.&lt;/p&gt;  &lt;p&gt;My point is this:&amp;#160; In many ways the same kinds of problems face our industry today as always.&amp;#160; Migration of existing codebases to the latest technology while preserving their value isn't a new problem, it's an old one.&amp;#160; And I use the word migration loosely because often it's not really some kind of conversion or retirement of code but rather more like a meeting of worlds.&lt;/p&gt;  &lt;p&gt;When I was in college one of the big buzzwords we heard about was 4th generation languages, and sometimes even (ooo, aaah) 5th generation languages.&amp;#160; I don't know if I would really score the industry very high in terms of actual *language* evolution in the last 25 years (though I'll be the first to give Anders kudos for enabling your average VB programmer to use functional programming constructs without even having to know it).&amp;#160; Where I will score us highly is in runtime evolution.&lt;/p&gt;  &lt;p&gt;So programming languages are somewhat similar, at least broadly speaking, to what they were say 25 years ago.&amp;#160; What's changed is the environments we like to run in.&amp;#160; GUI environments drove event-based programming which caused a need to express those notions.&amp;#160; Object oriented programming fit that need well and had other benefits and so many embraced it, or borrowed notions from it (tell me, what's the difference between a MessageProc (with its associated switch statement) and an object with vtable?&amp;#160; Mostly syntatic sugar.&amp;#160; But the programming model is fundamentally different than say a console application.&lt;/p&gt;  &lt;p&gt;Now its happening again, and the real need facing C++ programmers is somewhat the same as what faced COBOL programmers say 25 years ago.&amp;#160; It's not that the language is out of joint -- it isn't.&amp;#160; I mean, ok maybe you like or don't like COBOL syntax but that doesn't doom a language and surely C++ syntax is not the zenith of wonderfulness.&amp;#160; But that isn't what's holding C++ programmers back.&amp;#160; The biggest problem, at least in my opinion, is one of accessing new/modern runtime features that may have a different programming environment from the context of an existing environment.&amp;#160; Hybrid applications are the norm.&lt;/p&gt;  &lt;p&gt;Most programming languages you can name have natural environments that they like to run in and natural kinds of application notions they can express well.&amp;#160; &lt;/p&gt;  &lt;p&gt;And now, GUI environments are changing; more declarative models like the WPF/XAML programming model are becoming popular.&amp;#160; Multi-threaded needs are becoming more mainstream.&amp;#160; Then there are all the rich client models like AJAX.&amp;#160; And many others.&amp;#160; Many of these have complicated resource management problems that make you want to reach for languages that have automatic management of resources (like the .NET family and Java).&lt;/p&gt;  &lt;p&gt;The truly successful environments of the future may have more to do with their ability to mesh together many different kinds of assets than defining some new uber language and uber runtime.&amp;#160; I'd love to do this nowish because, 25 years from now, I bet there will be something newer/better and I don't want to have to migrate an industry again.&amp;#160; :)&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8460942" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ricom/archive/tags/ramblings/default.aspx">ramblings</category></item><item><title>Sara Ford goes retro</title><link>http://blogs.msdn.com/ricom/archive/2008/02/29/sara-ford-goes-retro.aspx</link><pubDate>Fri, 29 Feb 2008 16:51:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7947554</guid><dc:creator>ricom</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/ricom/comments/7947554.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ricom/commentrss.aspx?PostID=7947554</wfw:commentRss><description>&lt;P&gt;In honor of the leap year, she's &lt;A class="" href="http://blogs.msdn.com/saraford" mce_href="http://blogs.msdn.com/saraford"&gt;posted&lt;/A&gt; a couple of articles I wrote back around 1993 describing things you could do in VC++ 2.0.&amp;nbsp; Oddly enough most of them are still applicable.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;Cheers Sara&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7947554" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ricom/archive/tags/ramblings/default.aspx">ramblings</category><category domain="http://blogs.msdn.com/ricom/archive/tags/recommendations/default.aspx">recommendations</category></item><item><title>Programs to Run</title><link>http://blogs.msdn.com/ricom/archive/2007/10/20/programs-to-run.aspx</link><pubDate>Sun, 21 Oct 2007 04:05:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5559523</guid><dc:creator>ricom</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/ricom/comments/5559523.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ricom/commentrss.aspx?PostID=5559523</wfw:commentRss><description>&lt;P&gt;I haven't posted anything "fun" for a while.&amp;nbsp; Here's another of my little parody songs.&lt;/P&gt;
&lt;P&gt;Based on Sheryl Crow's&amp;nbsp;"&lt;STRONG&gt;Soak&lt;/STRONG&gt; &lt;STRONG&gt;Up&lt;/STRONG&gt; &lt;STRONG&gt;The&lt;/STRONG&gt; &lt;STRONG&gt;Sun&lt;/STRONG&gt;"&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Programs to Run&lt;/STRONG&gt;&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;My friend the program lead&lt;BR&gt;Can't even code in VB&lt;BR&gt;I can't afford his bloat&lt;BR&gt;So I'm stuck here fixing his tree&lt;/P&gt;
&lt;P&gt;I don't have profile runs&lt;BR&gt;I don't have diddly squat&lt;BR&gt;I just wish they had a goal&lt;BR&gt;It's not like I ask a lot&lt;/P&gt;
&lt;P&gt;CHORUS:&lt;/P&gt;
&lt;P&gt;I've got programs to run&lt;BR&gt;Gotta tell everyone&lt;BR&gt;To speed them up&lt;/P&gt;
&lt;P&gt;I'm gonna tell them that:&lt;/P&gt;
&lt;P&gt;I've got no-one to blame&lt;BR&gt;for every function that's lame&lt;BR&gt;I'll speed it up&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;I've got a crummy test&lt;BR&gt;It don't help near enough&lt;BR&gt;To find the things it takes&lt;BR&gt;To fix these these bugs they're so tough&lt;/P&gt;
&lt;P&gt;Every time I turn around&lt;BR&gt;The space goes up, the speed is down&lt;BR&gt;Surely if they only knew&lt;BR&gt;They wouldn't act the way they do?&lt;BR&gt;I think I'm going crazy too!&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;CHORUS&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;Don't have no testing suite&lt;BR&gt;But I'm still the king of speed&lt;BR&gt;You've got to ship worldwide, but baby&lt;BR&gt;I'm the one with goals to meet&lt;/P&gt;
&lt;P&gt;Every time I turn around&lt;BR&gt;The space goes up, the speed is down&lt;BR&gt;Surely if they only knew&lt;BR&gt;They wouldn't act the way they do?&lt;BR&gt;I think I'm going crazy too!&lt;/P&gt;
&lt;P&gt;CHORUS&lt;/P&gt;
&lt;P&gt;I've got programs to run&lt;BR&gt;Got my profiler set&lt;BR&gt;So I can rock on&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=5559523" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ricom/archive/tags/ramblings/default.aspx">ramblings</category></item><item><title>News About Me</title><link>http://blogs.msdn.com/ricom/archive/2007/07/12/news-about-me.aspx</link><pubDate>Thu, 12 Jul 2007 23:23:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3836160</guid><dc:creator>ricom</dc:creator><slash:comments>38</slash:comments><comments>http://blogs.msdn.com/ricom/comments/3836160.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ricom/commentrss.aspx?PostID=3836160</wfw:commentRss><description>&lt;P mce_keep="true"&gt;From time to time things get shuffled around here and I was involved in a recent shuffle that has changed my job yet again.&amp;nbsp; I’ve been working directly on performance in one capacity or another for nearly 5 years now but a few weeks ago I was asked to take on a new, broader, job.&amp;nbsp; That job is Chief Architect of Visual Studio.&amp;nbsp; I could hardly say no. &lt;/P&gt;
&lt;P&gt;So, I hope you’ll all be pleased and you won’t worry that I will suddenly forget everything I knew about performance or stop driving performance excellence at Microsoft but I will have a new way to do that.&amp;nbsp; 
&lt;P&gt;Naturally with Beta 2 of Orcas coming “soon” the results of my old job are what you’re likely to see in terms of Visual Studio performance (and other things) for a while, but hopefully that will change – in a good way – in the months and years&amp;nbsp;to come. 
&lt;P&gt;Wish me luck. It’s a huge job.&amp;nbsp; Easily the biggest of my career.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3836160" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ricom/archive/tags/ramblings/default.aspx">ramblings</category></item><item><title>Partly sunny, chance of showers, bring an umbrella</title><link>http://blogs.msdn.com/ricom/archive/2007/06/13/partly-sunny-chance-of-showers-bring-an-umbrella.aspx</link><pubDate>Thu, 14 Jun 2007 00:23:34 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3274867</guid><dc:creator>ricom</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/ricom/comments/3274867.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ricom/commentrss.aspx?PostID=3274867</wfw:commentRss><description>&lt;p&gt;Everyone knows that my 10 rules of performance are measure, measure, measure... etc. 10 times :)&lt;/p&gt; &lt;p&gt;OK, well, if you didn't know, now you do.&lt;/p&gt; &lt;p&gt;But does that mean that every time you tell someone about performance problems and/or risks that you should be doing so in quantitative terms?&lt;/p&gt; &lt;p&gt;I think not.&amp;nbsp; Although that got me a little friendly scolding today -- "What's up with this commentary with no numbers Rico?"&lt;/p&gt; &lt;p&gt;I'll tell you what's up:&amp;nbsp; In a performance report, like any form of communication,&amp;nbsp;&amp;nbsp;it's important to know your audience and give them data in a form that is both useful and consumable.&amp;nbsp; What does that mean?&amp;nbsp; Well it means that if someone asks you what the weather is going to be like this afternoon probably giving them a description of location of local isotherms isn't what they had in mind.&amp;nbsp; It's a lot more likely that they just want to know if they need to bring their umbrella.&amp;nbsp; &lt;/p&gt; &lt;p&gt;Now you don't want to be redendering your opinion on the weather, or anything else for that matter, without reasonable data to base it on but that does not mean that you need to present every bit of the data or even any of it for any particular audience.&lt;/p&gt; &lt;p&gt;One of the things that I often get asked to do is to provide a gut-level feel as to where we are likely to run into trouble, and why.&amp;nbsp; This helps to provide some coarse steering and also to set the level of urgency.&amp;nbsp; This is an important function and it's not one that needs to be encumbered with vast amounts of data.&amp;nbsp; In fact, vast amounts of data can do the opposite -- make the conclusions less approachable, less likely to be read, and less likely to be acted upon.&lt;/p&gt; &lt;p&gt;It's important that when asked you can back up your reasoning with hard numbers but it's not always important, or even a good idea, to encumber executive summaries with a lot of data.&amp;nbsp; And it's certainly a good idea to keep your executives duly summarized.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3274867" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ricom/archive/tags/ramblings/default.aspx">ramblings</category></item><item><title>Everything I ever needed to know about programming I learned in Gamergarten</title><link>http://blogs.msdn.com/ricom/archive/2007/04/06/everything-i-ever-needed-to-know-about-programming-i-learned-in-gamergarten.aspx</link><pubDate>Fri, 06 Apr 2007 19:50:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2040876</guid><dc:creator>ricom</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.msdn.com/ricom/comments/2040876.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ricom/commentrss.aspx?PostID=2040876</wfw:commentRss><description>&lt;UL&gt;
&lt;LI&gt;Don't block the user from moving her ship while she fires her laser at the space aliens&lt;/LI&gt;
&lt;LI&gt;Don't redraw more of the screen than you have to when the aliens move&lt;/LI&gt;
&lt;LI&gt;Make sure the sounds start right away when the buttons are pushed&lt;/LI&gt;
&lt;LI&gt;It's better to not have a bonus ship go across the screen if its presence makes the game laggy&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I love &lt;A href="http://msdn2.microsoft.com/en-us/xna/default.aspx" mce_href="http://msdn2.microsoft.com/en-us/xna/default.aspx"&gt;XNA&lt;/A&gt;.&amp;nbsp; Really I do.&amp;nbsp; Not because I think writing games is the single most important activity on the planet -- although maybe it is -- but because I think it's one of the most educational things a budding programmer can do.&lt;/P&gt;
&lt;P&gt;Game development is a great exercise because, even with fancy graphics hardware and super-computer like CPU resources available, it's so constrained.&amp;nbsp; You always want to get the most out of that hardware because that's what will make your game great.&amp;nbsp; Real considerations like frame-rate, lag, available textures, are in your face and directly impact the users experience in comparatively easy to understand ways.&lt;/P&gt;
&lt;P&gt;Everyone should write a (little) game at least once in their life and I wish more Computer Science students did just that.&lt;/P&gt;
&lt;P&gt;Some people have to spend an entire career unlearning callously taught maxims like "You should just let the [compiler|hardware] guys do the optimization", "Don't worry about performance, the [.NET|Java] runtime takes care of that for you."&amp;nbsp; &lt;/P&gt;
&lt;P&gt;If you're in school now, trust me... It ain't so.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Perhaps more than anything else I could possibly teach a CS student it would be not a datastructure, or a programming language but a basic understanding of the costs of low and medium level operations common in programming today.&amp;nbsp; Maybe that's why I'm so motivated to talk about &lt;A href="http://blogs.msdn.com/ricom/archive/tags/signatures/default.aspx" mce_href="http://blogs.msdn.com/ricom/archive/tags/signatures/default.aspx"&gt;performance signatures&lt;/A&gt;.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2040876" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ricom/archive/tags/performance/default.aspx">performance</category><category domain="http://blogs.msdn.com/ricom/archive/tags/ramblings/default.aspx">ramblings</category></item><item><title>Good Advice Scorned</title><link>http://blogs.msdn.com/ricom/archive/2007/01/19/good-advice-scorned.aspx</link><pubDate>Fri, 19 Jan 2007 21:04:47 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1493936</guid><dc:creator>ricom</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/ricom/comments/1493936.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ricom/commentrss.aspx?PostID=1493936</wfw:commentRss><description>&lt;p&gt;I thought it might be interesting to start a discussion about what is possibly the number one frustration of the performance architect:&amp;nbsp; What do you do when they &lt;em&gt;won't listen to you&lt;/em&gt;?&lt;/p&gt; &lt;p&gt;I'm sure you've all faced this, you lay out the situation, you show them the numbers and your team still won't take the actions needed to avoid the forecasted problems.&amp;nbsp; Then what?&lt;/p&gt; &lt;p&gt;Well, you could put on your best Vincent Price voice and read them this poem:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Once, twice, three times warned,&lt;br&gt;And each time good advice you've scorned.&lt;br&gt;See the perf disaster loom,&lt;br&gt;Now you face your project's doom!&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;That's certainly a dramatic attention getter, but is it likely to help?&amp;nbsp; Err, probably not -- unless you're trying to get yourself a whole lot of time away from it all.&lt;/p&gt; &lt;p&gt;So what do you do?&amp;nbsp; Well, one reason I'm making this posting is I'd like to hear what sorts of things you do.&amp;nbsp; But let me tell you what I do:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;My job is to help my team make better decisions, it doesn't end the moment they make one that I don't think is the best, if anything that makes my job all the more important going forward.&lt;br&gt;&lt;/li&gt; &lt;li&gt;If we've decided to take a hard road then it's all the more important to understand what the likely outcomes are going to be and start planning for them. For instance:&lt;/li&gt; &lt;ul&gt; &lt;li&gt;Can we clearly articulate the costs we've decided to pay (performance or otherwise) so we all know what they're going to be.&lt;/li&gt; &lt;li&gt;Can we make afforances for the costs so that those costs are easier to bear?&lt;/li&gt; &lt;li&gt;Can we mitigate the costs&amp;nbsp;at all?&amp;nbsp;&amp;nbsp;&lt;/li&gt; &lt;li&gt;Can we prioritize the problems/costs we're likely to face so that we can address the ones that matter the most if not all of them?&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;Your team may have settled on a plan other than the one you endorse but perhaps you can find other ways to gain &lt;em&gt;some &lt;/em&gt;of the benefits of your original plan.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;The long and the short of it is that we all sink together.&amp;nbsp; Some of the choices won't go the way I would like -- that's both expected and healthy -- that just makes the adventure more fun.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1493936" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ricom/archive/tags/ramblings/default.aspx">ramblings</category></item><item><title>Five Things About Me</title><link>http://blogs.msdn.com/ricom/archive/2007/01/12/five-things-about-me.aspx</link><pubDate>Fri, 12 Jan 2007 23:38:51 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1457078</guid><dc:creator>ricom</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/ricom/comments/1457078.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ricom/commentrss.aspx?PostID=1457078</wfw:commentRss><description>&lt;p&gt;I guess it's fate:&amp;nbsp; I was blog tagged by both &lt;a href="http://blogs.msdn.com/jeffbe/"&gt;Jeff Beehler&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/jmeier/archive/2007/01/12/five-things-you-didn-t-know-about-me.aspx"&gt;J.D. Meier&lt;/a&gt;&amp;nbsp;within hours of one another.&amp;nbsp; So here are my five things you probably didn't know about me (but some of you do).&lt;/p&gt; &lt;ol&gt; &lt;li&gt;I got my first professional programming job (I was 15 years old) at &lt;a href="http://comspec.com/2170.html"&gt;Comspec&lt;/a&gt; in Toronto where, among other things,&amp;nbsp;I did 6502 assembly language programming for a variety of devices.&amp;nbsp; Some fun ones were the Microshare printer and drive sharing device -- this was before LANs&amp;nbsp; -- and an interface for a scale so sensitive you could use it to measure the mass transfered from pencil to paper writing your name.&lt;/li&gt; &lt;li&gt;I studied at the &lt;a href="http://www.uwaterloo.ca/"&gt;University of Waterloo&lt;/a&gt; where among other things I was a president of the &lt;a href="http://csclub.uwaterloo.ca/"&gt;Computer Science Club&lt;/a&gt; (and it was not even a total geekfest those years).&amp;nbsp; I also worked with the &lt;a href="http://www.scg.uwaterloo.ca/"&gt;Symbolic Computation Group&lt;/a&gt; which was loads of fun.&amp;nbsp; The last thing I did at UW was to rewrite the &lt;a href="http://www.maplesoft.com/"&gt;Maple&lt;/a&gt; pretty-printer so it did better formatting and labelling.&amp;nbsp; I expect their current one still has bits of my code in it.&lt;/li&gt; &lt;li&gt;While at UW I was a co-op student and I did work-terms (internships) at &lt;a href="http://www.ontariosciencecentre.ca/"&gt;The Ontario Science Centre&lt;/a&gt;.&amp;nbsp; It turns out that, IMHO,&amp;nbsp;"OSC" is one of the most fun places to work in the entire universe.&amp;nbsp; You just don't know what might happen next -- I even got to meet &lt;a href="http://www.sophialoren.com/"&gt;Sophia Loren&lt;/a&gt;&amp;nbsp;when she visited though she probably doesn't remember me.&amp;nbsp; :)&lt;/li&gt; &lt;li&gt;While I was at OSC we did a show on &lt;a href="http://en.wikipedia.org/wiki/Chaos_theory"&gt;Chaos&lt;/a&gt;&amp;nbsp;and there was great interest in &lt;a href="http://en.wikipedia.org/wiki/Fractal"&gt;Fractals&lt;/a&gt;, and in particular &lt;a href="http://en.wikipedia.org/wiki/Mandelbrot_set"&gt;The Mandelbrot Set&lt;/a&gt;.&amp;nbsp; I was studying &lt;a href="http://en.wikipedia.org/wiki/Complex_analysis"&gt;Complex Analysis&lt;/a&gt; at the time and I used what I knew to come up with a faster way to render the Mandelbrot set.&amp;nbsp; I shared the technique and a partial proof of correctness for the underlying theory with Rollo Silver who was then publishing &lt;em&gt;Amygdala -- &lt;/em&gt;which sent subcribers 35mm slides of cool mandelbrot renders -- Rollo finished the proof and published it.&amp;nbsp;Meanwhile&amp;nbsp;&lt;a href="http://www.csd.uwo.ca/~akd/"&gt;A.K. Dewdney&lt;/a&gt;&amp;nbsp;also got a demonstration and in 1988 he mentioned the technique in &lt;a href="http://en.wikipedia.org/wiki/Scientific_American"&gt;Scientific American's&lt;/a&gt;&amp;nbsp; Computer Recreations column -- he called it "Mariani's Algorithm" but it's more popularly known as the &lt;a href="http://www.mrob.com/pub/muency/marianisilveralgorithm.html"&gt;Mariani/Silver Algorithm&lt;/a&gt;.&amp;nbsp; That's my claim to fame :)&lt;/li&gt; &lt;li&gt;In 1988 I joined Microsoft and within a few days I met &lt;a href="http://www.microsoft.com/presspass/exec/steve/default.mspx"&gt;Steve Ballmer&lt;/a&gt;.&amp;nbsp; The way I met Steve was that I crashed a party he was throwing for his summer interns -- he was running the Systems division at the time.&amp;nbsp; More specifically, I sat down next to someone who I didn't know and, being the gregarious guy I am, proceeded to tell him I wasn't even supposed to be here but my friends made me come and I just started a few days ago and hi my name is Rico.&amp;nbsp; He said, "Hi, I'm Steve."&amp;nbsp; Ya.&amp;nbsp; &lt;em&gt;That&lt;/em&gt; Steve.&amp;nbsp; Fortunately for me he saw the humor in it.&amp;nbsp; But don't try this at home kiddies :)&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;I'm not tagging anyone else because otherwise this whole pyramid tag thing will self implode but feel free to write your five things if you haven't already and blame me for motivating you.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1457078" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ricom/archive/tags/ramblings/default.aspx">ramblings</category></item><item><title>My 18th anniversary at MS</title><link>http://blogs.msdn.com/ricom/archive/2006/08/15/my-18th-anniversary-at-ms.aspx</link><pubDate>Tue, 15 Aug 2006 17:18:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:701162</guid><dc:creator>ricom</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/ricom/comments/701162.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ricom/commentrss.aspx?PostID=701162</wfw:commentRss><description>&lt;P&gt;Today marks 18 years for me at Microsoft.&amp;nbsp; In a little twist of fate, I'll be presenting at our &lt;A href="http://microsoftgamefest.com"&gt;Gamefest&lt;/A&gt;&amp;nbsp;conference which is kind of fitting because I got my start programming games for the &lt;A href="http://www.classiccmp.org/dunfield/pet/index.htm"&gt;PET 2001&lt;/A&gt;&amp;nbsp;in Microsoft BASIC&amp;nbsp;(before it was Visual) and 6502 assembly language about 8 years before that.&amp;nbsp; It turns out writing games is very educational :)&lt;/P&gt;
&lt;P&gt;Today I'll be talking about writing real-time programs in managed code.&amp;nbsp; Hope to see you today, if not, I'll be posting a detailed summary of the talk (more than just slides) when I'm back from vacation next week.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=701162" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ricom/archive/tags/ramblings/default.aspx">ramblings</category></item><item><title>Rico's thought for today</title><link>http://blogs.msdn.com/ricom/archive/2006/07/28/rico-s-thought-for-today.aspx</link><pubDate>Fri, 28 Jul 2006 20:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:681665</guid><dc:creator>ricom</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/ricom/comments/681665.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ricom/commentrss.aspx?PostID=681665</wfw:commentRss><description>&lt;FONT size=2&gt;
&lt;P&gt;I've said this before but I like it so much I thought I'd post it for posterity :)&lt;/P&gt;
&lt;P&gt;"Never use the advice of some loudmouth perf expert like me when you could do a nice solid measurement instead."&lt;/P&gt;
&lt;P&gt;Maybe I'll get it as a tattoo :)&lt;/P&gt;&lt;/FONT&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=681665" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ricom/archive/tags/performance/default.aspx">performance</category><category domain="http://blogs.msdn.com/ricom/archive/tags/ramblings/default.aspx">ramblings</category></item></channel></rss>