<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Jake Kasprzak Online &#187; Google</title>
	<atom:link href="http://jake.kasprzak.ca/category/google/feed/" rel="self" type="application/rss+xml" />
	<link>http://jake.kasprzak.ca</link>
	<description>Software > Open Source Development > Mozilla > Firefox > Greasemonkey > Scripting/Coding</description>
	<lastBuildDate>Sat, 13 Aug 2011 00:07:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>DNS Prefetching and the SPDY Protocol: Attempts by Google to Make Web Browsing More Efficient</title>
		<link>http://jake.kasprzak.ca/2009/12/07/dns-prefetching-and-the-spdy-protocol-attempts-by-google-to-make-web-browsing-more-efficient/</link>
		<comments>http://jake.kasprzak.ca/2009/12/07/dns-prefetching-and-the-spdy-protocol-attempts-by-google-to-make-web-browsing-more-efficient/#comments</comments>
		<pubDate>Mon, 07 Dec 2009 04:53:05 +0000</pubDate>
		<dc:creator>jkasprzak</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[Google Chrome]]></category>

		<guid isPermaLink="false">http://jake.kasprzak.ca/?p=817</guid>
		<description><![CDATA[To follow up on the previous entry that I wrote here, I considered writing about DNS prefetching in the Google Chrome web browser. After writing about Chrome&#8217;s JavaScript performance, I thought it might be appropriate to mention that web pages may appear more quickly in Chrome when DNS prefetching is enabled in it. It was [...]]]></description>
			<content:encoded><![CDATA[<p>To follow up on the previous entry that I wrote here, I considered writing about DNS prefetching in the Google Chrome web browser. After writing about Chrome&#8217;s JavaScript performance, I thought it might be appropriate to mention that web pages may appear more quickly in Chrome when DNS prefetching is enabled in it. It was claimed in <a href="http://blog.chromium.org/2008/09/dns-prefetching-or-pre-resolving.html">this blog post that when domains are first visited in Chrome, 250 ms are saved on average when DNS prefetching is used</a>. I thought that DNS prefetching in Chrome was a topic that I should cover, even though that topic had already been discussed elsewhere when Chrome was first released over a year ago. However, it was <a href="http://blog.chromium.org/2009/11/2x-faster-web.html">recently announced that Google was going beyond work on a browser to make web pages appear in browsers more quickly</a>. In this entry, I will also write about <a href="http://dev.chromium.org/spdy/spdy-whitepaper">the protocol called SPDY</a> that Google has created to address HTTP&#8217;s inefficiencies. </p>
<p>When considering ways to make web pages appear more quickly in browsers, one needs to consider everything that occurs when a user visits a web page. It might seem to be a good idea to retrieve the IP addresses associated with the domains to which users may navigate next in advance. When this is done, then the time it takes for web pages to appear should decrease. One can see how much faster pages appear when DNS prefetching is used in Chrome after entering &#8220;about:dns&#8221; into the address bar in Chrome. After viewing that page, one will be able to see which hostnames had benefits produced as a result of this prefetching. I found this information quite interesting. So I used <a href="http://www.wireshark.org/">the packet sniffer named Wireshark</a> to view network traffic with DNS prefetching off, and then I viewed network traffic with it on. There are many pages with many links on them that one can view with DNS prefetching off and then with it on. I personally experimented with viewing <a href="http://www.slashdot.org">Slashdot</a> with this off, and found it interesting to see how much more DNS traffic there was when I refreshed the page with it on. </p>
<p>In theory, and according to tests run by Google, DNS prefetching leads to more efficient web browsing. However, when viewing DNS traffic using a sniffer such as Wireshark, one can get an idea how this can have the opposite effect on web browsing. When there are many links on a page, the majority of them may not ever be clicked by users who view these pages. In fact, it is said in <a href="http://www.mydigitallife.info/2009/11/17/turn-off-dns-prefetching-in-google-chrome-to-fix-resolving-host-and-cannot-load-page-error/">this blog entry that DNS prefetching can lead to the browser spending much time resolving hostnames</a>. It is also said in that entry that incorrect implementation of DNS caching or prefetching or other related errors can lead to web pages not appearing at all. It is suggested there that DNS prefetching be disabled, although I would like to note that I have never encountered issues such as these in the time that I have used Chrome. It should be mentioned that disabling of DNS prefetching tends to be considered a good idea when Chrome seems to be running slowly. When one <a href="http://www.google.com/support/chrome/bin/search.py?hl=en&#038;forum=1&#038;query=dns+prefetching+more:forum">searches for information on DNS prefetching</a> on the <a href="http://www.google.com/support/chrome/">help forum for Chrome</a>, one will see that disabling of DNS prefetching is a common suggestion there. Although some may have found that browser speed issues are worse when this prefetching is disabled, the goal of reduced perceived latency when DNS prefetching is used might not have been attained by Google.</p>
<p>Of course, ideas that may seem good in theory may not always be good in practice. DNS prefetching can be considered an example of such an idea. One must appreciate the efforts that Google is making to improve the web browsing experience for users. There most certainly is room for improvement in the way that the web works, and Google has recognized this. Some of this room for improvement came as a result of the nature of the web changing, and so Google is trying to keep up with changing times. This is what led them to try to improve on HTTP.</p>
<p>When HTTP was first designed, it was made for a web that consisted of single pages, and one in which fewer files were sent from a server to a client. Now that many files are sent to users when they load web pages, this would not suffice. HTTP 1.1 supports sending several requests before replies arrive, in what is known as pipelining. However, pipelining may not be very advantageous, as HTTP 1.1 requires that replies to requests be returned in order. The server must spend extra time processing incoming packets to determine the order in which packets must be sent. Some might also see how sending several requests at once and requiring the server to process them can lead to denial-of-service attacks. This is all explained well in <a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/04/02/http-pipelining-a-security-risk-without-real-performance-benefits.aspx">this blog post</a>. </p>
<p>SPDY addresses issues that HTTP has in a number of ways. In addition to its ability to send several requests over one TCP connection, requests are prioritized. The client prioritizing requests leads to what is more important being sent to the browser first. Also, headers are compressed, which is appropriate as much redundant header data tends to be sent back and forth when HTTP is used. It is interesting to note that all SPDY traffic is encrypted. It was claimed that page load times were reduced by up to 64% when SPDY was tested. However, SPDY may have its drawbacks. As it says in <a href="http://arstechnica.com/web/news/2009/11/spdy-google-wants-to-speed-up-the-web-by-ditching-http.ars">this article on SPDY</a>, the amount of processing done in compression and encryption could lead to servers having to be upgraded. <a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/11/17/google-spdy-protocol-would-require-mass-change-in-infrastructure.aspx">This article describes changes that would need to be made on the server side in greater detail.</a></p>
<p>Google also recently <a href="http://googleblog.blogspot.com/2009/12/introducing-google-public-dns.html">announced the launch of a public DNS resolver</a> called <a href="http://code.google.com/speed/public-dns/">&#8220;Google Public DNS&#8221;</a> in another attempt to improve the web browsing experience for users. Google&#8217;s attempts at making web browsing more efficient may not work as well in practice as they do in theory. Nevertheless, one has to appreciate their efforts in updating the way in which browsers and protocols work to improve the efficiency of web browsing.</p>
]]></content:encoded>
			<wfw:commentRss>http://jake.kasprzak.ca/2009/12/07/dns-prefetching-and-the-spdy-protocol-attempts-by-google-to-make-web-browsing-more-efficient/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Benchmarking of JavaScript Performance: Firefox 3.5 vs. Google Chrome 3.0</title>
		<link>http://jake.kasprzak.ca/2009/11/16/benchmarking-of-javascript-performance-firefox-3-5-vs-google-chrome-3-0/</link>
		<comments>http://jake.kasprzak.ca/2009/11/16/benchmarking-of-javascript-performance-firefox-3-5-vs-google-chrome-3-0/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 03:53:55 +0000</pubDate>
		<dc:creator>jkasprzak</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Google Chrome]]></category>

		<guid isPermaLink="false">http://jake.kasprzak.ca/?p=777</guid>
		<description><![CDATA[Many web pages and web applications rely on JavaScript. That is the reason JavaScript performance in web browsers tends to be considered a high priority by browser vendors. There may be other factors that affect browser performance, as browsers are not simply JavaScript engines. This was mentioned by a senior product manager on the Internet [...]]]></description>
			<content:encoded><![CDATA[<p>Many web pages and web applications rely on JavaScript. That is the reason JavaScript performance in web browsers tends to be considered a high priority by browser vendors. There may be other factors that affect browser performance, as browsers are not simply JavaScript engines. This was mentioned by a senior product manager on the Internet Explorer development team, as you can see in <a href="http://www.computerworld.com/s/article/9126940/IE8_RC1_gains_ground_in_JavaScript_race?taxonomyId=11">this Computerworld article in which the results of JavaScript benchmark tests on different web browsers are mentioned</a>. However, in that same article, it is said that Internet Explorer 8 Release Candidate 1 completed those same JavaScript benchmark tests four times faster than IE8 Beta 2 did. This seems to indicate that those working on Internet Explorer do consider JavaScript performance important. Since browser vendors consider JavaScript performance important, it is important that browsers do well on these benchmark tests. </p>
<p>There are three major JavaScript performance test suites, each of which were released by different browser vendors. Webkit released <a href="http://www2.webkit.org/perf/sunspider-0.9/sunspider.html">SunSpider</a>, Mozilla released <a href="http://dromaeo.com/">Dromaeo</a>, and Google released the <a href="http://v8.googlecode.com/svn/data/benchmarks/v5/run.html">V8 benchmark</a>. As is often the case with benchmark tests, they may not necessarily accurately determine what performs best in the actual situations that they try to simulate. These JavaScript benchmark tests may have their flaws, some of which are still being addressed. Despite the flaws that JavaScript benchmarks may have, they can give an indication of how some JavaScript engines can be better than others. In the Computerworld article previously mentioned here, the SunSpider test suite was used to test the performance of the JavaScript engines of different browsers.</p>
<p>After I wrote about Google Chrome in the last entry here, I wanted to more precisely determine how much better it is at JavaScript performance than other browsers are. I considered running a few benchmark tests on a few different browsers. However, that has already been done many times by others. One can view results of such tests in the Computerworld article to which I previously posted a link, and <a href="http://ejohn.org/blog/javascript-performance-rundown/">here</a>. However, those tests were run before Firefox 3.5 was released, and JavaScript performance in Firefox 3.0 is not as good as it is in Firefox 3.5. In fact, according to what is on <a href="http://www.mozilla.com/en-US/firefox/performance/">this page on Firefox performance</a>, SunSpider tests indicate that JavaScript performance in Firefox 3.5 is twice as good as JavaScript performance in Firefox 3.0. I also wanted to run these tests myself. I ran the SunSpider benchmark tests using Firefox and Chrome, and found that the benchmark tests ran much faster in Chrome than they did in Firefox.</p>
<p>The SunSpider test suite is a comprehensive one that simulates situations that users will encounter when they browse the web, such as generation of tag clouds from JSON input. In running these tests, I ensured that I was using the latest versions of these web browsers. I also ensured that no other browser tabs were open when I ran these tests. I also created a new Firefox profile and used it to run the SunSpider tests on Firefox. I wanted to ensure that these test results would be as accurate as possible.</p>
<p>I found it interesting to see the mean times it took for the tests in the SunSpider suite to be completed. It was also interesting to see what the 95% confidence intervals were, which as some of those reading this may know, are used to determine with 95% certainty that true mean values are within those intervals. I viewed the source code on the SunSpider website to see how those values were calculated using a Student&#8217;s t-distribution, and was reminded of concepts that I learned about in a university statistics course. After running the tests three times with Google Chrome, the average time it took for the tests to be completed was 822.2 ms. I then ran the tests three times with Firefox, and the average time it took for the tests on Firefox to be completed was 1756.8 ms. Firefox took more than twice as long as Chrome to complete the suite of tests. One can verify this after viewing the results of the <a href="http://www2.webkit.org/perf/sunspider-0.9/sunspider-results.html?{%223d-cube%22:[41,85,48,47,49],%223d-morph%22:[48,46,37,38,36],%223d-raytrace%22:[44,42,41,42,42],%22access-binary-trees%22:[3,4,5,5,6],%22access-fannkuch%22:[20,51,20,19,18],%22access-nbody%22:[31,33,29,29,28],%22access-nsieve%22:[5,7,6,6,6],%22bitops-3bit-bits-in-byte%22:[4,4,3,4,4],%22bitops-bits-in-byte%22:[11,12,14,11,11],%22bitops-bitwise-and%22:[13,14,15,13,16],%22bitops-nsieve-bits%22:[24,53,21,21,21],%22controlflow-recursive%22:[3,4,4,4,4],%22crypto-aes%22:[20,64,19,17,18],%22crypto-md5%22:[15,21,15,16,19],%22crypto-sha1%22:[15,14,12,14,15],%22date-format-tofte%22:[51,94,48,48,47],%22date-format-xparb%22:[67,78,53,55,55],%22math-cordic%22:[26,25,25,26,26],%22math-partial-sums%22:[38,34,36,35,36],%22math-spectral-norm%22:[14,14,15,14,23],%22regexp-dna%22:[43,24,24,22,23],%22string-base64%22:[27,30,28,26,27],%22string-fasta%22:[37,37,36,38,37],%22string-tagcloud%22:[59,57,61,57,55],%22string-unpack-code%22:[88,84,84,87,82],%22string-validate-input%22:[67,50,51,50,95]}">first</a>, <a href="http://www2.webkit.org/perf/sunspider-0.9/sunspider-results.html?{%223d-cube%22:[39,36,86,48,40],%223d-morph%22:[50,37,49,42,39],%223d-raytrace%22:[45,40,41,41,41],%22access-binary-trees%22:[5,4,5,5,5],%22access-fannkuch%22:[19,19,33,18,19],%22access-nbody%22:[29,31,28,28,27],%22access-nsieve%22:[5,6,5,6,5],%22bitops-3bit-bits-in-byte%22:[4,4,4,4,4],%22bitops-bits-in-byte%22:[10,11,9,12,10],%22bitops-bitwise-and%22:[14,14,14,14,15],%22bitops-nsieve-bits%22:[22,21,37,22,22],%22controlflow-recursive%22:[4,3,4,4,4],%22crypto-aes%22:[20,18,18,16,17],%22crypto-md5%22:[14,15,15,14,14],%22crypto-sha1%22:[13,13,13,16,15],%22date-format-tofte%22:[57,48,48,49,48],%22date-format-xparb%22:[56,55,53,55,63],%22math-cordic%22:[28,25,26,26,25],%22math-partial-sums%22:[37,36,36,35,39],%22math-spectral-norm%22:[16,16,15,15,16],%22regexp-dna%22:[23,23,23,24,23],%22string-base64%22:[28,28,27,25,26],%22string-fasta%22:[38,37,38,36,37],%22string-tagcloud%22:[59,72,57,54,56],%22string-unpack-code%22:[92,99,92,81,82],%22string-validate-input%22:[68,142,92,95,93]}">second</a>, and <a href="http://www2.webkit.org/perf/sunspider-0.9/sunspider-results.html?{%223d-cube%22:[39,36,48,49,51],%223d-morph%22:[51,39,55,39,39],%223d-raytrace%22:[46,43,40,40,39],%22access-binary-trees%22:[5,4,6,7,3],%22access-fannkuch%22:[19,20,19,21,19],%22access-nbody%22:[30,32,42,29,27],%22access-nsieve%22:[5,7,6,8,6],%22bitops-3bit-bits-in-byte%22:[6,5,4,5,4],%22bitops-bits-in-byte%22:[10,10,25,10,10],%22bitops-bitwise-and%22:[15,15,29,19,17],%22bitops-nsieve-bits%22:[21,22,23,25,21],%22controlflow-recursive%22:[4,4,4,4,5],%22crypto-aes%22:[20,16,17,16,16],%22crypto-md5%22:[14,14,14,14,15],%22crypto-sha1%22:[11,14,13,14,14],%22date-format-tofte%22:[71,47,48,140,49],%22date-format-xparb%22:[51,52,55,85,62],%22math-cordic%22:[27,27,28,43,26],%22math-partial-sums%22:[37,36,35,50,35],%22math-spectral-norm%22:[14,14,14,16,14],%22regexp-dna%22:[24,23,24,23,23],%22string-base64%22:[27,26,26,30,28],%22string-fasta%22:[36,37,37,37,37],%22string-tagcloud%22:[58,120,54,57,56],%22string-unpack-code%22:[90,123,90,84,84],%22string-validate-input%22:[59,117,46,50,49]}">third</a> tests I ran with Chrome, and the results of the <a href="http://www2.webkit.org/perf/sunspider-0.9/sunspider-results.html?{%223d-cube%22:[69,74,72,72,72],%223d-morph%22:[126,123,123,123,123],%223d-raytrace%22:[124,122,122,122,121],%22access-binary-trees%22:[54,55,54,54,55],%22access-fannkuch%22:[102,101,101,102,102],%22access-nbody%22:[42,42,41,41,42],%22access-nsieve%22:[15,15,18,15,15],%22bitops-3bit-bits-in-byte%22:[1,2,1,2,2],%22bitops-bits-in-byte%22:[12,12,12,12,12],%22bitops-bitwise-and%22:[3,2,3,2,2],%22bitops-nsieve-bits%22:[37,34,34,34,34],%22controlflow-recursive%22:[49,48,49,48,49],%22crypto-aes%22:[53,54,58,55,53],%22crypto-md5%22:[25,25,24,25,25],%22crypto-sha1%22:[13,13,13,13,14],%22date-format-tofte%22:[141,140,139,140,142],%22date-format-xparb%22:[136,137,139,134,138],%22math-cordic%22:[55,53,53,53,52],%22math-partial-sums%22:[26,25,25,25,25],%22math-spectral-norm%22:[12,12,12,12,12],%22regexp-dna%22:[122,115,104,131,135],%22string-base64%22:[24,24,24,24,25],%22string-fasta%22:[107,106,107,108,109],%22string-tagcloud%22:[129,140,134,134,132],%22string-unpack-code%22:[211,205,206,204,218],%22string-validate-input%22:[56,60,69,68,59]}">first</a>, <a href="http://www2.webkit.org/perf/sunspider-0.9/sunspider-results.html?{%223d-cube%22:[71,71,71,71,71],%223d-morph%22:[122,123,130,124,124],%223d-raytrace%22:[123,121,122,122,122],%22access-binary-trees%22:[56,56,54,55,56],%22access-fannkuch%22:[99,101,102,103,104],%22access-nbody%22:[41,41,42,41,41],%22access-nsieve%22:[15,15,14,15,15],%22bitops-3bit-bits-in-byte%22:[1,2,1,2,2],%22bitops-bits-in-byte%22:[12,12,12,12,12],%22bitops-bitwise-and%22:[2,2,2,2,2],%22bitops-nsieve-bits%22:[35,35,37,34,34],%22controlflow-recursive%22:[51,49,48,49,48],%22crypto-aes%22:[54,56,54,53,53],%22crypto-md5%22:[25,25,25,25,25],%22crypto-sha1%22:[13,14,13,13,14],%22date-format-tofte%22:[141,146,143,146,145],%22date-format-xparb%22:[137,135,135,139,134],%22math-cordic%22:[53,54,53,52,53],%22math-partial-sums%22:[25,25,25,25,26],%22math-spectral-norm%22:[12,11,12,12,12],%22regexp-dna%22:[117,102,122,92,111],%22string-base64%22:[25,25,25,25,27],%22string-fasta%22:[105,107,107,107,123],%22string-tagcloud%22:[128,130,128,130,131],%22string-unpack-code%22:[207,205,207,213,254],%22string-validate-input%22:[59,56,69,58,68]}">second</a>, and <a href="http://www2.webkit.org/perf/sunspider-0.9/sunspider-results.html?{%223d-cube%22:[69,72,74,69,72],%223d-morph%22:[130,123,127,125,123],%223d-raytrace%22:[124,122,135,123,125],%22access-binary-trees%22:[53,56,57,59,54],%22access-fannkuch%22:[99,102,134,106,100],%22access-nbody%22:[42,42,44,42,41],%22access-nsieve%22:[15,15,15,16,15],%22bitops-3bit-bits-in-byte%22:[2,1,1,2,2],%22bitops-bits-in-byte%22:[12,12,12,12,12],%22bitops-bitwise-and%22:[2,2,3,2,3],%22bitops-nsieve-bits%22:[34,34,34,34,35],%22controlflow-recursive%22:[48,48,53,51,50],%22crypto-aes%22:[54,55,56,57,57],%22crypto-md5%22:[25,24,25,25,25],%22crypto-sha1%22:[13,14,13,13,14],%22date-format-tofte%22:[141,143,146,146,144],%22date-format-xparb%22:[136,146,138,137,135],%22math-cordic%22:[53,52,53,54,52],%22math-partial-sums%22:[25,26,25,25,25],%22math-spectral-norm%22:[11,12,12,12,12],%22regexp-dna%22:[99,110,121,104,122],%22string-base64%22:[25,25,25,25,25],%22string-fasta%22:[106,109,108,109,111],%22string-tagcloud%22:[127,163,132,129,127],%22string-unpack-code%22:[202,276,203,204,206],%22string-validate-input%22:[59,94,57,67,61]}">third</a> tests I ran with Firefox. One can also copy and paste URLs from one set of test results into a text box on a page that contains the other browser&#8217;s results to compare results.</p>
<p>As you may have seen if you have viewed the results of other JavaScript benchmark tests that have been posted on the web, they tend to list only the mean times it took to complete them. Confidence intervals are not mentioned in the Computerworld article that I previously mentioned. When one wants to see precisely how much faster one browser&#8217;s JavaScript engine is than another&#8217;s, one may want to take confidence intervals into account. However, in the tests that I ran, overall confidence intervals did not differ by a large percentage. The mean values and confidence intervals were similar for the three tests that were run on each browser. This gives a strong indication that Chrome&#8217;s JavaScript performance is significantly better than that of Firefox. </p>
<p>Google Chrome may outperform other browsers in JavaScript performance. However, Internet Explorer&#8217;s JavaScript performance is as good as Google Chrome&#8217;s when <a href="http://www.google.com/chromeframe">Google Chrome Frame</a> is used with it. According to <a href="http://www.computerworld.com/s/article/9138459/IE8_runs_10_times_faster_with_Google_plug_in">this other Computerworld article</a>, when Internet Explorer is used with Chrome&#8217;s JavaScript engine, its JavaScript performance is, understandably, much better. Once again, Computerworld used the SunSpider test suite to determine these JavaScript performance differences. Google Chrome&#8217;s JavaScript engine&#8217;s performance may be better than the performance of other JavaScript engines. It also appears that it will continue to be better than other JavaScript engines. In <a href="http://chrome.blogspot.com/2009/11/bookmark-sync-and-more-speed-in-latest.html">this post on the Google Chrome blog</a> it was said that JavaScript performance in its latest beta has increased by 30% since the last stable release of Google Chrome. </p>
]]></content:encoded>
			<wfw:commentRss>http://jake.kasprzak.ca/2009/11/16/benchmarking-of-javascript-performance-firefox-3-5-vs-google-chrome-3-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Explanations of What Makes Google Chrome Fast and Efficient</title>
		<link>http://jake.kasprzak.ca/2009/10/26/explanations-of-what-makes-google-chrome-fast-and-efficient/</link>
		<comments>http://jake.kasprzak.ca/2009/10/26/explanations-of-what-makes-google-chrome-fast-and-efficient/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 02:50:38 +0000</pubDate>
		<dc:creator>jkasprzak</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[Google Chrome]]></category>

		<guid isPermaLink="false">http://jake.kasprzak.ca/?p=724</guid>
		<description><![CDATA[Ever since I started using Google Chrome, I have been very impressed with its speed. I wondered what it is about this web browser that makes it as fast and efficient as it is. I decided to do some research on what makes it faster than other browsers that I have used. I have read [...]]]></description>
			<content:encoded><![CDATA[<p>Ever since I started using Google Chrome, I have been very impressed with its speed. I wondered what it is about this web browser that makes it as fast and efficient as it is. I decided to do some research on what makes it faster than other browsers that I have used. I have read some explanations of the design decisions that make it stand out, and some of these explanations are better than others. After my positive review of <a href="http://www.moserware.com/2009/09/stick-figure-guide-to-advanced.html">A Stick Figure Guide to the Advanced Encryption Standard (AES)</a>, some may not be surprised to find that I consider the best <a href="http://www.google.com/googlebooks/chrome/index.html">explanation of what makes Google Chrome fast and efficient to be in the form of a comic book</a>.</p>
<p>After I read about what makes Google Chrome faster than other browsers, I have found that a few points tend to be mentioned consistently. It is often said that its use of <a href="http://webkit.org/">the Webkit open source web browser layout engine</a> and <a href="http://code.google.com/p/v8/">the open source JavaScript engine known as V8</a> set it apart. What it is about Webkit and V8 that make Google Chrome faster and more efficient is mentioned in a number of different places. And these explanations appear in a number of different forms, such as this video in which Lars Bak, the head programmer of the V8 project, explains the concepts behind V8.</p>
<p><object type="application/x-shockwave-flash" width="425" height="344" data="http://www.youtube.com/v/hWhMKalEicY&#038;hl=en&#038;fs=1&#038;"><param name="movie" value="http://www.youtube.com/v/hWhMKalEicY&#038;hl=en&#038;fs=1&#038;1" /><param name="wmode" value="transparent" /></object></p>
<p>Some might consider the explanation in that video useful. Others, who do not have as much knowledge of the topics that Bak explains, would prefer explanations that they would be more likely to understand. I personally wanted a thorough and complete explanation of what makes Google Chrome as fast and efficient as it is. What I had not realized was that I needed to look no further than <a href="http://www.google.com/chrome/intl/en/features.html">the page on Google that lists its features</a> for the link to the information that I wanted to find. This information may have been there for a long time, although it seems to continue to be the best introductory guide to the technology that makes Google Chrome different.</p>
<p>It seemed to be appropriate that the best guide to Google Chrome&#8217;s features came from those employed at Google. The differences in its user interface, security handling, and performance are covered in it. In this post, I will only focus on Google Chrome&#8217;s speed and efficiency. I may cover the user interface and security design decisions in a different post about Google Chrome. If I do, I may once again refer to this comic.</p>
<p>There is a section on Webkit and V8 in that comic in which important concepts about V8 are explained well. Webkit, which is also used by Safari, is said to manage memory well. It is said that Google Chrome is designed for the world wide web of today rather than the one that existed when browsers were first written. That is the reason it was said to be important that its JavaScript engine be efficient, considering how often JavaScript is used in web applications. The concept of hidden classes is covered well, and it is covered in enough detail for its intended audience to understand the basics of it. Those who would like a more detailed explanation of this concept may see it <a href="http://code.google.com/apis/v8/design.html">explained in further detail here</a>. Also, it is mentioned that JavaScript is compiled into machine code when V8 is used. As those familiar with advantages of compiled code over code that is interpreted as JavaScript typically is, this can lead to a significant performance increase. Also, as hidden classes are created, the machine code can refer to these hidden classes, which leads to better performance. In addition, V8&#8242;s method of garbage collection is very efficient, and it is explained how memory is managed much more efficiently than it is in other JavaScript engines.</p>
<p>The explanations in this comic seem to be aimed at an audience that has some knowledge of the concepts explained in it. I thought that those who want to know more about this technology would find it understandable and entertaining. Some might also understand jokes in it, such as the &#8220;speed limit&#8221; <a href="http://www.google.com/googlebooks/chrome/big_16.html">depicted on this panel</a> as being 10<sup>100</sup>, also known as a googol. Some might like this comic, some might not. For those who prefer to view a video that covers some of the same material, but in less depth, there is this video. </p>
<p><object type="application/x-shockwave-flash" width="425" height="344" data="http://www.youtube.com/v/JGmO7Oximw8&#038;hl=en&#038;fs=1&#038;"><param name="movie" value="http://www.youtube.com/v/JGmO7Oximw8&#038;hl=en&#038;fs=1&#038;"><param name="wmode" value="transparent" /></object></p>
<p>Some may find my recent praise for comics interesting. Some might also find it interesting that I am praising Google Chrome after writing much here about Firefox. I still use Firefox quite often, mostly because of its extensions. However, when I want to use a browser that is simple, fast, and efficient, I use Google Chrome.</p>
]]></content:encoded>
			<wfw:commentRss>http://jake.kasprzak.ca/2009/10/26/explanations-of-what-makes-google-chrome-fast-and-efficient/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My Reaction to One of My Posts Being Overrated by Google</title>
		<link>http://jake.kasprzak.ca/2009/01/19/my-reaction-to-one-of-my-posts-being-overrated-by-google/</link>
		<comments>http://jake.kasprzak.ca/2009/01/19/my-reaction-to-one-of-my-posts-being-overrated-by-google/#comments</comments>
		<pubDate>Mon, 19 Jan 2009 05:29:32 +0000</pubDate>
		<dc:creator>jkasprzak</dc:creator>
				<category><![CDATA[Blogging]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://jake.kasprzak.ca/?p=218</guid>
		<description><![CDATA[One would think that I would be quite pleased when I see that one of my blog posts appear among the first ten results returned by Google when a commonly entered search term is entered into Google. However, there is one post that I had recently written that I do not believe is worthy of [...]]]></description>
			<content:encoded><![CDATA[<p>One would think that I would be quite pleased when I see that one of my blog posts appear among the first ten results returned by Google when a commonly entered search term is entered into Google. However, there is one post that I had recently written that I do not believe is worthy of being on the first page of Google&#8217;s search results after a certain frequently entered search term is submitted to Google.</p>
<p>I have recently found that a number of individuals have found their way to my site after entering &#8220;writing firefox extensions&#8221; into a search engine. It was after finding that more individuals than I expected were viewing a post that contains that search term in its title that I decided to conduct a Google search using that term. I then found that the blog post that I wrote titled &#8220;Going Beyond Programming When Writing Firefox Extensions&#8221; was on the first page of search results when I Googled that term. You can see <a href="http://www.google.com/search?hl=en&#038;q=writing+firefox+extensions">where that blog post currently ranks in search results when that term is entered if you click here</a>. Since the time that I first discovered where that post ranked when that search term is used, I have found that that post did not rank as high as it previously did. However, I am unsure if it should be ranked among the first ten results, ahead of hundreds of thousands of results returned when a search for that term is conducted.</p>
<p>The term &#8220;writing firefox extensions&#8221; may often be entered by those who would like to join the many individuals who write extensions for Firefox. When a search for information on writing Firefox extensions is done, what individuals may want is the best information on how to write these extensions. However, my aforementioned blog post does not contain the best information for those who aspire to write Firefox extensions. Inclusion of the text of this search term in the title of that blog post is what may be one reason it ranks as high as it does among these search results. However, I never meant for that blog post to be considered an authoritative guide for those who want to write Firefox extensions. If I had known that that post was going to be ranked that high among search results, I would have put more effort into making it contain as much useful information as possible.       </p>
<p>I would like to apologize to those who tried to find information on writing Firefox extensions only to find that any of their time was wasted by coming across this information that may not have been very useful. I have mentioned before that Google is not perfect. That blog post being ranked as high as it is appears to be evidence of this fact. However, Google&#8217;s algorithms were designed and written by those who have much knowledge of search engine technology. To dispute where pages should rank among search results would seem to be arguing with these individuals. And who am I to argue with them? I suppose I will need to accept that some my blog posts rank higher among Google&#8217;s search results than they should.</p>
]]></content:encoded>
			<wfw:commentRss>http://jake.kasprzak.ca/2009/01/19/my-reaction-to-one-of-my-posts-being-overrated-by-google/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How Google Had Me Mistaken for a Bot</title>
		<link>http://jake.kasprzak.ca/2008/09/12/how-google-had-me-mistaken-for-a-bot/</link>
		<comments>http://jake.kasprzak.ca/2008/09/12/how-google-had-me-mistaken-for-a-bot/#comments</comments>
		<pubDate>Fri, 12 Sep 2008 23:56:21 +0000</pubDate>
		<dc:creator>jkasprzak</dc:creator>
				<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://jake.kasprzak.ca/2008/09/12/how-google-had-me-mistaken-for-a-bot/</guid>
		<description><![CDATA[As trusted as Google is, and as infallible as it may sometimes seem, sometimes mistakes are made by Google&#8217;s services. In fact, a rather amusing error appeared in Google News recently. When Russian troops entered the former Soviet republic of Georgia, a story about it on Google News included a map that indicated that these [...]]]></description>
			<content:encoded><![CDATA[<p>As trusted as Google is, and as infallible as it may sometimes seem, sometimes mistakes are made by Google&#8217;s services. In fact, a rather amusing error appeared in Google News recently. When Russian troops entered the former Soviet republic of Georgia, a story about it on Google News included a map that indicated that these Russian troops were actually in the American state of Georgia, and were located just west of Savannah and southeast of Atlanta. Although the error may have been corrected, it was not corrected before it was noticed by at least a few individuals, <a href="http://valleywag.com/5034988/google-news-informs-us-that-the-russians-are-invading-the-south">as you can see if you view this story about this error</a>. There are times such as these that it is apparent that Google&#8217;s services need to have improvements made to their ability to analyze data to determine the context of data. And recently, when I was using Google&#8217;s search service, I found that it made the mistake of indicating that I was not a human.</p>
<p>In last fortnight&#8217;s entry here, I wrote about performing and preventing SQL injection attacks. After writing about that, I considered following up on that entry by writing about these attacks in greater depth. I thought of writing more about everything that one would perform in the process leading up to the SQL injection attack, rather than simply the SQL injection itself. So I decided to gain some practical experience with what may be involved in performing such attacks.</p>
<p>A step that is often performed when hacking is that of looking for potential targets that might have some sort of vulnerability. This activity is one that tends to have the word &#8220;war&#8221; prefixed to it, as phrases such as &#8220;wardialing&#8221;, &#8220;wardriving&#8221; and even &#8220;warflying&#8221; are often used to describe variations of this activity. And to look for websites that have login forms (through which SQL injection attacks can be attempted) Google can be used. To list websites that have login forms, one can enter a search query such as &#8220;inurl:login.php&#8221; into Google. This works because pages with login forms often have &#8220;login.php&#8221; or &#8220;login.asp&#8221; in their URLs. After I used this method for finding pages that have login forms, many results were returned. However, many of the sites returned in these results may not have had SQL injection vulnerabilities. So I then thought of a way of making it more likely that search results would contain pages that have these vulnerabilities.</p>
<p>The idea that I had for increasing the probability of finding sites with such vulnerabilities was based on this assumption: Websites that have these vulnerabilities are unlikely to be listed in the first pages of Google&#8217;s search results. Websites that would be more likely to be ranked before others when Google searches are performed may be more likely to have the measures needed to prevent SQL injection attacks implemented. Therefore, after displaying the first few pages of results after submitting the search query, I decided to bring up the tenth page of results, and then I brought up the nineteenth page of results. Then I received an error saying that my search query looked &#8220;similar to automated requests from a computer virus or spyware application.&#8221; Google thought that I was a bot. And so if you <a href="http://www.google.com/search?hl=en&amp;q=inurl:login.php&amp;start=180">click here to perform a Google search similar to the one that I performed</a>, you can convince Google that you are a bot as well.</p>
<p>I recall hearing about others finding that something like this happened to them. However, I had never experienced anything like this myself. I was not trying to pass or fail a <a href="http://en.wikipedia.org/wiki/Reverse_Turing_test">reverse Turing test</a>, and Google gave me a result that was unexpected and, of course, inaccurate. Some may find it interesting that I am writing something that may seem critical of Google near Google&#8217;s tenth anniversary. However, I did use Google in trying to find websites with a  certain characteristic. And that is one of many tasks that I would always use Google to perform.</p>
]]></content:encoded>
			<wfw:commentRss>http://jake.kasprzak.ca/2008/09/12/how-google-had-me-mistaken-for-a-bot/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cookie Revealer: One Reason Greasemonkey Should Allow Its Scripts Access to Cookies</title>
		<link>http://jake.kasprzak.ca/2008/05/09/cookie-revealer-one-reason-greasemonkey-should-allow-its-scripts-access-to-cookies/</link>
		<comments>http://jake.kasprzak.ca/2008/05/09/cookie-revealer-one-reason-greasemonkey-should-allow-its-scripts-access-to-cookies/#comments</comments>
		<pubDate>Fri, 09 May 2008 03:52:45 +0000</pubDate>
		<dc:creator>jkasprzak</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Greasemonkey]]></category>

		<guid isPermaLink="false">http://jake.kasprzak.ca/?p=53</guid>
		<description><![CDATA[Log off. That cookie s&#8212; makes me nervous. &#8211;Tony Soprano The malicious activity that can result from Greasemonkey scripts having the ability to access cookies has been a topic of discussion among Greasemonkey aficionados. Cookie-related Greasemonkey issues and the possible solutions to them were mentioned in the recent trilogy of entries on this blog about [...]]]></description>
			<content:encoded><![CDATA[<p><i>Log off. That cookie s&#8212; makes me nervous.</i><br />
<b>&#8211;Tony Soprano</b></p>
<p>The malicious activity that can result from Greasemonkey scripts having the ability to access cookies has been a topic of discussion among Greasemonkey aficionados. Cookie-related Greasemonkey issues and the possible solutions to them were mentioned in the recent trilogy of entries on this blog about past and present security concerns with Greasemonkey.  Possible solutions to these issues were mentioned in the third part of that series of entries. And one solution mentioned is one that would completely eliminate the possibility of Greasemonkey scripts performing malicious cookie-related activity. Such a solution would be implemented by having a future version of Greasemonkey deny its user scripts access to cookies. This solution may seem drastic, although it is one that has been given some consideration.</p>
<p>This simple solution&#8217;s drawbacks are about as obvious as its benefits. And if this solution were implemented, these drawbacks would be very similar to the ones that existed a few years ago when Greasemonkey 0.3.5 was released. The issues that Greasemonkey had with its API functions at the time necessitated that these API functions be disabled in version 0.3.5, and these changes caused many scripts to not work with this version. And Greasemonkey denying its scripts access to cookies would cause <a href="http://www.google.com/search?q=document.cookie+site%3Auserscripts.org%2Fscripts%2Freview">hundreds of Greasemonkey scripts to not work, as one can see by performing this Google search for scripts that use the <code>document.cookie</code> property</a>. It should also be noted that the security issues prevented at the time Greasemonkey&#8217;s API functions were disabled were considered much more serious than the issue of cookie stealing scripts. In this case, the benefits of precluding a security risk do not outweigh the disadvantage of causing the number of scripts that would be affected to not work.</p>
<p>Many Greasemonkey scripts depend upon access to cookie data via the <code>document.cookie</code> property, and some of these scripts cannot exist at all without access to cookies. These scripts that would cease to be useful at all if Greasemonkey scripts could not access cookies are ones that perform what many users would like to have done with cookies. And in this entry, these scripts that completely depend on access to cookies are the topic. However, as the title of this entry suggests, much of the focus of this entry will be on one script in particular whose function is to work with cookies.</p>
<p>Greasemonkey scripts may be able to perform malicious cookie-related activity, although there are a few scripts that do what many users may want done with cookies. I considered writing a post here in which I would list a few of these scripts that are primarily for working with cookies. And I discovered a few scripts that require access to cookies in order to perform what they are intended to perform. One of these scripts is titled <a href="http://userscripts.org/scripts/show/6984">&#8220;Google Search Cookie Cleaner.&#8221;</a> Much has been said about <a href="http://googleblog.blogspot.com/2007/07/cookies-expiring-sooner-to-improve.html">Google&#8217;s cookie policy</a>, and how Google having its cookies expire after two years <a href="http://www.computerworld.com/action/article.do?command=viewArticleBasic&amp;articleId=9027411">matters little to some of those concerned about privacy</a>. And the Google Search Cookie Cleaner script removes much data from cookies that could possibly be used to track users. Another script, titled <a href="http://userscripts.org/scripts/show/10448">&#8220;Google Anonymizer&#8221;</a> takes this prevention of possible tracking of user activity on Google&#8217;s part a few steps further. In addition to deleting more data that is in cookies from Google, it can disable JavaScript functions that appear to be used by Google to track users. And whereas the Google Search Cookie Cleaner script has a disadvantage in that it takes away the user&#8217;s ability to store preferences for Google searches, the Google Anonymizer script allows users to store these preferences by saving them in Firefox&#8217;s preferences.</p>
<p>There was one more script that I found was entirely dependent upon its ability to access cookies, as work with cookies was its primary function. This script, known as <a href="http://userscripts.org/scripts/show/952">&#8220;Cookie Monster&#8221;</a> was one that I found did not work at all when I tried to use it. It was quite unfortunate that it did not work, as its ability to give a quick way to reveal cookie data set by the page being viewed would be considered useful by some. A few modifications were needed in order to make it work, and so I decided to make those modifications, and I added a few of my own personal touches to it. And this modified version of the script, which I refer to as &#8220;Cookie Revealer,&#8221; is the primary topic of this blog post, as I explain how I went beyond simply making the script on which it was based work properly</p>
<p>There are a number of different ways that one can view the cookie data set by a page being viewed when Firefox is used. However, when using the option in Firefox for displaying cookies or a number of Firefox extensions made for working with cookies, there are no easy ways to get a quick overview of what is happening on a page cookie-wise. One might want information on cookies set by a page to be accessible through the page itself. Therefore, a script that adds elements to pages in which cookie data set by pages can be accessed could be one that some might want. And this script, which adds elements to web pages and frames within pages through which cookie data set by the page and its frames can be accessed, makes data in cookies easily accessible. And after I made adjustments to the script so that it would work as intended, I found the script useful. In fact, I used it to determine what data was removed from cookies set by Google by the two scripts previously mentioned. However, there were a few adjustments that I thought should be made to it.</p>
<p>Previously, the script would display cookie data only when leaving the mouse cursor over the elements the script would add. This may not be preferable to some, as in this case, the cursor would often be in the way of the cookie data being displayed. In addition, one would have more difficulty highlighting this cookie data when trying to copy and paste it, as the cookie data would disappear whenever the cursor is even slightly outside the area that would display this data. Therefore, I chose to modify it so that one could toggle whether or not cookie data is to be displayed by double-clicking the elements the script adds to pages. Also, I modified the CSS properties of the added elements so that scroll bars would added to the elements when necessary, so that all cookie data could be viewed when there is much cookie data to display. In addition, changes could be made to cookies while the pages that set them are displayed. And so I modified the script so that after these changes are made, they will appear when the cookie data is redisplayed. Also, the functionality for completely removing the elements for displaying cookie data was also removed, as one could simply disable the script and refresh the page when one does not want these elements to be displayed. Below are links to screen shots of a page on which this script is running. The first one simply displays the element added in the lower left corner of the page by the script, and the other displays cookie data after this element is double-clicked.</p>
<p><a href="http://img142.imageshack.us/my.php?image=cookierevealerss1vn0.jpg" target="_blank"><img src="http://img142.imageshack.us/img142/704/cookierevealerss1vn0.th.jpg" alt="Free Image Hosting at www.ImageShack.us" border="0" /></a><a href="http://img301.imageshack.us/my.php?image=cookierevealerss2pu4.jpg" target="_blank"><img src="http://img301.imageshack.us/img301/1037/cookierevealerss2pu4.th.jpg" alt="Free Image Hosting at www.ImageShack.us" border="0" /></a></p>
<p>If you have Greasemonkey installed, <a href="http://jake.kasprzak.ca/code/cookierevealer.user.js">then you can click here to install this script</a>. I already have some ideas in mind on how to improve upon this script. I was primarily interested in simply making this script work correctly, and there are some improvements that can be made to it to make cookie data more easily visible in some cases. This is only version 0.1.0 of this script, and new versions of it will almost certainly be released in the future. There might be those who will suggest improvements to it, and implementing requested improvements will be a priority for me. There may be interest in this script and in improvements to it, and that is why this script could be considered a reason Greasemonkey should not disallow its scripts access to cookies.</p>
<p>However, some ideas I have for improvements to this script are beyond Greasemonkey&#8217;s scope. Therefore, what could evolve from this script is another useful Firefox extension for handling cookies. I may need to take some time to see if there are Firefox extensions that perform anything similar to what I am thinking of writing, as I prefer not to waste my time writing redundant extensions. In any case, I will write software that could make some people less nervous about cookies.</p>
<p>Note: There is a poll within this post, please visit the site to participate in this post&#8217;s poll.</p>
]]></content:encoded>
			<wfw:commentRss>http://jake.kasprzak.ca/2008/05/09/cookie-revealer-one-reason-greasemonkey-should-allow-its-scripts-access-to-cookies/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Better YouTube: Coming Soon to a Browser Near You?</title>
		<link>http://jake.kasprzak.ca/2007/10/28/better-youtube-coming-soon-to-a-browser-near-you/</link>
		<comments>http://jake.kasprzak.ca/2007/10/28/better-youtube-coming-soon-to-a-browser-near-you/#comments</comments>
		<pubDate>Sun, 28 Oct 2007 21:46:01 +0000</pubDate>
		<dc:creator>jkasprzak</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Gmail]]></category>
		<category><![CDATA[Google Calendar]]></category>
		<category><![CDATA[Greasemonkey]]></category>
		<category><![CDATA[YouTube]]></category>

		<guid isPermaLink="false">http://jake.kasprzak.ca/2007/10/28/better-youtube-coming-soon-to-a-browser-near-you/</guid>
		<description><![CDATA[In the first few days after writing the previous blog entry here, I found myself uncertain of what to write here next. However, it seemed as if the decision regarding what I should write next was made for me after this previous blog entry was featured on Lifehacker. It was after this happened that I [...]]]></description>
			<content:encoded><![CDATA[<p>In the first few days after writing the previous blog entry here, I found myself uncertain of what to write here next. However, it seemed as if the decision regarding what I should write next was made for me after <a href="http://lifehacker.com/software/how-to/make-youtube-better-with-greasemonkey-314698.php">this previous blog entry was featured on Lifehacker.</a> It was after this happened that I knew that I needed to follow up on what I had previously written, with everything that was said about what I wrote.</p>
<p>I would first like to say that I was flattered that something that I wrote was featured among the interesting material on Lifehacker. However, I would have preferred that they got my name right when mentioning who wrote the featured blog post. And it was my first name, not my often-misspelled surname that was not entered correctly there. And to those interested in how I reacted to seeing that I was twice referred to as &#8220;Jane Kasprzak&#8221; in that post, I would like to say that I laughed out loud. However, my name being entered incorrectly there was not something that mattered to me very much. The interesting discussions that resulted from what I wrote is a reason my name being entered incorrectly is not something I will focus on here.</p>
<p>Some interesting points were made by Adam Pash, and by those who have contributed comments in response to what I wrote. It was after Mr. Pash asked for comments on Greasemonkey scripts for YouTube (and other related YouTube tweaks) that some interesting comments were made. A few other interesting Greasemonkey scripts were mentioned both here and in the comments section of the Lifehacker post. In fact, when writing last week&#8217;s blog post, I considered mentioning that some may prefer <a href="http://userscripts.org/scripts/show/7981">the script for removing comments</a>, rather than the one for moving comments to a different location. This is one example of two scripts for YouTube that users may want to have, but conflict with each other. And there are many other scripts that perform many other tasks that may conflict with each other, but are ones that users may still want enabled at certain times. For this reason, it would be good to have a Firefox extension that contains all of these scripts and only allows scripts that do not conflict with each other to be simultaneously enabled. And it is this kind of extension that Adam Pash less-than-subtly suggested be written, and this suggestion led to another discussion that I would like to join.</p>
<p>Mr. Pash alluded to <a href="https://addons.mozilla.org/en-US/firefox/addon/4866">the extension titled &#8220;Better Gmail&#8221;</a> that contains over twenty-five (25) Greasemonkey scripts that a user can have enabled. Many of these scripts are considered features that can be added to Gmail, and others are considered skins to customize the appearance of Gmail. It is convenient to have an extension such as this, as it saves the user the time that would be spent looking for and downloading each individual script. In addition, with this extension, scripts that conflict with each other cannot be simultaneously enabled through the interface that it has. And so with the many scripts available for enhancing YouTube, would it not make sense for a similar extension titled &#8220;Better YouTube&#8221; to be made available? Well, such an extension may be on its way soon.</p>
<p>There certainly would be interest in this kind of extension, and it may be available sooner than one might think, because it may be fairly easy to develop. This extension could simply be based on the Better Gmail extension, which in turn seems to be based on <a href="https://addons.mozilla.org/en-US/firefox/addon/5299">the Better GCal extension.</a> After looking through the source code for both of these extensions, it appears that few modifications of the Better Gmail extension need to be made for it to work with YouTube. It may need to be based on the Better Gmail code, as the code for the Better GCal extension does not appear to work with conflicting scripts. It might take some time to determine which scripts should be included in this extension, and to determine which ones might conflict with each other. However, Gina Trapani, who wrote these two extensions, has emphasized in <a href="http://lifehackerbook.com/">her book</a> that where there&#8217;s a will there&#8217;s a way. And it is not my intention to pressure Ms. Trapani or anyone else who might write this extension into getting it done quickly. I am only saying it can be done, and that it may be done soon.</p>
<p>When I wrote last week&#8217;s blog post, I never did expect it to lead to the kind of discussion that took place here, let alone on Lifehacker. I never did think that this post would lead to anything that might possibly be considered a catalyst for the development of a Firefox extension that many would consider useful. However, I am quite pleased to see this, as this extension that I am indirectly and accidentally responsible for creating interest in is one that I too would like to see.</p>
]]></content:encoded>
			<wfw:commentRss>http://jake.kasprzak.ca/2007/10/28/better-youtube-coming-soon-to-a-browser-near-you/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simplifying Searching Specific Sites</title>
		<link>http://jake.kasprzak.ca/2007/08/19/simplifying-searching-specific-sites/</link>
		<comments>http://jake.kasprzak.ca/2007/08/19/simplifying-searching-specific-sites/#comments</comments>
		<pubDate>Sun, 19 Aug 2007 21:48:36 +0000</pubDate>
		<dc:creator>jkasprzak</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Greasemonkey]]></category>
		<category><![CDATA[YouTube]]></category>

		<guid isPermaLink="false">http://jake.kasprzak.ca/2007/08/19/simplifying-searching-specific-sites/</guid>
		<description><![CDATA[With Google being the one of the most useful websites there are, and with the way it tends to be the place people tend to go to when looking for information online, many people set it to being the home page of their browsers. After opening a web browser, it is best to have it [...]]]></description>
			<content:encoded><![CDATA[<p>With <a href="http://www.google.com/">Google</a> being the one of the most useful websites there are, and with the way it tends to be the place people tend to go to when looking for information online, many people set it to being the home page of their browsers. After opening a web browser, it is best to have it open to the page that one would most often need to have open, and that is likely why I haven&#8217;t found that many have had a problem with <a href="http://www.google.com/firefox?client=firefox-a&amp;rls=org.mozilla:en-US:official">the default Mozilla Firefox home page</a> being not much different from Google&#8217;s main page. There might be those who would prefer to use <a href="http://www.google.com/advanced_search?hl=en">Google&#8217;s advanced search page</a> and there are those who may prefer using <a href="http://www.google.com/ig">iGoogle</a> to use a more personalized version of Google. However, I wanted to personalize Google&#8217;s main page by adding some advanced search features to it. And that sounded like something that could be done with Firefox&#8217;s <a href="http://www.greasespot.net/">Greasemonkey extension</a>.</p>
<p>One of the advanced features of Google that I use most often is the one for searching within specific domains or websites, as Google can be better for searching through sites than the search features included in some sites. I have  often found that I like to search for <a href="http://www.youtube.com"> YouTube</a> videos once I get Firefox started up, and YouTube-specific searches are not going to be included on Google&#8217;s main page despite Google owning YouTube. And I did not want to use <a href="http://mycroft.mozdev.org/dlstats.html">the search plugin for YouTube, which you can find and download if you click here,</a> as I preferred to simply work with what was on the web page. So I wanted to add some functionality to the Google&#8217;s main page that would allow YouTube-specific searches, as I was getting tired of having to type in &#8220;site:www.youtube.com&#8221; after entering search terms. And I still wanted to be able to do these searches from the main Google page, rather than set my browser&#8217;s home page to the advanced search page. (And even if I did have it set to this advanced search page, I would still need to type in the domain name in the place where it needed to be entered, which I wanted to avoid.)</p>
<p>I am fairly new to using Greasemonkey, as it has been somewhat recently that I have found out how useful it can be. What I have liked the most about it is its ability to add the kind of functionality to web pages that I, but not necessarily others, would like to see on them. And so I decided to use Greasemonkey to make it so that I could use some of Google&#8217;s advanced search capabilities on the simple and uncluttered main Google page. I quickly wrote a Greasemonkey script that adds a button for YouTube-specific searches to Google&#8217;s main page, and to Google&#8217;s pages that display search results. After entering the search string and clicking this button, it displays search results from within youtube.com. I have found this script useful so far, as it has saved me keystrokes, mouse clicks, and time it takes to load pages. In fact, I found it very useful after I time I walked by the intersection of Yonge and Dundas Streets in Toronto, where I saw a sidewalk chalk artist suggest doing a search on YouTube for &#8220;chalk this way.&#8221; With this script, the result that he would want me to see was the first in the list of the results, and I was able to get there without having to go through YouTube.</p>
<p><a href="http://jake.kasprzak.ca/code/searchyoutubefromgoogle.user.js">You can click here to download this Greasemonkey script.</a> I don&#8217;t expect many others to be very interested in using the script at this time, but I&#8217;m making it available for those who might want to use it. I should also note that this script may be something I&#8217;ll continue to work on. And as is the case with anything else I write, any feedback would be appreciated. Also worth mentioning is that this script only requires a few slight modifications for making it so it can search other sites. I&#8217;m not sure how many members of Greasemonkey&#8217;s userbase might be willing to make these slight modifications to the source code, even though in the source, it is documented where changes need to be made to make it search different sites.  It is quite possible that those who use Greasemonkey can often be expected to make those kinds of changes, as Greasemonkey users may tend to be advanced Firefox users. However, I am not quite sure of this, but the topic of the level of knowledge of Greasemonkey users can be a topic for another blog entry.</p>
]]></content:encoded>
			<wfw:commentRss>http://jake.kasprzak.ca/2007/08/19/simplifying-searching-specific-sites/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

