<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="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" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-542398624287876588</atom:id><lastBuildDate>Thu, 19 Mar 2026 07:57:46 +0000</lastBuildDate><category>javascript</category><category>link</category><category>tip</category><category>non-coding</category><category>design</category><category>jquery</category><category>html</category><category>css</category><category>internet-explorer</category><category>off-topic</category><category>web</category><category>performance</category><category>pitfall</category><category>scope</category><category>bug</category><category>google</category><category>meta</category><category>news</category><category>rant</category><category>tools</category><category>S3</category><category>arrays</category><category>browsers</category><category>closures</category><category>debugging</category><category>functions</category><category>humor</category><category>inheritance</category><category>irritations</category><category>java</category><category>links</category><category>method</category><category>my-projects</category><category>myths</category><category>private</category><category>reference</category><category>sql</category><category>system-administration</category><category>this</category><category>ubuntu</category><category>var</category><category>virtualbox</category><category>Chrome</category><category>FogBugz</category><category>Opera</category><category>Prototype</category><category>VS.Net</category><category>Windows</category><category>ajax</category><category>anonymous</category><category>apache</category><category>applet</category><category>asi</category><category>asynchronous</category><category>beautiful</category><category>best-practices</category><category>bonehead moves</category><category>children</category><category>class</category><category>configuration</category><category>contribute</category><category>cookies</category><category>creativity</category><category>date</category><category>defaults</category><category>ecmascript5</category><category>engineering</category><category>event-handlers</category><category>exceptions</category><category>false-dichotomy</category><category>forms</category><category>framework</category><category>gae</category><category>getting-it-wrong</category><category>google-code</category><category>google-plus</category><category>grumble</category><category>hacks</category><category>history</category><category>idea</category><category>library</category><category>loops</category><category>maintenance</category><category>math</category><category>mnemonic</category><category>mysql</category><category>names</category><category>operator</category><category>operators</category><category>patents</category><category>patterns</category><category>philosophical</category><category>plugin</category><category>regular-expressions</category><category>rumor</category><category>script-tags</category><category>scrollbars</category><category>snippet</category><category>specification</category><category>sql-server</category><category>t-sql</category><category>terminology</category><category>testing</category><category>types</category><category>update</category><category>usb</category><category>v8</category><category>welcome</category><title>Nifty Snippets</title><description>Nifty Snippets&lt;sup&gt;TM&lt;/sup&gt; of code, techniques, and information focussing on Ajax, web scripting, and engineering.</description><link>http://blog.niftysnippets.org/</link><managingEditor>noreply@blogger.com (T.J. Crowder)</managingEditor><generator>Blogger</generator><openSearch:totalResults>96</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-542398624287876588.post-5114970680586585940</guid><pubDate>Fri, 15 Jun 2018 17:41:00 +0000</pubDate><atom:updated>2020-10-17T10:41:26.457+01:00</atom:updated><title>Common `fetch` errors</title><atom:summary type="text">The new fetch API is a great improvement on XMLHttpRequest but it does have a very surprising behavior that catches people out a lot. Separately, because it uses promises, a lot of people using it fall into a common promise-related error as well. This post is a quick note about both of those.
Let&#39;s say we have an endpoint that returns JSON. This is the common code you see for consuming that:
</atom:summary><link>http://blog.niftysnippets.org/2018/06/common-fetch-errors.html</link><author>noreply@blogger.com (T.J. Crowder)</author><thr:total>3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-542398624287876588.post-4910180524531787486</guid><pubDate>Wed, 16 Sep 2015 12:17:00 +0000</pubDate><atom:updated>2015-09-16T13:17:45.164+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">asi</category><category domain="http://www.blogger.com/atom/ns#">best-practices</category><category domain="http://www.blogger.com/atom/ns#">javascript</category><title>Automatic Semicolon Insertion</title><atom:summary type="text">I&#39;ve been recommending to people that they not rely on Automatic Semicolon Insertion for years now, and frankly wish that the strict variant had removed it. Just wanted to share the best argument for putting semicolons where they belong that I&#39;ve seen in a long time:var foo = {
    a: &quot;ay&quot;,
    b: &quot;bee&quot;
}

(function() {
    console.log(&quot;Hi there&quot;);
})();That blows up, because the opening ( in the</atom:summary><link>http://blog.niftysnippets.org/2015/09/automatic-semicolon-insertion.html</link><author>noreply@blogger.com (T.J. Crowder)</author><thr:total>4</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-542398624287876588.post-768121150277095282</guid><pubDate>Tue, 29 Jul 2014 22:41:00 +0000</pubDate><atom:updated>2014-10-09T09:02:12.546+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">date</category><category domain="http://www.blogger.com/atom/ns#">javascript</category><category domain="http://www.blogger.com/atom/ns#">rumor</category><title>JavaScript&#39;s Date/Time Format Is Not ISO-8601</title><atom:summary type="text">TL;DR JavaScript&#39;s date/time string format isn&#39;t ISO-8601. It&#39;s much simpler, covers fewer use cases, and assumes strings written without a timezone indicator are in UTC (whereas ISO-8601 assumes they&#39;re &quot;local&quot; time).Update October 2014: The draft ES6 specification has changed the timezone thing so ES6 will match ISO-8601 and assume local time, and some implementations (such as V8 in Chrome) </atom:summary><link>http://blog.niftysnippets.org/2014/07/javascripts-datetime-format-is-not-iso.html</link><author>noreply@blogger.com (T.J. Crowder)</author><thr:total>5</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-542398624287876588.post-7290990115057714201</guid><pubDate>Sun, 01 Jun 2014 13:35:00 +0000</pubDate><atom:updated>2014-06-01T14:35:34.513+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">non-coding</category><category domain="http://www.blogger.com/atom/ns#">snippet</category><category domain="http://www.blogger.com/atom/ns#">usb</category><category domain="http://www.blogger.com/atom/ns#">virtualbox</category><title>VirtualBox -- USB not working</title><atom:summary type="text">Just a snippet today, as much to remember it as anything else:
If you&#39;re using VirtualBox on Linux and USB devices aren&#39;t working despite the fact you&#39;ve installed the extension pack, it&#39;s because you haven&#39;t remembered to add yourself to the vboxusers group.
To do that:
# usermod -a -G vboxusers your-user-name
...and then you&#39;ll probably want to log out and log back in so your UI processes pick </atom:summary><link>http://blog.niftysnippets.org/2014/06/virtualbox-usb-not-working.html</link><author>noreply@blogger.com (T.J. Crowder)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-542398624287876588.post-8493473794276875179</guid><pubDate>Thu, 29 May 2014 11:24:00 +0000</pubDate><atom:updated>2014-05-31T09:11:56.084+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">applet</category><category domain="http://www.blogger.com/atom/ns#">bonehead moves</category><category domain="http://www.blogger.com/atom/ns#">Chrome</category><category domain="http://www.blogger.com/atom/ns#">java</category><title>Chrome and Java</title><atom:summary type="text">If you use Chrome and are unfortunate enough to still have to use Java applets from time-to-time, you may recently have been unpleasantly surprised to find that the Java plug-in stopped working (if you use Linux), or you soon will be (if you use Windows; I don&#39;t know when/if this is happening on Macs).
Why? Because Chrome is discontinuing support for the venerable old NPAPI, the mechanism that </atom:summary><link>http://blog.niftysnippets.org/2014/05/chrome-and-java.html</link><author>noreply@blogger.com (T.J. Crowder)</author><thr:total>5</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-542398624287876588.post-3463452730280726202</guid><pubDate>Mon, 17 Mar 2014 08:31:00 +0000</pubDate><atom:updated>2014-03-17T08:31:45.066+00:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">cookies</category><category domain="http://www.blogger.com/atom/ns#">link</category><title>Session tokens, cookies, and local storage</title><atom:summary type="text">Link-post today, the Meteor blog has a very interesting post about why Meteor has so-far avoided session cookies in favor of localStorage, including a high-level but nevertheless useful overview of issues with session cookies. Useful read for the security-minded, including an interesting suggestion near the end of a &quot;both and&quot; approach.</atom:summary><link>http://blog.niftysnippets.org/2014/03/session-tokens-cookies-and-local-storage.html</link><author>noreply@blogger.com (T.J. Crowder)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-542398624287876588.post-6942788812504964768</guid><pubDate>Tue, 18 Feb 2014 13:10:00 +0000</pubDate><atom:updated>2014-02-18T13:10:27.989+00:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">css</category><title>Centering Made Easy</title><atom:summary type="text">Almost a note-to-self today. :-) Now that IE6 and IE7 are dead unless you need to support users from the far East, centering content within elements using CSS is dead easy. Three simple rules:display:        table-cell;
text-align:     center;
vertical-align: middle;So for instance:&amp;lt;style&gt;
  .content {
    width: 300px;
    height: 300px;
    border: 1px solid #aaa;
    padding: 2px;
    </atom:summary><link>http://blog.niftysnippets.org/2014/02/centering-made-easy.html</link><author>noreply@blogger.com (T.J. Crowder)</author><thr:total>8</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-542398624287876588.post-6046136979319020593</guid><pubDate>Wed, 22 Jan 2014 07:11:00 +0000</pubDate><atom:updated>2014-01-23T07:31:36.852+00:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">javascript</category><category domain="http://www.blogger.com/atom/ns#">jquery</category><category domain="http://www.blogger.com/atom/ns#">rant</category><category domain="http://www.blogger.com/atom/ns#">terminology</category><title>Plain JavaScript</title><atom:summary type="text">&quot;I want to do this with pure JavaScript, not jQuery.&quot;
&quot;How do I do this with raw JavaScript?&quot;
&quot;I don&#39;t like to use libraries, I like to use vanilla JavaScript.&quot;
Enough! Using a library like jQuery (or Closure or MooTools or...) is using plain/vanilla/raw/pure JavaScript. (I mean, unless you&#39;re using CoffeeScript, TypeScript, Dart, or other such languages.) Using a library doesn&#39;t change the </atom:summary><link>http://blog.niftysnippets.org/2014/01/plain-javascript.html</link><author>noreply@blogger.com (T.J. Crowder)</author><thr:total>9</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-542398624287876588.post-3920804362228529735</guid><pubDate>Sat, 11 Jan 2014 12:45:00 +0000</pubDate><atom:updated>2014-01-11T12:46:49.873+00:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">system-administration</category><category domain="http://www.blogger.com/atom/ns#">Windows</category><title>Windows Pop-Up Shutdown Script</title><atom:summary type="text">Sometimes, you want to configure a Windows system so that it shows a message when shutting down. In my case, it&#39;s to remind me (because I&#39;m too bone-headed to remember!) to unmount any shares on the relevant box, since otherwise it tends to make the machine where I have them mounted...unhappy.It&#39;s easy to do: First, create the script you want to run, perhaps:WScript.Echo(&quot;Remember to unmount the </atom:summary><link>http://blog.niftysnippets.org/2014/01/windows-pop-up-shutdown-script.html</link><author>noreply@blogger.com (T.J. Crowder)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-542398624287876588.post-8714459914104992608</guid><pubDate>Tue, 24 Sep 2013 17:11:00 +0000</pubDate><atom:updated>2013-09-24T18:12:51.693+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">forms</category><category domain="http://www.blogger.com/atom/ns#">javascript</category><category domain="http://www.blogger.com/atom/ns#">jquery</category><title>Submitting forms programmatically</title><atom:summary type="text">Very short one today, folks, because something surprised me: If you use jQuery to submit a form programmatically, it will trigger submit handlers on the form. This surprised me because if you use the DOM to do it, it doesn&#39;t. Consider this HTML:&amp;lt;form id=&quot;theForm&quot; action=&quot;http://blog.niftysnippets.org&quot; target=&quot;_blank&quot; method=&quot;GET&quot;&gt;
    &amp;lt;p&gt;This one will trigger the submit handler:&amp;lt;/p&gt;
    </atom:summary><link>http://blog.niftysnippets.org/2013/09/submitting-forms-programmatically.html</link><author>noreply@blogger.com (T.J. Crowder)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-542398624287876588.post-5505074525096683185</guid><pubDate>Wed, 15 May 2013 16:27:00 +0000</pubDate><atom:updated>2016-08-14T09:46:53.411+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">javascript</category><category domain="http://www.blogger.com/atom/ns#">patterns</category><category domain="http://www.blogger.com/atom/ns#">private</category><title>Private properties in ES6 -- and ES3, and ES5</title><atom:summary type="text">Please note: ES6 changed markedly after this article was written in 2013; what was finalized and released as ES2015 in 2015 does not have private properties after all. The concept of the &quot;private Name&quot; object morphed into Symbol which was similar, but different, and in particular the idea that they would be non-discoverable was dropped. (Symbols are entirely discoverable, for instance with </atom:summary><link>http://blog.niftysnippets.org/2013/05/private-properties-in-es6-and-es3-and.html</link><author>noreply@blogger.com (T.J. Crowder)</author><thr:total>5</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-542398624287876588.post-6163449082441361004</guid><pubDate>Wed, 13 Feb 2013 17:40:00 +0000</pubDate><atom:updated>2013-02-13T17:40:07.917+00:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">browsers</category><category domain="http://www.blogger.com/atom/ns#">link</category><category domain="http://www.blogger.com/atom/ns#">news</category><category domain="http://www.blogger.com/atom/ns#">Opera</category><title>Opera switching to WebKit+V8</title><atom:summary type="text">Opera has decided to switch to using WebKit and V8 for for all new products. First they&#39;ll start with a product for smartphones (since as they say, many mobile-facing sites are only/best tested on WebKit anyway), and then Opera Desktop and other products will follow.By my count, that leaves us with three major rendering engines (WebKit, Gecko, and Trident), and three major JavaScript engines (V8,</atom:summary><link>http://blog.niftysnippets.org/2013/02/opera-switching-to-webkitv8.html</link><author>noreply@blogger.com (T.J. Crowder)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-542398624287876588.post-6294557667935070472</guid><pubDate>Sat, 29 Dec 2012 12:20:00 +0000</pubDate><atom:updated>2012-12-29T12:21:23.186+00:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">link</category><category domain="http://www.blogger.com/atom/ns#">news</category><category domain="http://www.blogger.com/atom/ns#">S3</category><title>Amazon S3 Adds Root Domain Support</title><atom:summary type="text">More interesting news from Amazon: Now S3 supports static website hosting on the root of your domain. So in addition to http://www.example.com you can now have http://example.com. This comes warm on the heels of their having added CORS support in August and redirections in October. The directon is fairly clear, eh?</atom:summary><link>http://blog.niftysnippets.org/2012/12/amazon-s3-adds-root-domain-support.html</link><author>noreply@blogger.com (T.J. Crowder)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-542398624287876588.post-7889057508937397512</guid><pubDate>Tue, 18 Dec 2012 13:43:00 +0000</pubDate><atom:updated>2012-12-18T13:47:52.548+00:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">design</category><category domain="http://www.blogger.com/atom/ns#">rant</category><title>Website Feedback Popups</title><atom:summary type="text">You want my feedback on your website? Here&#39;s my feedback: Website &quot;feedback&quot; popups are irritating and intrusive.</atom:summary><link>http://blog.niftysnippets.org/2012/12/website-feedback-popups.html</link><author>noreply@blogger.com (T.J. Crowder)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-542398624287876588.post-1881892301352508677</guid><pubDate>Fri, 09 Nov 2012 09:49:00 +0000</pubDate><atom:updated>2012-11-09T09:50:34.477+00:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">css</category><category domain="http://www.blogger.com/atom/ns#">design</category><category domain="http://www.blogger.com/atom/ns#">links</category><category domain="http://www.blogger.com/atom/ns#">web</category><title>Font Size Units</title><atom:summary type="text">I&#39;ve always used points (pt values) for sizing fonts on web pages, e.g.:body {
    font-size: 12pt;
}Those of you who know me know that I&#39;m a developer, not a designer (in the web designer sense; I design systems, but that&#39;s different). I couldn&#39;t visual-design my way out of a paper bag. (Okay, maybe that&#39;s a bit harsh.) I don&#39;t think I&#39;m a one-trick pony, but I&#39;m definitely much more left- than </atom:summary><link>http://blog.niftysnippets.org/2012/11/font-size-units.html</link><author>noreply@blogger.com (T.J. Crowder)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-542398624287876588.post-3076102803177243625</guid><pubDate>Wed, 31 Oct 2012 15:44:00 +0000</pubDate><atom:updated>2012-11-01T08:22:27.750+00:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">testing</category><category domain="http://www.blogger.com/atom/ns#">web</category><title>Blitz.io Updates Pricing Model</title><atom:summary type="text">Early this month I was checking out blitz.io and although it looked like a cool tool (and fun), the pricing model stopped me looking at it too closely, for reasons I explained to them:Hi folks,

Was just checking out blitz.io, which looks really cool (and fun), but I 
was stopped pretty early on by the pricing. I don&#39;t understand why 
the length of a rush is tied to the number of concurrent users</atom:summary><link>http://blog.niftysnippets.org/2012/10/blitzio-updates-pricing-model.html</link><author>noreply@blogger.com (T.J. Crowder)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-542398624287876588.post-4113348548699234882</guid><pubDate>Wed, 24 Oct 2012 04:32:00 +0000</pubDate><atom:updated>2012-10-24T05:41:03.093+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ajax</category><category domain="http://www.blogger.com/atom/ns#">asynchronous</category><category domain="http://www.blogger.com/atom/ns#">javascript</category><title>Asynchronicity</title><atom:summary type="text">I see questions like this one a fair bit: The author has written this code (and is apparently using jQuery):function Obj() {
    this.id = 0;
    this.name = &#39;&#39;;
}

Obj.prototype.setName = function(name) {
    this.name = name;
};

function init() {
    var object1;

    object1 = new Obj();
    object1.setName(&quot;Chris&quot;);
    alert(object1.name); // alerts &#39;Chris&#39;

    $.post(&#39;my_json_list.php&#39;, </atom:summary><link>http://blog.niftysnippets.org/2012/10/asynchronicity.html</link><author>noreply@blogger.com (T.J. Crowder)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-542398624287876588.post-7432386317523965167</guid><pubDate>Thu, 04 Oct 2012 14:20:00 +0000</pubDate><atom:updated>2012-10-04T15:24:15.842+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">design</category><category domain="http://www.blogger.com/atom/ns#">rant</category><title>I Don&#39;t Want To Create An Account</title><atom:summary type="text">Note to online vendors:I don&#39;t want to have to create an account to give you business.Got it? By all means offer me the option of doing so, if that makes you happy, but if I&#39;m buying 10 quid of lightbulbs from your site, or a one-off rail ticket, I really don&#39;t want to create a username and password, opt out of your effing mailing list, etc., etc. Imagine if you had to &quot;create an account&quot; with </atom:summary><link>http://blog.niftysnippets.org/2012/10/i-dont-want-to-create-account.html</link><author>noreply@blogger.com (T.J. Crowder)</author><thr:total>3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-542398624287876588.post-1503274435653754598</guid><pubDate>Wed, 03 Oct 2012 22:29:00 +0000</pubDate><atom:updated>2012-10-03T23:29:45.434+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">contribute</category><category domain="http://www.blogger.com/atom/ns#">reference</category><category domain="http://www.blogger.com/atom/ns#">web</category><title>You can contribute to caniuse.com</title><atom:summary type="text">I&#39;m sure most of us have referred to (and probably cited) caniuse.com at some point. It&#39;s probably the most comprehensive collection of browser feature support around. Want to know the status of CORS support? Here you go.Well, now if you spot an error or want to add further information, you can do so fairly directly: caniuse.com is now on GitHub.I should probably note that caniuse.com is </atom:summary><link>http://blog.niftysnippets.org/2012/10/you-can-contribute-to-caniusecom.html</link><author>noreply@blogger.com (T.J. Crowder)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-542398624287876588.post-4315267520815219504</guid><pubDate>Thu, 27 Sep 2012 10:51:00 +0000</pubDate><atom:updated>2012-09-27T11:51:08.513+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">javascript</category><title>Quick note on RegExp#lastIndex</title><atom:summary type="text">Just a quick note on RegExp#lastIndex: It&#39;s misnamed. It&#39;s not the &quot;last&quot; index of anything, it&#39;s the index of the next character in the string that will be looked at by the regex instance&#39;s exec function (if the regex has the global flag and exec is used on a string that&#39;s long enough). It&#39;s 0 on freshly-created instances. Just useful to remember, if you ever need to set it explicitly (which </atom:summary><link>http://blog.niftysnippets.org/2012/09/quick-note-on-regexplastindex.html</link><author>noreply@blogger.com (T.J. Crowder)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-542398624287876588.post-5594910120649776103</guid><pubDate>Wed, 26 Sep 2012 10:41:00 +0000</pubDate><atom:updated>2012-09-26T11:41:47.065+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">beautiful</category><category domain="http://www.blogger.com/atom/ns#">link</category><category domain="http://www.blogger.com/atom/ns#">off-topic</category><title>Incredible. Extraordinary. Inspiring. Beautiful.</title><atom:summary type="text">Ten years of Hubble photographs of a tiny portion of the night sky, well away from the glare of the Milky Way, deep into the infrared and then corrected back to visible, the eXtreme Deep Field is nothing less than a breathtaking view deep into the Universe. Just...impossibly incredible.</atom:summary><link>http://blog.niftysnippets.org/2012/09/incredible-extraordinary-inspiring.html</link><author>noreply@blogger.com (T.J. Crowder)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-542398624287876588.post-156396409420662868</guid><pubDate>Sat, 01 Sep 2012 16:08:00 +0000</pubDate><atom:updated>2012-09-01T17:08:08.318+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">link</category><category domain="http://www.blogger.com/atom/ns#">news</category><category domain="http://www.blogger.com/atom/ns#">S3</category><title>S3 Adds CORS Support</title><atom:summary type="text">Some interesting news today: Amazon&#39;s S3 now supports CORS, the Cross-Origin Resource Sharing standard. This means that in addition to storing your images, stylesheets, and JavaScript files in S3 as you might be now, you can now also store any static data or templates you want to retrieve via ajax there, assuming your user is using a browser that supports CORS (all modern ones do, one way or </atom:summary><link>http://blog.niftysnippets.org/2012/09/s3-adds-cors-support.html</link><author>noreply@blogger.com (T.J. Crowder)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-542398624287876588.post-8559097172709605839</guid><pubDate>Thu, 23 Aug 2012 06:54:00 +0000</pubDate><atom:updated>2012-08-23T08:11:23.646+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">browsers</category><category domain="http://www.blogger.com/atom/ns#">history</category><category domain="http://www.blogger.com/atom/ns#">link</category><title>A reminder how Microsoft used to drive web innovation</title><atom:summary type="text">As IE6 finally rides into the sunset,* Nicholas C. Zakas offers us a reminder of how, in a series of browser releases culminating in IE6, Microsoft introduced many of the key web innovations we use today such as innerHTML, access to all elements (not just forms and such), Ajax, modern events, and several others. This isn&#39;t in any way to discount what Netscape and others have done, but it&#39;s worth </atom:summary><link>http://blog.niftysnippets.org/2012/08/a-reminder-how-microsoft-used-to-drive.html</link><author>noreply@blogger.com (T.J. Crowder)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-542398624287876588.post-1882146817358366199</guid><pubDate>Tue, 14 Aug 2012 10:30:00 +0000</pubDate><atom:updated>2012-08-15T07:00:54.331+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">javascript</category><category domain="http://www.blogger.com/atom/ns#">scrollbars</category><title>Measuring Scrollbar Size</title><atom:summary type="text">Normally we want to avoid doing this sort of thing, but sometimes you just end up having no other option: Recently I couldn&#39;t avoid doing some sizing logic in JavaScript rather than CSS and markup, and I had to know the size of the scrollbars on specific elements. I found this post by Alexandre Gomes (which in turn was based on a MooTools forum thread; those forums are gone now), which shows a </atom:summary><link>http://blog.niftysnippets.org/2012/08/measuring-scrollbar-size.html</link><author>noreply@blogger.com (T.J. Crowder)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-542398624287876588.post-4381938006254898024</guid><pubDate>Wed, 08 Aug 2012 08:46:00 +0000</pubDate><atom:updated>2012-08-08T09:50:17.162+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">javascript</category><category domain="http://www.blogger.com/atom/ns#">jquery</category><category domain="http://www.blogger.com/atom/ns#">link</category><category domain="http://www.blogger.com/atom/ns#">update</category><title>jQuery - Element cleanup update</title><atom:summary type="text">For those who saw my jQuery - Cleaning up when elements go away post yesterday, I&#39;ve updated it showing how we can do this right now, today, without waiting for the enhancement (or if the enhancement is never accepted). Oh, and the enhancement went from six lines to three. Many thanks to Dave Methvin for showing how (in both cases). Enjoy!</atom:summary><link>http://blog.niftysnippets.org/2012/08/jquery-element-cleanup-update.html</link><author>noreply@blogger.com (T.J. Crowder)</author><thr:total>0</thr:total></item></channel></rss>