<?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-8749026</id><updated>2012-01-24T10:15:40.942+11:00</updated><category term='UML'/><category term='age'/><category term='relationships'/><category term='MVC'/><category term='ebook'/><category term='australia'/><category term='pdf'/><title type='text'>Alen's Notes</title><subtitle type='html'>Alen Siljak's IT blog. Interesting links, articles, and thoughts...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default?start-index=101&amp;max-results=100'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>829</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8749026.post-792731607618811526</id><published>2012-01-24T10:15:00.001+11:00</published><updated>2012-01-24T10:15:40.948+11:00</updated><title type='text'>Free Online MongoDB</title><content type='html'>&lt;p&gt;MongoLab has a free startup account with up to 240MB of storage with MongoDB. Great way to get started with cloud hosting of the data storage.&lt;/p&gt;&lt;p&gt;More details:&amp;nbsp;&lt;a href="https://mongolab.com/about/pricing/"&gt;http://mongolab.com/about/pricing/&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/8749026-792731607618811526?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/792731607618811526/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=792731607618811526' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/792731607618811526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/792731607618811526'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2012/01/free-online-mongodb.html' title='Free Online MongoDB'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-2050417382577327198</id><published>2012-01-13T05:55:00.001+11:00</published><updated>2012-01-13T05:55:03.643+11:00</updated><title type='text'>Agile Atlas</title><content type='html'>&lt;p&gt;&lt;a href="http://agileatlas.org/"&gt;http://agileatlas.org/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Agile Skills Project, from the members of the Scrom Alliance. Great overview of Scrum, reference card, etc.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-2050417382577327198?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/2050417382577327198/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=2050417382577327198' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/2050417382577327198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/2050417382577327198'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2012/01/agile-atlas.html' title='Agile Atlas'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-1518855239030300961</id><published>2011-12-31T08:27:00.001+11:00</published><updated>2011-12-31T08:27:50.216+11:00</updated><title type='text'>Android nears 50% in the U.S.</title><content type='html'>&lt;p&gt;Android is nearing the 50% market share in the United States. Apple also on the way up but still on the distant second place. All the others are on the way down. The period compared is from August to November 2011.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.gsmarena.com/android_nears_50_mark_in_the_us_comscore_reports-news-3594.php"&gt;http://www.gsmarena.com/android_nears_50_mark_in_the_us_comscore_reports-news-3594.php&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/8749026-1518855239030300961?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/1518855239030300961/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=1518855239030300961' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/1518855239030300961'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/1518855239030300961'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/12/android-nears-50-in-us.html' title='Android nears 50% in the U.S.'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-3958773810962543875</id><published>2011-12-19T04:19:00.001+11:00</published><updated>2011-12-19T04:19:44.212+11:00</updated><title type='text'>Google URLs</title><content type='html'>&lt;p&gt;Some Google services, like Tasks and Contacts have initially been integrated with other services like Gmail but now can be accessed directly. URLs are sometimes not so obvious, so I'm listing some of them here.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Tasks -&amp;nbsp;https://mail.google.com/tasks/canvas&lt;/li&gt;&lt;li&gt;Contacts -&amp;nbsp;https://www.google.com/contacts&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-3958773810962543875?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/3958773810962543875/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=3958773810962543875' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/3958773810962543875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/3958773810962543875'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/12/google-urls.html' title='Google URLs'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-5950494671043289895</id><published>2011-12-18T00:47:00.001+11:00</published><updated>2011-12-18T00:47:27.150+11:00</updated><title type='text'>Push-to-Talk</title><content type='html'>&lt;p&gt;A huge number of people is using Internet for voice communication, to talk about business or catch up with their dearest. And it sucks when the connection quality is not top-notch because cut-offs in conversation appear, distortions in voice, etc., missing on parts of conversation and so on.&lt;/p&gt;&lt;p&gt;Lately I experienced these problems when talking to multiple parties and it is really annoying. I monitored the network connection while the conversation was taking place and noticed that download was going OK for a few seconds and then dropped for a few. Most popular voice chat programs, like Skype or GoogleTalk, stream the voice continuously while connected. This is probably OK when the connection is good. The amount of data transmitted is pretty good. But the problem is that the channel between the two parties needs to be uninterrupted.&amp;nbsp;&lt;/p&gt;&lt;p&gt;This led me to look for a solution in line with my childhood experiences with radio-amateurs, where you need to push a button to talk. It made sense that, in conditions of poor connectivity, a better quality of voice communication would happen if we could control when to transmit. That way only the actual speech would get sent, rather than the silence periods, which take quite some time. Burst transfer versus continuous transfer.&amp;nbsp;&lt;/p&gt;&lt;p&gt;So I found Loudtalks (&lt;a href="http://loudtalks.com/"&gt;http://loudtalks.com/&lt;/a&gt;). They have application for Windows and Android. The first test went quite well. It seemed a bit annoying to have to push the talk button every time but the fact that no parts of the dialogue got lost&amp;nbsp;was more important. Then I thought how good it would be to have the transmission voice-activated and looked through the options. And it was right there - voice activated transmission with threshold settings was built in but not activated by default. Now this seems like a decent chat solution. Will have to test this in the coming period and in the longer conversations.&lt;/p&gt;&lt;p&gt;A really good thing about LoudTalks is that it keeps a history of voice messages, something like text chat, so you can listen to previous messages sent or received.&lt;/p&gt;&lt;p&gt;If you decide to use LoudTalks, the shortcuts (easy to find in Options dialogue) are: F7 = speak, Ctrl+F7 = hands-free (voice activation), Shift+F7 = repeat last message.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-5950494671043289895?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/5950494671043289895/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=5950494671043289895' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/5950494671043289895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/5950494671043289895'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/12/push-to-talk.html' title='Push-to-Talk'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-3843784790723487879</id><published>2011-12-17T22:59:00.001+11:00</published><updated>2011-12-17T23:06:05.325+11:00</updated><title type='text'>Internet Explorer Starts with Automatic Updates</title><content type='html'>Finally, Microsoft is moving the route other browsers adopted earlier and will start to automatically update Internet Explorer web browser on client machines. The main "excuse" mentioned for the decision was security but I find it more important being able to roll out new features and compatibility support for upcoming HTML 5.&lt;br /&gt;&lt;br /&gt;This was the missing link as there are throngs of people still using old versions of Internet Explorer, making a huge barrier to adoption of HTML 5 as a platform. Fortunately, the share of old IE browsers on the web is dropping continuously, as seen on StatCounter's global stats.&lt;br /&gt;&lt;br /&gt;&lt;img alt="" height="187" src="http://upload.wikimedia.org/wikipedia/commons/6/6d/Usage_share_of_web_browsers_%28December_2011%2C_Source_StatCounter%29.jpg" width="320" /&gt;&lt;br /&gt;&lt;br /&gt;Source:&amp;nbsp;&lt;a href="http://www.bbc.co.uk/news/technology-16214912"&gt;http://www.bbc.co.uk/news/technology-16214912&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-3843784790723487879?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/3843784790723487879/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=3843784790723487879' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/3843784790723487879'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/3843784790723487879'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/12/internet-explorer-starts-with-automatic.html' title='Internet Explorer Starts with Automatic Updates'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-1681512587714815567</id><published>2011-12-08T20:28:00.001+11:00</published><updated>2011-12-08T20:28:42.851+11:00</updated><title type='text'>Proxy Switcher</title><content type='html'>&lt;p&gt;Nice and simple two-clicks proxy switcher for Windows. Freeware.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.proxyswitcher.com/download.html"&gt;http://www.proxyswitcher.com/download.html&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/8749026-1681512587714815567?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/1681512587714815567/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=1681512587714815567' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/1681512587714815567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/1681512587714815567'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/12/proxy-switcher.html' title='Proxy Switcher'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-7585396038842667306</id><published>2011-12-08T19:24:00.001+11:00</published><updated>2011-12-08T19:24:57.085+11:00</updated><title type='text'>A Cool Date Library in JavaScript</title><content type='html'>&lt;p&gt;After learning in a funny way that in Javascript&lt;/p&gt;&lt;p style="text-align: center;"&gt;&lt;span style="font-family: 'courier new', courier; color: #008000;"&gt;Date.parse(DateToValue) &amp;lt;= Date.parse(DateFromValue)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;does not behave the way it was expected, using American date format in the DateXXValue parameters and having no ability to specify that, I looked into solutions for comparing the dates in the input fields.&lt;/p&gt;&lt;p&gt;There is a date.js library that is very useful in solving the above issue. I posted the links &lt;a href="https://sites.google.com/site/alensit/technologies/javascript/javascript-software-and-libraries#TOC-Date.js"&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/8749026-7585396038842667306?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/7585396038842667306/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=7585396038842667306' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/7585396038842667306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/7585396038842667306'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/12/cool-date-library-in-javascript.html' title='A Cool Date Library in JavaScript'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-4200718880565548235</id><published>2011-12-01T19:23:00.001+11:00</published><updated>2011-12-01T19:23:31.121+11:00</updated><title type='text'>A Few Selenium-related Links</title><content type='html'>&lt;p&gt;Here's a few interesting links related to the new Selenium 2.0, WebDriver, and running Selenium tests in a CI build (as a service / headless).&lt;/p&gt;&lt;p&gt;Official blog, lots of interesting links and announcements:&amp;nbsp;&lt;a href="http://seleniumhq.wordpress.com/"&gt;http://seleniumhq.wordpress.com/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Documentation on 2.0 features and WebDriver:&amp;nbsp;&lt;a href="http://seleniumhq.org/docs/03_webdriver.html"&gt;http://seleniumhq.org/docs/03_webdriver.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Non-Sucking Service Manager:&amp;nbsp;&lt;a href="http://nssm.cc/"&gt;http://nssm.cc/&lt;/a&gt;, used to install apps as services.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-4200718880565548235?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/4200718880565548235/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=4200718880565548235' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/4200718880565548235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/4200718880565548235'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/12/few-selenium-related-links.html' title='A Few Selenium-related Links'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-6850925308408770580</id><published>2011-11-30T19:57:00.001+11:00</published><updated>2011-11-30T19:57:21.952+11:00</updated><title type='text'>Open Source Alternatives</title><content type='html'>&lt;p&gt;This morning I ran across two amazing pieces of software for the stuff that's commonly needed in a small office.&lt;/p&gt;&lt;p&gt;The first one is a mail/collaboration server and client - Zimbra. Technically, it is an alternative to MS&amp;nbsp;Exchange or Lotus Notes:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.zimbra.com/products/zimbra-open-source.html"&gt;http://www.zimbra.com/products/zimbra-open-source.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The second one is a project management software - OpenProj, an alternative to MS Project:&lt;/p&gt;&lt;p&gt;&lt;a href="http://sourceforge.net/projects/openproj/"&gt;http://sourceforge.net/projects/openproj/&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/8749026-6850925308408770580?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/6850925308408770580/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=6850925308408770580' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/6850925308408770580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/6850925308408770580'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/11/open-source-alternatives.html' title='Open Source Alternatives'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-1166952393624955563</id><published>2011-11-24T07:49:00.001+11:00</published><updated>2011-11-24T07:49:50.015+11:00</updated><title type='text'>xUnit Test Patterns</title><content type='html'>&lt;p&gt;Great reference for unit testing: xUnit Test Patterns - Refactoring Test Code&lt;/p&gt;&lt;p&gt;&lt;a href="http://xunitpatterns.com/index.html"&gt;http://xunitpatterns.com/index.html&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/8749026-1166952393624955563?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/1166952393624955563/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=1166952393624955563' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/1166952393624955563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/1166952393624955563'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/11/xunit-test-patterns.html' title='xUnit Test Patterns'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-3960173512614847256</id><published>2011-11-11T08:24:00.001+11:00</published><updated>2011-11-11T08:24:40.886+11:00</updated><title type='text'>Arguments to functions in JavaScript</title><content type='html'>&lt;p&gt;Watching Douglas Crockford's talk about functions in JavaScript, there were a few interesting moments where I learned some new things. One notable detail worth writing down is that every function in JavaScript always receives two arguments: &lt;em&gt;this &lt;/em&gt;and &lt;em&gt;arguments&lt;/em&gt;.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;arguments &lt;/em&gt;&lt;/strong&gt;is array-like but is not an array and contains all the arguments passed to the function.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;this&lt;/em&gt; &lt;/strong&gt;contains a reference to an object that contains the function.&lt;/p&gt;&lt;p&gt;Some references:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.devguru.com/technologies/ecmascript/quickref/arguments.html"&gt;http://www.devguru.com/technologies/ecmascript/quickref/arguments.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="https://developer.mozilla.org/en/JavaScript/Reference/Functions_and_function_scope"&gt;https://developer.mozilla.org/en/JavaScript/Reference/Functions_and_function_scope&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://javascript.crockford.com/"&gt;http://javascript.crockford.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/8749026-3960173512614847256?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/3960173512614847256/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=3960173512614847256' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/3960173512614847256'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/3960173512614847256'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/11/arguments-to-functions-in-javascript.html' title='Arguments to functions in JavaScript'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-2910383786388364002</id><published>2011-11-08T19:58:00.001+11:00</published><updated>2011-11-08T19:58:48.206+11:00</updated><title type='text'>Modules in CoffeeScript</title><content type='html'>&lt;p&gt;Here is a link to a module wrapper that enables encapsulating code into modules with CoffeeScript:&lt;/p&gt;&lt;p&gt;&lt;a href="https://github.com/jashkenas/coffee-script/wiki/Easy-modules-with-coffeescript"&gt;https://github.com/jashkenas/coffee-script/wiki/Easy-modules-with-coffeescript&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/8749026-2910383786388364002?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/2910383786388364002/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=2910383786388364002' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/2910383786388364002'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/2910383786388364002'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/11/modules-in-coffeescript.html' title='Modules in CoffeeScript'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-4153041786921061418</id><published>2011-10-25T21:28:00.001+11:00</published><updated>2011-10-26T00:26:03.465+11:00</updated><title type='text'>Web Developer on Chrome</title><content type='html'>One of the first developer add-ons for Firefox - the Web Developer Toolbar - is available on Chrome. I haven't really paid attention to it lately but now I find it very useful. It integrates several useful tools like color picker, ruler, and a host of other functions available in the Firefox version.&lt;br /&gt;The functionality provided will probably end up in the dev tools inside the browser one day but, for now, the extension is extremely useful.&lt;br /&gt;link:&amp;nbsp;&lt;a href="https://chrome.google.com/webstore/detail/bfbameneiokkgbdmiekhjnmfkcnldhhm"&gt;https://chrome.google.com/webstore/detail/bfbameneiokkgbdmiekhjnmfkcnldhhm&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-4153041786921061418?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/4153041786921061418/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=4153041786921061418' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/4153041786921061418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/4153041786921061418'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/10/web-developer-on-chrome.html' title='Web Developer on Chrome'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-3597048390953645977</id><published>2011-10-24T23:59:00.001+11:00</published><updated>2011-10-26T01:28:02.859+11:00</updated><title type='text'>Could not register HTTP URL with WCF</title><content type='html'>&lt;p&gt;Just had the following error:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;em&gt;HTTP could not register URL http://+:8000/. Your process does not have access rights to this namespace (see http://go.microsoft.com/fwlink/?LinkId=70353 for details).&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;when trying to run a Windows Service that listens on localhost using HTTP protocol. This happens on operating systems &amp;gt;= Vista, meaning the Windows 2008 is affected. The solution (listed &lt;a href="http://blogs.msdn.com/b/amitlale/archive/2007/01/29/addressaccessdeniedexception-cause-and-solution.aspx"&gt;here&lt;/a&gt;) is to run the following command as Administrator:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;netsh http add urlacl url=http://+:8000/ user=DOMAIN\UserName&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Now, to execute the same thing in older operating systems (Windows 2003, for example), you would run:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;httpcfg set urlacl -u http://+:8890/ -a D:(A;;GX;;;S-1-5-20)&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Then check the results with "httpcfg query urlacl". Replace "set" with "delete" to remove the permissions. Given SID is for NTAuthority\NetworkService.&amp;nbsp;&lt;/p&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-3597048390953645977?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/3597048390953645977/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=3597048390953645977' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/3597048390953645977'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/3597048390953645977'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/10/could-not-register-http-url-with-wcf.html' title='Could not register HTTP URL with WCF'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-2883703672222614232</id><published>2011-10-15T23:42:00.001+11:00</published><updated>2011-10-16T03:01:41.786+11:00</updated><title type='text'>Android USB Tethering</title><content type='html'>&lt;p&gt;After first using wireless hotspot mode on the Android phone and connecting a laptop through that, draining battery rather quickly, even more pain followed after getting a PC. Switching constantly the SIM card between the phone and the USB adapter on the PC was no fun at all.&lt;/p&gt;&lt;p&gt;After doing a bit of searching on USB tethering I was truly stunned to find that USB tethering has been available ever since Android 2.2. Having used Quick Settings application to access WiFi hotspot settings (mobile AP), I rarely wandered into the original Android Settings menu.&lt;/p&gt;&lt;p&gt;It was a true revelation to see USB tethering option natively supported by the operating system. This is now the ultimate solution - the phone is being recharged often and both the phone and the desktop PC are connected to Internet. Lovely jovely.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Edit: Another option is to use PdaNet. There is a service on the mobile phone and a desktop client for the PC. This requires separate installation of Samsung USB driver, that includes ADB driver. For some reason, the one that came with Kies was not enough.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-2883703672222614232?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/2883703672222614232/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=2883703672222614232' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/2883703672222614232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/2883703672222614232'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/10/android-usb-tethering.html' title='Android USB Tethering'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-498218881743685302</id><published>2011-09-20T23:43:00.001+10:00</published><updated>2011-09-20T23:43:25.396+10:00</updated><title type='text'>Git-TFS commands</title><content type='html'>&lt;h3&gt;Quick Clone&lt;/h3&gt;&lt;pre&gt;set branch=$/path/branch&lt;br /&gt;set tfsserver=http://tfsserver:8080/tfs&lt;br /&gt;set command=quick-clone&lt;br /&gt;git tfs %command% %tfsserver% %branch%&lt;br /&gt;&lt;/pre&gt;&lt;h3&gt;Update from TFS&lt;/h3&gt;&lt;pre&gt;git tfs fetch&lt;br /&gt;git rebase tfs/default&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Creating an alias in .gitconfig:&lt;/p&gt;&lt;pre&gt;[alias]&lt;br /&gt; tpull = !git tfs fetch &amp;amp;&amp;amp; git rebase tfs/default&lt;br /&gt;&lt;/pre&gt;&lt;h3&gt;Checkin to TFS visually&lt;/h3&gt;&lt;p&gt;Useful if the checkins need to be linked to work items or other policy rules.&lt;/p&gt;&lt;pre&gt;git tfs checkintool&lt;br /&gt;&lt;/pre&gt;&lt;h2&gt;Other Settings&lt;/h2&gt;&lt;p&gt;Set ignore settings in ".git/info/exclude" instead of creating .gitignore file&lt;/p&gt;&lt;p&gt;Reference: &lt;a href="http://www.jeremyskinner.co.uk/2011/02/21/making-tfs-suck-less-with-git-tfs/"&gt;article&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/8749026-498218881743685302?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/498218881743685302/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=498218881743685302' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/498218881743685302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/498218881743685302'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/09/git-tfs-commands.html' title='Git-TFS commands'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-7470821707928218441</id><published>2011-09-20T06:21:00.001+10:00</published><updated>2011-09-20T23:26:19.325+10:00</updated><title type='text'>Git-TFS</title><content type='html'>If there's something that would drive me away from Mercurial and closer towards Git, that would be Git-TFS. So far I'm using a Mercurial/TFS solution, as explained in&amp;nbsp;&lt;a href="http://alensiljak.blogspot.com/2011/08/using-mercurial-with-tfs.html"&gt;Using Mercurial with TFS&lt;/a&gt;. However, this is not a 100% foolproof solution because (argh!) the solution file contains the "scc*" settings that every now and then get removed from the file when it is not bound to the TFS source control. And, of course, this happens all the time when the code I'm working on is in a cloned Hg repository.&lt;br /&gt;The light seem to come from a project called &lt;a href="https://github.com/spraints/git-tfs"&gt;Git-TFS&lt;/a&gt;. The documentation is available at the Wiki page in the project. There is also a &lt;a href="http://groups.google.com/group/git-tfs-dev"&gt;newsgroup&lt;/a&gt; where questions can be answered.&lt;br /&gt;I'm about to give it a test run but, reading more about it, I seem to have an idea that not using two Hg repositories but just one might work, too. Update to follow soon.&lt;br /&gt;&lt;br /&gt;Edit: &lt;br /&gt;Good introductory text is &lt;a href="http://www.jeremyskinner.co.uk/2011/02/21/making-tfs-suck-less-with-git-tfs/"&gt;here&lt;/a&gt;. My initial opinion is quite good.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-7470821707928218441?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/7470821707928218441/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=7470821707928218441' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/7470821707928218441'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/7470821707928218441'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/09/git-tfs.html' title='Git-TFS'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-2939436574614585933</id><published>2011-09-18T03:54:00.001+10:00</published><updated>2011-09-18T03:54:58.010+10:00</updated><title type='text'>Folder2ISO</title><content type='html'>&lt;p&gt;Folder2ISO does what the name says - it creates an ISO file from a directory. No installation, just download and run. Nice and simple.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.trustfm.net/divx/SoftwareFolder2Iso.php?b2=1"&gt;http://www.trustfm.net/divx/SoftwareFolder2Iso.php?b2=1&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/8749026-2939436574614585933?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/2939436574614585933/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=2939436574614585933' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/2939436574614585933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/2939436574614585933'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/09/folder2iso.html' title='Folder2ISO'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-1695406451757983879</id><published>2011-09-17T20:02:00.001+10:00</published><updated>2011-09-17T20:02:02.358+10:00</updated><title type='text'>Headphones/Speakers Switch</title><content type='html'>&lt;p&gt;There's a great little program that switches between speakers and headphones (actually, any two sound devices configured in Windows) via simple click or hotkey combination:&lt;/p&gt;&lt;p&gt;SoundSwitch - &lt;a href="http://blog.contriving.net/2009/05/04/a-hotkey-to-switch-between-headphones-and-speakers-soundswitch/"&gt;v2.3&lt;/a&gt;, or &lt;a href="http://blog.contriving.net/2010/10/02/easier-switching-of-sound-devices-in-windows-with-soundswitch-3-0dev1/"&gt;v3.0dev&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/8749026-1695406451757983879?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/1695406451757983879/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=1695406451757983879' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/1695406451757983879'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/1695406451757983879'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/09/headphonesspeakers-switch.html' title='Headphones/Speakers Switch'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-7539879362133368305</id><published>2011-09-12T18:30:00.001+10:00</published><updated>2011-09-12T18:30:15.553+10:00</updated><title type='text'>Deleting a network user profile on Windows 7</title><content type='html'>&lt;p&gt;My profile on the current workstation is messed up and I want to recreate it. The account is not a local Windows account but an Active Directory one, making this a bit more difficult.&lt;/p&gt;&lt;p&gt;To start off, I created a new Windows account, giving it Administrator privileges by adding it to the Administrators group. Then, log on with that user and&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Move my user account files (c:\users\&amp;lt;xy&amp;gt; somewhere else)&lt;/li&gt;&lt;li&gt;Remove user SID at&amp;nbsp;&lt;br /&gt;&lt;span style="color: #323232; font-family: monospace; font-size: 13px; text-align: left; white-space: pre; background-color: #f6fafb;"&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList&lt;br /&gt;&lt;/span&gt;The key to remove is the one that points to the above file location for the profile files.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Log off and then on as the above user to recreate the profile.&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-7539879362133368305?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/7539879362133368305/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=7539879362133368305' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/7539879362133368305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/7539879362133368305'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/09/deleting-network-user-profile-on.html' title='Deleting a network user profile on Windows 7'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-8019148755871235108</id><published>2011-08-23T06:41:00.001+10:00</published><updated>2011-08-23T06:41:01.985+10:00</updated><title type='text'>Windows Offline Updates</title><content type='html'>&lt;p&gt;Another project that helps with updating offline or multiple Windows installations:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.wsusoffline.net/"&gt;http://www.wsusoffline.net/&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/8749026-8019148755871235108?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/8019148755871235108/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=8019148755871235108' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/8019148755871235108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/8019148755871235108'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/08/windows-offline-updates.html' title='Windows Offline Updates'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-3044220672980212072</id><published>2011-08-18T23:07:00.001+10:00</published><updated>2011-08-18T23:14:27.469+10:00</updated><title type='text'>Unit Testing Silverlight 4</title><content type='html'>&lt;p&gt;Here is the first article in the series about unit-testing Silverlight 4 applications - &lt;a href="http://msmvps.com/blogs/theproblemsolver/archive/2008/12/02/unit-testing-in-silverlight-part-1.aspx"&gt;link&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Unit Testing Framework for Silverlight is now included in the Silverlight Toolkit (&lt;a href="http://silverlight.codeplex.com/"&gt;link&lt;/a&gt;).&lt;/p&gt;&lt;p&gt;Unit-test runner - &lt;a href="http://statlight.codeplex.com/"&gt;StatLight&lt;/a&gt; - can be downloaded manually or through NuGet.&lt;/p&gt;&lt;p&gt;Check the short tutorial &lt;a href="http://archive.msdn.microsoft.com/silverlightut"&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/8749026-3044220672980212072?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/3044220672980212072/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=3044220672980212072' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/3044220672980212072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/3044220672980212072'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/08/unit-testing-silverlight-4.html' title='Unit Testing Silverlight 4'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-1766988585092306676</id><published>2011-08-15T21:57:00.001+10:00</published><updated>2011-08-15T21:57:31.001+10:00</updated><title type='text'>Testing IE in a VM</title><content type='html'>&lt;p&gt;Microsoft has provided Virtual Machine images for testing sites with different versions of Internet Explorer:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?id=11575"&gt;http://www.microsoft.com/download/en/details.aspx?id=11575&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Available are Win 7 with IE 8 and 9, Vista with IE 7, and XP with IE 6. Images are VHD. For use with Microsoft Virtual PC (or server versions).&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-1766988585092306676?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/1766988585092306676/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=1766988585092306676' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/1766988585092306676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/1766988585092306676'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/08/testing-ie-in-vm.html' title='Testing IE in a VM'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-909413529425102718</id><published>2011-08-12T17:47:00.001+10:00</published><updated>2011-08-12T17:47:16.031+10:00</updated><title type='text'>Turning TFS Agile</title><content type='html'>&lt;p&gt;UrbanTurtle is an interface that makes TFS useful and adapts to the agile workflow.&lt;/p&gt;&lt;p&gt;urbanturtle.com&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-909413529425102718?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/909413529425102718/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=909413529425102718' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/909413529425102718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/909413529425102718'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/08/turning-tfs-agile.html' title='Turning TFS Agile'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-3810375364944911487</id><published>2011-08-10T18:03:00.001+10:00</published><updated>2011-08-10T18:03:21.535+10:00</updated><title type='text'>Visual Event for JavaScript</title><content type='html'>&lt;p&gt;Great visual help for JavaScript developers. Such a neat and elegant way of displaying the JavaScript events on a page.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.sprymedia.co.uk/article/Visual+Event"&gt;http://www.sprymedia.co.uk/article/Visual+Event&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/8749026-3810375364944911487?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/3810375364944911487/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=3810375364944911487' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/3810375364944911487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/3810375364944911487'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/08/visual-event-for-javascript.html' title='Visual Event for JavaScript'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-1690340304642761307</id><published>2011-08-09T20:34:00.001+10:00</published><updated>2011-08-10T23:53:22.242+10:00</updated><title type='text'>Using Mercurial with TFS</title><content type='html'>&lt;p&gt;A recommendation in this day and age, when using TFS for team collaboration, is to use the help from Mercurial or other modern code versioning tools for local changes and offline usage. There is no need to list all the benefits of Mercurial right now. Suffice to say that it provides painless safety net with branching and merging support that allows easier work.&amp;nbsp;&lt;/p&gt;&lt;p&gt;An article at Los Techies describes the scenario how this can be accomplished. Basically, after checking-out the TFS project, create a Mercurial repository there. Get a MakeWritable extension. Clone the Hg repository into a working copy where you will be making changes and that's it. Use the scripts below to check-in/out from TFS.&lt;/p&gt;&lt;p&gt;&lt;a href="http://lostechies.com/erichexter/2010/06/23/using-mercurial-as-a-local-repository-for-team-foundation-server-start-front-n/"&gt;source&lt;/a&gt;&amp;nbsp;article&lt;/p&gt;&lt;p&gt;PowerShell scripts are located in an &lt;a href="https://bitbucket.org/alensiljak/hgtfsscripts"&gt;online repository&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/8749026-1690340304642761307?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/1690340304642761307/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=1690340304642761307' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/1690340304642761307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/1690340304642761307'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/08/using-mercurial-with-tfs.html' title='Using Mercurial with TFS'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-158508433942854999</id><published>2011-08-08T17:23:00.002+10:00</published><updated>2011-08-10T21:46:47.641+10:00</updated><title type='text'>.hgignore</title><content type='html'>&lt;p&gt;Using Mercurial with .Net projects, there is a need to constantly create .hgignore file to disregard changes to files that should not go into the source control. The contents of this file are mostly the same for all projects. My list goes something like this:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;syntax: glob&lt;br /&gt;*/bin/*&lt;br /&gt;*/obj/*&lt;br /&gt;*.suo&lt;br /&gt;*/Bin/*&lt;br /&gt;*/ClientBin/*&lt;br /&gt;*.user&lt;br /&gt;pull.ps1&lt;br /&gt;push.ps1&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Not sure if the ones below should be ignored. Leaving them in for now.&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;*.vspscc&lt;br /&gt;*.vssscc&lt;/p&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-158508433942854999?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/158508433942854999/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=158508433942854999' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/158508433942854999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/158508433942854999'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/08/hgignore.html' title='.hgignore'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-5145445379359800717</id><published>2011-08-07T18:31:00.001+10:00</published><updated>2011-08-07T18:31:34.838+10:00</updated><title type='text'>Caching Windows Updates</title><content type='html'>&lt;p&gt;Since Microsoft never bothered to solve issues for small and home users who wanted to cache Windows updates, here is a very practical solution:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.autopatcher.com/"&gt;http://www.autopatcher.com/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;With AutoPatcher, you simply select which OS or a related technology (there is .NET, Adobe Reader, etc.) you want and it will download the files to your local drive, making them available offline. These can, then, be installed on multiple machines, avoiding redundant download in case the Internet connectivity is an issue.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-5145445379359800717?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/5145445379359800717/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=5145445379359800717' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/5145445379359800717'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/5145445379359800717'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/08/caching-windows-updates.html' title='Caching Windows Updates'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-1347284815415804661</id><published>2011-08-03T01:03:00.001+10:00</published><updated>2011-08-03T01:03:37.359+10:00</updated><title type='text'>Telerik Tools for Scrum with TFS</title><content type='html'>&lt;p&gt;Work Item Manager &amp;amp; Project Dashboard for work items on TFS.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.telerik.com/agile-project-management-tools/tfs.aspx"&gt;http://www.telerik.com/agile-project-management-tools/tfs.aspx&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/8749026-1347284815415804661?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/1347284815415804661/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=1347284815415804661' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/1347284815415804661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/1347284815415804661'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/08/telerik-tools-for-scrum-with-tfs.html' title='Telerik Tools for Scrum with TFS'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-2530967412355831904</id><published>2011-07-29T18:31:00.001+10:00</published><updated>2011-07-29T18:31:56.322+10:00</updated><title type='text'>Site Templates and Themes</title><content type='html'>&lt;p&gt;A nice collection of web site templates and themes:&lt;/p&gt;&lt;p&gt;&lt;a href="http://themeforest.net/"&gt;http://themeforest.net/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;CSS, HTML, JavaScript, skins, etc.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-2530967412355831904?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/2530967412355831904/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=2530967412355831904' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/2530967412355831904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/2530967412355831904'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/07/site-templates-and-themes.html' title='Site Templates and Themes'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-949957056644639045</id><published>2011-07-26T17:49:00.001+10:00</published><updated>2011-07-26T17:49:29.947+10:00</updated><title type='text'>Visual Studio 2010 loading package errors</title><content type='html'>&lt;p&gt;After reinstalling Visual Studio 2010, service pack, and what-not, I started getting lots of errors about loading Visual Studio packages like RadLang, VSTS for Database Professionals, and other SQL-related stuff.&lt;/p&gt;&lt;p&gt;For now, running Visual Studio with the following option seems to have fixed the issue:&lt;/p&gt;&lt;p style="padding-left: 30px;"&gt;&lt;span style="line-height: 16px; color: #131313; font-family: Verdana, Tahoma, Arial, Helvetica, sans-serif; font-size: 11px;"&gt;&lt;em style="line-height: 16px;"&gt;devenv.exe /resetskippkgs&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;References:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.devexpress.com/Support/Center/p/Q260011.aspx"&gt;http://www.devexpress.com/Support/Center/p/Q260011.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.devexpress.com/Support/Center/p/K18144.aspx"&gt;http://www.devexpress.com/Support/Center/p/K18144.aspx&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/8749026-949957056644639045?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/949957056644639045/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=949957056644639045' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/949957056644639045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/949957056644639045'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/07/visual-studio-2010-loading-package.html' title='Visual Studio 2010 loading package errors'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-8562456023876184440</id><published>2011-07-22T17:50:00.001+10:00</published><updated>2011-07-26T17:46:59.828+10:00</updated><title type='text'>Visual Studio Crashes on Open</title><content type='html'>&lt;p&gt;After installing Internet Explorer my Windows Search stopped working and Visual Studio 2010 started crashing, reporting an exception in .Net 20r3 or something like that. The app would crash after opening a solution, right after the window "configuring solution" would close.&lt;/p&gt;&lt;p&gt;Fortunately, the fix was easy - deleting the .suo files made it go away the first time.&lt;/p&gt;&lt;p&gt;Problem details:&lt;/p&gt;&lt;pre&gt;Problem signature:&lt;br /&gt;Problem Event Name: CLR20r3&lt;br /&gt;Problem Signature 01: devenv.exe&lt;br /&gt;Problem Signature 02: 10.0.40219.1&lt;br /&gt;Problem Signature 03: 4d5f2a73&lt;br /&gt;Problem Signature 04: mscorlib&lt;br /&gt;Problem Signature 05: 4.0.0.0&lt;br /&gt;Problem Signature 06: 4d53693b&lt;br /&gt;Problem Signature 07: 2c26&lt;br /&gt;Problem Signature 08: 45&lt;br /&gt;Problem Signature 09: KUTS43RW3WMPE3EWT1R1Z5M5MTM1NR04&lt;br /&gt;OS Version: 6.1.7600.2.0.0.256.48&lt;br /&gt;Locale ID: 3081&lt;br /&gt;&lt;br /&gt;Additional information about the problem:&lt;br /&gt;LCID: 1033&lt;/pre&gt;&lt;p&gt;However, now I could only open the project/solution but opening a file in the project or trying to recompile would crash the Visual Studio again. Running "devenv.exe /log" creates an xml log file:&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 'Segoe UI', Verdana, Arial; font-size: 13px;"&gt;&lt;span class="parameter" style="font-style: italic;"&gt;%APPDATA%&lt;/span&gt;\Roaming\Microsoft\VisualStudio\&lt;span class="parameter" style="font-style: italic;"&gt;&amp;lt;version&amp;gt;&lt;/span&gt;\ActivityLog.xml.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;One of the last entries contained the error message.&amp;nbsp;According to forums, this could be related to Silverlight. So I removed all the installed components related to Silverlight. The problem is that Silverlight 4 Tools cannot be installed after the Visual Studio SP1. So I removed the Service Pack. Uninstallation requires reboot.&lt;/p&gt;&lt;p&gt;After that I installed the Silverlight Tools and reapplied the Visual Studio SP1. Since that bore no results, I reapplied Windows 7 Service Pack 1 and all the software above in various order.&lt;/p&gt;&lt;p&gt;However, it turned out that unplugging the (new) RAM sticks out and plugging them back in again fixed the problem!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-8562456023876184440?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/8562456023876184440/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=8562456023876184440' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/8562456023876184440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/8562456023876184440'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/07/visual-studio-crashes-on-open.html' title='Visual Studio Crashes on Open'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-610234754169779726</id><published>2011-07-22T17:12:00.005+10:00</published><updated>2011-12-10T00:09:59.653+11:00</updated><title type='text'>Google Chrome Offline Installer</title><content type='html'>Here is the URL for Google &lt;a href="http://www.google.com/chrome/eula.html?standalone=1&amp;amp;extra=devchannel&amp;amp;platform=win"&gt;Chrome Dev Channel offline installer&lt;/a&gt;.&amp;nbsp;Or try the links on &lt;a href="http://www.google.com/support/installer/bin/answer.py?answer=126299&amp;amp;&amp;amp;hl=en"&gt;this page&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Since the above links are often not up to date, check the following&amp;nbsp;answer, which contains direct links to particular &lt;a href="http://www.google.com/support/forum/p/Chrome/thread?tid=6c74504536129244&amp;amp;hl=en"&gt;binary releases&lt;/a&gt;.&amp;nbsp;Basically, to download the latest versions manually, the download link pattern is this:&lt;br /&gt;&lt;blockquote&gt;&lt;a href="http://cache.pack.google.com/edgedl/chrome/install/835.15/chrome_installer.exe"&gt;http://cache.pack.google.com/edgedl/chrome/install/835.15/chrome_installer.exe&lt;/a&gt;&lt;/blockquote&gt;with the numbers "835.15" needing to be replaced with &amp;nbsp;the last two segments of the build number from the &lt;a href="http://googlechromereleases.blogspot.com/"&gt;release notes blog&lt;/a&gt;.&amp;nbsp;The actual URL of the latest update version can also be seen using Fiddler and trying out the Google Chrome update through the browser.&lt;br /&gt;The link to Dev channel updates stream is &lt;a href="http://googlechromereleases.blogspot.com/search/label/Dev%20updates"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-610234754169779726?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/610234754169779726/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=610234754169779726' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/610234754169779726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/610234754169779726'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/07/google-chrome-offline-installer.html' title='Google Chrome Offline Installer'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-3959561219134103535</id><published>2011-07-19T18:05:00.001+10:00</published><updated>2011-07-19T18:05:22.578+10:00</updated><title type='text'>External Graphics for Laptops</title><content type='html'>&lt;p&gt;Since my graphics card in a laptop sucks for 3D gaming, I'm looking for a solution that does not involve getting another PC. I've heard earlier that there are external solutions that plug into one of laptop's express slots and allow "upgrade" of the available graphics capabilities of notebook computers.&lt;/p&gt;&lt;p&gt;While I could not find many around on the net, here is one: ViDock&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.villageinstruments.com/tiki-index.php?page=ViDock"&gt;http://www.villageinstruments.com/tiki-index.php?page=ViDock&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/8749026-3959561219134103535?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/3959561219134103535/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=3959561219134103535' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/3959561219134103535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/3959561219134103535'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/07/external-graphics-for-laptops.html' title='External Graphics for Laptops'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-8299030374439498215</id><published>2011-07-14T21:05:00.001+10:00</published><updated>2011-07-14T21:05:53.287+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UML'/><title type='text'>UML with Visual Studio 2010 on Channel 9</title><content type='html'>&lt;p&gt;There's a video series at Channel 9 on using the new UML features in Visual Studio 2010.&lt;/p&gt;&lt;p&gt;See Designing a project's physical structure (episode 6) - &lt;a href="http://channel9.msdn.com/blogs/clinted/uml-with-vs-2010-part-6-designing-a-projects-physical-structure"&gt;link&lt;/a&gt;, or the whole series (&lt;a href="http://channel9.msdn.com/Blogs/clinted"&gt;link&lt;/a&gt;) list.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-8299030374439498215?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/8299030374439498215/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=8299030374439498215' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/8299030374439498215'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/8299030374439498215'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/07/uml-with-visual-studio-2010-on-channel.html' title='UML with Visual Studio 2010 on Channel 9'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-5431755373758497342</id><published>2011-07-13T23:31:00.001+10:00</published><updated>2011-07-13T23:31:40.034+10:00</updated><title type='text'>WCF Tracing</title><content type='html'>&lt;p&gt;To troubleshoot crazy WCF-related errors, a very good option is to trace all the events in the service. While the &lt;a href="http://msdn.microsoft.com/en-us/library/ms733025.aspx"&gt;documentation&lt;/a&gt;&amp;nbsp;on MSDN contains useful info, the changes required to actually enable tracing are not all listed there.&amp;nbsp;&lt;/p&gt;&lt;p&gt;The full settings, that are added to Web.config when enabling tracing through the WCF Configuration Editor, look like this:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;pre&gt;Web.config&lt;br /&gt;&lt;/pre&gt;&lt;pre&gt;  &amp;lt;system.diagnostics&amp;gt;&lt;br /&gt;    &amp;lt;sources&amp;gt;&lt;br /&gt;      &amp;lt;source name="System.ServiceModel" switchValue="Warning, ActivityTracing"&lt;br /&gt;        propagateActivity="true"&amp;gt;&lt;br /&gt;        &amp;lt;listeners&amp;gt;&lt;br /&gt;          &amp;lt;add type="System.Diagnostics.DefaultTraceListener" name="Default"&amp;gt;&lt;br /&gt;            &amp;lt;filter type="" /&amp;gt;&lt;br /&gt;          &amp;lt;/add&amp;gt;&lt;br /&gt;          &amp;lt;add name="ServiceModelTraceListener"&amp;gt;&lt;br /&gt;            &amp;lt;filter type="" /&amp;gt;&lt;br /&gt;          &amp;lt;/add&amp;gt;&lt;br /&gt;        &amp;lt;/listeners&amp;gt;&lt;br /&gt;      &amp;lt;/source&amp;gt;&lt;br /&gt;    &amp;lt;/sources&amp;gt;&lt;br /&gt;    &amp;lt;sharedListeners&amp;gt;&lt;br /&gt;      &amp;lt;add initializeData="C:\Projects\MyProject\App_tracelog.svclog"&lt;br /&gt;        type="System.Diagnostics.XmlWriterTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"&lt;br /&gt;        name="ServiceModelTraceListener" traceOutputOptions="Timestamp"&amp;gt;&lt;br /&gt;        &amp;lt;filter type="" /&amp;gt;&lt;br /&gt;      &amp;lt;/add&amp;gt;&lt;br /&gt;    &amp;lt;/sharedListeners&amp;gt;&lt;br /&gt;  &amp;lt;/system.diagnostics&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-5431755373758497342?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/5431755373758497342/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=5431755373758497342' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/5431755373758497342'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/5431755373758497342'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/07/wcf-tracing.html' title='WCF Tracing'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-1180308919942270879</id><published>2011-07-13T20:58:00.001+10:00</published><updated>2011-07-13T20:58:41.264+10:00</updated><title type='text'>Languages that compile to JavaScript</title><content type='html'>&lt;p&gt;Here is the list of languages that compile into JavaScript.&lt;/p&gt;&lt;p&gt;CoffeeScript seems to be getting quite popular lately.&lt;/p&gt;&lt;p&gt;&lt;a href="https://github.com/jashkenas/coffee-script/wiki/List-of-languages-that-compile-to-JS"&gt;https://github.com/jashkenas/coffee-script/wiki/List-of-languages-that-compile-to-JS&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/8749026-1180308919942270879?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/1180308919942270879/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=1180308919942270879' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/1180308919942270879'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/1180308919942270879'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/07/languages-that-compile-to-javascript.html' title='Languages that compile to JavaScript'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-2332491624717289284</id><published>2011-07-13T17:59:00.001+10:00</published><updated>2011-07-13T17:59:22.335+10:00</updated><title type='text'>Setting custom diff/merge tool in TFS/Visual Studio</title><content type='html'>&lt;p&gt;In order to set Beyond Compare (or other custom tool) as the default tool for diff/merge operation in Team Foundation Server plugin for Visual Studio, do the following:&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Verdana, 'Lucida Grande', Lucida, Arial, sans-serif; font-size: 12px; line-height: 18px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;h3 style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 30px; outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 1em; font-family: 'Arial Black', Arial, Helvetica, Geneva, sans-serif; line-height: 1.5em; text-transform: uppercase; border: 0px initial initial;"&gt;&lt;a style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 12px; font-family: inherit; color: #556644; padding: 0px; margin: 0px; border: 0px initial initial;" href="http://msdn2.microsoft.com/en-us/teamsystem/aa718825.aspx"&gt;TEAM FOUNDATION SERVER (TFS)&lt;/a&gt;&lt;/h3&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 1.5em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 30px; outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 1em; font-family: inherit; line-height: 1.5em; border: 0px initial initial;"&gt;&lt;strong style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: bold; font-style: inherit; font-size: 12px; font-family: inherit; padding: 0px; margin: 0px; border: 0px initial initial;"&gt;Diff&lt;/strong&gt;&lt;/p&gt;&lt;ol style="margin-top: 0px; margin-right: 0px; margin-bottom: 1.5em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 55px; outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 12px; font-family: inherit; border: 0px initial initial;"&gt;&lt;li style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 12px; font-family: inherit; padding: 0px; margin: 0px; border: 0px initial initial;"&gt;In Visual Studio Choose&amp;nbsp;&lt;strong style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: bold; font-style: inherit; font-size: 12px; font-family: inherit; padding: 0px; margin: 0px; border: 0px initial initial;"&gt;Options&lt;/strong&gt;&amp;nbsp;from the&amp;nbsp;&lt;strong style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: bold; font-style: inherit; font-size: 12px; font-family: inherit; padding: 0px; margin: 0px; border: 0px initial initial;"&gt;Tools&lt;/strong&gt;&amp;nbsp;menu.&lt;/li&gt;&lt;li style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 12px; font-family: inherit; padding: 0px; margin: 0px; border: 0px initial initial;"&gt;Expand&amp;nbsp;&lt;strong style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: bold; font-style: inherit; font-size: 12px; font-family: inherit; padding: 0px; margin: 0px; border: 0px initial initial;"&gt;Source Control&lt;/strong&gt;&amp;nbsp;in the treeview.&lt;/li&gt;&lt;li style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 12px; font-family: inherit; padding: 0px; margin: 0px; border: 0px initial initial;"&gt;Click&amp;nbsp;&lt;strong style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: bold; font-style: inherit; font-size: 12px; font-family: inherit; padding: 0px; margin: 0px; border: 0px initial initial;"&gt;Visual Studio Team Foundation Server&lt;/strong&gt;&amp;nbsp;in the treeview.&lt;/li&gt;&lt;li style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 12px; font-family: inherit; padding: 0px; margin: 0px; border: 0px initial initial;"&gt;Click the&amp;nbsp;&lt;strong style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: bold; font-style: inherit; font-size: 12px; font-family: inherit; padding: 0px; margin: 0px; border: 0px initial initial;"&gt;Configure User Tools&lt;/strong&gt;&amp;nbsp;button.&lt;/li&gt;&lt;li style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 12px; font-family: inherit; padding: 0px; margin: 0px; border: 0px initial initial;"&gt;Click the&amp;nbsp;&lt;strong style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: bold; font-style: inherit; font-size: 12px; font-family: inherit; padding: 0px; margin: 0px; border: 0px initial initial;"&gt;Add&lt;/strong&gt;&amp;nbsp;button.&lt;/li&gt;&lt;li style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 12px; font-family: inherit; padding: 0px; margin: 0px; border: 0px initial initial;"&gt;Enter ".*" in the&amp;nbsp;&lt;strong style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: bold; font-style: inherit; font-size: 12px; font-family: inherit; padding: 0px; margin: 0px; border: 0px initial initial;"&gt;Extension&lt;/strong&gt;&amp;nbsp;edit.&lt;/li&gt;&lt;li style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 12px; font-family: inherit; padding: 0px; margin: 0px; border: 0px initial initial;"&gt;Choose&amp;nbsp;&lt;strong style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: bold; font-style: inherit; font-size: 12px; font-family: inherit; padding: 0px; margin: 0px; border: 0px initial initial;"&gt;Compare&lt;/strong&gt;&amp;nbsp;in the&amp;nbsp;&lt;strong style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: bold; font-style: inherit; font-size: 12px; font-family: inherit; padding: 0px; margin: 0px; border: 0px initial initial;"&gt;Operation&lt;/strong&gt;&amp;nbsp;combobox.&lt;/li&gt;&lt;li style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 12px; font-family: inherit; padding: 0px; margin: 0px; border: 0px initial initial;"&gt;Enter the path to BComp.exe in the&amp;nbsp;&lt;strong style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: bold; font-style: inherit; font-size: 12px; font-family: inherit; padding: 0px; margin: 0px; border: 0px initial initial;"&gt;Command&lt;/strong&gt;&amp;nbsp;edit.&lt;/li&gt;&lt;li style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 12px; font-family: inherit; padding: 0px; margin: 0px; border: 0px initial initial;"&gt;In the&amp;nbsp;&lt;strong style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: bold; font-style: inherit; font-size: 12px; font-family: inherit; padding: 0px; margin: 0px; border: 0px initial initial;"&gt;Arguments&lt;/strong&gt;&amp;nbsp;edit, use:&lt;br /&gt;&lt;code style="font-size: small;"&gt;%1 %2 /title1=%6 /title2=%7&lt;/code&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 1.5em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 30px; outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 1em; font-family: inherit; line-height: 1.5em; border: 0px initial initial;"&gt;&lt;strong style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: bold; font-style: inherit; font-size: 12px; font-family: inherit; padding: 0px; margin: 0px; border: 0px initial initial;"&gt;3-way Merge&lt;/strong&gt;&amp;nbsp;(v3 Pro)&lt;/p&gt;&lt;ol style="margin-top: 0px; margin-right: 0px; margin-bottom: 1.5em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 55px; outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 12px; font-family: inherit; border: 0px initial initial;"&gt;&lt;li style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 12px; font-family: inherit; padding: 0px; margin: 0px; border: 0px initial initial;"&gt;Follow steps 1-6 above.&lt;/li&gt;&lt;li style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 12px; font-family: inherit; padding: 0px; margin: 0px; border: 0px initial initial;"&gt;Choose&amp;nbsp;&lt;strong style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: bold; font-style: inherit; font-size: 12px; font-family: inherit; padding: 0px; margin: 0px; border: 0px initial initial;"&gt;Merge&lt;/strong&gt;&amp;nbsp;in the&amp;nbsp;&lt;strong style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: bold; font-style: inherit; font-size: 12px; font-family: inherit; padding: 0px; margin: 0px; border: 0px initial initial;"&gt;Operation&lt;/strong&gt;&amp;nbsp;combobox.&lt;/li&gt;&lt;li style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 12px; font-family: inherit; padding: 0px; margin: 0px; border: 0px initial initial;"&gt;Enter the path to BComp.exe in the&amp;nbsp;&lt;strong style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: bold; font-style: inherit; font-size: 12px; font-family: inherit; padding: 0px; margin: 0px; border: 0px initial initial;"&gt;Command&lt;/strong&gt;&amp;nbsp;edit.&lt;/li&gt;&lt;li style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 12px; font-family: inherit; padding: 0px; margin: 0px; border: 0px initial initial;"&gt;In the&amp;nbsp;&lt;strong style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: bold; font-style: inherit; font-size: 12px; font-family: inherit; padding: 0px; margin: 0px; border: 0px initial initial;"&gt;Arguments&lt;/strong&gt;&amp;nbsp;edit, use:&lt;br /&gt;&lt;code style="font-size: small;"&gt;%1 %2 %3 %4 /title1=%6 /title2=%7 /title3=%8 /title4=%9&lt;/code&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 1.5em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 30px; outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 1em; font-family: inherit; line-height: 1.5em; border: 0px initial initial;"&gt;&lt;strong style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: bold; font-style: inherit; font-size: 12px; font-family: inherit; padding: 0px; margin: 0px; border: 0px initial initial;"&gt;2-way Merge&lt;/strong&gt;&amp;nbsp;(v3 Std, v2)&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 1.5em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 30px; outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 1em; font-family: inherit; line-height: 1.5em; border: 0px initial initial;"&gt;Use the same steps as the 3-way merge above, but use the command line:&lt;br /&gt;&lt;code style="font-size: small;"&gt;%1 %2 /savetarget=%4 /title1=%6 /title2=%7&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Source: Beyond Compare support (&lt;a href="http://www.scootersoftware.com/support.php?c=kb_vcs.php"&gt;link&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/8749026-2332491624717289284?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/2332491624717289284/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=2332491624717289284' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/2332491624717289284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/2332491624717289284'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/07/setting-custom-diffmerge-tool-in.html' title='Setting custom diff/merge tool in TFS/Visual Studio'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-6981461040331338188</id><published>2011-07-01T16:40:00.001+10:00</published><updated>2011-07-01T16:41:54.596+10:00</updated><title type='text'>Selenium with SpecFlow</title><content type='html'>&lt;p&gt;In addition to the &lt;a href="http://alensiljak.blogspot.com/2011/07/specflow-and-selenium-quick-start.html"&gt;SpecFlow and Selenium Quick Start&lt;/a&gt;, here are a few notes on using Selenium in SpecFlow scenarios and step definitions.&lt;/p&gt;&lt;p&gt;Check the files in the Support directory in SpecFlow Examples code (&lt;a href="https://github.com/techtalk/SpecFlow-Examples/tree/master/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests.Selenium/Support"&gt;link&lt;/a&gt;). There is scaffolding that is very useful if you are using Selenium to simulate user behavior. The SeleniumSupport is linked to @web tag, which should be used for the tests that use the browser (i.e. user acceptance tests). This means that, when scenarios tagged with @web are run, it will trigger events to start and shut down Selenium, and make it available for custom tests in the meantime.&lt;/p&gt;&lt;p&gt;Inheriting from the SeleniumStepsBase makes implementation very simple:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;pre style="font-family: Consolas; font-size: 13; color: white; background: black;"&gt;&lt;span style="color: #cc7832;"&gt;using&lt;/span&gt;&amp;nbsp;System;&lt;br /&gt;&lt;span style="color: #cc7832;"&gt;using&lt;/span&gt;&amp;nbsp;System.Collections.Generic;&lt;br /&gt;&lt;span style="color: #cc7832;"&gt;using&lt;/span&gt;&amp;nbsp;System.Linq;&lt;br /&gt;&lt;span style="color: #cc7832;"&gt;using&lt;/span&gt;&amp;nbsp;System.Text;&lt;br /&gt;&lt;span style="color: #cc7832;"&gt;using&lt;/span&gt;&amp;nbsp;DoerSite.Tests.Support;&lt;br /&gt;&lt;span style="color: #cc7832;"&gt;using&lt;/span&gt;&amp;nbsp;TechTalk.SpecFlow;&lt;br /&gt;&lt;span style="color: #cc7832;"&gt;using&lt;/span&gt;&amp;nbsp;NUnit.Framework;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #cc7832;"&gt;namespace&lt;/span&gt;&amp;nbsp;DoerSite.Tests.SeleniumTests&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&lt;span style="color: #ffc66d;"&gt;TestFixture&lt;/span&gt;]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;class&lt;/span&gt;&amp;nbsp;&lt;span style="color: #ffc66d;"&gt;SeleniumStepsSample&lt;/span&gt;&amp;nbsp;:&amp;nbsp;&lt;span style="color: #ffc66d;"&gt;SeleniumStepsBase&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&lt;span style="color: #ffc66d;"&gt;Test&lt;/span&gt;]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;void&lt;/span&gt;&amp;nbsp;test()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;this&lt;/span&gt;.selenium.Open(&lt;span style="color: #a5c25c;"&gt;"/"&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #ffc66d;"&gt;Assert&lt;/span&gt;.IsTrue(selenium.IsTextPresent(&lt;span style="color: #a5c25c;"&gt;"Welcome!"&lt;/span&gt;));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;/pre&gt;&lt;p&gt;This implementation also depends on a couple of settings in the app.config:&lt;/p&gt;&lt;p&gt;&lt;pre style="font-family: Consolas; font-size: 13; color: white; background: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style="color: #cc7832;"&gt;appSettings&lt;/span&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style="color: #cc7832;"&gt;add&lt;/span&gt;&amp;nbsp;key=&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: #a5c250;"&gt;ReuseWebSession&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&amp;nbsp;value=&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: #a5c250;"&gt;true&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&amp;nbsp;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style="color: #cc7832;"&gt;add&lt;/span&gt;&amp;nbsp;key=&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: #a5c250;"&gt;AppUrl&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&amp;nbsp;value=&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: #a5c250;"&gt;http://localhost:51598/&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;span style="color: #cc7832;"&gt;appSettings&lt;/span&gt;&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-6981461040331338188?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/6981461040331338188/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=6981461040331338188' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/6981461040331338188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/6981461040331338188'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/07/selenium-with-specflow.html' title='Selenium with SpecFlow'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-7069746590144171704</id><published>2011-07-01T15:46:00.001+10:00</published><updated>2011-07-01T16:40:58.151+10:00</updated><title type='text'>SpecFlow and Selenium - Quick Start</title><content type='html'>&lt;p&gt;Here are brief steps on how to get started with SpecFlow and Selenium. This scenario assumes an ASP.NET MVC web application as the "code" and NUnit as the "test project".&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Web application&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Create new MVC web application&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;Test project&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Create a code library project.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Add reference to NUnit framework.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;Selenium&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Download Selenium IDE for Firefox. This component is used for generating tests by scripting user behavior.&lt;/li&gt;&lt;li&gt;Download Selenium DotNet package. Add reference to this package into the Test project.&lt;/li&gt;&lt;li&gt;Run Selenium IDE in Firefox and script your test with the web application.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Export the generated test into a C# file.&lt;/li&gt;&lt;li&gt;Add this file to the Test project.&lt;/li&gt;&lt;li&gt;Download Selenium Server and run with something like&lt;/li&gt;&lt;/ol&gt;&lt;p style="text-align: center;"&gt;&lt;em&gt;java -jar selenium-server-standalone-2.0rc3.jar&lt;/em&gt;&lt;/p&gt;&lt;p style="text-align: left;"&gt;This will start Selenium server on port 4444 by default. You can configure which browser you want the Selenium to start but by default this is Firefox.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;SpecFlow&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Download and install SpecFlow. It will add new Items to the File-&amp;gt;New menu in Visual Studio. The most important one is SpecFlow Feature item.&lt;/li&gt;&lt;li&gt;If you install SpecFlow NuGet package, it will add the minimum required settings to the app.config in the Test project. Apparently this is not required if the test runner is NUnit. Contents of the app.config look like this:&lt;/li&gt;&lt;/ul&gt;&lt;pre style="font-family: Consolas; font-size: 13; color: white; background: black;"&gt;&amp;lt;?&lt;span style="color: #cc7832;"&gt;xml&lt;/span&gt;&amp;nbsp;version=&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: #a5c250;"&gt;1.0&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&amp;nbsp;encoding=&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: #a5c250;"&gt;utf-8&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;?&amp;gt;&lt;br /&gt;&amp;lt;&lt;span style="color: #cc7832;"&gt;configuration&lt;/span&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style="color: #cc7832;"&gt;configSections&lt;/span&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style="color: #cc7832;"&gt;section&lt;/span&gt;&amp;nbsp;name=&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: #a5c250;"&gt;specFlow&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&amp;nbsp;type=&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: #a5c250;"&gt;TechTalk.SpecFlow.Configuration.ConfigurationSectionHandler,&amp;nbsp;TechTalk.SpecFlow&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&amp;nbsp;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;span style="color: #cc7832;"&gt;configSections&lt;/span&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style="color: #cc7832;"&gt;specFlow&lt;/span&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;!--&lt;span style="color: green;"&gt;&amp;nbsp;For&amp;nbsp;additional&amp;nbsp;details&amp;nbsp;on&amp;nbsp;SpecFlow&amp;nbsp;configuration&amp;nbsp;options&amp;nbsp;see&amp;nbsp;https://github.com/techtalk/SpecFlow/wiki/Configuration&amp;nbsp;&lt;/span&gt;--&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style="color: #cc7832;"&gt;language&lt;/span&gt;&amp;nbsp;feature=&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: #a5c250;"&gt;en-US&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&amp;nbsp;tool=&lt;span style="color: maroon;"&gt;""&lt;/span&gt;&amp;nbsp;/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style="color: #cc7832;"&gt;unitTestProvider&lt;/span&gt;&amp;nbsp;name=&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: #a5c250;"&gt;NUnit&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&amp;nbsp;/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style="color: #cc7832;"&gt;generator&lt;/span&gt;&amp;nbsp;allowDebugGeneratedFiles=&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: #a5c250;"&gt;false&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&amp;nbsp;/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style="color: #cc7832;"&gt;runtime&lt;/span&gt;&amp;nbsp;detectAmbiguousMatches=&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: #a5c250;"&gt;true&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stopAtFirstError=&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: #a5c250;"&gt;false&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;missingOrPendingStepsOutcome=&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: #a5c250;"&gt;Inconclusive&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&amp;nbsp;/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style="color: #cc7832;"&gt;trace&lt;/span&gt;&amp;nbsp;traceSuccessfulSteps=&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: #a5c250;"&gt;true&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;traceTimings=&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: #a5c250;"&gt;false&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;minTracedDuration=&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: #a5c250;"&gt;0:0:0.1&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;listener=&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: #a5c250;"&gt;TechTalk.SpecFlow.Tracing.DefaultListener,&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #a5c250;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TechTalk.SpecFlow&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&amp;nbsp;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;span style="color: #cc7832;"&gt;specFlow&lt;/span&gt;&amp;gt;&lt;br /&gt;&amp;lt;/&lt;span style="color: #cc7832;"&gt;configuration&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Add reference to SpecFlow. This will be automatically added if you install NuGet package.&lt;/li&gt;&lt;li&gt;Create your first SpecFlow Feature, edit the content to set up your feature and scenario(s).&lt;/li&gt;&lt;li&gt;Run the test on the Test project. Copy the code from the error message into a new file in StepDefinitions directory.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;That's it!&lt;/p&gt;&lt;p&gt;If you want to run Selenium in SpecFlow scenarios, check SpecFlow Examples on GitHub (&lt;a href="https://github.com/techtalk/SpecFlow-Examples"&gt;link&lt;/a&gt;), specifically SeleniumSupport class (&lt;a href="https://github.com/techtalk/SpecFlow-Examples/blob/master/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests.Selenium/Support/SeleniumSupport.cs"&gt;link&lt;/a&gt;). More on this in the follow-up post &lt;a href="http://alensiljak.blogspot.com/2011/07/selenium-with-specflow.html"&gt;Selenium with SpecFlow&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/8749026-7069746590144171704?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/7069746590144171704/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=7069746590144171704' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/7069746590144171704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/7069746590144171704'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/07/specflow-and-selenium-quick-start.html' title='SpecFlow and Selenium - Quick Start'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-2030244187791465961</id><published>2011-07-01T09:51:00.001+10:00</published><updated>2011-07-01T09:51:02.990+10:00</updated><title type='text'>VoIP Client of Choice</title><content type='html'>&lt;p&gt;Looking for a VoIP client to install on a PC that did not have one, I did a quick lookout at what is out there. I used to use heaps of different clients only to move to the next one when I'd notice that the development has stalled and/or that there are new features offered by other clients. I've used XLite, native providers' applications, and lately Linphone. However, I ran into &lt;a href="http://icanblink.com/"&gt;Blink&lt;/a&gt; and it is now my VoIP client of choice.&lt;/p&gt;&lt;p&gt;I will be using softphones a bit more, both on the desktop and on the mobile phone, as I have an Australian number with PennyTel and will use it to still "feel at home" when not in Australia. :)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-2030244187791465961?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/2030244187791465961/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=2030244187791465961' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/2030244187791465961'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/2030244187791465961'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/07/voip-client-of-choice.html' title='VoIP Client of Choice'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-8391149138999854853</id><published>2011-06-30T18:24:00.001+10:00</published><updated>2011-06-30T18:24:57.121+10:00</updated><title type='text'>Convert Flash to HTML5</title><content type='html'>&lt;p&gt;The time is *now*! Obviously the technology has matured enough that tools that automate transition from content in browser plugins into native support. In this case Flash to HTML5. It is (still) in Labs.&lt;/p&gt;&lt;p&gt;&lt;a href="http://swiffy.googlelabs.com/"&gt;http://swiffy.googlelabs.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/8749026-8391149138999854853?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/8391149138999854853/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=8391149138999854853' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/8391149138999854853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/8391149138999854853'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/06/convert-flash-to-html5.html' title='Convert Flash to HTML5'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-3749811417819907480</id><published>2011-06-27T16:57:00.001+10:00</published><updated>2011-06-27T16:57:21.164+10:00</updated><title type='text'>What to do when a phone is lost?</title><content type='html'>&lt;p&gt;As my brother lost his phone on his biking trip, it was a good trigger to investigate the options for protecting the data that is kept on the phones these days. These links relate only to Android:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Autowipe (&lt;a href="http://www.appbrain.com/app/autowipe/com.vesperaNovus.app.AutowipeFree"&gt;link&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;AndroidLost (&lt;a href="http://www.androidlost.com/"&gt;link&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;More to come.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-3749811417819907480?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/3749811417819907480/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=3749811417819907480' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/3749811417819907480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/3749811417819907480'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/06/what-to-do-when-phone-is-lost.html' title='What to do when a phone is lost?'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-4058804276671879948</id><published>2011-06-27T12:30:00.001+10:00</published><updated>2011-06-27T12:30:17.308+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MVC'/><title type='text'>VS Plugins</title><content type='html'>&lt;p&gt;There are a few cool Visual Studio 2010 plugins to assist working with HTML5:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Image Optimizer (&lt;a href="http://visualstudiogallery.msdn.microsoft.com/a56eddd3-d79b-48ac-8c8f-2db06ade77c3"&gt;link&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Web Standards Update for Microsoft Visual Studio 2010 SP1 (&lt;a href="http://visualstudiogallery.msdn.microsoft.com/a15c3ce9-f58f-42b7-8668-53f6cdc2cd83"&gt;link&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-4058804276671879948?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/4058804276671879948/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=4058804276671879948' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/4058804276671879948'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/4058804276671879948'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/06/vs-plugins.html' title='VS Plugins'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-5143013293403101166</id><published>2011-06-24T12:12:00.001+10:00</published><updated>2011-06-24T12:27:13.970+10:00</updated><title type='text'>Custom Table Mapping with Entity Framework (EF) 4.1</title><content type='html'>&lt;p&gt;I used EF 4.1 Code-First feature to develop a quick prototype for a QA team recently. Now more functionality is being added to the web application (ASP.NET MVC 3) and I need to display data from log4net's Log table. For that purpose I have to hook up another database, create a model with repository, and a new Data Context. Here I will list a few findings regarding conventions. They really become convenient only when known and also when a workaround is available for non-standard situations.&lt;/p&gt;&lt;p&gt;To add another database to the project, I simply copied an existing Data Context class and changed it's name. The class looked like this:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;pre style="font-family: Consolas; font-size: 13; color: white; background: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;class&lt;/span&gt;&amp;nbsp;&lt;span style="color: #ffc66d;"&gt;MySecondSystem&lt;/span&gt;&amp;nbsp;:&amp;nbsp;&lt;span style="color: #ffc66d;"&gt;DbContext&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;public&lt;/span&gt;&amp;nbsp;MySecondSystem()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #ffc66d;"&gt;DbSet&lt;/span&gt;&amp;lt;ESBStubMVC.Models.&lt;span style="color: #ffc66d;"&gt;Log&lt;/span&gt;&amp;gt;&amp;nbsp;Logs&amp;nbsp;{&amp;nbsp;&lt;span style="color: #cc7832;"&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;set&lt;/span&gt;;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;The original context's name had "Context" suffix but I removed that. The convention for finding a connection string is that a Connection String with the same Name will be loaded from Web.Config. Since there was already a Connection String with name "MySecondSystem" used for other purposes, adjusting the class name was the quickest way to make it use the same connection string. However, adding providerName to the connectionString tag is required for Code-First to work:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;pre style="font-family: Consolas; font-size: 13; color: white; background: black;"&gt;providerName=&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: #a5c250;"&gt;System.Data.SqlClient&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Class Log represents existing log4net Log table:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;pre style="font-family: Consolas; font-size: 13; color: white; background: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;class&lt;/span&gt;&amp;nbsp;&lt;span style="color: #ffc66d;"&gt;Log&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;int&lt;/span&gt;&amp;nbsp;Id&amp;nbsp;{&amp;nbsp;&lt;span style="color: #cc7832;"&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;set&lt;/span&gt;;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #ffc66d;"&gt;DateTime&lt;/span&gt;&amp;nbsp;Date&amp;nbsp;{&amp;nbsp;&lt;span style="color: #cc7832;"&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;set&lt;/span&gt;;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&lt;span style="color: #ffc66d;"&gt;StringLength&lt;/span&gt;(255,&amp;nbsp;ErrorMessage&amp;nbsp;=&amp;nbsp;&lt;span style="color: #a5c25c;"&gt;"The&amp;nbsp;{0}&amp;nbsp;must&amp;nbsp;be&amp;nbsp;at&amp;nbsp;least&amp;nbsp;{2}&amp;nbsp;characters&amp;nbsp;long."&lt;/span&gt;)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;string&lt;/span&gt;&amp;nbsp;Thread&amp;nbsp;{&amp;nbsp;&lt;span style="color: #cc7832;"&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;set&lt;/span&gt;;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&lt;span style="color: #ffc66d;"&gt;StringLength&lt;/span&gt;(50,&amp;nbsp;ErrorMessage&amp;nbsp;=&amp;nbsp;&lt;span style="color: #a5c25c;"&gt;"The&amp;nbsp;{0}&amp;nbsp;must&amp;nbsp;be&amp;nbsp;at&amp;nbsp;least&amp;nbsp;{2}&amp;nbsp;characters&amp;nbsp;long."&lt;/span&gt;)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;string&lt;/span&gt;&amp;nbsp;Level&amp;nbsp;{&amp;nbsp;&lt;span style="color: #cc7832;"&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;set&lt;/span&gt;;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&lt;span style="color: #ffc66d;"&gt;StringLength&lt;/span&gt;(255,&amp;nbsp;ErrorMessage&amp;nbsp;=&amp;nbsp;&lt;span style="color: #a5c25c;"&gt;"The&amp;nbsp;{0}&amp;nbsp;must&amp;nbsp;be&amp;nbsp;at&amp;nbsp;least&amp;nbsp;{2}&amp;nbsp;characters&amp;nbsp;long."&lt;/span&gt;)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;string&lt;/span&gt;&amp;nbsp;Logger&amp;nbsp;{&amp;nbsp;&lt;span style="color: #cc7832;"&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;set&lt;/span&gt;;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&lt;span style="color: #ffc66d;"&gt;StringLength&lt;/span&gt;(4000,&amp;nbsp;ErrorMessage&amp;nbsp;=&amp;nbsp;&lt;span style="color: #a5c25c;"&gt;"The&amp;nbsp;{0}&amp;nbsp;must&amp;nbsp;be&amp;nbsp;at&amp;nbsp;least&amp;nbsp;{2}&amp;nbsp;characters&amp;nbsp;long."&lt;/span&gt;)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;string&lt;/span&gt;&amp;nbsp;Message&amp;nbsp;{&amp;nbsp;&lt;span style="color: #cc7832;"&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;set&lt;/span&gt;;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&lt;span style="color: #ffc66d;"&gt;StringLength&lt;/span&gt;(2000,&amp;nbsp;ErrorMessage&amp;nbsp;=&amp;nbsp;&lt;span style="color: #a5c25c;"&gt;"The&amp;nbsp;{0}&amp;nbsp;must&amp;nbsp;be&amp;nbsp;at&amp;nbsp;least&amp;nbsp;{2}&amp;nbsp;characters&amp;nbsp;long."&lt;/span&gt;)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;string&lt;/span&gt;&amp;nbsp;Exception&amp;nbsp;{&amp;nbsp;&lt;span style="color: #cc7832;"&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;set&lt;/span&gt;;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;In the LogRepository, created by MvcScaffolding, I just changed the data context class since it had picked up an old, existing one:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;pre style="font-family: Consolas; font-size: 13; color: white; background: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;class&lt;/span&gt;&amp;nbsp;&lt;span style="color: #ffc66d;"&gt;LogRepository&lt;/span&gt;&amp;nbsp;:&amp;nbsp;&lt;span style="color: #2b91af;"&gt;ILogModelRepository&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #ffc66d;"&gt;MySecondSystem&lt;/span&gt;&amp;nbsp;context&amp;nbsp;=&amp;nbsp;&lt;span style="color: #cc7832;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color: #ffc66d;"&gt;MySecondSystem&lt;/span&gt;();&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Now, to actually read from Log table, as opposed to Logs - plural is used by convention - I had to add a custom mapping. This is easy enough to set by overriding OnModelCreating:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;pre style="font-family: Consolas; font-size: 13; color: white; background: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;protected&lt;/span&gt;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;override&lt;/span&gt;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;void&lt;/span&gt;&amp;nbsp;OnModelCreating(&lt;span style="color: #ffc66d;"&gt;DbModelBuilder&lt;/span&gt;&amp;nbsp;modelBuilder)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;base&lt;/span&gt;.OnModelCreating(modelBuilder);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: green;"&gt;//&amp;nbsp;Custom&amp;nbsp;mapping.&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;modelBuilder.Entity&amp;lt;&lt;span style="color: #ffc66d;"&gt;Log&lt;/span&gt;&amp;gt;().Map(c&amp;nbsp;=&amp;gt;&amp;nbsp;c.ToTable(&lt;span style="color: #a5c25c;"&gt;"Log"&lt;/span&gt;));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;So, the final Data Context class looks like this:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;pre style="font-family: Consolas; font-size: 13; color: white; background: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;class&lt;/span&gt;&amp;nbsp;&lt;span style="color: #ffc66d;"&gt;MySecondSystem&lt;/span&gt;&amp;nbsp;:&amp;nbsp;&lt;span style="color: #ffc66d;"&gt;DbContext&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;public&lt;/span&gt;&amp;nbsp;MySecondSystem()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #ffc66d;"&gt;DbSet&lt;/span&gt;&amp;lt;ESBStubMVC.Models.&lt;span style="color: #ffc66d;"&gt;Log&lt;/span&gt;&amp;gt;&amp;nbsp;Logs&amp;nbsp;{&amp;nbsp;&lt;span style="color: #cc7832;"&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;set&lt;/span&gt;;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;protected&lt;/span&gt;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;override&lt;/span&gt;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;void&lt;/span&gt;&amp;nbsp;OnModelCreating(&lt;span style="color: #ffc66d;"&gt;DbModelBuilder&lt;/span&gt;&amp;nbsp;modelBuilder)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;base&lt;/span&gt;.OnModelCreating(modelBuilder);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: green;"&gt;//&amp;nbsp;Custom&amp;nbsp;mapping.&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;modelBuilder.Entity&amp;lt;&lt;span style="color: #ffc66d;"&gt;Log&lt;/span&gt;&amp;gt;().Map(c&amp;nbsp;=&amp;gt;&amp;nbsp;c.ToTable(&lt;span style="color: #a5c25c;"&gt;"Log"&lt;/span&gt;));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-5143013293403101166?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/5143013293403101166/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=5143013293403101166' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/5143013293403101166'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/5143013293403101166'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/06/custom-table-mapping-with-entity.html' title='Custom Table Mapping with Entity Framework (EF) 4.1'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-7556813147095483610</id><published>2011-06-22T18:56:00.001+10:00</published><updated>2011-06-22T19:08:08.994+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MVC'/><title type='text'>AppHarbor .NET Hosting and Mercurial</title><content type='html'>&lt;p&gt;AppHarbor offers free .NET hosting for small projects, just what some people need in order to deploy their hobby application, low-traffic site, a prototype, or something along those lines and have it available "out there".&lt;/p&gt;&lt;p&gt;Out of the box, AppHarbor works with Git as the code versioning system and makes it really easy and convenient to deploy your site by just pushing the source code. While this could prompt &lt;a href="http://mercurial.selenic.com/"&gt;Mercurial&lt;/a&gt; users to try fiddling with &lt;a href="http://mercurial.selenic.com/wiki/HgGit"&gt;hg-git&lt;/a&gt;, there is a better way.&amp;nbsp;Mercurial is supported by using &lt;a href="https://bitbucket.org/"&gt;BitBucket&lt;/a&gt; as the code hosting provider.&lt;/p&gt;&lt;p&gt;Check AppHarbor instructions on how to link everything together - &lt;a href="http://support.appharbor.com/kb/getting-started/using-mercurial-on-appharbor"&gt;here&lt;/a&gt;, while instructions on how to do it via hg-git are&amp;nbsp;&lt;a href="http://support.appharbor.com/kb/getting-started/using-appharbor-with-mercurial-and-hg-git"&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/8749026-7556813147095483610?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/7556813147095483610/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=7556813147095483610' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/7556813147095483610'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/7556813147095483610'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/06/appharbor-net-hosting-and-mercurial.html' title='AppHarbor .NET Hosting and Mercurial'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-3986238061522868663</id><published>2011-06-20T20:13:00.001+10:00</published><updated>2011-06-20T20:13:26.574+10:00</updated><title type='text'>Software Repositories</title><content type='html'>&lt;p&gt;With the lack of a better term to describe this type of web sites, here is the list of software repositories that contain links to the latest versions of free software. FileHippo also has an application that will check your installed software and notify you if there are any new versions.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;FileHippo (&lt;a href="http://www.filehippo.com"&gt;link&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;SrcWeb (&lt;a href="http://srcweb.net/"&gt;link&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;These sites allow easy download of the latest versions of software updates. Hopefully all the software manufacturers start using something similar to the distribution process for Google Chrome.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-3986238061522868663?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/3986238061522868663/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=3986238061522868663' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/3986238061522868663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/3986238061522868663'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/06/software-repositories.html' title='Software Repositories'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-7891981222208108354</id><published>2011-06-17T11:26:00.001+10:00</published><updated>2011-06-17T11:26:22.642+10:00</updated><title type='text'>World Wide Telescope</title><content type='html'>&lt;p&gt;Here is the link to the World Wide Telescope (I keep opening the site that sells telescopes, all the time):&lt;/p&gt;&lt;p&gt;www.worldwidetelescope.org&lt;/p&gt;&lt;p&gt;It used to be wwtelescope.com, which was a bit confusing.&lt;/p&gt;&lt;p&gt;A nice feature is the ability to share links to views. This, however sucks in Google Chrome because it is impossible to just copy the URL from the message that pops up, without taking a snapshot of it and running it through an OCR. :)&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.worldwidetelescope.org/wwtweb/goto.aspx?object=Crab Nebula : Dead Star Creates Celestial Havoc&amp;amp;ra=5.57555555555555&amp;amp;dec=22.0166666666667&amp;amp;zoom=1"&gt;Crab Nebula&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/8749026-7891981222208108354?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/7891981222208108354/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=7891981222208108354' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/7891981222208108354'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/7891981222208108354'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/06/world-wide-telescope.html' title='World Wide Telescope'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-6136014874106170127</id><published>2011-06-03T12:41:00.001+10:00</published><updated>2011-06-03T12:41:01.037+10:00</updated><title type='text'>Resharper Keyboard Shortcut for Import Namespaces</title><content type='html'>&lt;p&gt;After fiddling with Visual Studio setting, installing and reinstalling different Resharper nightly builds and stable builds, I just had a weird case where the keyboard shortcut combination for importing the namespaces disappeared.&lt;/p&gt;&lt;p&gt;In the settings, I could not find anything that even remotely resembled the setting I was looking for. After reinstalling the application again, it turns out that Alt+Enter combination is stored under&lt;/p&gt;&lt;p&gt;ReSharper_QuickFix&lt;/p&gt;&lt;p&gt;key. I'm posting it just in case it happens again. :)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-6136014874106170127?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/6136014874106170127/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=6136014874106170127' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/6136014874106170127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/6136014874106170127'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/06/resharper-keyboard-shortcut-for-import.html' title='Resharper Keyboard Shortcut for Import Namespaces'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-684440326436633698</id><published>2011-06-02T13:08:00.001+10:00</published><updated>2011-06-02T13:08:48.892+10:00</updated><title type='text'>Learn Python the Hard Way</title><content type='html'>&lt;p&gt;Zed A. Shaw shares a book on how to learn Python!&lt;/p&gt;&lt;p&gt;&lt;a href="http://learnpythonthehardway.org/index"&gt;http://learnpythonthehardway.org/index&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/8749026-684440326436633698?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/684440326436633698/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=684440326436633698' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/684440326436633698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/684440326436633698'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/06/learn-python-hard-way.html' title='Learn Python the Hard Way'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-4585523976490608015</id><published>2011-05-31T10:19:00.001+10:00</published><updated>2011-05-31T10:19:01.872+10:00</updated><title type='text'>Quick Windsor Example</title><content type='html'>&lt;p&gt;Castle.Windsor, an IoC container, can be implemented in multiple ways. Here is one of them. I find it rather simple and flexible. Here is a quick example on how to get it up and running in a project.&lt;/p&gt;&lt;p&gt;The code is only a few lines:&lt;/p&gt;&lt;p&gt;&lt;pre style="font-family: Consolas; font-size: 13; color: white; background: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;void&lt;/span&gt;&amp;nbsp;RegisterIoC()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;var&lt;/span&gt;&amp;nbsp;container&amp;nbsp;=&amp;nbsp;&lt;span style="color: #cc7832;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color: #ffc66d;"&gt;WindsorContainer&lt;/span&gt;(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color: #ffc66d;"&gt;XmlInterpreter&lt;/span&gt;(&lt;span style="color: #cc7832;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color: #ffc66d;"&gt;FileResource&lt;/span&gt;(&lt;span style="color: #a5c25c;"&gt;"castle.config"&lt;/span&gt;)));&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;var&lt;/span&gt;&amp;nbsp;outboundMessageHandlerStrategy&amp;nbsp;=&amp;nbsp;container.Resolve&amp;lt;&lt;span style="color: #2b91af;"&gt;IOutboundMessageHandlerStrategy&lt;/span&gt;&amp;gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;The configuration is read from castle.config file, where the components are configured. This allows for flexibility and making the module replacement a configuration change instead of code change.&lt;/p&gt;&lt;p&gt;The castle.config looks like:&lt;/p&gt;&lt;p&gt;&lt;pre style="font-family: Consolas; font-size: 13; color: white; background: black;"&gt;&amp;lt;?&lt;span style="color: #cc7832;"&gt;xml&lt;/span&gt;&amp;nbsp;version=&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: #a5c250;"&gt;1.0&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;?&amp;gt;&lt;br /&gt;&amp;lt;&lt;span style="color: #cc7832;"&gt;configuration&lt;/span&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style="color: #cc7832;"&gt;components&lt;/span&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style="color: #cc7832;"&gt;component&lt;/span&gt;&amp;nbsp;id=&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: #a5c250;"&gt;taxcalc.service&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;type=&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: #a5c250;"&gt;IoC.Tutorials.Part1.TaxCalculator,&amp;nbsp;IoC.Tutorials.Part1&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&amp;nbsp;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;span style="color: #cc7832;"&gt;components&lt;/span&gt;&amp;gt;&lt;br /&gt;&amp;lt;/&lt;span style="color: #cc7832;"&gt;configuration&lt;/span&gt;&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;The type name and namespace do not match the code above, btw, but the principle is there.&lt;/p&gt;&lt;p&gt;Another other option would be to use fluent interface to configure the container, as below.&lt;/p&gt;&lt;p&gt;&lt;pre style="font-family: Consolas; font-size: 13px; color: white; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: black; background-position: initial initial; background-repeat: initial initial;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;container.Register(&lt;span style="color: #ffc66d;"&gt;Component&lt;/span&gt;.For&amp;lt;&lt;span style="color: #2b91af;"&gt;IOutboundMessageHandlerStrategy&lt;/span&gt;&amp;gt;()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.ImplementedBy&amp;lt;&lt;span style="color: #ffc66d;"&gt;WCFOutboundMessageHandlerStrategy&lt;/span&gt;&amp;gt;().Named(&lt;span style="color: #a5c25c;"&gt;"blah"&lt;/span&gt;));&lt;br /&gt; &lt;br /&gt;&lt;/pre&gt;&lt;div&gt;At the moment, this is the work in progress.&amp;nbsp;I'll get to finalize this example when I'm back to the task that involves Windsor.&lt;/div&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-4585523976490608015?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/4585523976490608015/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=4585523976490608015' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/4585523976490608015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/4585523976490608015'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/05/quick-windsor-example.html' title='Quick Windsor Example'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-2870912168574425763</id><published>2011-05-28T19:42:00.001+10:00</published><updated>2011-05-28T19:42:01.656+10:00</updated><title type='text'>MP3 AudioBooks in iTunes</title><content type='html'>&lt;p&gt;I just found a piece of advice that seems quite useful for MP3 versions of audiobooks:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;There is no need to download or convert to bookmarkable (remember your place in the book where you were there last) mp4 (.4mb) format for i-Pods or i-Phones.&amp;nbsp;&lt;/p&gt;&lt;p&gt;If you don't want to download or convert to 4mb here is what to do if you want your mp3 Audiobook files to be "Bookmarkable". (Look Like Audiobooks)&lt;/p&gt;&lt;p&gt;Open iTunes, click on "File" tab and select "Add Folder to library". Click the mp3 file or files in i-Tunes, choose get info, go to the options tab, tick "Audiobook in Media kind ", and then tick "Remember position" &amp;amp; Skip When Shuffling".&lt;/p&gt;&lt;p&gt;Job done.&lt;/p&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-2870912168574425763?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/2870912168574425763/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=2870912168574425763' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/2870912168574425763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/2870912168574425763'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/05/mp3-audiobooks-in-itunes.html' title='MP3 AudioBooks in iTunes'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-864440541074465252</id><published>2011-05-27T12:37:00.001+10:00</published><updated>2011-05-27T12:37:25.468+10:00</updated><title type='text'>Code-First, EF 4.1, SQL Compact</title><content type='html'>&lt;p&gt;Entity Framework 4.1 now fully supports SQL Server Compact for Code-First Development with ASP.NET MVC 3. There are a few gotchas still, especially considering that CTP versions of libraries had workarounds and are therefore incompatible with the RTM. But since they are still available as NuGet packages, this might be confusing for the beginners. It certainly was for me.&lt;/p&gt;&lt;p&gt;So, here are the steps:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Create an MVC 3 application.&lt;/li&gt;&lt;li&gt;Create Model classes.&lt;/li&gt;&lt;li&gt;Scaffold the controllers and views.&lt;/li&gt;&lt;li&gt;Add the connection string to Web.Config&lt;/li&gt;&lt;li&gt;Adjust Global.asax Application Start&amp;nbsp;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;Connection String&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;pre style="font-family: Consolas; font-size: 13; color: white; background: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style="color: #cc7832;"&gt;add&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name=&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: #a5c250;"&gt;WithCompactContext&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;connectionString=&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: #a5c250;"&gt;DataSource=|DataDirectory|MyDb.sdf&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;providerName=&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: #a5c250;"&gt;System.Data.SqlServerCe.4.0&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;/&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Global.asax::Application_Start&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;pre style="font-family: Consolas; font-size: 13; color: white; background: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.Data.Entity.&lt;span style="color: #ffc66d;"&gt;Database&lt;/span&gt;.SetInitializer(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;new&lt;/span&gt;&amp;nbsp;System.Data.Entity.&lt;span style="color: #ffc66d;"&gt;DropCreateDatabaseIfModelChanges&lt;/span&gt;&amp;lt;WithCompact.Models.&lt;span style="color: #ffc66d;"&gt;WithCompactContext&lt;/span&gt;&amp;gt;());&lt;br /&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;This option tells the EF to recreate the database if model changes. Tip: make sure you don't already have the database file created when working with SQL Server Compact, otherwise the following errors pops up&lt;/p&gt;&lt;p&gt;&lt;span style="border-collapse: collapse; font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif; line-height: 18px;"&gt;&lt;pre class="lang-sql prettyprint" style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #eeeeee; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; overflow-x: auto; overflow-y: auto; width: auto; max-height: 600px; background-position: initial initial; background-repeat: initial initial; padding: 5px; border: 0px initial initial;"&gt;&lt;code style="font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #eeeeee; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; background-position: initial initial; background-repeat: initial initial; padding: 0px; margin: 0px; border: 0px initial initial;"&gt;&lt;span class="pln" style="font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; padding: 0px; margin: 0px; border: 0px initial initial;"&gt;Model compatibility cannot be checked because the &lt;/span&gt;&lt;span class="kwd" style="font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #00008b; background-position: initial initial; background-repeat: initial initial; padding: 0px; margin: 0px; border: 0px initial initial;"&gt;database&lt;/span&gt;&lt;span class="pln" style="font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; padding: 0px; margin: 0px; border: 0px initial initial;"&gt; does &lt;/span&gt;&lt;span class="kwd" style="font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #00008b; background-position: initial initial; background-repeat: initial initial; padding: 0px; margin: 0px; border: 0px initial initial;"&gt;not&lt;/span&gt;&lt;span class="pln" style="font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; padding: 0px; margin: 0px; border: 0px initial initial;"&gt; contain model metadata&lt;/span&gt;&lt;span class="pun" style="font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; padding: 0px; margin: 0px; border: 0px initial initial;"&gt;.&lt;/span&gt;&lt;span class="pln" style="font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; padding: 0px; margin: 0px; border: 0px initial initial;"&gt; Ensure that IncludeMetadataConvention has been added &lt;/span&gt;&lt;span class="kwd" style="font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #00008b; background-position: initial initial; background-repeat: initial initial; padding: 0px; margin: 0px; border: 0px initial initial;"&gt;to&lt;/span&gt;&lt;span class="pln" style="font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; padding: 0px; margin: 0px; border: 0px initial initial;"&gt; the DbModelBuilder conventions&lt;/span&gt;&lt;span class="pun" style="font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; padding: 0px; margin: 0px; border: 0px initial initial;"&gt;.&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-864440541074465252?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/864440541074465252/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=864440541074465252' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/864440541074465252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/864440541074465252'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/05/code-first-ef-41-sql-compact.html' title='Code-First, EF 4.1, SQL Compact'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-2392508807920505915</id><published>2011-05-27T10:22:00.001+10:00</published><updated>2011-05-27T10:22:00.523+10:00</updated><title type='text'>MIX 2011 Videos</title><content type='html'>&lt;p&gt;Presentations from MIX 2011 are available at Channel 9:&lt;/p&gt;&lt;p&gt;&lt;a href="http://channel9.msdn.com/Events/MIX/MIX11"&gt;http://channel9.msdn.com/Events/MIX/MIX11&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/8749026-2392508807920505915?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/2392508807920505915/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=2392508807920505915' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/2392508807920505915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/2392508807920505915'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/05/mix-2011-videos.html' title='MIX 2011 Videos'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-7914223046184347597</id><published>2011-05-25T21:19:00.001+10:00</published><updated>2011-05-25T21:32:10.942+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MVC'/><title type='text'>Coexisting WebForms and MVC</title><content type='html'>&lt;p&gt;In addition to my previous &lt;a href="http://alensiljak.blogspot.com/2011/05/mixing-aspnet-webforms-and-mvc.html"&gt;post on the topic&lt;/a&gt;, here are the steps to take if MVC is to be added to an existing WebForms project:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Add references to &lt;ul&gt;&lt;li&gt;System.Web.Routing&lt;/li&gt;&lt;li&gt;System.Web.Abstractions&lt;/li&gt;&lt;li&gt;System.Web.Mvc&lt;/li&gt;&lt;li&gt;System.Web.Helpers&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Add directories to the existing site root &lt;ul&gt;&lt;li&gt;Controllers&lt;/li&gt;&lt;li&gt;Views&lt;/li&gt;&lt;li&gt;Content (optional) for images and CSS&lt;/li&gt;&lt;li&gt;Scripts (optional) for JavaScript&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Update web.config to load the above assemblies at runtime and register the UrlRoutingModule&lt;/li&gt;&lt;li&gt;Set route(s)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;If you decide to keep the default route then either copy (from a blank Mvc project) or create a new HomeController and the view(s) for the actions. The best way is to do the above tasks manually and then copy the content, like controllers, views, and scripts, from a starter Mvc site.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Web.config&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;These are the settings to add to web.config:&lt;/p&gt;&lt;pre&gt;    &amp;lt;compilation debug="true" targetFramework="4.0"&amp;gt;&lt;br /&gt;      &amp;lt;assemblies&amp;gt;&lt;br /&gt;        &amp;lt;add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /&amp;gt;&lt;br /&gt;        &amp;lt;add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /&amp;gt;&lt;br /&gt;        &amp;lt;add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /&amp;gt;&lt;br /&gt;        &amp;lt;add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /&amp;gt;&lt;br /&gt;        &amp;lt;add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /&amp;gt;&lt;br /&gt;      &amp;lt;/assemblies&amp;gt;&lt;br /&gt;    &amp;lt;/compilation&amp;gt;&lt;/pre&gt;&lt;p&gt;and also&lt;/p&gt;&lt;pre&gt;  &amp;lt;system.web&amp;gt;&lt;br /&gt;    &amp;lt;pages&amp;gt;&lt;br /&gt;      &amp;lt;namespaces&amp;gt;&lt;br /&gt;        &amp;lt;add namespace="System.Web.Helpers" /&amp;gt;&lt;br /&gt;        &amp;lt;add namespace="System.Web.Mvc" /&amp;gt;&lt;br /&gt;        &amp;lt;add namespace="System.Web.Mvc.Ajax" /&amp;gt;&lt;br /&gt;        &amp;lt;add namespace="System.Web.Mvc.Html" /&amp;gt;&lt;br /&gt;        &amp;lt;add namespace="System.Web.Routing" /&amp;gt;&lt;br /&gt;        &amp;lt;add namespace="System.Web.WebPages"/&amp;gt;&lt;br /&gt;      &amp;lt;/namespaces&amp;gt;&lt;br /&gt;    &amp;lt;/pages&amp;gt;&lt;br /&gt;  &amp;lt;/system.web&amp;gt;&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-7914223046184347597?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/7914223046184347597/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=7914223046184347597' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/7914223046184347597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/7914223046184347597'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/05/coexisting-webforms-and-mvc.html' title='Coexisting WebForms and MVC'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-684419442998694252</id><published>2011-05-25T14:00:00.001+10:00</published><updated>2011-05-27T14:31:14.553+10:00</updated><title type='text'>Code-First Development with Entity Framework 4.1</title><content type='html'>&lt;p&gt;Entity Framework 4.1 is delivered with MVC 3 (Tools Update). It allows for easier Code-First Development, which means creating custom busines objects/entities and repositories (data context), and then mapping them to the database. Rather than the other way around, which is usually the case (unless you use NHibernate and have known about this for years :).&lt;/p&gt;&lt;p&gt;One issue that I ran into when using Code First Development was that I tried to add my own objects to the project that already had an .edmx model generated from the database. For some reason EF goes nuts and things just don't work.&lt;/p&gt;&lt;p&gt;The solution to that is to remove .edmx in some way. Either rewrite the objects to use Code First or separate them into separate assemblies.&lt;/p&gt;&lt;p&gt;For more info, see&lt;/p&gt;&lt;p&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en/adonetefx/thread/4d9846a0-f890-41df-9444-cf2b4d2bd710"&gt;http://social.msdn.microsoft.com/Forums/en/adonetefx/thread/4d9846a0-f890-41df-9444-cf2b4d2bd710&lt;/a&gt;&lt;/p&gt;&lt;p&gt;All the code that needs to be written is the Model. I use the following classes as a start:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;pre style="font-family: Consolas; font-size: 13; color: white; background: black;"&gt;&lt;span style="color: #cc7832;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;class&lt;/span&gt;&amp;nbsp;&lt;span style="color: #ffc66d;"&gt;WorkItem&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;int&lt;/span&gt;&amp;nbsp;Id&amp;nbsp;{&amp;nbsp;&lt;span style="color: #cc7832;"&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;set&lt;/span&gt;;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&lt;span style="color: #ffc66d;"&gt;MaxLength&lt;/span&gt;(100)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;string&lt;/span&gt;&amp;nbsp;ItemName&amp;nbsp;{&amp;nbsp;&lt;span style="color: #cc7832;"&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;set&lt;/span&gt;;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;int&lt;/span&gt;&amp;nbsp;WorkOrderId&amp;nbsp;{&amp;nbsp;&lt;span style="color: #cc7832;"&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;set&lt;/span&gt;;&amp;nbsp;}&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;virtual&lt;/span&gt;&amp;nbsp;&lt;span style="color: #ffc66d;"&gt;WorkOrder&lt;/span&gt;&amp;nbsp;Order&amp;nbsp;{&amp;nbsp;&lt;span style="color: #cc7832;"&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;set&lt;/span&gt;;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/pre&gt;&lt;pre style="font-family: Consolas; font-size: 13; color: white; background: black;"&gt;&lt;pre style="font-family: Consolas; font-size: 13; color: white; background: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;class&lt;/span&gt;&amp;nbsp;&lt;span style="color: #ffc66d;"&gt;WorkOrder&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;int&lt;/span&gt;&amp;nbsp;Id&amp;nbsp;{&amp;nbsp;&lt;span style="color: #cc7832;"&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;set&lt;/span&gt;;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;string&lt;/span&gt;&amp;nbsp;Title&amp;nbsp;{&amp;nbsp;&lt;span style="color: #cc7832;"&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;set&lt;/span&gt;;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #ffc66d;"&gt;DateTime&lt;/span&gt;?&amp;nbsp;OrderDate&amp;nbsp;{&amp;nbsp;&lt;span style="color: #cc7832;"&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;set&lt;/span&gt;;&amp;nbsp;}&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;virtual&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af;"&gt;ICollection&lt;/span&gt;&amp;lt;&lt;span style="color: #ffc66d;"&gt;WorkItem&lt;/span&gt;&amp;gt;&amp;nbsp;Items&amp;nbsp;{&amp;nbsp;&lt;span style="color: #cc7832;"&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;set&lt;/span&gt;;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-684419442998694252?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/684419442998694252/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=684419442998694252' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/684419442998694252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/684419442998694252'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/05/code-first-development-with-entity.html' title='Code-First Development with Entity Framework 4.1'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-585219396566984968</id><published>2011-05-25T09:54:00.001+10:00</published><updated>2011-05-25T10:46:32.880+10:00</updated><title type='text'>SQLite AutoIncrement columns</title><content type='html'>&lt;p&gt;&lt;strong&gt;SQLite&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;I'm using SQLite for data storage in the quick proof-of-concept sites. One thing that is convenient to have is autoincrement Id field so one does not have to write own code to maintain the uniqueness, having more time to focus on actual work that the application is supposed to do.&lt;/p&gt;&lt;p&gt;While I've been trying different keywords, from different suggestions over the web, it turns out the AutoIncrement functionality is already built in SQLite and kicks off automatically when the Id field is of type Integer. Also, bear in mind that Integer here is int64 so there's plenty of values for most of the common scenarios.&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: medium;"&gt;Short answer: A column declared&amp;nbsp;&lt;a style="color: #044a64;" href="http://www.sqlite.org/lang_createtable.html#rowid"&gt;INTEGER PRIMARY KEY&lt;/a&gt;&amp;nbsp;will autoincrement.&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;See&amp;nbsp;&lt;a href="http://www.sqlite.org/faq.html#q1"&gt;http://www.sqlite.org/faq.html#q1&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Entity Framework&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Since I am using Entity Framewok to work with the data in&amp;nbsp;SQLite database&amp;nbsp;(MVC Scaffolding makes it so easy to utilize this), I ran into an issue where inserting the first row works but any subsequent row will get rejected by the SQLite. The reason for this is that EF sends 0 (zero) in the Id field while SQLite expects NULL. See below link for more details.&lt;/p&gt;&lt;p&gt;&lt;a href="http://stackoverflow.com/questions/936804/sqlite-with-entity-framework"&gt;http://stackoverflow.com/questions/936804/sqlite-with-entity-framework&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The solution for this is to explicitely mark the Id field with AUTOINCREMENT. To do this, I use SQLite Manager, Mozilla Firefox plugin, which allows me to get the SQL DDL for the table, manually add the 'autoincrement', drop and recreate table by issuing SQL commands.&lt;/p&gt;&lt;p&gt;Also, in the EF model, I set the Id columns StoreGeneratedPattern value to 'Identity', while some even suggest to use 'Computed'.&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-585219396566984968?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/585219396566984968/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=585219396566984968' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/585219396566984968'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/585219396566984968'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/05/sqlite-autoincrement-columns.html' title='SQLite AutoIncrement columns'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-5512921964976507216</id><published>2011-05-24T12:06:00.001+10:00</published><updated>2011-05-24T12:06:55.633+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MVC'/><title type='text'>Passing quick data to Views with ViewBag</title><content type='html'>&lt;p&gt;The new ViewBag is a dynamic wrapper around ViewData that allows passing the data from controller to the view. One of the issues at the moment is that ViewBag contents can't be passed to HTML Helpers as parameters directly.&lt;/p&gt;&lt;p&gt;The workaround for this is to explicitely cast the ViewBag property to the expected type.&lt;/p&gt;&lt;p&gt;So, instead of&lt;/p&gt;&lt;p&gt;&lt;pre style="font-family: Consolas; font-size: 13; color: white; background: black;"&gt;&lt;span style="color: #6897bb;"&gt;@&lt;/span&gt;Html.TextArea(&lt;span style="color: #a5c25c;"&gt;"customXml"&lt;/span&gt;,&amp;nbsp;ViewBag.CustomMessage,&amp;nbsp;&lt;span style="color: #cc7832;"&gt;new&lt;/span&gt;&amp;nbsp;{&amp;nbsp;@style&amp;nbsp;=&amp;nbsp;&lt;span style="color: #a5c25c;"&gt;"width:&amp;nbsp;100%;&amp;nbsp;height:&amp;nbsp;400px;&amp;nbsp;"&lt;/span&gt;&amp;nbsp;});&lt;br /&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;you'd have to write&lt;/p&gt;&lt;p&gt;&lt;pre style="font-family: Consolas; font-size: 13; color: white; background: black;"&gt;&lt;span style="color: #6897bb;"&gt;@&lt;/span&gt;Html.TextArea(&lt;span style="color: #a5c25c;"&gt;"customXml"&lt;/span&gt;,&amp;nbsp;(&lt;span style="color: #cc7832;"&gt;string&lt;/span&gt;)&amp;nbsp;ViewBag.CustomMessage,&amp;nbsp;&lt;span style="color: #cc7832;"&gt;new&lt;/span&gt;&amp;nbsp;{&amp;nbsp;@style&amp;nbsp;=&amp;nbsp;&lt;span style="color: #a5c25c;"&gt;"width:&amp;nbsp;100%;&amp;nbsp;height:&amp;nbsp;400px;&amp;nbsp;"&lt;/span&gt;&amp;nbsp;});&lt;br /&gt;&lt;/pre&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-5512921964976507216?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/5512921964976507216/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=5512921964976507216' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/5512921964976507216'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/5512921964976507216'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/05/passing-quick-data-to-views-with.html' title='Passing quick data to Views with ViewBag'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-8195542873240342025</id><published>2011-05-24T12:00:00.001+10:00</published><updated>2011-05-24T12:57:21.356+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MVC'/><title type='text'>Passing data with RedirectToAction</title><content type='html'>&lt;p&gt;This might be a result from the WebForms-centric way of thinking and a dirty habit, but I need to have the following flow on the web site:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;User clicks a button (or submits some data in another way)&lt;/li&gt;&lt;li&gt;This posts the form to the Home controller.&lt;/li&gt;&lt;li&gt;Home controller transfers the data to another controller's action&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;I tried using the default route's 'id' parameter but this puts a long XML into the address field in the browser and, besides, just doesn't work.&lt;/p&gt;&lt;p&gt;The right option for this scenario is using TempData. This translates to simply using&amp;nbsp;&lt;/p&gt;&lt;pre style="font-family: Consolas; font-size: 13; color: white; background: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TempData.Add(&lt;span style="color: #a5c25c;"&gt;"customMessage"&lt;/span&gt;,&amp;nbsp;xmlContent);&lt;br /&gt;&lt;pre style="font-family: Consolas; font-size: 13; color: white; background: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;return&lt;/span&gt;&amp;nbsp;RedirectToAction(&lt;span style="color: #a5c25c;"&gt;"Index"&lt;/span&gt;,&amp;nbsp;&lt;span style="color: #a5c25c;"&gt;"CustomMessage"&lt;/span&gt;);&lt;/pre&gt;&lt;/pre&gt;&lt;p&gt;in the Home controller, and&amp;nbsp;&lt;/p&gt;&lt;pre style="font-family: Consolas; font-size: 13; color: white; background: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;var&lt;/span&gt;&amp;nbsp;xmlContent&amp;nbsp;=&amp;nbsp;(&lt;span style="color: #cc7832;"&gt;string&lt;/span&gt;)&amp;nbsp;TempData[&lt;span style="color: #a5c25c;"&gt;"customMessage"&lt;/span&gt;];&lt;/pre&gt;&lt;p&gt;in the receiving controller. (Passing the same data to the view is another matter. Using ViewBag is the 'quick &amp;amp; dirty' way. See &lt;a href="http://alensiljak.blogspot.com/2011/05/passing-quick-data-to-views-with.html"&gt;related post&lt;/a&gt;.)&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style="border-collapse: collapse; font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif; line-height: 18px;"&gt;"The TempData property value is stored in session state. Any action method that is called after the TempDataDictionary value is set can get values from the object and then process or display them. The value of TempData persists until it is read or until the session times out."&lt;/span&gt;&lt;span style="border-collapse: collapse; font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif; line-height: 18px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="border-collapse: collapse; font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif; line-height: 18px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Source:&lt;/p&gt;&lt;p&gt;&lt;a href="http://stackoverflow.com/questions/5753720/passing-info-to-another-action-using-redirecttoaction-mvc"&gt;http://stackoverflow.com/questions/5753720/passing-info-to-another-action-using-redirecttoaction-mvc&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/8749026-8195542873240342025?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/8195542873240342025/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=8195542873240342025' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/8195542873240342025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/8195542873240342025'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/05/passing-data-with-redirecttoaction.html' title='Passing data with RedirectToAction'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-1805403973797081887</id><published>2011-05-24T09:01:00.001+10:00</published><updated>2011-05-24T09:01:17.564+10:00</updated><title type='text'>dotPeek - .Net Decompiler from JetBrains</title><content type='html'>&lt;p&gt;dotPeek is a free .Net decompiler being developed by JetBrains.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;a href="http://confluence.jetbrains.net/display/NETPEEK/dotPeek+Early+Access+Program"&gt;http://confluence.jetbrains.net/display/NETPEEK/dotPeek+Early+Access+Program&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/8749026-1805403973797081887?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/1805403973797081887/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=1805403973797081887' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/1805403973797081887'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/1805403973797081887'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/05/dotpeek-net-decompiler-from-jetbrains.html' title='dotPeek - .Net Decompiler from JetBrains'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-2842271765971532890</id><published>2011-05-23T20:43:00.001+10:00</published><updated>2011-05-23T20:43:27.752+10:00</updated><title type='text'>KnockoutJS</title><content type='html'>&lt;p&gt;Knockout is the Model-View-View Model pattern for JavaScript UI. It encapsulates data and behavior into a view model, which provides a foundation for data-binding of DOM elements and frees the developer from manually wiring the data to the UI elements.&lt;/p&gt;&lt;p&gt;&lt;a href="http://knockoutjs.com/"&gt;http://knockoutjs.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/8749026-2842271765971532890?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/2842271765971532890/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=2842271765971532890' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/2842271765971532890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/2842271765971532890'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/05/knockoutjs.html' title='KnockoutJS'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-2681941942037649758</id><published>2011-05-22T18:16:00.001+10:00</published><updated>2011-05-22T18:16:12.197+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MVC'/><title type='text'>MVC Visual Studio Helpers</title><content type='html'>&lt;p&gt;If you mix Web Forms and MVC in the same project, Visual Studio helpers for MVC come in really handy when adding Controllers, Views, and so on. It is as easy as right-clicking the Controllers directory and the Add menu will display "Controller" at the top of the list. This is really convenient. Depending on the context, the destination of the right-click, different options will be displayed in the Add menu.&lt;/p&gt;&lt;p&gt;However, if you are modifying an existing Web Forms project to work with MVC, these options will not be available by default. The fix is simple.&lt;/p&gt;&lt;p&gt;In your existing Web Forms project's .csproj file, locate line&lt;/p&gt;&lt;p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;ProjectTypeGuids&amp;gt;{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}&amp;lt;/ProjectTypeGuids&amp;gt;&lt;/p&gt;&lt;div&gt;and add one more guid at the front, so that it looks like this:&lt;/div&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;ProjectTypeGuids&amp;gt;{E53F8FEA-EAE0-44A6-8774-FFD645390401};{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}&amp;lt;/ProjectTypeGuids&amp;gt;&lt;/p&gt;&lt;p&gt;&lt;div&gt;Now all the options available at the MVC project will be available in the (previously) Web Forms Application project.&lt;/div&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-2681941942037649758?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/2681941942037649758/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=2681941942037649758' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/2681941942037649758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/2681941942037649758'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/05/mvc-visual-studio-helpers.html' title='MVC Visual Studio Helpers'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-5650165821392448420</id><published>2011-05-22T13:35:00.001+10:00</published><updated>2011-05-22T18:11:44.347+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MVC'/><title type='text'>Mixing ASP.NET WebForms and MVC</title><content type='html'>&lt;p&gt;MVC is a wonderful framework to work with. Unfortunately, there is lots of existing material and sites that are written using WebForms and these require maintenance. Going by the maxim "never leave the code untouched", I reckon that these sites and code shoud be refactored bit by bit and transitioned towards using MVC.&lt;/p&gt;&lt;p&gt;It is, of course, not practical nor beneficial to rewrite whole applications but adding new functionality and refactoring the old should also encompass replacing bits and pieces with MVC framework. So, in that regard, here are some pointers as to how to mix multiple existing technologies, all hosted on IIS:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Plug-In Hybrids: ASP.NET WebForms and ASP.MVC and ASP.NET Dynamic Data Side By Side, Hanselman (&lt;a href="http://www.hanselman.com/blog/PlugInHybridsASPNETWebFormsAndASPMVCAndASPNETDynamicDataSideBySide.aspx"&gt;link&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Mixing ASP.NET Webforms and ASP.NET MVC, PacktPub (&lt;a href="http://www.packtpub.com/article/mixing-asp.net-webforms-and-asp.net-mvc"&gt;link&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;asp.net-mvc and webforms co-existing, Stack Overflow (&lt;a href="http://stackoverflow.com/questions/1842858/asp-net-mvc-and-webforms-co-existing"&gt;link&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-5650165821392448420?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/5650165821392448420/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=5650165821392448420' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/5650165821392448420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/5650165821392448420'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/05/mixing-aspnet-webforms-and-mvc.html' title='Mixing ASP.NET WebForms and MVC'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-6233243150332894814</id><published>2011-05-21T10:24:00.001+10:00</published><updated>2011-05-21T11:26:46.105+10:00</updated><title type='text'>Synergy - Share your mouse and keyboard</title><content type='html'>&lt;p&gt;As my PC was unreliable just when I needed it the most, I got a laptop to do software development. Now it looks quite cumbersome to switch keyboards to work on the two machines so I was looking for a solution that would enable me to use my keyboard and mouse on both computers. And, here, the solution is Synergy.&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style="color: #484848; font-family: Verdana, sans-serif; font-size: 12px;"&gt;&lt;strong&gt;Synergy&lt;/strong&gt;&amp;nbsp;is&amp;nbsp;&lt;em&gt;Free and Open Source Software&lt;/em&gt;&amp;nbsp;that lets you easily share your mouse and keyboard between multiple computers, where each computer has it's own display. No special hardware is required, all you need is a local area network. Synergy is supported on Windows, Mac OS X and Linux.&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;The first thing I liked about their site is that they are using Redmine! :)&lt;/p&gt;&lt;p&gt;&lt;a href="http://synergy-foss.org/"&gt;http://synergy-foss.org/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Wow! Now that I've installed it, I can't believe it is this simple and easy! Screens are configured graphically, as per their physical location in relation to one another. Then, simply move the cursor over the edge of the screen and you're on another computer! Mouse and keyboard work on the selected workstation. Of course, only the Server's response to keyboard and mouse events is perfect, while the rest travels over the network but, for all sakes and purposes, it is decent enough for standard use. I can hardly notice that these are not the two computers anymore. The feeling is as this really *is* a single platform.&lt;/p&gt;&lt;p&gt;Awesome work, guys!&lt;/p&gt;&lt;p&gt;One problem I've noticed is if you open Resource Monitor on Windows 7, that somehow kills Synergy on that screen/computer (I only have one screen per workstation so can't tell for sure). If you had Resource Monitor (RM) open before starting Synergy, then both will work fine, except that you won't be able to operate or close RM window. :)&amp;nbsp;&lt;br /&gt;This happens if you run Synergy as as ordinary user and then open an application that requires elevated privileges to run. So, in order to not experience these issues simply run Synergy "As Administrator".&amp;nbsp;&lt;/p&gt;&lt;p&gt;Another beautiful thing that feels natural when you work in this fashion is that Copy/Paste works across the workstations. This works for text (and maybe some other clipboard content) but not files. File transfer is quite cool with Dropbox LAN sync or just sharing folders through Windows.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-6233243150332894814?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/6233243150332894814/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=6233243150332894814' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/6233243150332894814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/6233243150332894814'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/05/synergy-share-your-mouse-and-keyboard.html' title='Synergy - Share your mouse and keyboard'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-2670406339471534094</id><published>2011-05-16T10:05:00.001+10:00</published><updated>2011-05-16T10:05:38.671+10:00</updated><title type='text'>ReSharper 6.0 Nightly Builds</title><content type='html'>&lt;p&gt;ReSharper 6.0 nightly builds are available from the link below. These are used as an evaluation. The JetBrains instructions state:&lt;/p&gt;&lt;table class="infoMacro" style="font-size: 10pt; line-height: 13pt; color: #000000; font-weight: normal; clear: left; background-color: #d8e4f1; text-align: left; padding-top: 0px; padding-right: 20px; padding-bottom: 0px; padding-left: 20px; width: 920px;"&gt;&lt;tbody&gt;&lt;tr style="font-size: 10pt; line-height: 13pt; color: #000000; font-weight: normal;"&gt;&lt;td style="font-size: 1em; line-height: 13pt; color: #000000; font-weight: normal; padding-top: 14px; padding-right: 0px; padding-bottom: 14px; padding-left: 0px; border: initial none initial;"&gt;&lt;strong&gt;Evaluation license&lt;/strong&gt;&lt;br /&gt;If your evaluation has expired, please install the lates build and choose 'Free evaluation' option on the License Information dialog&lt;br /&gt;You can also use the following evaluation license:&lt;br /&gt;User Name: ReSharper EAP User&lt;br /&gt;License Key: 0-i5LycolHMT9ahzFH4R2Bt8gGiS40VYmU&lt;br /&gt;Valid until: 05/30/2011&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;a href="http://confluence.jetbrains.net/display/ReSharper/ReSharper+6.0+Nightly+Builds"&gt;link&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/8749026-2670406339471534094?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/2670406339471534094/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=2670406339471534094' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/2670406339471534094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/2670406339471534094'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/05/resharper-60-nightly-builds.html' title='ReSharper 6.0 Nightly Builds'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-2618342999346215381</id><published>2011-05-15T12:43:00.002+10:00</published><updated>2011-05-22T00:54:16.588+10:00</updated><title type='text'>MvcScaffolding: One-to-Many Relationships</title><content type='html'>&lt;p&gt;Recently I've looked again at the most rapid way to implement basic CRUD for a relational data, using web application in .Net. From experience I knew that Web Forms had ways of getting this sort of thing done in a quick (and dirty) way. That was made even easier with recent version of WebForms. Now, looking at what MVC can do, I was quite pleasantly surprised.&lt;/p&gt;&lt;p&gt;A couple of weeks ago I looked at Scott Hanselman's presentation where he demonstrates some MVC Scaffolding templates. This was the missing bit but the things are falling into place. T4, NuGet, and now scaffolding. There are templates for a few things already and there will obviously be more in the not-so-distant future.&lt;/p&gt;&lt;p&gt;&lt;a href="http://blog.stevensanderson.com/2011/01/28/mvcscaffolding-one-to-many-relationships/"&gt;Here&lt;/a&gt; is an article in an excellent series about MVC Scaffolding. Steve Sanderson explains how to do one-to-many relationship and CRUD through a scaffolding template. He is using Entity Framework Code First approach to generating the data model. The templates do the rest in generating controllers and views, as well as the model.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-2618342999346215381?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/2618342999346215381/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=2618342999346215381' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/2618342999346215381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/2618342999346215381'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/05/mvcscaffolding-one-to-many.html' title='MvcScaffolding: One-to-Many Relationships'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-8379130570527145559</id><published>2011-05-15T12:43:00.001+10:00</published><updated>2011-05-15T12:43:54.565+10:00</updated><title type='text'>Refresher</title><content type='html'>&lt;p&gt;A range of interviews I've had in the past several wees prompted me to create a reference list of books and material every developer/architect should know. The list of material is available &lt;a href="https://sites.google.com/site/alensit/home/books"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;A few books that I was really delighted with are Robert C. Martin's series - Clean Code: A Handbook of Agile Software Craftsmanship, and Agile Principles, Patterns, and Practices in C#.&lt;/p&gt;&lt;p&gt;All the material at the Books page is excellent and contains the core of what one needs to know in their everyday work. It is also a good refresher for people who have been focused on a small set of solutions and technologies at any given time. Happy reading.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-8379130570527145559?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/8379130570527145559/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=8379130570527145559' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/8379130570527145559'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/8379130570527145559'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/05/refresher.html' title='Refresher'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-7799487442696357498</id><published>2011-05-09T11:52:00.001+10:00</published><updated>2011-05-09T11:52:17.375+10:00</updated><title type='text'>NBuilder</title><content type='html'>&lt;p&gt;A cool tool for generating test data. From the project description:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;Through a fluent, extensible interface, NBuilder allows you to rapidly create test data, automatically assigning values to properties and public fields that are of type of the built in .NET data types (e.g. ints and strings). NBuilder allows you to override for properties you are interested in using lambda expressions.&lt;/p&gt;&lt;p&gt;NBuilder is an open source project, hosted on google code&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;As stated above, this software generates data that can be used for testing when you need lists of random data.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-7799487442696357498?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/7799487442696357498/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=7799487442696357498' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/7799487442696357498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/7799487442696357498'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/05/nbuilder.html' title='NBuilder'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-5650858833538663195</id><published>2011-05-03T16:47:00.001+10:00</published><updated>2011-05-03T16:47:48.689+10:00</updated><title type='text'>Galcon Fusion</title><content type='html'>&lt;p&gt;I've just been introduced to this cool game. It is a great thing to play on iPad either in a duel or collaboratively.&amp;nbsp;&lt;/p&gt;&lt;p&gt;There is also an online version available and it includes multiplayer! Check out:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.galcon.com/flash/play.php"&gt;http://www.galcon.com/flash/play.php&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/8749026-5650858833538663195?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/5650858833538663195/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=5650858833538663195' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/5650858833538663195'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/5650858833538663195'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/05/galcon-fusion.html' title='Galcon Fusion'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-8467816715194736576</id><published>2011-04-28T14:33:00.001+10:00</published><updated>2011-04-28T14:33:17.578+10:00</updated><title type='text'>Run apps on Spoon</title><content type='html'>&lt;p&gt;Spoon.net offers a cloud hosting service for desktop applications. Quite an innovative approach but in the age of virtualization things rarely surprise us anymore. It requires an installation of a .Net plugin to run on Windows, which may make it unusable at some locations, like internet cafes. Hopefully, issues like this get solved with advancing technology. It feels weird being able to run &lt;a href="http://www.spoon.net/Notepad"&gt;Notepad++ in the cloud&lt;/a&gt;! :)&lt;/p&gt;&lt;p&gt;Well, actually, the app gets downloaded in the background and runs in a virtual machine / sandbox on your PC. This makes me wonder what happens with apps that require registry access. Something to try out with, for example, Quicken.&lt;/p&gt;&lt;p&gt;&lt;a href="http://spoon.net/"&gt;http://spoon.net/&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/8749026-8467816715194736576?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/8467816715194736576/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=8467816715194736576' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/8467816715194736576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/8467816715194736576'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/04/run-apps-on-spoon.html' title='Run apps on Spoon'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-4826419730035053349</id><published>2011-04-27T14:26:00.001+10:00</published><updated>2011-04-27T14:26:52.490+10:00</updated><title type='text'>IBM Enterprise Architect Kit for SOA</title><content type='html'>&lt;p&gt;A great set of resources related to Service-Oriented Architecture (SOA). For most organizations I've seen, even knowing the very definitions would make a huge difference. :)&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;"Understanding SOA: Key Terms&lt;/p&gt;&lt;p&gt;Service: a repeatable business task, such as check customer credit or open account&lt;/p&gt;&lt;p&gt;Service orientation: a way of integrating your business processes as linked services, and the outcomes that these services bring&lt;/p&gt;&lt;p&gt;Service Oriented Architecture (SOA): an IT architectural style that supports service orientation&lt;/p&gt;&lt;p&gt;Composite application: a set of related and integrated services that support a business process built on SOA"&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;(&lt;a href="https://www6.software.ibm.com/developerworks/offers/kits/archkit2/index.html"&gt;link&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/8749026-4826419730035053349?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/4826419730035053349/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=4826419730035053349' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/4826419730035053349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/4826419730035053349'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/04/ibm-enterprise-architect-kit-for-soa.html' title='IBM Enterprise Architect Kit for SOA'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-3765185878634481390</id><published>2011-04-27T14:03:00.001+10:00</published><updated>2011-04-27T14:03:23.626+10:00</updated><title type='text'>HTML5</title><content type='html'>&lt;p&gt;Great overview of HTML5, what it is and, more importantly, what it is not. :)&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.ibm.com/developerworks/library/wa-webstandards/index.html"&gt;http://www.ibm.com/developerworks/library/wa-webstandards/index.html&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/8749026-3765185878634481390?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/3765185878634481390/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=3765185878634481390' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/3765185878634481390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/3765185878634481390'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/04/html5.html' title='HTML5'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-3700706776374261334</id><published>2011-04-27T13:15:00.001+10:00</published><updated>2011-04-27T14:40:47.292+10:00</updated><title type='text'>Grid vs Cloud</title><content type='html'>&lt;p&gt;Cloud computing vs. Grid computing explained in IBM's paper from 2009. It explains how cloud computing is an extension to grid computing. An evolution, a natural progression, if you want. The term 'utility computing' is also explained and this is what today's services are becoming more and more like - paying for what one uses on a shared infrastructure.&lt;/p&gt;&lt;p&gt;Cloud computing represents Infrastructure as a Service (IaaS), as opposed to Platform as a Service (PaaS) or Software as a Service (SaaS) concepts.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.ibm.com/developerworks/web/library/wa-cloudgrid/"&gt;http://www.ibm.com/developerworks/web/library/wa-cloudgrid/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Further to that, some great Cloud computing resources available at&lt;/p&gt;&lt;p&gt;&lt;a href="https://www.ibm.com/developerworks/cloud/index.html?ca=dti-cloudzone"&gt;https://www.ibm.com/developerworks/cloud/index.html?ca=dti-cloudzone&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/8749026-3700706776374261334?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/3700706776374261334/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=3700706776374261334' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/3700706776374261334'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/3700706776374261334'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/04/grid-vs-cloud.html' title='Grid vs Cloud'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-4201583376704753465</id><published>2011-04-26T23:42:00.001+10:00</published><updated>2011-04-26T23:42:15.414+10:00</updated><title type='text'>A-GPS</title><content type='html'>&lt;p&gt;A good and brief explanation on A-GPS and how to enable it on Android is available &lt;a href="http://senk9.wordpress.com/2010/05/19/what-is-a-gps-and-how-do-i-enable-it-on-android/"&gt;here&lt;/a&gt;. Detailed sources, as always are on Wikipedia: &lt;a href="http://en.wikipedia.org/wiki/Global_Positioning_System"&gt;GPS&lt;/a&gt;, and &lt;a href="http://en.wikipedia.org/wiki/Assisted_GPS"&gt;A-GPS&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;In brief, to enable A-GPS, turn on "use wireless networks" in GPS settings (Location and Security).&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-4201583376704753465?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/4201583376704753465/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=4201583376704753465' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/4201583376704753465'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/4201583376704753465'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/04/gps.html' title='A-GPS'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-6993970170745336206</id><published>2011-04-26T10:51:00.001+10:00</published><updated>2011-04-26T10:58:59.978+10:00</updated><title type='text'>Google MapMaker</title><content type='html'>&lt;p&gt;Similar to OpenStreetMap.org, Google has allowed the public to add and edit content on Google Maps. MapMaker is the service where one can edit the map and/or review the changes made by others.&lt;/p&gt;&lt;p&gt;This is quite useful, especially for areas that have rather low Google Maps coverage, like Bosnia and Herzegovina. However, editing areas outside the US is not enabled yet.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.google.com/mapmaker"&gt;http://www.google.com/mapmaker&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/8749026-6993970170745336206?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/6993970170745336206/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=6993970170745336206' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/6993970170745336206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/6993970170745336206'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/04/google-mapmaker.html' title='Google MapMaker'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-7954555351980993672</id><published>2011-04-21T14:15:00.001+10:00</published><updated>2011-04-21T14:15:36.791+10:00</updated><title type='text'>Glimpse! - server debugging on the client</title><content type='html'>&lt;p&gt;Thanks to Scott Hanselmann, I've just been introduced to some serious brain-damage. :) Things like Glimpse do not pop-out every day and so it was really weird to see a framework that - in your browser - displays debugging information from the server, executing the MVC web application on .NET stack.&lt;/p&gt;&lt;p&gt;This is really groundbreaking, but at the same time quite needed, technology that lets you know what is going on with your application. Kinda like debugging on production servers. :) Head there to find out more.&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;"What Firebug is for the client, Glimpse does for the server... in other words, a client side Glimpse into whats going on in your server."&lt;/p&gt;&lt;/blockquote&gt;&lt;div&gt;Link:&amp;nbsp;&lt;a href="http://www.getglimpse.com/"&gt;http://www.getglimpse.com/&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-7954555351980993672?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/7954555351980993672/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=7954555351980993672' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/7954555351980993672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/7954555351980993672'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/04/glimpse-server-debugging-on-client.html' title='Glimpse! - server debugging on the client'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-7311759009161686048</id><published>2011-04-20T10:21:00.002+10:00</published><updated>2011-04-20T19:02:59.347+10:00</updated><title type='text'>Android 2.3.3 available for Samsung Galaxy S</title><content type='html'>The official Android 2.3 Gingerbread is available for Samsung Galaxy S. It is available only in some countries/regions for now. The update is/should be available through Samsung Kies.&lt;br /&gt;Since I still do not see it in the list of updates, I decided to look around for leaked versions. So, here are some:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Stock Firmwares for GT-I9000 (&lt;a href="http://forum.xda-developers.com/showthread.php?t=846913"&gt;link&lt;/a&gt;), or&lt;/li&gt;&lt;li&gt;Ramad (&lt;a href="http://forum.xda-developers.com/showthread.php?t=1011901"&gt;link&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;JKay (&lt;a href="http://forum.xda-developers.com/showthread.php?t=1037584"&gt;link&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;To flash the ROM, follow the instructions in the posts above or check the links for more detailed installation instructions.&amp;nbsp;Useful instructions are &lt;a href="http://www.theandroidsoul.com/how-to-install-xwjvb-gingerbread-rom-gaalxy-s/"&gt;here&lt;/a&gt;&amp;nbsp;and the accompanying video &lt;a href="http://www.youtube.com/watch?v=WuTTctDWW2g"&gt;here&lt;/a&gt;.&lt;br /&gt;After installing the new ROM, the phone will have to be &lt;a href="http://forum.xda-developers.com/showthread.php?t=742403"&gt;rooted&lt;/a&gt; again (or &lt;a href="http://www.addictivetips.com/mobile/use-odin-to-root-samsung-galaxy-s-i9000-on-android-2-3-gingerbread/"&gt;here&lt;/a&gt;). I used instructions from&amp;nbsp;&lt;a href="http://forum.xda-developers.com/showthread.php?t=1010141"&gt;Nikademus thread&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-7311759009161686048?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/7311759009161686048/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=7311759009161686048' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/7311759009161686048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/7311759009161686048'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/04/android-233-available-for-samsung.html' title='Android 2.3.3 available for Samsung Galaxy S'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-2445474309034117322</id><published>2011-04-18T17:07:00.001+10:00</published><updated>2011-04-18T17:07:14.403+10:00</updated><title type='text'>SQLDiffFramework</title><content type='html'>&lt;p&gt;SQL Diff Framework is an Open Source framework that does the work (comparison of databases or other data sources) similar to SQL Compare.&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style="color: #30332d; font-family: 'Segoe UI', 'Microsoft Sans Serif', Arial, Geneva, sans-serif; font-size: 13px;"&gt;Unique in database comparison, SDF lets you compare live data--or saved snapshots--from any combination of SQL Server, Oracle, MySql, or ODBC data sources (Access, Excel, CSV files, etc.). Compare like-named or dissimilar tables or fields--now you can compare apples to oranges!&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;a href="http://sqldiffframework.codeplex.com/"&gt;http://sqldiffframework.codeplex.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/8749026-2445474309034117322?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/2445474309034117322/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=2445474309034117322' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/2445474309034117322'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/2445474309034117322'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/04/sqldiffframework.html' title='SQLDiffFramework'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-4824921601376013806</id><published>2011-04-17T18:49:00.001+10:00</published><updated>2011-04-17T18:49:27.937+10:00</updated><title type='text'>Android 2.3 Coming Soon to a Galaxy S Near You</title><content type='html'>&lt;p&gt;Apparently, Samsung has started rolling out Android 2.3 Gingerbread for Galaxy S (see &lt;a href="http://en.wikipedia.org/wiki/Samsung_Galaxy_S#Android_2.3_upgrade"&gt;Wikipedia&lt;/a&gt;). I still don't see it in Kies but looking forward to the update relatively soon. Although I don't see many important changes in it, one thing I'm looking forward is the improvement in battery life. That's one thing that there's never enough. I'd be even happier if the thin film photovoltaic cells would start rolling out so that the phone gets recharged in sunlight. This is something I'd expect to see as a standard part of the mobile device in the (hopefully near) future.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-4824921601376013806?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/4824921601376013806/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=4824921601376013806' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/4824921601376013806'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/4824921601376013806'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/04/android-23-coming-soon-to-galaxy-s-near.html' title='Android 2.3 Coming Soon to a Galaxy S Near You'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-8575789638462135678</id><published>2011-04-14T16:12:00.001+10:00</published><updated>2011-04-14T16:12:54.051+10:00</updated><title type='text'>Market Forecasts</title><content type='html'>&lt;p&gt;Here is an awesome chart that illustrates the power of market forecasts, predictions, call it whatever you want.&lt;/p&gt;&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/File:Itanium_Sales_Forecasts_edit.png"&gt;http://en.wikipedia.org/wiki/File:Itanium_Sales_Forecasts_edit.png&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/8749026-8575789638462135678?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/8575789638462135678/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=8575789638462135678' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/8575789638462135678'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/8575789638462135678'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/04/market-forecasts.html' title='Market Forecasts'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-4862066386407606609</id><published>2011-04-14T10:31:00.001+10:00</published><updated>2011-04-14T10:31:18.059+10:00</updated><title type='text'>Nginx 1.0.0</title><content type='html'>&lt;p&gt;&lt;a href="http://nginx.org/"&gt;Nginx&lt;/a&gt;&amp;nbsp;is a small web server with some cool features, steadily rising in usage on the Web.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-4862066386407606609?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/4862066386407606609/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=4862066386407606609' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/4862066386407606609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/4862066386407606609'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/04/nginx-100.html' title='Nginx 1.0.0'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-7053248169535957575</id><published>2011-03-19T23:09:00.002+11:00</published><updated>2011-03-21T21:20:28.364+11:00</updated><title type='text'>Zeam Launcher improves battery life on Android</title><content type='html'>I have recently come across Zeam Launcher. After trying out the most popular ones - Launcher Pro and ADW - I thought it would be just another minor launcher and a waste of time. A waste of time considering that both launchers I tried earlier happened to be battery vampires and the phone's lifetime on a single charge was significantly reduced, compared to when I was using stock TwLauncher that came with Galaxy S.&lt;br /&gt;With TwLauncher and carefully selected widgets and services, enabling radio only when needed, I could make full 7 days of battery life on a single charge. This was the maximum period so far, with normal phone usage, including phone calls, SMS, taking photos, uploading to Facebook, checking train schedule online, etc.&lt;br /&gt;Another interesting thing to add is that some widgets appeared to draw battery power so I tended not to use them. One of these was excellent CalenGoo monthly widget. It presents a nice monthly view of calendar events and tasks on one screen. Very convenient and provides easy overview of almost everything I plan to do during the month. However, because of lowering the battery life, I did not use that widget and had to live with others that did half the job.&lt;br /&gt;Now, the "experiment" happened in a standard way: I disabled all the radio on the phone. Zeam was set as the default launcher. Just for the fun of it, I also added CalenGoo monthly widget to it in order to test the combination of both of these components. After being fully charged, the phone wakes me up sometimes in the middle of the night with a bleep that indicates that it wants me to disconnect it from the power source. I do that and, after five hours, I wake up, turn the phone on and continue using it in my standard fashion during the day. The surprising thing was that when I turned the phone radio on, the battery was still at 100%. This was a pretty good indicator considering that bad components (widgets, launchers, services...) used to drain heaps of power even though I never touched the phone during that period. The worst ever was Launcher Pro that suprised me, first thing in the morning, with battery being at around 70% only a few hours after being fully charged and not used in the meantime! So, battery being at 100% with Zeam, and even having CalenGoo widget (that used around 15% when it was running on TwLauncher, in identical scenario) was a great sign.&lt;br /&gt;After using the phone normally - only a few photos taken, sms sent/received, and phone on during the day the battery was at 95% after 17 hours! At this point I am turning the phone off (cause I like not being woken up by phone calls on weekend) so I assume battery usage will, pretty much, remain where it is. Even if it drops a notch or two, it will still be less than half of what TwLauncher uses. All other widgets are still there so this means I even have an extra widget now. And not just any widget - I got my ultimate calendar widget that displays both events and tasks in a monthly grid view.&lt;br /&gt;Now I wonder how long the battery will last with the new launcher. If the record was 7 days so far, and currently the phone uses less than half of what it used to, should I, then, hope to make it to two weeks?! :)&lt;br /&gt;I will update the post with the info during this week &amp;nbsp;(or maybe next, if the battery goes for longer :).&lt;br /&gt;&lt;br /&gt;If you're looking for more tips on how to improve Android phone's battery life (I use Galaxy S), read my &lt;a href="http://alensiljak.blogspot.com/2011/01/battery-tips-for-android.html"&gt;Battery Tips for Android&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;UPDATE: After two days of light phone use, the battery drain was steady at around 6% per day for light usage! I love this little piece of software (Zeam). Totally recommended if you want to spend your battery charge on meaningful things instead. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-7053248169535957575?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/7053248169535957575/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=7053248169535957575' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/7053248169535957575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/7053248169535957575'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/03/zeam-launcher-improves-battery-life-on.html' title='Zeam Launcher improves battery life on Android'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-3666124829377908654</id><published>2011-03-19T20:13:00.001+11:00</published><updated>2011-03-19T20:13:22.181+11:00</updated><title type='text'>Facebook XMPP Chat</title><content type='html'>&lt;p&gt;FacebookChat is a plugin for Pidgin that allows connecting to Facebook chat from Pidgin instant-messaging application. However, as of recently, some changes at Facebook have caused this plugin to be unable to participate in chat sessions as a transmitter. It would happily receive messages but could not send any. The message that would pop up was&lt;/p&gt;&lt;p&gt;"you are not permitted to do that"&lt;/p&gt;&lt;p&gt;Looking for a solution, I've just discovered that Facebook has enabled XMPP- (Jabber-) style chat. At the page below you can find instructions on how to set your chat client to connect to Facebook chat directly.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.facebook.com/sitetour/chat.php"&gt;http://www.facebook.com/sitetour/chat.php&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/8749026-3666124829377908654?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/3666124829377908654/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=3666124829377908654' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/3666124829377908654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/3666124829377908654'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/03/facebook-xmpp-chat.html' title='Facebook XMPP Chat'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-7029127269230748065</id><published>2011-03-18T13:53:00.001+11:00</published><updated>2011-03-18T17:10:12.571+11:00</updated><title type='text'>Mercurial with IIS and Active Directory</title><content type='html'>&lt;p&gt;Here is a 4-part series that explains how to set up Mercurial on IIS, using Active Directory for authentication and authorization:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.endswithsaurus.com/2010/05/setting-up-and-configuring-mercurial-in.html"&gt;http://www.endswithsaurus.com/2010/05/setting-up-and-configuring-mercurial-in.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;After implementing the security with IIS/AD and Mercurial, Keyring extension can be enabled in TortoiseHg so that you do not have to type in username/password combination every time a request is made to the server. Aside from enabling the extension, add something like this to your repository settings:&lt;/p&gt;&lt;p&gt;&lt;p class="MsoNormal" style="padding-left: 30px;"&gt;[ui]&lt;/p&gt;&lt;p class="MsoNormal" style="padding-left: 30px;"&gt;username = your_username&lt;/p&gt;&lt;p class="MsoNormal" style="padding-left: 30px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="MsoNormal" style="padding-left: 30px;"&gt;[extensions]&lt;/p&gt;&lt;p class="MsoNormal" style="padding-left: 30px;"&gt;mercurial_keyring =&lt;/p&gt;&lt;p class="MsoNormal" style="padding-left: 30px;"&gt;[auth]&lt;/p&gt;&lt;p class="MsoNormal" style="padding-left: 30px;"&gt;default.schemes = http https&lt;/p&gt;&lt;p class="MsoNormal" style="padding-left: 30px;"&gt;default.prefix = your_serwver.local/path_to_hg&lt;/p&gt;&lt;p class="MsoNormal" style="padding-left: 30px;"&gt;default.username = your_username&lt;/p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="MsoNormal"&gt;In [auth] section, "default" refers to the name of the remote repository which is, in this case, default.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-7029127269230748065?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/7029127269230748065/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=7029127269230748065' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/7029127269230748065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/7029127269230748065'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/03/mercurial-with-iis-and-active-directory.html' title='Mercurial with IIS and Active Directory'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-2360035273865586099</id><published>2011-03-17T14:08:00.001+11:00</published><updated>2011-03-17T14:08:51.079+11:00</updated><title type='text'>Free IT (and Development) Books</title><content type='html'>&lt;p&gt;A reminder about a very useful collection of free IT-related ebooks at Devx.com:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.devx.com/ebook"&gt;http://www.devx.com/ebook&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Covering topics like latest technologies (cloud), software development, IT management, security, ITIL etc. A few useful guides I've used for reference in everyday work like&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Breaking down software development roles&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-2360035273865586099?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/2360035273865586099/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=2360035273865586099' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/2360035273865586099'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/2360035273865586099'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/03/free-it-and-development-books.html' title='Free IT (and Development) Books'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-6217197736276043005</id><published>2011-03-05T11:53:00.001+11:00</published><updated>2011-03-05T11:53:21.556+11:00</updated><title type='text'>Free MS Press e-Books</title><content type='html'>&lt;p&gt;Here's a list of free MS Press ebooks for 2011:&lt;/p&gt;&lt;p&gt;&lt;a href="http://blogs.msdn.com/b/microsoft_press/archive/2011/03/03/ebooks-list-of-our-free-books.aspx"&gt;http://blogs.msdn.com/b/microsoft_press/archive/2011/03/03/ebooks-list-of-our-free-books.aspx&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/8749026-6217197736276043005?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/6217197736276043005/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=6217197736276043005' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/6217197736276043005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/6217197736276043005'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/03/free-ms-press-e-books.html' title='Free MS Press e-Books'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-1168300012681313636</id><published>2011-03-01T23:21:00.001+11:00</published><updated>2011-03-01T23:24:13.781+11:00</updated><title type='text'>Richness of Communications Channel</title><content type='html'>&lt;p&gt;I often refer to this graph when talking about different media and communications channels. It is an important one in many different aspects. Here is the link to the whole &lt;a href="http://www.agilemodeling.com/essays/communication.htm"&gt;article&lt;/a&gt;, and the chart is below. Originally, it appears in many texts about Scrum and Agile practices.&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid black;" src="http://www.agilemodeling.com/images/communicationModes.gif" alt="" width="400" height="320" /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-1168300012681313636?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/1168300012681313636/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=1168300012681313636' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/1168300012681313636'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/1168300012681313636'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/03/richness-of-communications-channel.html' title='Richness of Communications Channel'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-7457294621113176292</id><published>2011-02-28T17:23:00.001+11:00</published><updated>2011-02-28T17:23:47.570+11:00</updated><title type='text'>Running SpecFlow Tests</title><content type='html'>&lt;p&gt;We are setting up SpecFlow tests, in a BDD approach, before generating the code to satisfy the user stories (features and scenarios). Data layer is generated with Sharp Architecture.&lt;/p&gt;&lt;p&gt;The first error that pops out when trying to run the tests is&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&amp;nbsp;----&amp;gt; NHibernate.HibernateException : Could not create the driver from NHibernate.Driver.SQLite20Driver.&lt;/p&gt;&lt;p&gt;&amp;nbsp; ----&amp;gt; System.Reflection.TargetInvocationException : Exception has been thrown by the target of an invocation.&lt;/p&gt;&lt;p&gt;&amp;nbsp; ----&amp;gt; System.IO.FileLoadException : Mixed mode assembly is built against version 'v2.0.50727' of the runtime and cannot be loaded in the 4.0 runtime without additional configuration information.&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;at FluentNHibernate.Cfg.FluentConfiguration.BuildSessionFactory()&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;To sort this out, check &lt;a href="http://www.meadow.se/wordpress/?p=393"&gt;this linked article&lt;/a&gt;. Adding those few lines to your nunit-console application configuration file does the trick.&lt;/p&gt;&lt;p&gt;After this, see &lt;a href="http://si-w.co.uk/blog/2010/07/20/running-specflow-reports-from-within-visual-studio/"&gt;here&lt;/a&gt;&amp;nbsp;how to set up running SpecFlow tests from Visual Studio and automatically generating the report.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-7457294621113176292?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/7457294621113176292/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=7457294621113176292' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/7457294621113176292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/7457294621113176292'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/02/running-specflow-tests.html' title='Running SpecFlow Tests'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-8816742051144387691</id><published>2011-02-24T17:55:00.000+11:00</published><updated>2011-02-24T17:55:00.998+11:00</updated><title type='text'>Import DDL Types for SQL Server 2008 into Enterprise Architect</title><content type='html'>&lt;p&gt;While not difficult, adding new DDL types into Enterprise Architect is not quite straightforward. I needed SQL 2008 types added separate to existing SQL 2000 and (later imported) 2005.&lt;/p&gt;&lt;p&gt;The Data Modeling page (&lt;a href="http://www.sparxsystems.com/enterprise_architect_user_guide/modeling_languages/datamodelling2.html"&gt;link&lt;/a&gt;) on Sparx site states that the DDL types can be downloaded from the &lt;a href="http://www.sparxsystems.com/resources/index.html"&gt;Resources&lt;/a&gt; page. Head there and, under Data Modeling Data Types, download the XML file for SQL 2008 (or click directly &lt;a href="http://www.sparxsystems.com/downloads/datamodeling/DDLDatatypes_SQLSvr2008.xml"&gt;here&lt;/a&gt;).&lt;/p&gt;&lt;p&gt;Once you download the XML file, go to Tools -&amp;gt; Import Reference Data in the Enterprise Architect. Select the downloaded file, then select the name in the list that appears later and click Import. That should be all there is.&lt;/p&gt;&lt;p&gt;Now, when adding a new table in the Data Model, SQL 2008 is available as a DB type, together with all the DDL types.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-8816742051144387691?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/8816742051144387691/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=8816742051144387691' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/8816742051144387691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/8816742051144387691'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/02/import-ddl-types-for-sql-server-2008.html' title='Import DDL Types for SQL Server 2008 into Enterprise Architect'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-268798652846648081</id><published>2011-02-23T17:55:00.001+11:00</published><updated>2011-02-23T17:55:08.010+11:00</updated><title type='text'>Redmine &amp; Backlogs - "Updated by {{author}} {{age}} ago"</title><content type='html'>&lt;p&gt;I just installed Redmine Backlogs plugin in order to display the burndown chart for issues in Redmine. However, the issue pages started showing "Updated by {{author}} {{age}} ago", as well as other template keys instead of real values.&lt;/p&gt;&lt;p&gt;Thanks to a discussion at&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.redmine.org/boards/2/topics/11000"&gt;http://www.redmine.org/boards/2/topics/11000&lt;/a&gt;&lt;/p&gt;&lt;p&gt;the solution seems to be some incompatibility in i18n gem for Ruby. The solution is to remove 0.5.0 of i18n package and install an older one. Here is the post that helped:&lt;/p&gt;&lt;p style="padding-left: 30px;"&gt;"&lt;span style="color: #484848; font-family: Verdana, sans-serif; font-size: 12px;"&gt;I had a similar issue after installing a plugin that required the i18n gem which resulted in my unintentionally upgrading i18n to 0.5.0. When I rolled back to i18n 0.4.1 it solved the issue for me. Here were the commands I used:&lt;/span&gt;&lt;/p&gt;&lt;p style="padding-left: 30px;"&gt;&lt;span style="color: #484848; font-family: Verdana, sans-serif; font-size: 12px;"&gt;&lt;p&gt;gem install --no-rdoc --no-ri i18n -v 0.4.1&lt;/p&gt;&lt;p&gt;In order to make sure I had 0.4.1 available on my system, and then:&lt;/p&gt;&lt;p&gt;gem uninstall i18n&lt;/p&gt;&lt;p&gt;And then select the newer version of i18n that it is necessary to get rid of (in my case it was i18n 0.5.0), then restart Redmine.&lt;/p&gt;&lt;p&gt;I can't guarantee this is going to help, but in my case it did."&lt;/p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-268798652846648081?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/268798652846648081/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=268798652846648081' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/268798652846648081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/268798652846648081'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/02/redmine-backlogs-by-author-age-ago.html' title='Redmine &amp;amp; Backlogs - &amp;quot;Updated by {{author}} {{age}} ago&amp;quot;'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-5328031203220207482</id><published>2011-01-31T09:47:00.001+11:00</published><updated>2011-01-31T09:47:27.110+11:00</updated><title type='text'>Scrum Tuning, Presentation</title><content type='html'>&lt;p&gt;A great presentation on Scrum by Jeff Sutherland, Ph.D, held at Google on December 7, 2006.&lt;/p&gt;&lt;p&gt;&lt;a href="http://video.google.com/videoplay?docid=8795214308797356840#"&gt;http://video.google.com/videoplay?docid=8795214308797356840#&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/8749026-5328031203220207482?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/5328031203220207482/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=5328031203220207482' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/5328031203220207482'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/5328031203220207482'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/01/scrum-tuning-presentation.html' title='Scrum Tuning, Presentation'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-6252044176780603381</id><published>2011-01-28T20:38:00.001+11:00</published><updated>2011-03-19T23:11:24.523+11:00</updated><title type='text'>Battery Tips for Android</title><content type='html'>Having had a great battery life with my phone initially and then dropping to less-than-a-day battery life, I spent some time reading the advice and trying some of that out. I have to admit that having a very good battery life initially happened because I had immediately disabled all the Location and Network functions after I got the phone. I did not have data on my plan so I did not need the networking. Also, there was not too many applications nor widgets installed and active.&lt;br /&gt;After adding a whole bunch of applications (and, the worst of all - a whole bunch of task managers that are real battery vampires) and adding the data plan, the battery on my phone lasted only a few hours. The main reason for this was identified in being LauncherPro. With having that as my default home, the battery would be drained in a matter of a few hours. I noticed the system also got terribly slow. Applications would crash and the performance was just a pain. I haven't figured out where the conflict was - whether it was some of the widgets or background services - but removing LauncherPro and bringing back the default (Tw) launcher and home screen seemed to bring things back to (the new) normal.&lt;br /&gt;Then I monitored the CPU and battery usage and haven't really found any further good suspects to eliminate. However, here are some tips that make sense to me, in general, so I added them to my phone practice:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Set the screen brightness to minimum. Possibly, use widget as a switch between brightness off (indoors) and auto brightness (outdoors). Widgetsoid's slider shows the actual percentage amount while the default slider for brightness does not. I found out my brightness was at 7% instead of 1% so I finally managed to set it to minimum.&lt;/li&gt;&lt;li&gt;Use Autostarts to actually disable startup items rather than kill them after they are started.&lt;/li&gt;&lt;li&gt;Remove widgets that consume CPU but are not absolutely necessary. I used to use widgets as mere shortcuts to the full application so replacing the widgets with actual shortcuts helps. Found Widgetsoid, a great widget app that consumes very little CPU/battery and allows access to most options I need.&lt;/li&gt;&lt;li&gt;If using Launcher Pro, do not use updating icons (Gmail mail count, SMS count, etc.). I decided to switch back to the default TwLauncher for peace of mind.&lt;/li&gt;&lt;li&gt;If disabling location finding via GPS, you might as well disable the same using cellular network.&lt;/li&gt;&lt;li&gt;DO NOT use task killers unless you really need to. There are several wonderful applications that will display the CPU usage and even monitor it over time (I recommend Usage Timelines, SystemPanel, &amp;amp; Android System Info). Use this for a period to identify hogs and eliminate them. Then stop monitoring and leave the application management to Android. That's why it's there.&lt;br /&gt;Note: If you keep killing apps, they tend to get started by certain events. There is an app that can show you all the event hooks in the system (I think it is Austostarts that does this, as well). So, you save battery by not killing those apps.&lt;/li&gt;&lt;li&gt;Uninstall the applications you are not using but that keep starting themselves every now and then. Different events will trigger different applications so, if you don't need them, the best option is to uninstall. Keep the apk package handy if you ever need them later.&lt;/li&gt;&lt;/ul&gt;In regards to network, my preference is to turn the network on only when I need it. Usually by using widgets to start the 3G connection and auto-sync. Then I let the apps update whatever they need to and/or use the Internet and then disconnect when I'm done. Also disable background network traffic as I hope applications will understand this and not send network request when network is offline. Still need to monitor usage for a bit longer to confirm how this affects battery life.&lt;br /&gt;Edit: Although I disconnect 3G when not using it, I don't go into trouble of disabling the whole background communication. Things seem to work well. One observation I'd make is that it would be good to uninstall the applications that are not really used as there tends to be a lot of services and applications running in the background and, sooner or later, they *do* consume power and CPU cycles because they *are* checking and doing something. Monitoring the CPU usage displays that clearly.&lt;br /&gt;Edit, 2011-01-28: After applying these tips, my phone has been alive and well on a single battery charge for 5 days and 5 hours and the battery is still at 15%. I have used it as I would normally - phone calls (over 42 minutes), taking photos, uploading to Facebook, checking emails in the morning and sometimes during the day, checking the web site for train schedule, checking GPS location, browsing online maps, missed calls, SMS messages, etc.&lt;br /&gt;I still use widgets for 3G traffic, calendar, todo list, Financisto, and 8 Widgetsoid switches and indicators.&lt;br /&gt;After finding how to rearrange icons in the application launcher, I started utilizing application shortcuts instead of numerous widgets for running the apps. Some of the apps I'm actively using are now located on the first two screens of the app launcher and others are accessible by tapping the widgets.&lt;br /&gt;There is over 250 applications installed on the phone. It takes eternity just to list them. Use Android System Info for checking installed packages, uninstalling, etc.&lt;br /&gt;2G network is being disabled overnight with Tasker and turned back on in the morning. The phone is also being used as a wake-up alarm in the morning with Alarm Clock Plus.&lt;br /&gt;Before this session, I've depleted the battery completely and then recharged fully without turning the phone on in the meantime.&lt;br /&gt;And, at the end, the phone is Samsung Galaxy S. :)&lt;br /&gt;Edit 2011-01-30: The battery made it to 7 full days!&lt;br /&gt;&lt;br /&gt;Update: Check out related post - &lt;a href="http://alensiljak.blogspot.com/2011/03/zeam-launcher-improves-battery-life-on.html"&gt;Zeam Launcher improves battery life on Android&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-6252044176780603381?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/6252044176780603381/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=6252044176780603381' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/6252044176780603381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/6252044176780603381'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/01/battery-tips-for-android.html' title='Battery Tips for Android'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-2212539243568769936</id><published>2011-01-18T21:30:00.001+11:00</published><updated>2011-01-18T21:30:39.209+11:00</updated><title type='text'>VoIP Test Call</title><content type='html'>&lt;p&gt;Just did the first proper SIP phone call from the Galaxy S to test out the quality and data usage.&amp;nbsp;&lt;/p&gt;&lt;p&gt;The call quality was pretty decent on my end. I could hear the other side well in duplex mode, there was no echo, and the whole experience was quite pleasant. There were initial quirks on the very beginning after the connection has been established but that went away after about ten seconds or so.&lt;/p&gt;&lt;p&gt;For the other side, the quality of connection was not as good as it was for me. They could hear echo and their own voice. This really affects the conversation, at least for me. I can't stand hearing myself repeating what I just said. However, in this case the conversation went pretty smoothly.&lt;/p&gt;&lt;p&gt;So, CSipSimple justified the praises other people had for it. The data usage for a 13:04-minute conversation was somewhere around 6.5 MB. It is hard to say because I did not note down the actual amount of data used before the call. It was somewhere in the range of 15 MB. And, at the end of the conversation the usage was at 21.55MB. That is pretty decent usage amount. As in the data usage is negligent - about 0.5MB per minute of duplex conversation.&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-2212539243568769936?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/2212539243568769936/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=2212539243568769936' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/2212539243568769936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/2212539243568769936'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/01/voip-test-call.html' title='VoIP Test Call'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-8925926090144517028</id><published>2011-01-08T23:22:00.001+11:00</published><updated>2011-01-08T23:22:47.179+11:00</updated><title type='text'>E-Commerce Packages</title><content type='html'>&lt;p&gt;I was asked a question about a decent e-commerce package for a small shop. As I haven't looked into those for a while, here is a great post that lists 10 such packages for a variety of platforms and frameworks. The list is a great reference for when you need an Open Source web site for e-commerce.&lt;/p&gt;&lt;p&gt;&lt;a href="http://blog.webdistortion.com/2008/05/03/9-kick-ass-open-source-e-commerce-platforms-reviewed/"&gt;http://blog.webdistortion.com/2008/05/03/9-kick-ass-open-source-e-commerce-platforms-reviewed/&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/8749026-8925926090144517028?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/8925926090144517028/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=8925926090144517028' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/8925926090144517028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/8925926090144517028'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/01/e-commerce-packages.html' title='E-Commerce Packages'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-8982781077807831031</id><published>2011-01-07T14:02:00.001+11:00</published><updated>2011-01-07T14:02:36.322+11:00</updated><title type='text'>SIPDroid</title><content type='html'>&lt;p&gt;SIPDroid FAQ explains quite a bit -&amp;nbsp;&lt;a href="http://code.google.com/p/sipdroid/wiki/FAQ"&gt;http://code.google.com/p/sipdroid/wiki/FAQ&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The useful part is the estimate of data use when calling through SIPDroid. Makes me wonder when are international calls all going to be routed through Internet.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-8982781077807831031?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/8982781077807831031/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=8982781077807831031' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/8982781077807831031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/8982781077807831031'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/01/sipdroid.html' title='SIPDroid'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-1559087128804464960</id><published>2011-01-07T12:19:00.001+11:00</published><updated>2011-01-07T12:19:35.622+11:00</updated><title type='text'>WCF for jQuery</title><content type='html'>&lt;p&gt;There is a great project at Codeplex that enables easy interaction between jQuery (or any other HTTP-based client) and WCF service. Support for Linq included.&lt;/p&gt;&lt;p&gt;Check out&amp;nbsp;&lt;a href="http://tomasz.janczuk.org/2010/10/wcf-support-for-jquery-on.html"&gt;http://tomasz.janczuk.org/2010/10/wcf-support-for-jquery-on.html&lt;/a&gt;&amp;nbsp;and &lt;a href="http://wcf.codeplex.com"&gt;wcf.codeplex.com&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-1559087128804464960?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/1559087128804464960/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=1559087128804464960' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/1559087128804464960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/1559087128804464960'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/01/wcf-for-jquery.html' title='WCF for jQuery'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-5815524588565836872</id><published>2011-01-06T09:42:00.001+11:00</published><updated>2011-01-06T09:42:41.332+11:00</updated><title type='text'>IIS Express</title><content type='html'>&lt;p&gt;IIS Express (Beta) is available for download.&lt;/p&gt;&lt;p&gt;Have a look at Scott Gu's announcement -&amp;nbsp;http://weblogs.asp.net/scottgu/archive/2010/06/28/introducing-iis-express.aspx&lt;/p&gt;&lt;p&gt;and then download from link at&amp;nbsp;http://learn.iis.net/page.aspx/868/iis-express-overview/&lt;/p&gt;&lt;p&gt;direct link -&amp;nbsp;&lt;span style="color: #008800; font-family: Arial, sans-serif; font-size: 13px; white-space: nowrap;"&gt;http://download.microsoft.com/download/D/5/5/D551345B-1E08-4578-B8D8-662AC6BE8277/iisexpress_x86.msi&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;span style="color: #008800; font-family: Arial, sans-serif; font-size: 13px; white-space: nowrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-5815524588565836872?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/5815524588565836872/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=5815524588565836872' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/5815524588565836872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/5815524588565836872'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/01/iis-express.html' title='IIS Express'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-580102924594933535</id><published>2011-01-04T11:35:00.000+11:00</published><updated>2011-01-04T11:35:32.769+11:00</updated><title type='text'>Maps of the Internet</title><content type='html'>&lt;p&gt;There are several great maps of the Internet today. They portray different statistics and show a lot. Let's see...&lt;/p&gt;&lt;p&gt;1. XKCD map of online communities (&lt;a href="http://xkcd.com/802_large/"&gt;link&lt;/a&gt;), showing the size of online communities&lt;/p&gt;&lt;p&gt;&lt;img style="display: block; margin-left: auto; margin-right: auto;" src="http://imgs.xkcd.com/comics/online_communities_2_large.png" alt="" width="300" height="350" /&gt;&lt;/p&gt;&lt;p&gt;2. World map of Facebook friend connections (&lt;a href="http://www.bbc.co.uk/news/science-environment-11989723"&gt;link&lt;/a&gt;)&lt;/p&gt;&lt;p&gt;&lt;img style="display: block; margin-left: auto; margin-right: auto;" src="http://www.bbc.co.uk/nol/shared/spl/hi/sci_nat/10/facebook/img/facebook_conn_image_976x462.gif" alt="" width="450" height="250" /&gt;&lt;/p&gt;&lt;p&gt;3. Web is Dead article (&lt;a href="http://www.wired.com/magazine/2010/08/ff_webrip/all/1"&gt;link&lt;/a&gt;), showing the breakdown of total US internet traffic from 1990 to 2010&lt;/p&gt;&lt;p style="text-align: center;"&gt;&lt;img src="http://www.wired.com/magazine/wp-content/images/18-09/ff_webrip_chart2.jpg" alt="" width="330" height="202" /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8749026-580102924594933535?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/580102924594933535/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=580102924594933535' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/580102924594933535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/580102924594933535'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/01/maps-of-internet.html' title='Maps of the Internet'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8749026.post-1637802994769488045</id><published>2011-01-01T16:52:00.001+11:00</published><updated>2011-12-10T01:57:45.020+11:00</updated><title type='text'>Clear Gallery Thumbnails on Android</title><content type='html'>As I often transfer the photos from my (Android) phone to the PC, I delete them from the phone. However, the thumbnails remain in the Gallery application. They happen to be black, indicating there is no photo, but they are still there, which is a bit annoying. I tried some tips from forums to use Astro to clear thumbnail cache but that did not help.&lt;br /&gt;To remove all the thumbnail data - go to Android directory on the phone (on Android 2.3.7 Cyanogen it is on SD Card in /mnt/sdcard/Android). Delete "com.cooliris.media" directory.&lt;br /&gt;After this, you will notice the media manager rescanning the media and, when you open the Gallery, only the existing photos will have thumbnairs. Voila!&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/8749026-1637802994769488045?l=alensiljak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alensiljak.blogspot.com/feeds/1637802994769488045/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8749026&amp;postID=1637802994769488045' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/1637802994769488045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8749026/posts/default/1637802994769488045'/><link rel='alternate' type='text/html' href='http://alensiljak.blogspot.com/2011/01/clear-gallery-thumbnails-on-android.html' title='Clear Gallery Thumbnails on Android'/><author><name>Alen Siljak</name><uri>https://profiles.google.com/105804980261840924956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-n-JxhXwzKg8/AAAAAAAAAAI/AAAAAAAABDs/4E2V-m3CGF8/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry></feed>
