<?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-15758573</id><updated>2012-02-16T11:57:06.357+02:00</updated><category term='tamar'/><category term='dual core'/><category term='pictures'/><category term='yahoo'/><category term='mail'/><category term='technology'/><category term='weka'/><category term='funny'/><category term='connection'/><category term='registry'/><category term='singleton'/><category term='malware'/><category term='robot'/><category term='wtf'/><category term='rantings'/><category term='c#'/><category term='excel'/><category term='taxes'/><category term='netflix'/><category term='AI'/><category term='spam'/><category term='globes'/><category term='vs2010'/><category term='family'/><category term='ynet'/><category term='gal'/><category term='windows'/><category term='.net'/><category term='performance'/><category term='israel'/><category term='code'/><category term='resharper'/><category term='car'/><category term='contest'/><category term='hack'/><category term='prize'/><category term='linq'/><category term='user experience'/><category term='patterns'/><category term='genetic algorithms'/><category term='sql server'/><category term='visual studio'/><category term='matlab'/><category term='sql'/><category term='software'/><category term='better place'/><category term='joke'/><category term='mathematics'/><category term='design'/><category term='machine learning'/><category term='blogging'/><category term='leasing'/><category term='musings'/><category term='gmail'/><title type='text'>Why not? (Ilan Assayag's blog)</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default?start-index=101&amp;max-results=100'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>249</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-15758573.post-1154921543208545029</id><published>2010-11-23T21:42:00.001+02:00</published><updated>2010-11-23T21:42:55.047+02:00</updated><title type='text'>Trying to blog using BlogPress for iPhone</title><content type='html'>I don't blog much, but maybe now that i have installed BlogPress this will change?&lt;br /&gt;Only time will tell...&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/15758573-1154921543208545029?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/1154921543208545029/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=1154921543208545029' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/1154921543208545029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/1154921543208545029'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2010/11/trying-to-blog-using-blogpress-for.html' title='Trying to blog using BlogPress for iPhone'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-8093818862183026045</id><published>2010-09-14T17:13:00.002+02:00</published><updated>2010-09-14T17:22:35.619+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='visual studio'/><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='resharper'/><category scheme='http://www.blogger.com/atom/ns#' term='vs2010'/><title type='text'>Visual Studio 2010 Performance</title><content type='html'>After 3 years running with the same system (XP 64 bit), I finally decided to move on - and install Windows 7 Pro 64bit. I had been waiting for this step in order to also move to VS2010.&lt;div&gt;So the OS is super-fresh, the hardware is a little old but still decent (quad-core, 8GB) - and this damn VS2010 gets so slow that after a while I need to restart it (3-4 times per day).&lt;/div&gt;&lt;div&gt;Granted - I also installed R# 5 which puts a lot of pressure on the machine. So I disabled it, but still, even scrolling a 1000-lines file is slow !!!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Searching the Internet didn't help - I only found other complaining like me.&lt;/div&gt;&lt;div&gt;So I started digging into the Tools ==&gt; Options, and found out, under the "Environment" option, that VS2010 tries by default to make use of hardware acceleration wherever possible. I thought "hmm, maybe it's not as good as it thinks in using the HW acceleration?".&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I disabled the acceleration and got a HUGE performance improvement!!!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Re-enabling R# comes at a cost, but at least I can work (I've enabled in R# the option to show the amount of virtual memory used, and once in a while I call GC with a right-click and it runs much faster for a while).&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-8093818862183026045?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/8093818862183026045/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=8093818862183026045' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/8093818862183026045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/8093818862183026045'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2010/09/visual-studio-2010-performance.html' title='Visual Studio 2010 Performance'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-6745600337470118899</id><published>2010-05-10T10:53:00.001+03:00</published><updated>2010-05-10T10:53:34.406+03:00</updated><title type='text'>2 Great iPhone apps</title><content type='html'>&lt;p&gt;How good is your watermelon? See: &lt;a href="http://delafranco.com/iwatermelon/"&gt;http://delafranco.com/iwatermelon/&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Do you want a hot iPhone girlfriend? See: &lt;a href="http://www.mygirlapp.com/"&gt;http://www.mygirlapp.com/&lt;/a&gt;&lt;/p&gt; &lt;p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;Disclaimer – I don't know these guys, and never actually used these apps (I don't even have an iPhone), but I found the ideas cool (even if a little .. freaky).&lt;/p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-6745600337470118899?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/6745600337470118899/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=6745600337470118899' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/6745600337470118899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/6745600337470118899'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2010/05/2-great-iphone-apps.html' title='2 Great iPhone apps'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-1353145705971263302</id><published>2010-04-28T15:23:00.001+03:00</published><updated>2010-04-28T15:23:14.840+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>Finally - Compiler as a Service in C#</title><content type='html'>&lt;p&gt; &lt;p&gt;I've been ranting about the lack of a C# scripting tool&amp;nbsp;for a &lt;a href="http://ilanas.blogspot.com/2006/10/i-want-immediate-window-now.html"&gt;long&lt;/a&gt; &lt;a href="http://ilanas.blogspot.com/2006/10/scripting-in-c-take-2.html"&gt;long&lt;/a&gt; &lt;a href="http://ilanas.blogspot.com/2006/10/scripting-in-c-take-3.html"&gt;long&lt;/a&gt; time. Finally, it has come by means of &lt;a href="http://tirania.org/blog/archive/2010/Apr-27.html"&gt;Mono's Compiler as a Service&lt;/a&gt;, now available to Windows users as well.&lt;/p&gt; &lt;p&gt;&lt;/p&gt;Thanks to my colleague Dan for pointing this out.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-1353145705971263302?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/1353145705971263302/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=1353145705971263302' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/1353145705971263302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/1353145705971263302'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2010/04/finally-compiler-as-service-in-c.html' title='Finally - Compiler as a Service in C#'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-558496095615329063</id><published>2010-03-31T13:44:00.001+03:00</published><updated>2010-03-31T13:44:28.591+03:00</updated><title type='text'>Apparently, the machine SID duplication problem was just a myth.</title><content type='html'>&lt;p&gt;Directly from Mark Russinovich's blog: &lt;a href="http://blogs.technet.com/markrussinovich/archive/2009/11/03/3291024.aspx"&gt;http://blogs.technet.com/markrussinovich/archive/2009/11/03/3291024.aspx&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Amazing, insn't it?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-558496095615329063?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/558496095615329063/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=558496095615329063' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/558496095615329063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/558496095615329063'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2010/03/apparently-machine-sid-duplication.html' title='Apparently, the machine SID duplication problem was just a myth.'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-6788313129489055963</id><published>2008-10-22T11:09:00.002+02:00</published><updated>2010-02-11T13:09:14.981+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='linq'/><title type='text'>Configurable  connection string with Linq to SQL</title><content type='html'>&lt;p&gt;When using Linq-to-SQL with the dbml designer, by default it generates an App.config file and puts the connection string to use in it. This is fine (well, not really, but at least it works) for applications, but when working with class libraries it's a problem – DLL's don't load the app.config, so changing the connection string in the app.config won't produce any change (the application will still try to use the connection string that was used at design time).&lt;/p&gt; &lt;p&gt;I found a pretty neat solution here by David Klein ( &lt;a href="http://ddkonline.blogspot.com/2008/02/set-connection-string-in-linq-dbml-file.html"&gt;http://ddkonline.blogspot.com/2008/02/set-connection-string-in-linq-dbml-file.html&lt;/a&gt; ), which is based on Jon Gallant's solution ( &lt;a href="http://blogs.msdn.com/jongallant/archive/2007/11/25/linq-and-web-application-connection-strings.aspx"&gt;http://blogs.msdn.com/jongallant/archive/2007/11/25/linq-and-web-application-connection-strings.aspx&lt;/a&gt; )&lt;/p&gt; &lt;p&gt;P.S: The problem is known by MSFT: &lt;a href="http://msdn.microsoft.com/en-us/library/bb386996.aspx"&gt;http://msdn.microsoft.com/en-us/library/bb386996.aspx&lt;/a&gt; . It doesn't seems to bother them though…&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-6788313129489055963?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/6788313129489055963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/6788313129489055963'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2008/10/configurable-connection-string-with.html' title='Configurable  connection string with Linq to SQL'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-8386361527137850472</id><published>2008-07-16T11:22:00.001+03:00</published><updated>2008-07-16T11:22:10.947+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AI'/><category scheme='http://www.blogger.com/atom/ns#' term='robot'/><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><title type='text'>Undoubtedly the most amazing technology I have ever seen</title><content type='html'>&lt;p&gt;&lt;/p&gt;No matter what you had planned for the next 2 minutes - change your plan. Check &lt;a href="http://www.bostondynamics.com/content/sec.php?section=BigDog"&gt;BigDog - The Most Advanced Quadruped Robot on Earth&lt;/a&gt;. It's worth it!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-8386361527137850472?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/8386361527137850472/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=8386361527137850472' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/8386361527137850472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/8386361527137850472'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2008/07/undoubtedly-most-amazing-technology-i.html' title='Undoubtedly the most amazing technology I have ever seen'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-6758214871674348640</id><published>2008-05-11T14:55:00.001+03:00</published><updated>2008-05-11T14:55:05.879+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='code'/><category scheme='http://www.blogger.com/atom/ns#' term='linq'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>Linq: Composite keys don't work + Beware of ElementAt ...</title><content type='html'>&lt;p&gt; &lt;p&gt;I was trying to join two lists (one being a linq-to-sql result and the other being a List&amp;lt;&amp;gt; in memory) using a composite index. I tried doing it the right way, but it just didn't work. (By the way, the "right" way is really awkward. it means you must define a new anonymous type in both query, having the same fields. The best resource I found is &lt;a href="http://blogs.msdn.com/shitals/archive/2008/03/07/hello-word.aspx"&gt;here&lt;/a&gt;). So after the "right" way didn't work, I tried the more time-consuming way, which involves a Where inside another Where and turned out to be completely irrelevant performance-wise (~20K rows).&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;In the end, I had to do the join by myself. By chance, the two lists I needed to join had the exact same number of records, and the only thing I had to do was to make sure both lists are sorted in the same manner. Then I could just join each element in one list with the element at the same position in the second list. So the code looked something like that:&lt;/p&gt; &lt;p&gt;&lt;/p&gt;&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;for&lt;/span&gt; (&lt;span style="color: rgb(0,0,255)"&gt;int&lt;/span&gt; i = 0; i &amp;lt; sWeights.Count(); i++)&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;double&lt;/span&gt; val = 0.0;&lt;br /&gt;    &lt;span style="color: rgb(43,145,175)"&gt;DateTime&lt;/span&gt; date = sWeights.ElementAt(i).Date;&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;while&lt;/span&gt; (i &amp;lt; sWeights.Count() &amp;amp;&amp;amp; sWeights.ElementAt(i).Date.Equals(date))&lt;br /&gt;    {&lt;br /&gt;        val += sWeights.ElementAt(i).Weight * sChanges.ElementAt(i).Change;&lt;br /&gt;        i++;&lt;br /&gt;    }&lt;br /&gt;    &lt;span style="color: rgb(0,128,0)"&gt;// Do something with date and val&lt;br /&gt;&lt;/span&gt;}&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;p&gt;Now here's the deal - this code sucks! It takes AGES to complete. I searched MSDN for an indication about the running time of ElementAt, because I had a feeling this could be the problem - but it doesn't say anything about it. So I made a test - turned the two lists into arrays and ran using an array selector ([i]) and ... voila - the code completes in no time.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;So now the code looks like this:&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;for&lt;/span&gt; (&lt;span style="color: rgb(0,0,255)"&gt;int&lt;/span&gt; i = 0; i &amp;lt; sWeights.Length; i++)&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;double&lt;/span&gt; val = 0.0;&lt;br /&gt;    &lt;span style="color: rgb(43,145,175)"&gt;DateTime&lt;/span&gt; date = sWeights[i].Date;&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;while&lt;/span&gt; (i &amp;lt; sWeights.Length &amp;amp;&amp;amp; sWeights[i].Date.Equals(date))&lt;br /&gt;    {&lt;br /&gt;        val += sWeights[i].Weight * sChanges[i].Change;&lt;br /&gt;        i++;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: rgb(0,128,0)"&gt;// Do something with val&lt;br /&gt;&lt;/span&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;strong&gt;CONCLUSION: &lt;/strong&gt;BEWARE - ElementAt DOES NOT guarantee anything about its running time, so if you need to run through the whole list, it's better to create an array with the list's elements and run over the array.&lt;/p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-6758214871674348640?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/6758214871674348640/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=6758214871674348640' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/6758214871674348640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/6758214871674348640'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2008/05/linq-composite-keys-don-work-beware-of.html' title='Linq: Composite keys don&amp;#39;t work + Beware of ElementAt ...'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-4111952992413873340</id><published>2008-05-05T14:25:00.001+03:00</published><updated>2008-05-05T14:25:20.819+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='code'/><category scheme='http://www.blogger.com/atom/ns#' term='linq'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>Can't this be simpler?</title><content type='html'>&lt;p&gt; &lt;p&gt;I'm trying to run a Linq query which, in SQL, would look like this:&lt;/p&gt; &lt;p&gt;&lt;/p&gt;&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;select&lt;/span&gt; V&lt;span style="color: rgb(128,128,128)"&gt;.&lt;/span&gt;Date&lt;span style="color: rgb(128,128,128)"&gt;,&lt;/span&gt; &lt;span style="color: rgb(255,0,255)"&gt;SUM&lt;/span&gt;&lt;span style="color: rgb(128,128,128)"&gt;(&lt;/span&gt;F&lt;span style="color: rgb(128,128,128)"&gt;.&lt;/span&gt;Factor&lt;span style="color: rgb(128,128,128)"&gt;/&lt;/span&gt;V&lt;span style="color: rgb(128,128,128)"&gt;.&lt;/span&gt;Change&lt;span style="color: rgb(128,128,128)"&gt;)&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;AS&lt;/span&gt; Denom&lt;br /&gt;&lt;span style="color: rgb(0,0,255)"&gt;from&lt;/span&gt; AllVols V &lt;span style="color: rgb(128,128,128)"&gt;JOIN&lt;/span&gt; Factors F &lt;span style="color: rgb(0,0,255)"&gt;on&lt;/span&gt; F&lt;span style="color: rgb(128,128,128)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;Key&lt;/span&gt; &lt;span style="color: rgb(128,128,128)"&gt;=&lt;/span&gt; V&lt;span style="color: rgb(128,128,128)"&gt;.&lt;/span&gt;FId&lt;br /&gt;&lt;span style="color: rgb(0,0,255)"&gt;group&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;by&lt;/span&gt; V&lt;span style="color: rgb(128,128,128)"&gt;.&lt;/span&gt;Date&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;p&gt;The only way I found looks like this:&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;var&lt;/span&gt; denoms = &lt;span style="color: rgb(0,0,255)"&gt;from&lt;/span&gt; v &lt;span style="color: rgb(0,0,255)"&gt;in&lt;/span&gt; allVols&lt;br /&gt;             &lt;span style="color: rgb(0,0,255)"&gt;join&lt;/span&gt; f &lt;span style="color: rgb(0,0,255)"&gt;in&lt;/span&gt; factors &lt;span style="color: rgb(0,0,255)"&gt;on&lt;/span&gt; v.FId &lt;span style="color: rgb(0,0,255)"&gt;equals&lt;/span&gt; f.Key&lt;br /&gt;             &lt;span style="color: rgb(0,0,255)"&gt;group&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; {v.Date, Factor = f.Value, v.Change} &lt;span style="color: rgb(0,0,255)"&gt;by&lt;/span&gt; v.Date&lt;br /&gt;             &lt;span style="color: rgb(0,0,255)"&gt;into&lt;/span&gt; g&lt;br /&gt;                 &lt;span style="color: rgb(0,0,255)"&gt;orderby&lt;/span&gt; g.Key.Date&lt;br /&gt;                 &lt;span style="color: rgb(0,0,255)"&gt;select&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; {g.Key.Date, Denom = g.Sum(d =&amp;gt; d.Factor/d.Change)};&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;Is there no better way ?!?!&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-4111952992413873340?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/4111952992413873340/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=4111952992413873340' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/4111952992413873340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/4111952992413873340'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2008/05/can-this-be-simpler.html' title='Can&amp;#39;t this be simpler?'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-8303159532293745705</id><published>2008-04-30T17:38:00.001+03:00</published><updated>2008-04-30T17:38:57.800+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='mathematics'/><category scheme='http://www.blogger.com/atom/ns#' term='linq'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>Linq Goodies 2 - Calculating Standard Deviation</title><content type='html'>&lt;p&gt;&lt;/p&gt; &lt;p&gt;Check out the following function, which calculates the Standard Deviation of a given list of values:&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;static&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;double&lt;/span&gt; calcStdev(&lt;span style="color: rgb(43,145,175)"&gt;IEnumerable&lt;/span&gt;&amp;lt;&lt;span style="color: rgb(0,0,255)"&gt;double&lt;/span&gt;&amp;gt; values)&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;double&lt;/span&gt; avg = values.Average();&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;Math&lt;/span&gt;.Sqrt( (values.Sum(d =&amp;gt; &lt;span style="color: rgb(43,145,175)"&gt;Math&lt;/span&gt;.Pow(d - avg, 2))) / (values.Count() - 1) );&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Extra sweet...&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Note that I could have replaced (d - avg) with (d - values.Average()) , hence resulting in a single line instead of 2, but the performance hit isn't worth it.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;It may not look very readable looking at it as a programmer, but if you look at the &lt;a href="http://en.wikipedia.org/wiki/Standard_deviation"&gt;mathematical formula of standard deviation&lt;/a&gt;, the above code is much closer to it than anything I've previously seen in C*.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-8303159532293745705?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/8303159532293745705/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=8303159532293745705' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/8303159532293745705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/8303159532293745705'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2008/04/linq-goodies-2-calculating-standard.html' title='Linq Goodies 2 - Calculating Standard Deviation'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-7539151787687527378</id><published>2008-04-30T17:34:00.001+03:00</published><updated>2008-04-30T17:34:35.106+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='code'/><category scheme='http://www.blogger.com/atom/ns#' term='linq'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>Linq Goodies 1 - Extracting a range from an array</title><content type='html'>&lt;p&gt; &lt;p&gt;Slowly but surely I'm starting to get the huge benefits Linq is bringing into our lives. Take a look at the following code snippet, which retrieves values from an array in a specified range:&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt;&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;var&lt;/span&gt; range = cData.Where((d, index) =&amp;gt; index &amp;gt;= (i - 40) &amp;amp;&amp;amp; index &amp;lt; (i));&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;Sweet!&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-7539151787687527378?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/7539151787687527378/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=7539151787687527378' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/7539151787687527378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/7539151787687527378'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2008/04/linq-goodies-1-extracting-range-from.html' title='Linq Goodies 1 - Extracting a range from an array'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-8488717899583952611</id><published>2008-04-30T11:45:00.001+03:00</published><updated>2008-04-30T11:45:15.560+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>No support for static Extension Methods - bummer!</title><content type='html'>&lt;p&gt;&lt;/p&gt; &lt;p&gt;I wanted to add an extension method to Debug, which would automatically write a given set of parameters separated with commas (to generate CSV files). However, since extension methods are not supported for static methods, and the Debug.WriteXXX are static - it's not possible. Bummer!&lt;/p&gt; &lt;p&gt;&lt;/p&gt;Yet another missing feature in C#/CLR ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-8488717899583952611?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/8488717899583952611/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=8488717899583952611' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/8488717899583952611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/8488717899583952611'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2008/04/no-support-for-static-extension-methods.html' title='No support for static Extension Methods - bummer!'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-6916852883977661035</id><published>2008-04-21T15:33:00.001+03:00</published><updated>2008-04-21T15:37:50.896+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='user experience'/><category scheme='http://www.blogger.com/atom/ns#' term='excel'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>Excel WTF</title><content type='html'>&lt;p&gt; &lt;p&gt;This is an old one, but I'm always stunned by the fact that a major application such as Excel still has issues like this. I'm trying to view two copies of the same file, located in different folder (I want to check a specific cell to see if it was changed). For some obscure reason, Excel can't handle two simultaneously opened files with the same name, even if they reside in different folder (not that there is any option for them to &lt;em&gt;do&lt;/em&gt; reside in the same folder, but that's beside the point).&lt;/p&gt; &lt;p&gt;&lt;/p&gt;&lt;em&gt;"A document with the name 'blablabla.xls' is already open. You cannot open two documents with the same name, even if the documents are in different folders. To open the second document, either close the document that's currently open, or rename one of the documents."&lt;/em&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-6916852883977661035?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/6916852883977661035/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=6916852883977661035' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/6916852883977661035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/6916852883977661035'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2008/04/excel-wtf.html' title='Excel WTF'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-7647116303871213656</id><published>2008-03-20T10:06:00.001+02:00</published><updated>2008-03-20T10:06:01.147+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>Connecting to a remote console</title><content type='html'>&lt;p&gt;Say you want to connect to a remote machine with Remote Desktop (RDP) but want to get hold of the actual machine's console. That is - you want to get the session that you would have were you standing in front of the machine physically.&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;To do so, run the following command:&lt;/p&gt; &lt;p&gt;&lt;/p&gt;mstsc /console &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;Then connect to the machine as you would with a regular RDP session. What you will get is the actual console session.&lt;/p&gt; &lt;p&gt;&lt;/p&gt;Thanks to Chen Avnery for this little (but helpful) info. &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-7647116303871213656?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/7647116303871213656/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=7647116303871213656' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/7647116303871213656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/7647116303871213656'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2008/03/connecting-to-remote-console.html' title='Connecting to a remote console'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-7188314619972525356</id><published>2008-02-26T11:37:00.001+02:00</published><updated>2008-02-26T11:37:32.970+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='rantings'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>SQL Server 2005 rantings - User Defined Aggregate Functions are nice, but not there yet...</title><content type='html'>&lt;p&gt;1. Why can't there be UDA's in T-SQL? Granted, it's easy to write it in CLR, but sometimes it would be simpler (and more appropriate) to write it in SQL. It also took me a while to figure out that indeed there is such limitation...&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;2. UDA's must be serializable. Why? I don't know yet (still need to figure that one out), although I have some ideas, but anyway it's besides the point - it's a must and I assume there are good reasons for that. The problem is that whenever you're doing something slightly more complicated than just an average or Product, you need to accumulate all the values until you get to Terminate() (e.g. a variation on STDEV). This means that this list you've just accumulated could grow significantly. Now to the pitfall - when you use user-defined serialization (which you would &lt;strong&gt;have &lt;/strong&gt;to in this case), you must specific the maximum size that the UDA structure could grow to. This maximum size is limited to 8000 bytes (*sounds familiar...). So in my case, I'm using a UDA over double values, and thus I'm limited to aggregating a little below 1000 records. IMHO this reduces the practical usage of UDA's to about 50%...&lt;/p&gt; &lt;p&gt;&lt;/p&gt;3. I tried to write a UDA for decimal data. No matter what I did, it constantly produced a function defined to return decimal(18,0). In other words - no decimal numbers to the right of the dot. In the end I didn't have the time to find out the KB article talking about it, but I suppose there is - I pretty much tried everything. In my particular case using double values was an acceptable compromise - it won't always be that way... &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-7188314619972525356?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/7188314619972525356/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=7188314619972525356' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/7188314619972525356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/7188314619972525356'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2008/02/sql-server-2005-rantings-user-defined.html' title='SQL Server 2005 rantings - User Defined Aggregate Functions are nice, but not there yet...'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-6432475632346887664</id><published>2008-02-14T16:00:00.001+02:00</published><updated>2008-02-14T16:05:27.468+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='weka'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><category scheme='http://www.blogger.com/atom/ns#' term='machine learning'/><title type='text'>Learning Machine Learning - The WEKA Way</title><content type='html'>&lt;p&gt;If you're interested in working with or learning about Machine Learning, you really MUST check out &lt;a href="http://www.cs.waikato.ac.nz/ml/weka/"&gt;WEKA&lt;/a&gt;. When I first saw WEKA, a few years ago, it looked like a cute tool to start learning ML, with a very small set of implemented algorithms and only available for Java developers. Now, it has become a very rich research platform, in which one can easily test a very wide variety of ML algorithms with endless tuning parameters and analysis tools. You can &lt;a href="http://weka.sourceforge.net/wiki/index.php/Frequently_Asked_Questions#How_do_I_connect_to_a_database.3F"&gt;read data directly from a database&lt;/a&gt; and you can now even &lt;a href="http://weka.sourceforge.net/wiki/index.php/Use_Weka_with_the_Microsoft_.NET_Framework"&gt;run WEKA directly from within your .NET code&lt;/a&gt; (check also &lt;a href="http://weka.sourceforge.net/wiki/index.php/IKVM_with_Weka_tutorial"&gt;this&lt;/a&gt;) !!!!!&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;I'm a complete newbie with WEKA, but it seems that it's going to be a lot of fun and much faster working with it than anything I did before. I just hope it will hold up to the expectations that are building up in me now...&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;One more thing - notice that there is t&lt;a href="http://weka.sourceforge.net/wiki/index.php/Frequently_Asked_Questions#What.27s_the_difference_between_book_and_developer_version.3F"&gt;he "book version" and the "developer version"&lt;/a&gt;. The former is the one on which their &lt;a href="http://www.cs.waikato.ac.nz/~ml/weka/book.html"&gt;book&lt;/a&gt; is based on and is not expanded (only bug fixes). The latter is the version that is on constant development, has more features, and significantly more implemented algorithms.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-6432475632346887664?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/6432475632346887664/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=6432475632346887664' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/6432475632346887664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/6432475632346887664'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2008/02/learning-machine-learning-weka-way.html' title='Learning Machine Learning - The WEKA Way'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-8749045167292351831</id><published>2008-02-12T16:10:00.001+02:00</published><updated>2008-02-12T16:10:51.821+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='user experience'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='blogging'/><title type='text'>WLW - Didn't they hear about 64-bit ???</title><content type='html'>&lt;p&gt; &lt;p&gt;When opening WLW it says that the Beta has expired and&amp;nbsp;forwards me to download the new version. When I do that -&amp;nbsp;I get a message that&amp;nbsp;it is not supported for 64-bit windows (I'm using XP 64bit).&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;Hum, what?&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;1. 64bit is alive and kicking and getting more and more users. It's time that software companies (MS being one, IMHO) get used to provide support for 64bit platforms by default.&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;2. If the new version does not support my platform - why sending me to download it and waste my time and nerves?&lt;/p&gt; &lt;p&gt;&lt;/p&gt;Grrrrr...&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-8749045167292351831?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/8749045167292351831/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=8749045167292351831' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/8749045167292351831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/8749045167292351831'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2008/02/wlw-didn-they-hear-about-64-bit.html' title='WLW - Didn&amp;#39;t they hear about 64-bit ???'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-4627546870995417071</id><published>2007-12-13T17:41:00.001+02:00</published><updated>2007-12-13T17:41:38.064+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='malware'/><category scheme='http://www.blogger.com/atom/ns#' term='rantings'/><category scheme='http://www.blogger.com/atom/ns#' term='spam'/><category scheme='http://www.blogger.com/atom/ns#' term='mail'/><title type='text'>Chain Letters Are Worse Than Viruses</title><content type='html'>&lt;p&gt;&lt;/p&gt; &lt;p&gt;Yesterday I got once again a Chain Letter. In case you don't know - &lt;a href="http://ilanas.blogspot.com/2007/02/personal-letter-to-everyone-i-know.html"&gt;I HATE CHAIN LETTERS&lt;/a&gt;!!!&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;This time, it was a &lt;a href="http://www.hoax-slayer.com/olympic-torch-virus-hoax.html"&gt;pseudo virus alert&lt;/a&gt;. When I complained with the sender, urging her to stop sending me chain letters, she said: "But it's a VIRUS alert! I can't take the chance you'll miss it!"&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;What people don't understand, is that if 50% of the users would think like this sender, there would be no Internet. Nada, zip, nil, rien du tout, nothing, niets, kadachat...&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;Just do the math:&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;Let's assume 50% of the people believe in those nonsense and send such a virus alert to 20 other people.&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;Now assume it takes on average 5 minutes from the moment you get the email until you forward it (some a little more, some a little less).&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;In this worst case scenario, we flood the Net with 10^12 emails after 1 hour. Keeping the 5-minute window I assumed above, it's more than 3 BILLION emails per second. No need to calculate how many emails would be sent after 2 hours - there would be no Internet by then.&lt;/p&gt; &lt;p&gt;&lt;/p&gt;Fortunately for the Internet, most users know better than to forward Chain Letters...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-4627546870995417071?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/4627546870995417071/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=4627546870995417071' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/4627546870995417071'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/4627546870995417071'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/12/chain-letters-are-worse-than-viruses.html' title='Chain Letters Are Worse Than Viruses'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-5247413532497319764</id><published>2007-12-12T19:10:00.001+02:00</published><updated>2007-12-12T19:10:06.030+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AI'/><category scheme='http://www.blogger.com/atom/ns#' term='malware'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='machine learning'/><title type='text'>AI AI AI AI AI ...</title><content type='html'>&lt;p&gt;My curiosity has been arisen big time. Apparently, there is a new kind of malware, which involves the use of natural language dialogue to extract information from users, in the disguise of a flirtatious conversation. It's called CyberLover and was apparently developed in Russia. According to &lt;a href="http://www.pctools.com/"&gt;PC Tools&lt;/a&gt;, this program can converse with a human for 30 minutes without the dude being able to see he's talking to a robot.&lt;/p&gt; &lt;p&gt;The &lt;a href="http://en.wikipedia.org/wiki/Turing_test"&gt;Turing Test&lt;/a&gt; has officially been passed...&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;Read the original warning issued by &lt;a href="http://www.pctools.com/news/view/id/192/"&gt;PC Tools&lt;/a&gt;, or an article at &lt;a href="http://www.computerworld.com.au/index.php/id;1672098041"&gt;ComputerWorld&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&lt;/p&gt;AMAZING!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-5247413532497319764?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/5247413532497319764/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=5247413532497319764' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/5247413532497319764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/5247413532497319764'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/12/ai-ai-ai-ai-ai.html' title='AI AI AI AI AI ...'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-2529960292336695997</id><published>2007-12-04T11:56:00.001+02:00</published><updated>2007-12-04T11:56:01.361+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='musings'/><category scheme='http://www.blogger.com/atom/ns#' term='code'/><title type='text'>A Killing IDE Feature I Would Like To See</title><content type='html'>&lt;p&gt; &lt;p&gt; &lt;p&gt;A long time ago I used to use &lt;a href="http://geyra.com/mutek/bugTrapper.htm"&gt;BugTrapper&lt;/a&gt; - an application that sits on the production server, records every instruction, and makes it possible to "play" everything back, step by step. It's a great tool to analyze bugs and especially crashes "post mortem", as long as it's not related to some obscure race condition (the overhead of using BugTrapper often ruling out the race in the first place).&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;I think there definitely is a case for applications like this, and the fact that Mutek hasn't been able to push itself farther into developers' awareness is quite surprising to me.&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;The feature I would like to see in an IDE is a mini-BugTrapper. I would like the IDE to be able to record up to a certain amount of instructions (say up to 100,000) during debugging. How many times did you stop at some breakpoint and suddenly realized you should have put this breakpoint a little bit earlier in the flow? You really need to see&amp;nbsp; the value of some parameter, or the actually executed flow, a few steps back - but you can't. The only thing the IDE gives you is the static current call stack - which just isn't enough. You want to know what variables caused you to get into that current call stack, but that's beyond the scope of the IDE's features.&lt;/p&gt; &lt;p&gt;&lt;/p&gt;That's, IMHO, a killing feature that could significantly boost debugging time.&lt;/p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-2529960292336695997?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/2529960292336695997/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=2529960292336695997' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/2529960292336695997'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/2529960292336695997'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/12/killing-ide-feature-i-would-like-to-see.html' title='A Killing IDE Feature I Would Like To See'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-5473450702967435745</id><published>2007-12-02T14:20:00.001+02:00</published><updated>2007-12-02T14:20:59.182+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='code'/><title type='text'>Is GOTO always evil?</title><content type='html'>The other day I decided to use a "goto" statement in my C# code. It was a difficult decision to take, and was primarily motivated by the need for readability. &lt;p&gt;&lt;/p&gt; &lt;p&gt;Apparently, &lt;a href="http://en.wikipedia.org/wiki/Linus_Torvalds"&gt;Linus Torvalds&lt;/a&gt; also &lt;a href="http://kerneltrap.org/node/553/2131"&gt;thinks there are cases where "goto" is appropriate&lt;/a&gt;, so I'm in good company...&lt;/p&gt; &lt;p&gt;&lt;/p&gt;Thanks to Scott Hanselman for &lt;a href="http://www.hanselman.com/blog/TheWeeklySourceCode10PatternsConsideredHarmful.aspx"&gt;pointing to this thread&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-5473450702967435745?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/5473450702967435745/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=5473450702967435745' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/5473450702967435745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/5473450702967435745'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/12/is-goto-always-evil.html' title='Is GOTO always evil?'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-6069843770373347890</id><published>2007-12-02T12:52:00.001+02:00</published><updated>2007-12-02T12:52:09.545+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='funny'/><title type='text'>How do you Exactly Approximate??</title><content type='html'>&lt;p&gt;Let me quote from MSDN about &lt;a href="http://msdn2.microsoft.com/en-us/library/system.double.aspx"&gt;System.Double&lt;/a&gt;:&lt;/p&gt; &lt;p&gt;&lt;/p&gt;"A mathematical or comparison operation that uses a floating-point number might not yield the same result if a decimal number is used because the floating-point number might not &lt;strong&gt;&lt;em&gt;exactly approximate&lt;/em&gt;&lt;/strong&gt; the decimal number." &lt;p&gt;&lt;/p&gt; &lt;p&gt;I found this funny, go figure...&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-6069843770373347890?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/6069843770373347890/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=6069843770373347890' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/6069843770373347890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/6069843770373347890'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/12/how-do-you-exactly-approximate.html' title='How do you Exactly Approximate??'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-3088008943903545458</id><published>2007-11-15T14:05:00.001+02:00</published><updated>2007-11-15T14:05:14.821+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blogging'/><title type='text'>How consistent should a blogger be?</title><content type='html'>&lt;p&gt; &lt;p&gt;I recently got back to reading &lt;a href="http://www.codinghorror.com/blog/"&gt;Jeff Atwood's blog&lt;/a&gt;, after a long pause on my part. I was very surprised to see advertisements there, especially since I remembered him discussing &lt;a href="http://www.codinghorror.com/blog/archives/000700.html"&gt;this issue in the past&lt;/a&gt; - opting for the negative. Of course, one can always change his mind. But still, I find it quite funny. Reading the last few comments on that post you can read him agreeing that advertising on a blog is "like advertising on your business card".&lt;/p&gt; &lt;p&gt;&lt;/p&gt;Apparently he now doesn't mind advertising on&amp;nbsp;his business card ... &lt;p&gt;&lt;/p&gt; &lt;p&gt;By the way - I found &lt;a href="http://weblogs.asp.net/jgalloway/"&gt;Jon Galloway&lt;/a&gt;'s comment hilarious...&lt;/p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-3088008943903545458?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/3088008943903545458/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=3088008943903545458' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/3088008943903545458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/3088008943903545458'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/11/how-consistent-should-blogger-be.html' title='How consistent should a blogger be?'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-676760310300495428</id><published>2007-11-13T16:36:00.001+02:00</published><updated>2007-11-13T16:36:45.405+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='code'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><category scheme='http://www.blogger.com/atom/ns#' term='wtf'/><title type='text'>VB Grrrrrr...</title><content type='html'>&lt;p&gt;Yet another MSDN and .NET WTF:&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;I'm currently implementing some temporary code that was written in VB into our C# infrastructure (let's skip the details). Anyway, there are parts in the VB code that I would like to group because either they are currently not being used, or for some reason I want to hide it from view and get to it at some later phase.&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;Obviously, a #Region directive seems like the best solution.&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;My VB is quite rusted, but using common sense I tried using&amp;nbsp; the same syntax I'm used in C#. But alas - it didn't work. So I &lt;a href="http://msdn2.microsoft.com/en-us/library/sd032a17(VS.80).aspx"&gt;searched MSDN&lt;/a&gt; - hey, it should work! Well, VB have this little difference that the &lt;em&gt;identifier_string&lt;/em&gt; MUST exist and it must be surrounded by quotation marks. OK, no biggy, I usually put it there anyway.&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;But why doesn't it work?&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;Well, there is this tiny little limitation, hidden from you if you rely solely on MSDN, that "'&lt;strong&gt;#Region' and '#End Region' statements are not valid within method bodies.&lt;/strong&gt;"&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;Which raises two questions:&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt; &lt;p&gt;1. Why, in Heaven's name, should there be such a difference between C# and VB. It's just a freaking compilation directive!&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;2. Assuming there is some justified reason for that (which I doubt - I guess it's just a non-implemented feature) - would it hurt someone to put this info in MSDN so I won't have to get crazy trying to figure out why it doesn't work?!?!&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;And now to a personal to-remember note:&lt;/p&gt; &lt;p&gt;&lt;/p&gt;I relied solely on Intellisense and Resharper to know the code is wrong. I'm using the C# only version of Resharper, so I have no idea whether Resharper would have been more helpful. Anyway - had I compiled from the beginning (or at least looked at the message Intellisense gave me) - I would have seen much sooner why it doesn't work...&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-676760310300495428?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/676760310300495428/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=676760310300495428' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/676760310300495428'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/676760310300495428'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/11/vb-grrrrrr.html' title='VB Grrrrrr...'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-1236822545516817456</id><published>2007-11-12T11:16:00.001+02:00</published><updated>2007-11-12T11:16:18.095+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='better place'/><category scheme='http://www.blogger.com/atom/ns#' term='car'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='musings'/><title type='text'>Could the World become a Better Place?</title><content type='html'>&lt;p&gt;Shai Agassi is a person who doesn't have to prove himself - he's done it 400,000,000 ($) times and much more. I had the chance of working for him at TopTier, though at the time he was mostly in the US and I don't think he'll remember me.&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;He's now investing all his power in the &lt;a href="http://projectbetterplace.com/"&gt;Project Better Place&lt;/a&gt;, with the goal of transforming our fuel-based cars into electric-cars, by providing the necessary infrastructure and business plan.&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt; &lt;p&gt;Will he succeed? I sincerely hope so. I am also willing to be one of his first customers for a pilot plan in Israel. If anyone is to succeed in such a project - it's him.&lt;/p&gt; &lt;p&gt;&lt;/p&gt;Some say his &lt;a href="http://www.eweek.com/article2/0,1895,2212874,00.asp"&gt;real goal&lt;/a&gt; is to own the software that will handle the whole system. Well, I think that if he succeeds in this project, it makes complete sense and there's no harm about it. If making this world a Better Place means Agassi will own the most important software in history - so be it!&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;In any case, I admire him for being ready to risk his most valuable asset - his reputation - for this huge and very risky project.&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;If you want to keep track of what's going on, I suggest you read his &lt;a href="http://shaiagassi.typepad.com/the_long_tailpipe/"&gt;blog&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&lt;/p&gt;Good luck Shai! &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-1236822545516817456?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/1236822545516817456/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=1236822545516817456' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/1236822545516817456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/1236822545516817456'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/11/could-world-become-better-place.html' title='Could the World become a Better Place?'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-2719327820429621433</id><published>2007-11-12T09:04:00.001+02:00</published><updated>2007-11-12T09:04:38.465+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='musings'/><category scheme='http://www.blogger.com/atom/ns#' term='funny'/><title type='text'>Citations of the day</title><content type='html'>&lt;p&gt;By &lt;a href="http://en.wikipedia.org/wiki/Henry_Kissinger"&gt;Henry Kissinger&lt;/a&gt;:&lt;/p&gt; &lt;p&gt; &lt;p&gt;&lt;/p&gt;&lt;/p&gt; &lt;p&gt; &lt;ul&gt; &lt;li&gt;Military men are just dumb stupid animals to be used as pawns in foreign policy.&lt;/li&gt;&lt;/ul&gt; &lt;ul&gt; &lt;li&gt;If everybody is your enemy, then you are not paranoid. &lt;/li&gt;&lt;/ul&gt; &lt;ul&gt; &lt;li&gt;Power is the ultimate aphrodisiac.&lt;/li&gt;&lt;/ul&gt; &lt;ul&gt; &lt;li&gt;Corrupt politicians make the other ten percent look bad. &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Source: &lt;a href="http://en.wikipedia.org/wiki/Henry_Kissinger#Quotes"&gt;Wikipedia&lt;/a&gt;&lt;/p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-2719327820429621433?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/2719327820429621433/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=2719327820429621433' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/2719327820429621433'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/2719327820429621433'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/11/citations-of-day.html' title='Citations of the day'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-3683508057509772104</id><published>2007-11-11T11:17:00.001+02:00</published><updated>2007-11-11T11:17:50.546+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='user experience'/><category scheme='http://www.blogger.com/atom/ns#' term='rantings'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>XP Printing issues - Grrrr...!!!</title><content type='html'>&lt;p&gt;D., my colleague came to me today asking for help with printing problems. At some point I decided to log off, but then I couldn't log on again. The machine kept saying that the current time is different than the network time. I couldn't log on with any of our domain users (including Administrator), so I had to log on with the local Admin user. Looking at the time, it looked fine. After digging and searching for 15 minutes, we discovered that the &lt;em&gt;date&lt;/em&gt; differed - running some simulation D. had to move his clock one day ahead and forgot to move it back.&lt;/p&gt;Once we moved the clock back to the right day, he could print flawlessly! &lt;p&gt;&lt;/p&gt; &lt;p&gt;Things gives rise to many questions:&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;1. Why couldn't he print when his day was wrong? I understand there are synchronization issues involved - but in 2007 (almost 2008) these things shouldn't happen! Sometimes you really &lt;em&gt;can not&lt;/em&gt; have all your computers synchronized. That's life!&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;2. Why did the error talk about time and not date?&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;3. Why couldn't we even log on with a domain user?&lt;/p&gt; &lt;p&gt;&lt;/p&gt;Grrrrrrrrrrrr........!@#!@#!@#@!@#!@#!@# &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-3683508057509772104?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/3683508057509772104/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=3683508057509772104' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/3683508057509772104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/3683508057509772104'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/11/xp-printing-issues-grrrr.html' title='XP Printing issues - Grrrr...!!!'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-7679210237621543286</id><published>2007-11-07T12:47:00.001+02:00</published><updated>2007-11-07T12:47:08.544+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='funny'/><title type='text'>Supermarket 2.0</title><content type='html'>&lt;p&gt;&lt;/p&gt; &lt;p&gt; &lt;p&gt;A paraphrase of Web 2.0 to real life - GREAT!&lt;/p&gt; &lt;p&gt;&lt;/p&gt;&lt;/p&gt; &lt;p&gt;&lt;embed src="http://www.youtube.com/v/e9MgHuitMwU" width="425" height="355" type="application/x-shockwave-flash" wmode="transparent"&gt;&lt;/embed&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-7679210237621543286?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/7679210237621543286/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=7679210237621543286' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/7679210237621543286'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/7679210237621543286'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/11/supermarket-20.html' title='Supermarket 2.0'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-6287459516115206997</id><published>2007-11-05T12:10:00.001+02:00</published><updated>2007-11-05T12:10:52.167+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><title type='text'>Parameterized SELECT TOP</title><content type='html'>&lt;p&gt;&lt;/p&gt; &lt;p&gt;Just a small tip:&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;Say you want to run a query that returns the first @X results of some query, such that @X is a &lt;em&gt;parameter&lt;/em&gt;.&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;The simple "SELECT TOP @X ..." statement doesn't work. I found this weird, because I know for a fact that SQL 2005 supports using a parameter in the TOP clause (as opposed to SQL 2000 where you had to use either dynamic queries or the SET ROWCOUNT statement).&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;Solution - surround the parameter with parenthesis as so:&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;"SELECT TOP (@X) ..."&lt;/p&gt; &lt;p&gt;&lt;/p&gt;Something to remember...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-6287459516115206997?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/6287459516115206997/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=6287459516115206997' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/6287459516115206997'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/6287459516115206997'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/11/parameterized-select-top.html' title='Parameterized SELECT TOP'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-766750215018845568</id><published>2007-10-29T12:46:00.001+02:00</published><updated>2007-10-29T12:46:16.962+02:00</updated><title type='text'>We're Hiring - Searching for a Quantitative Analyst</title><content type='html'>&lt;p&gt; &lt;p&gt;For the past few years I've been working for a global investment firm. At the beginning I worked part-time as a freelancer, but recently the company opened an R&amp;amp;D facility in Herzliya and now I'm a full time employee again. We're now looking for exceptionally talented quantitative analysts, to participate in the development, validation &amp;amp; documentation of risk &amp;amp; analytical applications and processes.&lt;/p&gt; &lt;p&gt;&lt;/p&gt;&lt;/p&gt; &lt;p&gt;Our firm has been engaged for over 10 years in the research and development of systematic trading models for the global financial markets. The developed models are used in the actual money management of clients' portfolios.&lt;/p&gt; &lt;p&gt;Role will involve working on new risk management models, data extrapolation, and trading model analysis and development. &lt;/p&gt; &lt;p&gt;&lt;u&gt;Requirements:&lt;/u&gt;&lt;/p&gt; &lt;p&gt;· MS or PhD in Math or Physics&lt;/p&gt; &lt;p&gt;· Exposure to stochastic calculus&lt;/p&gt; &lt;p&gt;· Excellent general modeling skills&lt;/p&gt; &lt;p&gt;· Grasp of PDE’s and Monte Carlo&lt;/p&gt; &lt;p&gt;· Experience in statistical data analysis or signal processing is a plus&lt;/p&gt; &lt;p&gt;· Experience in Matlab \ C# is a plus&lt;/p&gt; &lt;p&gt;· Financial knowledge is a plus&lt;/p&gt; &lt;p&gt;To apply, fax your resume and a cover letter to 09-970-7329 or email &lt;a href="mailto:careers@eaglets.com"&gt;careers@eaglets.com&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/15758573-766750215018845568?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/766750215018845568/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=766750215018845568' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/766750215018845568'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/766750215018845568'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/10/we-hiring-searching-for-quantitative.html' title='We&amp;#39;re Hiring - Searching for a Quantitative Analyst'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-4694481993307525570</id><published>2007-10-29T11:46:00.001+02:00</published><updated>2007-10-29T11:46:03.969+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='sql server'/><title type='text'>Grrrr... I hate bad documentation! or: "An INSERT EXEC statement cannot be nested"</title><content type='html'>&lt;p&gt;&lt;/p&gt; &lt;p&gt;I recently had to extensively use a feature in SQL I seldom used before - inserting the results of an EXEC statement directly into a table. Sounds a reasonable thing to do, right? Accidentally, I had a bunch of stored procedures calling each other, using temporary tables, and finally filling a "final" table. I finished writing the whole thing, and then - BABOOM! - it doesn't work, because "An INSERT EXEC statement cannot be nested". Huh? What? &lt;br&gt;Why? Why didn't you say so before? &lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;Following is a quote from SQL Server Books Online for &lt;a href="http://msdn2.microsoft.com/en-us/library/ms174335.aspx"&gt;"INSERT (Transact-SQL)"&lt;/a&gt; :&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;dl&gt; &lt;dt&gt;&lt;i&gt;execute_statement &lt;/i&gt; &lt;dd&gt; &lt;p&gt;Is any valid EXECUTE statement that returns data with SELECT or READTEXT statements. The SELECT statement cannot contain a CTE.&lt;/p&gt; &lt;p&gt;If &lt;i&gt;execute_statement &lt;/i&gt;is used with INSERT, each result set must be compatible with the columns in the table or in &lt;i&gt;column_list&lt;/i&gt;. &lt;/p&gt; &lt;p&gt;&lt;i&gt;execute_statement&lt;/i&gt; can be used to execute stored procedures on the same server or a remote server. The procedure in the remote server is executed, and the result sets are returned to the local server and loaded into the table in the local server. &lt;/p&gt; &lt;p&gt;If &lt;i&gt;execute_statement&lt;/i&gt; returns data with the READTEXT statement, each READTEXT statement can return a maximum of 1 MB (1024 KB) of data. &lt;i&gt;execute_statement&lt;/i&gt; can also be used with extended procedures. &lt;i&gt;execute_statement&lt;/i&gt; inserts the data returned by the main thread of the extended procedure; however, output from threads other than the main thread are not inserted. &lt;/p&gt;&lt;/dd&gt;&lt;/dl&gt; &lt;p&gt;Did you see any clear mention of this limitation???&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-4694481993307525570?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/4694481993307525570/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=4694481993307525570' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/4694481993307525570'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/4694481993307525570'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/10/grrrr-i-hate-bad-documentation-or.html' title='Grrrr... I hate bad documentation! or: &amp;quot;An INSERT EXEC statement cannot be nested&amp;quot;'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-4559319927712043751</id><published>2007-10-25T14:50:00.001+02:00</published><updated>2007-10-25T14:55:13.589+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='sql server'/><title type='text'>SQL Table Variables - Limitations</title><content type='html'>&lt;p&gt;I've come to really like &lt;a href="http://msdn2.microsoft.com/en-us/library/ms175010.aspx"&gt;table variables&lt;/a&gt; in SQL. They are a nice and natural development of database programming. And, when used smartly, can greatly improve performance compared to using &lt;a href="http://msdn2.microsoft.com/en-us/library/ms174979.aspx"&gt;temporary tables&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Today I've discovered that table variables cannot be &lt;a href="http://msdn2.microsoft.com/en-us/library/ms177570.aspx"&gt;truncated&lt;/a&gt;. I had no idea...&lt;/p&gt; &lt;p&gt;Anyway, I've found a cool source of more information about table variables, including some stuff that is not or not well documented in Books Online. Check &lt;a href="http://support.microsoft.com/default.aspx/kb/305977"&gt;here&lt;/a&gt; and &lt;a href="http://databases.aspfaq.com/database/should-i-use-a-temp-table-or-a-table-variable.html"&gt;here&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;When you think of it - it makes sense. As far as I know, table variables are memory constructs whereas temporary tables are kept in tempdb. Truncating a table simply removes the reference of the table's page from the database. However, if the table is only kept in memory and in no actual database - it has no meaning...&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-4559319927712043751?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/4559319927712043751/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=4559319927712043751' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/4559319927712043751'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/4559319927712043751'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/10/sql-table-variables-limitations.html' title='SQL Table Variables - Limitations'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-7525904662322175235</id><published>2007-10-24T13:33:00.001+02:00</published><updated>2007-10-24T13:33:02.417+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='musings'/><title type='text'>I type at 48.1 wpm and 97.2% accuracy</title><content type='html'>&lt;p&gt;I took the &lt;a href="http://www.typequick.com/ttest/testyourskills.html"&gt;typing test&lt;/a&gt; everyone talks about, here are the results:&lt;/p&gt; &lt;p&gt;Number of words typed: 144&lt;br&gt;Test duration: 3 min&lt;br&gt;Speed: 48.1 words/min. (240 keystrokes/min.)&lt;br&gt;Error penalty: 4&lt;br&gt;Accuracy: 97.2% &lt;p&gt;It's good, but I've got a lot to improve. I must say it made me quite nervous - causing me to make several time-consuming errors (didn't get high accuracy for nothing). Also for me, writing code goes way faster (even before counting Intellisense, Resharper and the like in) than text I've never seen before. There are some words, or parts of words that I can just type at lightning speed (new, class, for, if, the, select, from, ...)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-7525904662322175235?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/7525904662322175235/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=7525904662322175235' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/7525904662322175235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/7525904662322175235'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/10/i-type-at-481-wpm-and-972-accuracy.html' title='I type at 48.1 wpm and 97.2% accuracy'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-8842267521021004063</id><published>2007-10-24T12:19:00.001+02:00</published><updated>2007-10-24T12:19:11.293+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='musings'/><title type='text'>Confession</title><content type='html'>&lt;p&gt;&lt;a href="http://www.hanselman.com/blog/"&gt;Scott Hanselman&lt;/a&gt;, THE blogger, has a very interesting post about &lt;a href="http://www.hanselman.com/blog/TheFiveSecondRuleDoesItApplyInternationally.aspx"&gt;The Five Second Rule&lt;/a&gt;. Actually, the comments are the most interesting...&lt;/p&gt; &lt;p&gt;I was born in Belgium, moved to Israel at 13 and have been living here ever since (almost 20 years). I've never heard of this rule.&lt;/p&gt; &lt;p&gt;I must, however, confess that when I was a little child I would scratch chewing gums off the ground and eat them with no second thought. I did this until one day &lt;a href="http://avital.hatan-kala.com/"&gt;my sister Tali&lt;/a&gt; saw me, utterly shocked,&amp;nbsp;and gave me an important lesson in hygiene...&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-8842267521021004063?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/8842267521021004063/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=8842267521021004063' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/8842267521021004063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/8842267521021004063'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/10/confession.html' title='Confession'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-7021406326104327883</id><published>2007-10-16T19:59:00.001+02:00</published><updated>2007-10-16T19:59:40.166+02:00</updated><title type='text'>I miss my const methods</title><content type='html'>&lt;p&gt;Yet another thing to add to the &lt;a href="http://ilanas.blogspot.com/2007/09/impersonating-data-types.html"&gt;list of things&lt;/a&gt;&amp;nbsp;I miss in C# - the ability to define a method in a class that is guaranteed (by the compiler!) to not change the state of the object (like const methods in C++).&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-7021406326104327883?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/7021406326104327883/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=7021406326104327883' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/7021406326104327883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/7021406326104327883'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/10/i-miss-my-const-methods.html' title='I miss my const methods'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-6440057518057461614</id><published>2007-10-16T19:53:00.001+02:00</published><updated>2007-10-16T19:53:17.400+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='code'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><category scheme='http://www.blogger.com/atom/ns#' term='wtf'/><title type='text'>I don't understand the implementation of System.Double</title><content type='html'>&lt;p&gt;Take a close look at the implementation of System.Double (use Reflector or any other dissassembler).&lt;/p&gt; &lt;p&gt;Look, for example, at the following excerpt:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;const&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;double&lt;/span&gt; PositiveInfinity = (&lt;span style="color: rgb(0,0,255)"&gt;double&lt;/span&gt;)1.0 / (&lt;span style="color: rgb(0,0,255)"&gt;double&lt;/span&gt;)0.0;&lt;br /&gt;&lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;const&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;double&lt;/span&gt; NaN = (&lt;span style="color: rgb(0,0,255)"&gt;double&lt;/span&gt;)1.0 / (&lt;span style="color: rgb(0,0,255)"&gt;double&lt;/span&gt;)0.0;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Huh?!?! What ?!!? Why ?!?!&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Of course, I had to run and check:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;double&lt;/span&gt; myNaN = &lt;span style="color: rgb(0,0,255)"&gt;double&lt;/span&gt;.NaN;&lt;br /&gt;&lt;span style="color: rgb(0,0,255)"&gt;bool&lt;/span&gt; isInf = (&lt;span style="color: rgb(0,0,255)"&gt;double&lt;/span&gt;.IsPositiveInfinity(myNaN));&lt;br /&gt;&lt;span style="color: rgb(0,128,0)"&gt;// isInf is set to FALSE&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;double&lt;/span&gt; myInf = &lt;span style="color: rgb(0,0,255)"&gt;double&lt;/span&gt;.PositiveInfinity;&lt;br /&gt;&lt;span style="color: rgb(0,0,255)"&gt;bool&lt;/span&gt; isNaN = (&lt;span style="color: rgb(0,0,255)"&gt;double&lt;/span&gt;.IsNaN(myInf));&lt;br /&gt;&lt;span style="color: rgb(0,128,0)"&gt;// isNaN is set to FALSE&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;It doesn't end there. Look at the implementation of IsNaN:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;static&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;bool&lt;/span&gt; IsNaN(&lt;span style="color: rgb(0,0,255)"&gt;double&lt;/span&gt; d)&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; (d != d);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;All'n'all, I must confess I can't make any sense of all this!&lt;/p&gt;&lt;br /&gt;&lt;p&gt;I promise to publish if/when I do.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-6440057518057461614?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/6440057518057461614/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=6440057518057461614' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/6440057518057461614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/6440057518057461614'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/10/i-don-understand-implementation-of.html' title='I don&amp;#39;t understand the implementation of System.Double'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-3436074420935190645</id><published>2007-10-16T19:08:00.001+02:00</published><updated>2007-10-17T15:20:16.367+02:00</updated><title type='text'>Google - what are you cooking</title><content type='html'>&lt;p&gt;&lt;font color="#0000ff"&gt;[UPDATE: Apparently I was a little bit late at noticing. See &lt;a href="http://uk.news.yahoo.com/pocketli/20071015/ttc-google-increases-gmail-storage-57dbc65.html"&gt;here&lt;/a&gt; for a news article on the subject dated October 15th.]&lt;/font&gt;&lt;/p&gt; &lt;p&gt;Only a week ago, my GMail account had an allocation of less than 3GB. Two days ago it crossed the 3GB line, and now it's almost 3.5GB.&lt;/p&gt; &lt;p&gt;Call me crazy, but I think there is something behind this. Is Google about to (at last!) remove the "Beta"&amp;nbsp;label&amp;nbsp;from this great product? Are they about to take over some big data storage firm?&lt;/p&gt; &lt;p&gt;What's up big G ? You're up to something, I know it...&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-3436074420935190645?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/3436074420935190645/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=3436074420935190645' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/3436074420935190645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/3436074420935190645'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/10/google-what-are-you-cooking.html' title='Google - what are you cooking'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-1773657898753920562</id><published>2007-10-16T18:53:00.001+02:00</published><updated>2007-10-16T18:53:16.641+02:00</updated><title type='text'>Why Double.IsNaN</title><content type='html'>&lt;p&gt;If you have a double value set to &lt;a href="http://msdn2.microsoft.com/en-us/library/system.double.nan.aspx"&gt;NaN&lt;/a&gt; you can &lt;em&gt;check&lt;/em&gt; that it's NaN only through the &lt;a href="http://msdn2.microsoft.com/en-us/library/system.double.isnan.aspx"&gt;Double.IsNaN&lt;/a&gt; method. MSDN quote: "Use &lt;a href="http://msdn2.microsoft.com/en-us/library/system.double.isnan.aspx"&gt;IsNaN&lt;/a&gt; to determine whether a value is not a number. It is not possible to determine whether a value is not a number by comparing it to another value equal to &lt;b&gt;NaN&lt;/b&gt;."&lt;/p&gt; &lt;p&gt;In other words, there is no guarantee that (Double.NaN == Double.NaN).&lt;/p&gt; &lt;p&gt;A simple question - WHY ?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-1773657898753920562?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/1773657898753920562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=1773657898753920562' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/1773657898753920562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/1773657898753920562'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/10/why-doubleisnan.html' title='Why Double.IsNaN'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-975732023399448334</id><published>2007-10-14T15:24:00.001+02:00</published><updated>2007-10-14T15:24:49.404+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='funny'/><title type='text'>Wine is better than Water</title><content type='html'>&lt;p&gt;I just got this in my mailbox. I rarely read, let alone forward, this kind of mails. Yet, it came from a person I trust and who avoids sending stupidities (thanks Yuval!) and I really feel I ought to &lt;a href="http://www.payitforwardfoundation.org/"&gt;pay it forward&lt;/a&gt;...&lt;/p&gt; &lt;p&gt;"&lt;/p&gt; &lt;p&gt;As Ben Franklin said: &lt;br&gt;In wine there is wisdom, in beer there is freedom,&lt;br&gt;in water there is bacteria.&lt;/p&gt; &lt;p&gt;&lt;br&gt;In a number of carefully controlled trials,&lt;br&gt;scientists have demonstrated that if we drink 1 liter &lt;br&gt;of water each day, at the end of the year we would&lt;br&gt;have absorbed more than 1 kilo of Escherichia coli,&lt;br&gt;(E. coli) - bacteria found in feces. In other words,&lt;br&gt;we are consuming 1 kilo of poop. &lt;/p&gt; &lt;p&gt;&lt;br&gt;However, we do NOT run that risk when drinking wine &lt;br&gt;&amp;amp; beer (or tequila, rum, whiskey or other liquor)&lt;br&gt;because alcohol has to go through a purification&lt;br&gt;process of boiling, filtering and/or fermenting.&lt;br&gt;&lt;/p&gt; &lt;p&gt;Remember: Water = Poop, Wine = Health&lt;br&gt;&lt;/p&gt; &lt;p&gt;Therefore, it's better to drink wine and talk &lt;br&gt;stupid, than to drink water and be full of shit.&lt;br&gt;&lt;/p&gt; &lt;p&gt;There is no need to thank me for this valuable&lt;br&gt;information: I'm doing it as a public service.&lt;/p&gt; &lt;p&gt;"&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-975732023399448334?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/975732023399448334/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=975732023399448334' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/975732023399448334'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/975732023399448334'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/10/wine-is-better-than-water.html' title='Wine is better than Water'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-2099788011298505815</id><published>2007-10-14T14:01:00.001+02:00</published><updated>2007-10-14T14:01:35.254+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='musings'/><title type='text'>Defining a Startup company</title><content type='html'>&lt;p&gt;First, I would like&amp;nbsp;to draw your attention to this post&amp;nbsp;(and blog in general):&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://thebeginner.wordpress.com/2007/10/14/defining-a-startup-company/"&gt;Defining a Startup company « First steps in the Hi-Tech sales world&lt;/a&gt; .&lt;/p&gt; &lt;p&gt;It's maintained by a guy (I think) who writes anonymously about his experience in the Hi-Tech world. I usually don't fancy anonymous writers, but this is the exception that confirms the rule - by being anonymous he allows himself to be free of any politically-correct barriers, and not being afraid of being sacked by writing what he thinks about his work and employer. The result is well-written, interesting, thoughtful, funny, and still written with style and manners. Give it a try, you'll like it!&lt;/p&gt; &lt;p&gt;Anyway, I'd like to asses the issue of defining a Startup company. Inevitably, I had to check what &lt;a href="http://en.wikipedia.org/wiki/Startup_company"&gt;Wikipedia&lt;/a&gt; had to say. The emphasis there is more on the company's age ("limited operating history"), size and potential growth. In general, they are more concerned with the financial aspect of the matter - a Startup company is a company that is highly scalable and can produce huge ROI very fast. They also mention that it usually focuses on creating a product, rather than providing services.&lt;/p&gt; &lt;p&gt;In The Beginner's other post and comments, people related more to the atmosphere at work:&lt;/p&gt; &lt;p&gt;Not Startup (anymore):&lt;/p&gt; &lt;p&gt;"When you have a purchase order system in place that is automated and requires the signatures of half the company (company size is irrelevant here) for a purchase of a paper clip."&lt;/p&gt; &lt;p&gt;"Feeling like a small bolt in a large machine where you can no longer influence anything"&lt;/p&gt; &lt;p&gt;"people covering their asses by adding the whole company on every email they send"&lt;/p&gt; &lt;p&gt;"working your ass for some idiot that has a reserved parking space that is never occupied before 9:30 am or after 5:30 pm, who is earning 5 times your pay and who’s only donation to the company is when he keeps his mouth shut and doesn’t generate any trouble by releasing another stupid decision"&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Still Startup:&lt;/p&gt; &lt;p&gt;"A small place, good atmosphere, people working all to one goal."&lt;/p&gt; &lt;p&gt;"the added bonuses - a pool table, cool offices, or some other crap"&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;IMHO, there is no single definition to a Startup company. I've seen companies of 15 that could never be considered a Startup, and worked together with almost 150 other employees for a superb Startup. In every company you have smart people, and those who are smarter, you have "the company ass-hole", and after you've worked for a place enough time - some things start bugging you badly, Startup or not.&lt;/p&gt; &lt;p&gt;So where should the line be drawn?&lt;/p&gt; &lt;p&gt;Well, I think that there are many parameters involved. No Startup fits all of these parameters, and some of the parameters are purposely vague, but in general, a company who complies to &lt;em&gt;most&lt;/em&gt; of these parameters, is &lt;em&gt;likely&lt;/em&gt; to be, to &lt;em&gt;some degree&lt;/em&gt;, a Startup company. Almost sounds like a &lt;a href="http://en.wikipedia.org/wiki/Fuzzy_logic"&gt;Fuzzy Logic&lt;/a&gt; rule...&lt;/p&gt; &lt;p&gt;So here is my (incomplete) list, in no particular order:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Size - a Startup company must be small. At least it should &lt;em&gt;feel&lt;/em&gt; small to the employees as well as to the outside world. I've worked for a company with almost 150 employees who still felt small, but that's rather uncommon, and very difficult to achieve.&lt;/li&gt; &lt;li&gt;Age - the company and employees must &lt;em&gt;feel&lt;/em&gt; young. It doesn't mean you can't have workers of 50+. If you even have one, young,&amp;nbsp;important and charismatic individual - it could do the job. I've also seen companies where people of 30+ were called "the eldest", and still the company &lt;em&gt;felt&lt;/em&gt; old. So don't go firing all your guru's with 20 years of experience now!&lt;/li&gt; &lt;li&gt;Speed - in a Startup company, things move fast. Decisions are taken on the spot. The word "process" is &lt;em&gt;only&lt;/em&gt; used as a running instance of a computer program! The overall mood can switch from one extremity to the other in a few minutes.&amp;nbsp;People walk fast in the corridors. There is &lt;em&gt;action&lt;/em&gt; in the air!&lt;/li&gt; &lt;li&gt;Belonging -&amp;nbsp; people &lt;em&gt;feel&lt;/em&gt; they belong to something great. There is a purpose to your work. When someone asks you something, you help him because you want him to succeed, knowing it will help &lt;em&gt;us&lt;/em&gt;. You'll delve into his problem until completion, even if you'll have to solve it yourself.&lt;/li&gt; &lt;li&gt;Believing - employees must know and believe in the company's goals and capability to reach these goals. They must also feel that they are making a difference - they must &lt;em&gt;believe&lt;/em&gt; in their ability to impact the company's success.&lt;/li&gt; &lt;li&gt;Potential - it should be evident that, in all matters (company size, sales, products, ...) - there is much more to be done than that which has been done. There should be a &lt;em&gt;feeling&lt;/em&gt; of huge potential. Also, employees should have the feeling that once part of this potential will be achieved, they will be significantly compensated financially (stock options, bonuses, etc.).&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;(Note: I feel I haven't finished this post - I'll complete this list later on...)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-2099788011298505815?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/2099788011298505815/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=2099788011298505815' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/2099788011298505815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/2099788011298505815'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/10/defining-startup-company.html' title='Defining a Startup company'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-6946563677016033587</id><published>2007-09-24T10:11:00.001+02:00</published><updated>2007-09-24T10:11:21.681+02:00</updated><title type='text'>I'm not much smarter than a baboon - aouch!</title><content type='html'>&lt;p&gt;Yesterday I went to &lt;a href="http://www.microsoft.com/israel/communities/usergroups/architects.mspx"&gt;Microsoft's software architects users group&lt;/a&gt; where Yaniv Hakim, CTO of eWave, discussed the architecture of their eGen application generator.&lt;/p&gt; &lt;p&gt;The lecture was very interesting and very well presented, but I would like to point to his &lt;a href="http://www.newtechusa.com/Humor/higherprimate.asp"&gt;very last slide&lt;/a&gt;. &lt;/p&gt; &lt;p&gt;The question is - do you believe everything you&amp;nbsp;read on the Internet?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-6946563677016033587?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/6946563677016033587/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=6946563677016033587' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/6946563677016033587'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/6946563677016033587'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/09/i-not-much-smarter-than-baboon-aouch.html' title='I&amp;#39;m not much smarter than a baboon - aouch!'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-3115153006981966655</id><published>2007-09-20T18:43:00.001+02:00</published><updated>2007-09-20T18:43:23.460+02:00</updated><title type='text'>Some things speak for themselves</title><content type='html'>&lt;p&gt;Today I had to meet someone in the village where I live. While waiting for him, my eyes wandered over a public message board. One of the messages looked like that (translated from Hebrew):&lt;/p&gt; &lt;p&gt;"Pretty girl will cook and clean"&lt;/p&gt; &lt;p&gt;Hmm, is that the only thing she is proposing?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-3115153006981966655?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/3115153006981966655/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=3115153006981966655' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/3115153006981966655'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/3115153006981966655'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/09/some-things-speak-for-themselves.html' title='Some things speak for themselves'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-1438830333187366373</id><published>2007-09-18T08:34:00.001+02:00</published><updated>2007-09-18T08:34:55.428+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='musings'/><category scheme='http://www.blogger.com/atom/ns#' term='code'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>Impersonating data types</title><content type='html'>&lt;p&gt;I've already talked about things I'm missing in C#/CLR (&lt;a href="http://ilanas.blogspot.com/2006/10/things-im-missing-in-cclr.html"&gt;here&lt;/a&gt; and &lt;a href="http://ilanas.blogspot.com/2006/12/more-missing-things-in-c.html"&gt;here&lt;/a&gt;). I'd like to add a new concept I would call "impersonation".&lt;/p&gt; &lt;p&gt;Let's start with a simple&amp;nbsp;example:&lt;/p&gt; &lt;p&gt;Say I have a method that calculates the sum of some array of doubles (double[]), like so:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;static&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;double&lt;/span&gt; Sum(&lt;span style="color: rgb(0,0,255)"&gt;double&lt;/span&gt;[] list)&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;double&lt;/span&gt; sum = 0.0;&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;for&lt;/span&gt; (&lt;span style="color: rgb(0,0,255)"&gt;int&lt;/span&gt; i = 0; i &amp;lt; list.Length; i++)&lt;br /&gt;    {&lt;br /&gt;        sum += list[i];&lt;br /&gt;    }&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; sum;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;Now I would like to use this method with an input that is not an array of doubles, but some other list of double values (say List&amp;lt;double&amp;gt;, a RowCollection, whatever).&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The straight-forward solution is to change the Sum method to receive a collection instead of an array, or make it a template method. But that's when I &lt;em&gt;can&lt;/em&gt; change it! What if the method belongs to some class that is not under my jurisdiction?&lt;/p&gt;&lt;br /&gt;&lt;p&gt;In this case, the only solution I can think of is to create a whole new array of doubles based on the collection you want to work with. But of course, that's not what I want! First, it costs time and memory. Second, if the Sum method&amp;nbsp;would also change the actual values in the array - you're lost. In my case, it's the first restriction that bugs me.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;If the input variable was something else than an array (some class), in most cases you would be able to solve it by inheriting from it and feeding the child class to the method. But then again it wouldn't work for all cases. First because the lack of multiple inheritance (sigh) could restrain you from such solution. Second, in the case the input variable is of some &lt;em&gt;sealed&lt;/em&gt; type.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;My solution (proposal)&amp;nbsp;- impersonation.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;A possible implementation would be an attribute on the class that indicates to the compiler that an object of this type could be used to substitute some other type. For example:&lt;/p&gt;&lt;pre class="code"&gt;[Impersonate(&lt;span style="color: rgb(0,0,255)"&gt;typeof&lt;/span&gt;(&lt;span style="color: rgb(0,0,255)"&gt;double&lt;/span&gt;[]))]&lt;br /&gt;&lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;class&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;MyCollection&lt;br /&gt;&lt;/span&gt;{&lt;br /&gt;    &lt;span style="color: rgb(0,128,0)"&gt;// Implement the parts of double[] you are going to need&lt;br /&gt;&lt;/span&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Note that in theory, one could implement in&amp;nbsp;&lt;span style="color: rgb(43,145,175)"&gt;MyCollection &lt;/span&gt; only those parts of Array that might indeed be called. Then the call to the method could be done as so:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(43,145,175)"&gt;MyCollection&lt;/span&gt; myCollection = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;MyCollection&lt;/span&gt;();&lt;br /&gt;&lt;span style="color: rgb(0,0,255)"&gt;double&lt;/span&gt; sum = Sum(myCollection);&lt;br /&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;And, of course, the compiler should be able to understand the attribute and not generate any errors. Unless, of course, the Sum method uses some features of Array that are not implemented in&amp;nbsp;&lt;span style="color: rgb(43,145,175)"&gt;MyCollection&lt;/span&gt; .&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Lastly, I would allow multiple impersonations on the same class.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-1438830333187366373?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/1438830333187366373/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=1438830333187366373' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/1438830333187366373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/1438830333187366373'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/09/impersonating-data-types.html' title='Impersonating data types'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-7839937692783987549</id><published>2007-09-16T16:23:00.001+02:00</published><updated>2007-09-16T16:23:45.843+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='code'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>Asymmetric Accessor Accessibility in C#</title><content type='html'>&lt;p&gt;Today I wanted to define one accessor with two different accessibility levels. That is, I wanted a property to have public 'get' access and private 'set' access. I remembered that in .NET 2.0 this became possible, but didn't remember exactly the syntax. So I tried first my intuition, which was:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;DataTable&lt;/span&gt; MyTable&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;get&lt;/span&gt; { &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; myTable; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0,0,255)"&gt;private&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;DataTable&lt;/span&gt; MyTable&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;set&lt;/span&gt; { myTable = &lt;span style="color: rgb(0,0,255)"&gt;value&lt;/span&gt;; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Unfortunately, I was wrong. A quick search revealed the secret syntax:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;DataTable&lt;/span&gt; MyTable&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;get&lt;/span&gt; { &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; myTable; }&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;set&lt;/span&gt; { myTable = &lt;span style="color: rgb(0,0,255)"&gt;value&lt;/span&gt;; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;More details in the &lt;a href="http://msdn2.microsoft.com/en-us/library/75e8y5dd(VS.80).aspx"&gt;MSDN entry&lt;/a&gt;.&lt;a href="http://11011.net/software/vspaste"&gt;&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/15758573-7839937692783987549?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/7839937692783987549/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=7839937692783987549' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/7839937692783987549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/7839937692783987549'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/09/asymmetric-accessor-accessibility-in-c.html' title='Asymmetric Accessor Accessibility in C#'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-6961728135508383528</id><published>2007-09-12T16:12:00.001+03:00</published><updated>2007-09-12T16:12:35.021+03:00</updated><title type='text'>Why I urge you to NOT buy an LG laptop in Israel !!!</title><content type='html'>&lt;p&gt;&lt;/p&gt; &lt;p&gt;About a year ago &lt;a href="http://ilanas.blogspot.com/2006/10/laptop-short-review-lg-ls70-3jje-18ghz.html"&gt;I posted a very enthusiastic post about my laptop&lt;/a&gt;, concluding that "I'm pretty sure that next time I buy a laptop, LG will be on the top of my potential brands!".&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;Today, my friends, I admit I had no idea what I was talking about, because until that moment I didn't run into any problem with the machine. Now that I have, and had to get (no) help from their laptops lab I must say the exact contrary - DO NOT buy LG laptops in Israel, if you want your warranty to have any meaning!&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;Huh? What? What happened???&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;I'll try to make it short:&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;1. It's been some time now that I had 2 main issues with the laptop:&lt;/p&gt; &lt;p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp; a. It would suddenly freeze, leaving me no alternative but to hard-reboot it.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp; b. The mouse buttons didn't work well.&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;2. At some point I couldn't work with it anymore, so I had to bring it to the lab. The machine is 2 years old, the warranty is for 3 years - should be a no-brainer.&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;3. Since the lab is at a remote location, I brought it to a computer shop/lab that works with LG and provide a service of sending/receiving stuff to/from the lab. So far so good.&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;4. After almost 3 weeks, the laptop was back. &lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; a. They fixed the mouse-buttons.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; b. The freezing was answered by the so-annoying "you must reinstall Windows".&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; c. When I got home I realized that the battery didn't work anymore!!! When I sent it to the lab, the battery was still able to provide me with ~2 hours of work. Now I got it back completely broken: 0 juice, 0 recharge!!!&lt;/p&gt; &lt;p&gt;5. I sent it back to the lab, got it back after again almost 3 weeks, with the even more frustrating answer that the warranty is not valid for batteries. I talked to the lab director, but bumped into a solid wall.&lt;/p&gt; &lt;p&gt;6. Last night I reinstalled Windows. Guess what - when I worked with it now it got frozen once again...&lt;/p&gt; &lt;p&gt;I rest my case...&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-6961728135508383528?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/6961728135508383528/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=6961728135508383528' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/6961728135508383528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/6961728135508383528'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/09/why-i-urge-you-to-not-buy-lg-laptop-in.html' title='Why I urge you to NOT buy an LG laptop in Israel !!!'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-3886054162450814576</id><published>2007-08-30T17:52:00.001+03:00</published><updated>2007-08-30T17:56:16.042+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='code'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>Running the same application as Windows Application and Console Application</title><content type='html'>&lt;p&gt;&lt;/p&gt; &lt;p&gt;Say you have a Windows Application (i.e. with GUI and all), and you want to add to it the option to be executed as a Console Application as well. Here are the two steps necessary:&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;h3&gt;1. Adding Console Application support&lt;/h3&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;You must create your application as a Windows Application. Then open the Project Properties, and under the Application tab set the "Output type" to "Console Application". Once this is set, you must update your Main function to support dual application types. By default, when you create your application as a Windows application, your Main looks like this:&lt;/p&gt; &lt;p&gt;&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;static&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;void&lt;/span&gt; Main(&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt;[] args)&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: rgb(43,145,175)"&gt;Application&lt;/span&gt;.EnableVisualStyles();&lt;br /&gt;    &lt;span style="color: rgb(43,145,175)"&gt;Application&lt;/span&gt;.SetCompatibleTextRenderingDefault(&lt;span style="color: rgb(0,0,255)"&gt;false&lt;/span&gt;);&lt;br /&gt;    &lt;span style="color: rgb(43,145,175)"&gt;Application&lt;/span&gt;.Run(&lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;Form1&lt;/span&gt;());&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;To support both Console Application and Windows Application, you must change it. For example, you can decide that if it receives as sole argument the string "OpenForm" it will open as a Windows Application, otherwise as a simple Console Application (in which case you'll probably want to take care of the arguments). So you should change your Main as so:&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;static&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;void&lt;/span&gt; Main(&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt;[] args)&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; (args.Length == 1 &amp;amp;&amp;amp; args[0] == &lt;span style="color: rgb(163,21,21)"&gt;"OpenForm"&lt;/span&gt;)&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: rgb(43,145,175)"&gt;Application&lt;/span&gt;.EnableVisualStyles();&lt;br /&gt;        &lt;span style="color: rgb(43,145,175)"&gt;Application&lt;/span&gt;.SetCompatibleTextRenderingDefault(&lt;span style="color: rgb(0,0,255)"&gt;false&lt;/span&gt;);&lt;br /&gt;        &lt;span style="color: rgb(43,145,175)"&gt;Application&lt;/span&gt;.Run(&lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;Form1&lt;/span&gt;());&lt;br /&gt;    }&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;else&lt;br /&gt;&lt;/span&gt;    {&lt;br /&gt;        &lt;span style="color: rgb(0,128,0)"&gt;// TODO: Take care of arguments&lt;br /&gt;&lt;/span&gt;        &lt;span style="color: rgb(43,145,175)"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: rgb(163,21,21)"&gt;"This is a console application"&lt;/span&gt;);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;h3&gt;2. Remove the annoying background console&lt;/h3&gt;&lt;br /&gt;&lt;p&gt;The above code is nice, but has one annoying side-effect - when you open the application as a Windows Application, you constantly have a console open in the background (closing it will close your form). To work around this you must reopen the application (i.e. creating a new process) with the console hidden. This is done as so:&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;static&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;void&lt;/span&gt; Main(&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt;[] args)&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; (args.Length == 0)&lt;br /&gt;    {                                &lt;br /&gt;        &lt;span style="color: rgb(43,145,175)"&gt;Process&lt;/span&gt; current = &lt;span style="color: rgb(43,145,175)"&gt;Process&lt;/span&gt;.GetCurrentProcess();&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; fileName = current.MainModule.FileName;&lt;br /&gt;        &lt;span style="color: rgb(43,145,175)"&gt;ProcessStartInfo&lt;/span&gt; si = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;ProcessStartInfo&lt;/span&gt;(fileName, &lt;span style="color: rgb(163,21,21)"&gt;"OpenForm"&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;        si.CreateNoWindow = &lt;span style="color: rgb(0,0,255)"&gt;true&lt;/span&gt;;&lt;br /&gt;        si.RedirectStandardError = &lt;span style="color: rgb(0,0,255)"&gt;true&lt;/span&gt;;&lt;br /&gt;        si.RedirectStandardOutput = &lt;span style="color: rgb(0,0,255)"&gt;true&lt;/span&gt;;&lt;br /&gt;        si.UseShellExecute = &lt;span style="color: rgb(0,0,255)"&gt;false&lt;/span&gt;;&lt;br /&gt;        &lt;span style="color: rgb(43,145,175)"&gt;Process&lt;/span&gt;.Start(si);&lt;br /&gt;    }&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;else&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; (args.Length == 1 &amp;amp;&amp;amp; args[0] == &lt;span style="color: rgb(163,21,21)"&gt;"OpenForm"&lt;/span&gt;)&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: rgb(43,145,175)"&gt;Application&lt;/span&gt;.EnableVisualStyles();&lt;br /&gt;        &lt;span style="color: rgb(43,145,175)"&gt;Application&lt;/span&gt;.SetCompatibleTextRenderingDefault(&lt;span style="color: rgb(0,0,255)"&gt;false&lt;/span&gt;);&lt;br /&gt;        &lt;span style="color: rgb(43,145,175)"&gt;Application&lt;/span&gt;.Run(&lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;Form1&lt;/span&gt;());&lt;br /&gt;    }&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;else&lt;br /&gt;&lt;/span&gt;    {&lt;br /&gt;        &lt;span style="color: rgb(0,128,0)"&gt;// TODO: Take care of arguments&lt;br /&gt;&lt;/span&gt;        &lt;span style="color: rgb(43,145,175)"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: rgb(163,21,21)"&gt;"This is a console application"&lt;/span&gt;);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;h5&gt;Explanation:&lt;/h5&gt;&lt;br /&gt;&lt;p&gt;The assumption is that if you want the application to run as a Windows Application, it doesn't need any argument (though this could also be done easily if required). So if the application starts with no arguments, it will create a new process of itself (through the MainModule we extract the running process' file name), but this time with no console in the background (all the settings on the&amp;nbsp;&lt;span style="color: rgb(43,145,175)"&gt;ProcessStartInfo&lt;/span&gt; object). This time, it is called with an argument that knows to load the form (the "OpenForm" argument). &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The result is an application that can be run both as Windows Application and Console Application. When you run it as a Windows Application there is a console that opens and closes immediately in the background, but that's all.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;Thanks to &lt;a href="http://amibar.blogspot.com/"&gt;Ami Bar&lt;/a&gt;&amp;nbsp;for helping me with the second step. &lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-3886054162450814576?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/3886054162450814576/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=3886054162450814576' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/3886054162450814576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/3886054162450814576'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/08/running-same-application-as-windows.html' title='Running the same application as Windows Application and Console Application'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-6741969340762508795</id><published>2007-08-30T15:21:00.001+03:00</published><updated>2007-08-30T15:21:09.668+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='code'/><title type='text'>Maintainability</title><content type='html'>&lt;p&gt; &lt;p&gt;A short while ago Oren Eini stated that in his opinion, &lt;a href="http://ayende.com/Blog/archive/2007/08/10/The-only-metric-that-counts-Maintainability.aspx"&gt;the only metric that counts is Maintainability&lt;/a&gt;. He even gave &lt;a href="http://ayende.com/Blog/archive/2007/08/10/How-to-measure-maintainability.aspx"&gt;an excellent way to measure it&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&lt;/p&gt;;-)&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;Ever since I read these two posts, I've been trying to find ways to concretely prove him wrong. The farthest I got was with Performance, where you may have good reasons to improve performance at the expense of harming maintainability. But in good code, this is done only if the improved performance are part of the requirement. In this case, you've got to measure the code compared to some other alternative that still meets the requirement - leaving you once again to measure maintainability only.&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;My tiny addition to Oren's statement would be - as long as the requirements are fulfilled.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-6741969340762508795?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/6741969340762508795/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=6741969340762508795' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/6741969340762508795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/6741969340762508795'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/08/maintainability.html' title='Maintainability'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-4872643714781821271</id><published>2007-08-26T15:58:00.001+03:00</published><updated>2007-08-26T15:58:12.829+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>The C# ?? operator</title><content type='html'>I needed the &lt;a href="http://msdn2.microsoft.com/en-us/library/ms173224(VS.80).aspx"&gt;C# ?? operator&lt;/a&gt; today. This operator returns the left-hand operand if it's not null or the right-hand operand otherwise. I remembered it had the ? sign in it, but couldn't remember the exact syntax. Anyway - I'm keeping it here in my blog for the next time... &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-4872643714781821271?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/4872643714781821271/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=4872643714781821271' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/4872643714781821271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/4872643714781821271'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/08/c-operator.html' title='The C# ?? operator'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-6237433775253953877</id><published>2007-08-23T17:56:00.001+03:00</published><updated>2007-08-23T17:56:36.195+03:00</updated><title type='text'>A possible improvement to my Google Image Search API</title><content type='html'>&lt;p&gt;I discovered today &lt;a href="http://www.waset.org/pwaset/v21/v21-67.pdf"&gt;the following article&lt;/a&gt;, which mentions &lt;a href="http://www.codeproject.com/cs/library/google_image_search_api.asp"&gt;my API&lt;/a&gt;. An interesting approach they propose is, if I understand correctly, to use some common .NET class to load the HTML, and somehow extract the images from the HTML. When I wrote the API, some 2-3 years ago, I searched for such a thing but didn't find any - maybe I missed it?&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt; &lt;p&gt;If this works, it can remove completely the API's major liability, which is the dependence on the regular expressions. Right now, the API parses the HTML response returned by Google and when the format of this response is changed - the whole thing breaks. On average, since I initially published the API, the response format changed 1-2 times a year.&lt;/p&gt; &lt;p&gt;&lt;/p&gt;The downside, of course, is performance - loading the whole HTML will always be much more CPU and memory intensive than using a regex. Yet, for most applications I guess it's a price that can be paid.&lt;/p&gt; &lt;p&gt;&lt;/p&gt;Once I have a few spare hours I'll check it out. Or maybe next time Google change the response format and I need to dig into it again. We'll see. &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-6237433775253953877?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/6237433775253953877/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=6237433775253953877' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/6237433775253953877'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/6237433775253953877'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/08/possible-improvement-to-my-google-image.html' title='A possible improvement to my Google Image Search API'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-1698693751259813465</id><published>2007-08-23T16:16:00.001+03:00</published><updated>2007-08-23T16:16:18.886+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='musings'/><category scheme='http://www.blogger.com/atom/ns#' term='code'/><title type='text'>Each line of code should do one thing</title><content type='html'>&lt;p&gt;I was writing some code today that looks like this:&lt;/p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;int&lt;/span&gt; counter = 0;&lt;br /&gt;&lt;span style="color: rgb(0,0,255)"&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;while&lt;/span&gt; (&lt;span style="color: rgb(0,128,0)"&gt;/* some condition */&lt;/span&gt;)&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: rgb(0,128,0)"&gt;// Do some formatting&lt;br /&gt;&lt;/span&gt;    counter++;&lt;br /&gt;    FormattingProcessStatus(counter);&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/p&gt;Now I could have done it differently like so:&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;int&lt;/span&gt; counter = 0;&lt;br /&gt;&lt;span style="color: rgb(0,0,255)"&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;while&lt;/span&gt; (&lt;span style="color: rgb(0,128,0)"&gt;/* some condition */&lt;/span&gt;)&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: rgb(0,128,0)"&gt;// Do some formatting&lt;br /&gt;&lt;/span&gt;    FormattingProcessStatus(++counter);&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;which would have "saved" me one line of code. I hate this - I always have. Ever since I started learning C/C++ (over a decade ago) and while trying to solve an exercise discovered a situation where two different compilers generated different results. But today, for the first time, I understood why I hate it so much - it's against a very basic rule that EACH LINE OF CODE SHOULD DO ONE THING.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;This is a very simple rule I don't remember having read anywhere, but it's the basis for readable code. Writing code, and even more so - reading code, requires a lot of brain effort. You need to be able to see the whole architecture, and how that particular object and method fits in. Sometimes you need to keep a whole stack of variables (state) in mind to really understand what's going on, etc. The difference between having to read a line that does one single thing and reading a line that does more - is very big, and complicates the reading of the code exponentially.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;So if you want your code to be readable - start by making sure each line does exactly one thing!&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-1698693751259813465?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/1698693751259813465/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=1698693751259813465' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/1698693751259813465'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/1698693751259813465'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/08/each-line-of-code-should-do-one-thing.html' title='Each line of code should do one thing'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-8315409521973576453</id><published>2007-08-23T14:38:00.001+03:00</published><updated>2007-08-23T14:38:53.371+03:00</updated><title type='text'>Fighting car accidents - my five cents</title><content type='html'>&lt;p&gt; &lt;p&gt;Recently a family was torn apart when a truck driver smashed into a car, killing the father an daughter and injuring the wife and son. The truck driver had a history of over 190 (!!!)&amp;nbsp; traffic convictions !!!!!!!&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;Of course, this made a lot of noise, and many people keep asking how someone like that still drives, where have the judges left their sharp brains while judging his cases, etc. &lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;The thing is that there is no concrete incentive to restrain these mad-men. A thing that could help would be to change the system completely - instead of having the insurance policy made on&amp;nbsp;a &lt;em&gt;per-car basis&lt;/em&gt;, make &lt;em&gt;per-driver&lt;/em&gt;. That is, if I have a driving insurance, it would be valid no matter whose car I drive (much like already exists for mechanics). In addition, all traffic convictions should be made publicly available. The result would be that companies would avoid hiring people with many convictions - because their insurance policies are more expensive and they are dangerous.&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;The rules of the market will be such that dangerous drivers will have a really hard time to find jobs (especially when the job involves driving a company vehicle), and that, ladies and gentlemen, is one hell of an incentive!&lt;/p&gt; &lt;p&gt;&lt;/p&gt;If course, it's not without flaws, but I think it's worth being investigated further.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-8315409521973576453?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/8315409521973576453/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=8315409521973576453' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/8315409521973576453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/8315409521973576453'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/08/fighting-car-accidents-my-five-cents.html' title='Fighting car accidents - my five cents'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-8966290240362228595</id><published>2007-08-23T14:29:00.001+03:00</published><updated>2007-08-23T14:29:44.129+03:00</updated><title type='text'>Marketing: How to give your clients something valuable without any costs</title><content type='html'>&lt;p&gt; &lt;p&gt;Yesterday I got a letter from &lt;a href="http://www.orange.co.il"&gt;Orange&lt;/a&gt;, saying something that reads more or less like this:&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;"Dear Ilan Assayag,&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;We are approaching the birthday of your client-ship. On August 21, you will be our client for X years. As such, we would like to give you a present you will appreciate. Therefore, during the whole day of August 21, you can talk to anyone on our network for FREE. That's right, on August 21 you won't pay for any conversation to Orange users!!!&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;bla, bla, bla..."&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt;The thing is - I got this letter on August 22...&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-8966290240362228595?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/8966290240362228595/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=8966290240362228595' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/8966290240362228595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/8966290240362228595'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/08/marketing-how-to-give-your-clients.html' title='Marketing: How to give your clients something valuable without any costs'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-1680303908784562842</id><published>2007-08-23T14:23:00.001+03:00</published><updated>2007-08-23T14:23:27.065+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><title type='text'>WITH keyword in SQL</title><content type='html'>&lt;p&gt;A feature I didn't know in SQL 2005: WITH can be used to create ad-hoc table-like entities within a query (they call it CTE for Common Table Expression). Check it out &lt;a href="http://msdn2.microsoft.com/en-us/library/ms190766.aspx"&gt;here&lt;/a&gt; and &lt;a href="http://www.databasejournal.com/features/mssql/article.php/3502676"&gt;here&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/15758573-1680303908784562842?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/1680303908784562842/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=1680303908784562842' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/1680303908784562842'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/1680303908784562842'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/08/with-keyword-in-sql.html' title='WITH keyword in SQL'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-141861956484895440</id><published>2007-08-22T15:40:00.001+03:00</published><updated>2007-08-22T15:40:46.754+03:00</updated><title type='text'>The most hilarious academic paper ever...</title><content type='html'>&lt;p&gt;It's pretty old, but I discovered it only a few days ago. Some of Israel's brightest minds (such as &lt;a href="http://www.faculty.idc.ac.il/schocken/"&gt;Shimon Schocken&lt;/a&gt;&amp;nbsp;- former dean of the the &lt;a href="http://www.idc.ac.il/cs"&gt;Efi Arazi School of Computer Science&lt;/a&gt; at the &lt;a href="https://www.idc.ac.il/"&gt;Interdisciplinary Center Hertzlia&lt;/a&gt;&amp;nbsp;and &lt;a href="http://en.wikipedia.org/wiki/Yossi_Vardi"&gt;Yossi Vardi&lt;/a&gt;&amp;nbsp;- one of the most prominent hi-tech entrepreneurs and founder of tens of companies) joined forces to write a technical paper claiming that &lt;a href="http://www.notes.co.il/shimon/user/SNAP.pdf"&gt;Snails Are Faster Than ADSL&lt;/a&gt;. The title is funny, the content is hilarious - take the time to read it and enjoy yourself!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-141861956484895440?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/141861956484895440/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=141861956484895440' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/141861956484895440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/141861956484895440'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/08/most-hilarious-academic-paper-ever.html' title='The most hilarious academic paper ever...'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-8899969197963169948</id><published>2007-08-05T12:02:00.001+03:00</published><updated>2007-08-05T12:02:50.408+03:00</updated><title type='text'>Getting the system uptime in Windows</title><content type='html'>&lt;p&gt; &lt;p&gt;Here's something I often need, especially when I need to find out when/why some server rebooted...&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;To get the system uptime, type this:&lt;/p&gt; &lt;p&gt;&lt;/p&gt;&lt;code&gt;systeminfo | find "System Up Time:" &lt;/code&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;And in general, looking at the results of&amp;nbsp;&lt;code&gt;systeminfo&lt;/code&gt; is pretty interesting as well, showing stuff like product ID, uptime, type of processor(s), system directory, language and regional settings, physical memory and page file settings, installed hotfixes, basic network parameters.&lt;/p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-8899969197963169948?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/8899969197963169948/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=8899969197963169948' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/8899969197963169948'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/8899969197963169948'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/08/getting-system-uptime-in-windows.html' title='Getting the system uptime in Windows'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-6339710293486708163</id><published>2007-07-26T15:56:00.001+03:00</published><updated>2007-07-26T15:56:50.191+03:00</updated><title type='text'>Replacing dates to sortable strings in SQL</title><content type='html'>&lt;p&gt; &lt;p&gt;Try this:&lt;/p&gt; &lt;p&gt;&lt;/p&gt;&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;select&lt;/span&gt; &lt;span style="color: rgb(255,0,255)"&gt;replace&lt;/span&gt;&lt;span style="color: rgb(128,128,128)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255,0,255)"&gt;replace&lt;/span&gt;&lt;span style="color: rgb(128,128,128)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255,0,255)"&gt;convert&lt;/span&gt;&lt;span style="color: rgb(128,128,128)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;nvarchar&lt;/span&gt;&lt;span style="color: rgb(128,128,128)"&gt;(&lt;/span&gt;19&lt;span style="color: rgb(128,128,128)"&gt;),&lt;/span&gt;@Date&lt;span style="color: rgb(128,128,128)"&gt;,&lt;/span&gt;120&lt;span style="color: rgb(128,128,128)"&gt;),&lt;/span&gt; &lt;span style="color: rgb(255,0,0)"&gt;':'&lt;/span&gt;&lt;span style="color: rgb(128,128,128)"&gt;,&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;''&lt;/span&gt;&lt;span style="color: rgb(128,128,128)"&gt;),&lt;/span&gt; &lt;span style="color: rgb(255,0,0)"&gt;' '&lt;/span&gt;&lt;span style="color: rgb(128,128,128)"&gt;,&lt;/span&gt; &lt;span style="color: rgb(255,0,0)"&gt;'_'&lt;/span&gt;&lt;span style="color: rgb(128,128,128)"&gt;)&lt;/span&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-6339710293486708163?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/6339710293486708163/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=6339710293486708163' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/6339710293486708163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/6339710293486708163'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/07/replacing-dates-to-sortable-strings-in.html' title='Replacing dates to sortable strings in SQL'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-965720242878402160</id><published>2007-07-23T12:24:00.001+03:00</published><updated>2007-07-23T12:24:13.278+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='wtf'/><title type='text'>Yet another Windows WTF</title><content type='html'>&lt;p&gt; &lt;p&gt;I am now working on a brand-new machine, running Windows XP 64 bit, with 4GB of physical memory. Being a big fan of hibernation, I wanted to set my system to support it. Guess what - it's not supported!&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;A quick check on Google showed me this:&lt;/p&gt; &lt;p&gt;"&lt;/p&gt; &lt;p&gt;This issue occurs because hibernation is disabled on computers that have more than 4 GB of RAM.&lt;br&gt;Hibernation requires sufficient disk space to contain the contents of the computer's memory. Performance is poor on a computer that has more than 4 GB of memory and that has support for hibernation. Therefore, Microsoft has disabled support for hibernation on such computers.&lt;/p&gt; &lt;p&gt; &lt;p&gt;"&lt;/p&gt; &lt;p&gt;The source, BTW, is from &lt;a href="http://support.microsoft.com/kb/888575"&gt;Microsoft's knowledge base&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;Now you tell me - why do they decide for me what performance is unacceptably poor and what is not? If I have 10GB of ram, I know that hibernation will be slow,&amp;nbsp;and if I choose to use it anyway - it's my decision to take, not MS's!&lt;/p&gt; &lt;p&gt;&lt;/p&gt;I haven't tried the workaround proposed yet, we'll see if it helps... &lt;/p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-965720242878402160?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/965720242878402160/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=965720242878402160' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/965720242878402160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/965720242878402160'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/07/yet-another-windows-wtf.html' title='Yet another Windows WTF'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-8071314556143817111</id><published>2007-07-22T10:24:00.001+03:00</published><updated>2007-07-22T10:24:53.262+03:00</updated><title type='text'>Enabling xp_cmdshell in SQL Server 2005</title><content type='html'>&lt;p&gt; &lt;p&gt;It is already known to every SQL newbie that the system xp_cmdshell stored procedure is a huge hole in SQL security. Basically, it allows anyone with permissions to run it to be able to execute shell commands on the SQL machine. To provide a more secure system, in SQL 2005, this stored procedure is not available by default (unlike SQL 2000).&lt;/p&gt; &lt;p&gt;&lt;/p&gt;To enable this stored procedure, you should run the following script (for more details about the permissions required see &lt;a href="http://technet.microsoft.com/en-us/library/ms188787.aspx"&gt;here&lt;/a&gt; and &lt;a href="http://technet.microsoft.com/en-us/library/ms189631.aspx"&gt;here&lt;/a&gt;):&lt;/p&gt; &lt;p&gt;&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;exec&lt;/span&gt; &lt;span style="color: rgb(128,0,0)"&gt;sp_configure&lt;/span&gt; &lt;span style="color: rgb(255,0,0)"&gt;'show advanced options'&lt;/span&gt;&lt;span style="color: rgb(128,128,128)"&gt;,&lt;/span&gt; 1&lt;br /&gt;go&lt;br /&gt;&lt;span style="color: rgb(0,0,255)"&gt;reconfigure&lt;br /&gt;&lt;/span&gt;go&lt;br /&gt;&lt;span style="color: rgb(0,0,255)"&gt;exec&lt;/span&gt; &lt;span style="color: rgb(128,0,0)"&gt;sp_configure&lt;/span&gt; &lt;span style="color: rgb(255,0,0)"&gt;'xp_cmdshell'&lt;/span&gt;&lt;span style="color: rgb(128,128,128)"&gt;,&lt;/span&gt; 1&lt;br /&gt;go&lt;br /&gt;&lt;span style="color: rgb(0,0,255)"&gt;reconfigure&lt;br /&gt;&lt;/span&gt;go&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;REMEMBER - this is extremely dangerous and exposes your server to a wide variety of attacks, so be careful!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-8071314556143817111?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/8071314556143817111/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=8071314556143817111' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/8071314556143817111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/8071314556143817111'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/07/enabling-xpcmdshell-in-sql-server-2005.html' title='Enabling xp_cmdshell in SQL Server 2005'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-5717308708735152947</id><published>2007-07-19T12:26:00.001+03:00</published><updated>2007-07-19T12:26:55.768+03:00</updated><title type='text'>New Israeli Blogger - Ami Bar</title><content type='html'>&lt;p&gt;I strongly recommend you to check out my friend and colleague, &lt;a href="http://amibar.blogspot.com/"&gt;Ami Bar&lt;/a&gt;'s, new blog. He's just started, but now that we are once again working together I intend to push him into blogging as much as possible. Believe me - this guy knows stuff you'll want to know!&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;Just to show you why, check out his excellent &lt;a href="http://www.codeproject.com/cs/threads/smartthreadpool.asp"&gt;SmartThreadPool&lt;/a&gt; on Codeproject.&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt;Good luck, Ami, and may the Schwartz be with you! &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-5717308708735152947?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/5717308708735152947/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=5717308708735152947' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/5717308708735152947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/5717308708735152947'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/07/new-israeli-blogger-ami-bar.html' title='New Israeli Blogger - Ami Bar'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-3806409503871841731</id><published>2007-07-18T17:28:00.001+03:00</published><updated>2007-07-18T17:30:33.896+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='registry'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='connection'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='hack'/><title type='text'>Changing the number of maximum Internet connections</title><content type='html'>&lt;p&gt;&lt;/p&gt; &lt;p&gt;I know it's an old story, but every time I need it I have to go and search for this information, so I'm posting it here for later reference.&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;For a reason I don't know (and don't really care), Windows limits the number of concurrent Internet connection available (with XP I think you get 2 concurrent connections in HTTP 1.0 and 4 in HTTP 1.1).&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;With contemporary computers and the bandwidths of these days, this limitation is archaic to say the least.&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;So, if you need to be able to handle more simultaneous connections, you just need to add two entries to the registry. To simplify it, just copy the following lines to a file with a .reg extension and then double-click it. It will change the configuration to allow 50 simultaneous connections ;-)&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#000000"&gt;Windows Registry Editor Version 5.00 &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#000000"&gt;[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings]&lt;br&gt;"MaxConnectionsPerServer"=dword:00000032&lt;br&gt;"MaxConnectionsPer1_0Server"=dword:00000032&lt;/font&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-3806409503871841731?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/3806409503871841731/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=3806409503871841731' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/3806409503871841731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/3806409503871841731'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/07/changing-number-of-maximum-internet.html' title='Changing the number of maximum Internet connections'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-5722259228225416208</id><published>2007-06-26T16:10:00.001+03:00</published><updated>2007-06-26T16:10:18.324+03:00</updated><title type='text'>Where does CHKDSK hide its log?</title><content type='html'>&lt;p&gt;I haven't been blogging for over two months - it's been busy. More on this, perhaps, in another post.&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;Today I'd like to complaint about something that's bothered me for years - where does &lt;a href="http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/chkdsk.mspx?mfr=true"&gt;CHKDSK&lt;/a&gt; hide its log file??? I purposely added a link to the utility, because even on the formal help page there is no information about that. The thing is that more often than not, you will run chkdsk at a time where you don't need the computer, because it could take a while (one hour in my case). So even if you remain next to the computer - you might miss the few seconds it gives you to view the results, and then you're on your own. Go figure where they're hiding this damn log file! Do I have bad sectors on my hard drive? Yes! No! Perhaps...&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;Every time I run chkdsk I end up finding the actual log file, but it always takes me a while to remember where to find it.&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;Anyway, the simplest way to see the results of chkdsk is to check it out in the Event Viewer (Control Panel ==&amp;gt; Administrative Tools ==&amp;gt; Event Viewer). It's very "smartly" located under the "Application" group (putting it under "System" would make it too easy to locate I guess). There you have to search for an "Information" record with source "Winlogon".&lt;/p&gt; &lt;p&gt;&lt;/p&gt;Who said Windows XP isn't user-friendly? &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-5722259228225416208?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/5722259228225416208/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=5722259228225416208' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/5722259228225416208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/5722259228225416208'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/06/where-does-chkdsk-hide-its-log.html' title='Where does CHKDSK hide its log?'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-8806703569262310798</id><published>2007-04-27T16:43:00.001+03:00</published><updated>2007-04-27T17:01:55.378+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='genetic algorithms'/><category scheme='http://www.blogger.com/atom/ns#' term='tamar'/><category scheme='http://www.blogger.com/atom/ns#' term='musings'/><title type='text'>Thoughts about evolutionary algorithms</title><content type='html'>&lt;p&gt;&lt;p&gt;WARNING: This post is likely to be rather long, full of musings with very little concrete data to back them up. I hope it will interest you, but I don't promise anything...&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Today I was playing with my little girl, Tamar (6 months), when some questions started to form in my head. When you think of the ultimate goal of each living species, it's rather simple: ensure the existence of the species for as long as possible. This is obtained by "mechanisms" such as reproduction, &lt;a href="http://en.wikipedia.org/wiki/Survival_of_the_fittest"&gt;survival of the fittest&lt;/a&gt;, randomization mechanisms (e.g. mutations, weather changes, etc.) and numerous other techniques Mother Nature has to offer.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Scientists have been trying to simulate some of these mechanisms for various purposes for half a century, with variant degrees of success. &lt;a href="http://en.wikipedia.org/wiki/Genetic_algorithm"&gt;Genetic Algorithms&lt;/a&gt; are the most widely known of them, and have been extensively researched in the past 20 years or so. The basic idea is that you have some objective function you want to optimize, and a large set of parameters to tune. The assumption is that the time it takes to compute every possible set of parameters is computationally prohibitive (unless you're willing to wait 10,000 years until you get the answer). The tuning of the parameters is done by applying operations known in genetics, such as reproduction or crossover (taking some parameters from one solution and some from another - creating a new solution in its own), mutation (changing some parameter(s) through some randomized mechanism in order to create a new solution), selection (each iteration keeps the best solution sets from previous iterations), and variants thereof. The main issue I would like focus on, is that there is always one objective function, and every solution (i.e. set of parameters) is judged by the score it acquires at that objective function.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Now let's get back to my little girl. As I said, as far as Nature is concerned, my daughter's ultimate purpose, like every human being, is to ensure the human race will persist for eternity. However, even Mother Nature knew that this is too big a goal to be of any concrete value. Therefore, it has set an infinite amount of sub-goals in our life, each of which bringing us closer to the ultimate global goal of Human Kind (be it in a minuscule amount). These sub-goals are, for example, to reproduce, which requires (as sub-sub-goal) to meet and get acquainted with males, which requires among other thing, to know how to walk (that's already a sub-sub-sub-goal), which has a precondition of being able to crawl (sub-sub-sub-sub-goal I think).&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;So Tamar's objective function, for our discussion, is to learn how to crawl. Not thinking about any of these things, I knew she needs to learn how to crawl (and frankly I wanted her to get tired, but that's even more besides the point), so I set her on a matress, with a blinking toy in front of her to attract her attention.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;(I told you it would be long... don't lose patience, we're getting there...)&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;If we get back to Genetic Algorithms, the objective function of our problem, is to learn how to crawl (say we can give a score for the crawling quality). However, to reach this goal, I created a new objective function, apparently completely unrelated to the real goal - reaching this annoying blinking toy. She could end up reaching it in a million of ways, or never being able to reach it on her own (which is actually what happened, since she kept crawling backwards), but at the end of the day, her mind and body would have learned some new things that will, eventually, serve her to reach that real goal (crawling). In other words - I created a synthetic objective function, with only some vague relationship with the real objective function, with the express intent of improving the chances of, on the long run, optimizing the real objective function (crawling).&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Now my question is - how could this approach be applied to Genetic Algorithms in general? How can we synthesize, throughout a GA's run, new objective functions, which will help the GA to reach the ultimate objective function?&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Another rather different question that comes to mind - Tamar didn't reach the blinking toy, because she started crawling backward. I'm no specialist in these matter, but I allow myself to assume that at some level, she has learned something from this experience. Somewhere in her brain, something has marked that the movements she did were wrong (to reach her goal, i.e. get the toy), and that she should find another way. She will do the same movements once, twice, maybe thirty times - in the end she will grasp that the solution must be found elsewhere. As far as I know, Genetic Algorithms (and all their variants) are always concerned with "good" solutions (i.e. solutions that get good scores on the objective function). I don't think there is any algorithm that knows how to keep track of "bad" solutions, in order to avoid getting back to solutions close to that. A possible approach could be to run a "positive" GA, which strives to improve the objective function, but always keep track of the "bad" solutions. Whenever one the new generation's items is too similar to one of the bad solutions (or some representative of the bad guys), it is disposed of without even checking the objective function, and a new one is created instead. Of course, there is the risk of missing some good solutions that are accidentally similar to the bad ones, but in case that computing the objective function is an expensive task, it may be worth the tradeoff.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-8806703569262310798?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/8806703569262310798/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=8806703569262310798' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/8806703569262310798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/8806703569262310798'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/04/thoughts-about-evolutionary-algorithms.html' title='Thoughts about evolutionary algorithms'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-8663748223202341185</id><published>2007-04-26T19:47:00.001+03:00</published><updated>2007-04-26T20:15:15.149+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gal'/><category scheme='http://www.blogger.com/atom/ns#' term='tamar'/><category scheme='http://www.blogger.com/atom/ns#' term='pictures'/><category scheme='http://www.blogger.com/atom/ns#' term='family'/><title type='text'>Trying Photobucket</title><content type='html'>I'm sick of not being able to upload pictures to my blog. So I've decided to try out &lt;a href="http://www.photobucket.com"&gt;Photobucket&lt;/a&gt;. We'll see how it goes...&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://photobucket.com" target="_blank"&gt;Tamar doing a face&lt;img alt="Photo Sharing and Video Hosting at Photobucket" src="http://i173.photobucket.com/albums/w78/ilanking/63aba286.jpg" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://photobucket.com" target="_blank"&gt;Tamar&lt;img alt="Photo Sharing and Video Hosting at Photobucket" src="http://i173.photobucket.com/albums/w78/ilanking/f7367fb9.jpg" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://photobucket.com" target="_blank"&gt;Gal dancing at her 3rd birthday&lt;img alt="Photo Sharing and Video Hosting at Photobucket" src="http://i173.photobucket.com/albums/w78/ilanking/9fec704f.jpg" border="0" /&gt;&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/15758573-8663748223202341185?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/8663748223202341185/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=8663748223202341185' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/8663748223202341185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/8663748223202341185'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/04/trying-photobucket.html' title='Trying Photobucket'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-2111494459556076310</id><published>2007-04-17T14:39:00.001+03:00</published><updated>2007-04-17T15:32:12.681+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='israel'/><category scheme='http://www.blogger.com/atom/ns#' term='car'/><category scheme='http://www.blogger.com/atom/ns#' term='globes'/><category scheme='http://www.blogger.com/atom/ns#' term='taxes'/><category scheme='http://www.blogger.com/atom/ns#' term='leasing'/><title type='text'>Leasing</title><content type='html'>&lt;p&gt;If you live in Israel, and especially if you're a high-tech professional, you are probably aware of the big noise around the expected change in taxes for leasing cars.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Globes just published a great read - &lt;a href="http://www.globes.co.il/serve/globes/docview.asp?did=1000202565"&gt;an article that compares this issue to some other, more understandable yet completely virtual scenario&lt;/a&gt;. Even if you don't subscribe to the point of view that the taxes should indeed be increased, it's still fun to read.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Another interesting read on this subject is a site by the same author (and others), &lt;a href="http://whynotleasing.org/"&gt;which explains why the taxes should indeed be increased&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;If, like many others, you're trying to figure out the actual monetary value of using a leased car, &lt;a href="http://www.drushim.co.il/Leasing%20Calculator%20-%20drushim.co.il.xls"&gt;check this calculator out&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Lastly, although I understand all the reasons why the taxes should indeed be increased, I'm still a big fan of leasing cars. I'm a complete car-dummy, and the feeling that whatever the problem, there is someone who will come within a couple of hours to fix it, is worth a lot more than money. So IMHO, if indeed there is a glitsh in the current tax calculation, then justice must be done and the taxes should be updated. I still, however, want to keep the option of using a leased car (as an employee), without being pointed at as if I were a danger to society.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-2111494459556076310?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/2111494459556076310/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=2111494459556076310' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/2111494459556076310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/2111494459556076310'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/04/leasing.html' title='Leasing'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-581362099921893843</id><published>2007-04-16T17:47:00.001+03:00</published><updated>2007-04-17T15:31:28.167+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='user experience'/><category scheme='http://www.blogger.com/atom/ns#' term='sql server'/><category scheme='http://www.blogger.com/atom/ns#' term='rantings'/><title type='text'>SQL Server Execution Plan - Rantings...</title><content type='html'>&lt;p&gt;Let me say it outloud: SQL Server Execution Plan SUCKS!&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;In essence, SSEP (I'm too lazy to keep writing the whole name) is supposed to help you analyze how the SQL Engine performed a query (more specifically what optimization decisions were taken) in order to either alter the query and/or the tables to improve performance. As such, SSEP provides you with a nice graphical interface, that shows every element of the execution along with it's relative cost. You can then see more properties for each element, which supposedly will help you better understand it.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;SSEP in SQL2005 has gone through very few changes since SQL2000, and it's a pitty. With a small query, SSEP can help you out - you can easily find the most costly element, analyze it and kill the culprit. With long and complicated queries, however, it's a nightmare. The most prominent issue here is USER EXPERIENCE!!! Let me explain:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;In most cases, the first thing you do when you run SSEP is to search for the most costly sub-query and in that you look for the most costly query element. When you have a long and complicated query (which sometimes is inevitable), you can find yourself "surfing" the execution plan for many long minutes, just searching for the elements of interests, never being actually certain you got them all. You just keep scrolling up/down left/right and back again, trying to get a grasp of what's going on. There is a zooming feature, but it just isn't enough! There is no easy way to navigate through the data and search for specific elements. I mean - come on, would it have been so difficult to add, for example, a list of elements with the main properties (say object name, cost and physical and logical operation), allowing you to sort it and jump from that list to the relevant element in the execution plan?&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Another USER EXPERIENCE issue is that of the data that comes along with each element. Granted, SSEP is aimed at advanced users (usually DBA level), but would it hurt someone to provide some more explanative descriptions?&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Lastly, if you really want to improve the USER EXPERIENCE, you should guide the user (without forcing her hand) to find the real problem as fast as possible. For instance, you could use colors for the elements, such that costly operations would stand out (color table scan in red, index seek in green). Note that these colors should also stand out in the list mentioned above. You could even propose some solutions ad-hoc. For instance, if you see a very costly Bookmark (used to link between indexes and actual data in the tables), you can propose to add an index that will include all the fields required, effectively removing the need for a bookmark (because the engine will read the data directly from the index). There are tons of things you could do to make the user's life easier, and help her finish her job faster, so why not?!?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-581362099921893843?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/581362099921893843/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=581362099921893843' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/581362099921893843'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/581362099921893843'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/04/sql-server-execution-plan-rantings.html' title='SQL Server Execution Plan - Rantings...'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-1391420022843338485</id><published>2007-04-10T15:17:00.001+03:00</published><updated>2007-04-10T18:54:04.741+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='spam'/><category scheme='http://www.blogger.com/atom/ns#' term='mail'/><title type='text'>Spam the spammer!!!</title><content type='html'>&lt;p&gt;I just got a spam mail that made me REALLY angry.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;It's from a company that calls itself Mailmedia. The message itself, however, was sent by a user at the lombardisoftware.com domain (I'm pretty sure that the genuine &lt;a href="http://www.lombardisoftware.com/"&gt;Lombardi&lt;/a&gt; company has nothing to do with this...).&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;What upset me the most with this mail, was the nerve - it was no less than a promotion for businesses to use their services to send spam mails. Yes, that's right - I got a spam mail that is a promotion for a spam company!&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;But that means that there should be some way to communicate with them, right? Unfortunately, there is no website, or email address - I would have been more than happy to spend a few hours setting up my own spamming machine to kill their website or their email address. I would, really! But they weren't that stupid - they only provided an Israeli mobile phone number: &lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;p&gt;&lt;strong&gt;050-5281978&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;p&gt;(Note, I've searched this phone number up in Google and found only one entry in a Gays forum. This guy seems to be searching for &lt;a href="http://www.gogay.co.il/forum/display_message.asp?fid=16&amp;amp;id=603803"&gt;a fatherly type&lt;/a&gt;... I have no idea whether this is genuine, or just another frustrated spamee who wants payback.)&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Now, my request to every Israeli reading this post - please please please - spam this phone number with as many calls as you can. Let them FEEL how annoying it is to be spammed all day long. Let them LOOSE potential clients because the line will always be busy. Make them SUFFER as much as we do from their never ending spam mails.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Be smart: don't forget to HIDE the calling number when you call them (for Orange you must preceed the number with #31#, for HOT you must preceed with *43).&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;DISCLAIMER: Although I really want as many people to join the spammers spamming effort as possible, I take no responsibility whatsoever to any miscomfort, legal or other issues you may encounter as a result of doing as I just asked.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-1391420022843338485?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/1391420022843338485/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=1391420022843338485' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/1391420022843338485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/1391420022843338485'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/04/spam-spammer.html' title='Spam the spammer!!!'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-8845238763995499906</id><published>2007-04-08T12:28:00.001+03:00</published><updated>2007-04-08T12:34:08.748+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='patterns'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><category scheme='http://www.blogger.com/atom/ns#' term='singleton'/><title type='text'>On the superfluousness of the Singleton pattern in .NET</title><content type='html'>&lt;p&gt;We all know the Singleton pattern. It's intent is to "Ensure a class only has one instance, and provide a global point of access to it." (from GOF). There are many possible implementations of it, some are good, others are to be ashamed of. You can find &lt;a href="http://www.yoda.arachsys.com/csharp/singleton.html"&gt;a good review by Jon Skeet&lt;/a&gt;, or on &lt;a href="http://msdn2.microsoft.com/en-us/library/ms998558.aspx"&gt;Patterns and Practices&lt;/a&gt; where you can also find a successful implementation using double-locking mechanism. By the way, the implementation in "Design Patterns in C#" by Steven John Metsker was utterly dissapointing, to say the least.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;But this is all assuming you indeed need a Singleton pattern. If you read the Intent, as defined by the GOF carefully, there is nothing in simply using a static class that does not meet this intent. At the time of writing the Design Patterns book, the GOF didn't have C# or .NET. Back then, they were mostly relying on C++ and Smalltalk. I'm not proficient in Smalltalk, but I know that with C++ there were problems with static and global variables. For instance, it wasn't clear what their order of instantiation would be, nor when the destructors would be called. So when you're working with good old C++, you just have no choice &lt;em&gt;but&lt;/em&gt; to use the Singleton pattern. With .NET, however, things are different. Instantiation of static classes have a clear and deterministic behavior. With destruction, of course, it's different, but most cases where you need a Singleton you'll keep it alive as long as the program is running anyway.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;In the Design Patterns book, there are some other "consequences" which could end up as reasons for using the Singleton pattern instead of simply a static class:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;ol&gt;&lt;li&gt;&lt;em&gt;Permits refinement of operations and representation&lt;/em&gt; - or in other words - a Singleton class can be extended by means of inheritance. Most cases I have encountered, there is no inheritance going on with the Singleton, and if there is, then the actual Singleton is the last in the hierarchy. Even more so - many implementations use &lt;em&gt;sealed classes&lt;/em&gt; either for performance optimizations or simply because the pattern wouldn't work with inherited classes.&lt;/li&gt;&lt;li&gt;&lt;em&gt;Permits a variable number of instances&lt;/em&gt; - or in other words - one day, some 5 years ago, some freaky newby will invent a reason to use multiple instances of the Singleton and you should make it easier for the idiot to do the change. One word: &lt;a href="http://en.wikipedia.org/wiki/You_Ain"&gt;YAGNI&lt;/a&gt; !&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;More flexible than class operations&lt;/em&gt; - same as the 2 previous items&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;ol&gt;&lt;/ol&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;So, why &lt;em&gt;would &lt;/em&gt;you use the Singleton pattern in .NET instead of just a static class?&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;1. &lt;em&gt;Inheritance&lt;/em&gt; - I said in most cases there is no need for it. There is always the exception... You can see one on &lt;a href="http://msmvps.com/blogs/jon.skeet/archive/2006/01/20/singleton-inheritance.aspx"&gt;Jon Skeet's blog&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;p&gt;2. &lt;em&gt;Destruction&lt;/em&gt; - when you want to keep a reference counter of the number of consumers, and somehow destroy it when it's no more in use. Complicated, especially given the non-deterministic destruction of objects in .NET.&lt;/p&gt;&lt;p&gt;3. &lt;em&gt;Other static functionality&lt;/em&gt; - if you need some static functionality that should not cause the actualy 'Singleton' to be created (any call to a static method will cause the ctor to be called). Note that this is also a problem with most of the pattern's implementations, because they rely on a static field/ctor.&lt;/p&gt;&lt;p&gt;4. &lt;em&gt;Parameterized contruction&lt;/em&gt; - this seems to me like the most likely reason to use the Singleton pattern instead of a static class, but here again there is a problem because most of the cleanest implementations rely on the static constructor. The idea here is that sometimes you want the Singleton to be initialized with some parameters, so you can't rely on the paramterless, static ctor.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Now that that's settled, and given the name of my blog - why &lt;em&gt;not&lt;/em&gt; using the Singleton pattern?&lt;/p&gt;&lt;p&gt;1. As a general principle, I like using patterns when they are needed, no more. So the main reason why not, IMHO, is that in most cases it's simply superfluous - you end up spending design/coding/unit testing/qa/debugging/etc time on something you don't need. Smart.&lt;/p&gt;&lt;p&gt;2. Some of the implementations are really clean and neat (see, for example, the 4th in Jon Skeet's list, which is the one I used to use before I understood I don't need it).&lt;/p&gt;&lt;p&gt;3. Inertia - Most of us are still in the C++ state of mind that there is no other way to really "Ensure a class only has one instance, and provide a global point of access to it." .&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-8845238763995499906?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/8845238763995499906/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=8845238763995499906' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/8845238763995499906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/8845238763995499906'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/04/on-superfluousness-of-singleton-pattern.html' title='On the superfluousness of the Singleton pattern in .NET'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-4153291249941702760</id><published>2007-03-28T13:33:00.001+02:00</published><updated>2007-04-08T12:32:43.084+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='funny'/><category scheme='http://www.blogger.com/atom/ns#' term='ynet'/><title type='text'>I don't know what this guy is on - but I want some...</title><content type='html'>&lt;p&gt;&lt;p&gt;This is really hallucinating. If this thing is for real, I want to know what this guy takes - and want some for myself...&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Oren Zarif is one of these people who claim to have exceptional, supernatural and X-Files-like powers. Apparently, he likes to get it really hard. According to YNET, he has contacted &lt;a href="http://en.wikipedia.org/wiki/Mike_Tyson"&gt;Mike Tyson&lt;/a&gt;, proposing a fight. Zarif , weighting 68 kgs, as far from being a boxer talent as one can be, claims to be able to box with his eyes closed. He proposes a one-on-one, with his eyes completely covered. If Zarif loses, he would pay Tyson 5M$. If he wins, Tyson will have to donate the same amount to the US government for the victims of global terror.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;For my English readers, the letter sent to Tyson, in passable English, can be found &lt;a href="http://my.ynet.co.il./pic/sport/28032007/index.htm"&gt;here&lt;/a&gt;. Source - &lt;a href="http://www.ynet.co.il/articles/0,7340,L-3382231,00.html"&gt;YNET&lt;/a&gt;. &lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;WTF ?!?!? &lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-4153291249941702760?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/4153291249941702760/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=4153291249941702760' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/4153291249941702760'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/4153291249941702760'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/03/i-don-know-what-this-guy-is-on-but-i.html' title='I don&amp;#39;t know what this guy is on - but I want some...'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-7078622337030107631</id><published>2007-03-28T12:06:00.001+02:00</published><updated>2007-03-28T12:08:31.767+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='prize'/><category scheme='http://www.blogger.com/atom/ns#' term='contest'/><category scheme='http://www.blogger.com/atom/ns#' term='netflix'/><category scheme='http://www.blogger.com/atom/ns#' term='machine learning'/><title type='text'>A Million Dollar Contest - For Super-Geeks</title><content type='html'>&lt;p&gt;Netflix is a very large (largest?) DVD rental company. One of their most important assets is Cinematch, an in-house developed movie recommendation system. Cinematch's purpose is to predict, based on a user's previous rating of movies, the rating a user would give to other movies. The result, of course, is a recommendation of movies that are most likely to suite the user's taste.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Apparently, Cinematch works pretty well, but the guys at Netflix would like it to work even better. So they came up with the Netflix Prize: encourage developers and researchers to come up with an algorithm that improves the quality of rating prediction of Cinematch significantly enough (at least by 10%), by promising a prize of 1,000,000$. To make it even more interesting, and since the whole contest spans over at least 5 years, there is a yearly prize of 50,000$ which will be given to the best solution each year.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Being a Machine Learning freak, I find this contest GREAT! I also like the rules of the contest a lot. Basically, the winning algorithm will have to be made publicly available at the end of the contest.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;This kind of initiatives are so great because they encourage the development of new concepts and algorithms, which even if they won't win the first prize, might very well be helpful for various other purposes. I think the best comparison is &lt;a href="http://en.wikipedia.org/wiki/Fermat%27s_last_theorem"&gt;Fermat's Last Theorem&lt;/a&gt;. In his will, &lt;a href="http://en.wikipedia.org/wiki/Paul_Wolfskehl"&gt;Paul Wolfskehl&lt;/a&gt; initiated a prize of then 100,000 marks to whomever would be able to prove or disprove Fermat's Last Theorem. This generated a huge interest in the subject, which resulted in an incredibly rich amount of new ideas and whole new areas of mathematics being discovered and researched to this day. I doubt that the Netflix Prize will have the same effect, but I do believe it will give Machine Learning a well-deserved boost.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;As far as Netflix is concerned - they can only win from it. The news about this contest should inevitably increase their exposure. If the contest succeeds, and someone manages to provide significantly better results - it will be worth much more than 1M$ for them. If nobody manages to win the contest, then they can heartily claim to be using the best movies matching algorithm human brain could come up with do date. Either way, it's a win-win situation for them.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;p&gt;It's a very difficult task, but I think I'm going to give it a try, as far as time permits...&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;If you're interested, following are the &lt;a href="http://www.netflixprize.com/rules"&gt;Terms and Conditions in a Nutshell&lt;/a&gt;:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;blockquote&gt;&lt;p&gt;Contest begins October 2, 2006 and continues through at least October 2, 2011. &lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;blockquote&gt;&lt;p&gt;Contest is open to anyone, anywhere (except certain countries listed below). &lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;blockquote&gt;&lt;p&gt;You have to register to enter. &lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;blockquote&gt;&lt;p&gt;Once you register and agree to these Rules, you’ll have access to the Contest training data and qualifying test sets. &lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;blockquote&gt;&lt;p&gt;To qualify for the $1,000,000 Grand Prize, the accuracy of your submitted predictions on the qualifying set must be at least 10% better than the accuracy Cinematch can achieve on the same training data set at the start of the Contest. &lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;blockquote&gt;&lt;p&gt;To qualify for a year’s $50,000 Progress Prize the accuracy of any of your submitted predictions that year must be less than or equal to the accuracy value established by the judges the preceding year. &lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;blockquote&gt;&lt;p&gt;To win and take home either prize, your qualifying submissions must have the largest accuracy improvement verified by the Contest judges, you must share your method with (and non-exclusively license it to) Netflix, and you must describe to the world how you did it and why it works.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;For more elaborated information, check out the &lt;a href="http://www.netflixprize.com/"&gt;Netflix Prize&lt;/a&gt; page. &lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-7078622337030107631?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/7078622337030107631/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=7078622337030107631' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/7078622337030107631'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/7078622337030107631'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/03/million-dollar-contest-for-super-geeks.html' title='A Million Dollar Contest - For Super-Geeks'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-8968536476785646888</id><published>2007-03-28T11:33:00.001+02:00</published><updated>2007-03-28T12:07:48.213+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='yahoo'/><category scheme='http://www.blogger.com/atom/ns#' term='gmail'/><category scheme='http://www.blogger.com/atom/ns#' term='mail'/><category scheme='http://www.blogger.com/atom/ns#' term='ynet'/><title type='text'>Yahoo! Mail to become unlimited in size?</title><content type='html'>&lt;p&gt;According to &lt;a href="http://www.ynet.co.il/articles/0,7340,L-3382157,00.html"&gt;YNET&lt;/a&gt;, Yahoo! announced that as of May 2007 they will gradually update all Yahoo! Mail accounts to unlimited mailbox sizes. I couldn't find any additional source mentioning this, but I trust YNET didn't make this up.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;This isn't surprising, of course. Ever since Google introduced GMail it was obvious that at some point they would announce that the mailbox size has become unlimited. Maybe the surprising thing is that the first company to come with such an announcement is Yahoo!, who's been lagging behind Google with most of the previous advances.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;This is, of course, a very welcome announcement, hopefullly to be followed by all the other main webmail suppliers.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Cool!&lt;/p&gt;&lt;p&gt;&lt;/p&gt;P.S: I think that with this new development, it's time that the ISP's decide whether they want to continue supplying email services to their customers. If they do - then they should dramatically improve the level of their service (speed and mailbox size). Otherwise, they're really making fools of themselves.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-8968536476785646888?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/8968536476785646888/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=8968536476785646888' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/8968536476785646888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/8968536476785646888'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/03/yahoo-mail-to-become-unlimited-in-size.html' title='Yahoo! Mail to become unlimited in size?'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-3108732941083293978</id><published>2007-03-25T11:40:00.001+02:00</published><updated>2007-03-25T11:42:30.475+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='joke'/><title type='text'>Joke By Code</title><content type='html'>&lt;p&gt;I haven't blogged much lately, I know, sorry. Between work, kids, buying a house (!!!!!) and a million other things, I just couldn't find a minute.&lt;/p&gt;&lt;p&gt;Anyway, today I was searching for some good books about SQL Server 2005 programming. I have a lot of experience with SQL 2000, but it's about time I get to know the little baby (who's way past the 'baby' stage and would better be called a teenager) a little more.&lt;/p&gt;&lt;p&gt;So I came accross &lt;b&gt;&lt;a href="http://www.amazon.com/Murachs-SQL-Server-2005-Developers/dp/1890774391/ref=sr_1_69/002-3951175-1071246?ie=UTF8&amp;s=books&amp;amp;amp;qid=1174421791&amp;sr=1-69"&gt;Murach's SQL Server 2005 for Developers&lt;/a&gt;&lt;/b&gt; and like everyone, I started skimming through the &lt;a href="http://www.amazon.com/gp/product/customer-reviews/1890774391/sr=1-69/qid=1174421791/ref=cm_cr_dp_pt/002-5386185-1985603?ie=UTF8&amp;amp;amp;n=283155&amp;s=books&amp;amp;amp;qid=1174421791&amp;sr=1-69"&gt;6 customer reviews&lt;/a&gt;. All reviews were really good, except the last one, which seems to have been written by particularly dissapointed customer. So I decided to have a look at &lt;a href="http://www.amazon.com/gp/discussionboard/discussion.html/ref=cm_rdp_st_rd/002-5386185-1985603?ie=UTF8&amp;amp;ASIN=1890774391&amp;store=yourstore&amp;amp;amp;cdThread=Tx3C7GW7711RT57&amp;reviewID=R3AC0CBLV5B2L3&amp;amp;displayType=ReviewDetail"&gt;the 3 comments to his review&lt;/a&gt;. Here is what I found (quote):&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;SELECT OneHalfBrain&lt;br /&gt;FROM Name&lt;br /&gt;WHERE LName = `Husain'&lt;br /&gt;&lt;/p&gt;&lt;p&gt;results: NULL&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;It made me laugh (the reviewer is called Munawer Husain, so I assume it was meant personally against him, and not in some stupid racist direction).&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-3108732941083293978?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/3108732941083293978/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=3108732941083293978' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/3108732941083293978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/3108732941083293978'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/03/joke-by-code.html' title='Joke By Code'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-117379266179263266</id><published>2007-03-13T16:31:00.000+02:00</published><updated>2007-03-13T14:47:26.837+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dual core'/><category scheme='http://www.blogger.com/atom/ns#' term='matlab'/><title type='text'>Multithreaded Computation Support in Matlab - FINALLY!!!</title><content type='html'>&lt;p&gt;A couple of weeks ago, Mathworks released a new version of Matlab (R2007a). They have, at last, added support for multithreaded computations.&lt;br /&gt;A LOT of entries to my blog come from searches like "&lt;a href="http://www.google.com/search?q=matlab+dual+core"&gt;matlab dual core&lt;/a&gt;", which surprisingly puts &lt;a href="http://ilanas.blogspot.com/2006/04/matlab-memory-leaks-dual-core-cpu-and_26.html"&gt;a post of mine&lt;/a&gt; very high in the results list. The thing is that especially now with the increased usage of dual and quad-core machines, running heavy Matlab computations with a single thread is just a waste of resources. Apparently, the guys at Mathworks were listening to the users, and added support for multi-threaded calculations. It seems to be managed under the hood somehow, and requires changes to the preferences. From the &lt;a href="http://www.mathworks.com/access/helpdesk/help/pdf_doc/matlab/rn.pdf"&gt;release notes&lt;/a&gt;:&lt;/p&gt;&lt;p&gt;"If you run MATLAB on a multiple-CPU system (multiprocessor or multicore), use a new preference to enable multithreaded computation. This can increase MATLAB performance for element-wise and BLAS library computations.&lt;br /&gt;By default the preference is not set, so you must set it to enable multithreaded computation. With the preference enabled, MATLAB automatically specifies the recommended number of computational threads, although you can change that value. On AMD-based Linux platforms, MATLAB supports multithreaded computation, but requires an extra step to change the default BLAS."&lt;/p&gt;&lt;p&gt;Doesn't sound a very nice way to do it, and certainly lacks user control, but it's a start. I didn't upgrade to the new version yet, so I can't talk from experience. Also, the new release seems to include &lt;a href="http://www.mathworks.com/access/helpdesk/help/toolbox/distcomp/index.html?/access/helpdesk/help/toolbox/distcomp/rn/bq0ygte-1.html&amp;amp;http://www.mathworks.com/products/new_products/latest_features.html?s_cid=HP_RH_2007a"&gt;improvements to the Distributed Computing Toolbox&lt;/a&gt;, which sound also very interesting.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-117379266179263266?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/117379266179263266/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=117379266179263266' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/117379266179263266'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/117379266179263266'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/03/multithreaded-computation-support-in.html' title='Multithreaded Computation Support in Matlab - FINALLY!!!'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-117360516470334767</id><published>2007-03-11T11:26:00.000+02:00</published><updated>2007-03-11T11:26:04.796+02:00</updated><title type='text'>Google Image Search API updated (again...)</title><content type='html'>&lt;p&gt;What can I say - the html format was changed again.&lt;br&gt;You can download the complete code from &lt;a href="http://www.codeproject.com/cs/library/google_image_search_api.asp"&gt;my article on CodeProject&lt;/a&gt;.&lt;br&gt;If you just want the update - I just had to change the Regex file, so you can simply replace its content with the following:&lt;/p&gt; &lt;p&gt;&lt;pre&gt;&lt;span color="black"&gt;&lt;br /&gt;imagesRegex: (dyn\x2EImg\x28\x22[^\x22]*\x22,\x22[^\x22]*\x22,\x22(?&amp;lt;code&amp;gt;[^\x22]*)\x22,\x22(?&amp;lt;imgurl&amp;gt;[^\x22]*)\x22,\x22(?&amp;lt;width&amp;gt;[^\x22]*)\x22,\x22(?&amp;lt;height&amp;gt;[^\x22]*)\x22,[^\x29]*)&lt;br /&gt;dataRegex: (?&amp;lt;width&amp;gt;[0-9,]*)\s+x\s+(?&amp;lt;height&amp;gt;[0-9,]*)\s+(pixels\s+){0,1}-\s+(?&amp;lt;size&amp;gt;[0-9,]*)(k)&lt;br /&gt;totalResultsRegex: (?&amp;lt;upperLimit&amp;gt;upperLimit&amp;gt;(\s)*)(?&amp;lt;lastResult&amp;gt;[0-9,]*)([^=])*=(?&amp;lt;maxLimit&amp;gt;maxLimit&amp;gt;(\s)*)(?&amp;lt;totalResultsAvailable&amp;gt;[0-9,]*)&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-117360516470334767?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/117360516470334767/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=117360516470334767' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/117360516470334767'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/117360516470334767'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/03/google-image-search-api-updated-again.html' title='Google Image Search API updated (again...)'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-117276714062702551</id><published>2007-03-01T18:39:00.000+02:00</published><updated>2007-03-01T18:39:00.743+02:00</updated><title type='text'>Is it the end of Internet Freedom? A possible workaround...</title><content type='html'>&lt;p&gt;Politicians are trying to add more and more limits to the freedom and anonymity we enjoy over the Internet. A few months ago, they wanted to force talkbackers to identify themselves - death sentence to talkbacks. Now, they are seriously talking about &lt;a href="http://www.ynet.co.il/articles/0,7340,L-3371099,00.html"&gt;forcing users to identify themselves when using adults websites&lt;/a&gt;.&lt;br&gt;It's a pitty really. Instead of searching for ways to improve the quality of the service they provide us, they try to castrate the Internet into something more manageable (for them). Also, the philosophy behind this law they are trying to pass, is so anti-democratic and anti-privacy that it makes me want to cry. &lt;/p&gt; &lt;p&gt;Anyway, there might be a way around this. Check out &lt;a href="http://tor.eff.org/"&gt;Tor&lt;/a&gt; . It's a technology that basically routes web requests (or any other TCP-based communication) through various nodes in an encrypted form, making it almost impossible to track down the original user. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-117276714062702551?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/117276714062702551/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=117276714062702551' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/117276714062702551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/117276714062702551'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/03/is-it-end-of-internet-freedom-possible.html' title='Is it the end of Internet Freedom? A possible workaround...'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-117268976215881873</id><published>2007-02-28T21:09:00.000+02:00</published><updated>2007-02-28T21:09:22.230+02:00</updated><title type='text'>A Personal Letter to Everyone I Know, Knew, Will Ever Know, Think I Know, Think S/He Knows Me - To EVERYONE!!!</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Dear family, friends, ex-friends, future-friends, acquaintaces, whatever,&lt;/p&gt; &lt;p&gt;That's it, I've had it! &lt;/p&gt; &lt;p&gt;&lt;strong&gt;STOP SENDING ME CHAIN LETTERS !!!&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;When you think AOL/Microsoft/IBM/whatever is monitoring emails, and you forward them in hope for earning a few bucks - I understand you have as much common sense as my 3-year old (or less).&lt;/p&gt; &lt;p&gt;When you think you can save the life of some poor person with cancer who needs AB blood - it's obvious you haven't been around the Internet for the past 10 years.&lt;/p&gt; &lt;p&gt;When you think luck will come to you by spamming others' mailbox - I truely hope you are never going to meet any Hari-Krishna, because you're soo easy to fool.&lt;/p&gt; &lt;p&gt;When you think you make me feel loved and happy by forwarding some 10-pages long 15-year old load of BS - you're oh! so wrong!&lt;/p&gt; &lt;p&gt;So please please please, I don't want to offend you. If you have something to write to me - be my guest, I'd be glad to read it. If it's something you got from someone who got it from someone who... don't think - leave me out of it! I'd better loose one good joke than have yet another 5 spam (sorry - chain) mails in my inbox!!!&lt;/p&gt; &lt;p&gt;Yours sincerely,&lt;/p&gt; &lt;p&gt;Ilan&lt;/p&gt; &lt;p&gt;P.S: If you really can't help it, and still want to forward this junk (not to me!), I suggest you check out the following first:&lt;/p&gt; &lt;p&gt;&lt;a title="http://breakthechain.org/" href="http://breakthechain.org/"&gt;http://breakthechain.org/&lt;/a&gt;&lt;br&gt;&lt;a title="http://www.snopes.com/" href="http://www.snopes.com/"&gt;http://www.snopes.com/&lt;/a&gt;&lt;br&gt;&lt;a title="http://info.org.il/irrelevant/" href="http://info.org.il/irrelevant/"&gt;http://info.org.il/irrelevant/&lt;/a&gt;&amp;nbsp; (Israeli)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-117268976215881873?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/117268976215881873/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=117268976215881873' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/117268976215881873'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/117268976215881873'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/02/personal-letter-to-everyone-i-know.html' title='A Personal Letter to Everyone I Know, Knew, Will Ever Know, Think I Know, Think S/He Knows Me - To EVERYONE!!!'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-117266332361506578</id><published>2007-02-28T13:48:00.001+02:00</published><updated>2007-02-28T13:48:43.620+02:00</updated><title type='text'>Wrapper for svmpredict.exe</title><content type='html'>&lt;p&gt;&lt;/p&gt; &lt;p&gt;% predictions = libsvmpredict(test_set, model, varargin)&lt;br&gt;% options:&lt;br&gt;% -b probability_estimates: whether to predict probability estimates, 0 or &lt;br&gt;% 1 (default 0); for one-class SVM only 0 is supported&lt;br&gt;%&lt;br&gt;% NOTE1: This function actually executes LibSVM's svmpredict tool. For more&lt;br&gt;% info check out: &lt;a href="http://www.csie.ntu.edu.tw/~cjlin/libsvm/"&gt;http://www.csie.ntu.edu.tw/~cjlin/libsvm/&lt;/a&gt;&lt;br&gt;% NOTE2: Although LibSVM supports more types of labels, this wrapper is&lt;br&gt;% limited to integer labels only.&lt;br&gt;% NOTE3: This function assumes that svmpredict.exe is located in a directory&lt;br&gt;% that lies in your system's PATH.&lt;br&gt;function predictions = libsvmpredict(test_set, model, varargin)&lt;br&gt;if isempty(varargin)&lt;br&gt;options = struct([]);&lt;br&gt;else&lt;br&gt;options = varargin{1};&lt;br&gt;end;  &lt;p&gt;% Dump the test set to a temporary file&lt;br&gt;testfile = tempname;&lt;br&gt;fid = fopen(testfile, 'wt');&lt;br&gt;dumpData = zeros(size(test_set,1), 2*size(test_set,2) + 1);&lt;br&gt;format = '%d %d:%f';&lt;br&gt;for i=1:size(test_set, 2)&lt;br&gt;dumpData(:, 2*i) = repmat(i, size(test_set,1), 1);&lt;br&gt;dumpData(:, 2*i+1) = test_set(:, i);&lt;br&gt;if i &amp;lt; size(test_set,2)&lt;br&gt;format = sprintf('%s %%d:%%f', format);&lt;br&gt;end;&lt;br&gt;end;&lt;br&gt;format = sprintf('%s\n', format);&lt;br&gt;fprintf(fid, format, dumpData');&lt;br&gt;fclose(fid);  &lt;p&gt;% Dump the model to a temporary file&lt;br&gt;modelfile = tempname;&lt;br&gt;fid = fopen(modelfile, 'wt');&lt;br&gt;fprintf(fid, model');&lt;br&gt;fclose(fid);  &lt;p&gt;% Run svmpredict with the given model and write the predictions to a temporary&lt;br&gt;% file&lt;br&gt;predictionsfile = tempname;&lt;br&gt;command = 'svmpredict';  &lt;p&gt;if isfield(options, 'b')&lt;br&gt;command = sprintf('%s -b %d', options.b);&lt;br&gt;end;  &lt;p&gt;dos(sprintf('%s %s %s %s', command, testfile, modelfile, predictionsfile), '-echo');  &lt;p&gt;% Load the predictions temporary file and return its content&lt;br&gt;predictions = dlmread(predictionsfile);  &lt;p&gt;return; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-117266332361506578?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/117266332361506578/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=117266332361506578' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/117266332361506578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/117266332361506578'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/02/wrapper-for-svmpredictexe.html' title='Wrapper for svmpredict.exe'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-117266328641672330</id><published>2007-02-28T13:48:00.000+02:00</published><updated>2007-02-28T13:48:06.423+02:00</updated><title type='text'>Wrapper for svmtrain.exe</title><content type='html'>&lt;p&gt;% model = libsvmtrain(training_set, options)&lt;br&gt;%&lt;br&gt;% options:&lt;br&gt;% -s svm_type : set type of SVM (default 0)&lt;br&gt;% 0 -- C-SVC&lt;br&gt;% 1 -- nu-SVC&lt;br&gt;% 2 -- one-class SVM&lt;br&gt;% 3 -- epsilon-SVR&lt;br&gt;% 4 -- nu-SVR&lt;br&gt;% -t kernel_type : set type of kernel function (default 2)&lt;br&gt;% 0 -- linear: u'*v&lt;br&gt;% 1 -- polynomial: (gamma*u'*v + coef0)^degree&lt;br&gt;% 2 -- radial basis function: exp(-gamma*|u-v|^2)&lt;br&gt;% 3 -- sigmoid: tanh(gamma*u'*v + coef0)&lt;br&gt;% 4 -- precomputed kernel (kernel values in training_set_file)&lt;br&gt;% -d degree : set degree in kernel function (default 3)&lt;br&gt;% -g gamma : set gamma in kernel function (default 1/k)&lt;br&gt;% -r coef0 : set coef0 in kernel function (default 0)&lt;br&gt;% -c cost : set the parameter C of C-SVC, epsilon-SVR, and nu-SVR (default 1)&lt;br&gt;% -n nu : set the parameter nu of nu-SVC, one-class SVM, and nu-SVR (default 0.5)&lt;br&gt;% -p epsilon : set the epsilon in loss function of epsilon-SVR (default 0.1)&lt;br&gt;% -m cachesize : set cache memory size in MB (default 100)&lt;br&gt;% -e epsilon : set tolerance of termination criterion (default 0.001)&lt;br&gt;% -h shrinking: whether to use the shrinking heuristics, 0 or 1 (default 1)&lt;br&gt;% -b probability_estimates: whether to train a SVC or SVR model for probability estimates, 0 or 1 (default 0)&lt;br&gt;% -wi weight: set the parameter C of class i to weight*C, for C-SVC (default 1)&lt;br&gt;% -v n: n-fold cross validation mode&lt;br&gt;%&lt;br&gt;% NOTE1: This function actually executes LibSVM's svmtrain tool. For more&lt;br&gt;% info check out: &lt;a href="http://www.csie.ntu.edu.tw/~cjlin/libsvm/"&gt;http://www.csie.ntu.edu.tw/~cjlin/libsvm/&lt;/a&gt;&lt;br&gt;% NOTE2: Although LibSVM supports more types of labels, this wrapper is&lt;br&gt;% limited to integer labels only.&lt;br&gt;% NOTE3: This function assumes that svmtrain.exe is located in a directory&lt;br&gt;% that lies in your system's PATH.&lt;br&gt;function model = libsvmtrain(training_set, labels, varargin)&lt;br&gt;if size(training_set,1) ~= size(labels,1)&lt;br&gt;error('The training_set and labels should have the same number of rows.');&lt;br&gt;end;&lt;br&gt;if isempty(varargin)&lt;br&gt;options = struct([]);&lt;br&gt;else&lt;br&gt;options = varargin{1};&lt;br&gt;end;  &lt;p&gt;% Dump the training set to a temporary file&lt;br&gt;datafile = tempname;&lt;br&gt;fid = fopen(datafile, 'wt');&lt;br&gt;dumpData = zeros(size(training_set,1), 2*size(training_set,2) + 1);&lt;br&gt;dumpData(:, 1) = labels(:, 1);&lt;br&gt;format = '%d';&lt;br&gt;for i=1:size(training_set, 2)&lt;br&gt;dumpData(:, 2*i) = repmat(i, size(training_set,1), 1);&lt;br&gt;dumpData(:, 2*i + 1) = training_set(:, i);&lt;br&gt;format = sprintf('%s %%d:%%f', format);&lt;br&gt;end;&lt;br&gt;format = sprintf('%s\n', format);&lt;br&gt;fprintf(fid, format, dumpData');&lt;br&gt;fclose(fid);  &lt;p&gt;% Run svmtrain with all given options and write the model to a temporary&lt;br&gt;% file&lt;br&gt;modelfile = tempname;&lt;br&gt;command = 'svmtrain';  &lt;p&gt;if isfield(options, 's')&lt;br&gt;command = sprintf('%s -s %d', options.s);&lt;br&gt;end;  &lt;p&gt;if isfield(options, 't')&lt;br&gt;command = sprintf('%s -t %d', options.t);&lt;br&gt;end;  &lt;p&gt;if isfield(options, 'd')&lt;br&gt;command = sprintf('%s -d %f', options.d);&lt;br&gt;end;  &lt;p&gt;if isfield(options, 'g')&lt;br&gt;command = sprintf('%s -g %f', options.g);&lt;br&gt;end;  &lt;p&gt;if isfield(options, 'r')&lt;br&gt;command = sprintf('%s -r %f', options.r);&lt;br&gt;end;  &lt;p&gt;if isfield(options, 'c')&lt;br&gt;command = sprintf('%s -c %f', options.c);&lt;br&gt;end;  &lt;p&gt;if isfield(options, 'n')&lt;br&gt;command = sprintf('%s -n %f', options.s);&lt;br&gt;end;  &lt;p&gt;if isfield(options, 'p')&lt;br&gt;command = sprintf('%s -p %f', options.p);&lt;br&gt;end;  &lt;p&gt;if isfield(options, 'm')&lt;br&gt;command = sprintf('%s -m %f', options.m);&lt;br&gt;end;  &lt;p&gt;if isfield(options, 'e')&lt;br&gt;command = sprintf('%s -e %f', options.e);&lt;br&gt;end;  &lt;p&gt;if isfield(options, 'h')&lt;br&gt;command = sprintf('%s -h %d', options.h);&lt;br&gt;end;  &lt;p&gt;if isfield(options, 'b')&lt;br&gt;command = sprintf('%s -b %d', options.b);&lt;br&gt;end;  &lt;p&gt;if isfield(options, 'wi')&lt;br&gt;command = sprintf('%s -wi %f', options.wi);&lt;br&gt;end;  &lt;p&gt;if isfield(options, 'v')&lt;br&gt;command = sprintf('%s -v %d', options.v);&lt;br&gt;end;  &lt;p&gt;dos(sprintf('%s %s %s', command, datafile, modelfile), '-echo');  &lt;p&gt;% Load the model temporary file and return its content&lt;br&gt;fid = fopen(modelfile, 'r');&lt;br&gt;model = fread(fid, '*char')';&lt;br&gt;fclose(fid);  &lt;p&gt;% For some reason, the data read has superfluous newlines (it seems to have&lt;br&gt;% doubled the newline characters or something like that).&lt;br&gt;model = regexprep(model, '\r', '');  &lt;p&gt;return;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-117266328641672330?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/117266328641672330/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=117266328641672330' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/117266328641672330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/117266328641672330'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/02/wrapper-for-svmtrainexe.html' title='Wrapper for svmtrain.exe'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-117266322604640305</id><published>2007-02-28T13:47:00.000+02:00</published><updated>2007-02-28T13:47:06.140+02:00</updated><title type='text'>LibSVM Matlab Wrappers</title><content type='html'>&lt;p&gt;As I mentioned in previous posts, I've been using &lt;a href="http://svmlight.joachims.org/"&gt;SVMLight&lt;/a&gt; for quite some time now. It's been good while it lasted, but I'm now in the search for a stronger SVM library, especially one that handles multiple labels well. I've been introduced to &lt;a href="http://www.csie.ntu.edu.tw/~cjlin/libsvm/"&gt;LibSVM&lt;/a&gt;, which seems very promising. In theory, they have libraries for various systems and languages, including Matlab. However, I've had quite some trouble making it work with Matlab, so instead of breaking my head into solving the problem, I've decided to work around it in a quick-and-dirty manner (my favorite...).&lt;/p&gt; &lt;p&gt;What I did, is simply wrap the LibSVM's &lt;em&gt;executables&lt;/em&gt; in a simple way, so it can be executed using Matlab functions (given the executables are located somewhere in your PATH).&lt;/p&gt; &lt;p&gt;The following two posts will include a wrapper for svmtrain.exe and svmpredict.exe &lt;/p&gt; &lt;p&gt;Please let me know if you encounter any problems using them.&lt;/p&gt; &lt;p&gt;Ah, of course, they are provided AS IS, no warranty or anything alike. I also don't take any credit for it, nor any responsibility as to how/who/when/where/etc. it can be used. For this - please check with the authors of LibSVM.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-117266322604640305?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/117266322604640305/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=117266322604640305' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/117266322604640305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/117266322604640305'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/02/libsvm-matlab-wrappers.html' title='LibSVM Matlab Wrappers'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-117251443548465646</id><published>2007-02-26T20:27:00.000+02:00</published><updated>2007-02-26T20:27:15.556+02:00</updated><title type='text'>NTFS File encryption does not like virtual drives</title><content type='html'>&lt;p&gt;I like the NTFS file encryption feature - you simply define a folder as being encrypted, and any susequent file you add to it is automatically encrypted. This means that, depending on permissions, other users may see that the file exists, but they won't be able to get the content. Even the system Administrator won't be able to read the file's content!&lt;br&gt;(There are various other goodies related to encrypted files, such that you can't copy them and such, but that's besides the point).&lt;/p&gt; &lt;p&gt;But I also like virtual drives. For example - my&amp;nbsp;3 PC's have a virtual drive called Z: that maps to a shared folder in one of the machines (called C:\Shared - to be precise).&lt;/p&gt; &lt;p&gt;So I had a couple of files in an encrypted folder (accidentally on the machine that hosts the folder mapped to by Z), and wanted to transfer them to another machine.&amp;nbsp;I sent them to Z, and then I wanted to decypt them so I would be able to retrieve them from my second machine.&lt;br&gt;Just to make sure the scenario is clear: I'm connected with the correct user (the one who encrypted the files), and simply want to decrypt the files. The only thing is that I want to do it from a virtual drive (Z:).&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;BABOOM!!!&lt;/p&gt; &lt;p&gt;"An error occurred applying attributes to the file: &lt;br&gt;.... &lt;br&gt;The system cannot find the path specified."&lt;/p&gt; &lt;p&gt;Of course, once I tried to decrypt from C:\Shared instead of Z:\ - everything went fine.&lt;/p&gt; &lt;p&gt;Not nice, really not nice.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-117251443548465646?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/117251443548465646/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=117251443548465646' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/117251443548465646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/117251443548465646'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/02/ntfs-file-encryption-does-not-like.html' title='NTFS File encryption does not like virtual drives'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-117239945741949585</id><published>2007-02-25T12:30:00.000+02:00</published><updated>2007-02-25T12:30:58.136+02:00</updated><title type='text'>My daughter can do magic !!!</title><content type='html'>&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Purim"&gt;Purim&lt;/a&gt; is getting near, and this year, our eldest daughter Gal (almost 3) is going to dress up as a fairy. So yesterday we decided to try out the costume - pink dress, purple skirt on top of it, purple wings, silver crown and, inevitably - silver star-tipped wand.&lt;br&gt;Once she was completely dressed she started playing with her wand, in it went more or less like this:&lt;/p&gt; &lt;p&gt;Gal: Hocus, pocus, bili-bili-bocus: Grandma and Grandpa.&lt;br&gt;(nothing happens)&lt;br&gt;Gal: Where are Grandma and Grandpa ?&lt;br&gt;Ma&amp;amp;Pa: Huh?&lt;br&gt;Gal: Where are Grandma and Grandpa ???&lt;br&gt;(our little brains try to understand why she suddenly starts asking about her grandparents. after a minute or so, the smart of us gets the point)&lt;br&gt;Ma: Were you expecting Grandma and Grandpa ?&lt;br&gt;Gal: Yes - I said "Hocus, pocus, bili-bili-bocus" and Grandma and Grandpa didn't come!!!&lt;/p&gt; &lt;p&gt;(At this point I understand what's going on. So I step aside, secretly call Grandma and Grandpa, and ask them to come, and give us a call when they're outside so she can conjure them again, and this time succeed).&lt;/p&gt; &lt;p&gt;Ma: You know, you need to practice a lot for this kind of spells to succeed. Come on, let's practice...&lt;/p&gt; &lt;p&gt;(After half an hour, and a phone call from Grandma and Grandpa telling us they are outside)&lt;/p&gt; &lt;p&gt;Ma: Come on, let's try conjuring Grandma and Grandpa again&lt;br&gt;Gal: Hocus, pocus, bili-bili-bocus: Grandma and Grandpa.&lt;/p&gt; &lt;p&gt;The face she did when she saw them entering the house, was worth all the gold in the world...&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-117239945741949585?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/117239945741949585/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=117239945741949585' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/117239945741949585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/117239945741949585'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/02/my-daughter-can-do-magic.html' title='My daughter can do magic !!!'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-117200260205913204</id><published>2007-02-20T22:16:00.000+02:00</published><updated>2007-02-20T22:16:42.153+02:00</updated><title type='text'>Reflector 5.0 is out - awesome!!!</title><content type='html'>&lt;p&gt;Usually, you don't feel much difference when Lutz Roeder releases a new version of his can't-live-without-it tool. You open it, it says that there is a new version, you click OK, and you don't feel any difference. You're using a new version of &lt;a href="http://www.aisto.com/roeder/dotnet/"&gt;Reflector&lt;/a&gt;, but don't see where the big deal was.&lt;/p&gt; &lt;p&gt;Today, however, things went completely differently. I downloaded the new version (using the Automatic Update feature which works like a charm), and was already surprised that the downloaded files was so big (1 MB).&lt;br&gt;Then I opened it... This guy is a genious:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Integrated help from MSDN - when you look at a method's decompilation, you automatically see, at the bottom of the screen, the MSDN information about that method. Even cooler - the links inside that pseudo-MDSN pane work inside Reflector, and navigate to the correct place showing you the decompilation automatically!&lt;/li&gt; &lt;li&gt;Expand Methods - When you look at a class, there is a link at the bottom called "Expand Methods" which will expand all the methods in one screen, effectively providing you with a complete decompiled class.&lt;/li&gt; &lt;li&gt;Enhanced Analyzer feature - I LOVE the "Assigned By" feature, which shows you which methods change a field!&lt;/li&gt; &lt;li&gt;Integrated search in MSDN and Google (I wonder how long it will take for Microsoft and Yahoo! to go complaining about the lack of configurability of the search engine...)&lt;/li&gt; &lt;li&gt;Shell integration - run reflector.exe /register in a command prompt. Do it! NOW!!! You did it? Sure?!?! Well, assuming you're smart enough to have taken this advice - from now on, when you right-click on a managed dll, you'll have a "Browse with .NET Reflector" option, which will automagically open the dll with, huh, well Reflector of course. Actually, you don't even have to go through right-click - it's set as default when you double-click the dll...&lt;/li&gt; &lt;li&gt;More features &lt;a href="http://weblogs.asp.net/vga/archive/2007/02/20/Reflector5.aspx"&gt;here&lt;/a&gt;. I wouldn't be able to put it better - The Best Tool Ever Got Even Better!!!&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Cool!&lt;/p&gt; &lt;p&gt;Thanks &lt;a href="http://blogs.microsoft.co.il/blogs/yosit/archive/2007/02/20/_D705DD05_-_DE05D405EA05E005D505E805_-_2D00_-Reflector-5.aspx"&gt;Yossi&lt;/a&gt; for pointing it out.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-117200260205913204?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/117200260205913204/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=117200260205913204' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/117200260205913204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/117200260205913204'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/02/reflector-50-is-out-awesome.html' title='Reflector 5.0 is out - awesome!!!'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-117180413434091532</id><published>2007-02-18T15:08:00.000+02:00</published><updated>2007-02-18T15:08:54.403+02:00</updated><title type='text'>Microsoft Office errors are soooo descriptive....</title><content type='html'>&lt;p&gt;&lt;/p&gt; &lt;p&gt;Source: &lt;a title="http://www.microsoft.com/products/ee/transform.aspx?ProdName=Office&amp;amp;EvtSrc=OfficeErrorMessages&amp;amp;EvtID=10046&amp;amp;LCID=1033&amp;amp;ProdVer=11.0" href="http://www.microsoft.com/products/ee/transform.aspx?ProdName=Office&amp;amp;EvtSrc=OfficeErrorMessages&amp;amp;EvtID=10046&amp;amp;LCID=1033&amp;amp;ProdVer=11.0"&gt;http://www.microsoft.com/products/ee/transform.aspx?ProdName=Office&amp;amp;EvtSrc=OfficeErrorMessages&amp;amp;EvtID=10046&amp;amp;LCID=1033&amp;amp;ProdVer=11.0&lt;/a&gt; &lt;p&gt;&amp;nbsp; &lt;p&gt;Details &lt;p&gt;&lt;b&gt;Product:&lt;/b&gt;&lt;br&gt;Office &lt;p&gt;&lt;b&gt;Event ID:&lt;/b&gt;&lt;br&gt;10046 &lt;p&gt;&lt;b&gt;Source:&lt;/b&gt;&lt;br&gt;OfficeErrorMessages &lt;p&gt;&lt;b&gt;Version:&lt;/b&gt;&lt;br&gt;11.0 &lt;p&gt;&lt;b&gt;Message:&lt;/b&gt;&lt;br&gt;Links to additional information about the error message you saw are available below. &lt;hr&gt;  &lt;p&gt;Currently there are no Office Assistance articles available for this error message.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-117180413434091532?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/117180413434091532/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=117180413434091532' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/117180413434091532'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/117180413434091532'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/02/microsoft-office-errors-are-soooo.html' title='Microsoft Office errors are soooo descriptive....'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-117146984246993356</id><published>2007-02-14T18:17:00.000+02:00</published><updated>2007-02-14T18:17:22.566+02:00</updated><title type='text'>What's up with YNet ???</title><content type='html'>&lt;p&gt;For the past few days, every once in a while, when I open YNet, my browser takes up 100% CPU and I have to kill my whole iexplorer session to continue working properly. I've installed IE7 only a few weeks ago, so I don't know whether it's IE7 or YNet's fault, but it's starting to really get on my nerves!!!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-117146984246993356?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/117146984246993356/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=117146984246993356' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/117146984246993356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/117146984246993356'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/02/whats-up-with-ynet.html' title='What&apos;s up with YNet ???'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-117138581198570812</id><published>2007-02-13T18:56:00.000+02:00</published><updated>2007-02-13T18:56:52.033+02:00</updated><title type='text'>4th Israeli bloggers dinner</title><content type='html'>&lt;p&gt;If you're interested, make sure to &lt;a href="http://blogs.microsoft.co.il/blogs/omer/archive/2007/02/13/8020.aspx"&gt;let Omer know about it&lt;/a&gt;.&lt;br&gt;I really hope I'll be able to make it...&lt;/p&gt; &lt;p&gt;Anyways - kuddos to Omer for setting this up, again. It also looks like the deal he managed to get is a good one - I'm hungry only from thinking about it...&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-117138581198570812?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/117138581198570812/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=117138581198570812' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/117138581198570812'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/117138581198570812'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/02/4th-israeli-bloggers-dinner.html' title='4th Israeli bloggers dinner'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-117138205380874040</id><published>2007-02-13T17:54:00.000+02:00</published><updated>2007-02-13T17:54:13.996+02:00</updated><title type='text'>Political confession</title><content type='html'>&lt;p&gt;I'm generally a left-wing voter - the two last elections I voted &lt;a href="http://www.meretz.org.il/"&gt;Meretz&lt;/a&gt;. I can't say I'm happy with their behavior, nor that I agree with all their opinions, but it's as close as it gets. &lt;/p&gt; &lt;p&gt;Anyway, I must&amp;nbsp;admit that in the 18+ years I've been living in Israel, there has been no minister as good at his job as &lt;a href="http://www.knesset.gov.il/mk/heb/mk.asp?mk_individual_id_t=791"&gt;Ariel Atias&lt;/a&gt;, our minister for communications - from &lt;a href="http://he.wikipedia.org/wiki/%D7%9E%D7%A4%D7%9C%D7%92%D7%AA_%D7%A9%22%D7%A1"&gt;Shas&lt;/a&gt;&amp;nbsp;- quite the oposite of my political beliefs. This guy is AMAZING - he is 100% focussed on improving service to the citizen, and doesn't mind fighting all the big communications, in most cases ending with the upper hand.&lt;br&gt;Just to name a few:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Force companies to make it very clear to the customer, while signing a contract, what happens at the end of the contract (not just in small letters).&lt;/li&gt; &lt;li&gt;Limit the ability of&amp;nbsp;companies to force customers to buy their phones through them.&lt;/li&gt; &lt;li&gt;Forced Bezeq to provide a free phone book over the internet (144).&lt;/li&gt; &lt;li&gt;Asked the companies to give reductions to people living in the north, during the war.&lt;/li&gt; &lt;li&gt;Still working on making our phone numbers company-free (i.e. changing company doesn't force you to change your number). This has been postponed several times, but I hope it will succeed in the end.&lt;/li&gt; &lt;li&gt;Opened the stationary phone market to concurrence.&lt;/li&gt; &lt;li&gt;Force companies to provide 3 non-paid seconds before being routed to a voice message box.&lt;/li&gt; &lt;li&gt;His new baby - &lt;a href="http://www.ynet.co.il/articles/0,7340,L-3364535,00.html"&gt;force companies to announce customers BEFORE they increase their prices&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;And that's just part of it. A good article about him was recently published in &lt;a href="http://www.ynet.co.il/articles/1,7340,L-3327886,00.html"&gt;YNet&lt;/a&gt;. Give us a handful ministers and politicians like him - and this &lt;em&gt;could&lt;/em&gt; really be a nice place to live.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-117138205380874040?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/117138205380874040/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=117138205380874040' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/117138205380874040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/117138205380874040'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/02/political-confession.html' title='Political confession'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-117135476418341295</id><published>2007-02-13T10:19:00.000+02:00</published><updated>2007-02-13T10:19:24.283+02:00</updated><title type='text'>I was born on the same day as Albert Einstein</title><content type='html'>&lt;p&gt;Yep, that's right, just 96 years later. You can see it all &lt;a href="http://en.wikipedia.org/wiki/March_14"&gt;here&lt;/a&gt;, Together with &lt;a href="http://en.wikipedia.org/wiki/Billy_Crystal"&gt;Billy Crystal&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Michael_Caine"&gt;Sir Michal Cain&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Johann_Strauss_I"&gt;Johan Strauss&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Georg_Philipp_Telemann"&gt;Telemann&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Jerry_Greenfield"&gt;Jerry Greenfield&lt;/a&gt; - you can say I'm in &lt;a href="http://en.wikipedia.org/wiki/Albert_Einstein"&gt;good company&lt;/a&gt;.&lt;br&gt;Cool.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-117135476418341295?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/117135476418341295/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=117135476418341295' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/117135476418341295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/117135476418341295'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/02/i-was-born-on-same-day-as-albert.html' title='I was born on the same day as Albert Einstein'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-117128253845347387</id><published>2007-02-12T14:15:00.000+02:00</published><updated>2007-02-12T14:15:38.506+02:00</updated><title type='text'>House security flaw</title><content type='html'>&lt;p&gt;My neighbor's alarm is working - drives us nuts. I went to see if they are connected to some security center, and saw 4 or 5 placards of the same company. I called them, gave the neighbors' full name and address (either would have been sufficient). They told me that the neighbors are not customers of theirs. So how come there are so many of your signs all around the house? - I asked. They answered that probably my neighbors installed their alarm system through the security company, but they are not active client of the phone service ("moked"). Hmmm, so basically, if I were a prospective burglar, I could call each of the phone services in the area giving them the details of the house I want to break into, and in a few minutes I would have a pretty good notion of the level of security I would have to deal with...&lt;/p&gt; &lt;p&gt;You may ask - why is it the service provider's fault? What should they do different? Well, for starts, they could say something like "we will check whether they are our customers, and if not we will contact the police.", leaving me no way to know which it will be.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-117128253845347387?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/117128253845347387/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=117128253845347387' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/117128253845347387'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/117128253845347387'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/02/house-security-flaw.html' title='House security flaw'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-117127714483240715</id><published>2007-02-12T12:45:00.000+02:00</published><updated>2007-02-12T21:45:43.130+02:00</updated><title type='text'>Visual Studio 2005 is *NOT* a LIAR!!!</title><content type='html'>&lt;p&gt;&lt;em&gt;&lt;span style="color:#3366ff;"&gt;&lt;strong&gt;UPDATE:&lt;/strong&gt; I didn't think of it, but apparently the Memory Usage I see on VS indicates the amount of memory used by Resharper. I'm sorry if I offended anyone by this post - I don't mind picking on people and things here and there, but not when I'm wrong...&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;Did you ever notice the note on the lower left side of VS2005 window? At the moment of writing this post it says: "Memory Usage: 53.1 Mb". Sounds good, doesn't it? A quick look at the Windows Task Manager for the devenv process tells me the true story:&lt;br /&gt;Mem Usage: 273,028&lt;br /&gt;VM Size: 231,884 (note that this is the better measurement to assess how much memory is used by your process).&lt;/p&gt;&lt;p&gt;LIAR !!!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-117127714483240715?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/117127714483240715/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=117127714483240715' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/117127714483240715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/117127714483240715'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/02/visual-studio-2005-is-not-liar.html' title='Visual Studio 2005 is *NOT* a LIAR!!!'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-117121205261821551</id><published>2007-02-11T18:40:00.000+02:00</published><updated>2007-02-11T18:40:52.676+02:00</updated><title type='text'>Sacha Barber</title><content type='html'>&lt;p&gt;I've never met this guy, but &lt;a href="http://www.codeproject.com/script/articles/list_articles.asp?userid=569009"&gt;Sacha Barber&lt;/a&gt; keeps writing article after article on The CodeProject about AI, .NET and what's in between. In January only he published no less than 10 (!!!) high-quality articles (his rating averages around 4.5/5 for most articles).&lt;/p&gt; &lt;p&gt;I don't know how he manages to do this, but I sure hope he'll be able to keep them coming. Great work!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-117121205261821551?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/117121205261821551/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=117121205261821551' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/117121205261821551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/117121205261821551'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/02/sacha-barber.html' title='Sacha Barber'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-117119233026285976</id><published>2007-02-11T13:12:00.000+02:00</published><updated>2007-02-11T13:12:10.360+02:00</updated><title type='text'>Musings: Why I think Google missed a big opportunity and ISP's are stupid</title><content type='html'>&lt;p&gt;Huh? Why I what? Let's take it one step at a time:&lt;/p&gt; &lt;h3&gt;GMAIL - a big (huge?) opportunity missed by Google&lt;/h3&gt; &lt;p&gt;For almost a decade, there was one de-facto leader in the free webmail industry: Hotmail. Yeah, yeah, I know, there were others, most importantly Yahoo! Mail, but still - Hotmail was the first and until GMail came around (2004) I think it's fair to say Hotmail was the most prominent player. A monopoly? - certainly not.&lt;br&gt;At Google, some clever people understood that the free webmail industry is lacking some important features, and they took the challenge: GMail offered an inconceivably large mailbox (they started with 1GB, now it's almost 3GB), backed with Google search facilities, slick simple web interface, POP3 access, etc. They did one big mistake - left it in Beta phase for 3 years, based on invitation-only registration (at the beginning each user had very limited invitations available). I remember that when it started, people were searching with every lost friend whether he may have an invitation left in order to register. And it remained this way for long - much too long.&lt;br&gt;Why? Maybe it's because it was developed as part of Google's 20% time each employee can use to develop whatever she likes - and it took too long for management to give it proper priority? Maybe because they were afraid of getting out of disk-space if too many users would register? Bandwidth? Spam fear? Bugs that needed to be resolved?&lt;br&gt;Whatever the reason may have been, it's in the past and they missed the opportunity to become THE email world-leader, almost as they are the leader in web search. Because now, everyone (except ISP's, see below) offers large mailboxes with Ajax interfaces, and it really doesn't matter whether you get 1,2 or 5GB - most people never use more than 100MB, and by the time they will need more, storage cost will drop enough for it to be unworthy noting.&lt;br&gt;A last thing about GMail. Actually, it's about Google Accounts - there is a small security flaw... I recently created an account for a family member. She wanted the password to be some date. I know, it's bad security practice, but bear with me for a second, ok? Now, let's say the date required was 31 January 1999. When I typed as password "31011999", the passwords strength indicator says it's "Good". When, however, I typed as password "01311999" (i.e. MMDDYYYY instead of DDMMYYYY), the indicator says it's "Strong". Do I need to say more?&lt;/p&gt; &lt;h3&gt;ISP's - why are they so stupid?&lt;/h3&gt; &lt;p&gt;I don't know how it goes in other countries, but here in Israel, the default mailboxes you get from your ISP is extremely small (around 5MB). The result is that people don't use their ISP's mailbox for any important purpose, and prefer using their free webmail, such as GMail, which can also be accessed through POP3. There is even a movie that shows how to do the configuration, if you're not a techie. &lt;br&gt;Why do I think they are stupid? Let's look at the mobile phone analogy. In Israel there are&amp;nbsp;several cellular companies, each with its own prefix. If I want to change my mobile provider, I know it will incur changing my phone number - so I will do it only if it's really really really worth it. I don't have to tell you the headache and costs incurred: service providers, clients, business cards, invoices, friends, etc. - all must be updated with the new number. Even the Israeli minister of communication understands the problem, and is actively trying to force the various phone companies to support changing provider without changing the number - until now without success.&lt;br&gt;With mail addresses it's similar - people hate changing mail addresses. Granted - it's much easier to change your email address than to change your phone number, and cheaper (keeping a forwarding account will cost you less than 1$/month), but still, after a couple of times you get sick of it and will try to avoid it as much as possible. Also, it is much more complicated, if not impossible, to force an ISP to support emails that belong to another provider. So basically, ISP's could bond their customers by giving them excellent email services (large mailbox, fast access, search facility, web access, etc), but they just don't see it. I'd even go further - they should provide FREE emails to everyone, not only to customers. Why? Well if I were a potential customer of some ISP, and I would see that most emails around me belong to that ISP, I would assume it's a big company that gives good services - and would be more likely to be drawn by it.&lt;br&gt;Ah, one last stupidity - I recently had to create an account at Netvision for a friend of mine. They still limit the usernames to 8-characters (only alpha-numeric I think). Hmm, WAKE UP !!!!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-117119233026285976?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/117119233026285976/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=117119233026285976' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/117119233026285976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/117119233026285976'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/02/musings-why-i-think-google-missed-big.html' title='Musings: Why I think Google missed a big opportunity and ISP&apos;s are stupid'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-117083709099450041</id><published>2007-02-07T10:31:00.000+02:00</published><updated>2007-02-07T10:31:31.076+02:00</updated><title type='text'>YNet's encyclopedia</title><content type='html'>&lt;p&gt;&lt;a href="http://www.ynet.co.il/"&gt;YNet&lt;/a&gt; expose a pretty interesting &lt;a href="http://www.ynet.co.il/home/0,7340,L-1361,00.html"&gt;encyclopedia&lt;/a&gt;. Of course, I usually first search in the &lt;a href="http://he.wikipedia.org/"&gt;Hebrew Wikipedia&lt;/a&gt;. However, sometimes the value I'm searching is missing, or incomplete, and I want an answer. Their encyclopedia costs 19NIS/month. It's not much, but if I need to use it, say, only once every other month on average, it's a little expensive. What I would suggest is to provide a similar paying mechanism as they do with the &lt;a href="http://www.ynetcenter.co.il/c/MhTelemeserForm.asp?BaseUrl=%2FSearchIn%2Easp%3FZ%3DC%26TZ%3DMhValue&amp;amp;ERT="&gt;cars pricelist&lt;/a&gt; - you call a special phone number, get an access code over the phone, and can keep using the site as long as the communication is not disconnected. This allows for people like me, who only need the service occasionally, to be part of their paying customers, without too much hassle and for reasonable prices.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-117083709099450041?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/117083709099450041/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=117083709099450041' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/117083709099450041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/117083709099450041'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/02/ynets-encyclopedia.html' title='YNet&apos;s encyclopedia'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-117079949833617607</id><published>2007-02-07T00:04:00.000+02:00</published><updated>2007-02-07T00:04:58.426+02:00</updated><title type='text'>GoogleFight</title><content type='html'>&lt;p&gt;Today I was introduced to a Google goodie (not affiliated to Google)&amp;nbsp;I wasn't aware of - &lt;a href="http://www.googlefight.com/"&gt;GoogleFight&lt;/a&gt;. It's a simple site that lets you compare the number of results Google returns for two different queries. So you can easily compare the popularity of things (or people) - apparently, despite SVM's superiority in most cases, Neural Networks are much more popular than Support Vector Machines. "Madonna"&amp;nbsp;is 4 times more popular than "Britney Spears".&amp;nbsp;There is much more "good" than "bad" in the world. You get the idea...&lt;br&gt;Alternatively, you can check expressions and improve your writing - the American way of writing "color" is so much more popular than the English "colour". It's better to "speak english" than to "talk english", etc.&lt;br&gt;Nice...&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-117079949833617607?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/117079949833617607/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=117079949833617607' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/117079949833617607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/117079949833617607'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/02/googlefight.html' title='GoogleFight'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-117067332333168158</id><published>2007-02-05T13:02:00.000+02:00</published><updated>2007-02-05T13:02:03.403+02:00</updated><title type='text'>.NET WTF - InstallUtil.exe gets corrupted ?!?!?!</title><content type='html'>&lt;p&gt;I'm currently playing with a service - installing, uninstaling, connecting from remote machine, etc. Suddenly, out of the blue, when I tried uninstalling the service (by the book, using InstallUtil.exe) I get the following error: &lt;br&gt;C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe is not a valid Win32 application. &lt;br&gt;(in the command prompt I even get a message "Access Denied")&lt;/p&gt; &lt;p&gt;&lt;br&gt;Being a restart-freek, I first tried to restart the machine - no change.&lt;br&gt;So I started googling my way, found several people complaining about this with no concrete reason/solution, until I found someone saying that &lt;a href="http://www.thescripts.com/forum/thread253392.html"&gt;replacing the installutil.exe file solved the problem&lt;/a&gt;. I looked at the .NET folder, and sure enough, InstallUtil.exe lies there, with &lt;strong&gt;size 0&lt;/strong&gt; and &lt;strong&gt;Date Modified - a few minutes ago !!!&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;?!?!?!&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; W&amp;nbsp; T&amp;nbsp; F&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ?!?!?!&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Of course, replacing the file with an uncorrupted one solved the problem (lucky for me I have two machines with .NET installed).&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-117067332333168158?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/117067332333168158/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=117067332333168158' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/117067332333168158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/117067332333168158'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/02/net-wtf-installutilexe-gets-corrupted.html' title='.NET WTF - InstallUtil.exe gets corrupted ?!?!?!'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-117015037052135214</id><published>2007-01-30T11:46:00.000+02:00</published><updated>2007-01-30T11:46:10.603+02:00</updated><title type='text'>Cusbara - amazing parodic site!!!</title><content type='html'>&lt;p&gt;If you're Israeli, or just concerned about the situation in Israel, you MUST visit &lt;a href="http://www.cusbara.com/"&gt;Cusbara&lt;/a&gt;. As an example, check out their song about &lt;a href="http://cusbara.com/tozeret/"&gt;Israeli-made corruption&lt;/a&gt;. It's so sadly true you have to laugh, otherwise you won't stop crying...&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-117015037052135214?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/117015037052135214/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=117015037052135214' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/117015037052135214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/117015037052135214'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/01/cusbara-amazing-parodic-site.html' title='Cusbara - amazing parodic site!!!'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-116993318508151313</id><published>2007-01-27T23:26:00.000+02:00</published><updated>2007-01-29T18:30:59.493+02:00</updated><title type='text'>Google Image Search API Fixed but...</title><content type='html'>&lt;p&gt;I've updated the API to comply with the latest changes by Google. However, since the change required some code changes, in addition to the changes to the regular expressions, we will have to wait until the guys at CodeProject upload the new version to the site. I've sent them an email with a request to do it asap - usually it takes a few days. Hopefully this time it will be a little bit faster.&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;span style="color:#3333ff;"&gt;Update: I checked the article - it is now up-to-date. Please let me know if there are any more problems.&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-116993318508151313?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/116993318508151313/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=116993318508151313' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/116993318508151313'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/116993318508151313'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/01/google-image-search-api-fixed-but.html' title='Google Image Search API Fixed but...'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-116972845786190746</id><published>2007-01-25T14:34:00.000+02:00</published><updated>2007-01-25T14:34:17.920+02:00</updated><title type='text'>What's wrong the Blogger search???</title><content type='html'>&lt;p&gt;It's not the first time this happens to me, and it's starting to get on my nerves. Many of the things I write in my blog are mostly done for my own personal benefit - easily retrieval of data from anywhere I am.&lt;br&gt;Today I wanted to find my recipe for my &lt;a href="http://ilanas.blogspot.com/2006/11/rich-lentil-soup.html"&gt;lentil soup&lt;/a&gt;. I have it on paper somewhere, but not at my fingertips. So I opened my blog and did a &lt;a href="http://search.blogger.com/?as_q=soup&amp;amp;ie=UTF-8&amp;amp;ui=blg&amp;amp;bl_url=ilanas.blogspot.com"&gt;blogsearch for "soup" inside my blog&lt;/a&gt;. Sounds reasonable, doesn't it? Well, my recipe was&amp;nbsp;nowhere to be found, even when I tried other searches ("lentil", "rich", "Soup" with capital S, etc.).&lt;br&gt;The funny thing in all that is that when I do &lt;a href="http://www.google.com/search?q=ilan+assayag+lentil+soup"&gt;a simple search on Google&lt;/a&gt;, I get my recipe immediately.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-116972845786190746?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/116972845786190746/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=116972845786190746' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/116972845786190746'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/116972845786190746'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/01/whats-wrong-blogger-search.html' title='What&apos;s wrong the Blogger search???'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-116967047850111821</id><published>2007-01-24T22:27:00.000+02:00</published><updated>2007-01-24T22:27:58.570+02:00</updated><title type='text'>Problems with the Google Image Search API</title><content type='html'>&lt;p&gt;My &lt;a href="http://www.codeproject.com/cs/library/google_image_search_api.asp?msg=1860033"&gt;Google Image Search API&lt;/a&gt; is currently broken. Apparently Google completely changed the format of the HTML they return, so the API doesn't work. I gave it a quick look and it seems that, unlike previous changes which tended to be rather limited, this time they completely changed the structure of the result, so I have to build the regular expressions from scratch. I'll try to do it in the next few days and post an update in 1 week or so.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-116967047850111821?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/116967047850111821/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=116967047850111821' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/116967047850111821'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/116967047850111821'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/01/problems-with-google-image-search-api.html' title='Problems with the Google Image Search API'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-116966815676546947</id><published>2007-01-24T21:49:00.000+02:00</published><updated>2007-01-24T21:49:16.840+02:00</updated><title type='text'>Integrating Matlab and TFS</title><content type='html'>&lt;p&gt;It IS possible to integrate Matlab with Team Foundation Server. Here are the steps you must take (I'm assuming Matlab and TFS Explorer are already installed on your machine):&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Install the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=87E1FFBD-A484-4C3A-8776-D560AB1E6198&amp;amp;displaylang=en"&gt;Visual Studio 2005 Team Foundation Server MSSCCI Provider&lt;/a&gt;.&lt;/li&gt; &lt;li&gt;In the registry,&amp;nbsp;search for&amp;nbsp;the providers under:&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;tt&gt;HKEY_LOCAL_MACHINE\SOFTWARE\SourceCodeControlProvider\InstalledSCCProviders&lt;/tt&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Copy the existing registry entry for "&lt;tt&gt;Microsoft Team Foundation Server MSSCCI Provider"&lt;/tt&gt; and give the new&amp;nbsp;copy a shorter name, e.g., "&lt;tt&gt;MS Team Foundation Server&lt;/tt&gt;".&lt;/li&gt; &lt;li&gt;In Matlab preferences (File =&amp;gt; Preferences), select the "Source Control" subsection under "General"&lt;/li&gt; &lt;li&gt;Choose "&lt;tt&gt;MS Team Foundation Server&lt;/tt&gt;" and click Apply.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;That's it. From there on you can use TFS much like you would have used VSS. I suppose most&amp;nbsp;new TFS features&amp;nbsp;are not available, but at least you can do simple checkin/checkout, view history, compare files, etc.&lt;/p&gt; &lt;p&gt;Reference (requires a Mathworks login): &lt;a title="http://www.mathworks.com/support/bugreports/details.html?rp=347563" href="http://www.mathworks.com/support/bugreports/details.html?rp=347563"&gt;http://www.mathworks.com/support/bugreports/details.html?rp=347563&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/15758573-116966815676546947?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/116966815676546947/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=116966815676546947' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/116966815676546947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/116966815676546947'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/01/integrating-matlab-and-tfs.html' title='Integrating Matlab and TFS'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-116963275037132214</id><published>2007-01-24T11:59:00.000+02:00</published><updated>2007-01-24T11:59:10.446+02:00</updated><title type='text'>אני לא ליצן</title><content type='html'>&lt;p align="right"&gt;אבא: גל, תפסיקי לאכול את השקית&lt;br&gt;גל: אבל אני לא אוכלת אותה&lt;br&gt;אבא: גל, אני לא רוצה שתשימי את השקית בפה, גם אם את לא אוכלת אותה. אני לא צוחק איתך&lt;br&gt;גל: אבא, אתה לא מצחיק - אתה לא ליצן!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-116963275037132214?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/116963275037132214/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=116963275037132214' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/116963275037132214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/116963275037132214'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/01/blog-post.html' title='אני לא ליצן'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15758573.post-116949072648349316</id><published>2007-01-22T20:32:00.000+02:00</published><updated>2007-01-22T20:32:06.566+02:00</updated><title type='text'>Did you know - Installing Team Foundation Server is a nightmare!!!!!!!!!!!!!!!!</title><content type='html'>&lt;p&gt;Just to name some issues:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Prerequisites (or &lt;strong&gt;Things You Should Install Yourself Because The TFS Setup Team Was Too Lazy To Make The Process Smooth And Automatic&lt;/strong&gt;)&lt;/li&gt; &lt;ol&gt; &lt;li&gt;IIS&lt;/li&gt; &lt;li&gt;SQL 2005&lt;/li&gt; &lt;ol&gt; &lt;li&gt;+ Some hotfixes&lt;/li&gt;&lt;/ol&gt; &lt;li&gt;.NET 2.0&lt;/li&gt; &lt;ol&gt; &lt;li&gt;+ Some hotfixes&lt;/li&gt;&lt;/ol&gt; &lt;li&gt;SharePoint Services&lt;/li&gt; &lt;li&gt;Team Foundation Server&lt;/li&gt; &lt;li&gt;Visual Studio Team Foundation Server Quiescence GDR&lt;/li&gt; &lt;li&gt;Visual Studio 2005 SP1&lt;/li&gt;&lt;/ol&gt; &lt;li&gt;The setup requires some 3-4 users to be already defined on the domain (that is - you don't have the option to add these during the installation process).&lt;/li&gt; &lt;li&gt;TFS includes a license for SQL 2005 Standard Edition. But nobody tells you where you you can find the required Product Key. So we're now on the phone with Microsoft to figure that out...&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;I can understand problems related to the conversion of existing source management systems to TFS (up to some extent). But I NEVER thought ANY software could be THAT cumbersome to install. We didn't even reach the point of converting the data, and frankly if the setup is so complicated, I shiver at thinking of the&amp;nbsp;complications we will encounter at converting...&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15758573-116949072648349316?l=ilanas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ilanas.blogspot.com/feeds/116949072648349316/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15758573&amp;postID=116949072648349316' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/116949072648349316'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15758573/posts/default/116949072648349316'/><link rel='alternate' type='text/html' href='http://ilanas.blogspot.com/2007/01/did-you-know-installing-team.html' title='Did you know - Installing Team Foundation Server is a nightmare!!!!!!!!!!!!!!!!'/><author><name>Ilan Assayag</name><uri>http://www.blogger.com/profile/05885131038068500210</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/239/7562/320/CIMG57031%20%28Small%29.jpg'/></author><thr:total>2</thr:total></entry></feed>
