<?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; Greasemonkey</title>
	<atom:link href="http://jake.kasprzak.ca/category/greasemonkey/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>Thu, 24 Dec 2009 17:57:21 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Using Gmail&#8217;s Filters and Labels to Organize Data</title>
		<link>http://jake.kasprzak.ca/2009/08/24/using-gmails-filters-and-labels-to-organize-data/</link>
		<comments>http://jake.kasprzak.ca/2009/08/24/using-gmails-filters-and-labels-to-organize-data/#comments</comments>
		<pubDate>Mon, 24 Aug 2009 01:52:46 +0000</pubDate>
		<dc:creator>jkasprzak</dc:creator>
				<category><![CDATA[Blogging]]></category>
		<category><![CDATA[Gmail]]></category>
		<category><![CDATA[Greasemonkey]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://jake.kasprzak.ca/?p=645</guid>
		<description><![CDATA[When users of Gmail are asked why they prefer to use Gmail, they may give many different answers. Some Gmail users might say that they like how Gmail offers a large amount of storage space. Some of them may use Gmail because of its spam filtering capabilities. Some of them like the features that it [...]]]></description>
			<content:encoded><![CDATA[<p>When users of Gmail are asked why they prefer to use Gmail, they may give many different answers. Some Gmail users might say that they like how Gmail offers a large amount of storage space. Some of them may use Gmail because of its spam filtering capabilities. Some of them like the features that it has, as some like to be able to easily search, filter, and label their e-mails. I set up a Gmail account for all of these reasons that I mentioned. I previously had not found that I had much need to be able to search, filter, or label e-mails in my inbox. However, I recently found that I had more use for filters and labels than I thought I had. </p>
<p>E-mail may often be considered a medium of communication that tends to be between two individuals. However, it has been made so that it can be a one-to-many communication medium in addition to being a one-to-one communication medium. Electronic mailing lists have been in existence for a long time, so e-mails have been sent in bulk without them being considered spam for a long time. Also, websites that are often updated tend to include the option for users to receive updates about them via e-mail. Some websites simply send e-mail alerts to users who have accounts set up on them by default. This type of e-mail gets sent out so often, the term &#8220;Bacn&#8221; was coined for it. Users can limit the amount of Bacn that they receive by not subscribing to e-mail lists, and by subscribing to RSS feeds instead whenever possible. However, e-mail updates can sometimes be necessary.</p>
<p>E-mails from mailing lists and websites tend to be characterized as being sent from the same sender, and these e-mails tend to have similar text in their subject lines. Therefore, users can easily set up filters in Gmail so that messages that match characteristics of Bacn that they receive can have appropriate labels applied to them. For example, I use <a href="http://wordpress.org/extend/plugins/wp-db-backup/">a WordPress plugin named &#8220;WP-DB-Backup&#8221;</a> to send myself backup copies of the database that this blog uses via e-mail. The e-mails sent by this plugin all list &#8220;WordPress&#8221; as the sender of them, and have &#8220;Jake Kasprzak Online Database Backup&#8221; in the subject lines of these e-mails. As these e-mails have these characteristics, I was able to set up a filter so that all messages that have these characteristics will have the label of &#8220;blog backup&#8221; applied to them. Therefore, any time I want to display only the backup copies of this blog that I have received via e-mail, I can select the appropriate label. There may also be times that I may not want to see my inbox cluttered with Bacn such as this. As I tend to label the Bacn that I receive, I display only unlabeled messages to filter out the Bacn in my inbox. There are Greasemonkey user scripts for displaying only unlabeled messages in Gmail, and I use those ones. One titled <a href="http://userscripts.org/scripts/show/2283">&#8220;Gmail Unlabelled&#8221; can be used with the older version of Gmail</a> and <a href="http://jaidev.info/home/hacks/gmailUnlabelled">the version of this script that can be used with the newer version of Gmail can be found here</a>. </p>
<p>There are other reasons to use these labels. This is because e-mail account inboxes are sometimes used for purposes other than storage of messages from other people. When e-mail services offer large amounts of space for storing messages, users use these services for storing large files. The storage capacity offered to Gmail users is one of the reasons many Gmail users, myself included, use it to store files. In fact, <a href="http://richard.jones.name/google-hacks/gmail-filesystem/gmail-filesystem.html">GmailFS</a> was created for storing files on Gmail accounts. However, Google&#8217;s terms of use prohibit the use of their services by any automated means or any means other than through the interface provided by Google, so GmailFS violates these terms. Nevertheless, Gmail can be useful for storing files, albeit through non-automated means. I sometimes store files there, and I sometimes perform searches through Gmail&#8217;s interface to find these files. I also create filters that apply labels to essentially save the searches that I perform most often.  </p>
<p>In the time that I have spent blogging, I have sometimes found that I have needed to send notes to myself. I sometimes need to e-mail links to myself, and I annotate these links with information on them. I am often at different locations when I find interesting information on the web, and so I often have my information stored on and accessible from my Gmail account. As you may have surmised, sending myself many e-mails leads to clutter in my inbox. I have found that when I e-mail information such as links to myself, I tend to use similar subject lines. I often include the word &#8220;notes&#8221; in the subject lines of these e-mails that I send myself. Therefore, I can create a filter that looks for what I tend to include in the subject lines of these messages, and applies appropriate labels to them. I can also have these filters search for appropriate text within the messages that I may want to bring up at later times. </p>
<p>What I have mentioned here may certainly not be considered novel or innovative by those who already try to get the most out of Gmail. I do not plan on being <a href="http://gmailblog.blogspot.com/2009/07/submit-video-so-much-email-so-little.html">one of those who will submit a video on how I organize my Gmail inbox</a>. However, there may be many who may not be getting the most out of Gmail, and may find that it is even more useful than they thought it was. This blog entry is intended for those who have yet to see how useful Gmail can be. E-mail accounts may often be used for storing personal information, and Gmail seems to have been designed with that in mind. Gmail truly is an e-mail service that has been made better than users have previously imagined an e-mail service could be. </p>
]]></content:encoded>
			<wfw:commentRss>http://jake.kasprzak.ca/2009/08/24/using-gmails-filters-and-labels-to-organize-data/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why I Set Up a Twitter Account</title>
		<link>http://jake.kasprzak.ca/2009/08/04/why-i-set-up-a-twitter-account/</link>
		<comments>http://jake.kasprzak.ca/2009/08/04/why-i-set-up-a-twitter-account/#comments</comments>
		<pubDate>Tue, 04 Aug 2009 18:38:14 +0000</pubDate>
		<dc:creator>jkasprzak</dc:creator>
				<category><![CDATA[Blogging]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Greasemonkey]]></category>

		<guid isPermaLink="false">http://jake.kasprzak.ca/?p=626</guid>
		<description><![CDATA[Previously, I had not found that I needed to post anything to this blog that was up to the minute. And I previously never found that I needed to post anything that was 140 characters in length or less. For these reasons, I never set up an account on Twitter. I could have used a [...]]]></description>
			<content:encoded><![CDATA[<p>Previously, I had not found that I needed to post anything to this blog that was up to the minute. And I previously never found that I needed to post anything that was 140 characters in length or less. For these reasons, I never set up an account on Twitter. I could have used a Twitter account to post information on when this blog is updated. However, I did not think that there would be anything that I would &#8220;tweet&#8221; other than information on blog updates. That was until a few incidents that occurred recently.</p>
<p>I found that I needed to update <a href="http://userscripts.org/scripts/show/47138">the Greasemonkey user script that I wrote titled &#8220;Do Not Remember Me&#8221;</a> a few weeks ago. There was a very minor adjustment that I needed to make to it after a change was made to the Google Accounts login form. I chose not to write a blog post about this update, as this update was a very minor one. However, if I had a Twitter account at the time, information on this update could have been posted there. Also, <a href="https://addons.mozilla.org/en-US/firefox/addon/9027">the Firefox extension that I wrote titled &#8220;Bookmark Current Tab Set&#8221;</a> is now considered public and is no longer considered experimental. This change of the status of this Firefox extension is more information that I thought would be better suited to a Twitter post than to a post to this blog.</p>
<p>You may <a href="http://twitter.com/jkasprzak">find me on Twitter here</a>. I am not sure how often I will be posting to my Twitter account. However, I plan on posting to it, as I plan on continuing to post to this blog, and I plan on &#8220;tweeting&#8221; about updates to this blog. </p>
]]></content:encoded>
			<wfw:commentRss>http://jake.kasprzak.ca/2009/08/04/why-i-set-up-a-twitter-account/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Do Not Remember Me: A Greasemonkey Script for Those Who Do Not Want to Be &#8220;Remembered&#8221; by Websites</title>
		<link>http://jake.kasprzak.ca/2009/04/20/do-not-remember-me-a-greasemonkey-script-for-those-who-do-not-want-to-be-remembered-by-websites/</link>
		<comments>http://jake.kasprzak.ca/2009/04/20/do-not-remember-me-a-greasemonkey-script-for-those-who-do-not-want-to-be-remembered-by-websites/#comments</comments>
		<pubDate>Mon, 20 Apr 2009 23:49:09 +0000</pubDate>
		<dc:creator>jkasprzak</dc:creator>
				<category><![CDATA[Greasemonkey]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://jake.kasprzak.ca/?p=384</guid>
		<description><![CDATA[It seems that nearly every website that has a form for logging into it includes an option for having the website &#8220;remember&#8221; the user. Some users find it convenient to be &#8220;remembered&#8221; by sites, as when they are remembered, they will not need to enter their usernames and passwords as often. However, there are disadvantages [...]]]></description>
			<content:encoded><![CDATA[<p>It seems that nearly every website that has a form for logging into it includes an option for having the website &#8220;remember&#8221; the user. Some users find it convenient to be &#8220;remembered&#8221; by sites, as when they are remembered, they will not need to enter their usernames and passwords as often. However, there are disadvantages to being remembered by sites. Some users are not the only ones who use their computers, and would thus want to ensure that a feature that could allow other users of their computers access to their accounts would not be selected. In addition, <a href="http://en.wikipedia.org/wiki/Cross-site_request_forgery">cross-site request forgery (CSRF) attacks</a> depend on users being logged into sites, <a href="http://www.maximumpc.com/article/news/twitter_users_hope_cure_mikeyy_worm_lasts">as several Twitter users discovered recently</a>. Therefore, use of a &#8220;remember me&#8221; feature could increase the probability of users being victims of CSRF attacks. </p>
<p>Despite these facts, some websites have the option to be remembered by them selected by default. However, some users may want to try to make it less likely that others will access their accounts by ensuring that the option to be remembered would never be selected. And some might consider it a nuisance to need to deselect the option to be remembered by a site each time they want to log into a site. For these reasons, I decided to write a Greasemonkey script that would remove the checkmarks from checkboxes for indicating that the user wants to be remembered by websites.</p>
<p>This <a href="http://userscripts.org/scripts/show/47138">Greasemonkey script that I titled &#8220;Do Not Remember Me&#8221;</a> is one that looks for checkboxes on web pages and determines whether or not they are for remembering users by checking nearby page material. By default, it is set to work with all websites. However, some users may want to be remembered by some websites. For that reason, this script is one that users of it may want to configure so that it will not be used by some websites.  </p>
<p>This script, like other Greasemonkey scripts that are made to work with all websites, might possibly not actually work with all websites. Some users might find errors in it that will cause it to not work with some websites. However, I have found that it does work with the websites that made me want to write this script. Some who often log into <a href="http://userscripts.org">Userscripts.org</a>, the website where this and many other Greasemonkey scripts can be found, may want to use this script. As you can see if you view <a href="https://userscripts.org/login">the login page on Userscripts.org</a>, the option to be remembered by that site is selected at first. I myself did not want to keep removing the checkmark from the option to be remembered by that website. It also works with <a href="https://www.google.com/accounts/ManageAccount">the login page on Google Accounts</a>, which also remembers its users by default. I have also found that it works with <a href="http://www.hotmail.com">Hotmail&#8217;s login page</a>. I also set it up so that it would actually add checkmarks to checkboxes that say &#8220;public terminal&#8221; beside them, as one can see by viewing <a href="http://www.slashdot.org">Slashdot</a> with the script enabled. In addition to ensuring that it works with as many sites as possible, I have tried making it as efficient as possible. It might not currently be as efficient as it could and should be. However, I chose to release it as it is so that I could allow others to critique it. </p>
<p>I could make this post less boring by mentioning some more interesting facts about it. I originally decided to call this script &#8220;Don&#8217;t Remember Me.&#8221; However, it might then be referred to as &#8220;DRM.&#8221; Many consider that the acronym for Digital Rights Management. I wanted to avoid this acronym collision, even though I did not think that this script would ever be listed on <a href="http://en.wikipedia.org/wiki/DRM">Wikipedia&#8217;s disambiguation page for DRM</a>. Some who would look through the code may not be entertained when viewing it. However, I thought of mentioning that the purpose of one function in the script was to &#8220;check checkboxes to check if they should be unchecked&#8221; and eventually decided to choose clarity over comedy in my comments. </p>
<p>If you have Greasemonkey installed, then you can <a href="http://jake.kasprzak.ca/code/donotrememberme.user.js">install this script if you click here</a>. As always, I would be pleased to answer any questions about this script. I could go into greater detail about the implementation of what I wrote, although I do not tend to be asked questions about the implementation details of what I write. I will say that I have also considered writing a very similar script titled &#8220;Do Not Remember My Passwords.&#8221; As you may have surmised, it would deselect checkboxes for indicating that passwords are to be remembered. I considered combining these two scripts into one titled &#8220;Do Not Remember Me and Do Not Remember My Passwords Either&#8221; although I thought it might be best to keep these scripts separate. However, what I do next with this script and any related ones may depend on any suggestions that I may receive.  </p>
]]></content:encoded>
			<wfw:commentRss>http://jake.kasprzak.ca/2009/04/20/do-not-remember-me-a-greasemonkey-script-for-those-who-do-not-want-to-be-remembered-by-websites/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Importance of NoScript&#8217;s Surrogate Scripts</title>
		<link>http://jake.kasprzak.ca/2009/03/23/the-importance-of-noscripts-surrogate-scripts/</link>
		<comments>http://jake.kasprzak.ca/2009/03/23/the-importance-of-noscripts-surrogate-scripts/#comments</comments>
		<pubDate>Mon, 23 Mar 2009 23:57:06 +0000</pubDate>
		<dc:creator>jkasprzak</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Greasemonkey]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://jake.kasprzak.ca/?p=331</guid>
		<description><![CDATA[The tradeoff between security and convenience is one that users often face when browsing the web. Those who prefer security at the expense of convenience would prefer to use the Firefox extension called NoScript, which is an extension whose name emphasizes the measures it takes to secure the browser. There are those who would say [...]]]></description>
			<content:encoded><![CDATA[<p>The tradeoff between security and convenience is one that users often face when browsing the web. Those who prefer security at the expense of convenience would prefer to use <a href="http://noscript.net/">the Firefox extension called NoScript</a>, which is an extension whose name emphasizes the measures it takes to secure the browser. There are those who would say that the measures that NoScript takes in making Firefox a more secure browser are too excessive, as it blocks all scripts that are not whitelisted. Much web page content is blocked by NoScript until whitelisted. And that can be quite inconvenient, as users of <a href="http://userscripts.org/scripts/show/12673">my Greasemonkey script that works with embedded YouTube videos</a> have noted on a few occasions. Some pages actually may not function correctly at all when sites such as Yieldmanager.com are blocked by NoScript. As some users do not want to have to choose between allowing all scripts that a page uses and not having the page function correctly, an attempt at solving this issue is implemented in the more recent versions of NoScript. Newer versions of NoScript replace some blocked scripts with scripts that are known as surrogate scripts.</p>
<p>These surrogate scripts handle the situations in which 3rd party scripts from sites such as Yieldmanager.com look for page content that is blocked by NoScript. These surrogate scripts cause pages to be more likely to be error-free by replacing blocked scripts with similar scripts. Some concerned &#8220;non-geeks&#8221; have wanted to know if these surrogate scripts send any data to 3rd party sites. However, those who have viewed and understand the source code in these scripts can assure these individuals that these scripts simply try to prevent web pages from being broken. There are some users of NoScript who had previously found that some pages were broken unless scripts from sites such as Yieldmanager.com were allowed. I found that when scripts from Yieldmanager.com were blocked, pages on Imageshack.us appeared to be broken. However, these pages did not appear to be broken when the surrogate script for Yieldmanager.com was used. I have also found that these surrogate scripts cut down on the clutter that appears in the error console, as there would be fewer errors on pages when these surrogate scripts are used.</p>
<p>Users who have used the more recent versions of NoScript may have used these surrogate scripts without even knowing that they used them. However, there are those who might want to more easily configure these scripts. At this time, there is no user interface for configuration of surrogate scripts, because as NoScript author Giorgio Maone says, those who would configure these scripts and options regarding them would likely not need one. Still, a UI would be convenient, as adjustments to configuration settings may sometimes be necessary. One might want to more easily adjust which sites use surrogate scripts and which ones do not. Also, one might want to be informed when sites are using these surrogate scripts. In fact, I decided to make a few adjustments to surrogate scripts so that they would display information that says surrogate scripts are being used right on these pages where they are used.</p>
<p>I wanted to know when the surrogate script for code from YieldManager.com was being used. So I added a JavaScript <code>alert</code> statement to the surrogate script for YieldManager.com to determine this. As those who are familiar with JavaScript know, that statement would make a pop-up window appear when that script is executed. I then decided to make that code more complex by adding code to it that would execute when the page is finished loading so that text would be added directly to pages to indicate that this surrogate script is being used with these pages. However, it would be preferable for information on when these scripts are being used to instead be in the browser UI.</p>
<p>Users of the web may always need to choose between security and convenience. The newer versions of NoScript make it so that less convenience would need to be sacrificed for improved security. Still, it would be more convenient for there to be a UI to work with these surrogate scripts used by NoScript. However, it is good to know that the decision to choose security over convenience when browsing the web now seems to be a less difficult one to make.</p>
]]></content:encoded>
			<wfw:commentRss>http://jake.kasprzak.ca/2009/03/23/the-importance-of-noscripts-surrogate-scripts/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>A Defence of a Greasemonkey Script That I Never Thought I Would Defend</title>
		<link>http://jake.kasprzak.ca/2009/03/09/a-defence-of-a-greasemonkey-script-that-i-never-thought-i-would-defend/</link>
		<comments>http://jake.kasprzak.ca/2009/03/09/a-defence-of-a-greasemonkey-script-that-i-never-thought-i-would-defend/#comments</comments>
		<pubDate>Mon, 09 Mar 2009 05:18:22 +0000</pubDate>
		<dc:creator>jkasprzak</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Greasemonkey]]></category>

		<guid isPermaLink="false">http://jake.kasprzak.ca/?p=300</guid>
		<description><![CDATA[It was almost a year ago that I quickly wrote a Greasemonkey user script titled &#8220;Web Form Data Analyzer.&#8221; This script, which can be found here, is one that modifies the action attributes of &#60;form&#62; tags of web pages so that submitted form data is redirected to a page that displays exactly what data gets [...]]]></description>
			<content:encoded><![CDATA[<p>It was almost a year ago that I quickly wrote a Greasemonkey user script titled &#8220;Web Form Data Analyzer.&#8221; This <a href="http://userscripts.org/scripts/show/24512">script, which can be found here</a>, is one that modifies the <code>action</code> attributes of <code>&lt;form&gt;</code> tags of web pages so that submitted form data is redirected to a page that displays exactly what data gets submitted through forms. The page to which the data is sent is one that is specifically for displaying that data, and is part of <a href="http://www.schrenk.com/nostarch/webbots/">the official reference website for the book titled &#8220;Webbots, Spiders, and Screen Scrapers&#8221;</a> by Michael Schrenk. It is not a script that I have often used myself, as I have not taken much time to view what data is sent via web forms. When I first released that script, I mentioned that I did not expect there to be much interest in it. There are some, however, who have installed this script. It also received <a href="http://userscripts.org/scripts/reviews/24512">a negative review from a user on Userscripts.org</a>, which stated there is no way to ensure that the page to which the form data is sent can be trusted. In addition, it was said in that review that one should instead use <a href="https://addons.mozilla.org/en-US/firefox/addon/966">a Firefox extension titled &#8220;Tamper Data&#8221;</a> as that extension is one that can be trusted. While that extension can be used to view submitted form data, there are reasons one may prefer to use the script that I wrote instead.</p>
<p>While some might like to be able to view data that is being sent to and from a web browser, there are those who may find that the Tamper Data extension is not what they need. Those who want to be able to view the data that is sent via web forms may want something more simple, and something that is specialized to the task of displaying the data that is sent through forms. The Web Form Data Analyzer script is for those who only need the software to perform the task that it performs. In addition, the script displays the form data that would be sent through the form without the data ever being sent to the website to which form data is supposed to be sent. Therefore, those who would prefer to simply view the data that would be sent through a form without actually submitting it to the site where it is supposed to go may prefer to use this script.</p>
<p>There may be those who are not sure if the page to which the script redirects submitted form data will accurately display this submitted data. However, <a href="http://www.schrenk.com/nostarch/webbots/scripts/reader.php?show=LISTING_5_10.php">the source code that this page apparently uses can be viewed here</a>. As one can see by viewing that code, it is simply PHP code that displays values that would be stored in variables when form data is submitted. And if one does not think that that page actually uses that source code, then the script could be modified so that the page to which it redirects form data will be different. What would be needed in that case would be a web server to host a page that uses code that displays this data. One would likely be using Firefox when using this script, and so one would likely be able to use <a href="http://davidkellogg.com/wiki/Main_Page">an extension called Plain Old Webserver</a> to set up a web server. Going through this process of setting up a web server that hosts this page might seem like more work than it is worth, although it is a way to ensure that the data returned will be accurate.</p>
<p>This script may be useful for those who trust the official reference website for the book titled “Webbots, Spiders, and Screen Scrapers.” Those who do not trust it may find that there are other methods for determining what data is sent through web forms. Opinions on whether or not that page can be trusted may differ, and this script is useful for those who believe that the page that this script uses is reliable.</p>
]]></content:encoded>
			<wfw:commentRss>http://jake.kasprzak.ca/2009/03/09/a-defence-of-a-greasemonkey-script-that-i-never-thought-i-would-defend/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>User Feedback Still Driving the Development of My Greasemonkey Script for Embedded YouTube Videos</title>
		<link>http://jake.kasprzak.ca/2009/02/02/user-feedback-still-driving-the-development-of-my-greasemonkey-script-for-embedded-youtube-videos/</link>
		<comments>http://jake.kasprzak.ca/2009/02/02/user-feedback-still-driving-the-development-of-my-greasemonkey-script-for-embedded-youtube-videos/#comments</comments>
		<pubDate>Mon, 02 Feb 2009 05:45:36 +0000</pubDate>
		<dc:creator>jkasprzak</dc:creator>
				<category><![CDATA[Greasemonkey]]></category>
		<category><![CDATA[YouTube]]></category>

		<guid isPermaLink="false">http://jake.kasprzak.ca/?p=246</guid>
		<description><![CDATA[I have mentioned before that the software that I have written is written primarily for myself.  However, I sometimes gradually lose interest in using the software that I wrote for myself. When this happens, I am not as likely to discover errors in what I wrote. Therefore, those who use what I wrote test [...]]]></description>
			<content:encoded><![CDATA[<p>I have mentioned before that the software that I have written is written primarily for myself.  However, I sometimes gradually lose interest in using the software that I wrote for myself. When this happens, I am not as likely to discover errors in what I wrote. Therefore, those who use what I wrote test my software for me through their use of it. Although these users might not consider their use of my software testing of my software, a sufficiently large number of them will be able to find errors in what I write. Although I would prefer to find errors before these users do, these errors do get corrected regardless of who finds them. Once again, an error was found in <a href="http://userscripts.org/scripts/show/12673">my Greasemonkey script that adds links below embedded YouTube videos to the pages on YouTube where these videos can be found</a>. And once again, the discovery of this error was made by a user of this script.</p>
<p>What was discovered may not be considered a bug, as not displaying links below embedded videos that are no longer available on YouTube might be considered expected from this script. However, when I found the time to work on this, I found that the script would add links below videos that are no longer available on YouTube when the option to display video titles is not selected. I needed to find a more appropriate way for this situation to be handled, as the script did not handle this case consistently.</p>
<p>I decided to update the script so that it will always add links below embedded YouTube videos that are no longer available on YouTube.  However, it will also add information saying that the title of the video is not available in this case. This information will not be displayed if the option to display titles is not selected. I personally think that this may be considered an appropriate way to handle this situation. However, some might prefer that information on whether or not the video is available always be included in the links added by the script.</p>
<p>If any users have any ideas on better ways to handle this situation, I would like to know what they are. Once again, suggestions from end users will likely be implemented.</p>
]]></content:encoded>
			<wfw:commentRss>http://jake.kasprzak.ca/2009/02/02/user-feedback-still-driving-the-development-of-my-greasemonkey-script-for-embedded-youtube-videos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Minor Updates to Software That I Wrote</title>
		<link>http://jake.kasprzak.ca/2009/01/05/minor-updates-to-software-that-i-wrote/</link>
		<comments>http://jake.kasprzak.ca/2009/01/05/minor-updates-to-software-that-i-wrote/#comments</comments>
		<pubDate>Mon, 05 Jan 2009 05:30:15 +0000</pubDate>
		<dc:creator>jkasprzak</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Greasemonkey]]></category>
		<category><![CDATA[YouTube]]></category>

		<guid isPermaLink="false">http://jake.kasprzak.ca/?p=202</guid>
		<description><![CDATA[Although I am not sure what kind of software I should write next, I am certain that I will maintain and update what I have already written. And I have recently found that I needed to update one of my Greasemonkey scripts as well as the Firefox extension that I wrote. The Greasemonkey script that [...]]]></description>
			<content:encoded><![CDATA[<p>Although I am not sure what kind of software I should write next, I am certain that I will maintain and update what I have already written. And I have recently found that I needed to update one of my Greasemonkey scripts as well as the Firefox extension that I wrote. The <a href="http://userscripts.org/scripts/show/12673">Greasemonkey script that I wrote titled &#8220;Link to YouTube Video Pages from Embedded YouTube Videos&#8221;</a> was found to not work with an embedded video, so I corrected it. The <a href="https://addons.mozilla.org/en-US/firefox/addon/9027">Firefox extension titled &#8220;Bookmark Current Tab Set&#8221;</a> that I wrote needed to have an update made to its user interface, and so that update was made. These updates may certainly not have been critical, although I do consider these updates necessary.</p>
<p>This Greasemonkey script that I wrote did not work with embedded videos that were embedded a certain way, and so I made the necessary corrections to it. I also added a feature to it so that it would not add links to YouTube pages on the <a href="http://video.google.com/">main Google Video page</a>. This was done because there already is a link below the embedded video that is featured on that page to the page on YouTube where that video can be found. These updates were quite minor, although they needed to be made.</p>
<p>In version 0.2.0 of the Firefox extension that I wrote, I added a menu option that brings up a dialog box. However, it was only after releasing this version of the extension that I thought that I should add an ellipsis to the end of the title of this menu option. I could have checked the extension more thoroughly for errors both in functionality and in the user interface before releasing version 0.2.0 of the extension. However, as is it often said that those who write this kind of software should release early and release often, I chose to release it before I could check for all errors that I might have made in writing it. </p>
<p>I am currently trying to decide on what kind of software to write next, and I am not sure what my focus should be. However, I am sure that I will continue to make the necessary updates to what I have already written.</p>
]]></content:encoded>
			<wfw:commentRss>http://jake.kasprzak.ca/2009/01/05/minor-updates-to-software-that-i-wrote/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Making a Greasemonkey Script for Embedded YouTube Videos Work with More Embedded Videos</title>
		<link>http://jake.kasprzak.ca/2008/11/16/making-a-greasemonkey-script-for-embedded-youtube-videos-work-with-more-embedded-videos/</link>
		<comments>http://jake.kasprzak.ca/2008/11/16/making-a-greasemonkey-script-for-embedded-youtube-videos-work-with-more-embedded-videos/#comments</comments>
		<pubDate>Sun, 16 Nov 2008 23:37:51 +0000</pubDate>
		<dc:creator>jkasprzak</dc:creator>
				<category><![CDATA[Greasemonkey]]></category>
		<category><![CDATA[YouTube]]></category>

		<guid isPermaLink="false">http://jake.kasprzak.ca/?p=123</guid>
		<description><![CDATA[As I have mentioned a number of times here before, I always appreciate receiving feedback about the software that I write. I need feedback from the users of my software in order to ensure that my software works as it should, and to know how I can make improvements to what I write. And I [...]]]></description>
			<content:encoded><![CDATA[<p>As I have mentioned a number of times here before, I always appreciate receiving feedback about the software that I write. I need feedback from the users of my software in order to ensure that my software works as it should, and to know how I can make improvements to what I write. And I was recently informed that my <a href="http://userscripts.org/scripts/show/12673">Greasemonkey script that adds links below embedded YouTube videos to the pages on YouTube on which these videos can be found</a> did not work with a video embedded on a particular page. A new version of the script that corrected this error was made available within twenty-four (24) hours of a comment being posted about this error. It was a very simple error that occurred as a result of me assuming that when an embedded video is added to a web page, few changes, if any, are made to the code one can copy and paste from the page on YouTube on which the video can be found. I later discovered on my own that this script had another similar error that occurred as a result of me making this assumption.</p>
<p>This second error was one that I discovered after Googling myself. This egosurfing indirectly led me to <a href="http://videodriveblog.com/2007/10/04/jake-kasprzak-on-link-to-youtube-video-pages-from-embedded/">this page, which actually has information on this script</a>. However, the page actually contains an embedded YouTube video to which my script did not add a link. After checking the parameters in the tags used to embed the video, I found that the .SWF extension was added to the end of the URL of the YouTube page where the video can be found. Therefore, I once again needed to update this script to handle a case that I did not think it would need to handle. Once again, however, only slight modifications needed to be made to correct this error. </p>
<p>This script has been publicly available for a long time. And during the time that it had been publicly available, errors like these had either not been found or were never reported. I certainly hope that the former rather than the latter is the case, for obvious reasons. However, in any case, I will try to decrease the number of pages on the web that have YouTube videos embedded in them with which this script will not work. </p>
]]></content:encoded>
			<wfw:commentRss>http://jake.kasprzak.ca/2008/11/16/making-a-greasemonkey-script-for-embedded-youtube-videos-work-with-more-embedded-videos/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>For Internet Explorer Users Who Want Gmail the Old-Fashioned Way</title>
		<link>http://jake.kasprzak.ca/2008/10/10/for-internet-explorer-users-who-want-gmail-the-old-fashioned-way/</link>
		<comments>http://jake.kasprzak.ca/2008/10/10/for-internet-explorer-users-who-want-gmail-the-old-fashioned-way/#comments</comments>
		<pubDate>Fri, 10 Oct 2008 20:34:21 +0000</pubDate>
		<dc:creator>jkasprzak</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Gmail]]></category>
		<category><![CDATA[Greasemonkey]]></category>

		<guid isPermaLink="false">http://jake.kasprzak.ca/?p=74</guid>
		<description><![CDATA[I was aware of the existence of add-ons for Internet Explorer that give it the ability to run user scripts. I was also aware of the possibility that there are Internet Explorer users who would like to be able to use JavaScript scripts that modify web pages, without having to use Mozilla Firefox with Greasemonkey in order to do [...]]]></description>
			<content:encoded><![CDATA[<p>I was aware of the existence of add-ons for Internet Explorer that give it the ability to run user scripts. I was also aware of the possibility that there are Internet Explorer users who would like to be able to use JavaScript scripts that modify web pages, without having to use Mozilla Firefox with Greasemonkey in order to do so. However, I had not made efforts to ensure that any of the scripts that I had written could have been used with browsers other than Firefox. The reasons I had never tried to make these scripts work with other browsers are related to the reasons I began writing these scripts. I write these scripts for myself and for all those who would want to use them. I personally almost always use Firefox as my web browser, and I have not received any requests to make any of my scripts work with other browsers. Until now.</p>
<p>I recently received a request from an Internet Explorer user to modify <a href="http://userscripts.org/scripts/show/13941">my Greasemonkey user script that redirects users to the older version of Gmail after logging into Gmail</a> so that it could be used with Internet Explorer. And after discovering that I could simply remove the code for toggling whether or not the secure version of Gmail is to be used to make it compatible to Internet Explorer&#8217;s add-ons for running user scripts, I made these changes. This option for using HTTPS while using Gmail may have been obsolete for the last few months, as it was a few months ago that <a href="http://gmailblog.blogspot.com/2008/07/making-security-easier.html">Gmail began giving this option for using HTTPS while in Gmail</a>. I tested this modified version of the script with <a href="http://www.bhelpuri.net/Trixie/">an add-on for Internet Explorer known as Trixie</a> and found that the script worked with that add-on. I also copied and pasted the script code into a script that comes with <a href="http://www.ie7pro.com/">an add-on called IE7Pro</a> and found that it worked with IE7Pro, although not as efficiently.</p>
<p><a href="http://jake.kasprzak.ca/code/redirecttooldversionofgmie.user.js">This version of the script can be retrieved from here</a>. This script might also work with Safari when its add-on for running user scripts is installed. However, I have been unable to use <a href="http://8-p.info/greasekit/">this add-on, titled GreaseKit</a>, to determine whether or not Safari users can use this script. I have also been unable to test out this script on Google Chrome when it is used with <a href="http://greasemetal.31tools.com/">Greasemetal</a>, although users of Google Chrome might possibly be able to use it. This version of the script, however, does not work with Opera. However, I may take the time to make this script work with Opera. Once again, whether or not I will ensure that this script will work with other browsers depends on whether or not there will be demand for this support from users of these other browsers.</p>
]]></content:encoded>
			<wfw:commentRss>http://jake.kasprzak.ca/2008/10/10/for-internet-explorer-users-who-want-gmail-the-old-fashioned-way/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How Not to Prevent SQL Injection Attacks</title>
		<link>http://jake.kasprzak.ca/2008/08/29/how-not-to-prevent-sql-injection-attacks/</link>
		<comments>http://jake.kasprzak.ca/2008/08/29/how-not-to-prevent-sql-injection-attacks/#comments</comments>
		<pubDate>Fri, 29 Aug 2008 23:33:03 +0000</pubDate>
		<dc:creator>jkasprzak</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Greasemonkey]]></category>

		<guid isPermaLink="false">http://jake.kasprzak.ca/2008/08/29/how-not-to-prevent-sql-injection-attacks/</guid>
		<description><![CDATA[SQL injection vulnerabilities have existed and have been exploited for several years. However, as is often the case with a class of security vulnerabilities, such vulnerabilities continue to exist long after methods of preventing these vulnerabilities become well-known. One might think that certain commonly-used SQL injection attack methods would not succeed long after they become [...]]]></description>
			<content:encoded><![CDATA[<p>SQL injection vulnerabilities have existed and have been exploited for several years. However, as is often the case with a class of security vulnerabilities, such vulnerabilities continue to exist long after methods of preventing these vulnerabilities become well-known. One might think that certain commonly-used SQL injection attack methods would not succeed long after they become well-known. However, some websites are vulnerable to SQL injection attacks that had been known about for years. And in the following video, an individual demonstrates this in performing a security audit on the <a href="http://www.nwhealth.edu/">Northwestern Health Sciences University&#8217;s website</a>. </p>
<p><object type="application/x-shockwave-flash" style="width:425px; height:350px;" data="http://www.youtube.com/v/MJNJjh4jORY&amp;hl=en&amp;fs=1&amp;color1=0x3a3a3a&amp;color2=0x999999"><param name="movie" value="http://www.youtube.com/v/MJNJjh4jORY&amp;hl=en&amp;fs=1&amp;color1=0x3a3a3a&amp;color2=0x999999" /><param name="allowFullScreen" value="true" /></object> </p>
<p>As one can see after viewing the video, after an initial attempt at injecting SQL statements into a login form on <a href="https://www.nwhealth.edu/enorthwestern/login.aspx">this page</a>, it was revealed that characters that tend to be used in SQL injection attacks were filtered using JavaScript. Then, it was demonstrated that such JavaScript-based filters can be removed by simply editing the page&#8217;s source code and saving it on the local hard drive. Other modifications were made to the page&#8217;s source code, such as conversion of a relative URL for submission to an absolute URL, which was necessary as the modified page was to be viewed offline. In addition, the maximum length of the password field needed to be increased in order for the SQL injection attack string to be entered, and so that change was also made. Also, as one would prefer to be able to view all data one is submitting, the password field was changed to a regular text field so that text in that field could have been viewed.</p>
<p>Measures may have been taken to  prevent SQL injection attacks through this page. However, as was demonstrated in this video, measures taken through client-side code can be very easily circumvented. As a matter of fact, some of the tasks performed by the individual performing the security audit could have been automated, thus decreasing the amount of effort needed to succeed in performing the attack. Making the password field text visible and increasing the maximum length of the password field can be done automatically via Greasemonkey user scripts. Also, extensions for Firefox such as <a href="https://addons.mozilla.org/en-US/firefox/addon/60">the Web Developer extension</a> can also automatically perform such tasks as revealing what is typed in password fields.  Disabling of JavaScript could also possibly be done to circumvent JavaScript-based filters. And if it is found that the site requires that JavaScript be used, then manual page modification could be done to remove JavaScript. In any case, measures for preventing SQL injections should not be in client-side code, which is an important lesson one can learn after viewing this video.</p>
<p>Also demonstrated in the video are possible implications of SQL injection vulnerabilities. After it was revealed that the attack was successful, it was demonstrated why it was important for security measures to be put in place on that site. Much information on the individual whose account was accessed became visible, as one could see near the latter part of the video. One such piece of sensitive information accessed was that individual&#8217;s social security number. And when SSNs can be accessed through a site, one should certainly keep that fact in mind when trying to prevent unauthorized access to the data in databases used by the site.</p>
<p>This video has been viewed over 500,000 times at the time that I have published this entry. However, I am not sure how many times it was viewed before the page was corrected. This video demonstrates how not to prevent SQL injections, although it should not be considered a tutorial on how to perform SQL injections. A very common SQL injection string is used after the easily-circumvented measures taken to prevent it from being submitted are circumvented. Use of the methods used in performing this attack will not work when attempted on many sites. However, one has to wonder how many websites use such a flawed method of preventing SQL injection attacks. Even if 99% of websites use better measures to prevent these attacks, that still leaves many websites vulnerable to this type of attack. And how many of those websites have information as sensitive as SSNs stored in the databases that they use?</p>
<p>This video may not teach those who view it much about how to prevent or perform SQL injection attacks. Its lesson seems to be the importance of preventing these attacks. When sensitive data can be accessed by a user with proper credentials, a website through which this data can be accessed should certainly not fall for some of the oldest tricks in the book.</p>
]]></content:encoded>
			<wfw:commentRss>http://jake.kasprzak.ca/2008/08/29/how-not-to-prevent-sql-injection-attacks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
