<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title>jga.me Blog Feed</title><item><title>Markx</title><description>&lt;p&gt;I've released a command line utility for node.js called markx.  Markx takes markdown files with code snippets and turns them into html.  This is handy for github readme files, github pages and creating flat file blog posts.&lt;/p&gt;

&lt;p&gt;Check out markx &lt;a href=&quot;http://jgallen23.github.com/markx/&quot;&gt;here&lt;/a&gt;&lt;/p&gt;</description><link>http://jga.me/blog/2012/01/30/markx</link><guid>http://jga.me/blog/2012/01/30/markx</guid><pubDate>Mon, 30 Jan 2012 00:00:00 +0000</pubDate></item><item><title>Visits 1.3 Released</title><description>&lt;p&gt;&lt;a href=&quot;http://jga.me/apps/mac/visits&quot;&gt;Visits&lt;/a&gt; 1.3 is now in the app store.  You can grab it &lt;a href=&quot;http://bit.ly/o2N8r8&quot;&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;Changelog:&lt;/h2&gt;

&lt;p&gt;New:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Added Bounce Rates and Time on Page for Top Content&lt;/li&gt;
&lt;li&gt;Added Browser Stats&lt;/li&gt;
&lt;li&gt;Added Location Stats&lt;/li&gt;
&lt;li&gt;Added option to start on login&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Fixed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fixed sorting of Visits and Pageviews&lt;/li&gt;
&lt;li&gt;Various other bug fixes&lt;/li&gt;
&lt;/ul&gt;</description><link>http://jga.me/blog/2012/01/12/visits-1.3</link><guid>http://jga.me/blog/2012/01/12/visits-1.3</guid><pubDate>Thu, 12 Jan 2012 00:00:00 +0000</pubDate></item><item><title>Aug - a library to augment or extend your javascript objects</title><description>&lt;p&gt;If you've used jQuery before, you are probably familiar with the extend function.  If you need to be reminded... the gist of it is that you can extend an object with another object.  For example, if you had a plugin that had some defaults (delay: 3000, auto: true) and you wanted to allow for developers to override them (delay: 5000), you could take in an options object and combine the two objects (delay: 5000, auto: true).  Aug is a tiny (354 bytes) library that will let you do that without jQuery.  I've modeled the syntax to be identical to jQuery.  I've also added the ability to augment javascript classes (adding to the prototype).  Here are some examples:&lt;/p&gt;

&lt;h2&gt;Examples&lt;/h2&gt;

&lt;pre&gt;&lt;code&gt;&lt;span class=&quot;comment&quot;&gt;//Great for overriding defaults&lt;/span&gt;
&lt;span class=&quot;keyword&quot;&gt;var&lt;/span&gt; a = { a: &lt;span class=&quot;number&quot;&gt;1&lt;/span&gt; };
&lt;span class=&quot;keyword&quot;&gt;var&lt;/span&gt; b = { a: &lt;span class=&quot;number&quot;&gt;2&lt;/span&gt;, b: &lt;span class=&quot;number&quot;&gt;3&lt;/span&gt; };
aug(a, b); &lt;span class=&quot;comment&quot;&gt;//a = { a: 2, b: 3};&lt;/span&gt;

&lt;span class=&quot;comment&quot;&gt;//Combining two objects without overriding&lt;/span&gt;
&lt;span class=&quot;keyword&quot;&gt;var&lt;/span&gt; a = { a: &lt;span class=&quot;number&quot;&gt;1&lt;/span&gt; };
&lt;span class=&quot;keyword&quot;&gt;var&lt;/span&gt; b = { b: &lt;span class=&quot;number&quot;&gt;3&lt;/span&gt; };
&lt;span class=&quot;keyword&quot;&gt;var&lt;/span&gt; c = aug({}, a, b); &lt;span class=&quot;comment&quot;&gt;//c = { a: 1, b: 3};&lt;/span&gt;

&lt;span class=&quot;comment&quot;&gt;//Extending a prototype&lt;/span&gt;
&lt;span class=&quot;keyword&quot;&gt;var&lt;/span&gt; Class1 = &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;()&lt;/span&gt; {&lt;/span&gt; };
Class1.prototype.test = &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;()&lt;/span&gt; {&lt;/span&gt;
        &lt;span class=&quot;keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;number&quot;&gt;0&lt;/span&gt;;
};

aug(Class1, {
        test2: &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;()&lt;/span&gt; {&lt;/span&gt;
                &lt;span class=&quot;keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;number&quot;&gt;5&lt;/span&gt;;
        }
});
&lt;span class=&quot;keyword&quot;&gt;var&lt;/span&gt; c = &lt;span class=&quot;keyword&quot;&gt;new&lt;/span&gt; Class1();
c.test(); &lt;span class=&quot;comment&quot;&gt;//returns 0;&lt;/span&gt;
c.test2(); &lt;span class=&quot;comment&quot;&gt;//returns 5&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;Playgroud&lt;/h2&gt;

&lt;p&gt;If you want to try out aug.  Check out this &lt;a href=&quot;http://jsfiddle.net/uuVsB/&quot;&gt;jsfiddle&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;Downloads&lt;/h2&gt;

&lt;p&gt;You can grab the library &lt;a href=&quot;https://raw.github.com/jgallen23/aug/master/dist/aug.js&quot;&gt;here&lt;/a&gt; or check out the &lt;a href=&quot;https://github.com/jgallen23/aug&quot;&gt;source in github&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;For you nerds, the library has AMD and node.js support.&lt;/p&gt;

&lt;h2&gt;Node&lt;/h2&gt;

&lt;pre&gt;&lt;code&gt;npm &lt;span class=&quot;keyword&quot;&gt;install&lt;/span&gt; aug
&lt;/code&gt;&lt;/pre&gt;</description><link>http://jga.me/blog/2011/11/07/aug</link><guid>http://jga.me/blog/2011/11/07/aug</guid><pubDate>Mon, 07 Nov 2011 00:00:00 +0000</pubDate></item><item><title>Visits 1.2 Released</title><description>&lt;p&gt;&lt;a href=&quot;http://jga.me/apps/mac/visits&quot;&gt;Visits&lt;/a&gt; 1.2 is now in the app store.  You can grab it &lt;a href=&quot;http://bit.ly/o2N8r8&quot;&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Changelog:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Week and Month View&lt;/li&gt;
&lt;li&gt;UI Tweaks&lt;/li&gt;
&lt;li&gt;Bugfixes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here's a screenshot of the new month view:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://jga.me/blog_media/visits12.jpg&quot; alt=&quot;Visits 1.2&quot; title=&quot;&quot; /&gt;&lt;/p&gt;</description><link>http://jga.me/blog/2011/10/28/visits-1.2</link><guid>http://jga.me/blog/2011/10/28/visits-1.2</guid><pubDate>Fri, 28 Oct 2011 00:00:00 +0000</pubDate></item><item><title>Cookie Monster - A cookie library for javascript</title><description>&lt;p&gt;In my previous projects, whenever I needed to add cookie support, I would copy and paste the same three functions over and over again.  Now that I've been using &lt;a href=&quot;http://ender.no.de/&quot;&gt;ender&lt;/a&gt; for all my dependency management, I'm able to stop my copy and pasting and start building out some standalone modules.  &lt;/p&gt;

&lt;p&gt;Cookie Monster is a very simple library that has only three methods: set, get and remove.  All are pretty self explanatory.  Here is the usage and example:&lt;/p&gt;

&lt;h2&gt;Usage:&lt;/h2&gt;

&lt;pre&gt;&lt;code&gt;monster&lt;span class=&quot;preprocessor&quot;&gt;.set&lt;/span&gt;(name, value, days, path) //days &lt;span class=&quot;keyword&quot;&gt;and&lt;/span&gt; path are optional
monster&lt;span class=&quot;preprocessor&quot;&gt;.get&lt;/span&gt;(name)
monster&lt;span class=&quot;preprocessor&quot;&gt;.remove&lt;/span&gt;(name)
&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;Example:&lt;/h2&gt;

&lt;pre&gt;&lt;code&gt;//&lt;span class=&quot;keyword&quot;&gt;set&lt;/span&gt; a cookie named &lt;span class=&quot;comment&quot;&gt;'cookiename' to '123' for 1 day&lt;/span&gt;
monster.&lt;span class=&quot;keyword&quot;&gt;set&lt;/span&gt;(&lt;span class=&quot;comment&quot;&gt;'cookiename', '123', 1);&lt;/span&gt;
//&lt;span class=&quot;keyword&quot;&gt;set&lt;/span&gt; val &lt;span class=&quot;keyword&quot;&gt;to&lt;/span&gt; &lt;span class=&quot;comment&quot;&gt;'123'&lt;/span&gt;
var val = monster.&lt;span class=&quot;keyword&quot;&gt;get&lt;/span&gt;(&lt;span class=&quot;comment&quot;&gt;'cookiename');&lt;/span&gt;
//remove it
monster.remove(&lt;span class=&quot;comment&quot;&gt;'cookiename');&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;Ender:&lt;/h2&gt;

&lt;pre&gt;&lt;code&gt;&lt;span class=&quot;function_or_atom&quot;&gt;ender&lt;/span&gt; &lt;span class=&quot;function_or_atom&quot;&gt;build&lt;/span&gt; &lt;span class=&quot;ok&quot;&gt;cookie&lt;/span&gt;-&lt;span class=&quot;function_or_atom&quot;&gt;monster&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;Download&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://raw.github.com/jgallen23/cookie-monster/master/dist/monster.js&quot;&gt;Dev&lt;/a&gt; | &lt;a href=&quot;https://raw.github.com/jgallen23/cookie-monster/master/dist/monster.min.js&quot;&gt;Prod&lt;/a&gt; | &lt;a href=&quot;https://github.com/jgallen23/cookie-monster&quot;&gt;Github&lt;/a&gt;&lt;/p&gt;</description><link>http://jga.me/blog/2011/10/20/cookie-monster</link><guid>http://jga.me/blog/2011/10/20/cookie-monster</guid><pubDate>Thu, 20 Oct 2011 00:00:00 +0000</pubDate></item><item><title>Adding to Safari Reading List with AppleScript</title><description>&lt;p&gt;I've been trying to use reading list as a replacement for Instapaper and ReadItLater (just to see if it can be done).  The main thing that is missing is the integration with every major app.  As far as I can tell there is no public API for the Reading List, but there is applescript support.  You can add articles to the reading list like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;tell application &lt;span class=&quot;string&quot;&gt;&quot;Safari&quot;&lt;/span&gt; to &lt;span class=&quot;keyword&quot;&gt;add&lt;/span&gt; reading list item &lt;span class=&quot;string&quot;&gt;&quot;http://jga.me&quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;which gives you: &lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://jga.me/blog_media/reading-list.png&quot; alt=&quot;Safari Reading List&quot; title=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;If Apple exposes an api, someday, I'd probably use &lt;a href=&quot;http://ifttt.com&quot;&gt;ifttt&lt;/a&gt; to sync up ReadItLater and my reading list.  Until then I'm trying to think of ways to sync up the two.  Maybe just a script that I run on my mac, hits the ReadItLater or Instapaper API and then runs an applescript script for each new item.  I'm still kicking around ideas, has anybody else come up with a good solution?  I might just have to go back and use one of the 3rd party services, which isn't necessarily a bad thing.&lt;/p&gt;</description><link>http://jga.me/blog/2011/10/18/applescript-readinglist</link><guid>http://jga.me/blog/2011/10/18/applescript-readinglist</guid><pubDate>Tue, 18 Oct 2011 00:00:00 +0000</pubDate></item><item><title>Changes to iOS 5 Push Notification Badges</title><description>&lt;p&gt;iOS4: &lt;img src=&quot;http://jga.me/blog_media/sg-badge4.jpg&quot; alt=&quot;StockGlance iOS4&quot; title=&quot;&quot; /&gt;
iOS5: &lt;img src=&quot;http://jga.me/blog_media/sg-badge5.jpg&quot; alt=&quot;StockGlance iOS5&quot; title=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://jga.me/apps/ios/stockglance/&quot;&gt;Stock Glance&lt;/a&gt; uses push notifications to send you the latest stock price of your choice.  When I did initial testing, to see if this was feasible, I got mixed results.  When I try to set the application badge from the app, it would automatically round the value (7.68 would show up as 7).  To my surprise, though, when I set the application badge from a push notification, the decimals showed up perfectly (see first image).  I went forward with building out Stock Glance and everything worked great... until iOS5 came out.&lt;/p&gt;

&lt;p&gt;In updating my apps for the new os, I noticed that my badge push notifications were now getting truncated.  The odd thing, though, is that on iOS4 devices the full number with decimal value still shows up. So the change must be in the way it's interpreted by the OS, rather than the push notification servers themselves.&lt;/p&gt;

&lt;p&gt;To get around this, I now have to do an OS check before I push out the latest stock price and if you are iOS5 17.68 gets sent as 1768 and if you are on anything earlier than iOS5, you get sent 17.68.  Not exactly happy about that experience, but it's all I could do with the change that apple made.&lt;/p&gt;

&lt;p&gt;I don't know why Apple made that change, but I can't really do anything about it (other than filing a bug report). Does anybody know if it affected any other apps?&lt;/p&gt;</description><link>http://jga.me/blog/2011/10/17/ios-badge</link><guid>http://jga.me/blog/2011/10/17/ios-badge</guid><pubDate>Mon, 17 Oct 2011 00:00:00 +0000</pubDate></item><item><title>Tweet Marker - The Last Missing Piece</title><description>&lt;p&gt;I recently discovered an awesome service called &lt;a href=&quot;http://tweetmarker.net/&quot;&gt;Tweet Marker&lt;/a&gt;.  It is an api for Twitter client developers to keep track of the last read post on twitter.  Now no matter what device I'm on, it will jump me right to my last read tweet.  For somebody who will, at any time of the day, be checking twitter on either my iPad, iPhone or Mac, this is the last missing piece of my twitter experience.  I'm not quite sure why twitter doesn't support this out of the box, but I'm glad other people have the same frustrations I do and went the step further to build something.  &lt;/p&gt;

&lt;p&gt;If you are a twitter client developer, please add support for this.  Maybe if enough apps add support for it, native twitter will add it too.  &lt;/p&gt;

&lt;p&gt;Here are the apps I use that support Tweet Marker:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;iPad: &lt;a href=&quot;http://twitterrific.com/&quot;&gt;Twitterific&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;iPhone: &lt;a href=&quot;http://tapbots.com/software/tweetbot/&quot;&gt;Tweetbot&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Mac: &lt;a href=&quot;http://twitterrific.com/&quot;&gt;Twitterific&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><link>http://jga.me/blog/2011/10/11/tweet-marker</link><guid>http://jga.me/blog/2011/10/11/tweet-marker</guid><pubDate>Tue, 11 Oct 2011 00:00:00 +0000</pubDate></item><item><title>Visits 1.1 Released</title><description>&lt;p&gt;&lt;a href=&quot;http://jga.me/apps/mac/visits&quot;&gt;Visits&lt;/a&gt; 1.1 is now in the app store.  You can grab it &lt;a href=&quot;http://bit.ly/o2N8r8&quot;&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Changelog:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Added bounce rates and new visits&lt;/li&gt;
&lt;li&gt;Added visits to data table&lt;/li&gt;
&lt;li&gt;Allowed for scrolling on data table so you can see more than 5 &lt;/li&gt;
&lt;li&gt;Bug fixes&lt;/li&gt;
&lt;/ul&gt;</description><link>http://jga.me/blog/2011/10/05/visits-1.1</link><guid>http://jga.me/blog/2011/10/05/visits-1.1</guid><pubDate>Wed, 05 Oct 2011 00:00:00 +0000</pubDate></item><item><title>ScribblePad 1.5 Released</title><description>&lt;p&gt;Newest version of ScribblePad was just approved by Apple.  You can check it out &lt;a href=&quot;http://bit.ly/pj2yho&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Changelog:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;removed toolbar for maximum scribble area&lt;/li&gt;
&lt;li&gt;re-worked view all scribbles screen (vertical scroll now)&lt;/li&gt;
&lt;li&gt;able to delete from view all screen&lt;/li&gt;
&lt;li&gt;thickened up scribble width&lt;/li&gt;
&lt;li&gt;bug fixes&lt;/li&gt;
&lt;/ul&gt;</description><link>http://jga.me/blog/2011/10/03/scribblepad-1.5</link><guid>http://jga.me/blog/2011/10/03/scribblepad-1.5</guid><pubDate>Mon, 03 Oct 2011 00:00:00 +0000</pubDate></item><item><title>A Little Applescript to Help you Focus</title><description>&lt;p&gt;I'm the type of person who like's to have the bare minimum number of windows shown at a time.  Whether it's Mail, Safari/Chrome, Twitter, or Reeder, I always like to have that be the only window that is visible on my desktop.   To help that, I've written a little applescript that will help me focus on the task at hand:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;tell application &lt;span class=&quot;string&quot;&gt;&quot;Finder&quot;&lt;/span&gt;
    &lt;span class=&quot;keyword&quot;&gt;set&lt;/span&gt; visible of every process whose frontmost &lt;span class=&quot;keyword&quot;&gt;is&lt;/span&gt; &lt;span class=&quot;literal&quot;&gt;false&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;to&lt;/span&gt; &lt;span class=&quot;literal&quot;&gt;false&lt;/span&gt;
&lt;span class=&quot;keyword&quot;&gt;end&lt;/span&gt; tell
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This script, combined with Alfred, lets me hide all other windows except for the one I'm currently focused on with a simple key combination.&lt;/p&gt;

&lt;p&gt;Here's the script as an app: &lt;a href=&quot;http://jga.me/blog_media/hideothers.zip&quot;&gt;Hide Other Windows&lt;/a&gt;&lt;/p&gt;</description><link>http://jga.me/blog/2011/09/19/hide-other-windows</link><guid>http://jga.me/blog/2011/09/19/hide-other-windows</guid><pubDate>Mon, 19 Sep 2011 00:00:00 +0000</pubDate></item><item><title>Visits - Google Analytics in your menubar</title><description>&lt;p&gt;My first Mac App just got approved by Apple.  It's an app that sits in your menubar and gives you updates on your site's traffic (through Google Analytics).  &lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://jga.me/apps/mac/visits&quot;&gt;&lt;img src=&quot;http://jga.me/app_media/mac/visits/screenshots/thumbs/1.png&quot; alt=&quot;Visits&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://jga.me/apps/mac/visits&quot;&gt;Check it out here&lt;/a&gt;&lt;/p&gt;</description><link>http://jga.me/blog/2011/09/14/visits</link><guid>http://jga.me/blog/2011/09/14/visits</guid><pubDate>Wed, 14 Sep 2011 00:00:00 +0000</pubDate></item><item><title>RDIO + iChat</title><description>&lt;p&gt;I've been using RDIO as my primary music player for awhile now and, until recently, I had been using Trillian as my primary IM client.  Now that iChat in Lion supports Yahoo, I've switched over to iChat.  One of the cool features of iChat, is it will show track you are playing as your status.  I wanted to see if I could replicate that with RDIO.  I've come up with a simple applescript app that will set the track you are playing in RDIO for Mac.  It's not flashy, but it gets the job done.&lt;/p&gt;

&lt;p&gt;Download: &lt;a href=&quot;http://jga.me/blog_media/RDIO2iChat.zip&quot;&gt;RDIO2iChat App&lt;/a&gt;&lt;/p&gt;</description><link>http://jga.me/blog/2011/09/04/rdioichat</link><guid>http://jga.me/blog/2011/09/04/rdioichat</guid><pubDate>Sun, 04 Sep 2011 00:00:00 +0000</pubDate></item><item><title>Highlight.js for Node.js</title><description>&lt;p&gt;I've been looking around for a good syntax highlighting library that I could use for this blog.  I found &lt;a href=&quot;http://softwaremaniacs.org/soft/highlight/en/&quot;&gt;Highlight.js&lt;/a&gt; which is an awesome syntax highlighter for the browser, but it didn't have node support built in - and by the sound of a few issues I was tracking, he didn't want support added.  Github to the rescue!  I've forked highlight.js to add node.js support as well as added it to the npm library.  You can get all of the syntax highlighting awesomeness of highlight.js, now on the server side (performance+).  I'm going to be tracking his repo and updating npm whenever new commits are added.&lt;/p&gt;

&lt;p&gt;Example Code:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;var hl = require(&lt;span class=&quot;string&quot;&gt;&quot;highlight.js&quot;&lt;/span&gt;)&lt;span class=&quot;comment&quot;&gt;;&lt;/span&gt;
var txt = &lt;span class=&quot;string&quot;&gt;&quot;var test = 'asdf'&quot;&lt;/span&gt;&lt;span class=&quot;comment&quot;&gt;;&lt;/span&gt;
var html = hl&lt;span class=&quot;preprocessor&quot;&gt;.highlightAuto&lt;/span&gt;(txt)&lt;span class=&quot;comment&quot;&gt;;&lt;/span&gt;
console&lt;span class=&quot;preprocessor&quot;&gt;.log&lt;/span&gt;(html&lt;span class=&quot;preprocessor&quot;&gt;.value&lt;/span&gt;)&lt;span class=&quot;comment&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Example Output:&lt;/p&gt;

&lt;p&gt;&lt;span class=&quot;keyword&quot;&gt;var&lt;/span&gt; test = &lt;span class=&quot;string&quot;&gt;'asdf'&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;To Install:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;npm install highlight&lt;span class=&quot;preprocessor&quot;&gt;.js&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Source: &lt;a href=&quot;https://github.com/jgallen23/highlight.js&quot;&gt;View on Github&lt;/a&gt;&lt;/p&gt;</description><link>http://jga.me/blog/2011/08/18/highlight.js</link><guid>http://jga.me/blog/2011/08/18/highlight.js</guid><pubDate>Thu, 18 Aug 2011 00:00:00 +0000</pubDate></item><item><title>Resistance Playground</title><description>&lt;p&gt;Want to play around and see a live demo of resistance?  Check this out on jsbin: &lt;a href=&quot;http://jsbin.com/uboquz/4/edit&quot;&gt;http://jsbin.com/uboquz/4/edit&lt;/a&gt;.  &lt;/p&gt;

&lt;p&gt;In case you missed my post on my javascript async flow control library, go &lt;a href=&quot;http://jga.me/blog/2011/07/13/resistance&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;</description><link>http://jga.me/blog/2011/07/15/resistance-playground</link><guid>http://jga.me/blog/2011/07/15/resistance-playground</guid><pubDate>Fri, 15 Jul 2011 00:00:00 +0000</pubDate></item><item><title>Resistance - a light weight async flow controller</title><description>&lt;p&gt;The async nature of javascript is awesome at times and awful at times.  For those awful times there are libraries to help ease the pain.  &lt;a href=&quot;https://github.com/caolan/async&quot;&gt;Async.js&lt;/a&gt; is an great library that has all kinds of different flow control methods.  The only problem is that it was complete overkill for 99% of the use cases that I had.  On top of that, I wanted to use it in the browser and all those extra functions that I was never going to use would be wasted bytes that would be downloaded by the user.  So... if an existing library doesn't fit your needs, write your own.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/jgallen23/resistance&quot;&gt;&lt;strong&gt;Resistance&lt;/strong&gt;&lt;/a&gt; is a tiny (463 bytes, 298 bytes gzipped) library that gives you the two most used, at least for me, flow control functions: &lt;strong&gt;series&lt;/strong&gt; and &lt;strong&gt;parallel&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Here's where to check it out: &lt;br /&gt;
&lt;a href=&quot;http://jsbin.com/uboquz/2/edit&quot;&gt;Live Demo (JSBin)&lt;/a&gt; | &lt;a href=&quot;https://raw.github.com/jgallen23/resistance/master/resistance.js&quot;&gt;Download (Dev)&lt;/a&gt; | &lt;a href=&quot;https://raw.github.com/jgallen23/resistance/master/resistance.min.js&quot;&gt;Download (Prod)&lt;/a&gt; | &lt;a href=&quot;https://github.com/jgallen23/resistance&quot;&gt;Github&lt;/a&gt; &lt;br /&gt;
node: npm install resistance&lt;/p&gt;

&lt;h3&gt;Here's what it looks like:&lt;/h3&gt;

&lt;pre&gt;&lt;code&gt;&lt;span class=&quot;comment&quot;&gt;//Test Function A&lt;/span&gt;
&lt;span class=&quot;keyword&quot;&gt;var&lt;/span&gt; testA = &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(cb)&lt;/span&gt; {&lt;/span&gt;
  setTimeout(&lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;()&lt;/span&gt; {&lt;/span&gt;
    console.log(&lt;span class=&quot;string&quot;&gt;&quot;Test A Complete&quot;&lt;/span&gt;);
    cb();
  }, &lt;span class=&quot;number&quot;&gt;500&lt;/span&gt;);
};

&lt;span class=&quot;comment&quot;&gt;//Test Function B&lt;/span&gt;
&lt;span class=&quot;keyword&quot;&gt;var&lt;/span&gt; testB = &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(cb)&lt;/span&gt; {&lt;/span&gt;
  setTimeout(&lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;()&lt;/span&gt; {&lt;/span&gt;
    console.log(&lt;span class=&quot;string&quot;&gt;&quot;Test B Complete&quot;&lt;/span&gt;);
    cb();
  }, &lt;span class=&quot;number&quot;&gt;500&lt;/span&gt;);
};

R.series([
  testA,
  testA,
  testA
  ], &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;()&lt;/span&gt; {&lt;/span&gt;
    console.log(&lt;span class=&quot;string&quot;&gt;&quot;Series Complete&quot;&lt;/span&gt;);
});

R.parallel([
  testB,
  testB,
  testB
  ], &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;()&lt;/span&gt; {&lt;/span&gt;
    console.log(&lt;span class=&quot;string&quot;&gt;&quot;Parallel Complete&quot;&lt;/span&gt;);
});
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;When you run it, you'll see this in the console:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Test A Complete  - 1st call from series (500 ms)&lt;/li&gt;
&lt;li&gt;Test B Complete  - 1st call from parallel (500 ms)&lt;/li&gt;
&lt;li&gt;Test B Complete  - 2nd call from parallel (500 ms)&lt;/li&gt;
&lt;li&gt;Test B Complete  - 2nd call from parallel (500 ms)&lt;/li&gt;
&lt;li&gt;Parallel Complete  - All of parallel functions have finished (500 ms)&lt;/li&gt;
&lt;li&gt;Test A Complete  - 2nd call from series (1000 ms)&lt;/li&gt;
&lt;li&gt;Test A Complete  - 3rd call from series (1500 ms)&lt;/li&gt;
&lt;li&gt;Series Complete  - All of series functions have finished (1500 ms)&lt;/li&gt;
&lt;/ul&gt;</description><link>http://jga.me/blog/2011/07/13/resistance</link><guid>http://jga.me/blog/2011/07/13/resistance</guid><pubDate>Wed, 13 Jul 2011 00:00:00 +0000</pubDate></item><item><title>RSS Fixed</title><description>&lt;p&gt;The one downside to building your own blog platform is that sometimes you don't notice really obvious bugs.  I just realized today that my RSS feed was completely jacked.  It's fixed now.  Enjoy.&lt;/p&gt;</description><link>http://jga.me/blog/2011/07/09/rss</link><guid>http://jga.me/blog/2011/07/09/rss</guid><pubDate>Sat, 09 Jul 2011 00:00:00 +0000</pubDate></item><item><title>Docco + Watchman = Documentation Bliss</title><description>&lt;p&gt;&lt;a href=&quot;http://jashkenas.github.com/docco/&quot;&gt;Docco&lt;/a&gt; is an awesome way to document your code.  One complaint I have is that I have to re-run every time I save the file and I'm the type of person who saves and previews a lot.  Enter &lt;a href=&quot;https://github.com/dfjones/watchman&quot;&gt;Watchman&lt;/a&gt;.  Watchman watches a file or directory and executes a command when something changes.  Putting the two together, you get something like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;watchman examples/flickr/flickr&lt;span class=&quot;preprocessor&quot;&gt;.js&lt;/span&gt; &lt;span class=&quot;string&quot;&gt;&quot;docco examples/flickr/flickr.js;chromereload&quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Now, every time flickr.js changes, docco re-generates the documentation.  You might also notice that I'm running chromereload on change.  chromereload is a simple shell script that will automatically reload chrome's active tab.  I think you can see where I'm going with this.  Now, when I make changes in vim to flickr.js, docco runs and chrome reloads so I don't have to do anything to see updates to my docco documentation.&lt;/p&gt;

&lt;p&gt;Here's what the chromereload shell script looks like:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&lt;span class=&quot;shebang&quot;&gt;#!/bin/sh&lt;/span&gt;
osascript -e 'tell application &lt;span class=&quot;string&quot;&gt;&quot;Google Chrome&quot;&lt;/span&gt; to reload active tab of window &lt;span class=&quot;number&quot;&gt;1&lt;/span&gt;'
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Enjoy documenting your code!&lt;/p&gt;</description><link>http://jga.me/blog/2011/06/17/docco-autorefresh</link><guid>http://jga.me/blog/2011/06/17/docco-autorefresh</guid><pubDate>Fri, 17 Jun 2011 00:00:00 +0000</pubDate></item><item><title>Flickr Search - A Fidel Example</title><description>&lt;p&gt;I've finally gotten around to writing an example app for fidel.  Using flickr's jsonp endpoint, I've created a simple flickr search app using fidel. Hopefully this will better show how easy it is to create web apps with fidel.&lt;/p&gt;

&lt;p&gt;Here's a preview:
&lt;a href=&quot;http://jgallen23.github.com/fidel/examples/flickr/index.html&quot;&gt;&lt;img src=&quot;http://jga.me/blog_media/flickrsearch.jpg&quot; alt=&quot;Flickr Search with Fidel&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://jgallen23.github.com/fidel/examples/flickr/index.html&quot;&gt;View the Demo&lt;/a&gt; | &lt;a href=&quot;http://jgallen23.github.com/fidel/docs/flickr.html&quot;&gt;View the Annotated Source&lt;/a&gt;&lt;/p&gt;</description><link>http://jga.me/blog/2011/06/17/fidel-example</link><guid>http://jga.me/blog/2011/06/17/fidel-example</guid><pubDate>Fri, 17 Jun 2011 00:00:00 +0000</pubDate></item><item><title>Loggly Dashboard - All your stats r belong to u </title><description>&lt;p&gt;I've stumbled upon an awesome service called &lt;a href=&quot;http://www.loggly.com&quot;&gt;Loggly&lt;/a&gt;.  Loggly takes all your logs and lets you easily search and graph through them.  I had been looking for a good way to track all the api requests and stock data for &lt;a href=&quot;http://jga.me/apps/ios/stockglance&quot;&gt;StockGlance&lt;/a&gt; and this seemed like the perfect tool.  &lt;a href=&quot;https://github.com/indexzero/winston&quot;&gt;Winston&lt;/a&gt; already has a loggly transport, so all I had to do was enable it.  It was almost too easy getting all of my data into loggly.  What wasn't easy was a way to view all the stats that I was tracking on one screen.  In comes Loggly Dashboard.  I've built a simple node.js app where you can easily configure dashboard widgets to show all of your most important metrics on one screen.  &lt;/p&gt;

&lt;p&gt;Here's a screenshot:
&lt;a href=&quot;http://jga.me/blog_media/logglydashboard.jpg&quot;&gt;&lt;img src=&quot;http://jga.me/blog_media/logglydashboard-thumb.jpg&quot; alt=&quot;Loggly Dashboard&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here's my dashboard for my blog:
&lt;a href=&quot;http://jga.me/blog_media/jgamestats.jpg&quot;&gt;&lt;img src=&quot;http://jga.me/blog_media/jgamestats-thumb.jpg&quot; alt=&quot;JGA.me Loggly Dashboard&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here's the code and to how set everything up: &lt;a href=&quot;https://github.com/jgallen23/loggly-dashboard&quot;&gt;github&lt;/a&gt;.  Fork away!&lt;/p&gt;</description><link>http://jga.me/blog/2011/06/16/loggly-dashboard</link><guid>http://jga.me/blog/2011/06/16/loggly-dashboard</guid><pubDate>Thu, 16 Jun 2011 00:00:00 +0000</pubDate></item></channel></rss>
