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

<channel>
	<title>GUI.NET</title>
	<atom:link href="http://gui.net/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://gui.net/blog</link>
	<description>Advanced Software Perspectives</description>
	<pubDate>Sun, 04 Jul 2010 18:22:49 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5</generator>
	<language>en</language>
			<item>
		<title>NGINX Configuration Files and ReWrites</title>
		<link>http://gui.net/blog/2010/07/04/nginx-configuration-files-and-rewrites/</link>
		<comments>http://gui.net/blog/2010/07/04/nginx-configuration-files-and-rewrites/#comments</comments>
		<pubDate>Sun, 04 Jul 2010 18:16:35 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
		
		<category><![CDATA[The Industry]]></category>

		<guid isPermaLink="false">http://gui.net/blog/?p=73</guid>
		<description><![CDATA[Some of this post will just be random notes, some will be more descriptive of just what madness occurs inside one of these files. For version 0.7.63.
1,
ancient_browser &#8220;msie 6.0&#8243;; 
Whether quotes, like on the nginx site, capitalized or not, or unquoted as it is here:
http://gist.github.com/228769
(linked to from the main site), the instruction: if ($ancient_browser) is [...]]]></description>
			<content:encoded><![CDATA[<p>Some of this post will just be random notes, some will be more descriptive of just what madness occurs inside one of these files. For version 0.7.63.</p>
<p>1,</p>
<p>ancient_browser &#8220;msie 6.0&#8243;; </p>
<p>Whether quotes, like on the nginx site, capitalized or not, or unquoted as it is here:</p>
<p><a href="http://gist.github.com/228769">http://gist.github.com/228769</a></p>
<p>(linked to from the <a href="http://wiki.nginx.org/NginxHttpBrowserModule">main site</a>), the instruction: <strong>if ($ancient_browser)</strong> is true for the google bot. If you want your site crawled this ain&#8217;t so good. In fact, horrible.</p>
<p>2.</p>
<p>As mentioned before<strong> try_files</strong> appears to  do nothing at all. Instead one can use <strong>if -f filename</strong>. This generates an error for each try in the error.log.</p>
<p>3.</p>
<p>When performing a break at the end of a rewrite or in an if (&#8230;) { break; } what this does is send the process back to the top of the configuration file again, this time with the new modified $filename_uri ($request_uri is not changed by rewrites, tho you can assign it a new value, if I remember correctly)</p>
<p>4.</p>
<p>Our backend is an apache on a different ip. We needed to use:</p>
<p>resolver: xx.xx.xx.xx</p>
<p>and the x ip worked whether we used the ip of  the backend, or ips found in /etc/resolv.conf. Nginx did seem to need this  instruction regardless.</p>
<p>5.</p>
<p>For speed (and in our case to make things work) we added several lines like:</p>
<p>                location = /robots.txt {<br />
                location = /favicon.ico {<br />
and for the top level sitemap.</p>
<p>which are called quite frquently and the &#8216;=&#8217; comparison is reported by nginx to be the fastest and first omparisions made when a url is received.</p>
]]></content:encoded>
			<wfw:commentRss>http://gui.net/blog/2010/07/04/nginx-configuration-files-and-rewrites/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Nginx Configuration Files</title>
		<link>http://gui.net/blog/2010/06/24/nginx-configuration-file/</link>
		<comments>http://gui.net/blog/2010/06/24/nginx-configuration-file/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 19:01:43 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
		
		<category><![CDATA[The Industry]]></category>

		<guid isPermaLink="false">http://gui.net/blog/?p=72</guid>
		<description><![CDATA[Oh boy.
Finally figured out that the issue here is that there is no abstraction of the concept of &#8216;variable&#8217; to include both variables and aliases. So everything depends on context and which command is being used - which creates redundant functionality and unpredictability. 
Same for location etc. 
This lack of ability to use and apply [...]]]></description>
			<content:encoded><![CDATA[<p>Oh boy.</p>
<p>Finally figured out that the issue here is that there is no abstraction of the concept of &#8216;variable&#8217; to include both variables and aliases. So everything depends on context and which command is being used - which creates redundant functionality and unpredictability. </p>
<p>Same for location etc. </p>
<p>This lack of ability to use and apply abstract concepts and constructs leads to a ton of &#8217;special cases&#8217; and &#8217;special purpose&#8217; one-off code. Very little is generalizable. And this seems to be OK and the way many people [I would call them junior] think  - for example the recommended code to remove a leading www. from urls happens to  remove ALL sub domains as well. I.E. special purpose but not narrowly defined. Oh boy.</p>
<p>No versions associated with the documentation, so you never know that &#8216;try_files&#8217; does not work, for example, until you try it. Wasting some time.</p>
<p>Oh and what happened to plugins? This compiling in modules at compile time seems a bit &#8230; unwieldy. And no, it can&#8217;t be for speed&#8230; so&#8230; yes, generic plugin APIs are HARD [it is the ONLY thing that Eclipse got right (the code, the SWT, GED, it all sucks) and boy did they get it RIGHT. So it is not only hard, it can make a product very successful as well]. </p>
<p>The pluses here, though, are pretty good error reporting [way better than Varnish so far] even though the error log appears to be missing a lot of debug information [I must be doing something wrong, where &#8216;notice&#8217; and &#8216;debug&#8217; have the same output]. I also presume that the reliability at its primary job of serving up data to clients is pretty high, based on its reputation. </p>
<p>Anyway, based on the popularity of all these newish web servers Mattters has changed the Apache channel to the <a href="http://web-server.mattters.com/tribune">Web Server</a> Channel and we will add more links and support for Nginx and Varnish, Lighttpd etc over time</p>
]]></content:encoded>
			<wfw:commentRss>http://gui.net/blog/2010/06/24/nginx-configuration-file/feed/</wfw:commentRss>
		</item>
		<item>
		<title>A Tweet classification scheme</title>
		<link>http://gui.net/blog/2010/06/06/a-tweet-classification-scheme/</link>
		<comments>http://gui.net/blog/2010/06/06/a-tweet-classification-scheme/#comments</comments>
		<pubDate>Sun, 06 Jun 2010 20:32:04 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
		
		<category><![CDATA[The Industry]]></category>

		<guid isPermaLink="false">http://gui.net/blog/?p=71</guid>
		<description><![CDATA[When writing software to look at the content of posts on the internet, on blogs and on Twitter, one can just use keyword and keyword context metrics, or one can be a little smarter.
Using somewhat heuristically based algorithms, one can classify blog posts and tweets, and in particular, tweeps, into several common categories for the [...]]]></description>
			<content:encoded><![CDATA[<p>When writing <a href="http://software.mattters.com/tribune">software </a>to look at the content of posts on the <a href="http://internet.mattters.com/tribune">internet</a>, on blogs and on <a href="http://twitter.mattters.com">Twitter</a>, one can just use keyword and keyword context metrics, or one can be a little smarter.</p>
<p>Using somewhat heuristically based algorithms, one can classify blog posts and tweets, and in particular, tweeps, into several common categories for the purpose of assigning a relevance and usefulness level to a poster of information, in particular to other people outside their inner circle.</p>
<p>1. Chit chat: communicating with friends</p>
<p>2. Promotion: most of the posts are links to a particular product or blog</p>
<p>3. News disseminator: many links to stories found in many places on the net</p>
<p>4. Observer: observations and comments about what is happening</p>
<p>Some people have posts/tweets that fall into multiple of these categories, and often they will is some large part mimic the others in their inner circle.</p>
<p>One can&#8217;t help but observe that the number of followers / readers (aka success) typically is inversely related to the number of the category on this list. (i.e. observers / pundits get most of the traffic and interest on average)</p>
<p>This success function is easy to see with, say, <a href="http://justin-bieber.mattters.com">Justin Bieber</a>&#8217;s tweeps where just a few popular tweeps post observations and comments - but who are also the most popular tweeps.</p>
<p>The Tweeps for <a href="http://wine.mattters.com/tribune">Wine </a>are more balanced, many chatting a little, but mostly observing and disseminating news. The <a href="http://high-end-audio.mattters.com/tribune">High-end Audio</a> tweeps, however, are mostly promotional, with just a little news dissemination thrown in.</p>
]]></content:encoded>
			<wfw:commentRss>http://gui.net/blog/2010/06/06/a-tweet-classification-scheme/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The ontology of the software universe</title>
		<link>http://gui.net/blog/2010/05/17/the-ontology-of-the-software-universe/</link>
		<comments>http://gui.net/blog/2010/05/17/the-ontology-of-the-software-universe/#comments</comments>
		<pubDate>Mon, 17 May 2010 16:56:42 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
		
		<category><![CDATA[The Industry]]></category>

		<guid isPermaLink="false">http://gui.net/blog/?p=69</guid>
		<description><![CDATA[Organizing the discussions in the online software universe into some kind of hierarchy is a difficult and yet well-understood and frequently under-taken task.
Typically, most sites default to a relatively flat hierarchy of programming languages. You know Java, C++, JavaScript, Ruby, Flash etc.
For example dzone and stackoverflow are mostly like this.
Another hardly ever used classification scheme [...]]]></description>
			<content:encoded><![CDATA[<p>Organizing the discussions in the online software universe into some kind of hierarchy is a difficult and yet well-understood and frequently under-taken task.</p>
<p>Typically, most sites default to a relatively flat hierarchy of <a href="http://programming.mattters.com/tribune"><strong>programming </strong></a>languages. You know <a href="http://java.mattters.com">Java</a>, <a href="http://cplusplus.mattters.com">C++</a>, <a href="http://javascript.mattters.com/tribune">JavaScript</a>, <a href="http://ruby.mattters.com">Ruby</a>, <a href="http://flash.mattters.com/tribune">Flash </a>etc.</p>
<p>For example <a href="http://dzone.com">dzone</a> and <a href="http://stackoverflow.com">stackoverflow</a> are mostly like this.</p>
<p>Another hardly ever used classification scheme would be to organize things by software platform:</p>
<p>Weblogic, JBoss, <a href="http://linux.mattters.com/tribune">Linux</a>, <a href="http://windows.mattters.com/tribune">Windows</a>, <a href="http://firefox.mattters.com">Firefox</a>, <a href="http://chrome.mattters.com">Chrome</a>,  etc.</p>
<p>No one does that ASFIK</p>
<p>Another is by target hardware platform location:</p>
<p>desktop, smart phone, serverside, medical equipment, kiosk</p>
<p>No one does this either ASFIK</p>
<p>Another is to organize things by domain:</p>
<p>medical, space, business, entertainment</p>
<p>No one does this either ASFIK. Lame ain&#8217;t we.</p>
<p>Finally, one can organize by information assumptions type:</p>
<p><a href="http://programming-tips.mattters.com/tribune">tips</a>, Q&#038;A, engineering, <a href="http://programming-craft.mattters.com/tribune">craft</a>, quick&#038;easy</p>
<p>and in general the sites themselves are implicitly organized (separated) into this scheme.</p>
<p><a href="http://software.mattters.com/tribune">Software </a>is one of the most prevalent topics on the internet, lots of data points here :-)</p>
]]></content:encoded>
			<wfw:commentRss>http://gui.net/blog/2010/05/17/the-ontology-of-the-software-universe/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Website Traffic Analytics and the Stock Market</title>
		<link>http://gui.net/blog/2010/05/10/website-traffic-analytics-and-the-stock-market/</link>
		<comments>http://gui.net/blog/2010/05/10/website-traffic-analytics-and-the-stock-market/#comments</comments>
		<pubDate>Tue, 11 May 2010 04:17:58 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
		
		<category><![CDATA[The Industry]]></category>

		<guid isPermaLink="false">http://gui.net/blog/?p=68</guid>
		<description><![CDATA[Being one of the few to get caught up in the late 90&#8217;s stock market bubble (ha ha ha &#8230; Not) I learned a lot about reading stock charts. 
Understanding charts helps you to make better trades - whether you are day trading, long term stock trading, long term investing, or buying on home. 
At [...]]]></description>
			<content:encoded><![CDATA[<p>Being one of the few to get caught up in the late 90&#8217;s <a href="http://stock-market.mattters.com">stock market</a> bubble (ha ha ha &#8230; Not) I learned a lot about reading stock charts. </p>
<p>Understanding charts helps you to make better trades - whether you are day trading, <a href="http://stock-trading.matters.com">long term stock trading</a>, long term <a href="http://advanced-investing.mattters.com">investing</a>, or buying on home. </p>
<p>At its core, charts are a graphical visualization of human behavior.</p>
<p>Like, for example, humans visiting a website.</p>
<p>I am forgetting some of the terminology after 10 years (yay!) but can still read a chart: Bollinger bands, day, weekly and month trendlines, gaps and filling gaps, retrenchments&#8230; All of this knowledge can be applied to your website statistics.</p>
<p>Not sure if this helps with <a href="http://seo.mattters.com">SEO </a>necessarily. More likely it tells you when to make a major push on your <a href="http://online-marketing.mattters.com">online marketing</a> campaign because, for example, your highs and lows are converging to a single value and your traffic is going to gap down or up real-soon-now. And you would most likely want it to go UP!</p>
<p>And, finally, an idea for all you website/twitter analytics start-ups&#8230; try using some of the well known stock chart visualization techniques (<a href="http://finance.yahoo.com">Yahoo Finance </a>is a really great site for examples). A great differentiator&#8230; and useful too :-)</p>
]]></content:encoded>
			<wfw:commentRss>http://gui.net/blog/2010/05/10/website-traffic-analytics-and-the-stock-market/feed/</wfw:commentRss>
		</item>
		<item>
		<title>To support smart phones or not to&#8230;</title>
		<link>http://gui.net/blog/2010/05/05/to-support-smart-phones-or-not-to/</link>
		<comments>http://gui.net/blog/2010/05/05/to-support-smart-phones-or-not-to/#comments</comments>
		<pubDate>Thu, 06 May 2010 04:05:16 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
		
		<category><![CDATA[The Industry]]></category>

		<guid isPermaLink="false">http://gui.net/blog/?p=67</guid>
		<description><![CDATA[As many have notes, first it was Microsoft IE that was a obstacle in the write once, run everywhere dream of every hard working programmer programming their heart out.
 And we thought THAT was bad. Ha!
Now we have Apple, with its (yes, it is theirs, who else would want it?) horrifically antique Objective-C giving us [...]]]></description>
			<content:encoded><![CDATA[<p>As many have notes, first it was <a href="http://microsoft.mattters.com/">Microsoft </a>IE that was a obstacle in the write once, run everywhere dream of every hard working programmer <a href="http://programming.mattters.com/">programming </a>their heart out.</p>
<p> And we thought THAT was bad. Ha!</p>
<p>Now we have <a href="http://apple.mattters.com/">Apple</a>, with its (yes, it is theirs, who else would want it?) horrifically antique <a href="http://objective-c.mattters.com/">Objective-C</a> giving us yet another hurdle with the <a href="http://iphone-sdk.mattters.com/">iPhone SDK</a>. OK, so write twice run everywhere, right? We just have to delay every release, reduce overall functionality, and release that Objective-C is for baby apps, and not try anything that is real and substantial with it if we want our sanity to survive until 2112 (when we all die anyway, right? :-)) </p>
<p>Then we have <a href="http://google.mattters.com/">Google</a>&#8217;s Android and <a href="http://android-development.mattters.com/">Android development</a> and <a href="http://java.mattters.com/">Java </a>(better than Objective-C, by a million miles of gray hair, yes indeed, but still growing a little moldy on the vine) but at least they allow cross compiling (unlike Apple).</p>
<p>Now we have the <a href="http://ipad.mattters.com/">iPad</a>. </p>
<p>So the write once, write twice, uh write four times, run a lot of places paradigm is kaput. </p>
<p>Small developers just do not have the resources to develop for four platforms. So they will have to pick one. Let&#8217;s see&#8230;. the <a href="http://internet.mattters.com/">internet</a>? Kind of crowded with 100M&#8217;s of competitors. The smart phone? Like the CD ROM apps before it, all the baby apps have been done to death - the next gen smart phone apps will have to have a substantial back end that provides some kind of interesting functionality (i.e. not <a href="http://foursquare.com/">Foursquare</a>).</p>
<p>So that leaves the iPad. So all the <a href="http://ycombinator.com/">small developers</a> have to develop for it because they at least have a chance [and it is cool and fun, too, which doesn&#8217;t hurt :-)]. And large developers have the resources to throw money at everything. But how about  the little guy who has already started developing for platform X - what do they do? They can&#8217;t afford to add support for yet another platform. They bite their fingernails.</p>
]]></content:encoded>
			<wfw:commentRss>http://gui.net/blog/2010/05/05/to-support-smart-phones-or-not-to/feed/</wfw:commentRss>
		</item>
		<item>
		<title>iPad development anxiety</title>
		<link>http://gui.net/blog/2010/05/01/ipad-development-anxiety/</link>
		<comments>http://gui.net/blog/2010/05/01/ipad-development-anxiety/#comments</comments>
		<pubDate>Sun, 02 May 2010 04:50:23 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
		
		<category><![CDATA[The Industry]]></category>

		<guid isPermaLink="false">http://gui.net/blog/?p=66</guid>
		<description><![CDATA[We want to but we don&#8217;t want to.
It&#8217;d be fun. But 1.0 of Apple products look so anemic in the rear-view mirror. 
But, waiting for 2.0 (3.0?) takes so much patience. *Argh!*
Reading all about the iPad on theiPad News channel.
The iPad is underrated. The iPad is overrated. 
It is probably both - like most things. [...]]]></description>
			<content:encoded><![CDATA[<p>We want to but we don&#8217;t want to.</p>
<p>It&#8217;d be fun. But 1.0 of Apple products look so anemic in the rear-view mirror. </p>
<p>But, waiting for 2.0 (3.0?) takes so much patience. *Argh!*</p>
<p>Reading all about the iPad on the<a href="http://ipad.mattters.com/">iPad News</a> channel.</p>
<p>The iPad is underrated. The iPad is overrated. </p>
<p>It is probably both - like most things. :-)</p>
<p>and I do not even want to THINK about whether they are going to try to lock us into some kind of Objective C nonsense for the <a href="http://ipad.mattters.com/">iPad</a>. </p>
<p>Why do we always have to rely on Google (a monopoly) to bail us out of stupid and aggravating monopolistic tendencies of the old school monopolies.</p>
<p>The Padroid?</p>
]]></content:encoded>
			<wfw:commentRss>http://gui.net/blog/2010/05/01/ipad-development-anxiety/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Retweet buttons</title>
		<link>http://gui.net/blog/2010/03/24/retweet-buttons/</link>
		<comments>http://gui.net/blog/2010/03/24/retweet-buttons/#comments</comments>
		<pubDate>Wed, 24 Mar 2010 19:58:36 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
		
		<category><![CDATA[Reviews]]></category>

		<category><![CDATA[The Industry]]></category>

		<guid isPermaLink="false">http://gui.net/blog/?p=65</guid>
		<description><![CDATA[We added a ReTweet button for the stories on Mattters recently and investigated several of the more popular approaches. 
We had several requirements, many of which are not common:
* We needed 40, 50 or more buttons on a page.
* We needed each button to retweet a story whose url and title was not the url [...]]]></description>
			<content:encoded><![CDATA[<p>We added a ReTweet button for the stories on <a href="http://mattters.com">Mattters </a>recently and investigated several of the more popular approaches. </p>
<p>We had several requirements, many of which are not common:</p>
<p>* We needed 40, 50 or more buttons on a page.<br />
* We needed each button to retweet a story whose url and title was not the url or title of the current page</p>
<p>We looked at TweetMeme&#8217;s button:</p>
<p><a href="http://help.tweetmeme.com/2009/04/06/tweetmeme-button/">TweetMeme Retweet Button</a></p>
<p>and Topsy&#8217;s button:</p>
<p><a href="http://labs.topsy.com/widgets/retweet-button/">Topsy Retweet Button</a></p>
<p>at the time, I do not think TweetMeme allowed us to set the title of the retweet, preferring instead to fetch the title from the url we specified (which was sloooow)</p>
<p>They both ended up being kind of slow for us. We had 40 or 50 to add to each page which was taking 2 or 3 seconds.</p>
<p>Then we found another approach on John Resig&#8217;s blog</p>
<p><a href="http://ejohn.org/blog/retweet/">Easy Retweet Button</a></p>
<p>This approach was much faster, and allowed us to have much more control over the bitly-ification and the fetching of the current &#8216;number of retweets&#8217; to display.</p>
<p>Oh, and of course we have John Resig&#8217;s blog on the Mattters <a href="http://javascript.mattters.com">JavaScript </a>News Channel :-)</p>
]]></content:encoded>
			<wfw:commentRss>http://gui.net/blog/2010/03/24/retweet-buttons/feed/</wfw:commentRss>
		</item>
		<item>
		<title>A new way to Follow Your Interests</title>
		<link>http://gui.net/blog/2009/12/27/a-new-way-to-follow-your-interests/</link>
		<comments>http://gui.net/blog/2009/12/27/a-new-way-to-follow-your-interests/#comments</comments>
		<pubDate>Mon, 28 Dec 2009 00:36:44 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
		
		<category><![CDATA[The Industry]]></category>

		<guid isPermaLink="false">http://gui.net/blog/?p=64</guid>
		<description><![CDATA[For those who have interests outside what the major news organizations feed us [get it? &#8216;feed&#8217; us&#8230;], you might want to try http://mattters.com. 
It is an attempt to provide full real-time coverage of all sorts of topics like Ruby on Rails, JavaScript, Beer, and other good things like that as well as things like gadgets.
]]></description>
			<content:encoded><![CDATA[<p>For those who have interests outside what the major news organizations feed us [get it? &#8216;feed&#8217; us&#8230;], you might want to try <a href="http://mattters.com">http://mattters.com</a>. </p>
<p>It is an attempt to provide full real-time coverage of all sorts of topics like <a href="http://ruby-on-rails.mattters.com">Ruby on Rails</a>, <a href="http://javascript.mattters.com">JavaScript</a>, <a href="http://beer.mattters.com">Beer</a>, and other good things like that as well as things like <a href="http://gadgets.mattters.com">gadgets</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://gui.net/blog/2009/12/27/a-new-way-to-follow-your-interests/feed/</wfw:commentRss>
		</item>
		<item>
		<title>mattr_accessor</title>
		<link>http://gui.net/blog/2009/12/27/mattr_accessor/</link>
		<comments>http://gui.net/blog/2009/12/27/mattr_accessor/#comments</comments>
		<pubDate>Mon, 28 Dec 2009 00:31:43 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
		
		<category><![CDATA[The Industry]]></category>

		<guid isPermaLink="false">http://gui.net/blog/?p=63</guid>
		<description><![CDATA[It is a little hard to find about this operative using Google, but it turns out it provides a way to access a class static variable [i.e. @@variable] in Ruby on Rails. You can see an example of its usage in attachment_fu, but essentually it is just like attr_accessor - but for @@&#8217;s :-)
]]></description>
			<content:encoded><![CDATA[<p>It is a little hard to find about this operative using Google, but it turns out it provides a way to access a class static variable [i.e. @@variable] in Ruby on Rails. You can see an example of its usage in attachment_fu, but essentually it is just like attr_accessor - but for @@&#8217;s :-)</p>
]]></content:encoded>
			<wfw:commentRss>http://gui.net/blog/2009/12/27/mattr_accessor/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
