<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-9145229162204135472</id><updated>2024-11-03T13:53:45.973-05:00</updated><category term="facebook"/><category term="autopoke"/><category term="greasemonkey"/><category term="gpl"/><category term="javascript"/><category term="license violation"/><category term="the last well"/><category term="userscripts"/><category term="alpha"/><category term="firefox"/><category term="greasmonkey"/><category term="inital"/><category term="initial"/><category term="interfacelift downloader"/><category term="necessity is the mother of all inventions"/><category term="paste"/><category term="release"/><category term="security"/><category term="wikihow"/><category term="zagg"/><title type='text'>tailgate</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://tailgate-blog.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9145229162204135472/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://tailgate-blog.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/9145229162204135472/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>26</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9145229162204135472.post-8693521726274105391</id><published>2012-11-15T18:30:00.000-05:00</published><updated>2012-11-15T18:30:01.546-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="firefox"/><category scheme="http://www.blogger.com/atom/ns#" term="interfacelift downloader"/><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><title type='text'>New version of InterfaceLIFT Downloader coming soon</title><content type='html'>I&#39;ve spent the past few months getting &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/interfacelift-downloader/?src=ss&quot; target=&quot;_blank&quot;&gt;InterfaceLIFT Downloader&lt;/a&gt; to work better.&amp;nbsp; One of things that the addon was pinged on was it&#39;s use of innerHTML and non-sanitized text.&amp;nbsp; I thought I had fixed this a while back but apparently there were a few other parts of code that created the vulnerability.&lt;br /&gt;
&lt;br /&gt;
0.5 was uploaded to Firefox Addons a while back.&amp;nbsp; It was rejected.&amp;nbsp; :-(&lt;br /&gt;
&lt;br /&gt;
InterfaceLIFT Downloader was my first venture into the Firefox Addon world.&amp;nbsp; While I consider myself a JavaScript expert, it turns out creating an Addon comes with it&#39;s own set of problems.&amp;nbsp; First off, you actually have to care about security.&amp;nbsp; Most of the JavaScript I wrote is for the web and since the browser ultimately decides what is safe and what isn&#39;t, I can do whatever I want.&amp;nbsp; However, this is not the case with Addons.&amp;nbsp; Addons give you unparalleled power and this power comes with a heavy responsibility.&lt;br /&gt;
&lt;br /&gt;
I&#39;ve put the finishing touches and will be Alpha testing it on my computer first before submitting it for review.&lt;br /&gt;
&lt;br /&gt;
Also, I am working on a 1.0 version of this addon.&amp;nbsp; My hope is to have it be a sidebar that can be displayed along side of the InterfaceLIFT website.&amp;nbsp; Also, assuming that 0.5 gets approved, the addon will be branched to GitHub for easier maintenence.&amp;nbsp; Tailgate is really for the one-off scripts (e.g. greasemonkey) and not for full-blown packages. The &lt;a href=&quot;https://github.com/sohmc/interfacelift_downloader&quot; target=&quot;_blank&quot;&gt;repository is already set up&lt;/a&gt;.&amp;nbsp; Nothing there yet, but will be populated after 0.5 gets approved. </content><link rel='replies' type='application/atom+xml' href='http://tailgate-blog.blogspot.com/feeds/8693521726274105391/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tailgate-blog.blogspot.com/2012/11/new-version-of-interfacelift-downloader.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9145229162204135472/posts/default/8693521726274105391'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9145229162204135472/posts/default/8693521726274105391'/><link rel='alternate' type='text/html' href='http://tailgate-blog.blogspot.com/2012/11/new-version-of-interfacelift-downloader.html' title='New version of InterfaceLIFT Downloader coming soon'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9145229162204135472.post-2439481778267251777</id><published>2012-05-24T18:30:00.000-04:00</published><updated>2012-05-24T18:30:01.637-04:00</updated><title type='text'>Just as I feared: the newest Autopoke doesn&#39;t work</title><content type='html'>As I was getting ready to deploy the newest version of Facebook Autopoke, I decided to open it up to see if it still works.&amp;nbsp; Just as I feared, it doesn&#39;t.&lt;br /&gt;
&lt;br /&gt;
A very quick look at the source and it looks like that it will take quite a long time to figure out how to do automatically again.&lt;br /&gt;
&lt;br /&gt;
Back in January, I decided to stop development on Facebook Autopoke because there were various copies of my script on userscripts.&amp;nbsp; While a vast majority of them have been deleted and removed, it shifted my focus elsewhere.&amp;nbsp; And with the ever-changing landscape of Facebook, it&#39;s becoming clear that the &quot;Poke&quot; feature is becoming antiquated.&amp;nbsp; What I mean by this is that the &quot;Poke&quot; feature isn&#39;t a major button anymore.&amp;nbsp; It&#39;s actually tucked away under the &quot;Gears&quot; menu.&lt;br /&gt;
&lt;br /&gt;
I believe it&#39;s only a matter of time before Facebook does away with the whole poke thing.&amp;nbsp; Originally, this script allowed me to beat friends in poke wars.&amp;nbsp; And since I&#39;m no longer poking anyone, this script was maintained only for others.&lt;br /&gt;
&lt;br /&gt;
My personal philosophy in coding has been to code to make my life easier and then release the code to others to see if anyone else can benefit from it.&amp;nbsp; Since I&#39;m no longer using the script, I&#39;m sure this announcement will cause you pain.&lt;br /&gt;
&lt;br /&gt;
Effective immediately, all development on my Facebook Autopoke script will cease.&lt;br /&gt;
&lt;br /&gt;
I will be releasing the latest changes to the Facebook Autopoke script this weekend so that if you want the latest code, you can get it.&amp;nbsp; Be advised that it&#39;s set to &quot;developer&quot; mode so it produces a lot of noisy output.&amp;nbsp; I want to thank users who have put up with me inconsistent build schedule and for all of the support over the five-ten years that this script has been in development.&amp;nbsp; The userscript uid is 5200!&amp;nbsp; This was one of the first scripts I ever wrote.&amp;nbsp; Going back through each revisions show how much I had learned as a programmer and how much my style has evolved.&lt;br /&gt;
&lt;br /&gt;
Normally, when I retire a program, I release the code under the more permissive MIT License.&amp;nbsp; But because of the numerous violations, the code will stay under the GPL until further notice.&amp;nbsp; If you would like to use a different license, please contact me.&lt;br /&gt;
&lt;br /&gt;
Finally, you&#39;ll notice that tailgate is more than just for the Facebook Autopoke.&amp;nbsp; Instead of creating a Google code project for individual script I write, I decided to create one repository for everything.&amp;nbsp; The latest script that I have written is &lt;a href=&quot;http://userscripts.org/scripts/show/131063&quot; target=&quot;_blank&quot;&gt;Give Me Paste Back&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://tailgate-blog.blogspot.com/feeds/2439481778267251777/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tailgate-blog.blogspot.com/2012/05/just-as-i-feared-newest-autopoke-doesnt.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9145229162204135472/posts/default/2439481778267251777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9145229162204135472/posts/default/2439481778267251777'/><link rel='alternate' type='text/html' href='http://tailgate-blog.blogspot.com/2012/05/just-as-i-feared-newest-autopoke-doesnt.html' title='Just as I feared: the newest Autopoke doesn&#39;t work'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9145229162204135472.post-2672610979234677974</id><published>2012-05-05T20:22:00.002-04:00</published><updated>2012-05-05T23:14:22.078-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="greasemonkey"/><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="necessity is the mother of all inventions"/><category scheme="http://www.blogger.com/atom/ns#" term="paste"/><title type='text'>Give Me Paste Back!</title><content type='html'>As a web-developer and a programmer, there&#39;s a rule about never trusting user input.&amp;nbsp; It&#39;s similar Murphy&#39;s law and why software companies spend lots of money beta testing.&amp;nbsp; If there is a wrong way to enter data, a mindless user will find a way.&lt;br /&gt;
&lt;br /&gt;
The rule of thumb to counter this is to programatically eliminate user error on the server-side.&amp;nbsp; This means that if you&#39;re expecting a phone number in format &quot;(555) 555-1212&quot; and the user enters it as &quot;555.555-1212&quot;, you either give an error or you process the data anyway after you fix the entry.&amp;nbsp; Eliminating the user&#39;s ability to type a period does solve the aspect of not being able to type a period only.&amp;nbsp; It does not eliminate a user from typing &quot;555&amp;nbsp;&amp;nbsp;&amp;nbsp; 55 5 -&amp;nbsp; 1212&quot;.&lt;br /&gt;
&lt;br /&gt;
I recently had this &quot;&lt;a href=&quot;http://sfy.co/u6D&quot; target=&quot;_blank&quot;&gt;discussion&lt;/a&gt;&quot; with the good folks at @CreditKarma in 140-characters or less.&amp;nbsp; They told me what I expected, but 140-characters isn&#39;t enough to tell why using JavaScript to turn off a browser feature is ultimately stupid and pointless.&lt;br /&gt;
&lt;br /&gt;
Overall, JavaScript should be used to &lt;b&gt;enhance&lt;/b&gt; the browsing experience.&amp;nbsp; Eliminating paste, right-mouse-click, obfuscating image URLs are all things that cheapen the user experience because the browser does not do what the user expects.&amp;nbsp; An user should not have to jump through digital hoops to be able to use a website in the way they would like.&lt;br /&gt;
&lt;br /&gt;
Specifically, pasting is something that most people do everyday.&amp;nbsp; They expect every application, whether it&#39;s Microsoft Word or their favorite browser, to do what they&#39;ve come to expect when pressing &quot;Ctrl-V&quot;.&lt;br /&gt;
&lt;br /&gt;
On the other hand, as a web-developer, I understand why folks like Credit Karma choose to prevent pasting via JavaScript.&amp;nbsp; It&#39;s cheaper to write one line to stop pasting than it is to actually test user input.&amp;nbsp; Testing user input would require more programming hours to test for each possibility.&amp;nbsp; Furthermore, you run the risk that the user was stupid and accidentally fat-fingered something in one box and then pasted it in another.&amp;nbsp; I will admit that I have done this.&lt;br /&gt;
&lt;br /&gt;
This is NO excuse for disabling a critical feature of the browsers.&amp;nbsp; However, if you simply MUST do this, consider the following:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;What frustrated me the most is that there was no feedback as to why paste did not work.&amp;nbsp; &lt;b&gt;INFORM THE USER&lt;/b&gt; that paste has been disabled and offer a reason.&amp;nbsp; They may not like it, but at least they know that the problem *&lt;b&gt;isn&#39;t*&lt;/b&gt; between the monitor and keyboard.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;PROVIDE A WAY TO PASTE ANYWAY&lt;/b&gt;.&amp;nbsp; A switch, a preference...anything that says, &quot;Hey, if you want to paste, we&#39;ll let you, but be sure you know what you&#39;re doing.&quot;&amp;nbsp; Doing this will help people like me who get frustrated and then write &lt;a href=&quot;http://userscripts.org/scripts/show/131063/&quot; target=&quot;_blank&quot;&gt;Greasemonkey scripts&lt;/a&gt; fixing your mess.&lt;/li&gt;
&lt;li&gt;No matter what client-side solution you create, a user will find a way to mess things up so &lt;b&gt;BE PREPARED TO HELP THEM&lt;/b&gt;.&amp;nbsp; Users make mistakes.&amp;nbsp; Give them a way to fix these mistakes instead of forcing them with the digital equivalent of cattle prods.&amp;nbsp; Guide them by giving them clear and concise instructions.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;DO NOT RELY ON JAVASCRIPT TO FIX YOUR CARELESSNESS&lt;/b&gt;.&amp;nbsp; Users expect their browser to behave in a specific way. Things like &lt;a href=&quot;http://jqueryui.com/demos/autocomplete/&quot; target=&quot;_blank&quot;&gt;autocomplete&lt;/a&gt; are a great way to augment the user experience.&amp;nbsp; However, forcing the user to wait while their browser counts down to 30 seconds is ridiculous when a crafty user can just read the source to get the final URL.&amp;nbsp; Furthermore, blocking the word &quot;DROP&quot; via javascript doesn&#39;t mean that they won&#39;t type in &quot;&lt;a href=&quot;http://xkcd.com/327/&quot; target=&quot;_blank&quot;&gt;; DROP TABLE customers&lt;/a&gt;&quot;.&amp;nbsp; &lt;/li&gt;
&lt;li&gt;Finally, &lt;b&gt;DO NOT &quot;EDIT WAR&quot;&lt;/b&gt;.&amp;nbsp; If people are downloading and using my script, it&#39;s because they are frustrated like me.&amp;nbsp; Listen to your users.&amp;nbsp; The frustration that we feel doesn&#39;t color your company well.&amp;nbsp; Web Development is like electricity: we don&#39;t think about it until something goes wrong.&amp;nbsp; And users will make sure you hear them loud and clear.&lt;/li&gt;
&lt;/ul&gt;
Bottom line: Do not negatively alter the user&#39;s browser behavior &lt;b&gt;unless you have absolutely exhausted every other option&lt;/b&gt;.&amp;nbsp; And if you have to, let the user know that you have done so.&amp;nbsp; After all, you are a guest in the user&#39;s browser.&amp;nbsp; (Technically, the user is the guest, but I digress.)&amp;nbsp; Don&#39;t scruff the floors, drink all the milk and put the carton back in the fridge.&amp;nbsp; Be a great guest so that the user will invite you back.&amp;nbsp; Otherwise, you&#39;ll find yourself lower and lower on the user&#39;s favorites/bookmarks and less and less on their minds.&lt;br /&gt;
&lt;br /&gt;
All of this aside, &lt;a href=&quot;http://creditkarma.com/&quot; target=&quot;_blank&quot;&gt;Credit Karma&lt;/a&gt; is a great service.&amp;nbsp; They provide a way for you to get your credit score for free.&amp;nbsp; Yes, actually free unlike FreeCreditReport.com.&amp;nbsp; I do recommend them, even with their broken registration process.&lt;br /&gt;
&lt;br /&gt;
So here it is: &lt;a href=&quot;http://userscripts.org/scripts/show/131063/&quot; target=&quot;_blank&quot;&gt;Give Me Paste Back&lt;/a&gt; now in version 0.2, tested specifically on Credit Karma.&amp;nbsp; Download the script and then go to Credit Karma and sign up for an account.</content><link rel='replies' type='application/atom+xml' href='http://tailgate-blog.blogspot.com/feeds/2672610979234677974/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tailgate-blog.blogspot.com/2012/05/give-me-paste-back-aka-how-to-tell.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9145229162204135472/posts/default/2672610979234677974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9145229162204135472/posts/default/2672610979234677974'/><link rel='alternate' type='text/html' href='http://tailgate-blog.blogspot.com/2012/05/give-me-paste-back-aka-how-to-tell.html' title='Give Me Paste Back!'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9145229162204135472.post-8161701153933407703</id><published>2012-04-28T09:23:00.001-04:00</published><updated>2012-04-28T09:23:28.536-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="facebook"/><category scheme="http://www.blogger.com/atom/ns#" term="gpl"/><category scheme="http://www.blogger.com/atom/ns#" term="greasemonkey"/><category scheme="http://www.blogger.com/atom/ns#" term="license violation"/><category scheme="http://www.blogger.com/atom/ns#" term="userscripts"/><title type='text'>Facebook Autopoke Update</title><content type='html'>It&#39;s been a few months since my last post.&amp;nbsp; After a few months, I finally got in touch with the folks at Greasemonkey.&amp;nbsp; It looks like Jesse Andrew is no longer running things, which is great for him.&amp;nbsp; He&#39;s got a lot on his plate and it&#39;s good to see him giving away some things.&lt;br /&gt;
&lt;br /&gt;
But it did make making the DMCA takedown&#39;s a bit longer.&amp;nbsp; There is only one script left that violates GPL.&amp;nbsp; Since it&#39;s one script, I will be releasing the newest autopoke script sooner than anticipated.&lt;br /&gt;
&lt;br /&gt;
Please note that the public version of the script will be an obfuscated version.&amp;nbsp; This does accomplishes two things:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Makes it much easier to see who is actively copying my script without permission&lt;/li&gt;
&lt;li&gt;Also allows those who have &quot;pirated&quot; scripts to know they may be using an outdated or insecure version.&lt;/li&gt;
&lt;/ul&gt;
By no means is this perfect, but it gives people like &lt;a href=&quot;http://userscripts.org/users/141847&quot; target=&quot;_blank&quot;&gt;Tony White&lt;/a&gt;, who does nothing but copy scripts and claims them as his own, another hurdle to jump through.&lt;br /&gt;
&lt;br /&gt;
If you are a developer and would like access to the &quot;development&quot; version, feel free to look through the Google Code project.&amp;nbsp; I use mercurial so it should be easy to figure out which is which.&amp;nbsp; (Sorry, no further clues will be given.&amp;nbsp; You&#39;re a developer.&amp;nbsp; It&#39;s easy to figure out.)&lt;br /&gt;
&lt;br /&gt;
Speaking of Tony White, I&#39;d like to take a brief moment to share a few thoughts about the GPL and litigation.&amp;nbsp; First, I don&#39;t enjoy using a public forum to address a personal issue.&amp;nbsp; But he has left me no choice since he has yet to respond to any of my messages.&amp;nbsp; I have asked Tony White on four separate occasions to bring his scripts into compliance.&amp;nbsp; I could understand a one-time mistake.&amp;nbsp; Most people don&#39;t understand how the GPL works.&amp;nbsp; However, after reviewing all of his scripts, the vast majority of them are copies of other people&#39;s work.&amp;nbsp; He then removes the original author&#39;s name and substitutes his own.&lt;br /&gt;
&lt;br /&gt;
My goal is to not make money off of any of my scripts.&amp;nbsp; They are freely available, both in speech and in beer.&amp;nbsp; That is why I did not sue Userscripts or Tony White.&amp;nbsp; However, claiming someone else&#39;s work as your own is simply despicable. &lt;br /&gt;
&lt;br /&gt;
I cannot fight for other people&#39;s copyrights.&amp;nbsp; But I can fight for my own.&lt;br /&gt;
&lt;br /&gt;
Tony White has blocked private messages, either only from me or from everyone.&amp;nbsp; Either way, here is the bottom line:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;If Tony White is found to have a copy of my Facebook Autopoke script, I intend to file suit in Federal Court for injunctive and damage relief.&lt;/b&gt;&amp;nbsp; I plan to ask the court for $1000 for each violation, which will include each copy that was downloaded.&amp;nbsp; And since he was a repeat offender, I can triple any damages that are awarded.&lt;br /&gt;
&lt;br /&gt;
That being said, I hope to release the newest version of the Facebook Autopoke within a month.&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://tailgate-blog.blogspot.com/feeds/8161701153933407703/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tailgate-blog.blogspot.com/2012/04/facebook-autopoke-update.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9145229162204135472/posts/default/8161701153933407703'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9145229162204135472/posts/default/8161701153933407703'/><link rel='alternate' type='text/html' href='http://tailgate-blog.blogspot.com/2012/04/facebook-autopoke-update.html' title='Facebook Autopoke Update'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9145229162204135472.post-5853051876031025552</id><published>2012-01-09T20:00:00.000-05:00</published><updated>2012-01-09T20:00:00.942-05:00</updated><title type='text'>Obfuscated and &quot;polymorphic&quot; code coming!</title><content type='html'>First, I know many of you are waiting desperately for the next revision of the Autopoke script.&amp;nbsp; I will say that the newest version of the script does work (albeit in a limited capacity) and very reliable.&amp;nbsp; So if that&#39;s all you care about, you can skip this post.&amp;nbsp; But if you&#39;re interested in the release date, read on!&lt;br /&gt;
&lt;br /&gt;
Here&#39;s the &quot;TL;DR&quot; version: 4.1 will be released when the GPL violations from copied scripts are cleared.&amp;nbsp; This could be as much as 3 months from now.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://tailgate-blog.blogspot.com/2011/09/fighting-gpl-violators.html&quot; target=&quot;_blank&quot;&gt;Back in September&lt;/a&gt;, I found a user who was in violation of the GPL.&amp;nbsp; Four out of his give scripts were removed via a DMCA notice.&amp;nbsp; Since then, the same user has moved to copy someone else autopoke script.&amp;nbsp; I&#39;ve seen many of these users on userscripts.&amp;nbsp; They take a wildly popular script, copy it, and then change the authorship to state that they wrote it.&amp;nbsp; The common mistake these &quot;authors&quot; make is they fail to update the code.&amp;nbsp; My guess is that they don&#39;t know how to program javascript and thus they are afraid to change anything.&lt;br /&gt;
&lt;br /&gt;
The problem comes when there is a security vulnerability, as was the case in version 3.5 and 4.0 of my Autopoke script.&amp;nbsp; &lt;a href=&quot;http://tailgate-blog.blogspot.com/2011/09/will-be-patching-innerhtml-bug-for-most.html&quot; target=&quot;_blank&quot;&gt;The vulnerability&lt;/a&gt; is actually based on a browser vulnerability.&amp;nbsp; But because these violators weren&#39;t updating the scripts, it meant that the users who installed their version of the script would continue using software that was unpatched.&amp;nbsp; Furthermore, they would not be notified of the vulnerability and could not make an informed choice whether to continue to use the script or disable it completely.&lt;br /&gt;
&lt;br /&gt;
I try to assume good faith whenever possible.&amp;nbsp; It&#39;s impossible to determine someone&#39;s motives without talking to them.&amp;nbsp; And since this particular user declined to communicate with me, I&#39;m left with the impression that &lt;a href=&quot;http://userscripts.org/users/141847&quot; target=&quot;_blank&quot;&gt;this user&lt;/a&gt;, at the very best, simply copies scripts without understanding completely what the scripts did.&lt;br /&gt;
&lt;br /&gt;
Yesterday, I spent a few hours finding more GPL violators.&amp;nbsp; These users seem to have the same MO: just copy the script.&lt;br /&gt;
&lt;br /&gt;
Allow me to be clear so that there is no confusion: I completely support the open source movement.&amp;nbsp; I &lt;b&gt;HIGHLY ENCOURAGE&lt;/b&gt; the improvement of my code.&amp;nbsp; There are a few scripts who have taken my code and translated it into different languages.&amp;nbsp; This is completely acceptable.&amp;nbsp; You do not need to ask me for permission to do this.&amp;nbsp; I prefer that you let me know, simply so that I can inform you of any security problems the script may have and so that I can keep track of the statistics.&amp;nbsp; I personally believe that the GPL is the best license since it requires attribution as well as continued use of the license in all derivatives.&amp;nbsp; It is one of the reasons why I chose the GPL over the other licenses.&amp;nbsp; I believe that the open source licenses must be actively defended.&lt;br /&gt;
&lt;br /&gt;
If you copy the code and remove the copyright notification and replace your name as the author, then you are ruining it for everyone.&amp;nbsp; Instead of improving my code, I have to spend the time to send you a letter.&amp;nbsp; It takes time out of my schedule and makes things much more complicated than it has to be.&amp;nbsp; If you fail to respond to my letter, you take time out the admins of userscripts since they need to respond to my DMCA letter and they need to disable your script, all while keeping lawyers on retainer.&lt;br /&gt;
&lt;br /&gt;
If you are new to userscripts and still learning javascript, feel free to download my code and look at it.&amp;nbsp; That&#39;s what open source is all about!&amp;nbsp; If you have questions, don&#39;t be afraid to ask.&amp;nbsp; But please, do not plagiarize and claim my work as your own.&lt;br /&gt;
&lt;br /&gt;
My concern is not so much about copyright violations but about security vulnerabilities.&amp;nbsp; This wouldn&#39;t be as much of a problem if the authors communicate with me.&amp;nbsp; Seeing that they don&#39;t do this, it leaves me in a very uncomfortable position.&lt;br /&gt;
&lt;br /&gt;
To make the script more secure, I will be obfuscating parts of it.&amp;nbsp; This decision has nothing to do with the perceived &lt;a href=&quot;http://tailgate-blog.blogspot.com/2011/10/getting-tired-of-edit-wars-autopoke-is.html&quot; target=&quot;_blank&quot;&gt;edit war between myself and Facebook&lt;/a&gt;.&amp;nbsp; The point of obfuscating is to limit the exposure of security vulnerabilities in my script when GPL violators copy the script verbatim.&amp;nbsp; Since mose of these violators usually don&#39;t modify the script in general, I can safely say that the obfuscated code will be left untouched.&lt;br /&gt;
&lt;br /&gt;
This, however, now limits those who use my code for completely legitimate purposes.&amp;nbsp; First, I&#39;m sorry to say that these violators ruined a good thing for you.&amp;nbsp; Second, I&#39;m going to make this as easy as possible.&amp;nbsp; To received a clean version of the code, simply go to &lt;a href=&quot;http://code.google.com/p/tailgate/&quot; target=&quot;_blank&quot;&gt;my google code page&lt;/a&gt;.&amp;nbsp; I reckon that most of the GPL violators won&#39;t go through the trouble of finding the clean versions of the code.&amp;nbsp; If you are familiar with git or mercurial, grabbing these should be easy.&amp;nbsp; If, for some reason, this is difficult for you, please feel free to &lt;a href=&quot;http://userscripts.org/messages/new?user_id=7743&quot; target=&quot;_blank&quot;&gt;contact me&lt;/a&gt; and I&#39;d be more than happy to provide with you with a copy.&amp;nbsp; It will be under the same license so no worries on this side.&lt;br /&gt;
&lt;br /&gt;
The obfuscated code will display a nag screen when autopoking.&amp;nbsp; The point of the nag screen is to inform the user that they may be using code that has security vulnerabilities and they should consider installing my version instead.&amp;nbsp; The code will continue to work, but will prevent autopoking until the nag screen is satisfied.&amp;nbsp; Users who are familiar with javascript can hack through the obfuscated code and disable the nag screen, if they so choose.&amp;nbsp; But this hacking proves that they know what they are doing and they accept the responsibility that comes with it. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://tailgate-blog.blogspot.com/feeds/5853051876031025552/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tailgate-blog.blogspot.com/2012/01/obfuscated-and-polymorphic-code-coming.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9145229162204135472/posts/default/5853051876031025552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9145229162204135472/posts/default/5853051876031025552'/><link rel='alternate' type='text/html' href='http://tailgate-blog.blogspot.com/2012/01/obfuscated-and-polymorphic-code-coming.html' title='Obfuscated and &quot;polymorphic&quot; code coming!'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9145229162204135472.post-6943839218035626943</id><published>2011-12-20T15:00:00.000-05:00</published><updated>2011-12-28T13:29:43.039-05:00</updated><title type='text'>Yes, Virginia, autopoke works again</title><content type='html'>Still working on the final touches:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgT8MakEy5JtgkQ8YkH80i52SqWCV59ERGjVh3EkujhMhOD2eSOtB_-V_GtRjOL8yFjagKvtI9-6ufs4CERcfWt-8_Y77rc8QrvmkY_Lv98hwmvv_iJQiChEi8nJxl_Kifp1iYjQvWkOdo0/s1600/yes_virginia.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;238&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgT8MakEy5JtgkQ8YkH80i52SqWCV59ERGjVh3EkujhMhOD2eSOtB_-V_GtRjOL8yFjagKvtI9-6ufs4CERcfWt-8_Y77rc8QrvmkY_Lv98hwmvv_iJQiChEi8nJxl_Kifp1iYjQvWkOdo0/s400/yes_virginia.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Right now, this only works on the pokes app page, as &lt;a href=&quot;http://userscripts.org/topics/93122#posts-407102&quot;&gt;suggested&lt;/a&gt; by &lt;a href=&quot;http://userscripts.org/users/95392&quot;&gt;Lord_Fandomar&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
What&#39;s left is for me clean up the code and obfuscate parts of the code.&amp;nbsp; I also plan to make this work on the main page, but it&#39;s not a high priority.</content><link rel='replies' type='application/atom+xml' href='http://tailgate-blog.blogspot.com/feeds/6943839218035626943/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tailgate-blog.blogspot.com/2011/12/yes-virginia-autopoke-works-again.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9145229162204135472/posts/default/6943839218035626943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9145229162204135472/posts/default/6943839218035626943'/><link rel='alternate' type='text/html' href='http://tailgate-blog.blogspot.com/2011/12/yes-virginia-autopoke-works-again.html' title='Yes, Virginia, autopoke works again'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgT8MakEy5JtgkQ8YkH80i52SqWCV59ERGjVh3EkujhMhOD2eSOtB_-V_GtRjOL8yFjagKvtI9-6ufs4CERcfWt-8_Y77rc8QrvmkY_Lv98hwmvv_iJQiChEi8nJxl_Kifp1iYjQvWkOdo0/s72-c/yes_virginia.png" height="72" width="72"/><thr:total>6</thr:total><georss:featurename>Henry G Shirley Memorial Hwy, Springfield, VA 22151, USA</georss:featurename><georss:point>38.791021386961596 -77.175521850585938</georss:point><georss:box>38.741512386961595 -77.254485850585937 38.840530386961596 -77.096557850585938</georss:box></entry><entry><id>tag:blogger.com,1999:blog-9145229162204135472.post-5822401946081733254</id><published>2011-12-09T08:02:00.001-05:00</published><updated>2011-12-09T08:15:27.177-05:00</updated><title type='text'>Survey Results: 70% prefer closed source</title><content type='html'>Its not too late to &lt;a href=&quot;http://tailgate-blog.blogspot.com/2011/10/getting-tired-of-edit-wars-autopoke-is.html&quot;&gt;voice your thoughts on closing the source&lt;/a&gt;.&amp;nbsp; I&#39;ve finally had a chance to review the results and out of about 200 people who took the survey, 70% would prefer that I close the code.&lt;br /&gt;
&lt;br /&gt;
I&#39;ve been wrestling with this issue for a while and still have not come to a decision.&amp;nbsp; Here&#39;s what hangs in the balance:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Since the Autopoke scripts inception, it has been 100% open-source, using the GPL 2 and 3 licenses.&amp;nbsp; The latest version of the script (4.0.1) exclusively uses GPL 3.&lt;/li&gt;
&lt;li&gt;Closing the source would mean that other developers could not learn from the work.&amp;nbsp; This includes both legitimate programmers who are porting the script to Google Chrome to Facebook programmers who may be trying to stop scripts like this from working.&lt;/li&gt;
&lt;li&gt;Closing the source would not mean it&#39;s 100% secure against viewing.&amp;nbsp; Real developers can parse through obfuscated code.&amp;nbsp; It&#39;s harder, but not impossible.&amp;nbsp; (In fact, I go through Facebook&#39;s obfuscated code to create this script.)&lt;/li&gt;
&lt;li&gt;Obfuscated code would be hosted remotely, making it less secure.&amp;nbsp; In order to properly shield the code from viewing, the code would be hosted on my personal site.&amp;nbsp; This comes with risks such as me having the ability to know who you are.&amp;nbsp; I would draft a very simple privacy policy (basically that I don&#39;t care who you are).&amp;nbsp; But doing this would allow me to block facebook.com from connecting to the site.&lt;/li&gt;
&lt;/ul&gt;
Despite the large number of people who would prefer that I close the code, I still lean toward an open-source solution.&amp;nbsp; I&#39;m a firm believer that open-source is better since it allows everyone to learn and don&#39;t think that the benefits outweigh the problems.&lt;br /&gt;
&lt;br /&gt;
I am still developing the Autopoke for the new version of the Facebook news feed.&amp;nbsp; PLEASE be patient.&amp;nbsp; I have a full-time job and I do other things besides computers.&amp;nbsp; This time of year is very busy for me.</content><link rel='replies' type='application/atom+xml' href='http://tailgate-blog.blogspot.com/feeds/5822401946081733254/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tailgate-blog.blogspot.com/2011/12/survey-results-70-prefer-closed-source.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9145229162204135472/posts/default/5822401946081733254'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9145229162204135472/posts/default/5822401946081733254'/><link rel='alternate' type='text/html' href='http://tailgate-blog.blogspot.com/2011/12/survey-results-70-prefer-closed-source.html' title='Survey Results: 70% prefer closed source'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9145229162204135472.post-3782882063152329165</id><published>2011-10-17T15:30:00.000-04:00</published><updated>2011-10-17T15:30:00.077-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="autopoke"/><category scheme="http://www.blogger.com/atom/ns#" term="facebook"/><category scheme="http://www.blogger.com/atom/ns#" term="gpl"/><category scheme="http://www.blogger.com/atom/ns#" term="greasemonkey"/><title type='text'>Getting tired of the edit wars?  Autopoke is being considered for closed source</title><content type='html'>Facebook may be changing their poke code in response to &lt;a href=&quot;http://code.google.com/p/tailgate/wiki/Greasemonkey_FacebookAutopoke_4_0&quot;&gt;this script&lt;/a&gt;.&amp;nbsp; While unconfirmed, it seems each iteration makes autopoking harder and harder.&amp;nbsp; To thwart their efforts, I am considering closing the source and obfuscating the code.&amp;nbsp; What do you think?&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;script src=&quot;http://www.surveymonkey.com/jsEmbed.aspx?sm=2FvqbvT2zzuHgoFxaHwQrA_3d_3d&quot;&gt;
&lt;/script&gt;&lt;/div&gt;
&lt;br /&gt;
If you don&#39;t see the survey above, you may need to enable surveymonkey.com within your NoScript.  Or you can simply &lt;a href=&quot;http://www.surveymonkey.com/s/RHSZ7XR&quot; target=&quot;_new&quot;&gt;take the survey&lt;/a&gt; on their website.</content><link rel='replies' type='application/atom+xml' href='http://tailgate-blog.blogspot.com/feeds/3782882063152329165/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tailgate-blog.blogspot.com/2011/10/getting-tired-of-edit-wars-autopoke-is.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9145229162204135472/posts/default/3782882063152329165'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9145229162204135472/posts/default/3782882063152329165'/><link rel='alternate' type='text/html' href='http://tailgate-blog.blogspot.com/2011/10/getting-tired-of-edit-wars-autopoke-is.html' title='Getting tired of the edit wars?  Autopoke is being considered for closed source'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9145229162204135472.post-5936098950463296165</id><published>2011-09-21T13:00:00.000-04:00</published><updated>2011-09-21T13:00:03.653-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="autopoke"/><category scheme="http://www.blogger.com/atom/ns#" term="facebook"/><category scheme="http://www.blogger.com/atom/ns#" term="greasemonkey"/><title type='text'>Yup, the new facebook broke the autopoke</title><content type='html'>For those of you that just finished cursing the developers of Facebook for fixing something that wasn&#39;t broken, you will soon realize that the new design broke the autopoke.&lt;br /&gt;
&lt;br /&gt;
No worries.&amp;nbsp; &lt;a href=&quot;http://tailgate-blog.blogspot.com/2011/09/thanks-to-jesse-for-taking-action.html&quot;&gt;Development has continued&lt;/a&gt;.&amp;nbsp; Hoping to have a fix by the end of the month.</content><link rel='replies' type='application/atom+xml' href='http://tailgate-blog.blogspot.com/feeds/5936098950463296165/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tailgate-blog.blogspot.com/2011/09/yup-new-facebook-broke-autopoke.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9145229162204135472/posts/default/5936098950463296165'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9145229162204135472/posts/default/5936098950463296165'/><link rel='alternate' type='text/html' href='http://tailgate-blog.blogspot.com/2011/09/yup-new-facebook-broke-autopoke.html' title='Yup, the new facebook broke the autopoke'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9145229162204135472.post-1997392802959468577</id><published>2011-09-19T15:00:00.000-04:00</published><updated>2011-09-19T15:00:04.386-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="autopoke"/><category scheme="http://www.blogger.com/atom/ns#" term="facebook"/><category scheme="http://www.blogger.com/atom/ns#" term="gpl"/><category scheme="http://www.blogger.com/atom/ns#" term="license violation"/><title type='text'>Thanks to Jesse for taking action!</title><content type='html'>Thanks to &lt;a href=&quot;http://overstimulate.com/&quot;&gt;Jesse&lt;/a&gt; for taking down the offending scripts!&lt;br /&gt;
&lt;br /&gt;
All but one remain so for me the battle has been won.&amp;nbsp; The author has the right to counter the take-down notice.&amp;nbsp; He would have to prove that he did not violate the license, which will be difficult since I have screenshots and a diff showing otherwise.&lt;br /&gt;
&lt;br /&gt;
Development on the Facebook Autopoke will continue this week.&amp;nbsp; I&#39;m hoping to release version 4.1 that will:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Correct the reload issue&lt;/li&gt;
&lt;li&gt;Constantly monitor Facebook for pokes and automatically re-poke them&lt;/li&gt;
&lt;li&gt;Allow users to take their poke wars with them&lt;/li&gt;
&lt;li&gt;Easier integration with Chrome (Please note &quot;easier&quot;.&amp;nbsp; I&#39;m still not developing for Chrome.&amp;nbsp; Just making it easier for others if you want to modify my script)&lt;/li&gt;
&lt;li&gt;Fix security problems &lt;/li&gt;
&lt;/ul&gt;
To be clear: do not be afraid to modify my code.&amp;nbsp; The problem I had with Tony White was that he just copied the code and called it his own.&amp;nbsp; &lt;u&gt;Improvements&lt;/u&gt; upon my code are &lt;b&gt;HIGHLY ENCOURAGED&lt;/b&gt; and do not require permission.&amp;nbsp; Attribution is always appreciated.&amp;nbsp; You should note that I still give props to the &lt;a href=&quot;http://userscripts.org/users/5930&quot;&gt;original creator&lt;/a&gt; of the autopoke script, even though my implementation no longer looks anything like his.&amp;nbsp; (He doesn&#39;t work on his poke script anymore.)</content><link rel='replies' type='application/atom+xml' href='http://tailgate-blog.blogspot.com/feeds/1997392802959468577/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tailgate-blog.blogspot.com/2011/09/thanks-to-jesse-for-taking-action.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9145229162204135472/posts/default/1997392802959468577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9145229162204135472/posts/default/1997392802959468577'/><link rel='alternate' type='text/html' href='http://tailgate-blog.blogspot.com/2011/09/thanks-to-jesse-for-taking-action.html' title='Thanks to Jesse for taking action!'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9145229162204135472.post-8726599929766845285</id><published>2011-09-12T20:00:00.000-04:00</published><updated>2011-09-12T20:00:02.800-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="greasmonkey"/><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="security"/><category scheme="http://www.blogger.com/atom/ns#" term="userscripts"/><title type='text'>Will be patching the innerHTML bug for most popular scripts</title><content type='html'>I&#39;ve recently learned that there is a &lt;a href=&quot;https://developer.mozilla.org/en/DOM/element.innerHTML#Security_consideration&quot;&gt;security vulnerability&lt;/a&gt; with using the innerHTML method within JavaScript.&amp;nbsp; I&#39;m still researching this issue.&lt;br /&gt;
&lt;br /&gt;
I&#39;ll be releasing patches for the most popular of my scripts sometime by the end of the month.</content><link rel='replies' type='application/atom+xml' href='http://tailgate-blog.blogspot.com/feeds/8726599929766845285/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tailgate-blog.blogspot.com/2011/09/will-be-patching-innerhtml-bug-for-most.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9145229162204135472/posts/default/8726599929766845285'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9145229162204135472/posts/default/8726599929766845285'/><link rel='alternate' type='text/html' href='http://tailgate-blog.blogspot.com/2011/09/will-be-patching-innerhtml-bug-for-most.html' title='Will be patching the innerHTML bug for most popular scripts'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9145229162204135472.post-1466471066224564898</id><published>2011-09-07T18:00:00.000-04:00</published><updated>2011-09-07T18:00:02.852-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="autopoke"/><category scheme="http://www.blogger.com/atom/ns#" term="facebook"/><category scheme="http://www.blogger.com/atom/ns#" term="gpl"/><category scheme="http://www.blogger.com/atom/ns#" term="greasemonkey"/><category scheme="http://www.blogger.com/atom/ns#" term="license violation"/><title type='text'>Fighting GPL violators</title><content type='html'>Being a strong believer in open-source, it gives me no pleasure to find people who violate open source licenses.&amp;nbsp; Abiding by these licenses are fairly easy and I take a very liberal view of the rights that they protect.&lt;br /&gt;
&lt;br /&gt;
Back in June, I discovered &lt;a href=&quot;http://userscripts.org/scripts/show/91518&quot;&gt;several&lt;/a&gt; &lt;a href=&quot;http://userscripts.org/scripts/show/98807&quot;&gt;userscripts&lt;/a&gt; &lt;a href=&quot;http://userscripts.org/scripts/show/98805&quot;&gt;that&lt;/a&gt; &lt;a href=&quot;http://userscripts.org/scripts/show/91518&quot;&gt;were&lt;/a&gt; &lt;a href=&quot;http://userscripts.org/scripts/show/99007&quot;&gt;copies&lt;/a&gt; of my Facebook Autopoke script.&amp;nbsp; While I normally wouldn&#39;t have a problem with this, the fact that this user simply copied the script and just pasted his name on it made me pretty angry.&amp;nbsp; It&#39;s one thing to use my script as a bases of a better script.&amp;nbsp; Even if it&#39;s part of a larger work.&amp;nbsp; But copying the script and just slapping your name on it not only violates the GPL legally, it violates it spiritually.&lt;br /&gt;
&lt;br /&gt;
The GPL was created to foster sharing of thoughts and ideas without fear of stepping on someone&#39;s toes.&amp;nbsp; What this user did was took my hard word and claimed it as his own.&lt;br /&gt;
&lt;br /&gt;
Now, I contacted the Tony White back in May and never received a reply.&amp;nbsp; So, I contacted Userscripts.org and informed them that I had revoked his license, persuant to section 8 of the GPL. The script is still up today.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So until I have this resolved, all work on the autopoke script will cease.&amp;nbsp; If you have any questions, feel free to ask them here in the comments.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://tailgate-blog.blogspot.com/feeds/1466471066224564898/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tailgate-blog.blogspot.com/2011/09/fighting-gpl-violators.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9145229162204135472/posts/default/1466471066224564898'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9145229162204135472/posts/default/1466471066224564898'/><link rel='alternate' type='text/html' href='http://tailgate-blog.blogspot.com/2011/09/fighting-gpl-violators.html' title='Fighting GPL violators'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9145229162204135472.post-7393240988129423928</id><published>2011-07-29T13:58:00.000-04:00</published><updated>2011-07-29T13:58:18.906-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="autopoke"/><category scheme="http://www.blogger.com/atom/ns#" term="facebook"/><title type='text'>Fixing Autopoke issue</title><content type='html'>Yes, I&#39;m completely aware of the issue where the script just says, &quot;Lock confirmed; preparing to poke...&quot;&lt;br /&gt;
&lt;br /&gt;
This is an on-going issue with the script unable to capture when the page is fully &quot;ready.&quot;  I&#39;m in the process of incorporating code from &lt;a href=&quot;http://jquery.com/&quot;&gt;jQuery&lt;/a&gt; that will make this detection a bit easier.&amp;nbsp; I don&#39;t want to import the entire library since I&#39;ll only be using a part of it.&lt;br /&gt;
&lt;br /&gt;
Thanks for your patience.</content><link rel='replies' type='application/atom+xml' href='http://tailgate-blog.blogspot.com/feeds/7393240988129423928/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tailgate-blog.blogspot.com/2011/07/fixing-autopoke-issue.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9145229162204135472/posts/default/7393240988129423928'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9145229162204135472/posts/default/7393240988129423928'/><link rel='alternate' type='text/html' href='http://tailgate-blog.blogspot.com/2011/07/fixing-autopoke-issue.html' title='Fixing Autopoke issue'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9145229162204135472.post-1388407271135964471</id><published>2011-06-06T15:58:00.000-04:00</published><updated>2011-06-06T16:01:09.417-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="autopoke"/><category scheme="http://www.blogger.com/atom/ns#" term="facebook"/><category scheme="http://www.blogger.com/atom/ns#" term="release"/><category scheme="http://www.blogger.com/atom/ns#" term="the last well"/><title type='text'>Facebook Autopoke 4.0 Release Party!</title><content type='html'>It&#39;s been over seven months since the last release of the Facebook Autopoke script.&amp;nbsp; I wrote in the last release that the script would NOT be updated until the release of 4.0.&lt;br /&gt;
&lt;br /&gt;
Welcome to the Facebook Autopoke 4.0 RELEASE PARTY!!!&lt;br /&gt;
&lt;br /&gt;
That&#39;s right!&amp;nbsp; The Facebook Autopoke script is &lt;a href=&quot;http://userscripts.org/scripts/show/5200&quot;&gt;now available&lt;/a&gt;! You may want to completely uninstall the current version you have now.&lt;br /&gt;
&lt;br /&gt;
I&#39;m disappointed that the fundraiser for the LAST Well didn&#39;t work out.&amp;nbsp; But, I would like to encourage you to make a &lt;a href=&quot;http://www.thelastwell.org/get-involved/give/&quot;&gt;donation anyway via their official website&lt;/a&gt;.&amp;nbsp; I won&#39;t be tracking your donation but I would like to encourage your to let them know that you are donating because of this script.&lt;br /&gt;
&lt;br /&gt;
If you haven&#39;t already, wander over to the &lt;a href=&quot;http://code.google.com/p/tailgate/wiki/Greasemonkey_FacebookAutopoke_4_0&quot;&gt;official tailgate wiki&lt;/a&gt; and take a look at all the new features.</content><link rel='replies' type='application/atom+xml' href='http://tailgate-blog.blogspot.com/feeds/1388407271135964471/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tailgate-blog.blogspot.com/2011/06/facebook-autopoke-40-release-party.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9145229162204135472/posts/default/1388407271135964471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9145229162204135472/posts/default/1388407271135964471'/><link rel='alternate' type='text/html' href='http://tailgate-blog.blogspot.com/2011/06/facebook-autopoke-40-release-party.html' title='Facebook Autopoke 4.0 Release Party!'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9145229162204135472.post-1013639721933100022</id><published>2011-06-02T20:13:00.000-04:00</published><updated>2011-06-02T20:13:20.669-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="autopoke"/><category scheme="http://www.blogger.com/atom/ns#" term="facebook"/><category scheme="http://www.blogger.com/atom/ns#" term="the last well"/><title type='text'>Fundraiser has been cancelled</title><content type='html'>Due to unforeseen events, the fundraiser for the LAST Well has been cancelled.&amp;nbsp; The Facebook Autopoke script is undergoing a final integrity check and will be released Monday evening.&lt;br /&gt;
&lt;br /&gt;
I&#39;ll be updating the &lt;a href=&quot;http://code.google.com/p/tailgate/wiki/Greasemonkey_FacebookAutopoke_4_0&quot;&gt;wiki portion&lt;/a&gt; of tailgate over the next few days so please check it for details on how everything works.&amp;nbsp; As always, please &lt;a href=&quot;http://code.google.com/p/tailgate/issues/list&quot;&gt;submit bug reports&lt;/a&gt; on tailgate and NOT on userscripts.org.</content><link rel='replies' type='application/atom+xml' href='http://tailgate-blog.blogspot.com/feeds/1013639721933100022/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tailgate-blog.blogspot.com/2011/06/fundraiser-has-been-cancelled.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9145229162204135472/posts/default/1013639721933100022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9145229162204135472/posts/default/1013639721933100022'/><link rel='alternate' type='text/html' href='http://tailgate-blog.blogspot.com/2011/06/fundraiser-has-been-cancelled.html' title='Fundraiser has been cancelled'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9145229162204135472.post-3984236654843768854</id><published>2011-05-25T12:00:00.000-04:00</published><updated>2011-05-25T12:00:04.662-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="autopoke"/><category scheme="http://www.blogger.com/atom/ns#" term="facebook"/><title type='text'>Donation API issues</title><content type='html'>I know everyone is waiting on the release of Autopoke 4.0.&amp;nbsp; The LAST Well is having issues with their credit card merchant.&amp;nbsp; As soon as this is resolved, I&#39;ll give you guys directions on how to donate.&lt;br /&gt;
&lt;br /&gt;
Sorry for the delay.</content><link rel='replies' type='application/atom+xml' href='http://tailgate-blog.blogspot.com/feeds/3984236654843768854/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tailgate-blog.blogspot.com/2011/05/donation-api-issues.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9145229162204135472/posts/default/3984236654843768854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9145229162204135472/posts/default/3984236654843768854'/><link rel='alternate' type='text/html' href='http://tailgate-blog.blogspot.com/2011/05/donation-api-issues.html' title='Donation API issues'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9145229162204135472.post-4626448837809833151</id><published>2011-05-09T17:00:00.000-04:00</published><updated>2011-05-09T17:00:01.771-04:00</updated><title type='text'>Final Features for Facebook Autopoke 4.0</title><content type='html'>As I finalize the code for 4.0, I&#39;m going through the wishlist of features and deciding their fate.&amp;nbsp; Will they be included, will they not.&amp;nbsp; Unfortunately, there is one major feature that will NOT be included: automatic reload of the script.&lt;br /&gt;
&lt;br /&gt;
While testing, I did program the script to automatically pull the main Facebook page.&amp;nbsp; For some unknown reason, Facebook continues to show people who have already been poked in this pull.&amp;nbsp; I initially thought this was due to a caching issue but have since determined that this is not the case.&amp;nbsp; Since the problem is on Facebook&#39;s side, I&#39;ve decided to remove this feature.&amp;nbsp; Since this is how the Autopoke currently works, I don&#39;t see this as a step back.&amp;nbsp; Keeping the feature in the final build creates unnecessary traffic.&amp;nbsp; The code is still contained in the RCS (revision control software) so it&#39;s not lost and can be added back in at any time.&lt;br /&gt;
&lt;br /&gt;
I&#39;ve done my best to make the script as flexible as possible.&amp;nbsp; The script no longer requires the English language and should work on any language, be it fake (e.g. pirate) or real (e.g. German).&amp;nbsp; It is able to do this by relying on the underlying ajaxify library.&amp;nbsp; Should Facebook ever stop using this or start using a different library, the script will have to be rewritten.&lt;br /&gt;
&lt;br /&gt;
Over the next few days, I will be removing much of the extra code that makes debugging possible.&amp;nbsp; I&#39;ll also be adding an error reporting tool that will allow you to copy and paste it&#39;s output into a bug report.</content><link rel='replies' type='application/atom+xml' href='http://tailgate-blog.blogspot.com/feeds/4626448837809833151/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tailgate-blog.blogspot.com/2011/05/final-features-for-facebook-autopoke-40.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9145229162204135472/posts/default/4626448837809833151'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9145229162204135472/posts/default/4626448837809833151'/><link rel='alternate' type='text/html' href='http://tailgate-blog.blogspot.com/2011/05/final-features-for-facebook-autopoke-40.html' title='Final Features for Facebook Autopoke 4.0'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9145229162204135472.post-8636521664937520480</id><published>2011-05-08T14:10:00.000-04:00</published><updated>2011-05-08T14:10:02.290-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="autopoke"/><category scheme="http://www.blogger.com/atom/ns#" term="facebook"/><title type='text'>Here&#39;s something to get you ready for the next version of Autopoke</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqqhlhPGFXiF00Yk1XA6lNGlVwF6mdwm-63dcoVPbccUaXGYnouzLjzeYr2l42X2wJoJv6NLUr7EJaSZp7dK-lvrFf4t-Jl87c8eF0P-mxB_7aye965bvEd_v2fJMdVcx7x36FK1E0uHZO/s1600/sneak_preview.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;261&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqqhlhPGFXiF00Yk1XA6lNGlVwF6mdwm-63dcoVPbccUaXGYnouzLjzeYr2l42X2wJoJv6NLUr7EJaSZp7dK-lvrFf4t-Jl87c8eF0P-mxB_7aye965bvEd_v2fJMdVcx7x36FK1E0uHZO/s400/sneak_preview.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Click to embiggen.</content><link rel='replies' type='application/atom+xml' href='http://tailgate-blog.blogspot.com/feeds/8636521664937520480/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tailgate-blog.blogspot.com/2011/05/heres-something-to-get-you-ready-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9145229162204135472/posts/default/8636521664937520480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9145229162204135472/posts/default/8636521664937520480'/><link rel='alternate' type='text/html' href='http://tailgate-blog.blogspot.com/2011/05/heres-something-to-get-you-ready-for.html' title='Here&#39;s something to get you ready for the next version of Autopoke'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqqhlhPGFXiF00Yk1XA6lNGlVwF6mdwm-63dcoVPbccUaXGYnouzLjzeYr2l42X2wJoJv6NLUr7EJaSZp7dK-lvrFf4t-Jl87c8eF0P-mxB_7aye965bvEd_v2fJMdVcx7x36FK1E0uHZO/s72-c/sneak_preview.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9145229162204135472.post-8513365539159428219</id><published>2011-05-05T08:09:00.000-04:00</published><updated>2011-05-05T08:09:01.272-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="autopoke"/><category scheme="http://www.blogger.com/atom/ns#" term="facebook"/><category scheme="http://www.blogger.com/atom/ns#" term="the last well"/><title type='text'>Facebook Autopoke 4.0 is almost ready!!</title><content type='html'>I&#39;m working with &lt;a href=&quot;http://www.thelastwell.org/&quot;&gt;The LAST Well&lt;/a&gt; to put together an interface so people can donate.  Hoping to have it available by the end of next week!&lt;br /&gt;
&lt;br /&gt;
Stay tuned!</content><link rel='replies' type='application/atom+xml' href='http://tailgate-blog.blogspot.com/feeds/8513365539159428219/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tailgate-blog.blogspot.com/2011/05/facebook-autopoke-40-is-almost-ready.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9145229162204135472/posts/default/8513365539159428219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9145229162204135472/posts/default/8513365539159428219'/><link rel='alternate' type='text/html' href='http://tailgate-blog.blogspot.com/2011/05/facebook-autopoke-40-is-almost-ready.html' title='Facebook Autopoke 4.0 is almost ready!!'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9145229162204135472.post-6477880794452664647</id><published>2011-04-11T22:00:00.000-04:00</published><updated>2011-04-11T22:00:05.217-04:00</updated><title type='text'>Poke tracking added</title><content type='html'>Good afternoon everyone!&lt;br /&gt;
&lt;br /&gt;
I spent today adding the ability to track the number of pokes between the user and their target.&amp;nbsp; Of course, this count is completely localized, so if you use the script on multiple computers, it will keep different numbers on each computer.&amp;nbsp; Not sure if this value is carried over if you use Mozilla Firefox Sync and not going to test this.&amp;nbsp; Portability is not going to be a feature for the 4.0 release.&amp;nbsp; It may be in the future.&lt;br /&gt;
&lt;br /&gt;
A couple of things worth noting about this feature:&lt;br /&gt;
&lt;br /&gt;
There is always a trade-off between information and space.&amp;nbsp; While there is no limit imposed by Greasemonkey, the amount of data that can be stored within the browser should be minimized.&amp;nbsp; While developing the schema, I debated how much information should be tracked: last poke datetime, initial poke datetime, name, count.&amp;nbsp; Realizing that people prefer speed over information, I&#39;ve decided to only keep the count.&amp;nbsp; This makes it very efficient.&lt;br /&gt;
&lt;br /&gt;
I&#39;m sure there are those of you that would like to know when your friend last poked you and when you last poked him.&amp;nbsp; The fact is that the more information you store, the slower your browser as a whole will be.&amp;nbsp; The information is stored in your RAM.&amp;nbsp; Firefox has a fairly large footprint as it is.&amp;nbsp; So if you want more of this information and are willing to sacrifice speed (and possibly a crash), you will have to edit the script.&lt;br /&gt;
&lt;br /&gt;
I will not expand on the pokewar tracking feature beyond the number of pokes.&amp;nbsp; I believe the cost will not outweigh the benefits.&amp;nbsp; If you want me to code this specifically for you, you will have to purchase a license (which will not be cheap).&lt;br /&gt;
&lt;br /&gt;
At this time, the number of pokes will only show for current wars.&amp;nbsp; If you want to see a list of everyone you&#39;ve poked, you will have to open the &lt;a href=&quot;http://kb.mozillazine.org/Firefox_:_FAQs_:_About:config_Entries&quot;&gt;about:config panel&lt;/a&gt;.&amp;nbsp; This feature may be added in the future, thus will not be in the 4.0 release.</content><link rel='replies' type='application/atom+xml' href='http://tailgate-blog.blogspot.com/feeds/6477880794452664647/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tailgate-blog.blogspot.com/2011/04/poke-tracking-added.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9145229162204135472/posts/default/6477880794452664647'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9145229162204135472/posts/default/6477880794452664647'/><link rel='alternate' type='text/html' href='http://tailgate-blog.blogspot.com/2011/04/poke-tracking-added.html' title='Poke tracking added'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9145229162204135472.post-1452504442133331289</id><published>2011-04-07T14:00:00.000-04:00</published><updated>2011-04-07T14:00:04.898-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="autopoke"/><category scheme="http://www.blogger.com/atom/ns#" term="facebook"/><category scheme="http://www.blogger.com/atom/ns#" term="greasemonkey"/><title type='text'>Major Milestone Achieved!</title><content type='html'>Quick stats:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;377 lines of code&lt;/li&gt;
&lt;li&gt;15 KB&lt;/li&gt;
&lt;li&gt;About 50 total programming hours spanned over three weeks &lt;/li&gt;
&lt;/ul&gt;I am pleased to announce that the autopoke script has reached an  important milestone: it has completed it&#39;s first set of pokes!&amp;nbsp; Until  now, the majority of the programming concentrated on how to actually  detect pokes without loading the entire page.&amp;nbsp; Then, work began on  detecting pokes across all languages, which meant hacking the code of  Facebook.&amp;nbsp; Finally, the poke functions were re-written from the  ground-up.&lt;br /&gt;
&lt;br /&gt;
Here are the technical changes made thus far:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Uses XMLHttpRequest instead of GM_XMLHttpRequest&lt;/b&gt;:  Makes use of the fast Javascript engine instead of passing to  Greasemonkey.&amp;nbsp; This change should make it easier for non-Firefox users  to install the script.&amp;nbsp; But remember that it is not officially  supported.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Makes asynchronous&lt;/b&gt;&lt;b&gt; requests&lt;/b&gt;: Fixes a bug that users of  slow computers from properly auto-poking.&amp;nbsp; A copy of the front page is  used instead of the DOM itself.&amp;nbsp; It allows for faster processing and  allows users to be poked even before the page finishes loading.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;New status/error messages: &lt;/b&gt;These messages are far more  informative and allows the user to see why a poke failed.&amp;nbsp; Debug  variable can still be set to see the &quot;console&quot;.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Makes use of XML 1.0 standards:&lt;/b&gt; Facebook is XML 1.0  compliant. The script makes use of this to retrieve important  information to pass to the poke function.&amp;nbsp; (If you want to see this in  action, set debug to 3 or higher.)&lt;/li&gt;
&lt;/ul&gt;&amp;nbsp;And here are a list of features that will be added over the next couple of weeks:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Tracking number of pokes in current war: Obviously, this won&#39;t include pokes that have already occurred&lt;/li&gt;
&lt;li&gt;Check Facebook for pokes automatically&lt;/li&gt;
&lt;li&gt;Prettify error messages so that they can be copied and pasted into bug reports&lt;/li&gt;
&lt;li&gt;Comments within the code&lt;/li&gt;
&lt;/ul&gt;And finally, I am working with &lt;a href=&quot;http://www.thelastwell.org/&quot;&gt;The Last Well&lt;/a&gt;, a 501(c)(3) non-profit organization that building wells in Liberia, to receive donations for it&#39;s mission.</content><link rel='replies' type='application/atom+xml' href='http://tailgate-blog.blogspot.com/feeds/1452504442133331289/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tailgate-blog.blogspot.com/2011/04/major-milestone-achieved.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9145229162204135472/posts/default/1452504442133331289'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9145229162204135472/posts/default/1452504442133331289'/><link rel='alternate' type='text/html' href='http://tailgate-blog.blogspot.com/2011/04/major-milestone-achieved.html' title='Major Milestone Achieved!'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9145229162204135472.post-6562999584598043820</id><published>2011-04-04T16:30:00.000-04:00</published><updated>2011-04-04T16:30:01.607-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="autopoke"/><category scheme="http://www.blogger.com/atom/ns#" term="facebook"/><category scheme="http://www.blogger.com/atom/ns#" term="greasemonkey"/><title type='text'>Facebook changes their poke engine...again</title><content type='html'>This seems to happen about 2-3 times a year.&amp;nbsp; Facebook will change the way that pokes are processed both via the browser and on the backend.&amp;nbsp; While there is no proof that Facebook is doing this purposefully to disable the autopoke script, it does break the script and produces error 1.1.&amp;nbsp; This error code means that the autopoke script received a response from Facebook that wasn&#39;t expected and could not process the poke any further.&lt;br /&gt;
&lt;br /&gt;
As I&#39;ve stated before, I do not plan on releasing fixes to autopoke 3.5.&amp;nbsp; I&#39;m actively developing 4.0 to replace 3.5, which will include an adaptive regular expression to be able to execute the pokes without having a perfect match.&amp;nbsp; However, this is proving harder than I initially realized.&lt;br /&gt;
&lt;br /&gt;
(Note, &lt;a href=&quot;http://userscripts.org/users/95392&quot;&gt;another user&lt;/a&gt; fixed 3.5 and &lt;a href=&quot;http://userscripts.org/scripts/show/88712&quot;&gt;has released it&lt;/a&gt; on userscripts.org.) &lt;br /&gt;
&lt;br /&gt;
There are about eight different places that Facebook can change that could break the script.&amp;nbsp; I won&#39;t run through them all here, but needless to say, it is impossible to predict and anticipate these changes.&amp;nbsp; For example, prior to this last update, the ID that was assigned to the poke DIV element was named &lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;pagelet_netego_pokes&lt;/span&gt;.&amp;nbsp; Facebook has renamed the DIV element to &lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;pagelet_pokes&lt;/span&gt;.&lt;br /&gt;
&lt;br /&gt;
Facebook uses &lt;b&gt;ajaxify&lt;/b&gt; to load a large majority of it&#39;s modules (e.g. pokes, birthdays, stories, photos, etc).&amp;nbsp; This means most of these elements load in the background.&amp;nbsp; Instead of waiting for these elements to completely load, the 4.0 script now downloads a copy of your homepage to evaluate.&amp;nbsp; This fixes a HUGE bug where pokes were not being processed because the elements do not completely load.&lt;br /&gt;
&lt;br /&gt;
Even though the script doesn&#39;t use the DIV element, it still relies on the ID, which is used within ajaxify to actually load the poke node.&amp;nbsp; Unfortunately, this is something that cannot be changed due to the mere fact that Facebook can change this div to something completely random.&lt;br /&gt;
&lt;br /&gt;
Facebook has already done this to many of their elements.&amp;nbsp; If you view the source of the Facebook frontpage, you&#39;ll notice many of the linked script names are &lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;Df69GCI-zBW.js&lt;/span&gt;, &lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;4gR9cTpQYHa.js&lt;/span&gt;, etc.&amp;nbsp; I assume this is done so that the files can only be used once can the source cannot be downloaded conveniently.&amp;nbsp; Those who know what they are doing (like yours truly) can download these files without much hassle.&lt;br /&gt;
&lt;br /&gt;
The poke link detection is based on the fact that the poke engine (e.g. the actual webpage that processes all pokes) has the word &quot;poke&quot; in it.&amp;nbsp; Originally, the link detection was based on the link text having the word &quot;poke&quot; in it.&amp;nbsp; This was changed to allow non-English speakers to use the script.&amp;nbsp; If Facebook changes things again so that these IDs are randomized, the script will have to fail-back to searching for the work &quot;poke&quot; within the link text, breaking the script for non-English users.&lt;br /&gt;
&lt;br /&gt;
Another change that Facebook has made is how pokes are processed.&amp;nbsp; This used to be a POST form, which meant encoding the form parameters.&amp;nbsp; But now, it looks like Facebook is changing this to GET.&amp;nbsp; (FWIW, this used to be how Facebook did things back in the day.)&amp;nbsp; Unfortunately, this is something that the script cannot anticipate and must be hard-coded.&lt;br /&gt;
&lt;br /&gt;
As development on 4.0 continues, I will attempt to make the script as adaptive as possible.&amp;nbsp; But please understand that it is impossible to anticipate everything.&amp;nbsp; Hopefully, it will be more resilient than it&#39;s predecessors.</content><link rel='replies' type='application/atom+xml' href='http://tailgate-blog.blogspot.com/feeds/6562999584598043820/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tailgate-blog.blogspot.com/2011/04/facebook-changes-their-poke-engineagain.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9145229162204135472/posts/default/6562999584598043820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9145229162204135472/posts/default/6562999584598043820'/><link rel='alternate' type='text/html' href='http://tailgate-blog.blogspot.com/2011/04/facebook-changes-their-poke-engineagain.html' title='Facebook changes their poke engine...again'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9145229162204135472.post-3136476796696496515</id><published>2011-03-21T17:00:00.000-04:00</published><updated>2011-04-04T11:44:03.451-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="autopoke"/><category scheme="http://www.blogger.com/atom/ns#" term="facebook"/><title type='text'>Facebook autopoke development update</title><content type='html'>Over the weekend, I&#39;ve been &lt;a bitly=&quot;BITLY_PROCESSED&quot; href=&quot;http://code.google.com/p/tailgate/source/list&quot;&gt;slaving away&lt;/a&gt; to find a better way to search for the poke div box.&amp;nbsp; After some hacking, I found that facebook uses something called &lt;a bitly=&quot;BITLY_PROCESSED&quot; href=&quot;http://max.jsrhost.com/ajaxify/&quot;&gt;ajaxify&lt;/a&gt;.&amp;nbsp; The problem with this plugin is that greasemonkey cannot interact with it, which sucks because facebook loads the pokes using ajax.&amp;nbsp; I&#39;ve known this for a while, but it wasn&#39;t until recently that I found the mechanism that it uses.&lt;br /&gt;
&lt;br /&gt;
While I have yet to hear from anyone from facebook concerning my script, it does seem that facebook is trying to block automated requests to poke someone.&amp;nbsp; I don&#39;t know if this is intentional or a side-effect of other changes they are making.&amp;nbsp; What is clear is that every so often, the code changes.&lt;br /&gt;
&lt;br /&gt;
One of the features I&#39;m hoping to add to the autopoke script is the ability to &quot;fix itself&quot; should facebook change their code.&amp;nbsp; While this is not 100% possible, the script can be flexible enough to notice changes to facebook&#39;s main page and hopefully, figure out the solution.&amp;nbsp; This feature may not be ready by the release of 4.0, but I&#39;m hoping to work on it.&lt;br /&gt;
&lt;br /&gt;
Another feature I&#39;m actively working on is better internationalization.&amp;nbsp; Currently, the script only works with English, specifically by design.&amp;nbsp; I&#39;m working on this so that it will work for any language.&lt;br /&gt;
&lt;br /&gt;
Finally, some important news: &lt;br /&gt;
&lt;br /&gt;
Initially, the autopoke script was born out of a need to fix &lt;a bitly=&quot;BITLY_PROCESSED&quot; href=&quot;http://userscripts.org/users/5930&quot;&gt;someone else&lt;/a&gt;&#39;s autopoke script.&amp;nbsp; I continued working on it, making it better until my script became more popular than original script.&amp;nbsp; It came to the point that I no longer had any of the original code (as of version 2.0).&lt;br /&gt;
&lt;br /&gt;
Development of this script takes a lot of time.&amp;nbsp; In fact, the development of 4.0 has so far taken 20 total programming hours.&amp;nbsp; There have been a little less than 100,000 installs of the script, which doesn&#39;t necessarily mean 100,000 users.&amp;nbsp; But judging by the sheer number of people who complain when it doesn&#39;t work, it&#39;s still a lot of people.&lt;br /&gt;
&lt;br /&gt;
I am a firm believer in open-source and source-code freedom.&amp;nbsp; I also believe people should be compensated for their work.&amp;nbsp; Whether that&#39;s a hardy &quot;thank you&quot; or a monetary contribution, I believe it encourages development and lets the author know that he is appreciated.&amp;nbsp; With this in mind, I will be establishing a new release structure for this script.&lt;br /&gt;
&lt;br /&gt;
I&#39;ve decided to something similar to what &lt;a href=&quot;https://secure.wikimedia.org/wikipedia/en/wiki/The_Plant&quot;&gt;Stephen King did in 2000&lt;/a&gt;: The script will be released once a certain amount of money has been raised. 100% of the money will go toward a non-profit organization that will be decided when the script is ready for release.&amp;nbsp; I don&#39;t have a dollar amount figured yet or how the logistics will work.&amp;nbsp; As soon as I figure this out, I&#39;ll post here.&lt;br /&gt;
&lt;br /&gt;
As a result of this, will not be pushing the updates to Google code.&amp;nbsp; Changes and source will become available after the release.</content><link rel='replies' type='application/atom+xml' href='http://tailgate-blog.blogspot.com/feeds/3136476796696496515/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tailgate-blog.blogspot.com/2011/03/facebook-autopoke-development-update.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9145229162204135472/posts/default/3136476796696496515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9145229162204135472/posts/default/3136476796696496515'/><link rel='alternate' type='text/html' href='http://tailgate-blog.blogspot.com/2011/03/facebook-autopoke-development-update.html' title='Facebook autopoke development update'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9145229162204135472.post-1240893616440064837</id><published>2011-03-07T19:00:00.001-05:00</published><updated>2011-03-07T19:00:02.874-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="autopoke"/><category scheme="http://www.blogger.com/atom/ns#" term="facebook"/><category scheme="http://www.blogger.com/atom/ns#" term="greasemonkey"/><title type='text'>Development on Facebook Autopoke 4.0 to start next week</title><content type='html'>A long awaited update to &lt;a href=&quot;http://userscripts.org/users/7743/scripts?sort=installs&quot;&gt;my most popular greasemonkey script&lt;/a&gt; will begin sometime next week.&amp;nbsp; The following changes will be made my &lt;a href=&quot;http://code.google.com/p/tailgate/wiki/Greasemonkey_FacebookAutopoke&quot;&gt;autopoke script&lt;/a&gt;:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;a complete rewrite of the script from the ground up!&lt;/li&gt;
&lt;li&gt;use xml_httprequest instead of GM_xml_httprequest to save time and overhead&lt;/li&gt;
&lt;li&gt;better poke detection&lt;/li&gt;
&lt;li&gt;poke war count&lt;/li&gt;
&lt;li&gt;localization for any facebook language&lt;/li&gt;
&lt;li&gt;better use of xpath and other tools that have been introduced&lt;/li&gt;
&lt;/ul&gt;I know that this script is being used on other browsers (e.g. Opera, Google Chrome, etc) but please realize that I can only focus on one browser: Firefox.&amp;nbsp; You are more than welcome to port the script to your own flavor of browser.&lt;br /&gt;
&lt;br /&gt;
Release date is unknown at this time, but I&#39;m hoping for September 2011.</content><link rel='replies' type='application/atom+xml' href='http://tailgate-blog.blogspot.com/feeds/1240893616440064837/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tailgate-blog.blogspot.com/2011/03/development-on-facebook-autopoke-40-to.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9145229162204135472/posts/default/1240893616440064837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9145229162204135472/posts/default/1240893616440064837'/><link rel='alternate' type='text/html' href='http://tailgate-blog.blogspot.com/2011/03/development-on-facebook-autopoke-40-to.html' title='Development on Facebook Autopoke 4.0 to start next week'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9145229162204135472.post-6032097660996798038</id><published>2011-03-07T19:00:00.000-05:00</published><updated>2011-03-07T19:00:04.515-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="greasemonkey"/><category scheme="http://www.blogger.com/atom/ns#" term="initial"/><category scheme="http://www.blogger.com/atom/ns#" term="zagg"/><title type='text'>zagg replacement utility uploaded</title><content type='html'>I &lt;a href=&quot;http://userscripts.org/scripts/show/98173&quot;&gt;released&lt;/a&gt; a &lt;a href=&quot;http://code.google.com/p/tailgate/wiki/Greasemonkey_Zagg_Replacement_Utility&quot;&gt;script&lt;/a&gt; that goes through each order that you have with zagg and shows only orders where a replacement can be made.&lt;br /&gt;
&lt;br /&gt;
Have at it.</content><link rel='replies' type='application/atom+xml' href='http://tailgate-blog.blogspot.com/feeds/6032097660996798038/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tailgate-blog.blogspot.com/2011/03/zagg-replacement-utility-uploaded.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9145229162204135472/posts/default/6032097660996798038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9145229162204135472/posts/default/6032097660996798038'/><link rel='alternate' type='text/html' href='http://tailgate-blog.blogspot.com/2011/03/zagg-replacement-utility-uploaded.html' title='zagg replacement utility uploaded'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>