<?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-7278525</id><updated>2012-01-14T17:34:04.898+05:00</updated><title type='text'>.code</title><subtitle type='html'>&lt;i&gt;.. ola \o/ :)&lt;/i&gt;&lt;br&gt;&lt;br&gt;</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://joehacker.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://joehacker.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Muhammad Abubakar</name><uri>https://profiles.google.com/101729345733668263886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-6sHFfgCGkRU/AAAAAAAAAAI/AAAAAAAAAPA/QFyO0sWVzdg/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>52</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7278525.post-6963778741174990457</id><published>2011-11-29T15:48:00.001+05:00</published><updated>2011-11-29T15:54:32.618+05:00</updated><title type='text'>The Class dot Folder dot Class dot Class dot CRAP</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;You know how Visual Studio changes the "namespace" name to "namespace.foldername" when you move a file from one folder to a sub folder? I TOTALLY HATE THAT. VS doesn't need to manage this for me. I hate to write &lt;b&gt;class.class.class.class.something.bla.bla.crap&lt;/b&gt; in my source code. No I don't want to manage stuff like that. If I got confuse, I'll just arrange stuff myself. I am NOT ALWAYS writing a 50 million lines of code so don't think I'm going to get confused right after 2 days of writing code finding which class is where. And please DONT DO THIS with the dreaded typed datasets!! You moved a typed dataset from one place to another and the code breaks like **** (it was the s word not the f word). Ok, have fun now.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7278525-6963778741174990457?l=joehacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joehacker.blogspot.com/feeds/6963778741174990457/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7278525&amp;postID=6963778741174990457' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/6963778741174990457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/6963778741174990457'/><link rel='alternate' type='text/html' href='http://joehacker.blogspot.com/2011/11/class-dot-folder-dot-class-dot-class.html' title='The Class dot Folder dot Class dot Class dot CRAP'/><author><name>Muhammad Abubakar</name><uri>https://profiles.google.com/101729345733668263886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-6sHFfgCGkRU/AAAAAAAAAAI/AAAAAAAAAPA/QFyO0sWVzdg/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7278525.post-6785502874243987512</id><published>2011-11-20T16:10:00.000+05:00</published><updated>2011-11-20T16:10:20.544+05:00</updated><title type='text'>Occupy Internet!!</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;I live in Pakistan and I just noticed that a very important website used by developers around Internet has been blocked by my ISP, i.e, www.pastebin.com. Few days back I wanted to download a free download manager, aka FDM, which is my fav download manager, and I discovered that&amp;nbsp;&lt;a href="http://www.freedownloadmanager.org/"&gt;http://www.freedownloadmanager.org/&lt;/a&gt;&amp;nbsp;has also been blocked by the ISP. The message that you get is this:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-l4TD5sYsIVc/TsjV19_ldgI/AAAAAAAAAY0/417m6PA4T8k/s1600/fdmblocked.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-l4TD5sYsIVc/TsjV19_ldgI/AAAAAAAAAY0/417m6PA4T8k/s1600/fdmblocked.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;so I asked friends on google+ if they can access this stuff, they were using a different isp and that isp has not implemented the *blacklisted* urls. I called up the support to ask them whats going on, the guy told me that PTA has given them a list of thousands of urls including countless blogs that they want them to ban. The list has been implemented by almost all ISPs except for perhaps PTCL. But ptcl will soon follow.&lt;br /&gt;&lt;br /&gt;There must be other websites that do the same stuff as pastebin, are they going to be blocked too? What someone can do on pastebin, cant they do the same on other related websites? What harm does a website like pastebin causes? I fail to understand. Does blocking a download manager saves a government from getting toppled? After UK's gov blamed London Riots on internet, and many Islamic countries banning facebook/twitter/skype or any website that helps protesters to collaborate, do you see where all this is going? The governments of the world have gone crazy, who comes to power wants to stay forever in power. Going forward few years (or a decade) from now, I dont see a bright future of Internet. I see restrictions, I see a blockade of freedom and free-speech.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7278525-6785502874243987512?l=joehacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joehacker.blogspot.com/feeds/6785502874243987512/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7278525&amp;postID=6785502874243987512' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/6785502874243987512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/6785502874243987512'/><link rel='alternate' type='text/html' href='http://joehacker.blogspot.com/2011/11/occupy-internet.html' title='Occupy Internet!!'/><author><name>Muhammad Abubakar</name><uri>https://profiles.google.com/101729345733668263886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-6sHFfgCGkRU/AAAAAAAAAAI/AAAAAAAAAPA/QFyO0sWVzdg/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-l4TD5sYsIVc/TsjV19_ldgI/AAAAAAAAAY0/417m6PA4T8k/s72-c/fdmblocked.PNG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7278525.post-6233440604887105067</id><published>2011-10-06T08:10:00.000+05:00</published><updated>2011-10-06T08:10:35.943+05:00</updated><title type='text'>Steve Jobs dies at the age of 56</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Steve Jobs died today in peace in the presence of his family, according to his family's statement. An amazingly focused person and it seems that majority of the projects he did, he shockingly understood what people wanted and delivered it (or just convinced you that this is what you should use). I have never owned an Apple product, but I have used them briefly through friends or colleagues. I have never owned them but I strongly suggest them to people who can afford them. They are amazing products. Products that other companies look at and try to copy. But&amp;nbsp;as you follow the technology industry&amp;nbsp;its so clear that copying something in the form of a product and then be able to sell it as well is in most cases nearly impossible to do. You really have to understand and appreciate as to what is so great about a revolutionary product that you are trying to copy. But well, I think if you were great enough, you would not copy something in the first place, you would just understand the greatness, say something nice about it, and take the aim to make something even better. Some companies get the hardware right, but the software is not good, and some get the software right but the hardware is crappy. Some get the product to be pretty decent, but have no idea who the audience is, and why, because the inception of the idea is not coming from their own minds, they are just trying to copy someone else's success. They are loosing their dignity and respect. Some become so desperate to copy success, like Nokia, that they kill their revolutionary mobile platforms like Meego, and some become so desperate, like Microsoft, that they use their deep pockets to convince others to kill their innovations and join their crappy platform, ridding the world of innovative products to come. So much for contributing to make the world a better place. Both are desperate and both end up achieving nothing.&lt;br /&gt;&lt;br /&gt;I'm pretty concerned about the new leadership of Apple. Yes I have read a lot about Tim Cook and the rest of the team, they are all great people. They are all very intelligent/clever, they love the work they do, they understood what Steve Jobs wanted, but in my honest opinion, all of them combined, they don't even begin to come close in talent and genius that Steve was for his company. They could have done anything if there was no Apple, they could have made a product successful following another good leader in some other random company, but their minds and hands could not have possibly made something as revolutionary as what they got opportunity to do at Apple. And that's only because Steve Jobs was working as their boss. Yes, you can teach someone, yes you can learn from a great leader, but I should remind you that we are talking about a talent that no university or institute can teach you, not even the genius himself because he knows he has a gift and he can do things right and that he can be a leader, but what he can not do is translate all this genious in words and actions that can be documented and followed for times to come. Its that rare kind of talent we have under discussion. No matter how much you try to mentor, you cannot deliver this passion and genius on to someone. How many great leaders in the world have mentored their subordinates, and how many have had successors like them. Very few indeed.&lt;br /&gt;&lt;br /&gt;It is to be seen in the years to come how good the leadership of Apple really is. While he was leaving, Steve Jobs would have certainly given them a lot to think on, guidance on future products, possible future products, possible new markets that can be explored, which may continue to feed the success (for sometime) that they have today. But i think&amp;nbsp;if they can come up with just one product that is totally&amp;nbsp;conceived&amp;nbsp;on their own without any help or ideas that Steve has left behind, and at the same time be as successful as an iPhone, that something even Steve would look and say "why didnt I think of this". Because this is how big of a success you have to be, to be Apple, and only then I think we can say that Apple's leadership transferred to the right minds. But otherwise, they will loose the spark, they will loose a lot. Because Apple is not a company that copy to succeed, its just not in their DNA.&lt;br /&gt;&lt;br /&gt;RIP Steve Jobs!&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7278525-6233440604887105067?l=joehacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joehacker.blogspot.com/feeds/6233440604887105067/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7278525&amp;postID=6233440604887105067' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/6233440604887105067'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/6233440604887105067'/><link rel='alternate' type='text/html' href='http://joehacker.blogspot.com/2011/10/steve-jobs-dies-at-age-of-56.html' title='Steve Jobs dies at the age of 56'/><author><name>Muhammad Abubakar</name><uri>https://profiles.google.com/101729345733668263886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-6sHFfgCGkRU/AAAAAAAAAAI/AAAAAAAAAPA/QFyO0sWVzdg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7278525.post-2488595326484819653</id><published>2011-09-28T13:24:00.000+05:00</published><updated>2011-09-28T13:24:43.737+05:00</updated><title type='text'>So ... Meego is DEAD!</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;So this day brings a very bad news from intel and linux foundation. They are just creating a yet another new Linux project for, well, "all devices". Just few years back it was Moblin from Intel and Maemo from Nokia, and then they got merged and formed Meego. Then one day the Mr. *f*ELop decided he wanted to please his old boss and he decided to just abandon EVERYTHING and start making the lame windows phone devices. That came as a surprise to Intel which used to think Nokia was its core partner in developing Meego. But still, Intel told everyone to stay calm and they are just fully&amp;nbsp;committed&amp;nbsp;to Meego. Yeah Right! And now fresh out of twitter the world is learning that "Good bye Meego" has been sung and there is a new effort in town, called Tarzan .. ooops sorry its called Tizne .. TintintintinTINZIN .. umm no Tizen dammit! Yes its called #Tizen. You can read the *justification* here&amp;nbsp;&lt;a href="https://meego.com/community/blogs/imad/2011/whats-next-meego"&gt;https://meego.com/community/blogs/imad/2011/whats-next-meego&lt;/a&gt;. Really silly, what an&amp;nbsp;excuse! HTML5. Huh.&lt;br /&gt;&lt;br /&gt;Anyway, so some twitter reaction:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;@qole:&lt;br /&gt;Intel: Moblin... MeeGo... Tizen! This time it will work! http://t.co/GasmsXci&lt;br /&gt;&lt;br /&gt;@qole:&lt;br /&gt;Why do companies (fail to) compete against established platforms by repeatedly starting over instead of refining existing platforms?&lt;br /&gt;&lt;br /&gt;@segphault&lt;br /&gt;Not convinced that starting over from scratch and rewriting the whole stack with yet another toolkit is going to accomplish anything #Tizen&lt;br /&gt;&lt;br /&gt;@achipa&lt;br /&gt;When I hear a platform's software offering is built around HTML5, it almost feels like hearing 'no real software offering yet'&lt;br /&gt;&lt;br /&gt;@segphault&lt;br /&gt;Intel and the Linux Foundation have shown that they can't get the job done. I don't see why anybody should give a crap about Tizen.&lt;br /&gt;&lt;br /&gt;@Texrat&lt;br /&gt;Why #Tizen? Was FlibberGertz taken?&lt;br /&gt;&lt;br /&gt;@murraycumming&lt;br /&gt;The Meego #Tizen announcement (ur1.ca/583lj), is arbitrary and one-directional, as usual. It causes failure. It prevents success.&lt;br /&gt;&lt;br /&gt;@qole&lt;br /&gt;Random word generators produce some interesting results. #Maemo #Tizen #FlibberGertz #Gobbryfux&lt;br /&gt;&lt;br /&gt;@corneliushald&lt;br /&gt;I know another OS that tried to use HTML/JS as it's primary API. #intel #meego #webos&lt;br /&gt;&lt;br /&gt;@RevdKathy&lt;br /&gt;#Tizen. Sounds like a cheap fizzy drink. Lots of caffeine and additives, and no actual nutritional value.&lt;br /&gt;&lt;br /&gt;@jaffa2&lt;br /&gt;Dear #Intel, will you consider handing over *.meego.com to a community governance body so we can enact a truly open mobile Linux OS?&lt;br /&gt;&lt;br /&gt;@jaffa2&lt;br /&gt;#Intel blamed #Nokia for delay in their handset efforts with #MeeGo. So doing everything again from scratch is way of speeding up?!&lt;br /&gt;&lt;br /&gt;@mece66&lt;br /&gt;I think this is rather relevant right now: xkcd.com/934/ #tizen #meego #html5 #fail #xkcd&lt;br /&gt;&lt;br /&gt;oh well, lets just hope for the best and grab a &lt;a href="http://swipe.nokia.com/"&gt;N9&lt;/a&gt; while we are at it.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7278525-2488595326484819653?l=joehacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joehacker.blogspot.com/feeds/2488595326484819653/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7278525&amp;postID=2488595326484819653' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/2488595326484819653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/2488595326484819653'/><link rel='alternate' type='text/html' href='http://joehacker.blogspot.com/2011/09/so-meego-is-dead.html' title='So ... Meego is DEAD!'/><author><name>Muhammad Abubakar</name><uri>https://profiles.google.com/101729345733668263886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-6sHFfgCGkRU/AAAAAAAAAAI/AAAAAAAAAPA/QFyO0sWVzdg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7278525.post-8740696773763428521</id><published>2011-09-07T05:09:00.000+05:00</published><updated>2011-09-07T05:09:21.469+05:00</updated><title type='text'>Crystal Report Error on 64 bits</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;If you get this error that says:&lt;br /&gt;&lt;br /&gt;"An error has occurred while attempting to load the Crystal Reports runtime.&lt;br /&gt;&lt;br /&gt;Either the Crystal Reports registry key &lt;b&gt;permissions are insufficient&lt;/b&gt; or the Crystal Reports runtime is not installed correctly.&lt;br /&gt;&lt;br /&gt;Please install the appropriate Crystal Reports redistributable (CRRedist*.msi) containing the correct version of the Crystal Reports runtime (x86, x64, or Itanium) required. &amp;nbsp;Please go to http://www.businessobjects.com/support for more information. "&lt;br /&gt;&lt;br /&gt;Open your IIS and click "Application Pools", select the application pool name that your application is using, then on the right side click "Advanced Settings", which will show you the advanced settings for your app pool. There set the "Enable 32-Bit Applications" to True. Click Ok, and now go check your page which uses crystal reports, it should work just fine.&lt;br /&gt;&lt;br /&gt;This info was for 64-bits Windows 7 rocking Visual Studio 2005, may also work for few other microsoft operating systems and iis.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7278525-8740696773763428521?l=joehacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joehacker.blogspot.com/feeds/8740696773763428521/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7278525&amp;postID=8740696773763428521' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/8740696773763428521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/8740696773763428521'/><link rel='alternate' type='text/html' href='http://joehacker.blogspot.com/2011/09/crystal-report-error-on-64-bits.html' title='Crystal Report Error on 64 bits'/><author><name>Muhammad Abubakar</name><uri>https://profiles.google.com/101729345733668263886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-6sHFfgCGkRU/AAAAAAAAAAI/AAAAAAAAAPA/QFyO0sWVzdg/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7278525.post-9140515567672268358</id><published>2011-09-05T13:39:00.000+05:00</published><updated>2011-09-05T13:39:08.019+05:00</updated><title type='text'>Convert DataTable to JSON in C#</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;A generic code to convert your C# DataTable to JSON:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; string makejsonoftable(DataTable table, makejson e)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; {&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; StringBuilder sb = new StringBuilder();&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; foreach (DataRow dr in table.Rows)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; if (sb.Length != 0)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sb.Append(",");&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; sb.Append("{");&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; StringBuilder sb2 = new StringBuilder();&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; foreach (DataColumn col in table.Columns)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; string fieldname = col.ColumnName;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; string fieldvalue = dr[fieldname].ToString();&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (sb2.Length != 0)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sb2.Append(",");&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sb2.Append(string.Format("{0}:\"{1}\"", fieldname, fieldvalue));&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; sb.Append(sb2.ToString());&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; sb.Append("}");&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; if (e == makejson.e_with_square_brackets)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; sb.Insert(0, "[");&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; sb.Append("]");&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; return sb.ToString();&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;and I added this enum:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; enum makejson&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; e_without_square_brackets,&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; e_with_square_brackets&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; }&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;because you wont need the square brackets in case you are calling this function again for some nested object definition, for example like:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;[{name:{name1:"ab",name2:"cd"},id:9}]&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;resulting json for one of my data query looked like this:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;[{village_name:"Lourba leten",school_name:"EB 1.2 Nazare Gumer",village_id:"4030301",school_id:"525",classroom_id:"1893",location_name:"Seluk tan",location_id:"9"},{village_name:"",school_name:"",village_id:"",school_id:"",classroom_id:"1905",location_name:"Seluk tan",location_id:"9"}]&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;say you requested this through an ajax call, you can call a:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;var jsondatastructure = eval (yourResponseText);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;in case of the above sample result the "jsondatastructure" will have a&amp;nbsp;jsondatastructure.length set to 2.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7278525-9140515567672268358?l=joehacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joehacker.blogspot.com/feeds/9140515567672268358/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7278525&amp;postID=9140515567672268358' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/9140515567672268358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/9140515567672268358'/><link rel='alternate' type='text/html' href='http://joehacker.blogspot.com/2011/09/convert-datatable-to-json-in-c.html' title='Convert DataTable to JSON in C#'/><author><name>Muhammad Abubakar</name><uri>https://profiles.google.com/101729345733668263886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-6sHFfgCGkRU/AAAAAAAAAAI/AAAAAAAAAPA/QFyO0sWVzdg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7278525.post-2545822073464992286</id><published>2011-07-23T20:37:00.002+05:00</published><updated>2011-07-23T20:41:08.832+05:00</updated><title type='text'>Jailbreak 4.3.4</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;So if you are desperately seeking to jailbreak your ipad while rocking 4.3.4 firmware on it, you are not completely out of luck. The jailbreakme.com is not working so far for 4.3.4 so you have to look for alternative methods. What is working is a solution from redsnow (i believe). Just follow this link&amp;nbsp;&lt;a href="http://bit.ly/qY0JXQ"&gt;http://bit.ly/qY0JXQ&lt;/a&gt; and you will be good. There is a very nicely done youtube video that makes things very clear, I have used ipad for the first time and was jailbreaking for the first time, and i was able to follow it.&lt;br /&gt;&lt;br /&gt;Please note that you will need to be looking for your &lt;b&gt;*.ipsw&lt;/b&gt; extension file (to follow the video), which is the complete firmware that you flashed your ipad with using iTunes. If you are a windows user, this file will be located at "&lt;b&gt;C:\Users\[username]\AppData\Roaming\Apple Computer\iTunes\iPad Software Updates&lt;/b&gt;" assuming you are rocking windows 7/Vista on your C drive, also please replace the username with whatever is correct in your case. Since I updated my ipad 1, the file I have in there was named&amp;nbsp;&lt;b&gt;iPad1,1_4.3.4_8K2_Restore.ipsw&lt;/b&gt; (622,279,895 bytes, md5 hash 3414ec10c6e7f50d8eca5d5c25d60ff0 &lt;a href="http://bit.ly/n1jv13"&gt;http://bit.ly/n1jv13&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Also a note on putting the device in the DFU mode (whatever that is), when you follow the sequence in the video, make sure that your device is powered off!&lt;br /&gt;&lt;br /&gt;Happy jailbreaking!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7278525-2545822073464992286?l=joehacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joehacker.blogspot.com/feeds/2545822073464992286/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7278525&amp;postID=2545822073464992286' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/2545822073464992286'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/2545822073464992286'/><link rel='alternate' type='text/html' href='http://joehacker.blogspot.com/2011/07/jailbreak-434.html' title='Jailbreak 4.3.4'/><author><name>Muhammad Abubakar</name><uri>https://profiles.google.com/101729345733668263886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-6sHFfgCGkRU/AAAAAAAAAAI/AAAAAAAAAPA/QFyO0sWVzdg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7278525.post-4299790515552830052</id><published>2011-06-18T01:27:00.000+05:00</published><updated>2011-06-18T01:27:23.494+05:00</updated><title type='text'>Bluetooth on Windows 7 64 bits</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;If you are running Windows 7 64 bits on your computer and for some reason your bluetooth is not behaving as you expect it to, you can try doing the following, it worked for me. Open the bluetooth settings window:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-KftjsgQfP2Q/Tfu3KH3E-XI/AAAAAAAAAI0/jy0inmaUGrY/s1600/bt.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-KftjsgQfP2Q/Tfu3KH3E-XI/AAAAAAAAAI0/jy0inmaUGrY/s1600/bt.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;switch to the "COM Ports" tab, and see if there is any entry in the list of com ports. If you find nothing there, click that "Add..." button, and the window that comes up click OK in it. A new COM Port will be added to work with your bluetooth connection. Now try transferring files between 2 of your bluetooth devices, it should work. I am right now using the internet connection from my cell phone (nokia n900) through bluetooth on my laptop, which is working pretty great. All this usually works automatically on Windows 7 32 bits, but i dont know why I had to go through this extra step to make the BT work in windows 7 64 bits.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7278525-4299790515552830052?l=joehacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joehacker.blogspot.com/feeds/4299790515552830052/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7278525&amp;postID=4299790515552830052' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/4299790515552830052'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/4299790515552830052'/><link rel='alternate' type='text/html' href='http://joehacker.blogspot.com/2011/06/bluetooth-on-windows-7-64-bits.html' title='Bluetooth on Windows 7 64 bits'/><author><name>Muhammad Abubakar</name><uri>https://profiles.google.com/101729345733668263886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-6sHFfgCGkRU/AAAAAAAAAAI/AAAAAAAAAPA/QFyO0sWVzdg/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-KftjsgQfP2Q/Tfu3KH3E-XI/AAAAAAAAAI0/jy0inmaUGrY/s72-c/bt.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7278525.post-6251666555021724385</id><published>2011-03-17T16:18:00.000+05:00</published><updated>2011-03-17T16:18:44.475+05:00</updated><title type='text'>IE9 crashing windows !!</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;So in excitement to see how fast IE9 really is, I installed one on my office pc (core i5, windows 7 32bits, 4gb ram). After the installation completed, the machine restarted, and I launched IE9 to start browsing, and not even google.com worked! Everytime i typed google.com and tried searching for something and before I could press Enter I would get a windows message that "Internet Explorer has crashed", I tried a lot, nothing worked, it just wont stay alive for more then few seconds. I uninstalled it!&lt;br /&gt;&lt;br /&gt;At home on my laptop, I installed it (core 2, windows 7 64bits, 4gb ram) to try again expecting it to work better here for some reason :). Installation went fine, restarted windows and launched IE9, things were going ok (&lt;i&gt;i had about 5 tabs opened browsing websites like casio/engadget/google/localhost and few others&lt;/i&gt;) but I just got a blue screen right when i was using IE9 and my&amp;nbsp;machine&amp;nbsp;restarted! And i must say that i NEVER get a blue screen of death (bsod) on my laptop! In the past 3 years there have not been much times that I have got a bsod on my laptop. Sigh .. The UX looks good here and all, things feel snappy, but crashing a machine? Maybe IE10 would be joy browsing the web on. Back to Chrome &amp;lt;3&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7278525-6251666555021724385?l=joehacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joehacker.blogspot.com/feeds/6251666555021724385/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7278525&amp;postID=6251666555021724385' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/6251666555021724385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/6251666555021724385'/><link rel='alternate' type='text/html' href='http://joehacker.blogspot.com/2011/03/ie9-crashing-windows.html' title='IE9 crashing windows !!'/><author><name>Muhammad Abubakar</name><uri>https://profiles.google.com/101729345733668263886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-6sHFfgCGkRU/AAAAAAAAAAI/AAAAAAAAAPA/QFyO0sWVzdg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7278525.post-8401232633968259050</id><published>2009-08-06T08:55:00.006+06:00</published><updated>2009-08-06T09:16:00.278+06:00</updated><title type='text'>My Code Comments</title><content type='html'>&lt;div&gt;Do you comment like this too :) ?&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_BfFxVBxubbA/SnpKPYlf4gI/AAAAAAAAAD0/sRyL4XnObSg/s1600-h/comments.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_BfFxVBxubbA/SnpKPYlf4gI/AAAAAAAAAD0/sRyL4XnObSg/s400/comments.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5366683534123590146" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7278525-8401232633968259050?l=joehacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joehacker.blogspot.com/feeds/8401232633968259050/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7278525&amp;postID=8401232633968259050' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/8401232633968259050'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/8401232633968259050'/><link rel='alternate' type='text/html' href='http://joehacker.blogspot.com/2009/08/my-code-comments.html' title='My Code Comments'/><author><name>Muhammad Abubakar</name><uri>https://profiles.google.com/101729345733668263886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-6sHFfgCGkRU/AAAAAAAAAAI/AAAAAAAAAPA/QFyO0sWVzdg/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_BfFxVBxubbA/SnpKPYlf4gI/AAAAAAAAAD0/sRyL4XnObSg/s72-c/comments.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7278525.post-8156136948242471801</id><published>2009-08-02T11:09:00.004+06:00</published><updated>2009-08-02T11:28:56.435+06:00</updated><title type='text'>Chrome's Versions</title><content type='html'>Following is a screenshot showing chrome's About dialog boxes. The first one is the one I built from the lastest source code available from &lt;a href="http://code.google.com/chromium/"&gt;chromium's website&lt;/a&gt;. The second one is the publicly available final version of chrome, updated to the letest version.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;img src="http://bwjepg.bay.livefilestore.com/y1pt5txS7gweVc1UdS7ErjpIwF3cUmNuT5s1F9lCatp_0CShW8iIxjfXa6TgerhF3kNMbOngWMWWBpwhO_b5DmW0ksw_dOy5W5w/chromeversions.jpg" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;There are some other differences that you immediately notice when you first run the chromium build. The home screen has changes, the url drop down has some ui changes. Will see what other changes are, I may post some more screenshots.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7278525-8156136948242471801?l=joehacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joehacker.blogspot.com/feeds/8156136948242471801/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7278525&amp;postID=8156136948242471801' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/8156136948242471801'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/8156136948242471801'/><link rel='alternate' type='text/html' href='http://joehacker.blogspot.com/2009/08/chromes-versions.html' title='Chrome&apos;s Versions'/><author><name>Muhammad Abubakar</name><uri>https://profiles.google.com/101729345733668263886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-6sHFfgCGkRU/AAAAAAAAAAI/AAAAAAAAAPA/QFyO0sWVzdg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7278525.post-5928292185059277276</id><published>2009-07-17T23:44:00.002+06:00</published><updated>2009-07-18T00:34:59.326+06:00</updated><title type='text'>Generating "chrome.sln" file</title><content type='html'>This post may help you in generating chrome.sln file which you will need to load the chrome browser's source in visual studio 2005 for building it. So you must have noticed that &lt;a href="http://dev.chromium.org/developers/how-tos/build-instructions-windows"&gt;this&lt;/a&gt; page tells you to load the chrome/chrome.sln in vs. But you look and you cannot find it. First make sure that your depot_tools are ready to be used. I used TortoiseSvn to get the source for depot_tools but you can download it also. After getting the depot_tools source you need to add it to the Path environment variable so that you can than use it from within any folder in the chrome's source. So once added, you goto the path where chrome browser's source is which is this chrometrunk\chrome-svn\tarball\chromium\src\chrome on my pc, and write:&lt;div&gt;gclient runhooks --force&lt;/div&gt;&lt;div&gt;after this the output on my console was:&lt;/div&gt;&lt;div&gt;&lt;div&gt;Installing subversion ...&lt;/div&gt;&lt;div&gt;Installing python ...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;________ running 'T:\Downloads\depot_tools\python_bin\python.exe&lt;/div&gt;&lt;div&gt; src/tools/gyp/gyp_dogfood src/build/all.gyp' in &lt;/div&gt;&lt;div&gt;'T:\Downloads\chrometrunk\chrome-svn\tarball\chromium'&lt;/div&gt;&lt;div&gt;Updating projects from gyp files...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After this, your current directory should be filled with the *.vcproj and *.sln files which you know what you want to use them for.&lt;/div&gt;&lt;div&gt;If in case things dont go as smooth as I mentioned up there, you should follow this post, i think it'll help:&lt;/div&gt;&lt;div&gt;&lt;a href="http://groups.google.com/group/chromium-dev/browse_thread/thread/39c13b338a09cd2b"&gt;http://groups.google.com/group/chromium-dev/browse_thread/thread/39c13b338a09cd2b&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;btw the build takes painfully long time :)&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/7278525-5928292185059277276?l=joehacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joehacker.blogspot.com/feeds/5928292185059277276/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7278525&amp;postID=5928292185059277276' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/5928292185059277276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/5928292185059277276'/><link rel='alternate' type='text/html' href='http://joehacker.blogspot.com/2009/07/generating-chromesln-file.html' title='Generating &quot;chrome.sln&quot; file'/><author><name>Muhammad Abubakar</name><uri>https://profiles.google.com/101729345733668263886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-6sHFfgCGkRU/AAAAAAAAAAI/AAAAAAAAAPA/QFyO0sWVzdg/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7278525.post-5747751922926538697</id><published>2009-07-12T21:54:00.002+06:00</published><updated>2009-07-12T22:33:43.718+06:00</updated><title type='text'>is Bing better or Google</title><content type='html'>So I'm eating "toasty cheese crackers" by Aim Biscuits right now. So I decide to search the net for it to know more about them. So as sometimes I do to compare search engines to see how much have they progressed against google, I do similar searches on more than one search engine to find who gets me to the right destination first. So my search term right now is "&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 13px; border-collapse: collapse; white-space: pre; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "&gt;aim biscuits toasty cheese crackers&lt;/span&gt;" without the quotes. I goto google.com and write this search term, and i also open bing.com to write the same sentense/search-phrase. And hit enter on both. They come up with the results. &lt;div&gt;Bing: there is no mention of the Aim biscuits on the first page anywhere. There are pages that seem to be focusing on the word AIM, crackers, toasty etc individually sort of in a way that after few seconds I dont want to think what exactly the search algorithms had in them to finally decide to come with the results that it did.&lt;/div&gt;&lt;div&gt;Google: I wanna start with "amazing". The first link shows a site named tradercity.com with exactly the biscuits I was searching for. The third link (on the first page) refers to a proper web site of what I searched for! Absolutely what I wanted.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;While looking at bing's results before I set my eyes on google's search, I started doubting if this Aim Biscuit company even has a web site of its own, cuz bing didnt mention it on the first page. I dont know and I cannot imagine why if aimbiscuits.com exists, that it is so hard for bing to infer that it should give atleast some weightage to that web site address given my search terms. For the love of computer science, the first 2 words are exactly what the website address is if you combine them! Unbelievable and very disappointing!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Btw, the same goes for the image search on the same terms: bing is completely showing things like it took my search term, trashed it, and randomly picked bunch of images from its image database and threw on me. While with google, it shows atleast 3 images of what I'm eating right now!&lt;/div&gt;&lt;div&gt;This is what microsoft is being so loud about? Give me a break!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7278525-5747751922926538697?l=joehacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joehacker.blogspot.com/feeds/5747751922926538697/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7278525&amp;postID=5747751922926538697' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/5747751922926538697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/5747751922926538697'/><link rel='alternate' type='text/html' href='http://joehacker.blogspot.com/2009/07/is-bing-better-or-google.html' title='is Bing better or Google'/><author><name>Muhammad Abubakar</name><uri>https://profiles.google.com/101729345733668263886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-6sHFfgCGkRU/AAAAAAAAAAI/AAAAAAAAAPA/QFyO0sWVzdg/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7278525.post-8588933414100918517</id><published>2009-06-23T09:32:00.002+06:00</published><updated>2009-06-23T09:50:31.981+06:00</updated><title type='text'>Where are the Merge Modules for Crystal Reports?</title><content type='html'>Long time ago in a galaxy far far away, crystalreports were acquired by something called businessobjects! And some time back BO got acquired by SAP. If you now search for some stuff related to crystal reports and you get links to the businessobjects' website and you try to open them, you are going to be redirected to some page of sap's website. And SAP's website is awefully intimidating (atleast for me). Their search sucks! There crystalreports page is not at all developer-friendly. And the experience gets more frustrating if your internet speed is fluctuating.&lt;br /&gt;&lt;br /&gt;So anyway, the thing is that after a long time I have returned to doing some .net development, as its progressing I had to do some crystal reports development also. Now I wanted to deploy the crystal reports to the server where my website is deployed. I'm using Visual Studio 2005 &amp;amp; the crystal reports that comes with it. So in it the cr version is "10.2.3600.0". Just before declaring that both bing and google sucks at searches (its not there fault I guess?), sap's cr forums revealed &lt;a href="https://www.sdn.sap.com/irj/scn/wiki?path=/display/BOBJ/Crystal+Reports+for+Visual+Studio+.NET+Runtime+Distribution++-++Versions+9.1+to+12.0"&gt;this&lt;/a&gt; page which is *&lt;a href="https://www.sdn.sap.com/irj/scn/wiki?path=/display/BOBJ/Crystal+Reports+for+Visual+Studio+.NET+Runtime+Distribution++-++Versions+9.1+to+12.0"&gt;the&lt;/a&gt;* page for finding out various deployment scenerios. As it turned out, the setup package that I wanted to create, it was already there on my hard drive installed/placed along visual studio 2005, in the form of file named "CRRedist2005_x86.msi". This file is also mentioned on the link I mentioned earlier. I hope that page helps you too in your cr deployments!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7278525-8588933414100918517?l=joehacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joehacker.blogspot.com/feeds/8588933414100918517/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7278525&amp;postID=8588933414100918517' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/8588933414100918517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/8588933414100918517'/><link rel='alternate' type='text/html' href='http://joehacker.blogspot.com/2009/06/where-are-merge-modules-for-crystal.html' title='Where are the Merge Modules for Crystal Reports?'/><author><name>Muhammad Abubakar</name><uri>https://profiles.google.com/101729345733668263886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-6sHFfgCGkRU/AAAAAAAAAAI/AAAAAAAAAPA/QFyO0sWVzdg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7278525.post-7854465307292160116</id><published>2009-06-03T08:04:00.003+06:00</published><updated>2009-06-03T18:19:22.945+06:00</updated><title type='text'>Killing All IE Processes</title><content type='html'>&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; "&gt;&lt;div style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%/normal Georgia, serif; text-align: left; "&gt;&lt;div&gt;&lt;div&gt;During asp.net development its possible that a lot of internet explorer's processes are left running, which you can see from the task manager. This happens when you are starting and closing the browser many times for testing your web application. Some scenerios keep the browsing open and the browser process doesnt shutdown when you close the browser to go back to the debug mode of visual studio (mayeb due to some javascript scripting activities, I noticed because I write a lot of javascript). And I dont restart my computer for days, I only put it to sleep when I am not working on it, so the IE processes just keep on piling up. So sooner or later I have to goto the task manager and kill them all which takes time. So I wrote a little c# code to do this for me, I hope this helps someone else too:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;using System;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;using System.Collections.Generic;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;using System.Text;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;using System.Diagnostics;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;namespace killIE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;  class Program&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;  {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;    static void Main(string[] args)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;    {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;      if (args.Length &gt; 0)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;      {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;        if (args[0].ToLower() == "/l" || args[0].ToLower() == "-l")&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;          new Program(). listprocesses();&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;        else if (args[0].ToLower() == "/k" || args[0].ToLower() == "-k")&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;        {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;          string goodbyemessage = "Quiting. Have a good day.";&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;          Console.WriteLine("finding all IE processes ...");&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;          Process[] ieprocesses = Process.GetProcessesByName("iexplore");&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;          Console.WriteLine("processes found {0}", ieprocesses.Length);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;          if (ieprocesses.Length == 0)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;          {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;            Console.WriteLine("no one to kill. {0}", goodbyemessage);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;            return;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;          }&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;          Console.WriteLine("killing them all ...");&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;          foreach (Process ieproc in ieprocesses)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;          {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;            Console.WriteLine("killing {0} ..", ieproc.Id);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;            ieproc.Kill();&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;          }&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;          Console.WriteLine(goodbyemessage);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;        }&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;      }&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;    }&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;    void listprocesses()&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;    {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;      Process[] ieprocesses = Process.GetProcessesByName("iexplore");&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;      foreach (Process p in ieprocesses)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;      {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;        Console.WriteLine(p.Id);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;      }&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;    }&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;  }&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0); font-family: 'lucida grande'; "&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You can pass /l for the list of IE processes and /k to kill all of them.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&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/7278525-7854465307292160116?l=joehacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joehacker.blogspot.com/feeds/7854465307292160116/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7278525&amp;postID=7854465307292160116' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/7854465307292160116'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/7854465307292160116'/><link rel='alternate' type='text/html' href='http://joehacker.blogspot.com/2009/06/killing-all-ie-processes.html' title='Killing All IE Processes'/><author><name>Muhammad Abubakar</name><uri>https://profiles.google.com/101729345733668263886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-6sHFfgCGkRU/AAAAAAAAAAI/AAAAAAAAAPA/QFyO0sWVzdg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7278525.post-3048564362029983868</id><published>2009-05-11T05:16:00.003+06:00</published><updated>2009-05-14T07:21:38.241+06:00</updated><title type='text'>A detailed review of Windows 7 RC1</title><content type='html'>&lt;a href="http://www.anandtech.com/systems/showdoc.aspx?i=3557"&gt;Anandtech reviews Windows 7 RC1&lt;/a&gt;. Its a detailed review not usually found on other websites. They tell a lot about the new gui, the way the new windows graphics get handled by the gpu, uac, changes in networking, gaming performance etc.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;update: after reading this article, once windows 7 update asks you to install the latest wddm1.1 drivers, you will feel *happy* about installing them rather than just thinking "um, ok, its just something that Microsoft wants me to install to update graphics drivers"&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/7278525-3048564362029983868?l=joehacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joehacker.blogspot.com/feeds/3048564362029983868/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7278525&amp;postID=3048564362029983868' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/3048564362029983868'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/3048564362029983868'/><link rel='alternate' type='text/html' href='http://joehacker.blogspot.com/2009/05/detailed-review-of-windows-7-rc1.html' title='A detailed review of Windows 7 RC1'/><author><name>Muhammad Abubakar</name><uri>https://profiles.google.com/101729345733668263886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-6sHFfgCGkRU/AAAAAAAAAAI/AAAAAAAAAPA/QFyO0sWVzdg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7278525.post-8863258087858964741</id><published>2009-05-04T08:22:00.002+06:00</published><updated>2009-05-04T08:45:27.030+06:00</updated><title type='text'>Windows 7 RC</title><content type='html'>So the windows 7's release candidate is out, umm will be available to everyone on May 5th, although you can get it from various torrent sites. The really really cool thing about the release is first - its a production quality OS, second - you can use it for 1 year and a lil bit more (so essentially its free) ! So you have it so grab it! Btw I also wanted to say that the hatred for Windows Vista on the Internet really irritates me, because I have been using windows Vista for more than one year (it came installed on my laptop) and in all that time I have never wished to go back to XP. My laptop right now is a cor 2 duo 2.0ghz, 2gb ram, 120gb hdd, wifi, etc, and Vista runs really well (and I use sql server 2005, asp.net, IIS, and c++/C# on this machine for my day job). Of course more faster and intuitive OS is most welcome, but I think Vista deserves much more good words about it than is the status of the views on the web right now about it. But its good now that Windows 7 is available for you, we are seeing a lot of positive comments about Windows 7 on the Internet. Happy 7!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7278525-8863258087858964741?l=joehacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joehacker.blogspot.com/feeds/8863258087858964741/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7278525&amp;postID=8863258087858964741' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/8863258087858964741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/8863258087858964741'/><link rel='alternate' type='text/html' href='http://joehacker.blogspot.com/2009/05/windows-7-rc.html' title='Windows 7 RC'/><author><name>Muhammad Abubakar</name><uri>https://profiles.google.com/101729345733668263886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-6sHFfgCGkRU/AAAAAAAAAAI/AAAAAAAAAPA/QFyO0sWVzdg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7278525.post-9159030909121614670</id><published>2009-02-06T15:38:00.002+05:00</published><updated>2009-02-06T22:55:40.939+05:00</updated><title type='text'>A good article on DirectX 11</title><content type='html'>A very good article at &lt;a href="http://www.anandtech.com/video/showdoc.aspx?i=3507&amp;amp;p=1"&gt;Anandtech&lt;/a&gt; for people who play games or are interested in game technologies.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7278525-9159030909121614670?l=joehacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joehacker.blogspot.com/feeds/9159030909121614670/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7278525&amp;postID=9159030909121614670' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/9159030909121614670'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/9159030909121614670'/><link rel='alternate' type='text/html' href='http://joehacker.blogspot.com/2009/02/good-article-on-directx-11.html' title='A good article on DirectX 11'/><author><name>Muhammad Abubakar</name><uri>https://profiles.google.com/101729345733668263886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-6sHFfgCGkRU/AAAAAAAAAAI/AAAAAAAAAPA/QFyO0sWVzdg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7278525.post-8442029815956352766</id><published>2008-10-18T16:42:00.003+06:00</published><updated>2008-10-18T16:54:23.347+06:00</updated><title type='text'>Booting Vista from Grub Prompt</title><content type='html'>I have fedora core 9 and Vista on my laptop. Grub is the boot loader and it gives me the options to boot fedora or vista. Vista is installed on the first partition and fedora on 4th partition in order. Today I just deleted the partition which has fedora on it (intentionally messing up my pc), and than when I booted, instead of getting the gui version of the grub boot loader, I was stopped at a grub command prompt. Now I instantly knew I clearly messed things up, but the great thing is that this cool black command line is offering me *something* at least. So now I had to boot the Vista OS through this grub prompt. I booted up my desktop and started searching the net for how can I boot vista from grub prompt. I realized that it was pretty easy to do. Following is what I had to write on the command prompt (4 lines):&lt;br /&gt;root (hd0,0)&lt;br /&gt;rootnoverify (hd0,0)&lt;br /&gt;chainloader +1&lt;br /&gt;boot&lt;br /&gt;&lt;br /&gt;and after your write the boot command, you will see Vista starting to boot.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7278525-8442029815956352766?l=joehacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joehacker.blogspot.com/feeds/8442029815956352766/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7278525&amp;postID=8442029815956352766' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/8442029815956352766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/8442029815956352766'/><link rel='alternate' type='text/html' href='http://joehacker.blogspot.com/2008/10/booting-vista-from-grub-prompt.html' title='Booting Vista from Grub Prompt'/><author><name>Muhammad Abubakar</name><uri>https://profiles.google.com/101729345733668263886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-6sHFfgCGkRU/AAAAAAAAAAI/AAAAAAAAAPA/QFyO0sWVzdg/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7278525.post-4956225463397599364</id><published>2008-06-03T03:03:00.001+06:00</published><updated>2008-06-03T03:10:02.975+06:00</updated><title type='text'>encoding urls</title><content type='html'>So I work on this application which has all its code in c++. I need to communicate with an http server alot, so i frequently send data through wininet win32 apis (no mfc wrappers). So anyone who sends raw text data knows that there are some kind of characters that really messes up your requests to the server, like "#", {, &amp;amp; etc. If you want to deal with this data and convert it to something and is legit according to the http specs, you need to do a conversion called url encoding (i think :p). Its basically pretty simple, all that is needed to be done is convert the nasty characters to their hex ascii equivilent and prefix it with a '%' sign. So for example  if you have a new line as \r\n, it should become %0D%0A, which is 0D for \r and 0A for \n respectively. So as I was searching for an api that could make this easy for me I found some interestingly named api called InternetCanonicalizeUrl. I used this api and it helped a little, but it does not work for all the nasty characters. For example the first weird thing that you discover about this api is that it strips the \r\n from your data if they exist anywhere so your data is left with no line breaks (not to mention "#"). So a friend suggested that why not we write a code to convert all the characters to their ascii hex equivilent and leave the obvious ones like a-z and 0-9 as they are. So we came up with this simple code to do the conversion and it works so far for all the data that we our sending to our server:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#define ENCODE_BUF_LENGTH 10000&lt;br /&gt;void UrlEncodePlz (char * src, char * destallocatedbuf)&lt;br /&gt;{&lt;br /&gt;  char * buf = src;&lt;br /&gt;  char tmpbuf[ENCODE_BUF_LENGTH];&lt;br /&gt;  memset(tmpbuf, 0, ENCODE_BUF_LENGTH);&lt;br /&gt;  char cbuf[10];&lt;br /&gt;  for (int i = 0, x=0; i&lt; strlen (buf); i++)&lt;br /&gt;  {&lt;br /&gt;    char c = buf[i];&lt;br /&gt;    if ( ((c&gt;='a' &amp;amp;&amp;amp; c&lt;='z') || (c&gt;='A' &amp;amp;&amp;amp; c&lt;='Z')&lt;br /&gt;      || (c&gt;='0' &amp;amp;&amp;amp; c&lt;='9')))&lt;br /&gt;    {&lt;br /&gt;      tmpbuf [x++] = buf[i];&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;    else&lt;br /&gt;    {&lt;br /&gt;      sprintf (cbuf, "%%%02X", c);&lt;br /&gt;      strcat (tmpbuf, cbuf);&lt;br /&gt;      x+=strlen(cbuf);&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  strcpy(destallocatedbuf, tmpbuf);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Ok some words about the above code: it may not seem so efficient in terms of the size of the tmpbuf that I took which is 10000. Its just something I choose, you can of course pick any number that suits you, but know this that for a single \n character the hex equivilent is %0A which is 3 characters. I am really bad in naming functions and variables (5 years of programming and yes I still dont do much of the so called *engineering* formalities well). I think this code is going to give enough good shape to your data that will guarantee its safe delivery to the server.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7278525-4956225463397599364?l=joehacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joehacker.blogspot.com/feeds/4956225463397599364/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7278525&amp;postID=4956225463397599364' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/4956225463397599364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/4956225463397599364'/><link rel='alternate' type='text/html' href='http://joehacker.blogspot.com/2008/06/encoding-urls.html' title='encoding urls'/><author><name>Muhammad Abubakar</name><uri>https://profiles.google.com/101729345733668263886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-6sHFfgCGkRU/AAAAAAAAAAI/AAAAAAAAAPA/QFyO0sWVzdg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7278525.post-2074650906968753777</id><published>2008-04-09T11:09:00.002+05:00</published><updated>2008-04-09T11:50:21.678+05:00</updated><title type='text'>Linux Kernel Dev Stats</title><content type='html'>So if you want to know how many organisations and individuals are contributing to the linux kernel, read &lt;a href="http://linux-foundation.org/weblogs/press/2008/03/31/linux-foundation-publishes-study-on-linux-development-statistics-who-writes-linux-and-who-supports-it/"&gt;this&lt;/a&gt; (the original report) and &lt;a href="http://www.linux-watch.com/news/NS6229131777.html"&gt;this&lt;/a&gt;. And according to &lt;a href="http://www.cnet.com/8301-13505_1-9907485-16.html"&gt;this&lt;/a&gt; news.com article: "&lt;span style="color:#000066;"&gt;As detailed statistics demonstrate, the Linux kernel is perhaps the world's largest, most distributed development effort, reflecting its increasing importance to an ever-widening array of disparate parties&lt;/span&gt;".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7278525-2074650906968753777?l=joehacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joehacker.blogspot.com/feeds/2074650906968753777/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7278525&amp;postID=2074650906968753777' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/2074650906968753777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/2074650906968753777'/><link rel='alternate' type='text/html' href='http://joehacker.blogspot.com/2008/04/linux-kernel-dev-stats.html' title='Linux Kernel Dev Stats'/><author><name>Muhammad Abubakar</name><uri>https://profiles.google.com/101729345733668263886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-6sHFfgCGkRU/AAAAAAAAAAI/AAAAAAAAAPA/QFyO0sWVzdg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7278525.post-2009282673523104021</id><published>2008-03-07T00:55:00.002+05:00</published><updated>2008-03-07T01:03:52.289+05:00</updated><title type='text'>IE 8 beta 1 ready for download</title><content type='html'>Click &lt;a href="http://www.microsoft.com/windows/products/winfamily/ie/ie8/readiness/Install.htm"&gt;here&lt;/a&gt; to download Internet Explorer 8. Read &lt;a href="http://www.news.com/8301-13860_3-9886426-56.html?tag=nl.e703"&gt;this&lt;/a&gt; page also.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7278525-2009282673523104021?l=joehacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joehacker.blogspot.com/feeds/2009282673523104021/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7278525&amp;postID=2009282673523104021' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/2009282673523104021'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/2009282673523104021'/><link rel='alternate' type='text/html' href='http://joehacker.blogspot.com/2008/03/ie-8-beta-1-ready-for-download.html' title='IE 8 beta 1 ready for download'/><author><name>Muhammad Abubakar</name><uri>https://profiles.google.com/101729345733668263886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-6sHFfgCGkRU/AAAAAAAAAAI/AAAAAAAAAPA/QFyO0sWVzdg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7278525.post-4013943119570808487</id><published>2008-03-06T11:09:00.001+05:00</published><updated>2008-03-06T11:13:42.431+05:00</updated><title type='text'>Microsoft opens source of Singularity OS</title><content type='html'>The source code for singularity operating system is open for research and non-commercial uses. It can be downloaded from codeplex &lt;a href="http://www.codeplex.com/singularity"&gt;http://www.codeplex.com/singularity&lt;/a&gt;. A 60mb download.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7278525-4013943119570808487?l=joehacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joehacker.blogspot.com/feeds/4013943119570808487/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7278525&amp;postID=4013943119570808487' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/4013943119570808487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/4013943119570808487'/><link rel='alternate' type='text/html' href='http://joehacker.blogspot.com/2008/03/microsoft-opens-source-of-singularity.html' title='Microsoft opens source of Singularity OS'/><author><name>Muhammad Abubakar</name><uri>https://profiles.google.com/101729345733668263886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-6sHFfgCGkRU/AAAAAAAAAAI/AAAAAAAAAPA/QFyO0sWVzdg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7278525.post-8039223079170359849</id><published>2008-01-09T10:53:00.000+05:00</published><updated>2008-01-09T11:34:14.574+05:00</updated><title type='text'>Java Damaging for Students</title><content type='html'>I couldnt agree more. These two links i'm giving here. &lt;a href="http://www.stsc.hill.af.mil/CrossTalk/2008/01/0801DewarSchonberg.html"&gt;This one&lt;/a&gt; I followed from slashdot. Joel wrote "&lt;a href="http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html"&gt;the perils of javaschools&lt;/a&gt;" sometime back, beautiful article, awesome detailed explanation of why not java at schools.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7278525-8039223079170359849?l=joehacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joehacker.blogspot.com/feeds/8039223079170359849/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7278525&amp;postID=8039223079170359849' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/8039223079170359849'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/8039223079170359849'/><link rel='alternate' type='text/html' href='http://joehacker.blogspot.com/2008/01/java-damaging-for-students.html' title='Java Damaging for Students'/><author><name>Muhammad Abubakar</name><uri>https://profiles.google.com/101729345733668263886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-6sHFfgCGkRU/AAAAAAAAAAI/AAAAAAAAAPA/QFyO0sWVzdg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7278525.post-2621584897236800958</id><published>2007-12-05T17:01:00.000+05:00</published><updated>2007-12-05T17:30:08.137+05:00</updated><title type='text'>Dx Refactor for C++</title><content type='html'>For any one writing code in visual c++ 2k5, downloading "Refactor for C++" is a must. Its amazing to say the least, and its *free*. Get it from &lt;a href="http://www.devexpress.com/Products/NET/IDETools/RefactorCPP/"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7278525-2621584897236800958?l=joehacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joehacker.blogspot.com/feeds/2621584897236800958/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7278525&amp;postID=2621584897236800958' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/2621584897236800958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/2621584897236800958'/><link rel='alternate' type='text/html' href='http://joehacker.blogspot.com/2007/12/dx-refactor-for-c.html' title='Dx Refactor for C++'/><author><name>Muhammad Abubakar</name><uri>https://profiles.google.com/101729345733668263886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-6sHFfgCGkRU/AAAAAAAAAAI/AAAAAAAAAPA/QFyO0sWVzdg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7278525.post-6191758859416113699</id><published>2007-06-30T15:27:00.000+05:00</published><updated>2007-06-30T15:36:50.187+05:00</updated><title type='text'>Good ways to join an open source project</title><content type='html'>At slashdot, somebody asked a really nice question that frequently pops in a lot of people's mind. Its about advice on how to join an open source project. A lot of open source developers reply in comments. Read this: &lt;a href="http://ask.slashdot.org/article.pl?sid=07/06/22/1526234"&gt;http://ask.slashdot.org/article.pl?sid=07/06/22/1526234&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7278525-6191758859416113699?l=joehacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joehacker.blogspot.com/feeds/6191758859416113699/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7278525&amp;postID=6191758859416113699' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/6191758859416113699'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/6191758859416113699'/><link rel='alternate' type='text/html' href='http://joehacker.blogspot.com/2007/06/good-ways-to-join-open-source-project.html' title='Good ways to join an open source project'/><author><name>Muhammad Abubakar</name><uri>https://profiles.google.com/101729345733668263886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-6sHFfgCGkRU/AAAAAAAAAAI/AAAAAAAAAPA/QFyO0sWVzdg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7278525.post-113221315167607971</id><published>2005-11-17T12:16:00.000+05:00</published><updated>2005-11-17T12:39:11.686+05:00</updated><title type='text'>Dont Use Thread.Suspend() Method</title><content type='html'>The &lt;a href="http://msdn2.microsoft.com/en-us/library/system.threading.thread.aspx"&gt;Thread&lt;/a&gt;.&lt;a href="http://msdn2.microsoft.com/en-us/library/system.threading.thread.suspend.aspx"&gt;Suspend&lt;/a&gt; documentation puts a nice easy to understand note:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color:#000066;"&gt;"Do not use the Suspend and Resume methods to synchronize the activities of threads. You have no way of knowing what code a thread is executing when you suspend it. If you suspend a thread while it holds locks during a security permission evaluation, other threads in the AppDomain might be blocked. If you suspend a thread while it is executing a class constructor, other threads in the AppDomain that attempt to use that class are blocked. Deadlocks can occur very easily."&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color:#000066;"&gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;When you write "&lt;span style="font-family:courier new;"&gt;Thread.CurrentThread.Suspend( );&lt;/span&gt;" in the editor &amp;amp; build, you'll get the following warning:&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#000066;"&gt;&lt;em&gt;'System.Threading.Thread.Suspend()' is obsolete: 'Thread.Suspend has been deprecated. Please use other classes in System.Threading, such as Monitor, Mutex, Event, and Semaphore, to synchronize Threads or protect resources. &lt;/em&gt;&lt;/span&gt;&lt;a href="http://go.microsoft.com/fwlink/?linkid=14202"&gt;&lt;span style="color:#000066;"&gt;&lt;em&gt;http://go.microsoft.com/fwlink/?linkid=14202'&lt;/em&gt;&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7278525-113221315167607971?l=joehacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joehacker.blogspot.com/feeds/113221315167607971/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7278525&amp;postID=113221315167607971' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/113221315167607971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/113221315167607971'/><link rel='alternate' type='text/html' href='http://joehacker.blogspot.com/2005/11/dont-use-threadsuspend-method.html' title='Dont Use Thread.Suspend() Method'/><author><name>Muhammad Abubakar</name><uri>https://profiles.google.com/101729345733668263886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-6sHFfgCGkRU/AAAAAAAAAAI/AAAAAAAAAPA/QFyO0sWVzdg/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7278525.post-113023584152931545</id><published>2005-10-25T15:20:00.000+05:00</published><updated>2005-10-25T15:24:01.536+05:00</updated><title type='text'>Ajax.net free library with source code</title><content type='html'>Check this &lt;a href="http://ajax.schwarz-interactive.de/csharpsample/default.aspx"&gt;Ajax library&lt;/a&gt; which comes free with source code. Its available for 1.1 and 2.0 versions of the .net. I have yet to check it out but the examples on the page looks really cool.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7278525-113023584152931545?l=joehacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joehacker.blogspot.com/feeds/113023584152931545/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7278525&amp;postID=113023584152931545' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/113023584152931545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/113023584152931545'/><link rel='alternate' type='text/html' href='http://joehacker.blogspot.com/2005/10/ajaxnet-free-library-with-source-code.html' title='Ajax.net free library with source code'/><author><name>Muhammad Abubakar</name><uri>https://profiles.google.com/101729345733668263886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-6sHFfgCGkRU/AAAAAAAAAAI/AAAAAAAAAPA/QFyO0sWVzdg/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7278525.post-113013394836944415</id><published>2005-10-24T10:40:00.000+05:00</published><updated>2005-10-24T11:15:01.430+05:00</updated><title type='text'>Quake III Source Code</title><content type='html'>I've been playing &lt;a href="http://www.idsoftware.com/games/quake/quake3-arena/"&gt;Quake III&lt;/a&gt; for almost four years. Few minutes back I was on the &lt;a href="http://www.idsoftware.com"&gt;Id&lt;/a&gt; web site and there were lot of great news. Most exciting is the &lt;a href="ftp://ftp.idsoftware.com/idstuff/source/quake3-1.32b-source.zip"&gt;source code release of quake III&lt;/a&gt; under GPL license. You can easily build the source code in Visual Studio 2k3 and also on Unix systems I believe. Next exciting news is that work on &lt;a href="http://www.quake4game.com/"&gt;Quake 4&lt;/a&gt; for PC has been done, its probably shipping by now. Waiting it to be available in my city. Next exciting news :) is that one of the best all time first-person-shooter game &lt;a href="http://www.idsoftware.com/games/wolfenstein/rtcw/"&gt;Return to Castle Wolfenstein&lt;/a&gt; has gone in development for &lt;a href="http://www.xbox.com/en-US/xbox360/factsheet.htm"&gt;XBox 360&lt;/a&gt; &amp;amp; PC. Thats simply awesome. Cant even imagine how id's latest graphical engine is going to perform on the so-powerful hardware of xbox 360. It'll definitely be a killer game. Next big news is that the &lt;a href="http://www.doommovie.com/"&gt;Doom movie&lt;/a&gt; has been released. Great to know that "The Rock" is the main action guy in it. I like all his movies and he is a real good actor.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7278525-113013394836944415?l=joehacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joehacker.blogspot.com/feeds/113013394836944415/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7278525&amp;postID=113013394836944415' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/113013394836944415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/113013394836944415'/><link rel='alternate' type='text/html' href='http://joehacker.blogspot.com/2005/10/quake-iii-source-code.html' title='Quake III Source Code'/><author><name>Muhammad Abubakar</name><uri>https://profiles.google.com/101729345733668263886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-6sHFfgCGkRU/AAAAAAAAAAI/AAAAAAAAAPA/QFyO0sWVzdg/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7278525.post-112928851236423073</id><published>2005-10-14T16:03:00.000+05:00</published><updated>2005-10-14T16:15:12.373+05:00</updated><title type='text'>Delegates to Value Type Members in Rotor 1.0</title><content type='html'>In &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=3A1C93FA-7462-47D0-8E56-8DD34C6292F0&amp;displaylang=en"&gt;rotor 1.0&lt;/a&gt;, you cannot call a value type's struct method through a delegate. This is a restriction in v1.0 of the .net framework that was removed from the later versions. For example, if you compile and execute the following code:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#330099;"&gt;using System;&lt;br /&gt;namespace intro&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#330099;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#330099;"&gt;  struct mystruct&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#330099;"&gt;  {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#330099;"&gt;    public void valuetypemethod()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#330099;"&gt;    {&lt;br /&gt;      Console.WriteLine("method called from delegate.");&lt;br /&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#330099;"&gt;  }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#330099;"&gt;  class CMain&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#330099;"&gt;  {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#330099;"&gt;    public delegate void dlgassign ();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#330099;"&gt;    public static void Main()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#330099;"&gt;    {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#330099;"&gt;       mystruct at = new mystruct();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#330099;"&gt;       dlgassign fnptr = new dlgassign ( at.valuetypemethod );&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#330099;"&gt;       fnptr ();&lt;br /&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#330099;"&gt;  }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#330099;"&gt;}&lt;br /&gt;&lt;/span&gt;It'll give you the following error:&lt;br /&gt;----------&lt;br /&gt;Unhandled Exception: System.NotSupportedException: Delegates on value classes can only be formed on virtual methods&lt;br /&gt;   at System.Delegate.NeverCallThis(Object target, IntPtr slot)&lt;br /&gt;   at intro.CMain.Main()&lt;br /&gt;----------&lt;br /&gt;If you look at where it is raised, you'll come to \sscli\clr\src\vm\comdelegate.cpp &lt;span style="font-family:courier new;"&gt;COMDelegate::DelegateConstruct&lt;/span&gt; which is declared as&lt;br /&gt;&lt;br /&gt;------------&lt;br /&gt;&lt;span style="font-family:courier new;color:#006600;"&gt;// This is the single constructor for all Delegates.  The compiler&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#006600;"&gt;//  doesn't provide an implementation of the Delegate constructor.  We&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#006600;"&gt;//  provide that implementation through an ECall call to this method.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#330099;"&gt;FCIMPL3(void,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#330099;"&gt;   COMDelegate::DelegateConstruct,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#330099;"&gt;   ReflectBaseObject* refThisUNSAFE,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#330099;"&gt;   Object* targetUNSAFE,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#330099;"&gt;   SLOT method)&lt;br /&gt;&lt;/span&gt;------------&lt;br /&gt;The following code raises the error:&lt;br /&gt;&lt;span style="font-family:courier new;color:#330099;"&gt;pMeth = pTarg-&gt;GetUnboxingMethodDescForValueClassMethod(pMeth);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#330099;"&gt;if (pMeth == NULL)  COMPlusThrow(kNotSupportedException,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#330099;"&gt;            L"NotSupported_NonVirtualValueClassDelegates");&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;if you comment the line:&lt;br /&gt;&lt;span style="font-family:courier new;color:#330099;"&gt;pMeth = pTarg-&gt;GetUnboxingMethodDescForValueClassMethod(pMeth);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;and than build corlibs again, it fixes the error. To quickly rebuild the sscli with this change, goto \sscli\clr\src\vm and type "build -c". Once the build is complete, goto \sscli\clr\src and type "build" (without -c option) and press enter. This will build the sscli with your changes. Now try running the above application again (you do not need to the compile the exe again with csc because the error was generated by the vm and we just built it again). It'll give the following message:&lt;br /&gt;method called from delegate.&lt;br /&gt;&lt;br /&gt;Now you can have delegates to value type's methods and call them too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7278525-112928851236423073?l=joehacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joehacker.blogspot.com/feeds/112928851236423073/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7278525&amp;postID=112928851236423073' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/112928851236423073'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/112928851236423073'/><link rel='alternate' type='text/html' href='http://joehacker.blogspot.com/2005/10/delegates-to-value-type-members-in.html' title='Delegates to Value Type Members in Rotor 1.0'/><author><name>Muhammad Abubakar</name><uri>https://profiles.google.com/101729345733668263886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-6sHFfgCGkRU/AAAAAAAAAAI/AAAAAAAAAPA/QFyO0sWVzdg/s512-c/photo.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7278525.post-112806342918451055</id><published>2005-09-30T11:37:00.000+05:00</published><updated>2005-09-30T11:59:15.836+05:00</updated><title type='text'>Building Rotor 1.0 with Whidbey Beta 2</title><content type='html'>I recently built rotor 1.0 with visual studio .net 2005 (whidbey) beta 2. Thanks to Barry and Lorenzo for helping me out do this. You can read the posts on &lt;a href="http://discuss.develop.com/archives/wa.exe?A1=ind0509d&amp;amp;L=dotnet-rotor"&gt;discuss.develop&lt;/a&gt;. I created a little patch which you can just paste over your sscli directory and than build again and than everything should be working fine. The build is done on Windows 2000 pro sp4. The things that I tested are C# compiler, clix, few samples, ilasm, ildasm, and cordbg. I have to do some more work on the patch cuz it contains a lot of redundant files. When it'll be done I'll let everyone know at rotor newsgroup at discuss.develop. If you need it earlier than that and dont have any problem with working with the rough version of the patch you can just email me and I'll send you the zip file containing the necessary things. Its around 700k. I'm used to building sscli piece-by-piece ie: building pal, than build.exe, than binplace, than resourcecompiler, than palrt, than \clr\src .... and so on. I think u'll have to do the same or I may include a batch file to do so. But instructions will be easy to follow.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7278525-112806342918451055?l=joehacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joehacker.blogspot.com/feeds/112806342918451055/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7278525&amp;postID=112806342918451055' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/112806342918451055'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/112806342918451055'/><link rel='alternate' type='text/html' href='http://joehacker.blogspot.com/2005/09/building-rotor-10-with-whidbey-beta-2.html' title='Building Rotor 1.0 with Whidbey Beta 2'/><author><name>Muhammad Abubakar</name><uri>https://profiles.google.com/101729345733668263886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-6sHFfgCGkRU/AAAAAAAAAAI/AAAAAAAAAPA/QFyO0sWVzdg/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7278525.post-112771340597595050</id><published>2005-09-26T10:39:00.000+05:00</published><updated>2005-09-26T10:43:25.980+05:00</updated><title type='text'>Treo is now Powered by Windows :-)</title><content type='html'>Palm to release there &lt;a href="http://www.miami.com/mld/miamiherald/business/technology/12731448.htm"&gt;latest Treo 700w&lt;/a&gt; based on Windows operating system. Thats the way to go Palm !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7278525-112771340597595050?l=joehacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joehacker.blogspot.com/feeds/112771340597595050/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7278525&amp;postID=112771340597595050' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/112771340597595050'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/112771340597595050'/><link rel='alternate' type='text/html' href='http://joehacker.blogspot.com/2005/09/treo-is-now-powered-by-windows.html' title='Treo is now Powered by Windows :-)'/><author><name>Muhammad Abubakar</name><uri>https://profiles.google.com/101729345733668263886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-6sHFfgCGkRU/AAAAAAAAAAI/AAAAAAAAAPA/QFyO0sWVzdg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7278525.post-112652574074736726</id><published>2005-09-12T16:30:00.000+05:00</published><updated>2005-09-12T16:49:01.123+05:00</updated><title type='text'>I cant do "this.Cursor" !!!</title><content type='html'>Yea I know. In .net compact framework you cant do a this.Cursor to set a cursor for your window. Instead its hidden in System.Windows.Form.Cursor (static style !!!!!):&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;System.Windows.Forms.Cursor.Current = Cursors.WaitCursor;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;System.Windows.Forms.Cursor.Current = Cursors.Default ;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Oh btw, just a little tip for using whidbey beta2 IDE: you can access "Surround" feature through keyboard by Ctrl+K+S, and "Insert Snippet" by Ctrl+K+X. Makes writing code pretty fast.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7278525-112652574074736726?l=joehacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joehacker.blogspot.com/feeds/112652574074736726/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7278525&amp;postID=112652574074736726' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/112652574074736726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/112652574074736726'/><link rel='alternate' type='text/html' href='http://joehacker.blogspot.com/2005/09/i-cant-do-thiscursor.html' title='I cant do &quot;this.Cursor&quot; !!!'/><author><name>Muhammad Abubakar</name><uri>https://profiles.google.com/101729345733668263886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-6sHFfgCGkRU/AAAAAAAAAAI/AAAAAAAAAPA/QFyO0sWVzdg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7278525.post-112625186950546962</id><published>2005-09-09T12:14:00.000+05:00</published><updated>2005-09-09T12:44:30.280+05:00</updated><title type='text'>Generating Guids on a Pocket PC</title><content type='html'>In the .net compact framework 1.0 if you want to generate a GUID, there is no class/struct that can help you do that. So you have to come up with your own ways. One good example can be found in &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetcomp/html/PPCGuidGen.asp"&gt;this&lt;/a&gt; article on msdn. Now in the latest .net cf version 2.0, the &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemguidclasstopic.asp"&gt;System.Guid&lt;/a&gt; struct has been added which works just like its desktop counterpart.&lt;br /&gt;&lt;br /&gt;Now why would u want to generate guids while programming for pocket pc? Thats a long (actually short) story that I'll blog about some time in the future.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7278525-112625186950546962?l=joehacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joehacker.blogspot.com/feeds/112625186950546962/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7278525&amp;postID=112625186950546962' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/112625186950546962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/112625186950546962'/><link rel='alternate' type='text/html' href='http://joehacker.blogspot.com/2005/09/generating-guids-on-pocket-pc.html' title='Generating Guids on a Pocket PC'/><author><name>Muhammad Abubakar</name><uri>https://profiles.google.com/101729345733668263886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-6sHFfgCGkRU/AAAAAAAAAAI/AAAAAAAAAPA/QFyO0sWVzdg/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7278525.post-112618629684627213</id><published>2005-09-08T18:29:00.000+05:00</published><updated>2005-09-08T18:31:36.850+05:00</updated><title type='text'>WinFS Beta 1 released</title><content type='html'>Read again its not WinFX, it WinFS: The file system/platform. Its located &lt;a href="http://msdn.microsoft.com/data/WinFS/default.aspx"&gt;here&lt;/a&gt;. &lt;a href="http://blogs.msdn.com/WinFS/default.aspx"&gt;This&lt;/a&gt; is the blog site. But only available for msdn subscribers :(.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7278525-112618629684627213?l=joehacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joehacker.blogspot.com/feeds/112618629684627213/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7278525&amp;postID=112618629684627213' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/112618629684627213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/112618629684627213'/><link rel='alternate' type='text/html' href='http://joehacker.blogspot.com/2005/09/winfs-beta-1-released.html' title='WinFS Beta 1 released'/><author><name>Muhammad Abubakar</name><uri>https://profiles.google.com/101729345733668263886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-6sHFfgCGkRU/AAAAAAAAAAI/AAAAAAAAAPA/QFyO0sWVzdg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7278525.post-112590513062463254</id><published>2005-09-05T12:21:00.000+05:00</published><updated>2005-09-05T12:25:30.630+05:00</updated><title type='text'>Pocket PC Emulator; Sharing files on desktop, and ActiveSync connectivity</title><content type='html'>&lt;em&gt;(All following information is valid for viusal studio.net 2005 beta 2)&lt;/em&gt;&lt;br /&gt;&lt;strong&gt;Accessing Desktop files on Pocket PC Emulator:&lt;/strong&gt;  While developing the pocket pc apps on emulator you may want to manually copy files to the emulator's memory if for some reason you cant do it through activesync. Its really simple. While pocket pc emulator is running, through the File menu, click "configure". On the first "General" tab you'll see a "Shared folder" text box. Simply give the path where you want to share files. This path actually becomes your storage card on emulator. Now the files that you place in the shared folder can be accessed through the pocket pc "File Explorer"'s "storage card" icon at the bottom of file explorer.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Emulator's Connectivity with ActiveSync:&lt;/strong&gt; As I looked for this information, the community is using ActiveSync 4.0 for emulator's connectivity. This &lt;a href="http://msdn.microsoft.com/mobility/windowsmobile/howto/windowsmobile5/install/default.aspx"&gt;link&lt;/a&gt; is important for all these downloads. As the page suggests, you need to download ActiveSync 4 and the DMA update patch. What the patch does is carries out all the emulator, vs.net, and active sync communications through DMA instead of doing it with tcp/ip. Microsoft says its a more efficient way of communications which utilizes COM. And if you are also facing this problem of not being able to debug your apps on vs.net, this dma download should fix this problem (btw the dma download is like 80+ mb!) Now all communications settings should be using DMA. In vsnet 2k5, goto Tools-&gt;Options. Select "Device tools" and select "Devices". Select your device/emulator from the "Devices" listbox and click properties. "Trasposrt" drop down should be set to DMA. If you now click "Emulator Options" button on the same dialog, goto "network" tab and on my network tab nothing is checked, so I recommend that you also uncheck all the checkboxes if any is selected. Click all the Ok buttons! Now in your activesync File menu: click the "connection settings". The drop down that mentions "allow connections to one of the following", should have DMA selected. I think now everything is done in case i've not missed any detail. Restart your emulator (maybe soft resetting it, you wont lose any settings or data, or just close and open again). After restarting your emulator goto vsnet's Tools-&gt;"Device Emulator Manager". In the Available emulators you'll see the one you are using and a play icon with it. Means its running. Now right-click it and click on "Cradle". This will emulate as if you have placed your device on the cradle, just like you will do with a physical device. Now the activesync should be active and in few seconds connected to your emulator. If you are not connected, try restarting things, it should work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7278525-112590513062463254?l=joehacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joehacker.blogspot.com/feeds/112590513062463254/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7278525&amp;postID=112590513062463254' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/112590513062463254'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/112590513062463254'/><link rel='alternate' type='text/html' href='http://joehacker.blogspot.com/2005/09/pocket-pc-emulator-sharing-files-on.html' title='Pocket PC Emulator; Sharing files on desktop, and ActiveSync connectivity'/><author><name>Muhammad Abubakar</name><uri>https://profiles.google.com/101729345733668263886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-6sHFfgCGkRU/AAAAAAAAAAI/AAAAAAAAAPA/QFyO0sWVzdg/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7278525.post-112123239868687531</id><published>2005-07-13T09:33:00.000+05:00</published><updated>2005-07-13T10:26:38.716+05:00</updated><title type='text'>Proxy Authentication Required</title><content type='html'>Check this: You are in your office and sitting in a LAN environment-&gt; accessing your internet through a proxy server-&gt; writing code using some cool .net language-&gt; using a &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemnet.asp"&gt;System.Net&lt;/a&gt; namespace-&gt; using code to access a web resource (maybe some html page) and you write the following code:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color:#6633ff;"&gt;private void&lt;/span&gt; button1_Click(&lt;span style="color:#6633ff;"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;br /&gt;{&lt;br /&gt;WebClient client = &lt;span style="color:#6633ff;"&gt;new&lt;/span&gt; WebClient();&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;byte&lt;/span&gt; [] b = client.DownloadData( textBox1.Text );&lt;br /&gt;textBox2.Text = System.Text.Encoding.ASCII.GetString(b);&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;and when this code runs, in few seconds you see a horrible &amp; annoying exception thrown on your face by the IDE saying : "&lt;strong&gt;The remote server returned an error: (407) Proxy Authentication Required&lt;/strong&gt;.". What do you do? Well its really simple. As you can see in the message, you need to provide authetication. And if you write the following little magical code:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color:#6633ff;"&gt;void&lt;/span&gt; SetProxyInfo()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;WebProxy p =&lt;span style="color:#6633ff;"&gt;new&lt;/span&gt; WebProxy("&lt;/span&gt;&lt;a href="http://proxy1:8080/"&gt;&lt;span style="font-family:courier new;"&gt;http://proxy1:8080&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:courier new;"&gt;", true,null, &lt;span style="color:#6633ff;"&gt;new&lt;/span&gt; NetworkCredential( "yourusernamehere","yourpassword","thedomainurusing"));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;GlobalProxySelection.Select = p;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Call this function from anywhere &lt;em&gt;before&lt;/em&gt; doing the web-access thing and you wont get that 407 message again :).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7278525-112123239868687531?l=joehacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joehacker.blogspot.com/feeds/112123239868687531/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7278525&amp;postID=112123239868687531' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/112123239868687531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/112123239868687531'/><link rel='alternate' type='text/html' href='http://joehacker.blogspot.com/2005/07/proxy-authentication-required.html' title='Proxy Authentication Required'/><author><name>Muhammad Abubakar</name><uri>https://profiles.google.com/101729345733668263886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-6sHFfgCGkRU/AAAAAAAAAAI/AAAAAAAAAPA/QFyO0sWVzdg/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7278525.post-111786771027197689</id><published>2005-06-04T11:42:00.000+05:00</published><updated>2005-06-04T11:48:30.276+05:00</updated><title type='text'>Tab Completion in Windows 2000</title><content type='html'>Windows XP's command prompt completes file/folder name when u press tab key. Windows 2000 by default doesnt provide this feature. But its there and u need to enable it from registry. Follow the steps below:&lt;br /&gt;&lt;br /&gt;1- For one thing, Make sure you run "cmd", not "command" to get to the command shell&lt;br /&gt;2- Go to Start / Run - "regedt32"&lt;br /&gt;3- Go to the window: "HKEY_LOCAL_MACHINE on Local Machine" and find "Software\Microsoft\Command Processor"&lt;br /&gt;4- Change the key "PathCompletionChar" to 9&lt;br /&gt;5- The next time you fire up a command shell, you will have tab completion&lt;br /&gt;&lt;br /&gt;The above steps copied from &lt;a href="http://www.allisonfamily.org/bill/library/tips/tab_completion.html"&gt;this&lt;/a&gt; site. Credit goes to them.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7278525-111786771027197689?l=joehacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joehacker.blogspot.com/feeds/111786771027197689/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7278525&amp;postID=111786771027197689' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/111786771027197689'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/111786771027197689'/><link rel='alternate' type='text/html' href='http://joehacker.blogspot.com/2005/06/tab-completion-in-windows-2000.html' title='Tab Completion in Windows 2000'/><author><name>Muhammad Abubakar</name><uri>https://profiles.google.com/101729345733668263886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-6sHFfgCGkRU/AAAAAAAAAAI/AAAAAAAAAPA/QFyO0sWVzdg/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7278525.post-111345291322241774</id><published>2005-04-14T08:58:00.000+05:00</published><updated>2005-04-14T12:27:28.696+05:00</updated><title type='text'>The "/time" switch</title><content type='html'>Do you know there is a compiler switch which can calculate the time it&lt;br /&gt;takes to do the compilation of file(s) you pass it? You can use it by&lt;br /&gt;passing "/time" to the C# compiler. This results in the output of the&lt;br /&gt;"elapsed time". The page on msdn titled "C# Compiler Options Listed&lt;br /&gt;Alphabetically"&lt;br /&gt;(ms-help://MS.MSDNQTR.v80.en/MS.MSDN.v80/MS.VisualStudio.v80.en/&lt;br /&gt;dv_cscomp/html/43535ea0-ca47-4a15-b528-615087a86092.htm, this is whidbey beta1 msdn link [and is deliberately broken!!!])&lt;br /&gt;does not list this switch, neither does it exists in the list if you&lt;br /&gt;write "csc /?" at the windows console (csc of v1.1.4322). You can find its code in the&lt;br /&gt;Rotor file sscli\clr\src\csharp\scharp\scc\scc.cpp. Additionally some&lt;br /&gt;interesting code relating to timing can also be found in the file&lt;br /&gt;sscli\clr\src\csharp\scharp\sccomp\timing.cpp. The comments on the&lt;br /&gt;timing.cpp file reads:&lt;br /&gt;"Defined the timer functions, which allow reporting performance&lt;br /&gt;information for the compiler. This is sort of a built-in mini-profiler&lt;br /&gt;that is always available. This allows anyone to do a quick&lt;br /&gt;investigation of performance problems and try to pinpoint where things&lt;br /&gt;have changed."&lt;br /&gt;&lt;br /&gt;The "/time" switch works both in commercially available .net from Microsoft as well Rotor, but I could not find it working in Mono (mcs 1.0.5.0).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7278525-111345291322241774?l=joehacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joehacker.blogspot.com/feeds/111345291322241774/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7278525&amp;postID=111345291322241774' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/111345291322241774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/111345291322241774'/><link rel='alternate' type='text/html' href='http://joehacker.blogspot.com/2005/04/time-switch.html' title='The &quot;/time&quot; switch'/><author><name>Muhammad Abubakar</name><uri>https://profiles.google.com/101729345733668263886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-6sHFfgCGkRU/AAAAAAAAAAI/AAAAAAAAAPA/QFyO0sWVzdg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7278525.post-110810323510502289</id><published>2005-02-11T11:14:00.000+05:00</published><updated>2005-02-11T11:27:15.106+05:00</updated><title type='text'>Cracking Microsoft Word doc's Password</title><content type='html'>My friend Adeel has a post on his blog about how to remove the password from the Microsoft Word 2k3 document read it &lt;a href="http://weblogs.com.pk/abk/archive/2005/01/08/1230.aspx"&gt;here&lt;/a&gt;. It disappointing to see the security being bypassed so easily.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7278525-110810323510502289?l=joehacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joehacker.blogspot.com/feeds/110810323510502289/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7278525&amp;postID=110810323510502289' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/110810323510502289'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/110810323510502289'/><link rel='alternate' type='text/html' href='http://joehacker.blogspot.com/2005/02/cracking-microsoft-word-docs-password.html' title='Cracking Microsoft Word doc&apos;s Password'/><author><name>Muhammad Abubakar</name><uri>https://profiles.google.com/101729345733668263886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-6sHFfgCGkRU/AAAAAAAAAAI/AAAAAAAAAPA/QFyO0sWVzdg/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7278525.post-110328922578362722</id><published>2004-12-17T18:09:00.000+05:00</published><updated>2004-12-17T18:13:45.783+05:00</updated><title type='text'>Let me blow your mind</title><content type='html'>&lt;P&gt;&lt;a href="http://www.google.com/webhp?complete=1&amp;hl=en"&gt;Google Suggest Beta&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/7278525-110328922578362722?l=joehacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joehacker.blogspot.com/feeds/110328922578362722/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7278525&amp;postID=110328922578362722' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/110328922578362722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/110328922578362722'/><link rel='alternate' type='text/html' href='http://joehacker.blogspot.com/2004/12/let-me-blow-your-mind.html' title='Let me blow your mind'/><author><name>Muhammad Abubakar</name><uri>https://profiles.google.com/101729345733668263886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-6sHFfgCGkRU/AAAAAAAAAAI/AAAAAAAAAPA/QFyO0sWVzdg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7278525.post-110244019024065854</id><published>2004-12-07T22:17:00.001+05:00</published><updated>2004-12-07T22:23:10.240+05:00</updated><title type='text'>Reading/Writing Registry in .Net</title><content type='html'>&lt;p&gt;One of my friends asked me how he can make his application start whenever he logs into his computer. Actually he asked this question in some forum and emailed me the link to it, but when I was about to answer that question that site wanted me to register at the site, which I hate to do. I have like so many user names many of which I don’t even ever use. So I emailed my friend back a reply that I can’t answer his question there, instead come to my blog and read the answer.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;So here it is: the registry in .net is available in the Microsoft.Win32 namespace. Why is it not inside the System namespace like many other classes in the .net framework? Thats because there is no concept of registry in the .net framework. For .net the GAC (global assembly cache) gives all those facilities. So the .net framework provides a different namespace to clearly differentiate registry classes. Anyway, the main class that you play with while working with registry is called the RegistryKey. It’s got nice methods, very easy to work with and very easy to understand. The class that gives access to different &lt;b&gt;keys &lt;/b&gt;is Registry. It’s got some public fields, all of which gives you a live object of type RegistryKey. The difference in these fields is that the key is different. Like HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE, etc.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Lets say we want to see what are the entries in the recent list of our media player. I need to know which key this information I can find in. It’s called the HKEY_CURRENT_USER key, and programmatically I can access it using the following code:&lt;/p&gt;&lt;br /&gt;&lt;font face='lucida console' size=2&gt;RegistryKey key= Registry.CurrentUser;&lt;/font&gt;&lt;br&gt;&lt;br /&gt;(don’t forget to add the &lt;font face='lucida console' size=2&gt;&lt;font color ='blue'&gt;using&lt;/font&gt; Microsoft.Win32&lt;/font&gt;;)&lt;br /&gt;&lt;p&gt;The registry path to the recent file list of media player is “software\microsoft\mediaplayer\player\recentfilelist”. So what we’ll do is simply call a OpenSubKey method on the object of RegistryKey, and get the list of all the enteries of media player recent list. This can be done through the following code:&lt;/p&gt;&lt;br /&gt;&lt;font face='lucida console' size=2&gt;&lt;font color ='blue'&gt;string&lt;/font&gt; mediaplayerarea = &lt;b&gt;@"software\microsoft\mediaplayer\player\recentfilelist"&lt;/b&gt;;&lt;/font&gt;&lt;br&gt;&lt;br /&gt;&lt;br /&gt;&lt;font face='lucida console' size=2&gt;RegistryKey  key= Registry.CurrentUser ;&lt;br&gt;&lt;br /&gt;RegistryKey subkey= key.OpenSubKey(mediaplayerarea, &lt;font color ='blue'&gt;true&lt;/font&gt;);&lt;br&gt;&lt;br /&gt;&lt;font color ='blue'&gt;foreach&lt;/font&gt; ( &lt;font color ='blue'&gt;string&lt;/font&gt; tmp &lt;font color ='blue'&gt;in&lt;/font&gt; subkey.GetValueNames() )&lt;br&gt;&lt;br /&gt;{&lt;br&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&lt;b&gt;"value name is :{0}, value is :{1}"&lt;/b&gt;,tmp, subkey.GetValue( tmp ) );&lt;br&gt;&lt;br /&gt;}&lt;/font&gt;&lt;br&gt;&lt;br /&gt;&lt;p&gt;So if you read the code you see that I’m calling the GetValue method to get the data of the value. Can anything be simpler than this?&lt;br&gt;&lt;br /&gt;Writing to the registry is as easy as reading. All you have to do is call the SetValue method instead the GetValue and your value will be written, provided the key opened is writeable which you specify in the second parameter to your call to OpenSubKey. Now lets say you want to make an entry to the registry which will make your application run everytime you log in to the computer. This information is also inside the HKEY_CURRENT_USER key. So you can utilize the code above to write to the startup registry entry.&lt;/p&gt;&lt;br /&gt;&lt;font face='lucida console' size=2&gt;&lt;font color ='blue'&gt;void&lt;/font&gt; addtostartup(&lt;font color ='blue'&gt;string&lt;/font&gt; filename)&lt;br&gt;&lt;br /&gt;{&lt;br&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string startkeyspath=&lt;b&gt;@"software\microsoft\windows\currentversion\run"&lt;/b&gt;;&lt;br&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RegistryKey  key= Registry.CurrentUser ;&lt;br&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RegistryKey subkey= key.OpenSubKey(startkeyspath, &lt;font color ='blue'&gt;true&lt;/font&gt;);&lt;br&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;subkey.SetValue(&lt;b&gt;"myapp"&lt;/b&gt;, filename );&lt;br&gt;&lt;br /&gt;}&lt;br&gt;&lt;br /&gt;&lt;/font&gt;&lt;br /&gt;&lt;p&gt;After this code executes the filename will be present in your Run key and would be launched as soon as you log in to the computer.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;To see the entries and experiment with them you can use the RegEdit.exe (run from the command prompt). But you make sure that you do not write to or read the registry of applications that you do not understand what they are there for. If registry enteries are corrupted, your applications may start behaving abnormally.&lt;/p&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7278525-110244019024065854?l=joehacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joehacker.blogspot.com/feeds/110244019024065854/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7278525&amp;postID=110244019024065854' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/110244019024065854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/110244019024065854'/><link rel='alternate' type='text/html' href='http://joehacker.blogspot.com/2004/12/readingwriting-registry-in-net.html' title='Reading/Writing Registry in .Net'/><author><name>Muhammad Abubakar</name><uri>https://profiles.google.com/101729345733668263886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-6sHFfgCGkRU/AAAAAAAAAAI/AAAAAAAAAPA/QFyO0sWVzdg/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7278525.post-110144609923334443</id><published>2004-11-26T09:13:00.000+05:00</published><updated>2004-11-26T10:14:59.233+05:00</updated><title type='text'>Competition</title><content type='html'>&lt;strong&gt;Microsoft vs Others&lt;/strong&gt;&lt;br /&gt;I finally saw &lt;a href="http://www.forbes.com/feeds/ap/2004/11/24/ap1674887.html"&gt;this interesting article &lt;/a&gt;where they are talking about Google vs Microsoft :). Thats cool. I remember articles on Fortune mag like "Gates vs Sun" ! And an article in I think Byte or PC mag title "Is Java going to be a Windows Killer?" in 1998. Lots of people are maybe attracted to Google just because its new and so there expectations are high. Ofcourse its because they (goog) have been lot of successful in what they do. But how long can they keep that edge is what matters. I use Linux and I like it very much :) And I use Google more than 10 times everyday and like it every time I do. But Microsoft is amazing. People say Microsoft is no more fun to work at. Very untrue. This comes from people who either have never worked there or left microsoft very early to do there own work. How can you say this about a company which has been developing extremely successful operating systems and compilers for more than 20 years? I think people say this when they see someone succeeding beyond there imagination. If you look at the success of &lt;a href="http://msdn.microsoft.com/netframework/"&gt;.net &lt;/a&gt;and how its future versions are being developed (you can observe that through blogs.msdn.com) and you look at &lt;a href="http://msdn.microsoft.com/longhorn/"&gt;Longhorn&lt;/a&gt;, I say its the most exciting place to be for computer science people. And oh, btw Microsoft spends more on research too, mega more than Google, or any body else for that matter.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Seen the latest show?&lt;/strong&gt;&lt;br /&gt;See the latest .net show on &lt;a href="http://msdn.microsoft.com/theshow/episode046/default.asp"&gt;Connected Systems&lt;/a&gt;. One of  my favourites is speaking there: Don Box, the &lt;a href="http://msdn.microsoft.com/Longhorn/understanding/pillars/Indigo/default.aspx"&gt;Indigo&lt;/a&gt; guy. Indigo is basically what they call is the *messaging sub system* in the next gen microsoft os. So all messaging of processes and components is going to happen through indigo, hence the "connected systems". &lt;em&gt;And once again, if you want to be ultra pruductive using indigo or other things in longhorn when they arrive, you have to be terribly good in .net programming.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Join the Rotor list&lt;/strong&gt;&lt;br /&gt;Join the rotor (and other .net related stuff) on &lt;a href="http://discuss.develop.com/dotnet-rotor.html"&gt;discuss.develop&lt;/a&gt;. I was too late in joining this list, but better late than never right?&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/7278525-110144609923334443?l=joehacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joehacker.blogspot.com/feeds/110144609923334443/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7278525&amp;postID=110144609923334443' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/110144609923334443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/110144609923334443'/><link rel='alternate' type='text/html' href='http://joehacker.blogspot.com/2004/11/competition.html' title='Competition'/><author><name>Muhammad Abubakar</name><uri>https://profiles.google.com/101729345733668263886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-6sHFfgCGkRU/AAAAAAAAAAI/AAAAAAAAAPA/QFyO0sWVzdg/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7278525.post-109720891366731480</id><published>2004-10-08T08:56:00.000+05:00</published><updated>2004-10-08T09:15:13.666+05:00</updated><title type='text'>MSDN Documentation getting better</title><content type='html'>I noticed that the lock statement in C# is better documented than the SyncLock statement of VB.net. So on providing feedback I was redirected to the new documentation page which was for VB.Net 2005. It can be clearly seen how much improved the explanation is in the 2005 version of the msdn. Everything was so clearly stated that it was even better than the C# docs on lock in 2003 msdn.&lt;br /&gt;Lock in C# : ms-help://MS.NETFrameworkSDKv1.1/csref/html/vclrfLockStatement.htm&lt;br /&gt;SyncLock in VB (lang reference) : ms-help://MS.NETFrameworkSDKv1.1/vblr7net/html/vastmSyncLock.htm&lt;br /&gt;SyncLock in VB (lang specifications, slightly better) : ms-help://MS.NETFrameworkSDKv1.1/vblsnet/html/vblrfVBSpec8_5.htm&lt;br /&gt;SyncLock in VB 2005 (excellent) : &lt;a href="http://msdn2.microsoft.com/library/3a86s51t.aspx"&gt;http://msdn2.microsoft.com/library/3a86s51t.aspx&lt;/a&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7278525-109720891366731480?l=joehacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joehacker.blogspot.com/feeds/109720891366731480/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7278525&amp;postID=109720891366731480' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/109720891366731480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/109720891366731480'/><link rel='alternate' type='text/html' href='http://joehacker.blogspot.com/2004/10/msdn-documentation-getting-better.html' title='MSDN Documentation getting better'/><author><name>Muhammad Abubakar</name><uri>https://profiles.google.com/101729345733668263886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-6sHFfgCGkRU/AAAAAAAAAAI/AAAAAAAAAPA/QFyO0sWVzdg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7278525.post-109551180248137020</id><published>2004-09-18T17:38:00.000+05:00</published><updated>2004-09-18T17:50:02.483+05:00</updated><title type='text'>.Net Frameworke 2.0 Special Code Coverage Edition</title><content type='html'>If you are concerned about the portions that your managed applications depend on in .net and win32, than you can help provide microsoft with this information so they can do better on maintaining compatibility on future releases of the .net framework. Its a 2.0 beta1 special release which comsumes more memory and also is slower than the regular 2.0 beta1 because of the way it runs. Download it &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=CC36F05E-2050-4E54-B460-E99E50156712&amp;amp;displaylang=en"&gt;here&lt;/a&gt;. I'll download it right away.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7278525-109551180248137020?l=joehacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joehacker.blogspot.com/feeds/109551180248137020/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7278525&amp;postID=109551180248137020' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/109551180248137020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/109551180248137020'/><link rel='alternate' type='text/html' href='http://joehacker.blogspot.com/2004/09/net-frameworke-20-special-code.html' title='.Net Frameworke 2.0 Special Code Coverage Edition'/><author><name>Muhammad Abubakar</name><uri>https://profiles.google.com/101729345733668263886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-6sHFfgCGkRU/AAAAAAAAAAI/AAAAAAAAAPA/QFyO0sWVzdg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7278525.post-109456170137846163</id><published>2004-09-07T16:46:00.000+05:00</published><updated>2004-09-08T16:50:50.056+05:00</updated><title type='text'>Back ground color of selected row in Datagrid</title><content type='html'>Talking about ASP.net, we needed a functionality so that when someone comes and clicks on any row of the datagrid the row would highlight or change its color so to look different than other rows. I wrote the following code to solve this:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#6600cc;"&gt;var prevrowobj= null;&lt;br /&gt;var prevrowcolor="";&lt;br /&gt;var prevfont="";&lt;br /&gt;function JSchangecolor(obj)&lt;br /&gt;{&lt;br /&gt;if (prevrowobj!=null){&lt;br /&gt;prevrowobj.style.backgroundColor=prevrowcolor ;&lt;br /&gt;prevrowobj.style.fontWeight='normal' ;&lt;br /&gt;prevrowobj.style.color = '#000000';&lt;br /&gt;}&lt;br /&gt;prevrowobj=obj;&lt;br /&gt;prevrowcolor =obj.style.backgroundColor;&lt;br /&gt;//prevfont = obj.style.font;&lt;br /&gt;&lt;br /&gt;obj.style.backgroundColor ='#003399';&lt;br /&gt;obj.style.fontWeight= 'bold';&lt;br /&gt;//obj.style.cssText = 'CSS/css.css';&lt;br /&gt;obj.style.color = '#EEFCC6';&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;this code worked fine but somebody included a linkbutton in there grid and this code worked for all columns except for the text in the columns that had linkbuttons. So I had to use some of the Table object Model (TOM) or DHTML or whatever its called and changed the code to following to make it work for all columns:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#6600cc;"&gt;var prevrowobj= null;&lt;br /&gt;var prevrowcolor="";&lt;br /&gt;var prevfont="";&lt;br /&gt;function JSchangecolor(obj)&lt;br /&gt;{&lt;br /&gt;if (prevrowobj!=null){&lt;br /&gt;prevrowobj.style.backgroundColor=prevrowcolor ;&lt;br /&gt;prevrowobj.style.fontWeight='normal' ;&lt;br /&gt;prevrowobj.style.color = '#000000';&lt;br /&gt;checkall( prevrowobj,0);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;prevrowobj=obj;&lt;br /&gt;prevrowcolor =obj.style.backgroundColor;&lt;br /&gt;obj.style.backgroundColor ='#003399';&lt;br /&gt;//obj.style.fontWeight= 'bold';&lt;br /&gt;obj.style.color = '#EEFCC6';&lt;br /&gt;checkall( obj,1 );&lt;br /&gt;}&lt;br /&gt;function SetColors(obj)&lt;br /&gt;{&lt;br /&gt;obj.style.color = '#EEFCC6';&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;function RestoreColors(obj)&lt;br /&gt;{&lt;br /&gt;obj.style.color = '#000000';&lt;br /&gt;}&lt;br /&gt;function checkall(obj,x)&lt;br /&gt;{&lt;br /&gt;for (var i=0; i&lt; xobj="obj.cells[i].childNodes[0];" nodename="=" x ="="&gt;&lt;br /&gt;&lt;br /&gt;following server side code has to be written to add the onclick event to every row of the datagrid:&lt;br /&gt;&lt;span style="font-family:courier new;color:#6600cc;"&gt;Public Shared Sub changecolor(ByVal grd As DataGrid)&lt;br /&gt;Dim dt As DataGridItem&lt;br /&gt;For Each dt In grd.Items&lt;br /&gt;dt.Attributes.Add("onclick", "JSchangecolor(this)")&lt;br /&gt;&lt;br /&gt;Next&lt;br /&gt;End Sub &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;color:#6600cc;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7278525-109456170137846163?l=joehacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joehacker.blogspot.com/feeds/109456170137846163/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7278525&amp;postID=109456170137846163' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/109456170137846163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/109456170137846163'/><link rel='alternate' type='text/html' href='http://joehacker.blogspot.com/2004/09/back-ground-color-of-selected-row-in.html' title='Back ground color of selected row in Datagrid'/><author><name>Muhammad Abubakar</name><uri>https://profiles.google.com/101729345733668263886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-6sHFfgCGkRU/AAAAAAAAAAI/AAAAAAAAAPA/QFyO0sWVzdg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7278525.post-109298687047063160</id><published>2004-08-20T11:24:00.000+05:00</published><updated>2004-08-20T12:27:50.470+05:00</updated><title type='text'>Modules in VB.net</title><content type='html'>Types themsleves cannot be static in C# yet. However, you can make your methods and fields static and then use them from anywhere. For me that would achieve that same purpose like a module in VB. And in fact this is what happens at the IL level. When you make modules in VB they are just converted into classes with all the methods and fields in them set to "static". For example, if I have a method &lt;em&gt;Add &lt;/em&gt;in my Module1 as:&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#6600cc;"&gt;Public Function&lt;/span&gt; add(&lt;span style="color:#6600cc;"&gt;ByVal&lt;/span&gt; x &lt;span style="color:#6600cc;"&gt;As Integer&lt;/span&gt;, &lt;span style="color:#6600cc;"&gt;ByVal&lt;/span&gt; y &lt;span style="color:#6600cc;"&gt;As Integer&lt;/span&gt;) &lt;span style="color:#6600cc;"&gt;As Integer&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#6600cc;"&gt;   Return&lt;/span&gt; x + y&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;color:#6600cc;"&gt;End Functionit&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;it gets converted to the following IL:&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;color:#330099;"&gt;.method public static int32 'add'(int32 x,&lt;br /&gt;int32 y) cil managed&lt;br /&gt;{&lt;br /&gt;// Code size 9 (0x9)&lt;br /&gt;.maxstack 2&lt;br /&gt;.locals init ([0] int32 'add')&lt;br /&gt;IL_0000: nop&lt;br /&gt;IL_0001: ldarg.0&lt;br /&gt;IL_0002: ldarg.1&lt;br /&gt;IL_0003: add.ovf&lt;br /&gt;IL_0004: stloc.0&lt;br /&gt;IL_0005: br.s IL_0007&lt;br /&gt;IL_0007: ldloc.0&lt;br /&gt;IL_0008: ret&lt;br /&gt;} // end of method Module1::'add'&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#333399;"&gt;Shared&lt;/span&gt; in VB is equivilent to &lt;span style="font-family:courier new;color:#333399;"&gt;static&lt;/span&gt; in C#. The concept of modules in VB comes from old VB versions and is now there &lt;em&gt;only &lt;/em&gt;for backwards compatibility reasons. In the old versions, I rememeber that while doing the win32api programming we could place our callback functions only in modules, not in classes.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7278525-109298687047063160?l=joehacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joehacker.blogspot.com/feeds/109298687047063160/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7278525&amp;postID=109298687047063160' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/109298687047063160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/109298687047063160'/><link rel='alternate' type='text/html' href='http://joehacker.blogspot.com/2004/08/modules-in-vbnet.html' title='Modules in VB.net'/><author><name>Muhammad Abubakar</name><uri>https://profiles.google.com/101729345733668263886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-6sHFfgCGkRU/AAAAAAAAAAI/AAAAAAAAAPA/QFyO0sWVzdg/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7278525.post-109271517302047491</id><published>2004-08-17T08:31:00.000+05:00</published><updated>2004-08-17T08:59:33.020+05:00</updated><title type='text'>SHA-0 Broken, MD5 Rumored Broken</title><content type='html'>What ever you do , &lt;strong&gt;they'll break it&lt;/strong&gt;. Read more about broken hash functions &lt;a href="http://slashdot.org/articles/04/08/17/0030243.shtml?tid=93&amp;tid=162&amp;amp;tid=1&amp;amp;tid=218"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7278525-109271517302047491?l=joehacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joehacker.blogspot.com/feeds/109271517302047491/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7278525&amp;postID=109271517302047491' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/109271517302047491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/109271517302047491'/><link rel='alternate' type='text/html' href='http://joehacker.blogspot.com/2004/08/sha-0-broken-md5-rumored-broken.html' title='SHA-0 Broken, MD5 Rumored Broken'/><author><name>Muhammad Abubakar</name><uri>https://profiles.google.com/101729345733668263886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-6sHFfgCGkRU/AAAAAAAAAAI/AAAAAAAAAPA/QFyO0sWVzdg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7278525.post-109039143428849000</id><published>2004-07-21T11:28:00.000+05:00</published><updated>2004-07-21T11:30:34.290+05:00</updated><title type='text'>MVPs get the Windows Source Code.</title><content type='html'>Microsoft gives its MVPs access to the Windows source code. Read this &lt;a href="http://www.eweek.com/article2/0,1759,1624877,00.asp"&gt;here&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7278525-109039143428849000?l=joehacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joehacker.blogspot.com/feeds/109039143428849000/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7278525&amp;postID=109039143428849000' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/109039143428849000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/109039143428849000'/><link rel='alternate' type='text/html' href='http://joehacker.blogspot.com/2004/07/mvps-get-windows-source-code.html' title='MVPs get the Windows Source Code.'/><author><name>Muhammad Abubakar</name><uri>https://profiles.google.com/101729345733668263886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-6sHFfgCGkRU/AAAAAAAAAAI/AAAAAAAAAPA/QFyO0sWVzdg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7278525.post-108995880069735993</id><published>2004-07-16T10:21:00.000+05:00</published><updated>2004-07-17T15:34:20.753+05:00</updated><title type='text'>The problem with J2EE</title><content type='html'>&lt;p&gt;&lt;a href="http://primates.ximian.com/~miguel/activity-log.php"&gt;&lt;strong&gt;Miguel de Icaza&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;The problem with J2EE really is that it became very, very academic and the complexity of all these perfectly designed systems in schools does not necessarily map when you have deadlines and all kinds of other things.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;Read the full article &lt;a href="http://news.com.com/More+than+an+open-source+curiosity/2008-7344_3-5271084.html?tag=nefd.lede"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7278525-108995880069735993?l=joehacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joehacker.blogspot.com/feeds/108995880069735993/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7278525&amp;postID=108995880069735993' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/108995880069735993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/108995880069735993'/><link rel='alternate' type='text/html' href='http://joehacker.blogspot.com/2004/07/problem-with-j2ee.html' title='The problem with J2EE'/><author><name>Muhammad Abubakar</name><uri>https://profiles.google.com/101729345733668263886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-6sHFfgCGkRU/AAAAAAAAAAI/AAAAAAAAAPA/QFyO0sWVzdg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7278525.post-108842103714762815</id><published>2004-06-28T15:59:00.000+05:00</published><updated>2004-06-28T16:10:37.146+05:00</updated><title type='text'>Words of wisdom from Miguel de Icaza (must read)</title><content type='html'>&lt;a href="http://primates.ximian.com/~miguel/activity-log.php"&gt;&lt;font color='darkblue'&gt;&lt;b&gt;Miguel says&lt;/b&gt;&lt;/font&gt;&lt;/a&gt;:&lt;i&gt;A small story I like to tell people: when I started writing Gnumeric, I was very afraid of one thing: the computational engine. How do we recalculate the value of cells when a change happens? How do we make this perform well? How do we do iterative computations? How do you resolve recursive references? &lt;br /&gt;&lt;br /&gt;All of those problems were fairly scary, and I did not have an answer to them. I looked at all the source code I could find for spreadsheets around that time, and none of it did even a remotely good job: it was all pretty amateur, and none of it really did anything remotely close to what commercial software did. &lt;br /&gt;&lt;br /&gt;I started work on Gnumeric nonetheless, figuring `When the time comes, I will face that problem', and spent the next three months making sure that Gnumeric was visually pleasant, that it looked like Excel, and that the "feel" was right. I tried to implement computations trivially during that time in a couple hour hack and that failed miserably. &lt;br /&gt;&lt;br /&gt;By the third month, I decided I would not touch a computer until I figured out an algorithm for doing these computations, I took a pencil and a notebook and went to write down the steps. Surprisingly after a few hours of work I had something that looked correct. &lt;br /&gt;&lt;br /&gt;That same day I implemented the computational engine with the features I wanted and it just worked! &lt;br /&gt;&lt;br /&gt;What I like about this story, is that I could have given up at any point since there was a large problem ahead of me: a problem I had no answers to. And I see this with many free software developers, students and even in normal social situations: people stop doing things because they see a big problem ahead of them that they can not possibly conceive working around. &lt;b&gt;My advise to every young programmer is to start writing code and delay addressing imaginary problems until they become real&lt;/b&gt;&lt;/i&gt;.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7278525-108842103714762815?l=joehacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joehacker.blogspot.com/feeds/108842103714762815/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7278525&amp;postID=108842103714762815' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/108842103714762815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/108842103714762815'/><link rel='alternate' type='text/html' href='http://joehacker.blogspot.com/2004/06/words-of-wisdom-from-miguel-de-icaza.html' title='Words of wisdom from Miguel de Icaza (must read)'/><author><name>Muhammad Abubakar</name><uri>https://profiles.google.com/101729345733668263886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-6sHFfgCGkRU/AAAAAAAAAAI/AAAAAAAAAPA/QFyO0sWVzdg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7278525.post-108840580635751009</id><published>2004-06-28T11:45:00.000+05:00</published><updated>2004-06-28T11:56:46.356+05:00</updated><title type='text'>VB.NET source code released</title><content type='html'>The lexer and parser source code for Visual Basic.net 2003 is freely available on &lt;a href="http://www.gotdotnet.com"&gt;GotDotNet&lt;/a&gt; site. It can scan and parse visual basic source code. The source code itself is written in VB.net and you get a complete solution to hack on if you want to. Get the source &lt;a href="http://www.gotdotnet.com/Community/Workspaces/workspace.aspx?id=d8da92aa-354c-4bb0-8e9b-e4763b49a0e3"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Does anyone know that the original vs.net commercial version of vb.net parser and scanner was written in which language? Maybe c++?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7278525-108840580635751009?l=joehacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joehacker.blogspot.com/feeds/108840580635751009/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7278525&amp;postID=108840580635751009' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/108840580635751009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7278525/posts/default/108840580635751009'/><link rel='alternate' type='text/html' href='http://joehacker.blogspot.com/2004/06/vbnet-source-code-released.html' title='VB.NET source code released'/><author><name>Muhammad Abubakar</name><uri>https://profiles.google.com/101729345733668263886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-6sHFfgCGkRU/AAAAAAAAAAI/AAAAAAAAAPA/QFyO0sWVzdg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry></feed>
