<?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:blogger='http://schemas.google.com/blogger/2008' 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-5155047601672205479</id><updated>2024-11-01T12:32:39.053+02:00</updated><category term="Web"/><category term="Internet"/><category term="Books"/><category term="Design"/><category term="Events"/><category term="Hacks"/><category term="JavaScript"/><category term="OSS"/><category term="Productivity"/><category term="Silverlight"/><category term="TDD"/><category term="Unit Testing"/><category term="Visual Studio"/><category term="Windows"/><title type='text'>The Code Lodge</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://codelodge.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5155047601672205479/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://codelodge.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/12183723172822463034</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>11</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5155047601672205479.post-3444939249527971268</id><published>2015-08-22T19:10:00.001+03:00</published><updated>2015-09-03T10:31:43.766+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Hacks"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows"/><title type='text'>Including a Network Drive in a Library on Windows 7/8/10</title><content type='html'>Hi all,&lt;br /&gt;
&lt;br /&gt;
Long time since I wrote something here. Hopefully this post will help wake things up a bit :)&lt;br /&gt;
&lt;br /&gt;
Recently I got a new home NAS server (actually it is was a gift) - a&lt;a href=&quot;http://www.wdc.com/en/products/products.aspx?id=1140&quot; target=&quot;_blank&quot;&gt; 4 TB WD My Cloud&lt;/a&gt;, which i&#39;m very impressed with by now (But that&#39;s a topic for a different post ;))&lt;br /&gt;
So... the first thing a did after setting this cute NAS up, was start moving stuff to it from my computer&#39;s local HD.&lt;br /&gt;
&lt;br /&gt;
Problem started when the libraries I configured on my machine were no longer pointing the right place, so I tried adding the folder on the NAS&#39;s network share, and I was surprised with this message:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmTxz55oKuIChU3Y6h5rfZX75e4gqod3oI1kFWenhxZw-Bj_6obOUwWngzXLs24AQYYuizdk4pptD7m0XGuEP8-EpNBwVN2om058FsmcLsZE9NwXahld8TShio1B5eguy-eJBZMc2-UpqP/s1600/1.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmTxz55oKuIChU3Y6h5rfZX75e4gqod3oI1kFWenhxZw-Bj_6obOUwWngzXLs24AQYYuizdk4pptD7m0XGuEP8-EpNBwVN2om058FsmcLsZE9NwXahld8TShio1B5eguy-eJBZMc2-UpqP/s1600/1.PNG&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
After googling for a bit I found that people say that you can map a network drive if it marked as &lt;i&gt;available offline&lt;/i&gt;. You can click on the network drive (after mapping it), and click &quot;Always Available Offline&quot;, like this:&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXEDhgTVJuHfdyBf8oR3GEH5jaOx66B7QmfhkcQivJeBtY-eM7vibnT1PM4IHlcNEBVITx6EFexSSm6Gsne0KyKniduQgw9_UGzJATf03uiKJ3ZDH4Dh96wdb7-YTb3VBqhpUYE9ragl7K/s1600/6.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXEDhgTVJuHfdyBf8oR3GEH5jaOx66B7QmfhkcQivJeBtY-eM7vibnT1PM4IHlcNEBVITx6EFexSSm6Gsne0KyKniduQgw9_UGzJATf03uiKJ3ZDH4Dh96wdb7-YTb3VBqhpUYE9ragl7K/s1600/6.PNG&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
But this will automatically create a local copy of your stuff... and I don&#39;t want that, right? :)&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
So, the next option is a bit of a hack... you will have to &quot;trick&quot; the library to think that your network folder is actually &lt;i&gt;local&lt;/i&gt;, and i will show you how to, using the &lt;a href=&quot;https://technet.microsoft.com/en-us/library/cc753194.aspx&quot; target=&quot;_blank&quot;&gt;mklink command&lt;/a&gt;.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
These are the steps:&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Create a folder on your local machine. Let&#39;s say - &quot;C:\Users\Leeran\WdMyCloud&quot;.&lt;/li&gt;
&lt;li&gt;In that folder, create a &quot;dummy&quot; folder like &quot;Videos&quot;:&lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2_qlVdIiXyZhYU_FI8XpYkcIOGFVzhvB5_Yx9BHO6CriBYb3-kDH5vGDTviexF2XWWQomEOcm-eqNleRw3ki2rrGqKxDHemu6dvqyh629ng_CvlJtFhzwbmHLeXqCFOe2_qJcl-kkWAZC/s1600/2.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;152&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2_qlVdIiXyZhYU_FI8XpYkcIOGFVzhvB5_Yx9BHO6CriBYb3-kDH5vGDTviexF2XWWQomEOcm-eqNleRw3ki2rrGqKxDHemu6dvqyh629ng_CvlJtFhzwbmHLeXqCFOe2_qJcl-kkWAZC/s640/2.PNG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Go to the Videos library and add that dummy folder to you lib, you should see something like this:&lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXEBXFWuKEGrAP1v-c28s_OVUm6PBbxWiGqQKDq2LwmAoz7_2cwljqmV-R_mKpd0O3scb2ViXJ0Ph3q9OIbBgb4oP5qK2qxRrpcB06u1khAZFZ_AOxyzQypUuc-5QdAmkGAbSF6pWn99Sa/s1600/3.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;361&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXEBXFWuKEGrAP1v-c28s_OVUm6PBbxWiGqQKDq2LwmAoz7_2cwljqmV-R_mKpd0O3scb2ViXJ0Ph3q9OIbBgb4oP5qK2qxRrpcB06u1khAZFZ_AOxyzQypUuc-5QdAmkGAbSF6pWn99Sa/s400/3.PNG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delete the dummy folder!&lt;/li&gt;
&lt;li&gt;Pop up cmd, and make a symbolic link instead of the dummy folder (same name), to the remote folder, using the mklink command:&lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxVsf9E9Sm84MO6-aK31uEiWd1lR67GlHqNgLIqeo7KTiDJHzi_dCZcIeMUbMb8HUUJeAm9pDmFHsxQ8-yqKjAcXc-a4m8DnFL8mT1AlxZe1xBVyU9Z5Zg5oBCsYPtiUAwGWUvrFTVnSNt/s1600/4.PNG&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; margin-bottom: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;122&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxVsf9E9Sm84MO6-aK31uEiWd1lR67GlHqNgLIqeo7KTiDJHzi_dCZcIeMUbMb8HUUJeAm9pDmFHsxQ8-yqKjAcXc-a4m8DnFL8mT1AlxZe1xBVyU9Z5Zg5oBCsYPtiUAwGWUvrFTVnSNt/s640/4.PNG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;DONE! If you&#39;ll take a look at the library, you&#39;ll see that the &quot;test.txt&quot; file from before, was magically replaced by you real (non-indexed, non-synced) files from your network folder:&lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinOBL8e7zVBLS3FPTbFjwhhKoT0QrFPlC_c92dlLfptV8okMIg8KGgi-vHpjB1_JR0smSRFpi2Q2hvBdglwhQlHe9Saem18ylYo5gFoWBIEFtV6qZsEKY5O7QUgWJ209rzZGYuS-nE3hEf/s1600/5.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinOBL8e7zVBLS3FPTbFjwhhKoT0QrFPlC_c92dlLfptV8okMIg8KGgi-vHpjB1_JR0smSRFpi2Q2hvBdglwhQlHe9Saem18ylYo5gFoWBIEFtV6qZsEKY5O7QUgWJ209rzZGYuS-nE3hEf/s1600/5.PNG&quot; /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Hope it helps!&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://codelodge.blogspot.com/feeds/3444939249527971268/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://codelodge.blogspot.com/2015/08/including-network-drive-in-library-on.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5155047601672205479/posts/default/3444939249527971268'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5155047601672205479/posts/default/3444939249527971268'/><link rel='alternate' type='text/html' href='http://codelodge.blogspot.com/2015/08/including-network-drive-in-library-on.html' title='Including a Network Drive in a Library on Windows 7/8/10'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/12183723172822463034</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmTxz55oKuIChU3Y6h5rfZX75e4gqod3oI1kFWenhxZw-Bj_6obOUwWngzXLs24AQYYuizdk4pptD7m0XGuEP8-EpNBwVN2om058FsmcLsZE9NwXahld8TShio1B5eguy-eJBZMc2-UpqP/s72-c/1.PNG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5155047601672205479.post-5732109663332639197</id><published>2013-11-27T14:45:00.000+02:00</published><updated>2013-11-27T14:45:46.112+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Productivity"/><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio"/><title type='text'>Selecting Code Vertically in Visual Studio</title><content type='html'>Here&#39;s a cool feature that you probably not familiar with - You can make a selection box of text while pressing Alt key while dragging the mouse, within Visual Studio.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;div&gt;
This is what happens when selecting text in the standard way:&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyl7HmI4EzsKAMuKElRaR31oZlBcxTeu9les-aLHTTzpbHPctWROdhM6gRTqJAYyWO49l1HCWit7AQAfczYwdjWVuY0e0MticZE-VCAcosN296zy7m5ZLXP66TcJqAqZe5QK3Y6YLfIawD/s1600/1.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyl7HmI4EzsKAMuKElRaR31oZlBcxTeu9les-aLHTTzpbHPctWROdhM6gRTqJAYyWO49l1HCWit7AQAfczYwdjWVuY0e0MticZE-VCAcosN296zy7m5ZLXP66TcJqAqZe5QK3Y6YLfIawD/s1600/1.JPG&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;font-size: 13px;&quot;&gt;&lt;span style=&quot;font-size: small; text-align: start;&quot;&gt;selecting text in the standard way&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;b&gt;&lt;u&gt;Here are some good use cases for this feature:&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;
Vertical selection of code:&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioNJcIU8BvQllhDk6rYymLQV7xtCji-_62jBMyM-B8VIQbeZXWLlULaNf4apGK1FlHAtSK_gbB19eRP-hfiPD6zVCH6s961rfUy3EY6OTj17nm6g0ufE54qzwFxyqWTxzB03w-RxZS9wel/s1600/2.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioNJcIU8BvQllhDk6rYymLQV7xtCji-_62jBMyM-B8VIQbeZXWLlULaNf4apGK1FlHAtSK_gbB19eRP-hfiPD6zVCH6s961rfUy3EY6OTj17nm6g0ufE54qzwFxyqWTxzB03w-RxZS9wel/s1600/2.JPG&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;font-size: 13px;&quot;&gt;&lt;span style=&quot;font-size: small; text-align: start;&quot;&gt;vertical selection of code&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
Zero length selection:&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEin9uzH2ok-VIj67dzuPtI70kLqvCRyjo-xp90uvU6_q9HMqel-OqljT0RvB7ckMJzMmbABKXN4w0I4uFbofyzihBc6yzgZ2Sb9U1pEBCZI0mt1hFkZn1Ak8j343_Q4idO9vJPH1S7ztygu/s1600/3.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEin9uzH2ok-VIj67dzuPtI70kLqvCRyjo-xp90uvU6_q9HMqel-OqljT0RvB7ckMJzMmbABKXN4w0I4uFbofyzihBc6yzgZ2Sb9U1pEBCZI0mt1hFkZn1Ak8j343_Q4idO9vJPH1S7ztygu/s1600/3.JPG&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: small; text-align: start;&quot;&gt;zero length selection&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&amp;nbsp;Multiple line typing:&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhBoE218yk3zGIOi_BdkVhL3heU5U5d7AVu_P77zL9y7mKFHI7h50BMZyVH9gcLLFf9v08ytMSQ-cT9DMz6rubo33lybVl9J5IUhCl4UtiBsKbSPuW9c6UyX_1DevucND9k9QzsB1eskSf/s1600/4.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhBoE218yk3zGIOi_BdkVhL3heU5U5d7AVu_P77zL9y7mKFHI7h50BMZyVH9gcLLFf9v08ytMSQ-cT9DMz6rubo33lybVl9J5IUhCl4UtiBsKbSPuW9c6UyX_1DevucND9k9QzsB1eskSf/s1600/4.JPG&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: small; text-align: start;&quot;&gt;multiple line typing&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;div&gt;
You can use this feature to a variety of purposes - adding, deleting, editing a vertical selection of code, also copying and pasting, and generally be more pragmatic :)&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://codelodge.blogspot.com/feeds/5732109663332639197/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://codelodge.blogspot.com/2013/11/selecting-code-vertically-in-visual.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5155047601672205479/posts/default/5732109663332639197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5155047601672205479/posts/default/5732109663332639197'/><link rel='alternate' type='text/html' href='http://codelodge.blogspot.com/2013/11/selecting-code-vertically-in-visual.html' title='Selecting Code Vertically in Visual Studio'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/12183723172822463034</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyl7HmI4EzsKAMuKElRaR31oZlBcxTeu9les-aLHTTzpbHPctWROdhM6gRTqJAYyWO49l1HCWit7AQAfczYwdjWVuY0e0MticZE-VCAcosN296zy7m5ZLXP66TcJqAqZe5QK3Y6YLfIawD/s72-c/1.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5155047601672205479.post-4368614063514559148</id><published>2013-06-16T21:50:00.001+03:00</published><updated>2013-06-16T21:53:39.678+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="OSS"/><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight"/><title type='text'>OSS at its Best</title><content type='html'>&lt;p&gt;I was on a quest for a good library for&amp;nbsp;Multi-Touch&amp;nbsp;support in a Silverlight application, when I found &lt;a href=&quot;http://multitouch.codeplex.com/&quot; target=&quot;_blank&quot;&gt;Multi-Touch Behaviors&lt;/a&gt; – which is a nice project that contains Windows Phone / Silverlight Behaviors and WPF samples implementing Multi-Touch Manipulation (Gestures) and Inertia, By Davide Zordan which by chance I also read his &lt;a href=&quot;http://www.davidezordan.net/blog/&quot; target=&quot;_blank&quot;&gt;blog&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So after deciding to give it a try, I searched for it on the &lt;a href=&quot;https://nuget.org/&quot; target=&quot;_blank&quot;&gt;NuGet gallery&lt;/a&gt;, which unfortunately yielded no results. I looked at the issues page and found an &lt;a href=&quot;https://multitouch.codeplex.com/workitem/14513&quot; target=&quot;_blank&quot;&gt;opened work item&lt;/a&gt; about adding a nugget package. That issue had only one vote, so I added another one myself.&lt;/p&gt;
&lt;p&gt;Next morning (&lt;i&gt;less than 24 hours!&lt;/i&gt;) I received an update that the feature was implemented, also a &lt;a href=&quot;http://www.davidezordan.net/blog/?p=7052&quot; target=&quot;_blank&quot;&gt;post on Davide’s blog&lt;/a&gt;, and the package was already up on the &lt;a href=&quot;https://nuget.org/packages/MultiTouchBehaviors/&quot; target=&quot;_blank&quot;&gt;NuGet gallery&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;That friends, Is open source software at its best.&lt;/p&gt;
&lt;p&gt;Thanks Davide :)&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://codelodge.blogspot.com/feeds/4368614063514559148/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://codelodge.blogspot.com/2013/06/oss-at-its-best.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5155047601672205479/posts/default/4368614063514559148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5155047601672205479/posts/default/4368614063514559148'/><link rel='alternate' type='text/html' href='http://codelodge.blogspot.com/2013/06/oss-at-its-best.html' title='OSS at its Best'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/12183723172822463034</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5155047601672205479.post-1522697379927301538</id><published>2013-04-20T19:08:00.002+03:00</published><updated>2013-04-20T20:07:15.920+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Events"/><title type='text'>IDF .NET Day 2013</title><content type='html'>&lt;p&gt;Last month (19/3/2013) a &lt;a href=&quot;http://dennis-nerush.blogspot.co.il/&quot;&gt;friend of mine&lt;/a&gt;, who works in the .NET infrastructure team, was organizing a one-day event which was supposed to be for all .NET teams in Ofek. &lt;/p&gt;
&lt;p&gt;I was asked to give a presentation on that event about multi-touch if I want to. This was because my team and I started a prototype for multi-touch screens a few months back, and he wanted me the share things and thought that I have learned from that experience (future post will be on that too :)). So I said to him: “sure why not”. I mean how bad could that be? :)&lt;/p&gt;
&lt;p&gt;Apparently many people from different departments from the organization had heard about this event and they were also interested in it, so all of a sudden I was supposed to talk in front of 200 .NET folks from the entire organization, at the Microsoft Israel R&amp;amp;D Center auditorium. God damn!&lt;/p&gt;
&lt;p&gt;I was so excited about this upcoming event, I worked very hard on the presentation and my speech technique, did a few rehearsals, and finally the awaited day arrived.&lt;/p&gt;
&lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-crQBNRk3zTO4IXhf3PclFypwO_3RdfIicONV6dTDQCz2KOtBow0FnhRUkhuhNN0_APdzSEnsKgHkZqqFgqscMTjgBshXP4N9OgajZ6Vs7hO-y2PIgpFTzxFtjTlvkXDvvjm2JV9144cn/s1600/20130317_114941.jpg&quot;&gt;&lt;img title=&quot;My presenter tag :)&quot; border=&quot;0&quot; alt=&quot;My presenter tag :)&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-crQBNRk3zTO4IXhf3PclFypwO_3RdfIicONV6dTDQCz2KOtBow0FnhRUkhuhNN0_APdzSEnsKgHkZqqFgqscMTjgBshXP4N9OgajZ6Vs7hO-y2PIgpFTzxFtjTlvkXDvvjm2JV9144cn/s320/20130317_114941.jpg&quot; width=&quot;268&quot; height=&quot;385&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgm62W6xhX3iw2Q6lSknQqxdLnoRZ8qMJx0pPS3wH8W69DRBQ-MxymHkK_DzZfxsyQ54KnssG2Ly9gC_r8VT6vXSYWCKZ45kJFDSC52QC_MVxC93XRkNWAVx1msVK4sOcBWLfgwT9CAnkG0/s1600/SAM_0038.JPG&quot;&gt;&lt;img title=&quot;.NET Day 2013 Agenda&quot; border=&quot;0&quot; alt=&quot;.NET Day 2013 Agenda&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgm62W6xhX3iw2Q6lSknQqxdLnoRZ8qMJx0pPS3wH8W69DRBQ-MxymHkK_DzZfxsyQ54KnssG2Ly9gC_r8VT6vXSYWCKZ45kJFDSC52QC_MVxC93XRkNWAVx1msVK4sOcBWLfgwT9CAnkG0/s320/SAM_0038.JPG&quot; width=&quot;268&quot; height=&quot;422&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiX2kKXt0JLzb8BLS-uY7VfO-O4YVDawDVFVpSGXeUCecDQ59tYpAMp4k9xwS1U3rDiftpZB0PWPz7T1Csax8QMv45rWjkUQxhSCuc5NtyD7agPPl54JyjJ_piL0-fVAgVCfsnPRvUuqWQJ/s1600/20130319_085653.jpg&quot;&gt;&lt;img title=&quot;Breakfast at Microsoft Israel R&amp;amp;D Center&quot; border=&quot;0&quot; alt=&quot;Breakfast at Microsoft Israel R&amp;amp;D Center&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiX2kKXt0JLzb8BLS-uY7VfO-O4YVDawDVFVpSGXeUCecDQ59tYpAMp4k9xwS1U3rDiftpZB0PWPz7T1Csax8QMv45rWjkUQxhSCuc5NtyD7agPPl54JyjJ_piL0-fVAgVCfsnPRvUuqWQJ/s320/20130319_085653.jpg&quot; width=&quot;431&quot; height=&quot;348&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtt53JFrlmTduk_xbL0CiPiokBC_Ta6iasHlR0Ab1MYFfRNmKyMaAlshKDqUQ6i-70TBl-bMOj26jbdjy_zme2X7Iscg0bi4qelwgsZKjVFITlDy72aByUHDI7USGqh3DVuk2kTDZAVskS/s1600/SAM_0091.JPG&quot;&gt;&lt;img title=&quot;Myself&quot; border=&quot;0&quot; alt=&quot;SAM_0091&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtt53JFrlmTduk_xbL0CiPiokBC_Ta6iasHlR0Ab1MYFfRNmKyMaAlshKDqUQ6i-70TBl-bMOj26jbdjy_zme2X7Iscg0bi4qelwgsZKjVFITlDy72aByUHDI7USGqh3DVuk2kTDZAVskS/s320/SAM_0091.JPG&quot; width=&quot;445&quot; height=&quot;313&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCvUj1zi2tyD5EngrhqV2YJLQJ7HqWb4jPMEIKLq-HYj2Wqj_Dm4hoNng-BrBm0ealgxTzjsmk4IYV-heh3czB60jyBB0NCFmEoDllYBhIUJKsLqoVhOHYGcHxtaqx8yk6Rx1VecStt_1b/s1600/SAM_0116.JPG&quot;&gt;&lt;img title=&quot;Preparations&quot; border=&quot;0&quot; alt=&quot;Preparations&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCvUj1zi2tyD5EngrhqV2YJLQJ7HqWb4jPMEIKLq-HYj2Wqj_Dm4hoNng-BrBm0ealgxTzjsmk4IYV-heh3czB60jyBB0NCFmEoDllYBhIUJKsLqoVhOHYGcHxtaqx8yk6Rx1VecStt_1b/s320/SAM_0116.JPG&quot; width=&quot;275&quot; height=&quot;424&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEqa9MOcgJsvj6dx6bo6MSOYgykreyg-Q1Qrl2s6L-w8SBMXIUB0SjtR_tqri4zPEHefSAo5UWM6VP09_EutbKPhU7bCaPMX1SsAlvVaWiOKoOCVAcz2f_zUqB2Gz3ixUVi7LtyzgBEoPl/s1600/SAM_0124.JPG&quot;&gt;&lt;img title=&quot;Preparations&quot; border=&quot;0&quot; alt=&quot;Preparations&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEqa9MOcgJsvj6dx6bo6MSOYgykreyg-Q1Qrl2s6L-w8SBMXIUB0SjtR_tqri4zPEHefSAo5UWM6VP09_EutbKPhU7bCaPMX1SsAlvVaWiOKoOCVAcz2f_zUqB2Gz3ixUVi7LtyzgBEoPl/s320/SAM_0124.JPG&quot; width=&quot;445&quot; height=&quot;314&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg21FdkRr2K18s9aMCsx7PyxQi6FyFXtaEZnu_hoC1bE2jta2h0ObAaH05CsBrgz9OYIksCngXCgmvcVWTnwNSHEbGwYmSDhz851OHnwcZxCEjlSD6o5mjIIvykzr4fHk0H61Aimuz96wql/s1600/SAM_0286.JPG&quot;&gt;&lt;img title=&quot;Multi-Touch!&quot; border=&quot;0&quot; alt=&quot;Multi-Touch!&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg21FdkRr2K18s9aMCsx7PyxQi6FyFXtaEZnu_hoC1bE2jta2h0ObAaH05CsBrgz9OYIksCngXCgmvcVWTnwNSHEbGwYmSDhz851OHnwcZxCEjlSD6o5mjIIvykzr4fHk0H61Aimuz96wql/s320/SAM_0286.JPG&quot; width=&quot;446&quot; height=&quot;350&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisznWp9IXQ9vbUu5rIrpS3DfRetHeUVPg-DPkuwxcV2Ecyx7ZSIuIuRC6GLZ43IYVzEYT39jfULHqNbRxm7_AwZpb4bl94_YsMM1uSrvwJ66tfXgs1HyXa4zqviVA7S-jpOxFBN0uDlKNb/s1600/SAM_0290.JPG&quot;&gt;&lt;img title=&quot;In action&quot; border=&quot;0&quot; alt=&quot;In action&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisznWp9IXQ9vbUu5rIrpS3DfRetHeUVPg-DPkuwxcV2Ecyx7ZSIuIuRC6GLZ43IYVzEYT39jfULHqNbRxm7_AwZpb4bl94_YsMM1uSrvwJ66tfXgs1HyXa4zqviVA7S-jpOxFBN0uDlKNb/s320/SAM_0290.JPG&quot; width=&quot;446&quot; height=&quot;350&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWNUw-JHBxsMsVBKB1YCoRfAZWXjVEixjGkXYszqqLNtsIspLLyBpy3ZGbVFSl0xepUD-O_2QhliX0sswNq07x_F6DRezMBP2qt7VV1Kzj4_tJmcQd7pR1hf_zle9jDTqZy71baylcfvi_/s1600/SAM_0217.JPG&quot;&gt;&lt;img title=&quot;The audience&quot; border=&quot;0&quot; alt=&quot;The audience&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWNUw-JHBxsMsVBKB1YCoRfAZWXjVEixjGkXYszqqLNtsIspLLyBpy3ZGbVFSl0xepUD-O_2QhliX0sswNq07x_F6DRezMBP2qt7VV1Kzj4_tJmcQd7pR1hf_zle9jDTqZy71baylcfvi_/s320/SAM_0217.JPG&quot; width=&quot;447&quot; height=&quot;314&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_bXibjET71ZEMHztISQdoMKotJXL2tmko2A3FI61n09iF1ypsq4zrTTZqkT59sjWgjsufkujTsd7mBwvJX2ZW7jQdNSEYXosKoieL7CkKOeLZAOnV2ISEwYmABIQh4Ym0LQdwJLEhvmdg/s1600/20130319_140712.jpg&quot;&gt;&lt;img title=&quot;In action&quot; border=&quot;0&quot; alt=&quot;In action&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_bXibjET71ZEMHztISQdoMKotJXL2tmko2A3FI61n09iF1ypsq4zrTTZqkT59sjWgjsufkujTsd7mBwvJX2ZW7jQdNSEYXosKoieL7CkKOeLZAOnV2ISEwYmABIQh4Ym0LQdwJLEhvmdg/s320/20130319_140712.jpg&quot; width=&quot;446&quot; height=&quot;350&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align=&quot;center&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;em&gt;(Sorry for the poor quality, believe me – those are the best ones)&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;It was a BLAST!&lt;/p&gt;
&lt;p&gt;At first I was very excited and even a little anxious, but that feeling was gone after the first 3 minutes or so. That was probably thanks to the preparations I’ve done before that day.&lt;/p&gt;
&lt;p&gt;I’m glad I got this opportunity to speak in front of this audience, and even happier I accepted it and had it done :) &lt;/p&gt;
&lt;p&gt;The slides are up on my SkyDrive and publicly available here: &lt;a href=&quot;http://sdrv.ms/11nWEGk&quot;&gt;http://sdrv.ms/11nWEGk&lt;/a&gt; . It may not completely work on the PowerPoint web app, so be welcome to download it and run it from your computer.&lt;/p&gt;
&lt;p&gt;Cheers.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://codelodge.blogspot.com/feeds/1522697379927301538/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://codelodge.blogspot.com/2013/04/idf-net-day-2013_20.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5155047601672205479/posts/default/1522697379927301538'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5155047601672205479/posts/default/1522697379927301538'/><link rel='alternate' type='text/html' href='http://codelodge.blogspot.com/2013/04/idf-net-day-2013_20.html' title='IDF .NET Day 2013'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/12183723172822463034</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-crQBNRk3zTO4IXhf3PclFypwO_3RdfIicONV6dTDQCz2KOtBow0FnhRUkhuhNN0_APdzSEnsKgHkZqqFgqscMTjgBshXP4N9OgajZ6Vs7hO-y2PIgpFTzxFtjTlvkXDvvjm2JV9144cn/s72-c/20130317_114941.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5155047601672205479.post-2589294196713893474</id><published>2013-03-15T11:24:00.000+02:00</published><updated>2013-03-15T13:54:59.400+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Internet"/><title type='text'>Google Reader is Retiring</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: start;&quot;&gt;
July 1, 2013 will be a very sad day.&lt;br /&gt;
&lt;br /&gt;
I woke up this morning, went to the shower, got something to eat and sat down with my laptop. As I usually do - first things first - I checked out my Gmail,&amp;nbsp;Facebook, and&amp;nbsp;Google&amp;nbsp;Reader.&lt;/div&gt;
&lt;div style=&quot;text-align: start;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: start;&quot;&gt;
So I was after my Gmail and Facebook&amp;nbsp;routine&amp;nbsp;and ready to read some blog posts. I got into Reader and I was very sad the see this pop-up:&lt;/div&gt;
&lt;div style=&quot;text-align: start;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrnUTKwkV38lrzuuqmmzhh0WpNLH7MyVvGNeLbncEGkcQV4aWRHohEUgTObloCk-g7_N0eyCshdlWr4e7QFFV8fC4I_tacWX3pjD8e0yhcCnttwlJUuIg-UA-VjAU05WihXAqbQU7TohQd/s1600/Capture.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;196&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrnUTKwkV38lrzuuqmmzhh0WpNLH7MyVvGNeLbncEGkcQV4aWRHohEUgTObloCk-g7_N0eyCshdlWr4e7QFFV8fC4I_tacWX3pjD8e0yhcCnttwlJUuIg-UA-VjAU05WihXAqbQU7TohQd/s400/Capture.PNG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Google is shutting down Google Reader?&lt;br /&gt;
No way.&lt;br /&gt;
I was like:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4FcOQ5pV3-5IT7ot8Gopk9rDwazO8EFGjDNGXobshVaOtJS3Rg7XzRrBuEOK-jU7ncBty-eY4VcRaGmIzpTh206ZYb3fuYrqFWf5C_tE3rDid-xYvMjVGd2gu96ZlioybgfYrqF4lOqDc/s1600/Capture2.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;254&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4FcOQ5pV3-5IT7ot8Gopk9rDwazO8EFGjDNGXobshVaOtJS3Rg7XzRrBuEOK-jU7ncBty-eY4VcRaGmIzpTh206ZYb3fuYrqFWf5C_tE3rDid-xYvMjVGd2gu96ZlioybgfYrqF4lOqDc/s320/Capture2.PNG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
I started searching the web for a reason for this same. Here&#39;s the&amp;nbsp;&lt;a href=&quot;http://googlereader.blogspot.co.il/search/label/reader&quot;&gt;official announcement&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Google reader is a &lt;u style=&quot;font-style: italic;&quot;&gt;Great&lt;/u&gt;&amp;nbsp;product, and besides Gmail, I use it&amp;nbsp;almost on a daily basis. It has a nice and clean UI, its&amp;nbsp;lightweight, and it gets the job done without any BS (ads). I also loved the fact that it&#39;s a web app. I don&#39;t want to install a messy client app to do a simple job like this...&lt;br /&gt;
&lt;br /&gt;
The community already has set up a petition (&lt;a href=&quot;http://keepgooglereader.com/&quot;&gt;keepgooglereader.com&lt;/a&gt;)&amp;nbsp;to ask Google to keep Google Reader alive, and if not - release to code so that the OSS community will find a way to keep it going. If you like Google Reader please sign it.&lt;br /&gt;
&lt;br /&gt;
Off to find an alternative... Any&amp;nbsp;recommendations? :)</content><link rel='replies' type='application/atom+xml' href='http://codelodge.blogspot.com/feeds/2589294196713893474/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://codelodge.blogspot.com/2013/03/google-reader-is-retiring.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5155047601672205479/posts/default/2589294196713893474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5155047601672205479/posts/default/2589294196713893474'/><link rel='alternate' type='text/html' href='http://codelodge.blogspot.com/2013/03/google-reader-is-retiring.html' title='Google Reader is Retiring'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/12183723172822463034</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrnUTKwkV38lrzuuqmmzhh0WpNLH7MyVvGNeLbncEGkcQV4aWRHohEUgTObloCk-g7_N0eyCshdlWr4e7QFFV8fC4I_tacWX3pjD8e0yhcCnttwlJUuIg-UA-VjAU05WihXAqbQU7TohQd/s72-c/Capture.PNG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5155047601672205479.post-4416233433768936165</id><published>2012-11-09T20:16:00.001+02:00</published><updated>2012-11-09T20:31:59.661+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript"/><category scheme="http://www.blogger.com/atom/ns#" term="Web"/><title type='text'>Closing all Child Windows using JavaScript</title><content type='html'>&lt;style type=&quot;text/css&quot;&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: 10px;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, &quot;Courier New&quot;, courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;br /&gt;&lt;/style&gt;  &lt;p&gt;Hi everyone,&lt;/p&gt; &lt;p&gt;Sorry that it took me so much time to write this 2nd part post, I was pretty loaded at work and personal life, and frankly, I still need to get used to write blog posts ;). I hope that in the future I will be able to write more often, and without these long pauses. Anyway, let’s get down to business.&lt;/p&gt; &lt;p&gt;In &lt;a href=&quot;http://www.codelodge.net/2012/07/child-windows-issues.html&quot;&gt;my last post&lt;/a&gt; I described the way we handle window opening in one of the web application we work on. Just to remind you, we have a single main page that has to be stayed open all the time. This page opens a lot of other page as pop-ups. Those pop-ups can open their own child windows, as pop-up &lt;em&gt;windows&lt;/em&gt; or pop-up &lt;em&gt;modal dialogs. &lt;/em&gt;Actually it looks like this:&lt;/p&gt; &lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;http://lh6.ggpht.com/-glJT1lz9oAo/UJ1IZAO0xmI/AAAAAAAAAjQ/TuyUmwFW6fs/s1600-h/childwin3_thumb23.jpg&quot;&gt;&lt;img title=&quot;child-windows&quot; border=&quot;0&quot; alt=&quot;child-windows&quot; src=&quot;http://lh4.ggpht.com/-PagdNz7VoU4/UJ1IaEniEtI/AAAAAAAAAjY/XFXyBiCzP9I/childwin3_thumb2_thumb.jpg?imgmax=800&quot; width=&quot;297&quot; height=&quot;274&quot;&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;I will actually go straight to the implementation of this, but first there are few things we have to remember:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;The main page has to be always open, and when it closes all the child windows has to be closed to. So we need to close the child windows when the parent windows are closed, (or starts the process of closing).  &lt;li&gt;When there is a modal dialog opened, the parent window that opened it is frozen, hence cannot run any JavaScript.  &lt;li&gt;The child window cannot always know about his parent window, but the parent window always knows about all of his child windows. That means that the parent should be responsible for the closure of the children.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Given all that, this is how we need to close the child windows:&lt;/p&gt; &lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;http://lh6.ggpht.com/-EP0Vde2Zh4o/UJ1IbQuPP8I/AAAAAAAAAjc/vt_TK6ZNysQ/s1600-h/closing-windows%25255B4%25255D.gif&quot;&gt;&lt;img title=&quot;closing-windows&quot; alt=&quot;closing-windows&quot; src=&quot;http://lh4.ggpht.com/-kupMpnifVCU/UJ1Icr4AoII/AAAAAAAAAjo/ykWSQtux9as/closing-windows_thumb%25255B2%25255D.gif?imgmax=800&quot; width=&quot;414&quot; height=&quot;304&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Finally, code:&lt;/p&gt; &lt;p&gt;Every parent window (e.g. window that opens other windows) should hold a list of references to its child windows, and when it opens a new window it should be added to that list. So we will add this JavaScript code to the head part of the page:&lt;/p&gt;&lt;pre class=&quot;csharpcode&quot;&gt;&amp;lt;script type=&lt;span class=&quot;str&quot;&gt;&quot;text/javascript&quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;    &lt;span class=&quot;kwrd&quot;&gt;var&lt;/span&gt; childWindows = [];&lt;br /&gt;    &lt;br /&gt;    &lt;span class=&quot;kwrd&quot;&gt;function&lt;/span&gt; OpenChildWindow() {&lt;br /&gt;        &lt;span class=&quot;kwrd&quot;&gt;var&lt;/span&gt; openedWindow = window.open(url, pageName, &lt;span class=&quot;kwrd&quot;&gt;params&lt;/span&gt;);        &lt;br /&gt;        childWindows[childWindows.length] = openedWindow;&lt;br /&gt;    }&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;This should be in every page that can open other pages as &lt;em&gt;separate window&lt;/em&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;But what about this modal dialog thing? Well, this can be a little bit tricky. Because the &lt;font size=&quot;2&quot; face=&quot;Consolas&quot;&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/ie/ms536759.aspx&quot;&gt;window.openModalDialog()&lt;/a&gt;&lt;/font&gt; function doesn’t return a reference of the dialog, we need to do something like this in the parent script:&lt;/p&gt;&lt;pre class=&quot;csharpcode&quot;&gt;&amp;lt;script type=&lt;span class=&quot;str&quot;&gt;&quot;text/javascript&quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;    &lt;span class=&quot;kwrd&quot;&gt;var&lt;/span&gt; childWindows = [];&lt;br /&gt;    &lt;br /&gt;    &lt;span class=&quot;kwrd&quot;&gt;function&lt;/span&gt; OpenModalDialog() {&lt;br /&gt;        window.showModalDialog(url, window, &lt;span class=&quot;kwrd&quot;&gt;params&lt;/span&gt;);&lt;br /&gt;    }&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;And this script in the child dialog:&lt;/p&gt;&lt;pre class=&quot;csharpcode&quot;&gt;&amp;lt;script type=&lt;span class=&quot;str&quot;&gt;&quot;text/javascript&quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;    window.dialogArguments.childWindows[window.dialogArguments.childWindows.length] = window;&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;This code will pass a reference of the parent window to the child in the second argument (which can used to send all sort of data to the modal dialog), and the modal dialog is responsible to register itself to his parents’ &lt;font size=&quot;2&quot; face=&quot;Consolas&quot;&gt;childWindows&lt;/font&gt; list, when it’s loaded.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Following this pattern in all of the windows, and you will be able to get to any window from the main page within your code. This is important because of #3 above.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Next, I added this code the main page:&lt;/p&gt;&lt;pre class=&quot;csharpcode&quot;&gt;&amp;lt;script type=&lt;span class=&quot;str&quot;&gt;&quot;text/javascript&quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;    &lt;span class=&quot;kwrd&quot;&gt;function&lt;/span&gt; CloseAllChildWindows(window) {&lt;br /&gt;        &lt;span class=&quot;kwrd&quot;&gt;for&lt;/span&gt; (&lt;span class=&quot;kwrd&quot;&gt;var&lt;/span&gt; i = 0; i &amp;lt; window.childWindows.length; i++) {&lt;br /&gt;            &lt;span class=&quot;kwrd&quot;&gt;if&lt;/span&gt; ((&lt;span class=&quot;kwrd&quot;&gt;typeof&lt;/span&gt; window.childWindows[i].childWindows != &lt;span class=&quot;str&quot;&gt;&quot;unknown&quot;&lt;/span&gt;) &amp;amp;&amp;amp;&lt;br /&gt;                (&lt;span class=&quot;kwrd&quot;&gt;typeof&lt;/span&gt; window.childWindows[i].childWindows != &lt;span class=&quot;str&quot;&gt;&quot;undefined&quot;&lt;/span&gt;)) {&lt;br /&gt;                &lt;span class=&quot;kwrd&quot;&gt;if&lt;/span&gt; (window.childWindows[i].childWindows.length &amp;gt; 0) {&lt;br /&gt;                    CloseAllChildWindows(window.childWindows[i]);&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;            &lt;span class=&quot;kwrd&quot;&gt;if&lt;/span&gt; (!window.childWindows[i].closed) {&lt;br /&gt;                window.childWindows[i].close();&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;This main page function will be called when the &lt;font size=&quot;2&quot; face=&quot;Consolas&quot;&gt;&lt;a href=&quot;http://www.w3schools.com/jsref/event_onunload.asp&quot;&gt;body.onunload&lt;/a&gt;&lt;/font&gt; is fired:&lt;/p&gt;&lt;pre class=&quot;csharpcode&quot;&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;body&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;onunload&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;CloseAllChildWindows()&quot;&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;It will go thru all windows, recursively closing all of them, starting from the youngest up to the oldest, and finally the main page will close itself. This will take care of #1 above.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;You can notice that the function always check the second hierarchy from the current window. That’s because #2 - The script can’t ask a direct child window to close it’s modal child window, because this will hand the browser process, because the JavaScript code is jammed. Remember modal dialogs freeze their parent window? :)&lt;/p&gt;&lt;br /&gt;&lt;p&gt;You can enhance this logic, and check if there are child windows opened, and if there are, prompt the user and ask him if he is sure that he wants to leave the website. Actually, I’ve done this. You can achieve by adding this script to the main page:&lt;/p&gt;&lt;pre class=&quot;csharpcode&quot;&gt;    &lt;span class=&quot;kwrd&quot;&gt;function&lt;/span&gt; ThereAreOpenedChildWindows() {&lt;br /&gt;        &lt;span class=&quot;kwrd&quot;&gt;for&lt;/span&gt; (&lt;span class=&quot;kwrd&quot;&gt;var&lt;/span&gt; i = 0; i &amp;lt; window.childWindows.length; i++) {&lt;br /&gt;            &lt;span class=&quot;kwrd&quot;&gt;if&lt;/span&gt; (!window.childWindows[i].closed) {&lt;br /&gt;                &lt;span class=&quot;kwrd&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;true&lt;/span&gt;;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        &lt;span class=&quot;kwrd&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;false&lt;/span&gt;;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span class=&quot;kwrd&quot;&gt;function&lt;/span&gt; PromtUserClosingAllWindows() {&lt;br /&gt;        &lt;span class=&quot;kwrd&quot;&gt;if&lt;/span&gt; (ThereAreOpenedChildWindows()) {&lt;br /&gt;            window.&lt;span class=&quot;kwrd&quot;&gt;event&lt;/span&gt;.returnValue = &lt;span class=&quot;str&quot;&gt;&quot;Leaving this page will close all child windows. Continue?&quot;&lt;/span&gt;;&lt;br /&gt;        }&lt;br /&gt;        &lt;span class=&quot;kwrd&quot;&gt;else&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;kwrd&quot;&gt;return&lt;/span&gt;;&lt;br /&gt;    };&lt;/pre&gt;&lt;br /&gt;&lt;p align=&quot;center&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;em&gt;Note: I tested this code on IE and Chrome. It only works on IE, but I was OK with it since this is what we needed. There is no guarantee that this code will work on different browsers.&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;And register to the &lt;font size=&quot;2&quot; face=&quot;Consolas&quot;&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/ie/ms536907(v=vs.85).aspx&quot;&gt;onbeforeunload&lt;/a&gt;&lt;/font&gt; event of the body:&lt;/p&gt;&lt;pre class=&quot;csharpcode&quot;&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;body&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;onunload&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;PromtUserClosingAllWindows()&quot;&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;That’s it! Hope this post was helpful, good luck closing child windows :)&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://codelodge.blogspot.com/feeds/4416233433768936165/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://codelodge.blogspot.com/2012/11/closing-all-child-windows-using.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5155047601672205479/posts/default/4416233433768936165'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5155047601672205479/posts/default/4416233433768936165'/><link rel='alternate' type='text/html' href='http://codelodge.blogspot.com/2012/11/closing-all-child-windows-using.html' title='Closing all Child Windows using JavaScript'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/12183723172822463034</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-PagdNz7VoU4/UJ1IaEniEtI/AAAAAAAAAjY/XFXyBiCzP9I/s72-c/childwin3_thumb2_thumb.jpg?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5155047601672205479.post-1003276038564248621</id><published>2012-07-15T21:40:00.001+03:00</published><updated>2012-07-15T21:40:31.907+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Design"/><category scheme="http://www.blogger.com/atom/ns#" term="Web"/><title type='text'>Child Windows Issues</title><content type='html'>&lt;p&gt;At my work we have a web application which is designed as a single main page which is sort of a “main control page”, that needs to be staying open all the time. Also, there are many other pages on the app which provides the ability to manage data, preform actions, configure settings, etc. The user needs some way to reach those pages, but since the main page has to stay open all the time, it was decided that those pages will be opened in a pop-up styled separate window. That way the users can do what they like while the main page remains opened at the background. For example:  &lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;http://lh4.ggpht.com/-dXydhxQeZQI/UAMOiKc0JSI/AAAAAAAAAGw/jlN4QpwmB7I/s1600-h/childwin1%25255B1%25255D.jpg&quot;&gt;&lt;img title=&quot;Child windows&quot; border=&quot;0&quot; alt=&quot;Child windows&quot; src=&quot;http://lh5.ggpht.com/-zC47lSpsIOM/UAMOjHGdx3I/AAAAAAAAAG4/jL8HraAtE7U/childwin1_thumb.jpg?imgmax=800&quot; width=&quot;219&quot; height=&quot;200&quot;&gt;&lt;/a&gt;  &lt;p&gt;That’s not all.  &lt;p&gt;Some of those child windows show &lt;em&gt;their own&lt;/em&gt; pop-ups that are opened as a &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/ie/ms536759.aspx&quot;&gt;modal dialog&lt;/a&gt; (mostly to interact with the user – success/failure of operations, validation…). As you may or may not know, modal dialogs block the parent window, and &lt;i&gt;only&lt;/i&gt; the parent window (in fact, it &lt;i&gt;freezes&lt;/i&gt; the parent window from running JavaScript at the background). That means that the main window stays reactive all the time. Generally it looks like this:&amp;nbsp; &lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;http://lh5.ggpht.com/-QenwUQndDNg/UAMOj40urGI/AAAAAAAAAHA/BRb43maqpgA/s1600-h/childwin22.jpg&quot;&gt;&lt;img title=&quot;Child window with a modal&quot; border=&quot;0&quot; alt=&quot;Child window with a modal&quot; src=&quot;http://lh3.ggpht.com/-qkMoqwFc524/UAMOlh_pNrI/AAAAAAAAAHI/ckYnIMPnKzE/childwin2_thumb.jpg?imgmax=800&quot; width=&quot;243&quot; height=&quot;244&quot;&gt;&lt;/a&gt;  &lt;p&gt;Also, some of those pop-up windows have links to other windows, which are opened as pop-ups of the pop-up window. Confused? Me too. The main window has a child window, which also has a child window. So actually we possibly have an unknown number of “levels” of child windows. In theory that number can get very large.  &lt;p&gt;Combining all of the above, it may look like this:  &lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;http://lh6.ggpht.com/-WVr5r8IFDz4/UAMOmXE18NI/AAAAAAAAAHQ/V79RsZ4rET4/s1600-h/childwin34.jpg&quot;&gt;&lt;img title=&quot;Jungle&quot; border=&quot;0&quot; alt=&quot;Jungle&quot; src=&quot;http://lh3.ggpht.com/-kswAQ452hm0/UAMOnasy2rI/AAAAAAAAAHY/Phd_Q9fFBlo/childwin3_thumb2.jpg?imgmax=800&quot; width=&quot;297&quot; height=&quot;274&quot;&gt;&lt;/a&gt;  &lt;p&gt;Here comes the problem. Recently we’ve noticed that the end users sometimes close the app’s main page, and forget to close a child window which accidently stayed opened. The result is an “orphan” pop-up which, of course, is useless without the main page :)  &lt;p&gt;After we discovered this issue, we decided that the main page should be responsible for the closure of all its child windows when it is closed. We had to come up with a smart enough way to handle the complex cases we have.  &lt;p&gt;In the next post I’ll show the implementation for this, stay tuned. &lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://codelodge.blogspot.com/feeds/1003276038564248621/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://codelodge.blogspot.com/2012/07/child-windows-issues.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5155047601672205479/posts/default/1003276038564248621'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5155047601672205479/posts/default/1003276038564248621'/><link rel='alternate' type='text/html' href='http://codelodge.blogspot.com/2012/07/child-windows-issues.html' title='Child Windows Issues'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/12183723172822463034</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-zC47lSpsIOM/UAMOjHGdx3I/AAAAAAAAAG4/jL8HraAtE7U/s72-c/childwin1_thumb.jpg?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5155047601672205479.post-3539863679859523523</id><published>2012-06-09T11:20:00.001+03:00</published><updated>2012-06-09T13:35:36.807+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Books"/><category scheme="http://www.blogger.com/atom/ns#" term="TDD"/><category scheme="http://www.blogger.com/atom/ns#" term="Unit Testing"/><title type='text'>Book: The Art of Unit Testing</title><content type='html'>&lt;p&gt;&lt;a href=&quot;http://manning.com/osherove/&quot;&gt;&lt;img style=&quot;float: right&quot; title=&quot;The Art of Unit Testing&quot; border=&quot;0&quot; alt=&quot;The Art of Unit Testing&quot; align=&quot;right&quot; src=&quot;http://lh4.ggpht.com/-iY02jlJqI0s/T9MHSwAxQMI/AAAAAAAAAGQ/ktQvrlvtcI8/theartofunittesting3.jpg?imgmax=800&quot; width=&quot;221&quot; height=&quot;277&quot;&gt;The Art of Unit Testing &lt;/a&gt;is a great book by &lt;a href=&quot;http://osherove.com/&quot;&gt;Roy Osherove&lt;/a&gt;, the &lt;a href=&quot;http://en.wikipedia.org/wiki/Test-driven_development&quot;&gt;TDD&lt;/a&gt; Guru, which tries to instill us the philosophy of writing unit tests in the fastest way without neglecting the basics and the important fundamentals, and he does that perfectly. The book is written with examples in .NET with &lt;a href=&quot;http://www.nunit.org/&quot;&gt;NUnit&lt;/a&gt; as the Unit testing framework and &lt;a href=&quot;http://hibernatingrhinos.com/open-source/rhino-mocks&quot;&gt;Rhino Mocks&lt;/a&gt; as the Isolation framework which are free and open source. It’s suitable for both newbies and experienced – everyone can find something that he can learn about in this book.&lt;/p&gt; &lt;p&gt;The book is divided to 4 parts, but I prefer to divide it into 2 parts:&lt;/p&gt; &lt;p&gt;The first part is all about &lt;a href=&quot;http://en.wikipedia.org/wiki/Unit_Testing&quot;&gt;Unit Testing&lt;/a&gt; basics – the definition of “unit test” and what is its goals. It explains that a unit test must meet the following requirements:  &lt;ul&gt; &lt;li&gt;Trustworthy  &lt;li&gt;Readable  &lt;li&gt;Maintainable&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Without one of these requirements, your test is no good. Then he shows how to write a simple unit test. Later on it starts to get a little deeper, and provides a definition to “stub”. He starts to talk a lot about the design of your code, about how to break dependencies and then how to inject those dependencies as stubs. Starts to get interesting, huh?  &lt;p&gt;The second part (by my division), Roy describes the importance of organizing your tests – how to locate them in terms of solution structure, projects and classes. He discusses on making a testing infrastructure in your team, on integrating your unit tests in your Continuous integration process so that your tests will run on every commit. After that, Roy explains in detail the three requirements that a unit test must have (mentioned above). While reaching the end of the book, he talk about how to integrate unit tests in your organization, which tools you may find useful and what you should be aware of. The last chapter of that book, which in my opinion was the most interesting and enriching, is about working with legacy code – how do test code that its design isn’t testable and preventing you to inject dependencies? How you refactor this kind of code? And many more philosophic topics. Super interesting. Of course it was impossible to cover the whole topic; therefor Roy makes references to &lt;a href=&quot;http://www.objectmentor.com/omTeam/feathers_m.html&quot;&gt;Michael Feathers&#39;&lt;/a&gt; book &lt;a href=&quot;http://www.amazon.com/Working-Effectively-Legacy-Robert-Martin/dp/0131177052&quot;&gt;Working Effectively with Legacy Code&lt;/a&gt;.  &lt;p&gt;&lt;a href=&quot;http://lh6.ggpht.com/-fXEoRzqaBKg/T9MHTyh3NaI/AAAAAAAAAGY/sWr_LRSw4IY/s1600-h/tdd3.jpg&quot;&gt;&lt;img style=&quot;display: block; float: none; margin-left: auto; margin-right: auto&quot; title=&quot;TDD&quot; border=&quot;0&quot; alt=&quot;TDD&quot; src=&quot;http://lh6.ggpht.com/-Zb77--XtnYw/T9MHVNdG60I/AAAAAAAAAGg/PZ2d1qqxaH0/tdd_thumb1.jpg?imgmax=800&quot; width=&quot;173&quot; height=&quot;143&quot;&gt;&lt;/a&gt;  &lt;p&gt;While I was reading this book, I was sort of a beginner developer but I already had a little bit experience in writing unit tests and practicing TDD, therefor I found the first chapters a bit less relevant for me. But it was still nice to understand a little deeper – why it’s important to have a good coverage to your code, and to have readable tests. What I specially loved about this book, besides it is suitable both for beginners and experienced, is that it’s manages to be very practical and yet enough theoretical to be interesting. In addition it’s written in very comfortable English (not so high), so it’s not that boring. :)  &lt;p&gt;I recommend everyone to read this book – from newbies to seniors, team leaders, and even hardcore TDD programmers who want to refresh their basics about TDD.    </content><link rel='replies' type='application/atom+xml' href='http://codelodge.blogspot.com/feeds/3539863679859523523/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://codelodge.blogspot.com/2012/06/book-art-of-unit-testing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5155047601672205479/posts/default/3539863679859523523'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5155047601672205479/posts/default/3539863679859523523'/><link rel='alternate' type='text/html' href='http://codelodge.blogspot.com/2012/06/book-art-of-unit-testing.html' title='Book: The Art of Unit Testing'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/12183723172822463034</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-iY02jlJqI0s/T9MHSwAxQMI/AAAAAAAAAGQ/ktQvrlvtcI8/s72-c/theartofunittesting3.jpg?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5155047601672205479.post-4707672278686377385</id><published>2012-06-03T00:14:00.001+03:00</published><updated>2012-06-05T22:04:20.961+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Internet"/><category scheme="http://www.blogger.com/atom/ns#" term="Web"/><title type='text'>Inviting Crawlers</title><content type='html'>&lt;p align=&quot;center&quot;&gt;&lt;font style=&quot;background-color: #ffffff&quot;&gt;&lt;sup&gt;&lt;em&gt;&lt;/em&gt;&lt;/sup&gt;&lt;/font&gt;&lt;font size=&quot;2&quot;&gt;&lt;font style=&quot;background-color: #ffff00&quot;&gt;&lt;em&gt;&lt;/em&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size=&quot;2&quot;&gt;&lt;em&gt;Note: I will focus here on Google search engine, but most of this works for all major modern search engines.&lt;/em&gt; &lt;/font&gt; &lt;p&gt;After &lt;a href=&quot;http://www.codelodge.net/2012/05/seo-101.html&quot;&gt;understanding the basics&lt;/a&gt; about search engines and how they work, I decided to act for improving my site search visibility – how my pages will be appeared in search results and how high they will be ranked.  &lt;p&gt;So I started seeking the web for ways to do so, and apparently there are many ways you can do that. In fact, there is an entire field called &lt;a href=&quot;http://en.wikipedia.org/wiki/Search_engine_optimization&quot;&gt;Search Engine Optimization&lt;/a&gt; (SEO), there are even SEO Consultants that make money from this stuff. Sure I’m no SEO, but I’ve gathered some simple do-it-yourself actions that you can do to optimize your search results:  &lt;ul&gt; &lt;li&gt;Explicitly &lt;a href=&quot;http://support.google.com/webmasters/bin/answer.py?answer=1352276&quot;&gt;tell Google to crawl a site&lt;/a&gt;. This is a great start for new sites.  &lt;li&gt;Design your site to be more crawler-friendly, by &lt;a href=&quot;http://support.google.com/webmasters/bin/answer.py?answer=76329&quot;&gt;structuring your URLs&lt;/a&gt; and &lt;a href=&quot;http://support.google.com/webmasters/bin/answer.py?answer=79812&quot;&gt;using Meta tags&lt;/a&gt;, such as the &lt;font size=&quot;2&quot; face=&quot;Consolas&quot;&gt;&amp;lt;meta name=&quot;description&quot; content=&quot;…&quot; /&amp;gt;&lt;/font&gt; tag. &lt;i&gt;&lt;br&gt;Tip about meta tags: Google ignores most Meta tags. The most important one is the description tag, which besides helping crawlers to get a clue about the content of the page, it tells Google what to display under your link. A good description tag will eventually make more visitors to your site.&lt;/i&gt;  &lt;li&gt;Add links to your site from other pages around the web. Especially from pages similar in content. This is &lt;em&gt;extremely&lt;/em&gt; important. It will help your pages to be more visible on searches because crawl robots will get to your site more often and mark it as more relevant and popular.  &lt;li&gt;Search engines rank pages by the relevance to the term being searched. For example, if you search for “Code Lodge” you can find a lot of stuff that has no connection to software, but if most of the people that searched this term will enter to the &lt;a href=&quot;http://www.codelodge.net/&quot;&gt;http://www.codelodge.net/&lt;/a&gt; result, it will eventually result in ranking this site higher. So the more clicks you get, you will be rated higher.  &lt;li&gt;If you own a blog, then you probably want to &lt;a href=&quot;http://www.hanselman.com/blog/EmbraceAuthorshipTheImportanceOfRelmeAndRelauthorOnYourContentsSEOAndGoogle.aspx&quot;&gt;add credibility and authorship&lt;/a&gt; to your pages. By making sure each page has a link with a &lt;font size=&quot;2&quot; face=&quot;Consolas&quot;&gt;rel=&quot;author&quot;&lt;/font&gt; attribute to your &lt;a href=&quot;https://plus.google.com/110184204285588082782?rel=author&quot; rel=&quot;author&quot;&gt;Google+ profile&lt;/a&gt;, and from your Google+ page a link that has &lt;font size=&quot;2&quot; face=&quot;Consolas&quot;&gt;rel=&quot;me&quot;&lt;/font&gt; with a link back to your blog. This is how you make your site gain reliability, and with a cyclic link back to your site it will be crawled more often.  &lt;li&gt;Pay a SOE guy to do this job for you. :)&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Those are some great tips but the best advice that I’ve learned from this session, is simply try to build a quality site with rich content and the rest will come by itself. You can’t build a crappy site that the only good thing about it is it’s meta tags and expect good rankings. Clear your mind from thoughts about search engines and doing tricks that will help you with good search results. Start focusing on building sites with good UX, content, and design that will be &lt;em&gt;good for your visitors&lt;/em&gt;, that’s 99% of what matters. You have to work for it, there are no free rides.&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://lh6.ggpht.com/-rdmgkMp5qjQ/T8qCTPRTmaI/AAAAAAAAAF8/0h_SDQDme3g/s1600-h/nofreerides%25255B3%25255D.jpg&quot;&gt;&lt;img style=&quot;display: block; float: none; margin-left: auto; margin-right: auto&quot; title=&quot;nofreerides&quot; border=&quot;0&quot; alt=&quot;nofreerides&quot; src=&quot;http://lh3.ggpht.com/-ymoTqXqcJZM/T8qCUKDI3yI/AAAAAAAAAGA/TABHPCRFDIo/nofreerides_thumb%25255B1%25255D.jpg?imgmax=800&quot; width=&quot;332&quot; height=&quot;230&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;That’s all for now, I’m sure that there are much more things I can do, but all those kinds of things takes time to show results. I think I will let time to do its job. Until then I better start working.&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://codelodge.blogspot.com/feeds/4707672278686377385/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://codelodge.blogspot.com/2012/06/inviting-crawlers.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5155047601672205479/posts/default/4707672278686377385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5155047601672205479/posts/default/4707672278686377385'/><link rel='alternate' type='text/html' href='http://codelodge.blogspot.com/2012/06/inviting-crawlers.html' title='Inviting Crawlers'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/12183723172822463034</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-ymoTqXqcJZM/T8qCUKDI3yI/AAAAAAAAAGA/TABHPCRFDIo/s72-c/nofreerides_thumb%25255B1%25255D.jpg?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5155047601672205479.post-1476066790904401330</id><published>2012-05-26T23:58:00.001+03:00</published><updated>2012-05-27T13:52:07.846+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Internet"/><category scheme="http://www.blogger.com/atom/ns#" term="Web"/><title type='text'>SEO 101</title><content type='html'>&lt;p&gt;One of the first things I did after opening my blog was to think how people are going to reach it, so I started with searching for it in Google. I entered “The Code Lodge” hit enter and I couldn’t find my site anywhere. Hitting “Code Lodge” also got me nothing. First I thought that something must be wrong with the process of launching the site, but on second thought it might have sense. &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;a href=&quot;http://lh3.ggpht.com/-mMr4fY_absQ/T8HaA8VOllI/AAAAAAAAAFg/CKNaLk3NZFw/s1600-h/WildCrawl%25255B6%25255D.jpg&quot;&gt;&lt;img title=&quot;WildCrawl&quot; border=&quot;0&quot; alt=&quot;WildCrawl&quot; src=&quot;http://lh5.ggpht.com/-t7RIv18Ipls/T8HaBxJ8yLI/AAAAAAAAAFo/msk0LHd8tuk/WildCrawl_thumb%25255B3%25255D.jpg?imgmax=800&quot; width=&quot;306&quot; height=&quot;207&quot;&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;I assumed that the reason for that was because I just launched it a few hours ago and it’s only a baby in terms of the web. It got my thinking about how these things work, and what can I do to make my site searchable. I realized that I was clueless about the process which modern search engines works on and that it’s a huge con on my list.&lt;/p&gt; &lt;p&gt;So how does the search engine magic work? It is comprised of two main stages: Crawling and Indexing.&lt;/p&gt; &lt;p&gt;The process of crawling is generally accessing public content (webpages) and following the links that are on those pages. This is done nonstop by automated bots.&lt;/p&gt; &lt;p&gt;The &lt;a href=&quot;http://www.robotstxt.org/robotstxt.html&quot;&gt;robots.txt&lt;/a&gt; file can help you allow or prevent access to specific content on your site to the robots that crawl your site. It should be located in your root folder and has to be called robots.txt. Make sure you don’t abuse it to secure private content. For an&lt;i&gt; &lt;/i&gt;example of the robots file you can view &lt;a href=&quot;http://www.facebook.com/robots.txt&quot;&gt;http://www.facebook.com/robots.txt&lt;/a&gt; .&lt;/p&gt; &lt;p&gt;Indexing is the process of gathering information about a page so it will be available in search results.&lt;/p&gt; &lt;p&gt;It is important to distinguish between the two stages. Your page can be crawled but not indexed and vice versa. Intervening with&lt;i&gt; &lt;/i&gt;the process of one of those stages can extremely affect your search visibility, so do it with caution.&lt;/p&gt; &lt;p&gt;As you can see, the &lt;i&gt;available (public)&lt;/i&gt; content on your site has a major effect on the search process. By allowing the search engine to crawl a page, all its links will be also crawled, the content that your pages contain will be indexed and eventually shown in search results.&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Search_engine_optimization&quot;&gt;SEO&lt;/a&gt;? Stay tuned for how to optimize your sites search results.&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://codelodge.blogspot.com/feeds/1476066790904401330/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://codelodge.blogspot.com/2012/05/seo-101.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5155047601672205479/posts/default/1476066790904401330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5155047601672205479/posts/default/1476066790904401330'/><link rel='alternate' type='text/html' href='http://codelodge.blogspot.com/2012/05/seo-101.html' title='SEO 101'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/12183723172822463034</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-t7RIv18Ipls/T8HaBxJ8yLI/AAAAAAAAAFo/msk0LHd8tuk/s72-c/WildCrawl_thumb%25255B3%25255D.jpg?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5155047601672205479.post-4636917204928439779</id><published>2012-05-18T20:18:00.001+03:00</published><updated>2012-05-18T20:18:28.661+03:00</updated><title type='text'>Welcome to the Code Lodge</title><content type='html'>&lt;p&gt;Welcome to my blog!&lt;/p&gt; &lt;p&gt;My name is Leeran Yarhi, I’m a web developer from Israel. you can read more about me &lt;a href=&quot;http://www.blogger.com/profile/12183723172822463034&quot;&gt;here&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Here you can hang out, relax, and enjoy a good read about software development. The idea behind launching this blog is to preserve and share my knowledge about software development ,management,&amp;nbsp; share with you general thoughts and ideas, and practice my writing skills. But mainly babbling to y&#39;all.&lt;/p&gt; &lt;p&gt;Hope you have a nice time at the Code Lodge, you are welcome to &lt;a href=&quot;http://feeds.feedburner.com/codelodge&quot;&gt;subscribe&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Later!&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://codelodge.blogspot.com/feeds/4636917204928439779/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://codelodge.blogspot.com/2012/05/welcome-to-code-lodge.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5155047601672205479/posts/default/4636917204928439779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5155047601672205479/posts/default/4636917204928439779'/><link rel='alternate' type='text/html' href='http://codelodge.blogspot.com/2012/05/welcome-to-code-lodge.html' title='Welcome to the Code Lodge'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/12183723172822463034</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>