<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5106667114455476931</id><updated>2012-03-05T21:09:21.556Z</updated><category term='auto-update'/><category term='Visual Studio'/><category term='commute'/><category term='SQL'/><category term='Badminton'/><category term='VerifyArgs'/><category term='compiler as a service'/><category term='Steven Sinofsky'/><category term='Hugo Chavez'/><category term='Miguel de Icaza'/><category term='Portugal'/><category term='zombies'/><category term='VS10'/><category term='Heat pipe'/><category term='C# London Address Quiz'/><category term='David Mitchell'/><category term='async/await'/><category term='validation'/><category term='Skype'/><category term='Mathematica'/><category term='Testing'/><category term='Samsung Galaxy S'/><category term='Gay'/><category term='android debug'/><category term='St. Petersburg'/><category term='Telegraph'/><category term='Scope'/><category term='BBC News'/><category term='IMF'/><category term='Flash'/><category term='RSS'/><category term='Bollywood'/><category term='Banks'/><category term='10 O&apos;Clock Live'/><category term='New Cross Gate'/><category term='CERN'/><category term='Mono'/><category term='SourceForge'/><category term='Forbes'/><category term='Ukraine'/><category term='Occupy'/><category term='Adobe'/><category term='LINQ'/><category term='TV'/><category term='ILSpy'/><category term='3 idiots'/><category term='Italy'/><category term='noughties'/><category term='Google Reader'/><category term='fields'/><category term='Allister Heath'/><category term='IoC'/><category term='TV ads'/><category term='St. Paul&apos;s'/><category term='Finalization'/><category term='Google Code'/><category term='David Cameron'/><category term='Christmas'/><category term='Joe Duffy'/><category term='F#'/><category term='Stalin'/><category term='Christina Fernandez de Krichner'/><category term='UK'/><category term='Eric Lippert'/><category term='NAT'/><category term='Blair'/><category term='Hindi'/><category term='Tax'/><category term='fridge'/><category term='Google Plus'/><category term='WPF 4.5'/><category term='NuGet'/><category term='Mona Simpson'/><category term='Chronic'/><category term='Japan'/><category term='credit easing'/><category term='.NET C# DateTime StopWatch performance'/><category term='Stephen Pollard'/><category term='VS11'/><category term='Russia'/><category term='Internet Explorer'/><category term='framework'/><category term='Jonathan Antoine'/><category term='lizard'/><category term='.NET'/><category term='Robert Webb'/><category term='Smooth scrolling'/><category term='Bin Laden'/><category term='Microsoft'/><category term='GWT'/><category term='Windows 8'/><category term='Google Code Search'/><category term='Charlie Brooker'/><category term='2011'/><category term='DISKPART'/><category term='Google Translate'/><category term='UI design'/><category term='Explorer'/><category term='John Lewis'/><category term='Greece'/><category term='GDI'/><category term='Reference counting'/><category term='Oracle'/><category term='Azure'/><category term='Windows 98'/><category term='Politics'/><category term='Government'/><category term='Ribbon'/><category term='Roslyn'/><category term='Boston'/><category term='2012'/><category term='Steve Jobs'/><category term='Larry Page'/><category term='Unit tests'/><category term='Shaun of the Dead'/><category term='Seattle'/><category term='George Osborne'/><category term='Fanaa'/><category term='Page Down'/><category term='Chrome'/><category term='Hadoop'/><category term='smartphones'/><category term='Money'/><category term='Medvedev'/><category term='G+'/><category term='President'/><category term='Fidel Castro'/><category term='Facebook'/><category term='India'/><category term='System.Linq.Expressions'/><category term='Janet Daley'/><category term='SGen'/><category term='MIME'/><category term='None'/><category term='globalism'/><category term='Chrome OS'/><category term='Malcolm Gladwell'/><category term='SD'/><category term='CityAM'/><category term='Guardian'/><category term='Somasegar'/><category term='Rico Mariani'/><category term='Euro'/><category term='Java'/><category term='Google'/><category term='Google App Engine'/><category term='Clippy'/><category term='foreign language'/><category term='properties'/><category term='Britain'/><category term='C#'/><category term='Germany'/><category term='GitHub'/><category term='loans'/><category term='USSR'/><category term='search'/><category term='GC'/><category term='VisionMobile'/><category term='Europe'/><category term='WPF'/><category term='Silverlight'/><category term='CodePlex'/><title type='text'>Oleg Mihailik in London</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>65</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-7297123611750967501</id><published>2012-03-05T21:09:00.001Z</published><updated>2012-03-05T21:09:21.579Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='SGen'/><category scheme='http://www.blogger.com/atom/ns#' term='GC'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><category scheme='http://www.blogger.com/atom/ns#' term='Miguel de Icaza'/><title type='text'>Mono's Garbage Collector: still not good</title><content type='html'>Miguel de Icaza pointed out a bit of new information about Mono's improved GC called SGen:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://mono-project.com/Working_With_SGen"&gt;http://mono-project.com/Working_With_SGen&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2 style="background-color: white; color: #19194b; font-family: Myriad, Calibri, 'DejaVu Sans', 'Bitstream Vera Sans', Verdana, sans-serif !important; font-size: 22px; font-weight: normal !important; margin-top: 0.25em; text-align: left;"&gt;Working With SGen&lt;/h2&gt;&lt;br /&gt;Well, things apparently not as good as one would like to see :-(&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;span style="background-color: white; color: #333333; font-family: 'DejaVu Sans', 'Bitstream Vera Sans', Verdana, sans-serif; font-size: 14px; line-height: 20px; text-align: left;"&gt;On some platforms, SGen can scan your stacks precisely (Linux), in other platforms, it can only scan the stack conservatively.&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;This is an euphemism&amp;nbsp;for garbage collector snooping around the stack looking for anything looking remotely like a pointer. Simple and dirty trick, good for demos and apps that have enough of memory leaks in them to render runtime inaccuracies below the measurement error.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-7297123611750967501?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/7297123611750967501/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2012/03/monos-garbage-collector-still-not-good.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/7297123611750967501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/7297123611750967501'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2012/03/monos-garbage-collector-still-not-good.html' title='Mono&apos;s Garbage Collector: still not good'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-8729673074299829188</id><published>2012-03-04T18:18:00.000Z</published><updated>2012-03-04T18:18:53.645Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='George Osborne'/><category scheme='http://www.blogger.com/atom/ns#' term='Allister Heath'/><category scheme='http://www.blogger.com/atom/ns#' term='CityAM'/><category scheme='http://www.blogger.com/atom/ns#' term='Tax'/><category scheme='http://www.blogger.com/atom/ns#' term='Janet Daley'/><category scheme='http://www.blogger.com/atom/ns#' term='Telegraph'/><title type='text'>Budget dilemma: be brave or know the truth</title><content type='html'>Britain is a conservative place.&lt;br /&gt;&lt;br /&gt;Pick a general liberal with left leaning and they'd necessary be conservative by an outside world standard. Britain cherishes its old repetition-stained values, and you'd have to go really far to find one both aspires to be British and yet is a proper modernist.&lt;br /&gt;&lt;br /&gt;Perhaps even Bob Crow likes to go to pub and has his favourite sort of crunchy&amp;nbsp;biscuit. Or maybe I overestimate him?&lt;br /&gt;&lt;br /&gt;Anyway, unlike in the US, conservatives very often come quite intelligent in the UK, well there's just so many of them around.&lt;br /&gt;&lt;br /&gt;But this one seem to have been too complacent and celebratory about our not falling for Euro told-you-so situation.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.telegraph.co.uk/news/politics/georgeosborne/9120832/It-is-not-too-late-for-a-Tory-tax-revolution.html"&gt;http://www.telegraph.co.uk/news/politics/georgeosborne/9120832/It-is-not-too-late-for-a-Tory-tax-revolution.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h1 style="background-color: white; color: #1e1e1e; font-family: georgia, 'times new roman', times, serif; font-weight: normal; line-height: 1.16em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span style="font-size: large;"&gt;It is not too late for a Tory tax revolution&lt;/span&gt;&lt;/h1&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;span style="background-color: white; color: #282828; font-family: arial, helvetica, sans-serif; font-size: 14px; line-height: 20px;"&gt;Today’s “unfunded” tax cut is tomorrow’s genuine economic stimulus – and the growth which results from that stimulus produces more revenue for the Treasury. The Tories, even at this late date, could begin the public education programme that would make all this politically possible. But I’m not holding my breath&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;Essentially, Janet is suggesting to be brave and bet on recovery by going a little bit easy with the country's debt -- and cut the taxes.&lt;br /&gt;&lt;br /&gt;A similar suggestion was in Friday's CityAM.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cityam.com/latest-news/allister-heath/all-tax-rates-are-too-high-britain"&gt;http://www.cityam.com/latest-news/allister-heath/all-tax-rates-are-too-high-britain&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h1 class="title" id="pagetitle" style="background-color: white; font-family: Verdana, Geneva, sans-serif; font-weight: 300; line-height: 1em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.5em; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span style="font-size: large;"&gt;All tax rates are too high in Britain&lt;/span&gt;&lt;/h1&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;span style="background-color: white; font-family: Verdana, Geneva, sans-serif; font-size: 12px;"&gt;It is clear that the 50p tax rate (52p when employee national insurance is added) is damaging and has to go. But it is also true the 40p rate is also too high: it now hits millions of workers (and is actually 42 per cent when employee national insurance is added, and more if the 13.8 per cent employers’ contributions are included, a point that is also applicable to the 50p rate). All income and national insurance tax rates are too high in the UK. Britain is a thoroughly over-taxed country – and until it ceases to be taboo to say so, we stand no chance of once again building a truly dynamic and competitive economy.&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;This all is good and jolly, but something tells me that George Osborne isn't cutting the taxes for a reason. Yes, I know George looks like a cocky young man properly able to ignore the common sense for a while, but something about his appearances and words in the last half-year betrays too much desperation.&lt;br /&gt;&lt;br /&gt;I think he knows something that we don't.&lt;br /&gt;&lt;br /&gt;Perhaps the situation of the country's economy is bloody scary. Or maybe it's something frightening about the world's situation. Something of that sort -- being a Chancellor comes with the knowledge of some dark truths.&lt;br /&gt;&lt;br /&gt;The government is rarely talented. But seeing how this one struggles but manages to keep the things under control, I would trust them more than even very intelligent newspaper columnists.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-8729673074299829188?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/8729673074299829188/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2012/03/budget-dilemma-be-brave-or-know-truth.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/8729673074299829188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/8729673074299829188'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2012/03/budget-dilemma-be-brave-or-know-truth.html' title='Budget dilemma: be brave or know the truth'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-1570297260266330855</id><published>2012-03-04T13:41:00.001Z</published><updated>2012-03-04T18:26:24.025Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='UI design'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><title type='text'>Visual Studio 11 redesign</title><content type='html'>I don't want to get into rocks/sucks discussion here. Because there is no discussion: it simply sucks. Big time.&lt;br /&gt;&lt;br /&gt;Was just reading &lt;a href="http://www.richard-banks.org/2012/03/get-visual-studio-11-beta-right-now-for.html"&gt;a good article about unit testing improvements in VS11&lt;/a&gt; (very good stuff there), and could not help but fume of UI annoyance just looking at the screenshots.&lt;br /&gt;&lt;br /&gt;&lt;img alt="SNAGHTML6029dd3" src="http://lh5.ggpht.com/-pNBDU03DgRc/T1HdbY1SKHI/AAAAAAAABSA/Hppyu4wv4v4/SNAGHTML6029dd3_thumb%25255B2%25255D.png?imgmax=800" /&gt;&lt;br /&gt;&lt;br /&gt;Disregard the arrows, they are about unit testing features.&lt;br /&gt;&lt;br /&gt;Observe the melting of the widgets, like here:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-MJJpLlN1kxI/T1Nrj4XVovI/AAAAAAAAGM8/WgyHcKAXF54/s1600/bottom-left.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-MJJpLlN1kxI/T1Nrj4XVovI/AAAAAAAAGM8/WgyHcKAXF54/s1600/bottom-left.png" /&gt;&lt;/a&gt;&lt;br /&gt;In the name of the radish stew, how that 'ERROR LIST' got lost in grey wilderness? It's not aligned with the lighter-grey rectangle, it's not aligned with 'Ready', it's not even aligned with the green icon high up.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-Qq-HAsCyuWY/T1Nrk3OC6BI/AAAAAAAAGNM/zOoPKSt6Y1o/s1600/top-right.png" imageanchor="1" style="clear: left; display: inline !important; margin-bottom: 1em; margin-right: 1em; text-align: center;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-Qq-HAsCyuWY/T1Nrk3OC6BI/AAAAAAAAGNM/zOoPKSt6Y1o/s1600/top-right.png" /&gt;&lt;/a&gt;&lt;br /&gt;A cross, two little triangles, a turned 'PROPERTIES', a pin, a magnifying glass, a wrench -- what a riddle! There must be some sort of message they are trying to conceal here, must it not?&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-fmzSOrtH4zA/T1NrkcDgIlI/AAAAAAAAGNA/qPa4k-LYln0/s1600/top-left.png" imageanchor="1" style="clear: left; display: inline !important; margin-bottom: 1em; margin-right: 1em; text-align: center;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-fmzSOrtH4zA/T1NrkcDgIlI/AAAAAAAAGNA/qPa4k-LYln0/s1600/top-left.png" /&gt;&lt;/a&gt;&lt;br /&gt;Another riddle, slightly more revealing this time.&lt;br /&gt;&lt;br /&gt;Look how a tortured designer slipped a desperate cry for Help between six breadcrumbs, a home with just one gated door, a wheel, UNified Intelligence Taskforfce and a File.&lt;br /&gt;&lt;br /&gt;Perhaps a prison escape using a File in a loaf of bread? A botched one, because now the prisoners are going to be broken on a wheel unless they get Help from Dr. Who and UNIT.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;UPDATE:&lt;/b&gt; I just got it! It's not a riddle, it's a dust scoop. Somebody was cleaning up, and brushed all the widgets from the floor in a corner. And so they lay, looking like a pile of paper trimmings, paperclips and broken earring pieces.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-1570297260266330855?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/1570297260266330855/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2012/03/visual-studio-11-redesign.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/1570297260266330855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/1570297260266330855'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2012/03/visual-studio-11-redesign.html' title='Visual Studio 11 redesign'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/-pNBDU03DgRc/T1HdbY1SKHI/AAAAAAAABSA/Hppyu4wv4v4/s72-c/SNAGHTML6029dd3_thumb%25255B2%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-3796503951466084108</id><published>2012-03-04T13:04:00.001Z</published><updated>2012-03-04T13:45:58.592Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Steven Sinofsky'/><category scheme='http://www.blogger.com/atom/ns#' term='Explorer'/><category scheme='http://www.blogger.com/atom/ns#' term='async/await'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><title type='text'>Revenge of DevDiv: async/away is screwed in March-1 release</title><content type='html'>Political infighting is like wine -- one has to invest a lot on personal level to even start to appreciate all the subtle tones and hazy headaches.&lt;br /&gt;&lt;br /&gt;Here is a rare treat for a discerning intriguer:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/b/pfxteam/archive/2012/03/03/10277166.aspx"&gt;http://blogs.msdn.com/b/pfxteam/archive/2012/03/03/10277166.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3 class="post-name" style="background-color: white; clear: both; color: #0066dd; font-family: 'Segoe UI Semibold', 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 20px; font-weight: normal; line-height: 25px; margin-bottom: 12px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left;"&gt;Visual Studio 11 Beta currently incompatible with AsyncCtpLibrary*.dll&lt;/h3&gt;&lt;br /&gt;Stephen Toub sends a masterful blow towards the bastards forced their schedule onto DevDiv, an exciting twist of the blame game that is clearly happening between DevDiv and OS team at Microsoft.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The respectful and non-confrontational tone gives way to simmering rage only at the very end:&lt;br /&gt;&lt;blockquote&gt;&lt;div style="background-color: white; color: #333333; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; text-align: left;"&gt;This means that while you can absolutely use Visual Studio 11 Beta to build apps that use async/await with .NET 4.5, you are currently unable to use Visual Studio 11 Beta to build apps that use async/await against .NET 4, Silverlight 5, etc., since the compilers in Visual Studio 11 Beta are expecting differently shaped types than those in the existing AsyncCtpLibrary* DLLs.&lt;/div&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;div style="background-color: white; color: #333333; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; text-align: left;"&gt;We’re currently discussing the situation and will share more details once we have concrete plans.&lt;/div&gt;&lt;div style="background-color: white; color: #333333; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: white; color: #333333; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; text-align: left;"&gt;Thanks for your interest and patience,&lt;br /&gt;The Async CTP Team&lt;/div&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;It is also valid to put it in context of the UI redesign in VS11. Clearly all that Metro bullshit was pushed through with an executive decision.&lt;br /&gt;&lt;br /&gt;Sinfosky has previously shown his brutal Jobsian manners when talking in his blog about Windows Explorer's universally loathed 'ribbon' interface -- saying to the effect &lt;i&gt;'we know better what you users want, and also by the way it doesn't matter anyway'&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;&lt;img alt="Figure 9 - Home tab " src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-29-43-metablogapi/4300.Figure-9-_2D00_-Home-tab-crop_5F00_thumb.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/b/b8/archive/2011/09/02/reflecting-on-our-first-conversations-part-2.aspx"&gt;&lt;span style="font-size: xx-small;"&gt;http://blogs.msdn.com/b/b8/archive/2011/09/02/reflecting-on-our-first-conversations-part-2.aspx&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="background-color: white; color: #333333; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; text-align: left;"&gt;We chose the ribbon mechanism, and to those that find that a flawed choice, there isn’t much we can do other than disagree.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Well, apparently they've found another thing to do: in Win8 Consumer Preview they've collapsed the shameful design by default. The sad thing is, even if they back down before the release and bring back the Win7 toolbars, it probably won't be registered as a wrong decision overturned, but as a positive 'we tried, we listened, we are good -- so we will ignore users' comments and push a bad design next time too'.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The pattern is too similar to ignore in VS11 Metro redesign, and here I suspect a perfect sabotage from the implementers of the unwise decision. Knowing everybody would hate it, they simply implemented what was required by the letter.&lt;br /&gt;&lt;br /&gt;&lt;img height="247" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-29-92-metablogapi/2248.dev11lightcolourtheme_5F00_0BC702C8.png" width="400" /&gt;&lt;br /&gt;&lt;br /&gt;Get rid of the chrome -- sure, no separators anywhere. All-caps second-level headers -- sure, shouty tool window titles. The UI is as rubbish and detestable as it can get before turning to an outright insult.&lt;br /&gt;&lt;br /&gt;Appreciate&amp;nbsp;the response at the end of the blog announcing the arty redesign, the whole cockiness of which is comparable to an automatic voice message you get calling any normal technical support number:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/b/visualstudio/archive/2012/02/24/introducing-the-new-developer-experience-part2.aspx"&gt;&lt;span style="font-size: xx-small;"&gt;http://blogs.msdn.com/b/visualstudio/archive/2012/02/24/introducing-the-new-developer-experience-part2.aspx&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;strong style="background-color: white; color: #3b3b3b; font-family: 'Segoe UI', Arial, Verdana, Helvetica, sans-serif; font-size: 14px; line-height: 21px; text-align: left;"&gt;UPDATE:&lt;/strong&gt;&lt;span style="background-color: white; color: #3b3b3b; font-family: 'Segoe UI', Arial, Verdana, Helvetica, sans-serif; font-size: 14px; line-height: 21px; text-align: left;"&gt;&amp;nbsp;We hear you. There’s a lot of excitement about this release and a lot of passion about colors, designs, styles and icons. Know that we are listening to all your comments here, across social media and we are working hard to make Visual Studio 11 a fast, powerful and feature-rich product. Keep the comments coming, both good and bad. We are reading them all.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Of course listening here doesn't necessarily mean paying attention. Clever.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-3796503951466084108?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/3796503951466084108/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2012/03/revenge-of-devdiv-asyncaway-is-screwed.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/3796503951466084108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/3796503951466084108'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2012/03/revenge-of-devdiv-asyncaway-is-screwed.html' title='Revenge of DevDiv: async/away is screwed in March-1 release'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-8140834233400167674</id><published>2012-02-18T00:00:00.001Z</published><updated>2012-02-18T00:00:14.588Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows 8'/><title type='text'>Microsoft delays Windows 8 Consumer Perview</title><content type='html'>&lt;p&gt;Today Windows Update on my Win8 came with an interesting piece:&lt;/p&gt; &lt;p&gt;&lt;a title="http://support.microsoft.com/kb/2671501" href="http://support.microsoft.com/kb/2671501"&gt;http://support.microsoft.com/kb/2671501&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Article ID: 2671501 - Last Review: February 16, 2012 - Revision: 1.0 &lt;h3&gt;An update that postpones the expiration date of Windows 8 Developer Preview and of Windows 8 Server Developer Preview is available&lt;/h3&gt; &lt;p&gt;&lt;b&gt;Important&lt;/b&gt; To continue using Windows 8 Developer Preview or Windows 8 Server Developer Preview, you must install this update before the expiration date. After the activation license expires, Windows 8 Developer Preview and Windows 8 Server Developer Preview will periodically restart. After you install this update, Windows automatically tries to reactivate after the restart until activation is successful. &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;If that isn’t a sign of delay, it’s at least hesitation and critical bugs uncovered too late before the upcoming release on 29th of February.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-8140834233400167674?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/8140834233400167674/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2012/02/microsoft-delays-windows-8-consumer.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/8140834233400167674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/8140834233400167674'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2012/02/microsoft-delays-windows-8-consumer.html' title='Microsoft delays Windows 8 Consumer Perview'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-6903943597324731681</id><published>2012-02-05T09:33:00.003Z</published><updated>2012-02-05T09:38:30.342Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='framework'/><category scheme='http://www.blogger.com/atom/ns#' term='VerifyArgs'/><category scheme='http://www.blogger.com/atom/ns#' term='validation'/><title type='text'>Validation framework? Just say 'no'.</title><content type='html'>Interfaces are a good indicator of overengineering. Of course it is just an indicator, people are known to have used interfaces productively.&lt;br /&gt;&lt;br /&gt;Validation framework is not an indicator. It's a proof.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://elegantcode.com/2012/01/30/nuget-project-uncovered-verifyargs/?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed%3A+ElegantCode+%28Elegant+Code%29&amp;amp;utm_content=Google+Reader"&gt;http://elegantcode.com/2012/01/30/nuget-project-uncovered-verifyargs/?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed%3A+ElegantCode+%28Elegant+Code%29&amp;amp;utm_content=Google+Reader&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2 style="background-color: white; border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; color: #555555; font-family: Verdana, 'BitStream vera Sans'; font-size: 16px; font-weight: bolder; letter-spacing: -0.07em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 10px; padding-bottom: 3px; padding-left: 5px; padding-right: 5px; padding-top: 0px;"&gt;NuGet Project Uncovered: VerifyArgs&lt;/h2&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;div style="background-color: white; color: #555555; font-family: Verdana, 'BitStream vera Sans', Helvetica, sans-serif; font-size: 12px; line-height: 17px; margin-bottom: 10px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;/div&gt;&lt;div style="margin-bottom: 10px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;a href="http://nuget.org/packages/VerifyArgs" style="color: #2970a6; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;" target="_blank"&gt;VerifyArgs&lt;/a&gt;&amp;nbsp;is another approach to a&amp;nbsp;&lt;a href="http://stackoverflow.com/questions/299439/net-guard-class-library" style="color: #2970a6; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;" target="_blank"&gt;guard&lt;/a&gt;&amp;nbsp;helper that takes an interesting approach.&lt;/div&gt;&lt;blockquote style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; margin-bottom: 5px; margin-left: 0px; margin-right: 0px; margin-top: 5px; padding-bottom: 8px; padding-left: 36px; padding-right: 12px; padding-top: 8px;"&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-color: #f4f5f7; background-image: initial; background-origin: initial; margin-bottom: 5px; margin-top: 5px; padding-bottom: 8px; padding-left: 36px; padding-right: 12px; padding-top: 8px;"&gt;Verify.NotNullOrEmpty(new { first, second });&lt;br /&gt;Verify.Positive(new { secondCount });&lt;/pre&gt;&lt;/blockquote&gt;&lt;div style="margin-bottom: 10px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span style="font-family: Arial; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Many of you might look at the above and think “&lt;strong style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;But what about performance?”&amp;nbsp;&lt;/strong&gt;If that’s you, I’d have to say go test it out for yourself. But for nearly all cases out there I don’t think this level of performance is anything to be concerned with.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Such a shame penitentiary facilities are oversubscribed, imagine a joy and&amp;nbsp;enlightenment&amp;nbsp;some C# developers would acquire after an appropriately long accommodation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-6903943597324731681?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/6903943597324731681/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2012/02/validation-framework-just-say-no.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/6903943597324731681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/6903943597324731681'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2012/02/validation-framework-just-say-no.html' title='Validation framework? Just say &apos;no&apos;.'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-653420753568718862</id><published>2012-02-05T09:15:00.000Z</published><updated>2012-02-05T09:15:44.714Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='NuGet'/><category scheme='http://www.blogger.com/atom/ns#' term='Chronic'/><category scheme='http://www.blogger.com/atom/ns#' term='Unit tests'/><title type='text'>It is 2006 in seven days!</title><content type='html'>Some code makes you worry whether humanity took a wrong diversion somewhere and it's better to just never write any unit tests. Forget about the whole barking idea, or you will end up with tests like these.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://elegantcode.com/2012/02/01/nuget-project-uncovered-chronic/?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed%3A+ElegantCode+%28Elegant+Code%29&amp;amp;utm_content=Google+Reader"&gt;http://elegantcode.com/2012/02/01/nuget-project-uncovered-chronic/?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed%3A+ElegantCode+%28Elegant+Code%29&amp;amp;utm_content=Google+Reader&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2 style="background-color: white; border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; color: #555555; font-family: Verdana, 'BitStream vera Sans'; font-size: 16px; font-weight: bolder; letter-spacing: -0.07em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 10px; padding-bottom: 3px; padding-left: 5px; padding-right: 5px; padding-top: 0px;"&gt;NuGet Project Uncovered: Chronic&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;div style="background-color: white; color: #555555; font-family: Verdana, 'BitStream vera Sans', Helvetica, sans-serif; font-size: 12px; line-height: 17px; margin-bottom: 10px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;This is a pretty cool little utility as it lets you take some input like “tomorrow” or “two weeks ago” and turn that into a DateTime object.&lt;/div&gt;&lt;div style="background-color: white; color: #555555; font-family: Verdana, 'BitStream vera Sans', Helvetica, sans-serif; font-size: 12px; line-height: 17px; margin-bottom: 10px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Take a look at some tests I pulled from&lt;a href="https://github.com/robertwilczynski/nChronic/blob/master/src/Chronic.Tests/CustomParsingTest.cs" style="color: #2970a6; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;"&gt;https://github.com/robertwilczynski/nChronic/blob/master/src/Chronic.Tests/CustomParsingTest.cs&lt;/a&gt;.&lt;/div&gt;&lt;blockquote style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; color: #555555; font-family: Verdana, 'BitStream vera Sans', Helvetica, sans-serif; font-size: 12px; line-height: 17px; margin-bottom: 5px; margin-left: 0px; margin-right: 0px; margin-top: 5px; padding-bottom: 8px; padding-left: 36px; padding-right: 12px; padding-top: 8px;"&gt;&lt;div style="margin-bottom: 10px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;[Fact]&lt;br style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /&gt;public void seven_days_from_now_at_midnight()&lt;br style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /&gt;{&lt;br style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /&gt;Parse(” seven days from now at midnight”)&lt;br style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /&gt;.AssertEquals(Time.New(2006, 8, 24));&lt;br style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /&gt;}&lt;/div&gt;&lt;div style="margin-bottom: 10px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;[Fact]&lt;br style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /&gt;public void _2_weeks_ago()&lt;br style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /&gt;{&lt;br style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /&gt;Parse(“2 weeks ago”)&lt;br style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /&gt;.AssertEquals(Time.New(2006, 8, 02, 14));&lt;br style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /&gt;}&lt;/div&gt;&lt;div style="margin-bottom: 10px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;[Fact]&lt;br style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /&gt;public void two_weeks_ago()&lt;br style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /&gt;{&lt;br style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /&gt;Parse(“two weeks ago”)&lt;br style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /&gt;.AssertEquals(Time.New(2006, 8, 02, 14));&lt;/div&gt;&lt;/blockquote&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-653420753568718862?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/653420753568718862/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2012/02/it-is-2006-in-seven-days.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/653420753568718862'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/653420753568718862'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2012/02/it-is-2006-in-seven-days.html' title='It is 2006 in seven days!'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-3314043557975350084</id><published>2012-02-04T23:56:00.001Z</published><updated>2012-02-04T23:56:15.824Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='UK'/><category scheme='http://www.blogger.com/atom/ns#' term='India'/><title type='text'>The debt has been paid off, perhaps</title><content type='html'>&lt;a href="http://www.telegraph.co.uk/news/worldnews/asia/india/9061844/India-tells-Britain-We-dont-want-your-aid.html"&gt;http://www.telegraph.co.uk/news/worldnews/asia/india/9061844/India-tells-Britain-We-dont-want-your-aid.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Man, this is embarrassing. India's Finance Minister is ready to do away with British aid, but accepting it to save the appearances of the UK.&lt;br /&gt;&lt;br /&gt;Well, at least one should expect the colonial past has completely gone now. Hopefully nobody makes a scene about it, it's a good thing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-3314043557975350084?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/3314043557975350084/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2012/02/debt-has-been-paid-off-perhaps.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/3314043557975350084'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/3314043557975350084'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2012/02/debt-has-been-paid-off-perhaps.html' title='The debt has been paid off, perhaps'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-5478908630444339917</id><published>2012-02-02T00:18:00.001Z</published><updated>2012-02-02T00:23:08.936Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='commute'/><category scheme='http://www.blogger.com/atom/ns#' term='smartphones'/><category scheme='http://www.blogger.com/atom/ns#' term='Boston'/><title type='text'>Have we gone too far?</title><content type='html'>MSDN's very own 'Don't Get Me Started' column is stupid bordering on commuting this month.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-gb/magazine/hh781031.aspx"&gt;http://msdn.microsoft.com/en-gb/magazine/hh781031.aspx&lt;/a&gt;&lt;br /&gt;&lt;img height="179" src="http://i.msdn.microsoft.com/hh781031.PlattDGMS0212_hires(en-us,MSDN.10).png" width="320" /&gt;&lt;br /&gt;&lt;br /&gt;Apparently, we've all got too obsessed with gadgets and smartphones.&lt;br /&gt;&lt;br /&gt;No, I don't think so. I think we've all got too obsessed with clothes. That is where it all gone wrong, by the age of smartphones the cause is already lost and stomped into the muddy road pebbles.&lt;br /&gt;&lt;br /&gt;If the people on that photo are guilty of being morons, who is that moron that passes judgement based on them reading?&lt;br /&gt;&lt;br /&gt;In fact the only hint to the quality of their reading is their appearance. Again, blame the clothing. And sure it is averagely unappealing. But scroll a decade back, and half of them would be smoking.&lt;br /&gt;&lt;br /&gt;Would your &lt;a href="http://vimeo.com/2121173"&gt;ordinary commuter&lt;/a&gt; risk falling under the train to escape lung cancer?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-5478908630444339917?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/5478908630444339917/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2012/02/have-we-gone-too-far.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/5478908630444339917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/5478908630444339917'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2012/02/have-we-gone-too-far.html' title='Have we gone too far?'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-4013942222324579671</id><published>2012-01-16T07:10:00.001Z</published><updated>2012-01-16T07:10:09.586Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='fridge'/><category scheme='http://www.blogger.com/atom/ns#' term='GDI'/><title type='text'>WPF or GDI</title><content type='html'>&lt;br /&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;It is all about the light in a fridge.&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;If a tree falls down in the deep forest, where nobody can hear it, does it still make a noise? If a window is completely obscured — does it still draw?&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;Old technology was antropocentric, making the show for an audience. The new one is materialistic and universal in Newton way. However, putting on Einstein glasses, one can make out peculiarities and cunning quantum austerity.&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;Indeed, where GDI drew lines and curves simple and plainly like the light rays and the planets revolve, WPF drawing has much finer and more discrete nature of primitives (elementary particles) flowing in an orderly ballet dance under a watchful eye of old hag, aristocratic authoritarian infertile madam cursing and beating and torturing the sweaty dancers down their strict libretto.&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;That female figure is WPF pipeline, shoving the primitives onto the screen in a much more brutal way than mere drawing (DirectX is so close to metal using it you hear faint taste of blood between your teeth). And her skills in this trade are so bitterly efficient, she in fact joggles, pulls and yanks the primitives back and forth the queue leaving enough of offscreen primitives out of dancing business to earn back her grumpy wages and a bit more.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-4013942222324579671?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/4013942222324579671/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2012/01/wpf-or-gdi.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/4013942222324579671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/4013942222324579671'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2012/01/wpf-or-gdi.html' title='WPF or GDI'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-4699363867427429044</id><published>2011-12-29T21:44:00.000Z</published><updated>2011-12-29T21:44:02.953Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Fidel Castro'/><category scheme='http://www.blogger.com/atom/ns#' term='Hugo Chavez'/><category scheme='http://www.blogger.com/atom/ns#' term='Stephen Pollard'/><category scheme='http://www.blogger.com/atom/ns#' term='Stalin'/><category scheme='http://www.blogger.com/atom/ns#' term='Telegraph'/><category scheme='http://www.blogger.com/atom/ns#' term='Christina Fernandez de Krichner'/><title type='text'>Dictator's Paranoia</title><content type='html'>A colourful article from The Telegraph.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.telegraph.co.uk/news/worldnews/southamerica/8982974/From-Fidel-Castro-to-Hugo-Chavez-with-great-power-comes-truly-great-paranoia.html"&gt;&lt;span style="font-size: xx-small;"&gt;http://www.telegraph.co.uk/news/worldnews/southamerica/8982974/From-Fidel-Castro-to-Hugo-Chavez-with-great-power-comes-truly-great-paranoia.html&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h1 style="background-color: white; color: #1e1e1e; font-family: georgia, 'times new roman', times, serif; font-weight: normal; line-height: 1.16em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span style="font-size: large;"&gt;From Fidel Castro to Hugo Chavez: with great power comes truly great paranoia&lt;/span&gt;&lt;/h1&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2 style="background-color: white; color: #404040; font-family: georgia, 'times new roman', times, serif; font-weight: normal; line-height: 1.2em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span style="font-size: small;"&gt;Plainly lunatic ideas can take on serious importance when no one contradicts you.&lt;/span&gt;&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;&lt;div id="storyEmbSlide" style="background-color: white; color: #282828; font-family: georgia, 'times new roman', times, serif; font-size: 10px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;div class="slideshow ssMain" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 3px;"&gt;&lt;div class="nextPrevLayer" style="height: 319px; overflow-x: hidden; overflow-y: hidden; position: relative;"&gt;&lt;div class="ssImg" style="padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;img alt="Plots and plans: Venezuelan President Chavez and Argentine counterpart Cristina Fernandez de Kirchner - From Fidel Castro to Hugo Chavez: with great power comes truly great paranoia" height="287" src="http://i.telegraph.co.uk/multimedia/archive/02095/chavez-fernandez_2095829c.jpg" style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; display: block;" width="460" /&gt;&lt;div class="artImageExtras" style="font-family: arial; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;div class="ingCaptionCredit" style="padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 2px;"&gt;&lt;span class="caption" style="color: #404040; font-size: 1.1em; line-height: 1.38em; margin-bottom: 0px; margin-left: 0px; margin-right: 5px; margin-top: 0px;"&gt;Plots and plans: Venezuelan President Hugo Chavez and Argentine counterpart Cristina Fernandez de Kirchner&lt;/span&gt;&amp;nbsp;&lt;span class="credit" style="color: #999999; font-size: 1em; line-height: 1.38em;"&gt;Photo: REUTERS&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="cl" style="background-color: white; clear: both; color: #282828; display: table; font-family: georgia, 'times new roman', times, serif; font-size: 10px;"&gt;&lt;/div&gt;&lt;div class="bylineComments" style="background-color: white; border-bottom-color: initial; border-bottom-style: none; border-bottom-width: initial; color: #282828; font-family: georgia, 'times new roman', times, serif; font-size: 10px; margin-bottom: 0px; padding-bottom: 5px;"&gt;&lt;div&gt;&lt;div class="bylineBody" style="color: #3f3f3f; float: left; font-size: 1.25em; font-weight: bold; line-height: 1.48em; padding-bottom: 0px; padding-left: 0px; padding-right: 5px; padding-top: 0px;"&gt;By&amp;nbsp;&lt;span rel="author"&gt;Stephen Pollard&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="publishedDate" style="color: #3f3f3f; float: left; font-family: arial, sans-serif; font-size: 1.2em; line-height: 1.48em; padding-bottom: 4px; padding-left: 0px; padding-right: 0px; padding-top: 0px; width: 390px;"&gt;8:10PM GMT 29 Dec 2011&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And a bit of Horrible Histories to put it all in perspective.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object width="320" height="266" class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://2.gvt0.com/vi/lHlZ6bXNpZo/0.jpg"&gt;&lt;param name="movie" value="http://www.youtube.com/v/lHlZ6bXNpZo&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/lHlZ6bXNpZo&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-4699363867427429044?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/4699363867427429044/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2011/12/dictators-paranoia.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/4699363867427429044'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/4699363867427429044'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2011/12/dictators-paranoia.html' title='Dictator&apos;s Paranoia'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-7042482617909096110</id><published>2011-12-19T22:39:00.001Z</published><updated>2011-12-19T22:39:34.307Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='fields'/><category scheme='http://www.blogger.com/atom/ns#' term='IoC'/><category scheme='http://www.blogger.com/atom/ns#' term='Rico Mariani'/><category scheme='http://www.blogger.com/atom/ns#' term='properties'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>Rico Mariani's properties: don't be smart</title><content type='html'>A good programmers keeps the smarts in the check. Virtual properties, interfaces all over the place, God forbid IoC -- those are expensive luxuries a programmer can seldom afford.&lt;br /&gt;&lt;br /&gt;More about it from Rico:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/b/ricom/archive/2011/12/19/performance-guidelines-for-properties.aspx"&gt;&lt;span style="font-size: xx-small;"&gt;http://blogs.msdn.com/b/ricom/archive/2011/12/19/performance-guidelines-for-properties.aspx&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3 class="post-name" style="clear: both; color: #3a3e43; font-family: 'Segoe UI Semibold', 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 1.75em; font-weight: normal; line-height: 26px; margin-bottom: 12px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left;"&gt;&lt;span style="background-color: white;"&gt;Performance Guidelines for Properties&lt;/span&gt;&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;Very good point, Rico. Public fields are being treated unfairly in the public opinion. They could be just as good as public properties, given that they fit the purpose.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-7042482617909096110?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/7042482617909096110/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2011/12/rico-marianis-properties-dont-be-smart.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/7042482617909096110'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/7042482617909096110'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2011/12/rico-marianis-properties-dont-be-smart.html' title='Rico Mariani&apos;s properties: don&apos;t be smart'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-1284796474490637864</id><published>2011-12-19T20:20:00.000Z</published><updated>2011-12-19T20:20:15.236Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Italy'/><category scheme='http://www.blogger.com/atom/ns#' term='Euro'/><category scheme='http://www.blogger.com/atom/ns#' term='Germany'/><category scheme='http://www.blogger.com/atom/ns#' term='Portugal'/><category scheme='http://www.blogger.com/atom/ns#' term='Europe'/><category scheme='http://www.blogger.com/atom/ns#' term='Greece'/><category scheme='http://www.blogger.com/atom/ns#' term='Forbes'/><title type='text'>Forbes: Five Popular Misconceptions About The European Debt Crisis</title><content type='html'>&lt;a href="http://www.forbes.com/sites/greatspeculations/2011/12/19/five-popular-misconceptions-about-the-european-debt-crisis/"&gt;http://www.forbes.com/sites/greatspeculations/2011/12/19/five-popular-misconceptions-about-the-european-debt-crisis/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h1 style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-size: 42px; font: normal normal normal 42px/48px Georgia, 'Times New Roman', serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 9px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; vertical-align: baseline;"&gt;Five Popular Misconceptions About The European Debt Crisis&lt;/h1&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img alt="Sovereign Debt Exposure Of The EU's 10 Largest Banks" src="http://specials-images.forbes.com/imageserve/0fnL8ML8gJ8EJ/300x210.jpg?fit=scale&amp;amp;background=FFFFFF" /&gt;&lt;br /&gt;&lt;br /&gt;1. Countries go broke when yields rise above 7.0%.&lt;br /&gt;2. Italy is broke.&lt;br /&gt;3. Germany can simply walk away from the euro.&lt;br /&gt;4. A Greek or Portuguese default means the end of the euro.&lt;br /&gt;5. European governments can never pay their debts.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-1284796474490637864?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/1284796474490637864/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2011/12/forbes-five-popular-misconceptions.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/1284796474490637864'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/1284796474490637864'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2011/12/forbes-five-popular-misconceptions.html' title='Forbes: Five Popular Misconceptions About The European Debt Crisis'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-2863746822491888757</id><published>2011-12-19T19:55:00.000Z</published><updated>2011-12-19T19:55:04.875Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Britain'/><category scheme='http://www.blogger.com/atom/ns#' term='IMF'/><category scheme='http://www.blogger.com/atom/ns#' term='Germany'/><title type='text'>Stern and sober</title><content type='html'>Should we pay for Euro problems? Hard to say really, but here are words of caution.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.telegraph.co.uk/finance/ambroseevans-pritchard/100013884/britain-the-imf-and-the-worlds-richest-beggar/"&gt;&lt;span style="font-size: xx-small;"&gt;http://blogs.telegraph.co.uk/finance/ambroseevans-pritchard/100013884/britain-the-imf-and-the-worlds-richest-beggar/&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="storyHead" style="background-color: white; color: #282828; font-family: georgia, 'times new roman', times, serif; font-size: 10px; margin-bottom: 15px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;h1 style="color: #1e1e1e; font-size: 2.4em; font-weight: normal; line-height: 1.16em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Britain, the IMF, and the world's richest beggar&lt;/h1&gt;&lt;/div&gt;&lt;div class="oneHalf gutter" style="background-color: white; color: #282828; float: left; font-family: georgia, 'times new roman', times, serif; margin-bottom: 0px; margin-left: 0px; margin-right: 20px; margin-top: 0px; width: 460px;"&gt;&lt;div class="story" style="border-bottom-color: initial; border-bottom-style: initial; border-bottom-width: 0px; border-top-color: rgb(102, 102, 102); border-top-style: solid; border-top-width: 2px; margin-bottom: 5px; padding-bottom: 5px; padding-top: 3px;"&gt;&lt;div class="byline" style="margin-bottom: 6px; margin-left: 0px; margin-right: 0px; margin-top: 5px; padding-bottom: 5px;"&gt;&lt;div style="color: #3f3f3f; font-family: arial, helvetica, sans-serif; font-weight: bold; line-height: 1.48em; padding-bottom: 6px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span class="byAuthor" style="font-family: georgia, 'times new roman', serif; font-weight: normal;"&gt;By&amp;nbsp;&lt;a href="http://blogs.telegraph.co.uk/finance/author/ambroseevans-pritchard/" rel="author" style="color: #234b7b; font-weight: bold; outline-color: initial; outline-style: initial; outline-width: 0px; text-decoration: none;" title="Posts by Ambrose Evans-Pritchard"&gt;Ambrose Evans-Pritchard&lt;/a&gt;&lt;/span&gt;&amp;nbsp;&lt;span class="lastUpdated bylineCategory" style="border-left-color: rgb(224, 224, 224); border-left-style: dotted; border-left-width: 1px; font-family: georgia, 'times new roman', serif; font-weight: normal; margin-left: 2px; padding-left: 5px;"&gt;&lt;a href="http://blogs.telegraph.co.uk/finance/category/economics/" rel="category tag" style="color: #b22929; font-weight: bold; outline-color: initial; outline-style: initial; outline-width: 0px; text-decoration: none;" title="View all posts in Economics"&gt;Economics&lt;/a&gt;&lt;/span&gt;&amp;nbsp;&lt;span class="lastUpdated" style="border-left-color: rgb(224, 224, 224); border-left-style: dotted; border-left-width: 1px; font-weight: normal; margin-left: 2px; padding-left: 5px;"&gt;Last updated: December 19th, 2011&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #3f3f3f; font-family: arial, helvetica, sans-serif; font-weight: bold; line-height: 1.48em; padding-bottom: 6px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span class="lastUpdated" style="border-left-color: rgb(224, 224, 224); border-left-style: dotted; border-left-width: 1px; font-weight: normal; margin-left: 2px; padding-left: 5px;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #282828; line-height: 1.48em; padding-bottom: 0.7em; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span style="font-size: x-small;"&gt;Euro rage is reaching new heights over Britain's latest outrage.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #282828; line-height: 1.48em; padding-bottom: 0.7em; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span style="font-size: x-small;"&gt;Our refusal to pony up a further €31bn we cannot afford, to prop up a monetary union that was created against our wishes and better judgment, and with the malevolent purpose of accelerating the great leap forward to a European state that is inherently undemocratic.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #282828; line-height: 1.48em; padding-bottom: 0.7em; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span style="font-size: x-small;"&gt;It is being presented as treachery, Anglo-Saxon perfidy, and the naked pursuit of national self-interest.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #282828; line-height: 1.48em; padding-bottom: 0.7em; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span style="font-size: x-small;"&gt;Let me just point out:&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #282828; line-height: 1.48em; padding-bottom: 0.7em; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span style="font-size: x-small;"&gt;1) The UK never agreed to such a commitment in the first place. The line was written into the December 9 summit communiqué in an attempt to bounce Britain into handing over the money.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #282828; line-height: 1.48em; padding-bottom: 0.7em; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span style="font-size: x-small;"&gt;2) The UK does not consider the rescue machinery to be remotely credible as constructed.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #282828; line-height: 1.48em; padding-bottom: 0.7em; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span style="font-size: x-small;"&gt;3) The eurozone has the means to tackle its own debt crisis, if it is willing to use them. These include fiscal pooling and the mobilisation of the ECB.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-2863746822491888757?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/2863746822491888757/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2011/12/stern-and-sober.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/2863746822491888757'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/2863746822491888757'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2011/12/stern-and-sober.html' title='Stern and sober'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-2462263291259033580</id><published>2011-12-18T23:32:00.000Z</published><updated>2011-12-18T23:32:33.654Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='New Cross Gate'/><category scheme='http://www.blogger.com/atom/ns#' term='Samsung Galaxy S'/><title type='text'>Galaxy strikes back</title><content type='html'>My poor Galaxy got resurrected.&lt;br /&gt;&lt;br /&gt;It was apparently not that difficult. £15 and a day's wait.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-2462263291259033580?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/2462263291259033580/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2011/12/galaxy-strikes-back.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/2462263291259033580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/2462263291259033580'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2011/12/galaxy-strikes-back.html' title='Galaxy strikes back'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-4574324494453358884</id><published>2011-12-11T21:27:00.001Z</published><updated>2011-12-11T21:27:49.453Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='David Cameron'/><category scheme='http://www.blogger.com/atom/ns#' term='Charlie Brooker'/><category scheme='http://www.blogger.com/atom/ns#' term='CERN'/><category scheme='http://www.blogger.com/atom/ns#' term='2011'/><category scheme='http://www.blogger.com/atom/ns#' term='2012'/><category scheme='http://www.blogger.com/atom/ns#' term='Bin Laden'/><category scheme='http://www.blogger.com/atom/ns#' term='Japan'/><title type='text'>He didn't forget about Bin Laden</title><content type='html'>Charlie Brooker &lt;a href="http://www.guardian.co.uk/commentisfree/2011/dec/11/charlie-brooker-2011-season-finale"&gt;didn't&lt;/a&gt;. Did you?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-4574324494453358884?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/4574324494453358884/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2011/12/he-didnt-forget-about-bin-laden.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/4574324494453358884'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/4574324494453358884'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2011/12/he-didnt-forget-about-bin-laden.html' title='He didn&apos;t forget about Bin Laden'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-4343647407695695203</id><published>2011-12-11T11:29:00.001Z</published><updated>2011-12-11T11:33:35.062Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='USSR'/><category scheme='http://www.blogger.com/atom/ns#' term='Google Translate'/><category scheme='http://www.blogger.com/atom/ns#' term='foreign language'/><category scheme='http://www.blogger.com/atom/ns#' term='Hindi'/><title type='text'>Spell your name game</title><content type='html'>Google Translate is an amazing service.&lt;br /&gt;&lt;br /&gt;The quality of translation is pretty solid. I mean human adults fluent in both languages would produce more precise and context-aware&amp;nbsp;translation, but it's about as good as a low-income school teacher non-native-speaker could manage.&lt;br /&gt;&lt;br /&gt;At least considering school teachers in USSR and post-USSR :-)&lt;br /&gt;&lt;br /&gt;Except for the obvious play nicely depicted in Love Actually, try figuring out to spell your name in a very foreign language. Look at mine in Hindi:&lt;br /&gt;&lt;br /&gt;ओलेग मीखाईलिक&lt;br /&gt;&lt;br /&gt;Looks really picturesque, doesn't it? I should try and learn to write it!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-4343647407695695203?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/4343647407695695203/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2011/12/spell-your-name-game.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/4343647407695695203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/4343647407695695203'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2011/12/spell-your-name-game.html' title='Spell your name game'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-3998918622669724191</id><published>2011-12-10T21:14:00.001Z</published><updated>2011-12-11T08:51:11.768Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='NAT'/><category scheme='http://www.blogger.com/atom/ns#' term='Internet Explorer'/><category scheme='http://www.blogger.com/atom/ns#' term='Chrome'/><title type='text'>Chrome hungs?</title><content type='html'>Something funny happens with my Chrome today.&lt;br /&gt;&lt;br /&gt;&lt;img class="sg_t" height="199" src="http://ts3.mm.bing.net/images/thumbnail.aspx?q=1353059536638&amp;amp;id=8a0d32aeba87359677faa3c0880c1b3e&amp;amp;url=http%3a%2f%2fwww.zdnet.co.uk%2fi%2fz5%2fillo%2fnw%2fstory_graphics%2f11mar%2fchrome-logo-chrome.jpg" style="height: 249.01px; left: 0px; top: 0px; width: 250px;" width="200" /&gt;&lt;u&gt;&lt;span style="color: #0066cc;"&gt;&lt;/span&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;First of all, yes, I did switch it off and on again. Whole laptop an the operating system and all its horses and men.&lt;br /&gt;&lt;br /&gt;IE works just fine, but Chrome only shows the initial page.&amp;nbsp;Nothing after ever gets out of downloading page/resolving cache.&lt;br /&gt;&lt;br /&gt;Something is funny with Chrome's cache I must say. There's been reports of it failing to resolve within some corporate networks with NATs, proxies&amp;nbsp;and filters.&lt;br /&gt;&lt;br /&gt;On one hand, it must be difficult to navigate through some corporate firewalls out into the wild open spaces of The Internet.&lt;br /&gt;&lt;br /&gt;On another hand, IE doesn't bat its eyelid to do just that. Except, of course, it breaks into sweat rendering simple pages.&lt;br /&gt;&lt;br /&gt;So it's the usual annoying 1.13 seconds to get to the page in IE, and totally cool and not irritating at all 4 minutes 42.67 seconds to reach timeout in Chrome. IE9 is slightly faster, IE6/7/8 are fashionably late, but they reliably get there.&lt;br /&gt;&lt;br /&gt;&lt;img alt="IE 1.0 logo" src="http://ieblog.members.winisp.net/images/ML_LogoUpdate_IE1.jpg" title="IE 1.0 logo" /&gt;&lt;br /&gt;Google, get your slacking act together!&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update.&lt;/strong&gt; I have gone so far to completely uninstall and cleanly install Chrome again. No fix, it is still going into mental block.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-3998918622669724191?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/3998918622669724191/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2011/12/chrome-hungs.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/3998918622669724191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/3998918622669724191'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2011/12/chrome-hungs.html' title='Chrome hungs?'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-3400284168860085488</id><published>2011-12-10T18:48:00.001Z</published><updated>2011-12-10T19:26:10.444Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Jonathan Antoine'/><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='Smooth scrolling'/><category scheme='http://www.blogger.com/atom/ns#' term='WPF 4.5'/><category scheme='http://www.blogger.com/atom/ns#' term='Internet Explorer'/><category scheme='http://www.blogger.com/atom/ns#' term='Page Down'/><category scheme='http://www.blogger.com/atom/ns#' term='Chrome'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows 98'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Internet Explorer rules!</title><content type='html'>Some Googlers are blinded by the shine of their employer.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.tbray.org/ongoing/When/201x/2011/11/26/Misscrolling"&gt;&lt;span style="font-size: xx-small;"&gt;http://www.tbray.org/ongoing/When/201x/2011/11/26/Misscrolling&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;strong&gt;Tim Bray:&amp;nbsp;Misscrolling&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Tim goes to lengths describing a misscrolling problem of 'browsers'. Page Up, Page Down -- he's even drawn a little chart.&lt;br /&gt;&lt;br /&gt;&lt;div class="misc"&gt;&lt;a href="http://www.tbray.org/ongoing/When/201x/2011/11/26/-big/Before.png.html"&gt;&lt;img alt="Figure 1; stream of text before scrolling" class="norm" height="200" src="http://www.tbray.org/ongoing/When/201x/2011/11/26/Before.png" title="Figure 1; stream of text before scrolling" width="182" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Except that he obviously didn't try it in IE.&lt;br /&gt;&lt;br /&gt;Internet Explorer's scrolling&amp;nbsp;is butter smooth. Microsoft's added&amp;nbsp;that little animation to their standard controls ages ago,&amp;nbsp;around Win98 timeframe. When you Page Down, it doesn't just jerk you to the new page, it whizz the content within about 1/4 of a second and ease it in to new position&amp;nbsp;ever so slightly. It also optimises multi-page scrolling so you don't merely see a sequence of animations, but one swift woozy slide.&lt;br /&gt;&lt;br /&gt;This is one and only thing that's simply and inexcusably horrible in Chrome.&lt;br /&gt;&lt;br /&gt;Tim complains about &lt;strong&gt;&lt;em&gt;end-of-file &lt;/em&gt;&lt;/strong&gt;Page Down experience because he's never seen IE scrolling. If he did, he would complain about &lt;strong&gt;&lt;em&gt;any&lt;/em&gt;&lt;/strong&gt; Page Down in Chrome. It's the same UX problem: the transition from one state to almost completely different state (original and subsequent pages&amp;nbsp;overlap by&amp;nbsp;mere 5%)&amp;nbsp;requires a transition.&lt;br /&gt;&lt;br /&gt;With transition both in-the-middle scrolling and document-end scrolling are natural and pleasant.&lt;br /&gt;&lt;br /&gt;Those pesky touch screens prove this point too. Any scrolling in iPhone and Android comes with a swishy animation, and a special handling for&amp;nbsp;document-end too.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now, &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/b5c0e1d3-3fb9-481c-918f-c810ef71ab8d/"&gt;Microsoft aren't&lt;/a&gt; fully&amp;nbsp;consistent here too. Even though smooth scrolling has been implemented for all the standard controls in Windows, Office&amp;nbsp;and IE -- they left it out in WPF. None in WPF3, 3.5, 4. Even in WPF 4.5 as they &lt;a href="http://www.jonathanantoine.com/2011/10/07/wpf-4-5-%E2%80%93-part-11-new-features-for-the-virtualizingpanel/"&gt;extended and improved&lt;/a&gt; scrolling experience, there still is no smooth scrolling after all.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-3400284168860085488?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/3400284168860085488/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2011/12/internet-explorer-rules.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/3400284168860085488'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/3400284168860085488'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2011/12/internet-explorer-rules.html' title='Internet Explorer rules!'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-2483357161435832439</id><published>2011-12-05T23:30:00.001Z</published><updated>2011-12-06T00:58:23.093Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='globalism'/><category scheme='http://www.blogger.com/atom/ns#' term='3 idiots'/><category scheme='http://www.blogger.com/atom/ns#' term='Fanaa'/><category scheme='http://www.blogger.com/atom/ns#' term='Bollywood'/><title type='text'>Bollywood</title><content type='html'>...is a duck. Not because it walks like a duck or quacks like a duck.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.aamirkhan.com/images/ak-blog.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Because it is like a piece of hearty delicious food.&lt;br /&gt;&lt;br /&gt;Imagine you've been eating fish and chips on Fridays and -- give or take two -- next week that diet is about to get boring. But hey, suddenly there is a place across the street, and they cook fantastic Peking duck.&lt;br /&gt;&lt;br /&gt;Bollywood movies is a bloody accessible, pleasant chunk of genuine entertainment.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;On the grand scale of trivialisation, where Russians value heart ache, Germans -- superhuman clockwork fabric of Universe, English -- the deepest undercurrents of irony and Japanese -- the purest, most sober and truthful reality, on that scale Indian core value is the ultimate humanism.&lt;br /&gt;&lt;br /&gt;If Hollywood needs Julia Roberts stretching face muscles or Clint Eastwood squinting his eagle eyes to imply emotions and relationships and inner rocky soul crushing, Bollywood manages to use simple bold strokes, childish metaphors and singing elephants to get the message across just as reliably.&lt;br /&gt;&lt;br /&gt;And here let me introduce you to those singing elephants. They are an ingenious figure of speech my mother in law came up with.&lt;br /&gt;-- OK Thakur, you've won. Go ahead, kill me, but first let me and my 100 elephants sing the last song.&lt;br /&gt;&lt;br /&gt;In a way, every proper Bollywood movie is a musical. There must be at least 2 large songs where the whole cast including the innocent pedestrians to the last elephant splash into the singing dancing madness. It is really weird for the first couple of films, but then it just comes natural. Here's an example how it works, and a good one too:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://0.gvt0.com/vi/ojHe-jdzsRw/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/ojHe-jdzsRw&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/ojHe-jdzsRw&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;No really, watch it, listen.&lt;br /&gt;&lt;br /&gt;Anyway, this whole rant is in fact about diversity and globalism. Those headless lemmings in the antiglobalist tents have no idea how beautiful globalisation is. Knowing two or three languages is good, but it is nowhere as good as being familiar with two or three cultures.&lt;br /&gt;&lt;br /&gt;The value locked in geographical pockets around the world counts in so many ducks that if unleashed no living human would be reduced to watching ITV ever again.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-2483357161435832439?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/2483357161435832439/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2011/12/bollywood.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/2483357161435832439'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/2483357161435832439'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2011/12/bollywood.html' title='Bollywood'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-561502526611927878</id><published>2011-12-05T23:26:00.001Z</published><updated>2011-12-05T23:28:43.218Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Eric Lippert'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Seattle'/><title type='text'>Conspiracy theories №2</title><content type='html'>&lt;br /&gt;&lt;div style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;/div&gt;&lt;br /&gt;Eric Lippert keeps dropping oblique hints.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/b/ericlippert/archive/2011/12/05/what-s-the-difference-remainder-vs-modulus.aspx"&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;http://blogs.msdn.com/b/ericlippert/archive/2011/12/05/what-s-the-difference-remainder-vs-modulus.aspx&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3 class="post-name" style="background-color: white; clear: both; color: #0066dd; font-family: 'Segoe UI Semibold', 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 20px; font-weight: normal; line-height: 25px; margin-bottom: 12px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left;"&gt;&lt;a href="http://i1.social.microsoft.com/profile/u/avatar.jpg?displayname=eric+lippert&amp;amp;size=large" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://i1.social.microsoft.com/profile/u/avatar.jpg?displayname=eric+lippert&amp;amp;size=large" /&gt;&lt;/a&gt;What's the difference? Remainder vs Modulus&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I am still puzzled. What is it they are building there in Seattle?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-561502526611927878?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/561502526611927878/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2011/12/conspiracy-theories-2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/561502526611927878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/561502526611927878'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2011/12/conspiracy-theories-2.html' title='Conspiracy theories №2'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-2428628817409061286</id><published>2011-11-29T08:18:00.001Z</published><updated>2011-11-29T08:21:56.486Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Code Search'/><category scheme='http://www.blogger.com/atom/ns#' term='Steve Jobs'/><category scheme='http://www.blogger.com/atom/ns#' term='Larry Page'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><category scheme='http://www.blogger.com/atom/ns#' term='Miguel de Icaza'/><title type='text'>Miguel laments Google Code Search</title><content type='html'>&lt;a href="http://tirania.org/blog/archive/2011/Nov-29.html"&gt;http://tirania.org/blog/archive/2011/Nov-29.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h1 class="entry-title" style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; clear: both; font-family: 'Helvetica Neue', Arial, Helvetica, 'Nimbus Sans L', sans-serif; font-size: 21px; line-height: 1.3em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;a href="http://tirania.org/blog/archive/2011/Nov-29.html" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: black; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: baseline;"&gt;Farewell to Google's CodeSearch&lt;/a&gt;&lt;/h1&gt;&lt;div class="entry-meta" style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #888888; font-family: 'Helvetica Neue', Arial, Helvetica, 'Nimbus Sans L', sans-serif; font-size: 12px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Posted on&amp;nbsp;&lt;a href="http://tirania.org/blog/archive/2011/Nov-29.html" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #888888; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;29 Nov 2011&lt;/a&gt;&amp;nbsp;by Miguel de Icaza&lt;/div&gt;&lt;div class="entry-content" style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; clear: both; color: #333333; font-family: Candara, Helvetica, Arial, 'Bitstream Charter', sans-serif; font-size: 16px; line-height: 24px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 12px; vertical-align: baseline;"&gt;&lt;div style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 8pt; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;i&gt;It seems that part of Steve Jobs' legacy was to give Larry Page some advise: focus. This according to Steve Jobs' recently published biography.&lt;/i&gt;&lt;/div&gt;&lt;div style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 8pt; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;i&gt;So Larry Page took the advise seriously and decided to focus. His brand of focus is to kill projects that were distracting to their goals. One of them, -and the one I cared the most about- was&amp;nbsp;&lt;a href="http://googleblog.blogspot.com/2011/10/fall-sweep.html" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #0066cc; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;CodeSearch&lt;/a&gt;..&lt;/i&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Miguel is right, the feature was seriously useful. I wonder if there was any value in it for Google though.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-2428628817409061286?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/2428628817409061286/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2011/11/miguel-laments-google-code-search.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/2428628817409061286'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/2428628817409061286'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2011/11/miguel-laments-google-code-search.html' title='Miguel laments Google Code Search'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-996735799790724550</id><published>2011-11-28T20:13:00.001Z</published><updated>2011-11-28T20:23:52.764Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='System.Linq.Expressions'/><category scheme='http://www.blogger.com/atom/ns#' term='Eric Lippert'/><category scheme='http://www.blogger.com/atom/ns#' term='async/await'/><category scheme='http://www.blogger.com/atom/ns#' term='Roslyn'/><category scheme='http://www.blogger.com/atom/ns#' term='compiler as a service'/><title type='text'>Conspiracy theories</title><content type='html'>When Eric Lippert states something &lt;a href="http://blogs.msdn.com/b/ericlippert/archive/2010/10/21/continuation-passing-style-revisited-part-one.aspx"&gt;academically obvious&lt;/a&gt;, you know &lt;a href="http://blogs.msdn.com/b/ericlippert/archive/2010/10/28/asynchrony-in-c-5-part-one.aspx"&gt;something interesting&lt;/a&gt; is brewing.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/b/ericlippert/archive/2011/11/28/why-have-a-stack.aspx"&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;http://blogs.msdn.com/b/ericlippert/archive/2011/11/28/why-have-a-stack.aspx&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3 class="post-name" style="background-color: white; clear: both; color: #0066dd; font-family: 'Segoe UI Semibold', 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 20px; font-weight: normal; line-height: 25px; margin-bottom: 12px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left;"&gt;Why have a stack?&lt;/h3&gt;&lt;br /&gt;&lt;img alt="Avatar of Eric Lippert" src="data:image/jpg;base64,/9j/4AAQSkZJRgABAQEA8ADwAAD/2wBDAA0JCgsKCA0LCgsODg0PEyAVExISEyccHhcgLikxMC4pLSwzOko+MzZGNywtQFdBRkxOUlNSMj5aYVpQYEpRUk//2wBDAQ4ODhMREyYVFSZPNS01T09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0//wAARCAAsAB0DASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDL10stlJtOC2B+tPg0GF7OJcMZCuT7mrOpWJmlhSRT8rgkelMupNVt5lktl3R7uOK4G+iPRhD7TRl3Wk3cMqDyiFJwCe9X5vCUk6RyJMF3Lkjpg1vTavc2TQrdWRlWZASyDge1WmvEkRXGUU9Aa2TdjNwVzgtI1a8u9QJu7lpN4JIPTPbFbX2uZ3WPOdh4HQE/WuKs0uDerHbKWlz8oHevUNAtIfsKx3UCGSQZcMM/hUVYrmLoTfKWYb4+VH5ixkY5jyCeO9UtRmsriVRPfC3K9FVgDz61oanYLBatPaxBnhBZUJ9ucE15ZeXcl1dSTyH5nOfpWkY3IqVEilHPJDciWJyrqeDXcaNrp82Lz2Vc45J4NcBmrcEjNHsJ4UcVc6aluYQqSi9D17VdSiTRridWU4jOCDkGvIpSN528jPFaEUsghZN7bSORng1Tu1VWUqMZHNWo2RMpczP/2Q==" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;What is it this time? I suspect it is to do with &lt;a href="http://blogs.msdn.com/b/csharpfaq/archive/2011/11/18/roslyn-syntax-visualizers.aspx"&gt;Roslyn&lt;/a&gt;, &lt;a href="http://www.interact-sw.co.uk/iangblog/2005/09/30/expressiontrees"&gt;System.Linq.Expressions&lt;/a&gt; and syntactic trees.&lt;br /&gt;&lt;br /&gt;The last mega-feature introduced by C# team was async/await -- which moves C# ahead of most competitors like Java and Scala at least by couple of years. Compiler-as-a-service can be just as huge (although Java already have several open-source compilers, and the language itself being more primitive lends itself to commoditisation easier).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-996735799790724550?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/996735799790724550/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2011/11/conspiracy-theories.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/996735799790724550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/996735799790724550'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2011/11/conspiracy-theories.html' title='Conspiracy theories'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-7015479479321587880</id><published>2011-11-28T09:25:00.001Z</published><updated>2011-11-28T09:30:06.980Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Steve Jobs'/><category scheme='http://www.blogger.com/atom/ns#' term='Adobe'/><category scheme='http://www.blogger.com/atom/ns#' term='VisionMobile'/><category scheme='http://www.blogger.com/atom/ns#' term='Flash'/><title type='text'>VisionMobile: Flash obituary</title><content type='html'>Great through review of Flash history (excluding Macromedia/Shockwave prehistoric times) on VisionMobile:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.visionmobile.com/blog/2011/11/the-death-of-flash-8-years-in-the-making/"&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;http://www.visionmobile.com/blog/2011/11/the-death-of-flash-8-years-in-the-making/&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2 style="border-top-color: rgb(0, 0, 0); border-top-style: solid; border-top-width: 1px; color: #b90020; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 16px; height: 19px; line-height: 19px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 2px; padding-right: 0px; padding-top: 7px;"&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;The death of Flash – 8 years in the making&lt;/span&gt;&lt;/h2&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; line-height: 18px;"&gt;[Adobe’s decision to stop developing Flash for mobile browsers is the talk of the day – but the reasons behind Flash’s ultimate failure are not that obvious. Guest author Francisco Kattan discusses the chain of events that led to the death of Flash – a time bomb inadvertently planted by Adobe many years ago].&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img alt="The death of Flash - 8 years in the making" height="168" src="http://www.visionmobile.com/blog/wp-content/uploads/2011/11/VM_Flash.jpg" width="200" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;A good point there is that Flash did have a chance. It is too simplistic to demonise the platform. Maybe it was one of the reasons Steve Jobs did: he liked simplicity.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-7015479479321587880?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/7015479479321587880/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2011/11/visionmobile-flash-obituary.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/7015479479321587880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/7015479479321587880'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2011/11/visionmobile-flash-obituary.html' title='VisionMobile: Flash obituary'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-4320868796989865172</id><published>2011-11-27T11:09:00.001Z</published><updated>2011-11-27T17:30:43.691Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='George Osborne'/><category scheme='http://www.blogger.com/atom/ns#' term='Banks'/><category scheme='http://www.blogger.com/atom/ns#' term='credit easing'/><category scheme='http://www.blogger.com/atom/ns#' term='BBC News'/><category scheme='http://www.blogger.com/atom/ns#' term='loans'/><title type='text'>Subprime credit easing</title><content type='html'>&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;a href="http://www.bbc.co.uk/news/uk-politics-15907249"&gt;http://www.bbc.co.uk/news/uk-politics-15907249&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #505050; font-family: Arial, Helmet, Freesans, sans-serif; font-size: 39px; font-weight: bold; letter-spacing: -1px; line-height: 34px;"&gt;Osborne backing up to £40bn in 'credit easing' loans&lt;/span&gt;&lt;/blockquote&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://news.bbcimg.co.uk/media/images/56963000/jpg/_56963849_56963848.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="180" src="http://news.bbcimg.co.uk/media/images/56963000/jpg/_56963849_56963848.jpg" style="-webkit-user-select: none; border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; font-style: italic; letter-spacing: 0px;" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;blockquote class="tr_bq"&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #333333; font-family: Arial, Helmet, Freesans, sans-serif; font-size: 13px; line-height: 16px;"&gt;Chancellor George Osborne: "We will underwrite the loans the banks make to small businesses in order to cut the interest rates the small businesses pay."&lt;/span&gt;&lt;br /&gt;&lt;div class="introduction" id="story_continues_1" style="background-color: white; clear: left; color: #333333; font-family: Arial, Helmet, Freesans, sans-serif; font-size: 1.077em; font-weight: bold; line-height: 18px; margin-bottom: 18px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-rendering: auto;"&gt;Chancellor George Osborne will unveil credit easing schemes to release up to £40bn in loans to small firms when he delivers Tuesday's autumn statement.&lt;/div&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #333333; font-family: Arial, Helmet, Freesans, sans-serif; font-size: 17px; line-height: 18px;"&gt;Under one plan, the government would underwrite banks' borrowing so they could pass on cheaper loans to firms turning over less than £50m.&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;I wonder if British banks are now greatly motivated to give credits to the crappy category of small businesses, so they would promptly default triggering governmental underwriting.&lt;br /&gt;&lt;br /&gt;The owner of crappy business would have a good time running their invention for a little while, and the bank would earn small up-front administration fee. The crappier the business, the greater is the profit.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-4320868796989865172?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/4320868796989865172/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2011/11/httpwww.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/4320868796989865172'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/4320868796989865172'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2011/11/httpwww.html' title='Subprime credit easing'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-2276682027571462265</id><published>2011-11-27T10:14:00.001Z</published><updated>2011-11-27T10:50:41.892Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Money'/><category scheme='http://www.blogger.com/atom/ns#' term='Guardian'/><category scheme='http://www.blogger.com/atom/ns#' term='David Mitchell'/><title type='text'>Constitutional monarchy, constitutional parties — Britain to fossilise itself</title><content type='html'>&lt;a href="http://www.guardian.co.uk/commentisfree/2011/nov/27/david-mitchell-party-funding-lobbying"&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;http://www.guardian.co.uk/commentisfree/2011/nov/27/david-mitchell-party-funding-lobbying&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;h1&gt;&lt;/h1&gt;&lt;h1 style="border-bottom-color: rgb(0, 97, 166); border-collapse: collapse; border-left-color: rgb(0, 97, 166); border-right-color: rgb(0, 97, 166); border-top-color: initial; border-top-style: initial; border-top-width: 0px; color: #333333; font-family: georgia, serif; font-weight: normal; line-height: 1.154; margin-bottom: 2px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; width: 460px;"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Better we fund our political parties than let lobbyists rule the roost&lt;/span&gt;&lt;/h1&gt;&lt;div class="stand-first-alone" id="stand-first"&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #666666; font-family: arial, sans-serif; font-size: 16px; line-height: 19px;"&gt;Sir Christopher Kelly's proposals to reform political funding would avoid massive waste and injustice, if implemented&lt;/span&gt;&lt;br /&gt;&lt;ul class="article-attributes b4" style="background-color: white; background-repeat: no-repeat no-repeat; border-bottom-color: rgb(0, 97, 166); border-bottom-style: solid; border-bottom-width: 1px; border-collapse: collapse; border-left-color: rgb(0, 97, 166); border-right-color: rgb(0, 97, 166); border-top-color: rgb(0, 97, 166); border-top-style: solid; border-top-width: 1px; color: #333333; font-family: arial, sans-serif; font-size: 12px; line-height: 1.25; list-style-type: none; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-height: 66px; overflow-x: hidden; overflow-y: hidden; padding-bottom: 12px; padding-left: 0px; padding-right: 0px; padding-top: 2px; position: relative;"&gt;&lt;li style="background-repeat: no-repeat no-repeat; border-collapse: collapse; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; overflow-x: hidden; overflow-y: hidden; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;a href="http://www.guardian.co.uk/profile/davidmitchell" rel="author" style="background-repeat: no-repeat no-repeat; border-collapse: collapse; color: #005689; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;"&gt;&lt;img alt="David Mitchell" class="contributor-pic-small" height="60" src="http://static.guim.co.uk/sys-images/Observer/Pix/pictures/2009/6/14/1244978848516/David-Mitchell-001.jpg" style="background-repeat: no-repeat no-repeat; border-bottom-style: none; border-collapse: collapse; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 2px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="Contributor picture" width="60" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li id="contrib-shift" style="background-repeat: no-repeat no-repeat; border-collapse: collapse; left: 70px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; overflow-x: hidden; overflow-y: hidden; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; position: absolute; top: 5px;"&gt;&lt;ul style="background-repeat: no-repeat no-repeat; border-collapse: collapse; list-style-type: none; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;li class="byline" style="background-repeat: no-repeat no-repeat; border-collapse: collapse; display: block; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; overflow-x: hidden; overflow-y: hidden; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;a class="contributor" href="http://www.guardian.co.uk/profile/davidmitchell" rel="author" style="background-repeat: no-repeat no-repeat; border-collapse: collapse; color: #005689; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;"&gt;David Mitchell&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div id="content"&gt;&lt;div id="article-wrapper"&gt;&lt;div id="main-content-picture"&gt;&lt;img alt="Illustration for Mitchell" height="192" src="http://static.guim.co.uk/sys-images/Observer/Columnist/Columnists/2011/11/25/1322233388441/Illustration-for-Mitchell-006.jpg" width="320" /&gt;&lt;br /&gt;&lt;div class="caption"&gt;&lt;div id="main-content-picture" style="background-color: white; background-repeat: no-repeat no-repeat; border-collapse: collapse; color: #333333; font-family: arial, sans-serif; font-size: 14px; line-height: 18px; margin-bottom: 14px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;div class="caption" style="background-repeat: no-repeat no-repeat; border-collapse: collapse; color: #666666; font-size: 12px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Illustration by David Foldvari.&lt;/div&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #333333; font-family: arial, sans-serif; font-size: 14px; line-height: 18px;"&gt;Sometimes, just for a moment, I think it might be a good thing if money ceased to exist, if the eurozone sovereign debt crisis spiralled so hopelessly out of control that there was an international bank run of catastrophic proportions; and so all of the numbers and, in millions of cases, negative numbers next to our names on screens became academic because the screen-owning institutions had run out of the pieces of paper that the numbers were supposed to represent – and indeed weren't even sure for how much longer they'd receive the electricity to run the computers that stored these now notional numbers.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;br /&gt;Worrying evidence how more and more adults lose contact with reality.&lt;br /&gt;&lt;br /&gt;Will the western world descend into post-soviet populism,&amp;nbsp;cynicism&amp;nbsp;and apathy? I so much hope it won't. It would be a great shame for all those brilliant educated insightful people to become corrupt and miserable and driven in great hordes by fear and loathing.&lt;br /&gt;&lt;br /&gt;If it will, I'll emigrate to Japan.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-2276682027571462265?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/2276682027571462265/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2011/11/constitutional-monarchy-constitutional.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/2276682027571462265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/2276682027571462265'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2011/11/constitutional-monarchy-constitutional.html' title='Constitutional monarchy, constitutional parties — Britain to fossilise itself'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-6278307595002613506</id><published>2011-11-26T09:32:00.001Z</published><updated>2011-11-27T09:52:30.261Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='President'/><category scheme='http://www.blogger.com/atom/ns#' term='Medvedev'/><category scheme='http://www.blogger.com/atom/ns#' term='Badminton'/><title type='text'>Mr. President</title><content type='html'>Dear Mr. President, Dmitry Anatolievich Medvedev,&lt;br /&gt;&lt;br /&gt;If he is bullying you, please wink your left eye next time they show you on TV.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.karateworld.ru/images/1995-a.png" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-6278307595002613506?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/6278307595002613506/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2011/11/mr-president.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/6278307595002613506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/6278307595002613506'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2011/11/mr-president.html' title='Mr. President'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-2921098442062650179</id><published>2011-11-20T23:20:00.001Z</published><updated>2011-11-20T23:50:09.865Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='David Cameron'/><category scheme='http://www.blogger.com/atom/ns#' term='Charlie Brooker'/><category scheme='http://www.blogger.com/atom/ns#' term='Steve Jobs'/><category scheme='http://www.blogger.com/atom/ns#' term='Telegraph'/><category scheme='http://www.blogger.com/atom/ns#' term='lizard'/><title type='text'>Is he a lizard?</title><content type='html'>Apparently, I've missed a big one of Charlie's:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.guardian.co.uk/commentisfree/2011/oct/16/charlie-brooker-cameron-a-lizard"&gt;&lt;span style="font-size: xx-small;"&gt;http://www.guardian.co.uk/commentisfree/2011/oct/16/charlie-brooker-cameron-a-lizard&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;h1 style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; background-repeat: no-repeat no-repeat; border-bottom-color: rgb(0, 97, 166); border-collapse: collapse; border-left-color: rgb(0, 97, 166); border-right-color: rgb(0, 97, 166); border-top-width: 0px; color: #333333; font-family: georgia, serif; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 1.154; margin: 0px 0px 2px; orphans: 2; padding: 0px; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; width: 460px; word-spacing: 0px;"&gt;&lt;span style="font-size: large;"&gt;Everyone knows David Cameron is a lizard. So why does the Telegraph continue to deny the truth?&lt;/span&gt;&lt;/h1&gt;&lt;br /&gt;&lt;br /&gt;If I were David Cameron, I'd&amp;nbsp;make a photo&amp;nbsp;of a&amp;nbsp;lizard in a cousy family frame seen in background&amp;nbsp;a non-negotiable requirement for any TV&amp;nbsp;interview.&lt;br /&gt;&lt;br /&gt;That kōan would have beaten even the thing that Steve Jobs forbade to disclose in his will.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-2921098442062650179?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/2921098442062650179/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2011/11/is-he-lizard.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/2921098442062650179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/2921098442062650179'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2011/11/is-he-lizard.html' title='Is he a lizard?'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-3434124957645687134</id><published>2011-11-20T22:50:00.003Z</published><updated>2011-11-20T23:08:58.798Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='St. Paul&apos;s'/><category scheme='http://www.blogger.com/atom/ns#' term='Occupy'/><category scheme='http://www.blogger.com/atom/ns#' term='Janet Daley'/><category scheme='http://www.blogger.com/atom/ns#' term='Telegraph'/><title type='text'>Hawk of The Telegraph is caught preaching to the choir</title><content type='html'>&lt;blockquote class="tr_bq"&gt;&lt;a href="http://www.telegraph.co.uk/finance/financialcrisis/8901300/The-Occupy-movement-has-failed-the-essential-test-of-protest.html"&gt;&lt;span style="font-size: xx-small;"&gt;http://www.telegraph.co.uk/finance/financialcrisis/8901300/The-Occupy-movement-has-failed-the-essential-test-of-protest.html&lt;/span&gt;&lt;/a&gt;&lt;/blockquote&gt;&lt;blockquote class="tr_bq"&gt;&lt;span style="font-size: large;"&gt;The Occupy movement has failed the essential test of protest&lt;/span&gt;&lt;/blockquote&gt;&lt;div class="storyHead" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; color: #282828; font-size-adjust: none; font-stretch: normal; font: 10px/normal georgia, &amp;quot;times new roman&amp;quot;, times, serif; letter-spacing: normal; margin: 0px; orphans: 2; padding: 0px; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;blockquote class="tr_bq"&gt;Unlike the student revolutionaries of the Sixties, the protesters at Zuccotti Park and St Paul's Cathedral have no clear political objectives, apart from vague attacks on the current economic system.&amp;nbsp;&lt;/blockquote&gt;&lt;/div&gt;&lt;blockquote class="tr_bq"&gt;&lt;img alt="This is what we want: opposition to American involvement in the Vietnam War was a central element of the student protest movement in the 1960s - In the Sixties, we student protesters knew what we were fighting for " height="199" src="http://i.telegraph.co.uk/multimedia/archive/02060/student-protest_2060441c.jpg" style="border-width: 0px; display: block;" width="320" /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;All those people saything things about Occupy -- they should stop doing it already. Not because those are wrong things, but because it clearly doesn't work.&lt;br /&gt;&lt;br /&gt;Perhaps the price of a&amp;nbsp;real actual newspaper like Telegraph or Guardian is&amp;nbsp;too high&amp;nbsp;for the campers, isn't it?&lt;br /&gt;&lt;br /&gt;Or maybe people acting unreasonably from a common sense balanced point of view, they are unlikely to be persuaded by common sense and balanced reasoning, are they?&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-3434124957645687134?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/3434124957645687134/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2011/11/hawk-of-telegraph-is-caught-preaching.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/3434124957645687134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/3434124957645687134'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2011/11/hawk-of-telegraph-is-caught-preaching.html' title='Hawk of The Telegraph is caught preaching to the choir'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-3868588705370284449</id><published>2011-11-20T22:43:00.001Z</published><updated>2011-11-20T22:48:44.166Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Charlie Brooker'/><category scheme='http://www.blogger.com/atom/ns#' term='Blair'/><category scheme='http://www.blogger.com/atom/ns#' term='John Lewis'/><category scheme='http://www.blogger.com/atom/ns#' term='noughties'/><category scheme='http://www.blogger.com/atom/ns#' term='TV ads'/><category scheme='http://www.blogger.com/atom/ns#' term='Guardian'/><category scheme='http://www.blogger.com/atom/ns#' term='Christmas'/><title type='text'>Cute Charlie Brooker</title><content type='html'>I wish I had the artistism and grasp of metathor of Charlie Brooker. His latest article in Guardian brings&amp;nbsp;some of the best&amp;nbsp;memories of happy Blair era, all that sweet moaning how screwed and miserable our wealthy sophistication really is. I love you, Britain of noughties!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.guardian.co.uk/commentisfree/2011/nov/20/christmas-adverts-john-lewis"&gt;&lt;span style="font-size: xx-small;"&gt;http://www.guardian.co.uk/commentisfree/2011/nov/20/christmas-adverts-john-lewis&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h1 style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; background-repeat: no-repeat no-repeat; border-bottom-color: rgb(0, 97, 166); border-collapse: collapse; border-left-color: rgb(0, 97, 166); border-right-color: rgb(0, 97, 166); border-top-width: 0px; color: #333333; font-size-adjust: none; font-stretch: normal; font: 2.16em/1.154 georgia, serif; letter-spacing: normal; margin: 0px 0px 2px; orphans: 2; padding: 0px; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; width: 460px; word-spacing: 0px;"&gt;This year's Christmas adverts aren't adverts, they're 'events'. Ghastly events&lt;/h1&gt;&lt;div class="stand-first-alone" id="stand-first" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; background-repeat: no-repeat no-repeat; border-collapse: collapse; color: #666666; font-size-adjust: none; font-stretch: normal; font: 1.33em/1.25 arial, sans-serif; letter-spacing: normal; margin: 0px; orphans: 2; padding: 0px 0px 34px; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; width: 460px; word-spacing: 0px;"&gt;&lt;/div&gt;The John Lewis commercial doesn't make me cry. It's just an advert for a shop&lt;br /&gt;&lt;br /&gt;&lt;ul class="article-attributes b4" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; background-repeat: no-repeat no-repeat; border-bottom-style: solid; border-bottom-width: 1px; border-collapse: collapse; border-color: rgb(0, 97, 166); border-top-style: solid; border-top-width: 1px; color: #333333; font-size-adjust: none; font-stretch: normal; font: 12px/1.25 arial, sans-serif; letter-spacing: normal; list-style-type: none; margin: 0px 0px 10px; min-height: 66px; orphans: 2; overflow-x: hidden; overflow-y: hidden; padding: 2px 0px 12px; position: relative; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;li style="background-repeat: no-repeat no-repeat; border-collapse: collapse; font-weight: normal; margin: 0px; overflow-x: hidden; overflow-y: hidden; padding: 0px;"&gt;&lt;a href="http://www.guardian.co.uk/profile/charliebrooker" rel="author" style="background-repeat: no-repeat no-repeat; border-collapse: collapse; color: #005689; margin: 0px; padding: 0px; text-decoration: underline;"&gt;&lt;img alt="Charlie Brooker" class="contributor-pic-small" height="60" src="http://static.guim.co.uk/sys-images/Guardian/Pix/contributor/2007/09/28/charlie_brooker_140x140.jpg" style="background-repeat: no-repeat no-repeat; border-collapse: collapse; margin: 2px 0px 0px; padding: 0px;" title="Contributor picture" width="60" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li id="contrib-shift" style="background-repeat: no-repeat no-repeat; border-collapse: collapse; font-weight: normal; left: 70px; margin: 0px; overflow-x: hidden; overflow-y: hidden; padding: 0px; position: absolute; top: 5px;"&gt;&lt;ul style="background-repeat: no-repeat no-repeat; border-collapse: collapse; list-style-type: none; margin: 0px; padding: 0px;"&gt;&lt;li class="byline" style="background-repeat: no-repeat no-repeat; border-collapse: collapse; display: block; font-weight: normal; margin: 0px; overflow-x: hidden; overflow-y: hidden; padding: 0px;"&gt;&lt;a class="contributor" href="http://www.guardian.co.uk/profile/charliebrooker" rel="author" style="background-repeat: no-repeat no-repeat; border-collapse: collapse; color: #005689; font-weight: bold; margin: 0px; padding: 0px; text-decoration: none;"&gt;Charlie Brooker&lt;/a&gt;&lt;/li&gt;&lt;li class="publication" style="background-repeat: no-repeat no-repeat; border-collapse: collapse; font-weight: normal; margin: 0px; overflow-x: hidden; overflow-y: hidden; padding: 0px;"&gt;&lt;a href="http://www.guardian.co.uk/" style="background-repeat: no-repeat no-repeat; border-collapse: collapse; color: #005689; margin: 0px; padding: 0px; text-decoration: none;"&gt;guardian.co.uk&lt;/a&gt;,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;time datetime="2011-11-20T20:00GMT" pubdate="" style="background-repeat: no-repeat no-repeat; border-collapse: collapse; margin: 0px; padding: 0px;"&gt;Sunday 20 November 2011 20.00 GMT&lt;/time&gt;&lt;/li&gt;&lt;li class="history" style="background-repeat: no-repeat no-repeat; border-collapse: collapse; display: block; font-weight: normal; margin: 0px; overflow-x: hidden; overflow-y: hidden; padding: 0px;"&gt;&lt;a class="rollover history-link" href="http://www.guardian.co.uk/commentisfree/2011/nov/20/christmas-adverts-john-lewis#history-link-box" style="background-repeat: no-repeat no-repeat; border-collapse: collapse; color: #005689; margin: 0px; padding: 0px; text-decoration: none;"&gt;Article history&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-3868588705370284449?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/3868588705370284449/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2011/11/cute-charlie-brooker.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/3868588705370284449'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/3868588705370284449'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2011/11/cute-charlie-brooker.html' title='Cute Charlie Brooker'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-2928419004775159608</id><published>2011-11-18T01:15:00.001Z</published><updated>2011-11-18T01:25:24.107Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Facebook'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><category scheme='http://www.blogger.com/atom/ns#' term='LINQ'/><category scheme='http://www.blogger.com/atom/ns#' term='Hadoop'/><title type='text'>LINQ for High-Performance Computers?</title><content type='html'>Don't worry it's been killed off.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.technet.com/b/windowshpc/archive/2011/11/11/hpc-pack-2008-r2-sp3-and-windows-azure-hpc-scheduler-released.aspx"&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;http://blogs.technet.com/b/windowshpc/archive/2011/11/11/hpc-pack-2008-r2-sp3-and-windows-azure-hpc-scheduler-released.aspx&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3 class="post-name" style="background-color: white; clear: both; color: #0066dd; font-family: 'Segoe UI Semibold', 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 20px; font-weight: normal; line-height: 25px; margin-bottom: 12px; margin-left: 0px; margin-right: 0px; margin-top: 7px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left;"&gt;Announcing the Windows Azure HPC Scheduler and HPC Pack 2008 R2 Service Pack 3 releases!&lt;/h3&gt;&lt;blockquote class="tr_bq"&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #333333; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px;"&gt;As part of this release we’ve also &lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: #fff2cc; color: #333333; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px;"&gt;updated the preview version of LINQ to HPC, however, this will be the final preview and we do not plan to move forward with a production release.&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #333333; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px;"&gt;&amp;nbsp; In line with our announcement in October at the PASS conference we will focus our effort on bringing Apache Hadoop to both Windows Server and Windows Azure.&amp;nbsp; Hadoop has emerged as a great platform for analyzing unstructured data or large volumes of data at low cost, which aligns well with Microsoft’s vision for its Information Platform.&amp;nbsp; It also has a vibrant community of users and developers eager to innovate on this platform.&amp;nbsp; Microsoft is keen to not only contribute to this vibrant community, but also help its adoption in the Enterprise.&amp;nbsp; We expect a preview version on Windows Azure available by end of the calendar year.&lt;/span&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Should LINQ really be extended to such crazy uses? I don't know, it certainly feels weird.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;On another hand, Reactive Extensions (LINQ to asynchronous events) is both crazy and refreshingly natural. Perhaps the trick is not to hide features behind language tools, but express them using language tools. And ironically, it actually looks like LINQ-to-SQL is one of those cases where LINQ is getting in the way too.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;BTW, what is &lt;a href="http://en.wikipedia.org/wiki/Apache_Hadoop"&gt;Hadoop&lt;/a&gt;? As far as I can tell, it's Facebook's alliance to snatch high-scalable performance championship from Google. By using Open-Source approach.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Which means I both don't like it at all, and think it's going to be huge. Especially, if Microsoft now joins.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-2928419004775159608?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/2928419004775159608/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2011/11/linq-for-high-performance-computers.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/2928419004775159608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/2928419004775159608'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2011/11/linq-for-high-performance-computers.html' title='LINQ for High-Performance Computers?'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-5359278407982025441</id><published>2011-11-18T00:44:00.001Z</published><updated>2011-11-18T01:10:54.547Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='VS11'/><category scheme='http://www.blogger.com/atom/ns#' term='Ribbon'/><category scheme='http://www.blogger.com/atom/ns#' term='search'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><category scheme='http://www.blogger.com/atom/ns#' term='Clippy'/><category scheme='http://www.blogger.com/atom/ns#' term='VS10'/><category scheme='http://www.blogger.com/atom/ns#' term='Somasegar'/><title type='text'>Visual Studio 11: summary</title><content type='html'>&lt;a href="http://blogs.msdn.com/b/somasegar/archive/2011/11/17/visual-studio-11-ide-advances.aspx"&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;http://blogs.msdn.com/b/somasegar/archive/2011/11/17/visual-studio-11-ide-advances.aspx&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3 class="post-name" style="background-color: white; border-bottom-color: rgb(223, 223, 223); border-bottom-style: dotted; border-bottom-width: 1px; color: #366df4; font-family: 'trebuchet ms', trebuchet, arial, helvetica, sans-serif; font-size: 2em; margin-bottom: 18px; margin-left: 0px; margin-right: 0px; margin-top: 7px; padding-bottom: 12px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left;"&gt;Visual Studio 11 IDE Advances&lt;/h3&gt;&lt;br /&gt;Somasegar brilliantly summarises the advances in VS11.&lt;br /&gt;&lt;br /&gt;First of all, search is everywhere. And it is really good -- think how web changed after Google.&lt;br /&gt;&lt;br /&gt;&lt;img height="225" src="https://byfiles.storage.live.com/y1pmmJZS8I64bZI7ROphROoI-CwLujwFlE4Wuli34HyULNx3yIbFyr4RGIBrSV6MVAmjn59APO-7QE/image1.png?psid=1" width="400" /&gt;&lt;br /&gt;&lt;br /&gt;Let's accept it, all the Microsoft desktop products are&amp;nbsp;behemoths. They are complicated, they've got bazillions of features unknown and useless. For decades it only got worse, clippies and ribbons. But apparently Google works just as fine in a large desktop application.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And apart the search? A couple of other cool gadgets: intelligent source highlighting, mixing VS10/11 project files, the preview tab.&lt;br /&gt;&lt;br /&gt;Interestingly, some of those features you can get in VS10 from &lt;a href="http://visualstudiogallery.msdn.microsoft.com/d0d33361-18e2-46c0-8ff2-4adea1e34fef"&gt;&lt;b&gt;Visual Studio Productivity Power Tools&lt;/b&gt;&lt;/a&gt; pack:&lt;br /&gt;&lt;br /&gt;&lt;img height="147" src="http://i2.visualstudiogallery.msdn.microsoft.com/d0d33361-18e2-46c0-8ff2-4adea1e34fef/image/file/50274/1/find1.png" width="640" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-5359278407982025441?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/5359278407982025441/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2011/11/visual-studio-11-summary.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/5359278407982025441'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/5359278407982025441'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2011/11/visual-studio-11-summary.html' title='Visual Studio 11: summary'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-4322704881142908680</id><published>2011-11-16T19:50:00.001Z</published><updated>2011-11-17T20:27:40.635Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Gay'/><category scheme='http://www.blogger.com/atom/ns#' term='Government'/><category scheme='http://www.blogger.com/atom/ns#' term='St. Petersburg'/><category scheme='http://www.blogger.com/atom/ns#' term='Russia'/><title type='text'>Gay propaganda will be punished in St. Petersburg</title><content type='html'>&lt;a href="http://newsru.com/russia/16nov2011/gaypride.html"&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;http://newsru.com/russia/16nov2011/gaypride.html&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;img alt="File:Kazanskij sobor.jpg" height="179" src="http://upload.wikimedia.org/wikipedia/commons/thumb/7/7b/Kazanskij_sobor.jpg/800px-Kazanskij_sobor.jpg" width="320" /&gt;&lt;br /&gt;&lt;br /&gt;St. Petersburg local government decided to 'prohibit gay and&amp;nbsp;paedophilia&amp;nbsp;propaganda'. It was voted in almost unanimously: 37 out of 39.&lt;br /&gt;&lt;br /&gt;Comments from the bonzas are truly Kafkian.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-4322704881142908680?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/4322704881142908680/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2011/11/gay-propaganda-will-be-punished-in-st.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/4322704881142908680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/4322704881142908680'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2011/11/gay-propaganda-will-be-punished-in-st.html' title='Gay propaganda will be punished in St. Petersburg'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-4034101942868915100</id><published>2011-11-16T08:28:00.001Z</published><updated>2011-11-16T08:40:03.138Z</updated><title type='text'>Smoke ban in cars</title><content type='html'>&lt;a href="http://www.carsuk.net/watching-top-gear-is-worse-for-you-than-smoking/"&gt;&lt;img alt="Top Gear is worse for you than smoking " src="http://www.carsuk.net/wp-content/uploads/2011/08/Smoking-worse-Top-Gear.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Doctors decided to ban smoking in cars.&lt;br /&gt;&lt;br /&gt;I've never driven neither have ever I smoked. But should it be banned?&lt;br /&gt;&lt;br /&gt;If we start to ban things that are bad, there's many more things we should ban before getting to smoking in cars.&lt;br /&gt;&lt;br /&gt;Smoking keeping a cigarette between lips is more dangerous. Drinking anything with high alcohol content. Killing people is quite bad.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-4034101942868915100?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/4034101942868915100/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2011/11/smoke-ban-in-cars.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/4034101942868915100'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/4034101942868915100'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2011/11/smoke-ban-in-cars.html' title='Smoke ban in cars'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-6804111379919666138</id><published>2011-11-16T01:41:00.001Z</published><updated>2011-11-16T01:50:19.506Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='GC'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='F#'/><category scheme='http://www.blogger.com/atom/ns#' term='Reference counting'/><category scheme='http://www.blogger.com/atom/ns#' term='Mathematica'/><title type='text'>Reference counting: is it really a form of GC?</title><content type='html'>Well, in a way yes. Even not releasing any memory can be considered a form of Garbage Collection technically.&lt;br /&gt;&lt;br /&gt;But the benchmarks are unambiguous. Reference counting does not scale.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://flyingfrogblog.blogspot.com/2011/11/real-garbage-collector-characteristics.html"&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;http://flyingfrogblog.blogspot.&lt;span class="Apple-style-span" style="background-color: white;"&gt;com/2011/11/real-garbage-collector-characteristics.html&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3 class="post-title entry-title" style="color: #ff6633; font: normal normal bold 130%/normal 'Lucida Grande', 'Trebuchet MS'; letter-spacing: -1px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;Real garbage collector characteristics&lt;/span&gt;&lt;/h3&gt;&lt;div class="post-header" style="color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19px; text-align: left;"&gt;&lt;div class="post-header-line-1"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="post-body entry-content" id="post-body-6574770212091665326" style="color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;The trade-offs between tracing and reference counting garbage collectors are nicely demonstrated by systems like F# and Mathematica. F# inherits garbage collection from .NET which uses a conventional generational tracing garbage collector with three generations and a Large Object Heap (LOH). Mathematica uses reference counting with language semantics that make it impossible to create cycles in the heap.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In reference counting world destroying a reference to the root of a large tree causes a chain orgasm of releasing and releasing an releasing. The tree doesn't merely fall down cut at the root, it sheds leaves and small branches and destroys every little wooden chip in an meticulously ordered manner.&lt;br /&gt;&lt;br /&gt;GC comparing to that just shoves the whole tree in a big furnace that's set to burn once a week. Sparing no consideration for tender leaves or mature trunk. If a chunk of memory is not reachable it has no meaning and need no looking.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-6804111379919666138?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/6804111379919666138/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2011/11/reference-counting-is-it-really-form-of.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/6804111379919666138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/6804111379919666138'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2011/11/reference-counting-is-it-really-form-of.html' title='Reference counting: is it really a form of GC?'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-3908484248276466555</id><published>2011-11-16T01:25:00.001Z</published><updated>2011-11-16T01:35:35.169Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Joe Duffy'/><category scheme='http://www.blogger.com/atom/ns#' term='Finalization'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Shaun of the Dead'/><category scheme='http://www.blogger.com/atom/ns#' term='zombies'/><title type='text'>Finalization is not for resource management</title><content type='html'>&lt;br /&gt;&lt;div class="itemTitleStyle" style="font-family: calibri, sans-serif; font-size: 20pt; font-style: italic; text-align: -webkit-left;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small; font-style: normal;"&gt;&lt;b&gt;Joe Duffy&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="itemTitleStyle" style="font-family: calibri, sans-serif; font-size: 20pt; font-style: italic; font-weight: bold; text-align: -webkit-left;"&gt;&lt;a class="TitleLinkStyle" href="http://www.bluebytesoftware.com/blog/2011/11/12/ABriefNoteOnObjectMortality.aspx" style="background-color: white; color: #0033cc;"&gt;A brief note on object mortality&lt;/a&gt;&lt;/div&gt;&lt;div class="itemBodyStyle" style="color: #333333; font-family: palatino, georgia, 'times new roman', times, serif; font-size: 15px; line-height: 1.25; margin-left: 10px; margin-right: 10px; text-align: justify; word-spacing: 0.1em;"&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;"I often wish that .N&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;ET had erred on the side of offering postmortem instead of premortem finalization." [...]&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;"This approach penalizes the majority use case of finalizable objects. At least on .NET, most objects merely invoke CloseHandle on an IntPtr in the finalizer. This clearly needn’t hold up freeing the managed state. And resurrection is a dubious scenario anyway: such objects quickly end up in Gen2 where collections are expensive and infrequent. If you’re pooling via resurrection because you create expensive objects at a high rate of birth and death, manual memory management (or a different design altogether) is likely your only savior."&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Some people confuse finalization for resource management.&lt;br /&gt;&lt;br /&gt;Resources like files, sockets and other handle-based stuff are NOT meant to be closed by finalization in a mainstream logic flow. It is on the contrary, majority of finalizable objects are meant to never&amp;nbsp;exercise&amp;nbsp;their finalizer -- instead closing deterministically early.&lt;br /&gt;&lt;br /&gt;I am struggling to find a single example where delayed finalization is a pragmatic affordable option rather than damage control feature preventing accidental resource leak.&lt;br /&gt;&lt;br /&gt;Zombies should be treated like zombies.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://2.bp.blogspot.com/_QEWhOURarSU/R7KlQL_loyI/AAAAAAAABJI/8yl809_ly5w/s320/Shaun1.jpg" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-3908484248276466555?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/3908484248276466555/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2011/11/finalization-is-not-for-resource.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/3908484248276466555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/3908484248276466555'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2011/11/finalization-is-not-for-resource.html' title='Finalization is not for resource management'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_QEWhOURarSU/R7KlQL_loyI/AAAAAAAABJI/8yl809_ly5w/s72-c/Shaun1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-2139347055520796601</id><published>2011-11-16T01:03:00.001Z</published><updated>2011-11-16T01:15:57.698Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Steve Jobs'/><category scheme='http://www.blogger.com/atom/ns#' term='Malcolm Gladwell'/><category scheme='http://www.blogger.com/atom/ns#' term='Mona Simpson'/><title type='text'>Steve Jobs: inconvenient truths</title><content type='html'>&lt;a href="http://www.newyorker.com/reporting/2011/11/14/111114fa_fact_gladwell"&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;http://www.newyorker.com/reporting/2011/11/14/111114fa_fact_gladwell&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h1 class="header" id="articlehed" style="background-color: white; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: ny-irvin-em-101104-h01-1, ny-irvin-em-101104-h01-2, 'Times New Roman', serif; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; text-decoration: none;"&gt;The Tweaker&lt;/h1&gt;&lt;h2 id="articleintro" style="background-color: white; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; clear: left; float: left; font-family: 'Times New Roman', serif; font-size: 15px; font-style: italic; font-weight: normal; line-height: 14px; margin-bottom: 5px; margin-left: 0px; margin-right: 0px; margin-top: 6px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; text-decoration: none;"&gt;The real genius of Steve Jobs.&lt;/h2&gt;&lt;h4 id="articleauthor" style="background-color: white; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; clear: left; float: left; font-family: ny-irvin-em-101104-h01-1, ny-irvin-em-101104-h01-2, 'Times New Roman', serif; font-size: 15px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 6px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; text-decoration: none;"&gt;&lt;span class="c cs" style="display: block; font-size: 13px; font-weight: normal;"&gt;by&amp;nbsp;&lt;a href="http://www.newyorker.com/magazine/bios/malcolm_gladwell/search?contributorName=malcolm%20gladwell" rel="author" style="color: black; outline-color: initial; outline-style: initial; outline-width: 0px; text-decoration: none;"&gt;Malcolm Gladwell&lt;/a&gt;&lt;/span&gt;&lt;span class="dd dds" style="clear: both; color: #9f9f9f; float: left; font: normal normal normal 10px/normal Arial, Helvetica, sans-serif; margin-top: 10px; text-transform: uppercase;"&gt;NOVEMBER 14, 2011&lt;/span&gt;&lt;/h4&gt;&lt;span style="background-color: white; font-family: 'Times New Roman', serif; font-size: 15px; text-align: left;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Quite a good short summary of the great Steve Jobs's character. Brash unforgiving annoying non-inventor, reaching highs of beauty and turning the world around whilst doing things that will be outdated and forgotten in half a decade.&lt;br /&gt;&lt;br /&gt;This piece combined with the strikingly kind and loving &lt;a href="http://www.nytimes.com/2011/10/30/opinion/mona-simpsons-eulogy-for-steve-jobs.html?pagewanted=all"&gt;eulogy from Mona Simpson&lt;/a&gt; somehow create unexpected harmony and understanding.&lt;br /&gt;&lt;br /&gt;What a kind and brave bastard was he.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-2139347055520796601?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/2139347055520796601/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2011/11/steve-jobs-inconvenient-truths.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/2139347055520796601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/2139347055520796601'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2011/11/steve-jobs-inconvenient-truths.html' title='Steve Jobs: inconvenient truths'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-6677795201842593553</id><published>2011-11-16T00:39:00.001Z</published><updated>2011-11-16T01:01:17.607Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='RSS'/><category scheme='http://www.blogger.com/atom/ns#' term='G+'/><category scheme='http://www.blogger.com/atom/ns#' term='Google Plus'/><category scheme='http://www.blogger.com/atom/ns#' term='Google Reader'/><title type='text'>Give up on Google Reader and G+</title><content type='html'>I have no idea whom Google Reader and G+ see as their target audience.&lt;br /&gt;&lt;br /&gt;There is little sense in those services for me.&lt;br /&gt;&lt;br /&gt;GReader is a clunky-looking but never breaking online RSS reader. Mildly useful, but I bet there are better alternatives. With no sharing and -- more importantly -- no access to others' sharing the whole product is unnecessary.&lt;br /&gt;&lt;br /&gt;G+ is like web mail without folders and read states. How can I tell if that or another posting is new? Larry knows. How can I stuff certain noisy postings in a side folder? No way.&lt;br /&gt;&lt;br /&gt;What a lot of useless functionality!&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-fgKInoSKhww/TsMLDsb52wI/AAAAAAAAFVQ/dXKNOLKC70g/s1600/google+plus+fail+whale.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="281" src="http://3.bp.blogspot.com/-fgKInoSKhww/TsMLDsb52wI/AAAAAAAAFVQ/dXKNOLKC70g/s320/google+plus+fail+whale.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-6677795201842593553?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/6677795201842593553/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2011/11/give-up-on-google-reader-and-g.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/6677795201842593553'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/6677795201842593553'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2011/11/give-up-on-google-reader-and-g.html' title='Give up on Google Reader and G+'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-fgKInoSKhww/TsMLDsb52wI/AAAAAAAAFVQ/dXKNOLKC70g/s72-c/google+plus+fail+whale.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-8197312955989069745</id><published>2011-11-15T22:58:00.001Z</published><updated>2011-11-16T00:09:01.684Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><category scheme='http://www.blogger.com/atom/ns#' term='auto-update'/><title type='text'>Java auto-update user inexperience</title><content type='html'>I've been bugged by Chrome's yellowbar and the annoying little popup from Oracle to update Java for a week or two.&lt;br /&gt;&lt;br /&gt;Chrome is beautifully nonchalant. &lt;i&gt;There's that messy plugin out of date, but you can run it anyway -- as if anybody cared about Java in browser these days.&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-zMiglzOb6xo/TsL3wX8QamI/AAAAAAAAFUw/XiO7iIPdxpM/s1600/Java+plugin+bar.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="112" src="http://4.bp.blogspot.com/-zMiglzOb6xo/TsL3wX8QamI/AAAAAAAAFUw/XiO7iIPdxpM/s320/Java+plugin+bar.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Oracle's reminder is aggressive and unambiguous. &lt;i&gt;Give me that bloody control over your system! Give me those sinful admin rights NOW! Stop messing about, let me update your OS! I need it NOW! No questions! NOW!&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-qsQZXbvDVUg/TsL76aCSmTI/AAAAAAAAFU4/Uf7TqBAUBFo/s1600/Java+Update+Available.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="251" src="http://1.bp.blogspot.com/-qsQZXbvDVUg/TsL76aCSmTI/AAAAAAAAFU4/Uf7TqBAUBFo/s320/Java+Update+Available.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;You get only one reminder from Oracle: an orange tray popup. Any next action is User Elevation request. You want to click 'close'? &lt;i&gt;NOW! NOW! NOW! Give me access NOW!&lt;/i&gt; You want right-click the icon? &lt;i&gt;Let me do it! NOW! NOW!&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Well, OK -- I got your point. After a week of resistance (go set rules in your private jet, Larry) I grant them access.&lt;br /&gt;&lt;br /&gt;A-ha. It's never easy.&lt;br /&gt;&lt;br /&gt;First thing that updater does given admin rights is opening a connection to the Oracle server and downloading more of their junk. As if this operation required privileges in the first place. As if downloading junk is something security experts recommend to do under high-risk access token. When buffer overruns, it's much more fun if the code has rights to format your hard drive, isn't it?&lt;br /&gt;&lt;br /&gt;Whatever, it says 100% is downloaded. What's next?&lt;br /&gt;&lt;br /&gt;It displays another set of decisively boring dialogs. Next, next, next -- and &lt;i&gt;wait until we download the installer&lt;/i&gt;. What??? Aren't you running the installer &lt;b&gt;&lt;i&gt;already&lt;/i&gt;&lt;/b&gt;? What have you piece of miserable user experience downloaded 1.5 seconds ago?&lt;br /&gt;&lt;br /&gt;Well, if anybody should be pleased with this state of things, it is Google. They haven't been impressive with their user experience lately, and now they got a reason to be proud of even their worst user designs.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-mKFFoDgusks/TsL9_uTziTI/AAAAAAAAFVA/7bwE-h673WU/s1600/GMail.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="131" src="http://3.bp.blogspot.com/-mKFFoDgusks/TsL9_uTziTI/AAAAAAAAFVA/7bwE-h673WU/s200/GMail.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-HHYuYPD66xw/TsL-AMJAWqI/AAAAAAAAFVE/O07aCopw8QI/s1600/GReader.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="130" src="http://2.bp.blogspot.com/-HHYuYPD66xw/TsL-AMJAWqI/AAAAAAAAFVE/O07aCopw8QI/s200/GReader.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-8197312955989069745?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/8197312955989069745/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2011/11/java-auto-update-user-inexperience.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/8197312955989069745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/8197312955989069745'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2011/11/java-auto-update-user-inexperience.html' title='Java auto-update user inexperience'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-zMiglzOb6xo/TsL3wX8QamI/AAAAAAAAFUw/XiO7iIPdxpM/s72-c/Java+plugin+bar.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-1487459679139684157</id><published>2011-11-03T09:27:00.001Z</published><updated>2011-11-03T09:33:06.005Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows 8'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Microsoft is ever deep into its corporate mindset</title><content type='html'>&lt;a href="http://blogs.msdn.com/b/b8/archive/2011/11/02/updating-live-tiles-without-draining-your-battery.aspx"&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;http://blogs.msdn.com/b/b8/archive/2011/11/02/updating-live-tiles-without-draining-your-battery.aspx&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #6fa8dc; font-family: arial, sans-serif; font-size: 18px; font-weight: bold; text-decoration: none;"&gt;&lt;a class="entry-title-link" href="http://blogs.msdn.com/b/b8/archive/2011/11/02/updating-live-tiles-without-draining-your-battery.aspx" style="background-color: white; font-family: arial, sans-serif; font-size: 18px; font-weight: bold; text-decoration: none;" target="_blank"&gt;Updating live tiles without draining your battery&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: arial, sans-serif; font-size: 13px;"&gt;People expect to be able to quickly check&lt;b&gt;&lt;i&gt; their stocks&lt;/i&gt;&lt;/b&gt;, weather, email count, next appointment, line of business status, or even social networking status in a matter of seconds before getting right back to whatever else they were doing.&lt;/span&gt;&lt;/blockquote&gt;I am sure lots of bankers will use Windows 8, but putting them ahead of the general public? How many times of day would anybody want to check &lt;b&gt;&lt;i&gt;their stock&lt;/i&gt;&lt;/b&gt;? Who are those people Microsoft is planning to sell Windows 8 to?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-1487459679139684157?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/1487459679139684157/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2011/11/microsoft-is-ever-deep-into-its.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/1487459679139684157'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/1487459679139684157'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2011/11/microsoft-is-ever-deep-into-its.html' title='Microsoft is ever deep into its corporate mindset'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-8187969201105777294</id><published>2011-11-02T21:36:00.000Z</published><updated>2011-11-03T07:05:52.043Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Politics'/><category scheme='http://www.blogger.com/atom/ns#' term='Europe'/><category scheme='http://www.blogger.com/atom/ns#' term='Greece'/><title type='text'>Greece has got it right</title><content type='html'>George Papandreou has made a bold move with the referendum, and a quite moral one.&lt;br /&gt;&lt;br /&gt;&lt;img alt="Greek Prime Minister Papandreou and French President Sarkozy" src="http://newsimg.bbc.co.uk/media/images/47430000/jpg/_47430360_008906514-1.jpg" /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;(image from &lt;a href="http://news.bbc.co.uk/1/hi/business/8554754.stm"&gt;BBC&lt;/a&gt; web site)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It is about reinforcing the social contract between governing powers and the citizens.&lt;br /&gt;&lt;br /&gt;Both sides of the contract have been neglecting their duties lately.&lt;br /&gt;&lt;br /&gt;Governments have been sending money into private hands and fellow governments without a mandate. They announced a de-facto change to the political regime. No mandate from citizen for that either.&lt;br /&gt;&lt;br /&gt;Some people have been incoherent too. Cars got burnt in Greece, students abused WWII flags, shanty towns demanding a dictatorship.&lt;br /&gt;&lt;br /&gt;The contract should be validated again. Governments should become more responsible about what they do. No more Labour unfulfilled promises about Lisbon treaty. And citizen should stop expecting cash falling from the skies, great education for cheap and great pensions by default.&lt;br /&gt;&lt;br /&gt;The referendum might be called off, or rendered irrelevant by the time it happens. But the decision is politically right. The democracy is the only sustainable way forward, and it has to be at least a threat if not the actual fact of life.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-8187969201105777294?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/8187969201105777294/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2011/11/greece-has-got-it-right.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/8187969201105777294'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/8187969201105777294'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2011/11/greece-has-got-it-right.html' title='Greece has got it right'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-1688421492350416132</id><published>2011-11-02T19:15:00.001Z</published><updated>2011-11-02T20:43:34.379Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ukraine'/><category scheme='http://www.blogger.com/atom/ns#' term='Politics'/><title type='text'>Ultimate desperation for attention</title><content type='html'>&lt;a href="http://www.pravda.com.ua/news/2011/11/2/6724572/"&gt;http://www.pravda.com.ua/news/2011/11/2/6724572/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;During extended Cabinet meeting President declared that according to his sources, certain elements buy weapons and ammunition in preparation of assaults on the state institutions.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://img.blogs.pravda.com.ua/images/doc/2/0/20ce1-photo04133.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Naturally, neither the head of Police nor Secret Service office are aware of this information.&lt;br /&gt;&lt;br /&gt;And the sad truth is, even if this gaffe were translated on TV, hardly anybody in Ukraine would even register. People simply accept that the guy is a fucking lying face and move on.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-1688421492350416132?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/1688421492350416132/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2011/11/ultimate-desperation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/1688421492350416132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/1688421492350416132'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2011/11/ultimate-desperation.html' title='Ultimate desperation for attention'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-5837787923960137629</id><published>2011-10-27T00:17:00.001+01:00</published><updated>2011-10-27T00:17:13.719+01:00</updated><title type='text'>Greek holiday everyone!</title><content type='html'>&lt;a href="http://www.telegraph.co.uk/finance/economics/8850652/To-save-the-economy-stop-collecting-taxes.html#"&gt;http://www.telegraph.co.uk/finance/economics/8850652/To-save-the-economy-stop-collecting-taxes.html&lt;/a&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #282828; font-family: georgia, 'times new roman', times, serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;h1 style="color: #1e1e1e; font-size: 2.4em; line-height: 1.16em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;To save the economy, stop collecting taxes&lt;/h1&gt;&lt;div style="font-size: 10px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Quite clever idea from David Green of Telegraph.&lt;/div&gt;&lt;blockquote class="tr_bq"&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #282828; font-family: arial, helvetica, sans-serif; font-size: 14px; line-height: 20px;"&gt;This may sound crazy, but an income tax holiday actually makes sense. It would work like this. In November, no income tax would be collected from pay packets, giving the economy a pre-Christmas boost. This would obviously carry a cost:&amp;nbsp;[...]&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #282828; font-family: arial, helvetica, sans-serif; font-size: 14px; line-height: 20px;"&gt;&amp;nbsp;about £11 billion, with the self-assessed getting a further £2 billion.&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #282828; font-family: georgia, 'times new roman', times, serif;"&gt;There are numbers, so it sounds scientific. And the strong reassuring tone removes all the arithmetic doubt:&lt;/span&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #282828; font-family: georgia, 'times new roman', times, serif;"&gt;&lt;span class="Apple-style-span" style="font-family: arial, helvetica, sans-serif; font-size: 14px; line-height: 20px;"&gt;The cost of this tax holiday would be about the same as the VAT cut proposed by Ed Balls – but the effects would be so much greater.&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #282828; font-family: georgia, 'times new roman', times, serif;"&gt;If the cost is verified via Ed Balls, and the effects are so much greater, what can go wrong?&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #282828; font-family: georgia, 'times new roman', times, serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #282828; font-family: georgia, 'times new roman', times, serif;"&gt;It's like printing money and throwing them out of the window. It is exactly like that:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #282828; font-family: georgia, 'times new roman', times, serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #282828; font-family: georgia, 'times new roman', times, serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-UyKel-Fibjs/TqiUWPPRZmI/AAAAAAAAFQA/BCgM2mVotPY/s1600/crimson+permanent.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="233" src="http://3.bp.blogspot.com/-UyKel-Fibjs/TqiUWPPRZmI/AAAAAAAAFQA/BCgM2mVotPY/s320/crimson+permanent.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #282828; font-family: georgia, 'times new roman', times, serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #282828; font-family: georgia, 'times new roman', times, serif;"&gt;Everybody gets a one-off bonus to their salary, there is less cash in a coffin and there is no way to know where it ends up.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-5837787923960137629?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/5837787923960137629/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2011/10/greek-holiday-everyone.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/5837787923960137629'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/5837787923960137629'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2011/10/greek-holiday-everyone.html' title='Greek holiday everyone!'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-UyKel-Fibjs/TqiUWPPRZmI/AAAAAAAAFQA/BCgM2mVotPY/s72-c/crimson+permanent.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-1102775659297466239</id><published>2011-10-26T00:19:00.001+01:00</published><updated>2011-10-26T00:19:25.175+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>Google Wave +1</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://content8.flixster.com/rtactor/40/41/40410_pro.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://content8.flixster.com/rtactor/40/41/40410_pro.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Steve Martin's should be an official face of Google +.&lt;br /&gt;&lt;br /&gt;Really sweet good-meaning personality smiling at you with a deep-seated 'sorry' in the eyes.&lt;br /&gt;&lt;br /&gt;Sorry, Google, you have really tried. Let me wave you from here :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-1102775659297466239?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/1102775659297466239/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2011/10/google-wave-1.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/1102775659297466239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/1102775659297466239'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2011/10/google-wave-1.html' title='Google Wave +1'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-5567496781250028672</id><published>2011-10-17T00:59:00.000+01:00</published><updated>2011-10-17T01:56:05.052+01:00</updated><title type='text'>Happy Diwali!</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div&gt;Here's my Diwali treat.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-3CeT1Cn4XoA/TptRyNqDW0I/AAAAAAAAFJg/Srfc5AvYR2Q/s1600/s1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="214" src="http://3.bp.blogspot.com/-3CeT1Cn4XoA/TptRyNqDW0I/AAAAAAAAFJg/Srfc5AvYR2Q/s400/s1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-Gwt4dz8WR1I/TptjKzg4ikI/AAAAAAAAFJw/g0HIUzBIe2E/s1600/s4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="108" src="http://1.bp.blogspot.com/-Gwt4dz8WR1I/TptjKzg4ikI/AAAAAAAAFJw/g0HIUzBIe2E/s200/s4.png" width="200" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/-nzG3g04jZZ4/TptQEq4NDCI/AAAAAAAAFJY/8sfMX6oV0Wc/s1600/s0.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="108" src="http://2.bp.blogspot.com/-nzG3g04jZZ4/TptQEq4NDCI/AAAAAAAAFJY/8sfMX6oV0Wc/s200/s0.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Sisters (2001) is a good Russian film about gangsters, horrible anti-hedonistic&amp;nbsp;reality. And one or two inexplicable references to India.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In Soviet Union, especially in its last decade you had to be a deep diver to be an artist. All the great movies of that time were desperate runs lower and lower under the radar trying to touch unwritten human nature and were talking by heart rather than by words.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It comes in raging contrast to the modern art as Western culture knows it, where artists had to combine unusual things and break taboos in a hopeless flight from the boredom. These posh guys combine words until they so much as come in 100 miles distance to the heart. Whereas in the oppressed land an artist had to hit so much into the heart that even being mute cannot stop the story gushing out (*).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Sisters is made years after oppression lifted, but it comes from the same school. It shows the fucked life, where you don't have a skull and a stage to ponder Shakespearian questions.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;However, the picture and the soundtrack is not antique at all. Here's one song to try.&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://2.gvt0.com/vi/hce8z2h0CoI/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/hce8z2h0CoI&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/hce8z2h0CoI&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Roofs of the buildings tremble under the weight of days.&lt;/div&gt;&lt;div&gt;The sky shepherd hoards the clouds.&lt;/div&gt;&lt;div&gt;City shoots in the night with spreads of fire,&lt;/div&gt;&lt;div&gt;But the night will stand, her might is unbound.&lt;br /&gt;&lt;br /&gt;To those going to sleep — sweet dreams,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;Good night.&lt;br /&gt;&lt;br /&gt;I expected these times and now these times have arrived.&lt;/div&gt;&lt;div&gt;Those were silent are tired of silence.&lt;/div&gt;&lt;div&gt;Those who have nothing to wait mount and go&lt;/div&gt;&lt;div&gt;They're out of reach, can't reach anymore.&lt;br /&gt;&lt;br /&gt;And those going to sleep — sweet dreams,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;Good night.&lt;br /&gt;&lt;br /&gt;Neighbours come, they complain of a clatter of hoofs&lt;/div&gt;&lt;div&gt;Disturbing their sleep, taking their sleep.&lt;/div&gt;&lt;div&gt;Those who have nothing to wait depart --&lt;/div&gt;&lt;div&gt;Those who're saved, who are saved.&lt;br /&gt;&lt;br /&gt;And those going to sleep — sweet dreams,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;Good night.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(*) As much as oppression made couple unique artistic artefacts, on the whole it made less beauty in any one metric and dimension. The legacy of Soviet Union is mostly a shame that is yet to come to realisation of those who inhabit the land today, and mine personally as a former piece of the clockwork.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-5567496781250028672?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/5567496781250028672/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2011/10/happy-diwali.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/5567496781250028672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/5567496781250028672'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2011/10/happy-diwali.html' title='Happy Diwali!'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-3CeT1Cn4XoA/TptRyNqDW0I/AAAAAAAAFJg/Srfc5AvYR2Q/s72-c/s1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-3667336443184794689</id><published>2011-10-09T18:44:00.000+01:00</published><updated>2011-10-09T19:21:11.667+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GWT'/><category scheme='http://www.blogger.com/atom/ns#' term='Google App Engine'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>Silverlight + GWT = perversion</title><content type='html'>&lt;a href="http://mihailik.blogspot.com/2011/10/hosting-sample-silverlight-app.html"&gt;This thing&lt;/a&gt; work!&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-YN83L51HvAs/TpHc7BQgtLI/AAAAAAAAFFs/78HEurbdpy8/s1600/AppEngine+hosting+Silverlight.png" imageanchor="1"&gt;&lt;img border="0" height="443" src="http://4.bp.blogspot.com/-YN83L51HvAs/TpHc7BQgtLI/AAAAAAAAFFs/78HEurbdpy8/s640/AppEngine+hosting+Silverlight.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Give me a bit of time and I'll host a proper PEViewer app there :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-3667336443184794689?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/3667336443184794689/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2011/10/silverlight-gwt-perversion.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/3667336443184794689'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/3667336443184794689'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2011/10/silverlight-gwt-perversion.html' title='Silverlight + GWT = perversion'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-YN83L51HvAs/TpHc7BQgtLI/AAAAAAAAFFs/78HEurbdpy8/s72-c/AppEngine+hosting+Silverlight.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-6248369409389342906</id><published>2011-10-09T14:40:00.000+01:00</published><updated>2011-10-09T14:40:14.674+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SourceForge'/><category scheme='http://www.blogger.com/atom/ns#' term='GitHub'/><category scheme='http://www.blogger.com/atom/ns#' term='Google App Engine'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='CodePlex'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='MIME'/><category scheme='http://www.blogger.com/atom/ns#' term='Google Code'/><title type='text'>Hosting a sample Silverlight app</title><content type='html'>...is tricky, apparently.&lt;br /&gt;&lt;br /&gt;Open Source hubs like CodePlex and Google Code allow you to create a beautiful page, upload binaries and screenshots -- but they lack the necessary MIME type for XAPs.&lt;br /&gt;&lt;br /&gt;However you upload XAP -- a packaged Silverlight application -- it will appear as application/octet-stream. And Silverlight browser plugin rejects it.&lt;br /&gt;&lt;br /&gt;There are rumours one can use Google App Engine to server XAPs with the right MIME. I'm going to try, but man these shell scripts and Pythons are so gibberish to an honest man.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-6248369409389342906?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/6248369409389342906/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2011/10/hosting-sample-silverlight-app.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/6248369409389342906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/6248369409389342906'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2011/10/hosting-sample-silverlight-app.html' title='Hosting a sample Silverlight app'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><thr:total>0</thr:total><georss:featurename>Little Heath, Greenwich, London SE7, UK</georss:featurename><georss:point>51.4845575 0.0481389</georss:point><georss:box>51.482085500000004 0.043203399999999996 51.4870295 0.0530744</georss:box></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-3254604222809196006</id><published>2011-09-20T07:37:00.002+01:00</published><updated>2011-09-20T07:37:41.560+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Chrome'/><category scheme='http://www.blogger.com/atom/ns#' term='Skype'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Skype and Chrome</title><content type='html'>What a cheap trick!&lt;br /&gt;&lt;br /&gt;You download Skype with Chrome -- and you get v5.3, which routinely crash on Windows 7 (and 8).&lt;br /&gt;You download Skype with IE -- and you get the latest v5.5.&lt;br /&gt;&lt;br /&gt;Not sure if it's criminal enough to break the poor IP telephony company back free from Microsoft, but surely an odd lawyer or two would find it useful when talking abuse of market position.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-3254604222809196006?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/3254604222809196006/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2011/09/skype-and-chrome.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/3254604222809196006'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/3254604222809196006'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2011/09/skype-and-chrome.html' title='Skype and Chrome'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-5133303905537582117</id><published>2011-09-09T10:07:00.001+01:00</published><updated>2011-09-09T10:16:43.820+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET C# DateTime StopWatch performance'/><title type='text'>DateTime.Now or StopWatch?</title><content type='html'>&lt;div&gt;&lt;p&gt;There's been a great C# profiling session here internally. Fantastic presenter, things in action, little jokes about Microsoft &amp;#8212; you know how it goes.&lt;/p&gt;&lt;p&gt;However, certain things are not right. I have for long time loathed Jeffrey Richter's articles and books for this sort of slips. The author goes in great depths uncovering really interesting artifacts, but all started on the false premise.&lt;/p&gt;&lt;p&gt;Jeffrey passionately teaches how to write finalisers, glossing over the fact that finalisers are pure evil and shouldn't be used anywhere close to the purpose he shoes them used.&lt;/p&gt;&lt;p&gt;And here in that performance session we've had a similarly wrong premise.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Should StopWatch really be used for micro-benchmarking?&lt;/b&gt;&lt;/p&gt;&lt;p&gt;I know what rusty corporate veterans would say. It's all in the context, depends on what you're measuring. Traders microseconds optimisations good old C++&lt;/p&gt;&lt;p&gt;Bullshit.&lt;/p&gt;&lt;p&gt;The answer is no.&lt;/p&gt;&lt;p&gt;You don't measure Usain Bolt's 100m run with microscope. Neither you need 1 million shots per second photofinish camera. It is bloody HD video and a stupid laser thing to draw the line on the tarmac. The fly shitted on the white line &amp;#8212; fuck it, Usain will run a millimeter longer.&lt;/p&gt;&lt;p&gt;This fly's poo is an inevitable volatility of the environment. Measurement noise. Wobble it adds to 100m length of the stretch is totally insignificant.&lt;/p&gt;&lt;p&gt;StopWatch is a tool to measure fly's poo on the face of a micro-benchmark.&lt;/p&gt;&lt;p&gt;Is it really?&lt;/p&gt;&lt;p&gt;Yes, because there's a lot of flies large enough to shit all over the StopWatch precision in a modern desktop OS like Windows.&lt;/p&gt;&lt;p&gt;The scheduling time quantum is large enough to almost drown out the useful signal already. Every 60 seconds the clock in taskbar redraws. Every now and then Outlook pings Exchange server. Sometimes it downloads a 1mb picture of a doughnut or a meeting request with a stupid 3mb Excel file attached. Active Directory peeps its boring satellite signal to the domain controller asking for group policy update.&lt;/p&gt;&lt;p&gt;Basically, this forest is full of buzz. StopWatch is a great amplifier for the discerning insect explorer.&lt;/p&gt;&lt;p&gt;OK, it's overly precise. But one can round that precision out, can't they?&lt;/p&gt;&lt;p&gt;Well, here comes the reason not to use StopWatch. The API is bloody complex. You need an instance, you need not to forget Reset, all those creepy caveats of non-uniform CPU speeds of the modern hardware and clever VM environments.&lt;/p&gt;&lt;p&gt;Now DateTime.Now is as dumb and direct as it ever gets. One has to be really pissed to make a mistake with it.&lt;/p&gt;&lt;p&gt;Except that it's &lt;b&gt;UtcNow.&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Computers don't measure time with daylight adjustments internally. It's all UTC down there in The Kernel. Same way as it's all Unicode down there too, by the way.&lt;/p&gt;&lt;p&gt;So if you're asking, yes UtcNow is quite much faster than Now. And it's more correct (for obvious reasons).&lt;/p&gt;&lt;p&gt;I probably should add some details on DateTimeOffset, but let's keep it for the next train ride. Time to get some work done :-) &lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-5133303905537582117?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/5133303905537582117/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2011/09/datetimenow-or-stopwatch.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/5133303905537582117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/5133303905537582117'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2011/09/datetimenow-or-stopwatch.html' title='DateTime.Now or StopWatch?'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><thr:total>0</thr:total><georss:featurename>The Place Below, St Mary Le Bow Church, Cheapside, London EC2V 6AU, United Kingdom</georss:featurename><georss:point>51.5137 -0.09354</georss:point></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-5947280045801748645</id><published>2011-05-08T01:45:00.003+01:00</published><updated>2011-05-08T01:53:30.734+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ILSpy'/><category scheme='http://www.blogger.com/atom/ns#' term='Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Scope'/><title type='text'>Silverlight ILSpy: a proper refactoring</title><content type='html'>OK, ILSpy guys aren't interested in Silverlight idea. Very well indeed.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-YTewFZwp79I/TcXkEMEdDII/AAAAAAAAA9o/AniIvbU72VU/s1600/issue+153-.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="257" src="http://2.bp.blogspot.com/-YTewFZwp79I/TcXkEMEdDII/AAAAAAAAA9o/AniIvbU72VU/s640/issue+153-.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Now that there is no need to contribute back I can refactor it into a proper lean and mean machine.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Legacy&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;First of all the source code needs to become more consistent. ILSpy is pulled from a number of Open Source libraries, which is a good cheap way of getting things done. But that means there are several different coding styles across the board, and some utility pieces are reinvented in opposite corners of ILSpy multiple times.&lt;br /&gt;&lt;br /&gt;Then there is an opportunity to cut a bit of fat.&lt;br /&gt;&lt;br /&gt;For example, NRefactory contains a whole C# compiler with parser and errors/warnings formatting inside. Actually, that one I have already dismissed during the initial Silverlight hacking. But there is still a whole lot of excess in there. I wonder if it was written by a banker? ;-)&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;TDD&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Let me put it in writing. I don't like writing tests. It's painful like debugging but also boring too. Consequently, Test Driven Development isn't wallowing in my love either.&lt;br /&gt;&lt;br /&gt;However, refactoring this large and complex code without tests is quite brave, crazy and stupid exercise. Especially, since there are already lots of tests for all the individual pieces here and there.&lt;br /&gt;&lt;br /&gt;So, my first task for now is to translate all those tests into something more or less sane, running without bizarre NUnit trickery. And also throw in that Silverlight limitation. Quite an engaging task!&lt;br /&gt;&lt;br /&gt;I've got all the tests from the Decompiler rolling, and just a few from Mono.Cecil. Hope to get more in a few days -- then any material refactoring would be much more relaxed. Here's the current state:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-PIcPGwhvwhg/TcXnDaG33CI/AAAAAAAAA9s/g0sGjLbip48/s1600/Silverlight+unit+testing.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="357" src="http://3.bp.blogspot.com/-PIcPGwhvwhg/TcXnDaG33CI/AAAAAAAAA9s/g0sGjLbip48/s640/Silverlight+unit+testing.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-5947280045801748645?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/5947280045801748645/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2011/05/silverlight-ilspy-proper-refactoring.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/5947280045801748645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/5947280045801748645'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2011/05/silverlight-ilspy-proper-refactoring.html' title='Silverlight ILSpy: a proper refactoring'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-YTewFZwp79I/TcXkEMEdDII/AAAAAAAAA9o/AniIvbU72VU/s72-c/issue+153-.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-7176316819645414730</id><published>2011-04-30T09:45:00.000+01:00</published><updated>2011-04-30T09:45:49.625+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ILSpy'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>ILSpy/Silverlight: it works!</title><content type='html'>I've got it, I've got it!&lt;br /&gt;&lt;br /&gt;ILSpy can decompile assemblies in Silverlight, and it has a tree, and a text box with the results:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-MXG3P_kiBIA/TbvKgXnaGNI/AAAAAAAAA9c/WmHKOGDNkt4/s1600/ILSpySL-Proof-of-Concept.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="311" src="http://1.bp.blogspot.com/-MXG3P_kiBIA/TbvKgXnaGNI/AAAAAAAAA9c/WmHKOGDNkt4/s400/ILSpySL-Proof-of-Concept.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;The source is on GitHub and Sourceforge. Check out the &lt;b&gt;&lt;i&gt;Silverlight-Full-Refactoring-Proof-of-Concenpt branch&lt;/i&gt;&lt;/b&gt; (&lt;b&gt;&lt;i&gt;ItWorks&lt;/i&gt;&lt;/b&gt; tag is guaranteed to work):&lt;br /&gt;&lt;a href="https://github.com/mihailik/ILSpy/tree/Silverlight-FullRefactoring-Proof-of-Concept-ItWorks"&gt;https://github.com/mihailik/ILSpy/tree/Silverlight-FullRefactoring-Proof-of-Concept-ItWorks&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Few notes&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It only decompiles &lt;b&gt;&lt;i&gt;one assembly&lt;/i&gt;&lt;/b&gt;, and it must be &lt;b&gt;&lt;i&gt;mscorlib&lt;/i&gt;&lt;/b&gt;. Those are the silly implementations of the stupid &lt;i&gt;MainPage.xaml.cs&lt;/i&gt; code I've slapped together this morning. Sorry. I'll fix it later, my children are all awake now and running round :-)&lt;br /&gt;&lt;br /&gt;However it can be any mscorlib -- from Silverlight, from CLR whatever.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;What's next&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The best result would be to get it more or less feature complete and &lt;b&gt;&lt;i&gt;ship it&lt;/i&gt;&lt;/b&gt;. I mean put it out somewhere on web, as long as it's Silverlight. Wouldn't it be cool?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-7176316819645414730?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/7176316819645414730/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2011/04/ilspysilverlight-it-works.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/7176316819645414730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/7176316819645414730'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2011/04/ilspysilverlight-it-works.html' title='ILSpy/Silverlight: it works!'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-MXG3P_kiBIA/TbvKgXnaGNI/AAAAAAAAA9c/WmHKOGDNkt4/s72-c/ILSpySL-Proof-of-Concept.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-6506877438169027300</id><published>2011-04-25T11:16:00.000+01:00</published><updated>2011-04-25T11:16:13.861+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ILSpy'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>ILSpy/Silverlight: NRefactory and Decompiler don't pass easily</title><content type='html'>Almost forgot!&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://upload.wikimedia.org/wikipedia/commons/thumb/4/4a/Construction_Workers.jpg/479px-Construction_Workers.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="320" src="http://upload.wikimedia.org/wikipedia/commons/thumb/4/4a/Construction_Workers.jpg/479px-Construction_Workers.jpg" width="255" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Pieces of ILSpy design are tightly coupled with Task Parallel Library. That's going to be difficult to port :-(&lt;br /&gt;&lt;br /&gt;We'll see, maybe there's a clever way around...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-6506877438169027300?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/6506877438169027300/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2011/04/ilspysilverlight-nrefactory-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/6506877438169027300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/6506877438169027300'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2011/04/ilspysilverlight-nrefactory-and.html' title='ILSpy/Silverlight: NRefactory and Decompiler don&apos;t pass easily'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-8842871464995773269</id><published>2011-04-24T15:55:00.000+01:00</published><updated>2011-04-24T15:56:36.582+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ILSpy'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>Silverlight ILSpy: a very good idea actually!</title><content type='html'>Think about it: no download, no install, no messy runtime versioning issues. It just works!&lt;br /&gt;&lt;br /&gt;You open a page and then drag-drop files to decompile them. Or you pop an Open dialog. And if you like to have it offline, right-click and get Out-Of-Browser window. And it would work comfortably in the SL sandbox, so no security popups.&lt;br /&gt;&lt;br /&gt;A bliss :-)&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-Hv8zy9TENuc/TbQ5u42wZwI/AAAAAAAAA9Y/bMbmbw_8AWE/s1600/2011-04-24+15.52.20.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://1.bp.blogspot.com/-Hv8zy9TENuc/TbQ5u42wZwI/AAAAAAAAA9Y/bMbmbw_8AWE/s400/2011-04-24+15.52.20.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;The problems? Maybe a few minor ones.&lt;br /&gt;&lt;br /&gt;Firstly, the UI will have to be replaced: none of SharpDevelop custom bounties -- neither AvalonEdit nor SharpTreeView -- seem to be easily 'Silverlightable'.&lt;br /&gt;&lt;br /&gt;Secondly, system DLLs. ILSpy/Silverlight won't be able to rummage freely through the local directories, so the only versions of mscorlib or System.Core it can immediately see is from its own SL world. To cope with that a cut-down compressed 'interface-only' set of system DLLs would have to be packaged inside ILSpy/Silverlight XAP. Actually, it should be 2 sets -- for CLR2 and CLR4. Those would aid decompiling non-system DLLs, providing 'shapes' of base classes, interfaces, operators etc. But to look inside say mscorlib none of that is needed, you just drag it from its location as any other dll.&lt;br /&gt;&lt;br /&gt;Thirdly, you can't restore the session. You opened a few DLLs then restarted ILSpy/Silverlight and you won't see your previous DLLs auto-loaded. The sandbox only allows file access as a response to user actions, that's why. Although I would actually prefer it like that anyway. Lutz Roeder Reflector is a tool most useful for ad-hoc investigations, not for a long&amp;nbsp;continuous&amp;nbsp;work spanning through sessions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-8842871464995773269?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/8842871464995773269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2011/04/silverlight-ilspy-very-good-idea.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/8842871464995773269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/8842871464995773269'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2011/04/silverlight-ilspy-very-good-idea.html' title='Silverlight ILSpy: a very good idea actually!'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-Hv8zy9TENuc/TbQ5u42wZwI/AAAAAAAAA9Y/bMbmbw_8AWE/s72-c/2011-04-24+15.52.20.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-4776104696805540059</id><published>2011-04-24T00:46:00.000+01:00</published><updated>2011-04-24T01:25:21.172+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ILSpy'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>ILSpy for .NET 3.5: cleaner job and less aggressive</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-ONLxGSzIoiY/TbNqGcTxhbI/AAAAAAAAA6k/mcm6gOvgAHk/s1600/2011-04-24+01.07.29.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/-ONLxGSzIoiY/TbNqGcTxhbI/AAAAAAAAA6k/mcm6gOvgAHk/s200/2011-04-24+01.07.29.jpg" width="150" /&gt;&lt;/a&gt;&lt;/div&gt;So, having spent a lot of time untangling the little pieces of string, now I've got ILSpy not only backported to .NET 3.5 but &lt;b&gt;&lt;i&gt;ready to be contributed back&lt;/i&gt;&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;I must admit, I've been a little&amp;nbsp;aggressive&amp;nbsp;about the problems in the code. There are indeed &amp;nbsp;few unneeded levels and subdirectories, there are some smelly interdependencies and unnecessary weird dances (why would you sign your project whilst publishing the cryptographic key openly?) -- but with a good push it all gives in.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;i&gt;Debug v. Debug .NET3.5&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The main gem I've discovered is that CSPROJ files support per-configuration TargetFramework settings. You can have say "Debug" compiling into 4.0 and "Debug .NET3.5" compiling in 3.5. And Visual Studio does not immediately break the beautiful tuning, although it isn't able to reflect this shit in UI.&lt;br /&gt;&lt;br /&gt;That is basically &lt;a href="https://github.com/mihailik/ILSpy/commit/03c94219c47dc3761b96e72b09375a38edabc500#ILSpy/ILSpy.csproj"&gt;what I did&lt;/a&gt; at the solution-project level.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Political game&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-YL30dnkEQC4/TbNsg-cwaEI/AAAAAAAAA6w/sliaa8yJ2ko/s1600/2011-04-24+01.13.41.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://1.bp.blogspot.com/-YL30dnkEQC4/TbNsg-cwaEI/AAAAAAAAA6w/sliaa8yJ2ko/s320/2011-04-24+01.13.41.jpg" width="320" /&gt;&lt;/a&gt;At the lower level my target this time was to keep a very low profile. Don't upset the people. You know, like what you do in the corporate software development: even if you see a cheap easy improvement -- just look the other way and don't touch it.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;Fortunately, there was a previous attempt of multitargeting in the code, with a few stubs created in &lt;a href="https://github.com/mihailik/ILSpy/blob/8ca3f8e6ae570d4dd24a8d103629dfd9369316e5/NRefactory/ICSharpCode.NRefactory/Utils/DotNet35Compat.cs"&gt;DotNet35Compat&lt;/a&gt;. So I just reused those where possible and followed the style where not.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;XAML fragmentation issues&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Generally, multitargeting XAML is nigh to impossible. There is no #if in XAML, so you are reduced to your most clever and freaky exploits. On the other hand, XAML did not get too fragmented as of yet (as long as you don't do Silverlight that is). Basically in XAML porting what we are dealing with is an exteremely low number of quite difficult problems, rather than tons of routine modifications.&lt;br /&gt;&lt;br /&gt;Well, in the current ILSpy there is only one such XAML fragmentation problem: attached properties UseLayoutRounding and TextFormattingMode.&lt;br /&gt;&lt;br /&gt;The trick I played on those is similar to DotNet35Compat. Create an attached property that is used instead of platform's UseLayoutRounding. That 'shadowing' property redirects to different places depending on the platform version. And since those &lt;a href="https://github.com/mihailik/ILSpy/commit/8628facceb369f6d37408d7d46165abc3bf9d6ac#diff-0"&gt;'shadowing' properties&lt;/a&gt; are in normal C#, you can actually use #if.&lt;br /&gt;&lt;br /&gt;And the clever part is that in 4.0 the property is not actually 'shadowing' anything. It actually is the original property. Same as TextElement.FontFamily and TextBlock.FontFamily are the two names for the same property (the same slot inside DependencyObject't internal property value storage) -- similarly &lt;b&gt;&lt;i&gt;DotNet35Compat.UseLayoutRounding&lt;/i&gt;&lt;/b&gt; and &lt;b&gt;&lt;i&gt;FrameworkElement.UseLayoutRounding&lt;/i&gt;&lt;/b&gt; are just the two names of the one thing in 4.0.&lt;br /&gt;&lt;br /&gt;However, in 3.5 UseLayoutRounding points to SnapsToDevicePixels instead. Clever, eh?&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-vWN7z-PDeDk/TbNpXFC0BeI/AAAAAAAAA6g/QOBquYS-hwE/s1600/2011-04-24+01.04.19.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/-vWN7z-PDeDk/TbNpXFC0BeI/AAAAAAAAA6g/QOBquYS-hwE/s200/2011-04-24+01.04.19.jpg" width="150" /&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Silverlight?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;That's a bold job. And it might be possible actually!&lt;br /&gt;&lt;br /&gt;The biggest culprit would be Avalon text editor. Now, here's a good one: do we need a text editor in ILSpy/Lutz Roeder Reflector sort of tool? Do we edit anything? 'Course no. Rich&amp;nbsp;text viewer would do just fine. Or in the worst case, a web browser piece.&lt;br /&gt;&lt;br /&gt;OK, I'll think about it in my dreams -- it's time to squeeze the pillow down.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-4776104696805540059?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/4776104696805540059/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2011/04/ilspy-for-net-35-cleaner-job-and-less.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/4776104696805540059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/4776104696805540059'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2011/04/ilspy-for-net-35-cleaner-job-and-less.html' title='ILSpy for .NET 3.5: cleaner job and less aggressive'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-ONLxGSzIoiY/TbNqGcTxhbI/AAAAAAAAA6k/mcm6gOvgAHk/s72-c/2011-04-24+01.07.29.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-999445149109990896</id><published>2011-04-17T00:49:00.000+01:00</published><updated>2011-04-17T01:08:30.740+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ILSpy'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>M2: IL Spy for .NET 3.5</title><content type='html'>&lt;p&gt;I have backported &lt;a href="http://community.sharpdevelop.net/blogs/christophwille/archive/2011/04/13/ilspy-1-0-milestone-2-quot-m2-quot.aspx"&gt;IL Spy Milestone 2&lt;/a&gt; to .NET 3.5&lt;/p&gt;&lt;p&gt;The changes in IL Spy are moderately significant. Better decompiling of 'newer' C# constructs like yield etc. Still lacking 'newer still' fancy features like expressions. Some absolutely useless additions, like that MEF extensions.&lt;/p&gt;&lt;p&gt;Let me rant about that MEFism. If you want somebody to integrate with your tools, write plugins -- don't bother to use some 3-letter-acronym. Decrease the number of your bloody DLLs by at least 4. For goodness sake, Douglas Adams would envy the interconnectedness and holistic nature of the stuff ICSharpCode guys do.&lt;/p&gt;&lt;p&gt;If you ever need to understand how ICSharpCode.Decompiler work, no need to bother looking into it. Just dip lightly into ICSharpCode.SharpTreeView and it is all there -- because all the things in this universe are tied and coupled.&lt;/p&gt;&lt;p&gt;OK, now to something completely easier. Backporting. A few fixes here and there as usual, nothing too fancy at all.&lt;/p&gt;&lt;p&gt;Published it on GitHub and SourceForge:&lt;/p&gt;&lt;p&gt;&lt;a href="https://github.com/mihailik/ILSpy/tree/NET-35"&gt;https://github.com/mihailik/ILSpy/tree/NET-35&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://ilspy-net35.git.sourceforge.net/git/gitweb.cgi?p=ilspy-net35/ilspy-net35;a=tree"&gt;http://ilspy-net35.git.sourceforge.net/git/gitweb.cgi?p=ilspy-net35/ilspy-net35;a=tree&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;P.S. One thing I am contemplating, is to keep 2 parallel branches. One would only contain the material C# changes, another would also have all the 'cut-the-crap' simplification to make it sanely build within the layman stupid tool Visual Studio. That way the guys over from ICSharpDev could use the .NET 3.5 patches too (as I wouldn't expect them to like my trivialised directory structure just 3-4 levels deep).&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-999445149109990896?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/999445149109990896/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2011/04/m2-il-spy-for-net-35.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/999445149109990896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/999445149109990896'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2011/04/m2-il-spy-for-net-35.html' title='M2: IL Spy for .NET 3.5'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-9046975533384666698</id><published>2011-04-17T00:04:00.000+01:00</published><updated>2011-04-17T01:26:28.176+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Robert Webb'/><category scheme='http://www.blogger.com/atom/ns#' term='David Cameron'/><category scheme='http://www.blogger.com/atom/ns#' term='Charlie Brooker'/><category scheme='http://www.blogger.com/atom/ns#' term='10 O&apos;Clock Live'/><category scheme='http://www.blogger.com/atom/ns#' term='TV'/><category scheme='http://www.blogger.com/atom/ns#' term='David Mitchell'/><title type='text'>10 O'Clock Live</title><content type='html'>&lt;p&gt;&lt;a href="http://3.bp.blogspot.com/-PA-6cOJJZx4/TaohlO2C62I/AAAAAAAAA5s/8pWvM3fGktA/s1600/10OCL.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 82px;" src="http://3.bp.blogspot.com/-PA-6cOJJZx4/TaohlO2C62I/AAAAAAAAA5s/8pWvM3fGktA/s320/10OCL.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5596322410484919138" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Apparently, this is interesting.&lt;/p&gt;&lt;p&gt;OK, firstly it is in fact entertaining. Oh yes it is, indeed. And secondly it is obviously and filthy po&lt;/p&gt;&lt;p&gt;pulist in places.&lt;/p&gt;&lt;p&gt;What excuses all the mildly horrible stuff is David Mitchell and Charlie Brooker.&lt;/p&gt;&lt;p&gt;Apparently David Cameron was trying to say in his immigration speech: 'I am not a racist, but if you are you can still vote for me'.&lt;/p&gt;&lt;p&gt;&lt;img src="http://3.bp.blogspot.com/-2sW7AGEfaBw/TaozUzj7N-I/AAAAAAAAA58/D6AL9Y-B3Ak/s320/dcam.png" style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 275px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5596341919492552674" /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-9046975533384666698?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/9046975533384666698/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2011/04/10-oclock-live.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/9046975533384666698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/9046975533384666698'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2011/04/10-oclock-live.html' title='10 O&apos;Clock Live'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-PA-6cOJJZx4/TaohlO2C62I/AAAAAAAAA5s/8pWvM3fGktA/s72-c/10OCL.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-4121626921141879419</id><published>2011-04-16T22:00:00.000+01:00</published><updated>2011-04-17T01:19:18.330+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Chrome OS'/><category scheme='http://www.blogger.com/atom/ns#' term='DISKPART'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><category scheme='http://www.blogger.com/atom/ns#' term='SD'/><category scheme='http://www.blogger.com/atom/ns#' term='Heat pipe'/><title type='text'>Healing SDHC after Chrome OS install</title><content type='html'>&lt;p&gt;Apparently, Google's Chrome OS is an evil one. It partitions your SD card where no Windows ever reached.&lt;/p&gt;&lt;p&gt;I've been totally not interested in it, waiting for some bored student (or is it 'bright student'? telling the right English parlance from the wrong is never easy) to do the dirty job of sorting out the stupid shell scripts and whatnot.&lt;/p&gt;&lt;p&gt;OK, so being busy not installing freaky OS is not easy. One happy day my mum has burnt down her old laptop.&lt;/p&gt;&lt;p&gt;Yep, that's the true story.&lt;/p&gt;&lt;p&gt;CPU is alive, and generally all the hardware is good. But the heat pipe is dead and under Windows its lifespan is about a quarter of an hour. The heat pipe is what makes laptops' fans effective and quiet. And the dead heat pipe means ineffective fan, however loudly it retches.&lt;/p&gt;&lt;p&gt;So, here is where &lt;a href="http://chromeos.hexxeh.net/"&gt;Chrome&lt;/a&gt; comes in. It is made to survive on extremely low brain power, something like a Pentium MMX. Running on anything passing by a normal computer it would probably not even break a sweat wrapped in a cotton wool.&lt;/p&gt;&lt;p&gt;Anyway, it did not work out. No WiFi :-(&lt;/p&gt;&lt;p&gt;To be honest, Google did not ship it yet. Dev version, community effort and all that junk.&lt;/p&gt;&lt;p&gt;But it went down. And it took my 16Gb USB stick. Well, not only mine actually. It also ate my mum's 8Gb SDHC card.&lt;/p&gt;&lt;p&gt;The insidious thing partitions the flash drive in 5 or 6 random pieces which are impossible to wipe out by normal means. Not by Disk Managet applet, not by DISKPART.&lt;/p&gt;&lt;p&gt;Well, apparently there is a cure. Phew...&lt;/p&gt;&lt;p&gt;DISKPART&amp;gt; LIST DISK&lt;br /&gt;DISKPART&amp;gt; SELECT DISK 1 (or whatever other number)&lt;br /&gt;DISKPART&amp;gt; CLEAN&lt;/p&gt;&lt;p&gt;Then it hiccups and chokes for a moment, complaining about the sudden sharp pain in the removable drive area -- and bit later you get your pricey SD back.&lt;/p&gt;&lt;p&gt;Just to add before the curtain. It's been fun with Google Chrome OS, really wonderful. So long.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-4121626921141879419?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/4121626921141879419/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2011/04/healing-sdhc-after-chrome-os-install.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/4121626921141879419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/4121626921141879419'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2011/04/healing-sdhc-after-chrome-os-install.html' title='Healing SDHC after Chrome OS install'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-1779202991160235029</id><published>2011-04-11T08:46:00.001+01:00</published><updated>2011-04-11T19:14:16.428+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ILSpy'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>IL Spy for .NET 3.5</title><content type='html'>&lt;div&gt;&lt;p&gt;I've just committed (in fact git calls i 'pushed') the code for a little patch and tidy-up to ILSpy (www.ilspy.net) that makes it backward-compatible.&lt;/p&gt;&lt;p&gt;The thing was quite trivial. Couple of underlying libraries already have #ifdef DOTNET35 all over, so there it's just the matter of switching.&lt;/p&gt;&lt;p&gt;MEF sources from Codeplex are a twisted in a bit different way: they have defined aliases for a few useful .NET4 classes like Lazy and CancellationToken and whatever. That's almost fine, except when those leak into public API they need to be correctly unified across all the libraries. So that's another adjustment.&lt;/p&gt;&lt;p&gt;The Decompiler DLL and the main app were slightly more demanding. In places reliant onto refined C#4 type inferrence and covariance, in places using TPL for asynchronous processing. Nothing too tough though.&lt;/p&gt;&lt;p&gt;The result is: Reactive Extensions and MEF are pulled in for their 'bite of the future in today's worlda' functionality.&lt;/p&gt;&lt;p&gt;Oh, and I couldn't resist stomping on all those crawly building scripts. What perversion drives people messing with CSPROJ files so much? It's a dirty filthy business and it's gotta stop. Projects and solutions are meant to be as simple as possible, and slightly simpler still. My former boss Eddie used to press this on me really hard, and I still see some of our work there as an example of an excellent design.&lt;/p&gt;&lt;br /&gt;&lt;img src="http://lh6.ggpht.com/_CBox5WxDIiw/TaK30eFO_ZI/AAAAAAAAA4M/vt-VwZ-9Tm8/1302509489005.png" /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-1779202991160235029?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/1779202991160235029/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2011/04/il-spy-for-net-35.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/1779202991160235029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/1779202991160235029'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2011/04/il-spy-for-net-35.html' title='IL Spy for .NET 3.5'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_CBox5WxDIiw/TaK30eFO_ZI/AAAAAAAAA4M/vt-VwZ-9Tm8/s72-c/1302509489005.png' height='72' width='72'/><thr:total>0</thr:total><georss:featurename>Cannon Street station, Cannon Street Station, Cannon St, City of London, UK EC4N 6AP, United Kingdom</georss:featurename><georss:point>51.511362 -0.09025</georss:point></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-4330917482252585685</id><published>2011-01-07T00:34:00.000Z</published><updated>2011-01-07T01:21:09.679Z</updated><title type='text'>Yeeanoukoviouch countdown</title><content type='html'>The guy's just had it.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In a terminally corrupt country, being genuinely the worst option, having won the crown by a wild chance -- and starting a bent justice vendetta against your opponents. Man, the next 3-4 years are going to be a real fireworks display.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Just one thing. Don't put your money in Ukraine for a while. Unless you're one of those gambling partygoers. It's never had particularly good justice, but now it's just a true land of spaghetti westerns. Try your luck if you're brave.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-4330917482252585685?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/4330917482252585685/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2011/01/yeeanoukoviouch-countdown.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/4330917482252585685'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/4330917482252585685'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2011/01/yeeanoukoviouch-countdown.html' title='Yeeanoukoviouch countdown'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-2916740033750412581</id><published>2010-10-07T09:59:00.001+01:00</published><updated>2010-10-07T09:59:12.663+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='android debug'/><title type='text'>Programming Android</title><content type='html'>&lt;br&gt;What was the best 'guerilla' method of HTML development in the olden days? But of course editing the text in Notepad, Ctrl+S, Alt+Tab, Refresh.&lt;br /&gt;&lt;br&gt;Apparently, there is a similar one for Android.&lt;br /&gt;&lt;br&gt;Go open your file manager or whatever in Android, browse to your laptop to your project 'bin' and install APK, then hit Open.&lt;br /&gt;&lt;br&gt;Then repeat and repeat and again.&lt;br /&gt;&lt;br&gt;Nice and simple. Otherwise Google still struggles to get to terms with ADB driver-smiever, some funny issues with Galaxy S and other exciting boredom. Now get over it -- those software mammoths never get it right with debugging, not in the first decade or two.&lt;br /&gt;&lt;br&gt;So I'll keep to the naive screw'em'up route for now ;-)&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-2916740033750412581?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/2916740033750412581/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2010/10/programming-android.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/2916740033750412581'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/2916740033750412581'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2010/10/programming-android.html' title='Programming Android'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-3138879709010357531</id><published>2010-09-30T00:18:00.001+01:00</published><updated>2010-09-30T00:18:02.975+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='None'/><title type='text'>Georgia</title><content type='html'>&lt;br&gt;&lt;b&gt;&amp;#1042; &amp;#1058;&amp;#1073;&amp;#1080;&amp;#1083;&amp;#1080;&amp;#1089;&amp;#1080; &amp;#1086;&amp;#1089;&amp;#1082;&amp;#1074;&amp;#1077;&amp;#1088;&amp;#1085;&amp;#1105;&amp;#1085; &amp;#1089;&amp;#1080;&amp;#1084;&amp;#1074;&amp;#1086;&amp;#1083; &amp;#1056;&amp;#1086;&amp;#1089;&amp;#1089;&amp;#1080;&amp;#1080;.&lt;/b&gt;&lt;br&gt;&lt;br /&gt;&amp;#1043;&amp;#1088;&amp;#1091;&amp;#1079;&amp;#1080;&amp;#1085;&amp;#1089;&amp;#1082;&amp;#1080;&amp;#1077; &amp;#1088;&amp;#1072;&amp;#1076;&amp;#1080;&amp;#1082;&amp;#1072;&amp;#1083;&amp;#1100;&amp;#1085;&amp;#1099;&amp;#1077; &amp;#1086;&amp;#1087;&amp;#1087;&amp;#1086;&amp;#1079;&amp;#1080;&amp;#1094;&amp;#1080;&amp;#1086;&amp;#1085;&amp;#1077;&amp;#1088;&amp;#1099; &amp;#1074; &amp;#1075;&amp;#1086;&amp;#1076;&amp;#1086;&amp;#1074;&amp;#1097;&amp;#1080;&amp;#1085;&amp;#1091; &amp;#1074;&amp;#1086;&amp;#1081;&amp;#1085;&amp;#1099; &amp;#1074; &amp;#1070;&amp;#1078;&amp;#1085;&amp;#1086;&amp;#1081; &amp;#1054;&amp;#1089;&amp;#1077;&amp;#1090;&amp;#1080;&amp;#1080; &amp;#1085;&amp;#1072; &amp;#1087;&amp;#1088;&amp;#1086;&amp;#1089;&amp;#1087;&amp;#1077;&amp;#1082;&amp;#1090;&amp;#1077; &amp;#1056;&amp;#1091;&amp;#1089;&amp;#1090;&amp;#1072;&amp;#1074;&amp;#1077;&amp;#1083;&amp;#1080; &amp;#1074; &amp;#1058;&amp;#1073;&amp;#1080;&amp;#1083;&amp;#1080;&amp;#1089;&amp;#1080; &amp;#1087;&amp;#1091;&amp;#1073;&amp;#1083;&amp;#1080;&amp;#1095;&amp;#1085;&amp;#1086; &amp;#1088;&amp;#1072;&amp;#1079;&amp;#1073;&amp;#1080;&amp;#1083;&amp;#1080; &amp;#1073;&amp;#1091;&amp;#1090;&amp;#1099;&amp;#1083;&amp;#1082;&amp;#1091; &amp;#1074;&amp;#1086;&amp;#1076;&amp;#1082;&amp;#1080;.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-3138879709010357531?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/3138879709010357531/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2010/09/georgia.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/3138879709010357531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/3138879709010357531'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2010/09/georgia.html' title='Georgia'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-4649624268183720411</id><published>2010-09-27T18:25:00.001+01:00</published><updated>2010-09-27T18:25:28.018+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='None'/><title type='text'>GPS on Android</title><content type='html'>&lt;br&gt;I can't get my head around Android's GPS feature still. If only trusting the lame forums (and Google goes to great length trying to convince me that lame forums is actually how you get information about that platform) -- I am expected to switch that thing on and off during the course of day. &lt;br /&gt;&lt;br&gt;That would be horrific!&lt;br /&gt;&lt;br&gt;It's like pressing special buttons to close lift doors, start moving and even stop and open.&lt;br /&gt;&lt;br&gt;What a lame lift that would be!&lt;br /&gt;&lt;br&gt;When you step in the lift and press the floor number, all the micro-actions are implied.&lt;br /&gt;&lt;br&gt;Exactly in same way when I hit Maps or Camera all the tiny labouriuos calculations between towers, sattelites and silicon should go without me shouting heavy commands in skipper's voice. &lt;br /&gt;&lt;br&gt;But maybe that's how it already is?&lt;br /&gt;&lt;br&gt;What if the GPS switch is not switching the hardware? It might be just the 'silencer' so to speak. You don't expect phone to start ringing when you switch it from silent mode to normal? Same way flicking GPS 'on' opens the possibility for its use, but doesn't necessarily physically puts the power onto it.&lt;br /&gt;&lt;br&gt;Well, if that's not how it is, at least that's how it should be.&lt;br /&gt;&lt;br&gt;With a tiny detail. &lt;br /&gt;&lt;br&gt;If no foreground activity physically uses GPS, it should time out in say 2 minutes.&lt;br /&gt;&lt;br&gt;That is you can quickly read and respond to your text without loss of the fix. But having map or camera in background doesn't drain it unnecessarily.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-4649624268183720411?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/4649624268183720411/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2010/09/gps-on-android.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/4649624268183720411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/4649624268183720411'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2010/09/gps-on-android.html' title='GPS on Android'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-6688297863617483178</id><published>2009-07-18T22:06:00.001+01:00</published><updated>2009-07-19T14:36:47.088+01:00</updated><title type='text'>MethodCall ‘thing’</title><content type='html'>&lt;p&gt;Property binding is the holy grail of MVVM. You have your ViewModel — completely pure POCO no-GUI classes — and bind everything to their properties.&lt;/p&gt;  &lt;p&gt;It can’t be better, just the ultimate ideal way one needs for handling data. Separate logic and design and all that evangelism-talk.&lt;/p&gt;  &lt;p&gt;However, as soon as you need to invoke, call, action your objects — you’re on the wobbly ground.&lt;/p&gt;  &lt;p&gt;MVVM proponents recommend Commands. For each action you’re supposed to created a special property of type RoutedUICommand or ICommand or some other custom entity.&lt;/p&gt;  &lt;p&gt;Not really convincing, if you look at it without evangelism in your eyes. In C# we have that thing called ‘method’ that used for firing off pieces of logic. It must be cracking good: 9 years since C# went public and good old &lt;strong&gt;&lt;em&gt;methods&lt;/em&gt;&lt;/strong&gt; are still in fashion.&lt;/p&gt;  &lt;p&gt;Sure one could wrap &lt;strong&gt;&lt;em&gt;methods&lt;/em&gt;&lt;/strong&gt; into &lt;em&gt;&lt;strong&gt;commands&lt;/strong&gt;&lt;/em&gt;, but it’s not POCO anymore, is it? And just one tiny detail — methods often have arguments. Don’t want to be picky, but Commands in WPF have only 1 parameter of type ‘object’, it does occur rather at odds with normal C# mindset.&lt;/p&gt;  &lt;p&gt;Anyway, fear not. The knight on the bloody horse trot in and gives you MethodCall.&lt;/p&gt;  &lt;p&gt;&lt;img alt="Monty-Python-Holy-Grail-02.jpg" src="http://images.starpulse.com/Photos/Previews/Monty-Python-Holy-Grail-02.jpg" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="http://methodcallthing.codeplex.com/" href="http://methodcallthing.codeplex.com/"&gt;http://methodcallthing.codeplex.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="5"&gt;&lt;strong&gt;Greasy mechanics&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_CBox5WxDIiw/SmJN5Iw_GzI/AAAAAAAAACs/DpBcr6h2TCA/s1600-h/MethodCallSampleApp%5B11%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="MethodCallSampleApp" border="0" alt="MethodCallSampleApp" src="http://lh3.ggpht.com/_CBox5WxDIiw/SmJN6L94c_I/AAAAAAAAACw/znx59uo36nw/MethodCallSampleApp_thumb%5B7%5D.png?imgmax=800" width="539" height="340" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_CBox5WxDIiw/SmJN7TFreeI/AAAAAAAAAC0/9SU89p5Yy3U/s1600-h/MethodCallSampleCode%5B9%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="MethodCallSampleCode" border="0" alt="MethodCallSampleCode" src="http://lh4.ggpht.com/_CBox5WxDIiw/SmJN7x2-a9I/AAAAAAAAAC4/pX763ob9ug8/MethodCallSampleCode_thumb%5B5%5D.png?imgmax=800" width="701" height="315" /&gt;&lt;/a&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;It took a lot of cunning to make it work. Let me share the history.&lt;/p&gt;  &lt;p&gt;First of all, MethodCall needs a ‘this’ object to call methods. Conventional ‘property’ data binding uses DataContext magic for that. Alternatively, it could use ElementName too.&lt;/p&gt;  &lt;p&gt;However, MethodCall should be a MarkupExtension, so it can be written with concise syntax above. But MarkupExtension is not DependencyObject, which makes it impossible to inherit DataContext from the ‘Button’ it applied to.&lt;/p&gt;  &lt;p&gt;Well, if there’s a will there’s a way. The Binding class itself is MarkupExtension, and still the Binding class does participate in DataContext magic. So, start hacking this way.&lt;/p&gt;  &lt;p&gt;MethodCall creates its very own private Binding instance and uses it as a magic device. MethodCall’s Path and ElementName properties are tunnelled to that poor Binding, and when the time comes it produces the ‘this’ object for the method to be called on.&lt;/p&gt;  &lt;p&gt;OK, that’s very well, can we have method arguments too?&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_CBox5WxDIiw/SmMfDtqoB5I/AAAAAAAAADM/UHxGwV1SfHs/s1600-h/image%5B10%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_CBox5WxDIiw/SmMfIaDiJxI/AAAAAAAAADQ/YkdCK62Tgwg/image_thumb%5B6%5D.png?imgmax=800" width="522" height="405" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;font size="5"&gt;&lt;strong&gt;Arguments via binding&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Our MethodCall in its XAML-element syntax supports child Arguments, which can either have literal arguments, or bind to something.&lt;/p&gt;  &lt;p&gt;Let’s see a sample. This is ‘Add’ scenario: you choose something in one list to add to another list. In plain C# it means:&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; &lt;em&gt;&lt;strong&gt;list2&lt;/strong&gt;&lt;/em&gt;.Add( &lt;em&gt;&lt;strong&gt;list1&lt;/strong&gt;&lt;/em&gt;.SelectedItem );&lt;/p&gt;  &lt;p&gt;Quite difficult to implement with that dumb Command MVVM pattern, but easy with MethodCall:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_CBox5WxDIiw/SmJlMEWCA-I/AAAAAAAAAC8/VJ0CqSIRc9g/s1600-h/MethodCallArgumentCode%5B4%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="MethodCallArgumentCode" border="0" alt="MethodCallArgumentCode" src="http://lh3.ggpht.com/_CBox5WxDIiw/SmJlMoxy6HI/AAAAAAAAADA/dqFtJeFQsKg/MethodCallArgumentCode_thumb%5B2%5D.png?imgmax=800" width="418" height="191" /&gt;&lt;/a&gt;&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Here you can see Add being called on listBox2.Items and the argument comes from listBox1.SelectedItem.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_CBox5WxDIiw/SmMfKv59dRI/AAAAAAAAADU/d4mY4HqFfVQ/s1600-h/image%5B4%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_CBox5WxDIiw/SmMfMCxMQ0I/AAAAAAAAADY/qohiHa8pDys/image_thumb%5B2%5D.png?imgmax=800" width="539" height="355" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Implementing that part was not easy either. Basically, the same DataContext magic trouble catches up again, with a new twist. However, this time we can’t get away with the previous trick, because Argument class is not MarkupExtension anymore.&lt;/p&gt;  &lt;p&gt;This time, we use the trick with hidden attached property. Quite a powerful one, playing on the not-completely-watertight abstraction of DependencyProperties. Thing is, one can invent a DependencyProperty and set it on any DependencyObject regardless of the DependencyObject’s view on that. I can create and attach some random property, and the recipient won’t even know about it. That’s how attached properties work anyway.&lt;/p&gt;  &lt;p&gt;So, first of all we hijack the parent object of MethodCall. Then we create a funny hidden DependencyProperty, and use it to run Binding magic on it:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_CBox5WxDIiw/SmJlNGOf9UI/AAAAAAAAADE/iSm4_ExaDEA/s1600-h/MethodCallArgumentBindingTrickCode%5B4%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="MethodCallArgumentBindingTrickCode" border="0" alt="MethodCallArgumentBindingTrickCode" src="http://lh5.ggpht.com/_CBox5WxDIiw/SmJlNhTU_UI/AAAAAAAAADI/6r-ZLOXD2Ng/MethodCallArgumentBindingTrickCode_thumb%5B2%5D.png?imgmax=800" width="348" height="369" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;OK, just to be complete in the details. I said ‘hijack’, so there was a trick there too?&lt;/p&gt;  &lt;p&gt;Well, duh. How would you know the ‘parent’ object of MarkupExtension? OK, I know there’s a wibbly-wobbly way of querying IServiceProvider, doesn’t quite work inside DataTemplates though.&lt;/p&gt;  &lt;p&gt;So, we go no further as playing the same trick we pulled off to get the ‘this’ object for method call. We exploit Binding to fetch ‘this’, same way we exploit it again to fetch ‘self’. And ‘self’ meaning parent object of our MethodCall.&lt;/p&gt;  &lt;p&gt;The difference between ‘this’ and ‘self’ is that ‘this’ is object whose the method is being called, can be plain C# class. Whereas ‘self’ must be DependencyObject AND it must be exactly at the same point in object tree hierarchy where MethodCall is applied so Path and Element works as expected.&lt;/p&gt;  &lt;p&gt;In fact, just Binding is not enough. We need MultiBinding here really to get both ‘this’ and ‘self’. Effectively, we create MultiBinding for the following:&lt;/p&gt;  &lt;p&gt;‘this’ {Binding Path='…’ ElementName=’…’}, or default just {Binding .}&lt;/p&gt;  &lt;p&gt;‘self’ {Binding RelativeSource={RelativeSource Self}}&lt;/p&gt;  &lt;p&gt;&lt;font size="5"&gt;&lt;strong&gt;Pushing results&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Well, methods have one more feature we’ve chosen to ignore so far. They produce results, which sure most of times don’t deserve a notice. But as seldom as they do, those poor fellows might be useful.&lt;/p&gt;  &lt;p&gt;So, MethodCall has a feature to get those results out. Not a rocket science comparing to previous tricks, just a patch of strong OneWayToSource stuff. You set MethodCall’s Result and when the method produces output, it gets pushed out.&lt;/p&gt;  &lt;p&gt;You see below MethodCall for &lt;strong&gt;&lt;em&gt;WaitForInputIdle&lt;/em&gt;&lt;/strong&gt; on selected process then pushes result out into &lt;strong&gt;&lt;em&gt;result.Content&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_CBox5WxDIiw/SmMfMdkl3tI/AAAAAAAAADc/VFxdyHMfORE/s1600-h/image%5B15%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_CBox5WxDIiw/SmMfMzCAAgI/AAAAAAAAADg/ZEQAfN63rLM/image_thumb%5B9%5D.png?imgmax=800" width="582" height="48" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_CBox5WxDIiw/SmMfOmj5cVI/AAAAAAAAADk/5tsI7NrS6QQ/s1600-h/image%5B20%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_CBox5WxDIiw/SmMfQCoEqRI/AAAAAAAAADo/byOTMtpbd0E/image_thumb%5B12%5D.png?imgmax=800" width="723" height="479" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;No need to use Mode on the binding in Result property, it will get set to OneWayToSource for you.&lt;/p&gt;  &lt;p&gt;&lt;font size="5"&gt;&lt;strong&gt;Summary&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_CBox5WxDIiw/SmMfSK2QmGI/AAAAAAAAADs/-Y6rczTpftc/s1600-h/SS853103%5B22%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="DIY" border="0" alt="DIY" align="right" src="http://lh5.ggpht.com/_CBox5WxDIiw/SmMfSnbzRzI/AAAAAAAAADw/k_cNPu5aqpk/SS853103_thumb%5B19%5D.jpg?imgmax=800" width="282" height="229" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Well, if you understand it down to this point, I must say I’m impressed. I have spent good 6 hours of my Saturday to work it out, and it’s still complex for me.&lt;/p&gt;  &lt;p&gt;But knowing those guys in Microsoft’s XAML team would probably have half-million excuses for MethodCall not to be, I was really compelled to do it myself.&lt;/p&gt;  &lt;p&gt;------------------&lt;/p&gt;  &lt;p&gt;The remaining pieces are:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Error handling for method invocations (ideally, blend it in with conventional WPF validation). &lt;/li&gt;    &lt;li&gt;Type conversions for arguments (i.e. letting TextBox.Text be source for int method argument). &lt;/li&gt;    &lt;li&gt;CanExecute for commands. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Those guys require a little internal refactoring. Currently, the way method is invoked is Type.InvokeMemeber. That accepts array of arguments and works out the best override, if needed. But, when override is not available, it throws exception. Which it should not, if there’s no matching signature, the code should set CanExecute to false and not allow invocation in the first place.&lt;/p&gt;  &lt;p&gt;And additional complexity is making CanExecute to recalculate when argument bindings see change. Oh, that’s not going to be straightforward!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-6688297863617483178?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/6688297863617483178/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2009/07/methodcall-thing.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/6688297863617483178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/6688297863617483178'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2009/07/methodcall-thing.html' title='MethodCall ‘thing’'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_CBox5WxDIiw/SmJN6L94c_I/AAAAAAAAACw/znx59uo36nw/s72-c/MethodCallSampleApp_thumb%5B7%5D.png?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-6314001848645911266</id><published>2008-09-20T00:38:00.001+01:00</published><updated>2008-09-20T00:43:27.371+01:00</updated><title type='text'>Mono C# Compiler and Microsoft .NET Framework</title><content type='html'>&lt;p&gt;Currently Mono C# compiler is incompatible with Microsoft .NET Framework. As such, it is platform-bound and cannot be used in any lightweight scenarios (including Silverlight or WPF).&lt;/p&gt;&lt;p&gt;There is no technical reason for it to be like that. It can be fixed.&lt;/p&gt;&lt;p&gt;I have made the minimal changes allowing the compiler to compile itself onto .NET Framework. Please find them attached.&lt;/p&gt;&lt;p&gt;The .CSPROJ solution uses the latest source code from Mono and contains the full self-compiling test.&lt;/p&gt;&lt;p&gt;However! The changes are incomplete. Even though a subset of the valid source code can be compiled with those changes, some other important sources cannot. The most troubled is the generics support. In fact, the provided solution tries to compile LINQ libraries (System.Core) too. With no luck.&lt;/p&gt;&lt;p&gt;I believe a fully platform-independent C# compiler is a noble endeavour, if not quite so easy. I hope Mono team will spare some effort, or at least use my minimal changes to have the basics working.&lt;/p&gt;&lt;p&gt;&lt;a href="http://files.rsdn.ru/16605/mcs.zip"&gt;http://files.rsdn.ru/16605/mcs.zip&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-6314001848645911266?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/6314001848645911266/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2008/09/mono-c-compiler-and-microsoft-net.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/6314001848645911266'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/6314001848645911266'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2008/09/mono-c-compiler-and-microsoft-net.html' title='Mono C# Compiler and Microsoft .NET Framework'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5106667114455476931.post-3493858776072708313</id><published>2007-06-23T14:51:00.000+01:00</published><updated>2007-06-23T14:56:59.073+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C# London Address Quiz'/><title type='text'>Changing the address</title><content type='html'>Have you ever gotten the trouble with address changing? When your bank tries to charge you, when your bills go to other address or even missed both?&lt;br /&gt;&lt;br /&gt;Well, it turned out the problems have their reason. Here is the demo source code showing how address get messed:&lt;br /&gt;&lt;br /&gt;using System;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;&lt;br /&gt;class Program&lt;br /&gt;{&lt;br /&gt;    static readonly Address myAddress = new Address("1234", "1 Trafalgar Square");&lt;br /&gt;&lt;br /&gt;    static void Main()&lt;br /&gt;    {&lt;br /&gt;        Console.WriteLine("My current address is: " + myAddress);&lt;br /&gt;&lt;br /&gt;        myAddress.Update("4321", "19 Princelet Street");&lt;br /&gt;&lt;br /&gt;        Console.WriteLine("My new address is: " + myAddress);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        Console.Write("Press any key"); Console.ReadKey();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    struct Address&lt;br /&gt;    {&lt;br /&gt;        public string PostCode;&lt;br /&gt;        public List&lt;string&gt; AddressLines;&lt;br /&gt;&lt;br /&gt;        public Address(string postCode, params string[] addressLines)&lt;br /&gt;        {&lt;br /&gt;            this.PostCode = postCode;&lt;br /&gt;            this.AddressLines = new List&lt;string&gt;(addressLines);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public void Update(string newPostCode, params string[] newAddressLines)&lt;br /&gt;        {&lt;br /&gt;            this.PostCode = newPostCode;&lt;br /&gt;            this.AddressLines.Clear();&lt;br /&gt;            this.AddressLines.AddRange(newAddressLines);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public override string ToString()&lt;br /&gt;        {&lt;br /&gt;            return "[" + PostCode + "] " + string.Join(Environment.NewLine, AddressLines.ToArray());&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;What do you think? Can you explain what happens with the post code?&lt;br /&gt;&lt;br /&gt;And there is a change (literally just 4 characters to add), which can fix the thing. And then the address change will work seamlessy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5106667114455476931-3493858776072708313?l=mihailik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihailik.blogspot.com/feeds/3493858776072708313/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mihailik.blogspot.com/2007/06/changing-address.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/3493858776072708313'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5106667114455476931/posts/default/3493858776072708313'/><link rel='alternate' type='text/html' href='http://mihailik.blogspot.com/2007/06/changing-address.html' title='Changing the address'/><author><name>Oleg Mihailik</name><uri>https://profiles.google.com/116962847690455390257</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-iqJ0G9pLWDs/AAAAAAAAAAI/AAAAAAAAAAA/HF8IgzRtK2A/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry></feed>
