<?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: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-8002248475809897548</id><updated>2012-02-16T06:36:48.401-05:00</updated><category term='scripting'/><category term='svg svgo golang Go font Helvetica Arial Inconsolata Courier Times'/><category term='pictures'/><category term='apple iphone design'/><category term='Go'/><category term='shell script'/><category term='ruby django mtv 37signals web design rest java j2ee cobol'/><category term='olpc'/><category term='dock'/><category term='REST google microsoft AtomPub Atom &quot;web services&quot; ruby'/><category term='syndication RSS atom SynOA OPML feed'/><category term='apple'/><category term='svg browser chrome firefox opera ui safari'/><category term='olpc python display education design'/><category term='SVG'/><category term='SVG svgo golang Go pmap visualization chart proportion'/><category term='iphone multitouch ui bumptop surface microsoft movies'/><category term='golang'/><category term='google Pike erlang concurrency parallel mapreduce sawzall  newsqueak'/><category term='megadata bigtable google flickr data'/><category term='golang twitter'/><category term='leopard'/><category term='infographics'/><category term='web2.0 google amazon 37signals wikipedia flickr facebook bookmarking digg salesforce'/><category term='svgo'/><category term='SVG svgo golang Go stockproduct visualization chart stock product price aapl msft'/><category term='mac'/><category term='google microsoft schmidt ozzie cloud mobile Sun'/><category term='apple imac stock pod iphone emac powerbook macbook &quot;mac os x&quot;'/><category term='amazon mp3 apple mac music'/><category term='ideas megadata ui REST olpc syndication apple iphone web2.0 erp python django'/><category term='processing graphics programming java development  art'/><category term='code'/><category term='svgo svgo browser webfonts graphics sketch'/><category term='iphone dasboard music podcast gartner enterprise web safari apple mobile photos'/><title type='text'>Mindchunk</title><subtitle type='html'>a piece of my mind</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://mindchunk.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://mindchunk.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Anthony</name><uri>http://www.blogger.com/profile/05976341066259822102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ZBBfXt0sdfo/SrWgaveJE_I/AAAAAAAAAL4/V40R3Jzvj0M/S220/starx.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>48</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8002248475809897548.post-7340647599144714141</id><published>2011-10-15T18:25:00.001-04:00</published><updated>2011-11-13T22:57:05.605-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SVG'/><category scheme='http://www.blogger.com/atom/ns#' term='svgo'/><category scheme='http://www.blogger.com/atom/ns#' term='pictures'/><category scheme='http://www.blogger.com/atom/ns#' term='Go'/><category scheme='http://www.blogger.com/atom/ns#' term='code'/><category scheme='http://www.blogger.com/atom/ns#' term='shell script'/><category scheme='http://www.blogger.com/atom/ns#' term='golang'/><title type='text'>Documenting Code and Pictures</title><content type='html'>For the&lt;a href="http://speakerdeck.com/u/ajstarks/p/svgo-workshop"&gt; SVGo workshop&lt;/a&gt; I had to document many examples of code+pictures, so I created a workflow to create consistently formatted illustrations of SVGo code and the pictures they produce.Below is the script that automates the process. The heart of the script is a small Go program, &lt;a href="https://github.com/ajstarks/svgo/blob/master/codepic/codepic.go"&gt;&lt;code&gt;codepic&lt;/code&gt;&lt;/a&gt; which creates a SVG file of code and picture:&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://3.bp.blogspot.com/-oX6QK-arUts/TpoFTcm56kI/AAAAAAAAAQA/l-n46FD3SEk/s1600/rotext-slide.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="300" width="400" src="http://3.bp.blogspot.com/-oX6QK-arUts/TpoFTcm56kI/AAAAAAAAAQA/l-n46FD3SEk/s400/rotext-slide.png" /&gt;&lt;/a&gt;&lt;/div&gt;Here's the script:&lt;pre&gt;&lt;br /&gt;#!/bin/sh&lt;br /&gt;for i in $*&lt;br /&gt;do&lt;br /&gt;    base=`basename $i .go`&lt;br /&gt;    gofmt -w -spaces -tabindent=false -tabwidth=4 $i &amp;amp;&amp;amp;&lt;br /&gt;    goc $base &amp;amp;&amp;amp; &lt;br /&gt;    ./${base} &amp;gt; ${base}.svg &amp;amp;&amp;amp; &lt;br /&gt;    codepic -codeframe=f -font Inconsolata -fs 14 -ls 16 $i &amp;gt; ${base}-slide.svg &amp;amp;&amp;amp; &lt;br /&gt;    svg2pdf ${base}-slide.svg&lt;br /&gt;done&lt;br /&gt;&lt;/pre&gt;for each file the script: &lt;ol&gt;&lt;li&gt;formats the source&lt;/li&gt;&lt;li&gt;builds the source&lt;/li&gt;&lt;li&gt;runs the program and captures its output&lt;/li&gt;&lt;li&gt;make a slide showing the code and output&lt;/li&gt;&lt;li&gt;convert the slide to PDF for inclusion in Keynote&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8002248475809897548-7340647599144714141?l=mindchunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindchunk.blogspot.com/feeds/7340647599144714141/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8002248475809897548&amp;postID=7340647599144714141' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/7340647599144714141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/7340647599144714141'/><link rel='alternate' type='text/html' href='http://mindchunk.blogspot.com/2011/10/documenting-code-and-pictures.html' title='Documenting Code and Pictures'/><author><name>Anthony</name><uri>http://www.blogger.com/profile/05976341066259822102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ZBBfXt0sdfo/SrWgaveJE_I/AAAAAAAAAL4/V40R3Jzvj0M/S220/starx.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-oX6QK-arUts/TpoFTcm56kI/AAAAAAAAAQA/l-n46FD3SEk/s72-c/rotext-slide.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8002248475809897548.post-4039580381790748899</id><published>2011-08-07T20:54:00.032-04:00</published><updated>2011-08-14T17:16:30.866-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SVG svgo golang Go stockproduct visualization chart stock product price aapl msft'/><title type='text'>Stock/Product Comparisons with SVGo</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/-MJeYNBEuZwQ/Tkgq6suMdSI/AAAAAAAAAPM/SI68EeViiAE/s1600/sp.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 600px; height: 337px;" src="http://1.bp.blogspot.com/-MJeYNBEuZwQ/Tkgq6suMdSI/AAAAAAAAAPM/SI68EeViiAE/s800/sp.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5640805721207239970" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The latest visualization tool written with SVGo is &lt;a href="https://github.com/ajstarks/svgo/blob/master/stockproduct.go"&gt;stockproduct&lt;/a&gt;, a tool to compare stock prices with the release of products over time.  This is a Go version of the&lt;a href="http://mindchunk.blogspot.com/2007/11/programming-infographics-with.html"&gt; tool described earlier&lt;/a&gt;. Like other SVGo tools, stockproduct reads data from XML (see example below)  and produces SVG.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;stockproduct title="Apple Purchases and Stock Price"&amp;gt;&lt;br /&gt;   &amp;lt;sdata price="12.40" date="2002-04" product="Ti PowerBook" image="tipb.jpg"/&amp;gt;&lt;br /&gt;   &amp;lt;sdata price="7.38" date="2002-08" product="Jaguar" image="jaguar.png"/&amp;gt&lt;br /&gt;   &amp;lt;sdata price="261.09" date="2010-04" product="iPad 3G" image="ipad3g.jpg"/&amp;gt;&lt;br /&gt;   &amp;lt;sdata price="399.68" date="2011-07" product="Lion" image="lion.png"/&amp;gt;&lt;br /&gt;&amp;lt;/stockproduct&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The example above plots my purchases of Apple products vs. the stock price.&lt;br /&gt;&lt;br /&gt;Stockproduct scales the graph by the specified size, and the graph can be placed anywhere on the SVG canvas. Note that  every chart component: bars, images, product names. prices, scales, and images may be turned on and off using command line options.&lt;br /&gt;&lt;br /&gt;This example:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-zyJAYh3MeDs/TkgrCTsGOsI/AAAAAAAAAPU/KBnwTyjDWKY/s1600/osdate.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 600px; height: 337px;" src="http://2.bp.blogspot.com/-zyJAYh3MeDs/TkgrCTsGOsI/AAAAAAAAAPU/KBnwTyjDWKY/s800/osdate.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5640805851926510274" /&gt;&lt;/a&gt;compares the adjusted closing price vs. operating system releases from Microsoft and Apple, ordered by the date of release. Between 1991-2001, both organizations were able to keep pace, with Microsoft releasing Windows 3.1, 95, 98, and Apple releasing System 7, 8, and 9.&lt;br /&gt;&lt;p&gt;However, between 2001 and 2005 Apple steadily released five versions of Mac OS X (Cheetah, Puma, Jaguar, Panther, and Tiger), but in the same time period, Microsoft released only XP.  After 2005, Apple released Leopard, Snow Leopard and Lion, where Microsoft released VIsta and Windows 7.&lt;/p&gt;From 1991-2007, there were no large differences in stock prices, but in 2007, the there was large gain for Apple, growing from $184.70 to $386.90, with Microsoft's price staying flat, at $23.75 at the release of Windows 7 in 2007.&lt;br /&gt;&lt;p&gt;In fact the range of prices and releases during past 20 years is Microsoft:  $2-23.75,  and 6 operating system releases, with Apple's stock price ranging from $4.11 - $386.90, with 11 operating system releases (not including iOS).&lt;/p&gt;Here's the same data with Apple products on the left, peaking at Lion, and Microsoft products on the right:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-daumI1UTz1c/TkgrNfNiyeI/AAAAAAAAAPc/fkg_KVRZ2Xs/s1600/os.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width:600px; height: 337px;" src="http://2.bp.blogspot.com/-daumI1UTz1c/TkgrNfNiyeI/AAAAAAAAAPc/fkg_KVRZ2Xs/s800/os.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5640806043998144994" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8002248475809897548-4039580381790748899?l=mindchunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindchunk.blogspot.com/feeds/4039580381790748899/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8002248475809897548&amp;postID=4039580381790748899' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/4039580381790748899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/4039580381790748899'/><link rel='alternate' type='text/html' href='http://mindchunk.blogspot.com/2011/08/stockproduct-comparisons-with-svg.html' title='Stock/Product Comparisons with SVGo'/><author><name>Anthony</name><uri>http://www.blogger.com/profile/05976341066259822102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ZBBfXt0sdfo/SrWgaveJE_I/AAAAAAAAAL4/V40R3Jzvj0M/S220/starx.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-MJeYNBEuZwQ/Tkgq6suMdSI/AAAAAAAAAPM/SI68EeViiAE/s72-c/sp.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8002248475809897548.post-318838285200175756</id><published>2011-07-11T19:54:00.024-04:00</published><updated>2011-07-13T11:36:41.873-04:00</updated><title type='text'>Bullet Graphs with SVGo</title><content type='html'>&lt;div style="margin: 0 0 10px 0; padding: 0; font-size: 0.8em; line-height: 1.6em;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ajstarks/5914139179/" title="Bullet Graphs by ajstarks, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5273/5914139179_91805b62b0.jpg" width="500" height="293" alt="Bullet Graphs" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;Here is the output of &lt;a href="https://github.com/ajstarks/svgo/blob/master/bulletgraph.go"&gt;bulletgraph&lt;/a&gt; -- an implemetation of &lt;a href="http://www.perceptualedge.com/articles/misc/Bullet_Graph_Design_Spec.pdf"&gt;Few's Bullet Graphs&lt;/a&gt; using &lt;a href="http://github.com/ajstarks/svgo"&gt;SVGo&lt;/a&gt;.  Like &lt;a href="http://mindchunk.blogspot.com/2010/10/proportional-maps-alternative-to-pie.html"&gt;pmaps&lt;/a&gt;, &lt;span class="Apple-style-span"&gt;bulletgraph&lt;/span&gt; reads a XML representation of the data, unmarshals the input into data structures, and produces the bullet graph from the structures.  The input looks like this:&lt;/p&gt;&lt;pre&gt;&amp;lt;bulletgraph&amp;gt;&lt;br /&gt; &amp;lt;bdata title="Revenue 2005" subtitle="USD (1,000)"&lt;br /&gt;      scale="0,300,50"  qmeasure="150,225" cmeasure="250" measure="275"/&amp;gt;&lt;br /&gt;&amp;lt;/bulletgraph&amp;gt;&lt;/pre&gt;&lt;p&gt;Each bdata element produces a graph according to its attributes (titles, scales, and measures)&lt;/p&gt;&lt;p&gt;The program has various options to control colors of the various components (data color, comparative color,  target color), and the indicator showing the target measure can either be the conventional vertical line or a circle.  The -help option shows all of the option flags, with an example XML definition.&lt;/p&gt;&lt;p&gt;bulletgraph -help&lt;/p&gt;&lt;pre&gt;Usage: bulletgraph [options] file...&lt;br /&gt;&lt;br /&gt; -bc="rgb(200,200,200)": bar color&lt;br /&gt; -bg="white": background color&lt;br /&gt; -bh=48: bar height&lt;br /&gt; -cc="black": comparative color&lt;br /&gt; -circle=false: circle mark&lt;br /&gt; -dc="darkgray": data color&lt;br /&gt; -f=18: fontsize (px)&lt;br /&gt; -g=30: gutter&lt;br /&gt; -h=800: height&lt;br /&gt; -help=false: usage and example&lt;br /&gt; -showtitle=false: show title&lt;br /&gt; -t="Bullet Graphs": title&lt;br /&gt; -w=1024: width&lt;br /&gt;&lt;br /&gt;Example Defintion:&lt;br /&gt;&lt;br /&gt;&amp;lt;bulletgraph top="50" left="250" right="50"&amp;gt;&lt;br /&gt;  &amp;lt;bdata title="Revenue 2005"      subtitle="USD (1,000)"     scale="0,300,50"   qmeasure="150,225"    cmeasure="250"  measure="275"/&amp;gt;&lt;br /&gt;  &amp;lt;bdata title="Profit"            subtitle="%"               scale="0,30,5"     qmeasure="20,25"      cmeasure="27"   measure="22.5"/&amp;gt;&lt;br /&gt;  &amp;lt;bdata title="Avg Order Size"    subtitle="USD"             scale="0,600,100"  qmeasure="350,500"    cmeasure="550"  measure="320"/&amp;gt;&lt;br /&gt;  &amp;lt;bdata title="New Customers"     subtitle="Count"           scale="0,2500,500" qmeasure="1700,2000"  cmeasure="2100" measure="1750"/&amp;gt;&lt;br /&gt;  &amp;lt;bdata title="Cust Satisfaction" subtitle="Top rating of 5" scale="0,5,1"      qmeasure="3.5,4.5"    cmeasure="4.7"  measure="4.85"/&amp;gt;&lt;br /&gt;&amp;lt;/bulletgraph&amp;gt;&lt;/pre&gt;Thanks to Richard Masci for the example usage suggestion.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8002248475809897548-318838285200175756?l=mindchunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindchunk.blogspot.com/feeds/318838285200175756/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8002248475809897548&amp;postID=318838285200175756' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/318838285200175756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/318838285200175756'/><link rel='alternate' type='text/html' href='http://mindchunk.blogspot.com/2011/07/bullet-graphs.html' title='Bullet Graphs with SVGo'/><author><name>Anthony</name><uri>http://www.blogger.com/profile/05976341066259822102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ZBBfXt0sdfo/SrWgaveJE_I/AAAAAAAAAL4/V40R3Jzvj0M/S220/starx.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm6.static.flickr.com/5273/5914139179_91805b62b0_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8002248475809897548.post-531715958230991152</id><published>2011-05-16T07:06:00.039-04:00</published><updated>2011-05-26T01:52:49.525-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='svgo svgo browser webfonts graphics sketch'/><title type='text'>Google Web Fonts, SVGo and code sketching with goplay</title><content type='html'>&lt;div style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ajstarks/5712317866/" title="SVGo and Google web fonts by ajstarks, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2065/5712317866_b60257ff42.jpg" width="500" height="346" alt="SVGo and Google web fonts"&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;This program, &lt;a href="https://github.com/ajstarks/svgo/blob/master/webfonts.go"&gt;webfonts&lt;/a&gt;, demonstrates &lt;a href="http://www.google.com/webfonts"&gt;Google Web Fonts&lt;/a&gt; and its &lt;a href="http://code.google.com/apis/webfonts"&gt;API&lt;/a&gt; with &lt;a href="http://github.com/ajstarks/svgo"&gt;SVGo&lt;/a&gt;.  The key to its operation is the URI:&lt;/div&gt;&lt;pre&gt;http://fonts.googleapis.com/css?family={fonts}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;where {fonts} is a pipe-delimited list of font names.   The result of performing a HTTP GET on this URI is &lt;a href="http://www.w3.org/TR/SVG/styling.html"&gt;CSS code&lt;/a&gt; that specifies the fonts.  For example,&lt;/p&gt;&lt;pre&gt;http://fonts.googleapis.com/css?family=Pacifico &lt;/pre&gt;&lt;pre&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, serif; white-space: normal; "&gt;produces:&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;@font-face {&lt;br /&gt;font-family: 'Pacifico';&lt;br /&gt;font-style: normal;&lt;br /&gt;font-weight: normal;&lt;br /&gt;src: local('Pacifico'), url('http://themes.googleusercontent.com/font?kit=fKnfV28XkldRW297cFLeqfesZW2xOQ-xsNqO47m55DA') format('truetype');&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;The program works by using a Go function to perform the GET (googlefont(fontname string)), and place the resulting CSS in a &lt;a href="http://www.w3.org/TR/SVG/struct.html#DefsElement"&gt;SVG defs element&lt;/a&gt;.  The program is then able to use the web fonts by name just like any other local font.   In this case looping over the names in the list, and displaying "Hello, World" in the corresponding font.&lt;br /&gt;&lt;br /&gt;The screenshot shows the code and output in Google Chrome (although any modern browser that can handle inline SVG  will work), using a web app that comes with the Go distribution, &lt;span class="Apple-style-span"&gt;goplay&lt;/span&gt;. Goplay allows you to "play" with snippets of Go code and quickly compile and see the results in a web browser. In the case of programs like the one shown, the generated SVG is placed in-line, interpreted directly, showing the picture.  &lt;/p&gt;&lt;p&gt;Here's how to run it: go to a directory where your code lives, and then run goplay -html, which sends the results unaltered to the browser, instead of in a plain text block.  A word of caution from the goplay documentation: &lt;i&gt;anyone with access to the goplay web interface can run  arbitrary code on your computer. Goplay is not a sandbox, and has no other security mechanisms. Do not deploy it in untrusted environments.&lt;/i&gt;&lt;/p&gt;&lt;pre&gt;cd [dir]&lt;br /&gt;goplay -html&lt;/pre&gt;Next, point your browser to the content served by goplay (which listens on localhost, port 3999 by default):&lt;br /&gt;&lt;br /&gt;http://localhost:3999/webfonts.go&lt;br /&gt;&lt;br /&gt;Your code will be shown in the textarea, ready to be edited and built.  Hit Shift-ENTER and code is compiled and run with the output next to the code. If you want to tweak the program, by changing say, a font name or the string to be displayed, just move to the textarea, make the change, and hit Shift-ENTER again.  This method allows you to sketch in code, with immediate feedback.&lt;p&gt;&lt;/p&gt;&lt;div&gt;With the WebKit Inspector found in Chrome and Safari, you can examine timing, code, and font information.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ajstarks/5729053748/" title="SVGo and Webfonts: network timing by ajstarks, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5101/5729053748_32546741f7_m.jpg" width="240" height="139" alt="SVGo and Webfonts: network timing"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ajstarks/5729053786/" title="SVGo and Webfonts: generated code by ajstarks, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5183/5729053786_bf8b06c730_m.jpg" width="240" height="139" alt="SVGo and Webfonts: generated code"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ajstarks/5729053900/" title="SVGo and Webfonts: font resource by ajstarks, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2362/5729053900_eb446036ee_m.jpg" width="240" height="139" alt="SVGo and Webfonts: font resource"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8002248475809897548-531715958230991152?l=mindchunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindchunk.blogspot.com/feeds/531715958230991152/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8002248475809897548&amp;postID=531715958230991152' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/531715958230991152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/531715958230991152'/><link rel='alternate' type='text/html' href='http://mindchunk.blogspot.com/2011/05/svgo-and-google-web-fonts.html' title='Google Web Fonts, SVGo and code sketching with goplay'/><author><name>Anthony</name><uri>http://www.blogger.com/profile/05976341066259822102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ZBBfXt0sdfo/SrWgaveJE_I/AAAAAAAAAL4/V40R3Jzvj0M/S220/starx.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2065/5712317866_b60257ff42_t.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8002248475809897548.post-3544217208828661005</id><published>2010-11-01T19:30:00.001-04:00</published><updated>2010-11-01T19:30:01.751-04:00</updated><title type='text'>Mobile Market Share: 2010</title><content type='html'>&lt;div style="float: right; margin-left: 10px; margin-bottom: 10px;"&gt;&lt;a href="http://www.flickr.com/photos/ajstarks/5137354979/" title="photo sharing"&gt;&lt;img src="http://farm2.static.flickr.com/1051/5137354979_3e63c58058_m.jpg" alt="" style="border: solid 2px #000000;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size: 0.9em; margin-top: 0px;"&gt;&lt;a href="http://www.flickr.com/photos/ajstarks/5137354979/"&gt;Mobile Market Share: 2010&lt;/a&gt;&lt;br /&gt;Originally uploaded by &lt;a href="http://www.flickr.com/people/ajstarks/"&gt;ajstarks&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;Here is a collection of pmaps that outline the changing mobile market share.  The data is from Canalys, IDC, CNet, and Asymco.com&lt;br clear="all" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8002248475809897548-3544217208828661005?l=mindchunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindchunk.blogspot.com/feeds/3544217208828661005/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8002248475809897548&amp;postID=3544217208828661005' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/3544217208828661005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/3544217208828661005'/><link rel='alternate' type='text/html' href='http://mindchunk.blogspot.com/2010/11/mobile-market-share-2010.html' title='Mobile Market Share: 2010'/><author><name>Anthony</name><uri>http://www.blogger.com/profile/05976341066259822102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ZBBfXt0sdfo/SrWgaveJE_I/AAAAAAAAAL4/V40R3Jzvj0M/S220/starx.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm2.static.flickr.com/1051/5137354979_3e63c58058_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8002248475809897548.post-8254137044681956056</id><published>2010-10-07T00:16:00.013-04:00</published><updated>2010-10-09T00:46:34.824-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SVG svgo golang Go pmap visualization chart proportion'/><title type='text'>Proportional Maps: an alternative to pie charts</title><content type='html'>&lt;div style="float: right; margin-left: 10px; margin-bottom: 10px;"&gt;&lt;a href="http://www.flickr.com/photos/ajstarks/5058633306/" title="photo sharing"&gt;&lt;img src="http://farm5.static.flickr.com/4087/5058633306_1ab0f6959a_m.jpg" alt="" style="border: solid 2px #000000;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size: 0.9em; margin-top: 0px;"&gt;&lt;a href="http://www.flickr.com/photos/ajstarks/5058633306/sizes/o/"&gt;Proportional Maps: Browser Market share&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;Proportional maps (pmaps) are an alternative to the venerable pie chart for showing the how a set of data adds up to a whole. &lt;p&gt;Pmaps are designed to show the data more clearly than pie charts by using color (the darker the color the greater the proportion),  size (the width of the rectangle corresponds to the data's proportion) and position (the data is ordered from greater to least proportion).&lt;/p&gt;&lt;p&gt;The compact nature of pmaps allows you to compare related datasets by scanning vertically. For example the illustration shows how &lt;a href="http://www.downloadsquad.com/2010/10/05/splitting-hairs-over-fractional-web-browser-market-shares/"&gt;different sources report browser market share&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;The &lt;a href="http://github.com/ajstarks/svgo/blob/master/pmap.go"&gt;pmap&lt;/a&gt; program is implemented in the &lt;a href="http://golang.org/"&gt;Go programming language&lt;/a&gt;, and produces SVG via the &lt;a href="http://github.com/ajstarks/svgo"&gt;svgo library&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The program has various strategies to clearly show all the data: you may show any combination of labels, percentages, or raw data. The labels and data are automatically arranged for maximum visibility: if the data rectangle is too narrow, its labels is displayed as a call out. (the thresholds for label length and data size are adjustable).  The style of call out is also configurable: staggered or alternating between above and below the data)&lt;/p&gt;&lt;p&gt;The command line:&lt;/p&gt;&lt;pre&gt;pmap -stagger -p -g 100 -bg lightsteelblue -t "Browser Market Share" -showtitle bs.xml &gt; bs.svg&lt;/pre&gt;created the illustration above.  It means:  read data from bs.xml, create the pmap as a SVG file called bs.svg, stagger the overflow labels, show percentages, separate each map with 100 pixels, create a contrasting background, and display a title.&lt;br /&gt;&lt;br /&gt;The input XML format is simple: a pmap consists of one or more data sets (pdata elements), which in turn contain items with a corresponding value:&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; white-space: pre;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: 16px; white-space: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;pre&gt;&amp;lt;pmap&amp;gt;&lt;br /&gt;&amp;lt;pdata legend="W3C Counter"&amp;gt;&lt;br /&gt;   &amp;lt;item value="43.2"&amp;gt;Internet Explorer&amp;lt;/item&amp;gt;&lt;br /&gt;   &amp;lt;item value="31.2"&amp;gt;Firefox&amp;lt;/item&amp;gt;&lt;br /&gt;   &amp;lt;item value="10.7"&amp;gt;Chrome&amp;lt;/item&amp;gt;&lt;br /&gt;   &amp;lt;item value="4.2"&amp;gt;Safari&amp;lt;/item&amp;gt;&lt;br /&gt;   &amp;lt;item value="1.4"&amp;gt;Opera&amp;lt;/item&amp;gt;&lt;br /&gt;&amp;lt;/pdata&amp;gt;&lt;br /&gt;&amp;lt;/pmap&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8002248475809897548-8254137044681956056?l=mindchunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindchunk.blogspot.com/feeds/8254137044681956056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8002248475809897548&amp;postID=8254137044681956056' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/8254137044681956056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/8254137044681956056'/><link rel='alternate' type='text/html' href='http://mindchunk.blogspot.com/2010/10/proportional-maps-alternative-to-pie.html' title='Proportional Maps: an alternative to pie charts'/><author><name>Anthony</name><uri>http://www.blogger.com/profile/05976341066259822102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ZBBfXt0sdfo/SrWgaveJE_I/AAAAAAAAAL4/V40R3Jzvj0M/S220/starx.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm5.static.flickr.com/4087/5058633306_1ab0f6959a_t.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8002248475809897548.post-4728178636010495315</id><published>2010-08-13T20:33:00.003-04:00</published><updated>2010-08-17T19:26:41.698-04:00</updated><title type='text'>A quick tour of Go's dict package</title><content type='html'>&lt;p&gt;The &lt;a href="http://groups.google.com/group/golang-nuts/browse_thread/thread/8103ba5fb5be4407/"&gt;2010-08-11 release&lt;/a&gt; of the Go programming language includes the &lt;a href="http://golang.org/pkg/net/dict/"&gt;dict package&lt;/a&gt; to talk to dictionary servers as defined by RFC 2229. Let's check it out.&lt;/p&gt;&lt;p&gt;First, here's a mimimal program that uses the Dial() and Define() functions to display a definition.&lt;/p&gt;&lt;pre&gt;package main&lt;br /&gt;&lt;br /&gt;import "net/dict"&lt;br /&gt;&lt;br /&gt;func main() {&lt;br /&gt; c, _ := dict.Dial("tcp", "dict.org:2628")&lt;br /&gt; defn, _ := c.Define("wn", "go")&lt;br /&gt; for _, result := range defn {&lt;br /&gt;    println(string(result.Text))&lt;br /&gt; }&lt;br /&gt;}&lt;/pre&gt;&lt;p&gt;&lt;br /&gt;This program does no error checking, and has three hardcoded bits: the server (dict.org:2628), the database ("wn") and word to lookup ("go").&lt;/p&gt;&lt;p&gt;For the next version, let's add some flexibility -- lookup items specified on the command line, and let's add some error checking and cleanup:&lt;/p&gt;&lt;pre&gt;package main&lt;br /&gt;&lt;br /&gt;import (&lt;br /&gt; "net/dict"&lt;br /&gt; "os"&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;func main() {&lt;br /&gt; c, neterr := dict.Dial("tcp", "dict.org:2628")&lt;br /&gt; if neterr == nil {&lt;br /&gt;    defer c.Close()&lt;br /&gt;    for _, word := range os.Args {&lt;br /&gt;       defn, deferr := c.Define("wn", word)&lt;br /&gt;       if deferr == nil {&lt;br /&gt;          for _, result := range defn {&lt;br /&gt;             println(string(result.Text))&lt;br /&gt;          }&lt;br /&gt;       }&lt;br /&gt;    }&lt;br /&gt; }&lt;br /&gt;}&lt;/pre&gt;&lt;p&gt;Ok, great, what if you want to switch databases? You can ask the server. If you run the command with no arguments, it will list the available databases using the Dicts() function:&lt;/p&gt;&lt;pre&gt;package main&lt;br /&gt;&lt;br /&gt;import (&lt;br /&gt; "net/dict"&lt;br /&gt; "os"&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;func main() {&lt;br /&gt; c, neterr := dict.Dial("tcp", "dict.org:2628")&lt;br /&gt; if neterr == nil {&lt;br /&gt;    defer c.Close()&lt;br /&gt;    if len(os.Args) == 0 {&lt;br /&gt;       dicts, dicterr := c.Dicts()&lt;br /&gt;       if dicterr == nil {&lt;br /&gt;          for _, dl := range dicts {&lt;br /&gt;             println(dl.Name, dl.Desc)&lt;br /&gt;          }&lt;br /&gt;       }&lt;br /&gt;    } else {&lt;br /&gt;       for _, word := range os.Args {&lt;br /&gt;          defn, deferr := c.Define("wn", word)&lt;br /&gt;          if deferr == nil {&lt;br /&gt;             for _, result := range defn {&lt;br /&gt;                println(string(result.Text))&lt;br /&gt;             }&lt;br /&gt;          }&lt;br /&gt;       }&lt;br /&gt;    }&lt;br /&gt; }&lt;br /&gt;}&lt;/pre&gt;&lt;p&gt;One more update: let's add flags to specify the dict server and database. We'll also update the error processing to show the errors instead of failing silently:&lt;/p&gt;&lt;pre&gt;package main&lt;br /&gt;&lt;br /&gt;import (&lt;br /&gt; "net/dict"&lt;br /&gt; "flag"&lt;br /&gt; "fmt"&lt;br /&gt;)&lt;br /&gt;var (&lt;br /&gt; db      = flag.String("d", "wn", "Dictionary database")&lt;br /&gt; dserver = flag.String("s", "dict.org:2628", "Dictionary Server")&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;func main() {&lt;br /&gt; flag.Parse()&lt;br /&gt; c, neterr := dict.Dial("tcp", *dserver)&lt;br /&gt; if neterr == nil {&lt;br /&gt;    defer c.Close()&lt;br /&gt;    if len(flag.Args()) == 0 {&lt;br /&gt;       dicts, dicterr := c.Dicts()&lt;br /&gt;       if dicterr == nil {&lt;br /&gt;          for _, dl := range dicts {&lt;br /&gt;             fmt.Println(dl.Name, dl.Desc)&lt;br /&gt;          }&lt;br /&gt;       } else {&lt;br /&gt;          fmt.Println(dicterr)&lt;br /&gt;       }&lt;br /&gt;    } else {&lt;br /&gt;       for _, word := range flag.Args() {&lt;br /&gt;          defn, dferr := c.Define(*db, word)&lt;br /&gt;          if dferr == nil {&lt;br /&gt;             for _, result := range defn {&lt;br /&gt;                fmt.Println(string(result.Text))&lt;br /&gt;             }&lt;br /&gt;          } else {&lt;br /&gt;             fmt.Println(dferr)&lt;br /&gt;          }&lt;br /&gt;       }&lt;br /&gt;    }&lt;br /&gt; } else {&lt;br /&gt;    fmt.Println(neterr)&lt;br /&gt; }&lt;br /&gt;}&lt;/pre&gt;&lt;p&gt;There you go--a robust, flexible dictionary client in a little over 40 lines of code.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8002248475809897548-4728178636010495315?l=mindchunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindchunk.blogspot.com/feeds/4728178636010495315/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8002248475809897548&amp;postID=4728178636010495315' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/4728178636010495315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/4728178636010495315'/><link rel='alternate' type='text/html' href='http://mindchunk.blogspot.com/2010/08/quick-tour-of-gos-dict-package.html' title='A quick tour of Go&apos;s dict package'/><author><name>Anthony</name><uri>http://www.blogger.com/profile/05976341066259822102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ZBBfXt0sdfo/SrWgaveJE_I/AAAAAAAAAL4/V40R3Jzvj0M/S220/starx.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8002248475809897548.post-3363007298154036682</id><published>2010-04-16T23:12:00.010-04:00</published><updated>2010-04-16T23:47:31.835-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='svg svgo golang Go font Helvetica Arial Inconsolata Courier Times'/><title type='text'>Font Specimens with SVG</title><content type='html'>&lt;p&gt;These font specimens were created with SVGo, patterned after the specimens found in &lt;a href="http://en.wikipedia.org/wiki/Gill_Sans"&gt;wikipedia&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://farm5.static.flickr.com/4057/4527253820_3924d316fe_m.jpg" alt="Calibri and Times Roman" /&gt;&lt;/p&gt;&lt;p&gt;Here are the current and past defaults for Microsoft Office, Calibri and Times Roman&lt;br /&gt;&lt;/p&gt;&lt;img src="http://farm5.static.flickr.com/4027/4526624675_81a216fcb5_m.jpg" alt="Helvetica and Arial" /&gt;&lt;br /&gt;&lt;div&gt;The original vs. the knock-off: Helvetica and Arial.&lt;div&gt;&lt;br /&gt;&lt;img src="http://farm5.static.flickr.com/4049/4526625053_d39efce695_m.jpg" alt="Courier and Inconsolata" /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And finally, the canonical mono-spaced font Courier compared to Inconsolata, my current go-to monofont&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8002248475809897548-3363007298154036682?l=mindchunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindchunk.blogspot.com/feeds/3363007298154036682/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8002248475809897548&amp;postID=3363007298154036682' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/3363007298154036682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/3363007298154036682'/><link rel='alternate' type='text/html' href='http://mindchunk.blogspot.com/2010/04/font-specimens-with-svg.html' title='Font Specimens with SVG'/><author><name>Anthony</name><uri>http://www.blogger.com/profile/05976341066259822102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ZBBfXt0sdfo/SrWgaveJE_I/AAAAAAAAAL4/V40R3Jzvj0M/S220/starx.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm5.static.flickr.com/4057/4527253820_3924d316fe_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8002248475809897548.post-318069811551990556</id><published>2010-03-24T21:11:00.001-04:00</published><updated>2010-03-24T21:31:09.222-04:00</updated><title type='text'>Leaning Flowers</title><content type='html'>&lt;p style="clear: both"&gt;&lt;a href="http://lh3.ggpht.com/_ZBBfXt0sdfo/S6q4H-zxCFI/AAAAAAAAAMk/SKsZVw2Kw3s/s800/grain100.png" class="image-link"&gt;&lt;img class="linked-to-original" src="http://lh6.ggpht.com/_ZBBfXt0sdfo/S6q4HkIZVfI/AAAAAAAAAMg/wd7wEUWV9FQ/s800/grain100-thumb.png" height="85" align="left" width="380" style=" display: inline; float: left; margin: 0 10px 10px 0;" /&gt;&lt;/a&gt;&lt;br style="clear: both" /&gt;Here is another variation of &lt;a href="http://www.flickr.com/photos/evhan55/4444292391/"&gt;grain2&lt;/a&gt;. It's like the &lt;a href="http://www.flickr.com/photos/ajstarks/4448453394/"&gt;"flower"&lt;/a&gt; program, but it includes stems, and a porportion of "lean" (0 - full lean to the left, 100 - full lean to the right) is programmed in.&lt;br /&gt;&lt;br /&gt;The variations were produced with this script:&lt;/p&gt;  &lt;pre style="clear: both"&gt;&lt;br /&gt;for i in 0 25 50 75 100&lt;br /&gt;do&lt;br /&gt;  ./grain -n 150 -w 900 -h 200 -l 175 -nl $i &amp;gt; grain$i.svg&lt;br /&gt;done&lt;br /&gt;&lt;/pre&gt;  &lt;p style="clear: both"&gt;&lt;a href="http://lh6.ggpht.com/_ZBBfXt0sdfo/S6q4IpM1j8I/AAAAAAAAAMs/U5hgap99qDM/s800/grain0.png" class="image-link"&gt;&lt;img class="linked-to-original" src="http://lh6.ggpht.com/_ZBBfXt0sdfo/S6q4IoStXDI/AAAAAAAAAMo/UmMyPnYCbIE/s800/grain0-thumb.png" height="84" align="left" width="374" style=" display: inline; float: left; margin: 0 10px 10px 0;" /&gt;&lt;/a&gt;&lt;br style="clear: both" /&gt;Grain 0&lt;/p&gt;  &lt;p style="clear: both"&gt;&lt;a href="http://lh4.ggpht.com/_ZBBfXt0sdfo/S6q4JbdEd3I/AAAAAAAAAM0/d6y7rT_l1sY/s800/grain25.png" class="image-link"&gt;&lt;img class="linked-to-original" src="http://lh3.ggpht.com/_ZBBfXt0sdfo/S6q4JA2MH-I/AAAAAAAAAMw/nkOriCWAFxU/s800/grain25-thumb.png" height="84" align="left" width="374" style=" display: inline; float: left; margin: 0 10px 10px 0;" /&gt;&lt;/a&gt;&lt;br style="clear: both" /&gt;Grain 25&lt;/p&gt;  &lt;p style="clear: both"&gt;&lt;a href="http://lh4.ggpht.com/_ZBBfXt0sdfo/S6q4J46O6eI/AAAAAAAAAM8/5preyNiQmis/s800/grain50.png" class="image-link"&gt;&lt;img class="linked-to-original" src="http://lh3.ggpht.com/_ZBBfXt0sdfo/S6q4JnRyqOI/AAAAAAAAAM4/Mr6wUk_vmH4/s800/grain50-thumb.png" height="84" align="left" width="374" style=" display: inline; float: left; margin: 0 10px 10px 0;" /&gt;&lt;/a&gt;&lt;br style="clear: both" /&gt;Grain 50&lt;/p&gt;  &lt;p style="clear: both"&gt;&lt;a href="http://lh4.ggpht.com/_ZBBfXt0sdfo/S6q4KofXNhI/AAAAAAAAANE/JGo1WxGLxv4/s800/grain75.png" class="image-link"&gt;&lt;img class="linked-to-original" src="http://lh4.ggpht.com/_ZBBfXt0sdfo/S6q4KSVYzSI/AAAAAAAAANA/1jtTW3qLtN8/s800/grain75-thumb.png" height="84" align="left" width="374" style=" display: inline; float: left; margin: 0 10px 10px 0;" /&gt;&lt;/a&gt;&lt;br style="clear: both" /&gt;Grain 75&lt;/p&gt;  &lt;p style="clear: both"&gt;&lt;a href="http://lh5.ggpht.com/_ZBBfXt0sdfo/S6q4LQy5BVI/AAAAAAAAANM/hyCE2LHfCiM/s800/grain1.png" class="image-link"&gt;&lt;img class="linked-to-original" src="http://lh6.ggpht.com/_ZBBfXt0sdfo/S6q4K2e0GXI/AAAAAAAAANI/ACePZDpFd-Y/s800/grain1-thumb.png" height="84" align="left" width="374" style=" display: inline; float: left; margin: 0 10px 10px 0;" /&gt;&lt;/a&gt;&lt;br style="clear: both" /&gt;Grain 100&lt;br /&gt;&lt;br /&gt;Here's the Go program&lt;/p&gt;  &lt;pre style="clear: both"&gt;&lt;br /&gt;&lt;br /&gt;// grain -- flowers with programmable lean&lt;br /&gt;&lt;br /&gt;package main&lt;br /&gt;&lt;br /&gt;import (&lt;br /&gt;    svglib "./svg"&lt;br /&gt;    "time"&lt;br /&gt;    "rand"&lt;br /&gt;    "os"&lt;br /&gt;    "flag"&lt;br /&gt;    "fmt"&lt;br /&gt;    "math"&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;var (&lt;br /&gt;    width     = flag.Int("w", 500, "width")&lt;br /&gt;    height    = flag.Int("h", 500, "height")&lt;br /&gt;    ninter    = flag.Int("n", 75, "interations")&lt;br /&gt;    stemlen   = flag.Int("l", 450, "stem length")&lt;br /&gt;    stemwidth = flag.Int("st", 4, "stem thickness")&lt;br /&gt;    numleft   = flag.Int("nl", 50, "percentage of left-leaning stems")&lt;br /&gt;    thickness = flag.Int("t", 10, "max petal thinkness")&lt;br /&gt;    np        = flag.Int("p", 15, "max number of petals")&lt;br /&gt;    psize     = flag.Int("s", 30, "max length of petals")&lt;br /&gt;    opacity   = flag.Int("o", 50, "max opacity (10-100)")&lt;br /&gt;    svg       = svglib.New(os.Stdout)&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;const (&lt;br /&gt;  flowerfmt = `stroke:rgb(%d,%d,%d); stroke-opacity:%.2f; stroke-width:%d`&lt;br /&gt;  stemfmt = `stroke:green;stroke-opacity:0.3;stroke-width:%d`&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;func radial(xp int, yp int, n int, l int, style ...string) {&lt;br /&gt;    var x, y, r, t, limit float64&lt;br /&gt;    limit = 2.0 * math.Pi&lt;br /&gt;    r = float64(l)&lt;br /&gt;    svg.Gstyle(style[0])&lt;br /&gt;    for t = 0.0; t &amp;lt; limit; t += limit / float64(n) {&lt;br /&gt;        x = r * math.Cos(t)&lt;br /&gt;        y = r * math.Sin(t)&lt;br /&gt;        svg.Line(xp, yp, xp+int(x), yp+int(y))&lt;br /&gt;    }&lt;br /&gt;    svg.Gend()&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;func background(v int) { svg.Rect(0, 0, *width, *height, svg.RGB(v, v, v)) }&lt;br /&gt;&lt;br /&gt;func random(howsmall, howbig int) int {&lt;br /&gt;    if howsmall &gt;= howbig {&lt;br /&gt;        return howsmall&lt;br /&gt;    }&lt;br /&gt;    return rand.Intn(howbig-howsmall) + howsmall&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;func randrad(x, y int) {&lt;br /&gt;    var r, g, b, o, s, t, p int&lt;br /&gt;    r = rand.Intn(255)&lt;br /&gt;    g = rand.Intn(255)&lt;br /&gt;    b = rand.Intn(255)&lt;br /&gt;    o = random(10, *opacity)&lt;br /&gt;    s = random(10, *psize)&lt;br /&gt;    t = random(2, *thickness)&lt;br /&gt;    p = random(10, *np)&lt;br /&gt;    radial(x, y, p, s, fmt.Sprintf(flowerfmt, r, g, b, float64(o)/100.0, t))&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;func init() {&lt;br /&gt;    flag.Parse()&lt;br /&gt;    rand.Seed(time.Nanoseconds() % 1e9)&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;func main() {&lt;br /&gt;    svg.Start(*width, *height)&lt;br /&gt;    background(255)&lt;br /&gt;    svg.Gstyle(fmt.Sprintf(stemfmt, *stemwidth))&lt;br /&gt;    var x, l, xe, offset int&lt;br /&gt;    for i := 0; i &amp;lt; *ninter; i++ {&lt;br /&gt;        x = rand.Intn(*width)&lt;br /&gt;        l = rand.Intn(*stemlen)&lt;br /&gt;        offset = rand.Intn(*width / 10)&lt;br /&gt;        if rand.Intn(100) &gt; *numleft {&lt;br /&gt;            xe = x - offset&lt;br /&gt;        } else {&lt;br /&gt;            xe = x + offset&lt;br /&gt;        }&lt;br /&gt;        svg.Line(x, *height, xe, *height-l)&lt;br /&gt;        randrad(xe, *height-l)&lt;br /&gt;    }&lt;br /&gt;    svg.Gend()&lt;br /&gt;    svg.End()&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;  &lt;br class="final-break" style="clear: both" /&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8002248475809897548-318069811551990556?l=mindchunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindchunk.blogspot.com/feeds/318069811551990556/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8002248475809897548&amp;postID=318069811551990556' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/318069811551990556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/318069811551990556'/><link rel='alternate' type='text/html' href='http://mindchunk.blogspot.com/2010/03/leaning-flowers.html' title='Leaning Flowers'/><author><name>Anthony</name><uri>http://www.blogger.com/profile/05976341066259822102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ZBBfXt0sdfo/SrWgaveJE_I/AAAAAAAAAL4/V40R3Jzvj0M/S220/starx.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_ZBBfXt0sdfo/S6q4HkIZVfI/AAAAAAAAAMg/wd7wEUWV9FQ/s72-c/grain100-thumb.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8002248475809897548.post-7034431064090365458</id><published>2010-03-21T10:20:00.002-04:00</published><updated>2010-03-21T10:29:48.176-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='svg browser chrome firefox opera ui safari'/><title type='text'>Browser SVG Gallery - UI analysis</title><content type='html'>&lt;div style="float: right; margin-left: 10px; margin-bottom: 10px;"&gt;&lt;a href="http://www.flickr.com/photos/ajstarks/4449998203/" title="photo sharing"&gt;&lt;img src="http://farm3.static.flickr.com/2712/4449998203_873da8437c_m.jpg" alt="" style="border: solid 2px #000000;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size: 0.9em; margin-top: 0px;"&gt;&lt;a href="http://www.flickr.com/photos/ajstarks/4449998203/"&gt;Browser SVG Gallery&lt;/a&gt;&lt;br /&gt;Originally uploaded by &lt;a href="http://www.flickr.com/people/ajstarks/"&gt;ajstarks&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;This grid shows four modern browsers: Chrome (5.0.307.11) , Firefox (3.6) , Opera (10.10) , and Safari (4.0.5)  displaying SVG content generated by SVGo.  The browser UI's have been muted to emphasize the content.  Some observations:&lt;br /&gt;&lt;br /&gt;1) Chrome:  shows more "chrome" than any of the others. Lot's of head space with it's tab structure, with an emphasis on the omnibox, but with a minimal number of controls (back, forward, refresh)&lt;br /&gt;&lt;br /&gt;2) Firefox: as minimal as it gets, except for the OS X furniture, only minimal tab controls are visible&lt;br /&gt;&lt;br /&gt;3) Opera: lots of buttons with space for the address box, but all in a single row&lt;br /&gt;&lt;br /&gt;4) Similar to Opera, but with fewer  buttons (only back and forward). The big ol' Google box looks conspicuous.&lt;br /&gt;&lt;br /&gt;Note that both Opera and Safari allow for all controls to be suppressed so that you are left with pure content:&lt;br clear="all" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8002248475809897548-7034431064090365458?l=mindchunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindchunk.blogspot.com/feeds/7034431064090365458/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8002248475809897548&amp;postID=7034431064090365458' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/7034431064090365458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/7034431064090365458'/><link rel='alternate' type='text/html' href='http://mindchunk.blogspot.com/2010/03/browser-svg-gallery-ui-analysis.html' title='Browser SVG Gallery - UI analysis'/><author><name>Anthony</name><uri>http://www.blogger.com/profile/05976341066259822102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ZBBfXt0sdfo/SrWgaveJE_I/AAAAAAAAAL4/V40R3Jzvj0M/S220/starx.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2712/4449998203_873da8437c_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8002248475809897548.post-6725563445043501381</id><published>2010-03-06T12:35:00.001-05:00</published><updated>2010-03-06T12:35:55.076-05:00</updated><title type='text'>Processing vs. SVG Go</title><content type='html'>&lt;div style="float: right; margin-left: 10px; margin-bottom: 10px;"&gt;&lt;a href="http://www.flickr.com/photos/ajstarks/4410502387/" title="photo sharing"&gt;&lt;img src="http://farm3.static.flickr.com/2716/4410502387_a20f886a5a_m.jpg" alt="" style="border: solid 2px #000000;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size: 0.9em; margin-top: 0px;"&gt;&lt;a href="http://www.flickr.com/photos/ajstarks/4410502387/"&gt;Processing vs. SVG Go&lt;/a&gt;&lt;br /&gt;Originally uploaded by &lt;a href="http://www.flickr.com/people/ajstarks/"&gt;ajstarks&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;This screenshot compares developing the same graphic using Processing and the SVG Go Library.&lt;br /&gt;&lt;br /&gt;Top row:  from the left: Processing code, Go Code (in TextWrangler), Command lines to run the Go code&lt;br /&gt;&lt;br /&gt;Bottom row: Processing output, Go-generated SVG rendered in Safari and Chrome&lt;br /&gt;&lt;br /&gt;The workflow for Processing is familiar: enter code, hit the run button. For Go: edit/write code, move to a shell window, compile, open a browser.&lt;br /&gt;For subsequent runs, just hit refresh in the browser to see the result.&lt;br /&gt;&lt;br /&gt;Both methods support rapid prototyping and sketching -- the Go compiles are so fast it's almost the same as hitting the run button in Processing. As you can see the results are identical&lt;br /&gt;&lt;br /&gt;In terms of code, both environments are  similar -- there is almost a one-to-one correspondence, however SVG and Processing treat ellipse width differently.&lt;br /&gt;&lt;br /&gt;I note that the syntax highlighting of graphics functions in Processing tells me at a glance what the program is doing -- this is less apparent with the Go program.&lt;br clear="all" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8002248475809897548-6725563445043501381?l=mindchunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindchunk.blogspot.com/feeds/6725563445043501381/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8002248475809897548&amp;postID=6725563445043501381' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/6725563445043501381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/6725563445043501381'/><link rel='alternate' type='text/html' href='http://mindchunk.blogspot.com/2010/03/processing-vs-svg-go.html' title='Processing vs. SVG Go'/><author><name>Anthony</name><uri>http://www.blogger.com/profile/05976341066259822102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ZBBfXt0sdfo/SrWgaveJE_I/AAAAAAAAAL4/V40R3Jzvj0M/S220/starx.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2716/4410502387_a20f886a5a_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8002248475809897548.post-6626337984111068918</id><published>2009-12-09T23:03:00.006-05:00</published><updated>2010-01-04T00:43:40.284-05:00</updated><title type='text'>TweetFreq Go Language web Server (wtf): Browser, console, source</title><content type='html'>&lt;a href="http://www.flickr.com/photos/ajstarks/4168528922/" title="TweetFreq Go Language web Server (wtf): Browser, console, source by ajstarks, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2499/4168528922_3d01c2c573.jpg" width="500" height="303" alt="TweetFreq Go Language web Server (wtf): Browser, console, source" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;wtf is a specialized web server that also acts as client to twitter. wtf acts as a "compiler" for the browser, responding to requests with optimized "pre-cooked" JavaScript canvas directives---think of it as assembly language for the code in the browser  that interprets canvas tag data.  For example:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;C.beginPath();C.arc(799,167,8,0,p2,true);C.fill(); &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;draw the markers. All computations like coordinate and object positioning is done by the wtf, not the browser.&lt;br /&gt;Currently, wtf retrieves JSON from twitter. The XML results were over 2 times slower (with a slight loss of data, the JSON results lack the full name of the twitter user).&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;wtf takes about 5.6 seconds to build a tweetfreq from 10 users&lt;br /&gt;(abcnews,nytimes,wsj,cbsnews,cnn,foxnews,techcrunch,techmeme,arstechnica,slashdot)&lt;br /&gt;consisting of 500 tweets. The bulk of the time is waiting for the&lt;br /&gt;twitter search engine to respond.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;wtf responds to requests in this format:&lt;/p&gt;&lt;br /&gt;&lt;pre&gt; /users/{userlist}&lt;user1,user2...&gt;?b={date}&lt;begin time=""&gt;&amp;amp;e={date}&lt;end time=""&gt;&amp;amp;c={count}&lt;count&gt;&amp;amp;m={marker-width}&lt;marker width=""&gt;&amp;amp;p={picture width}&lt;picture width=""&gt;&amp;amp;l={line-width}&lt;line height=""&gt;&amp;amp;s={spacing}&lt;/line&gt;&lt;/picture&gt;&lt;/marker&gt;&lt;/count&gt;&lt;/end&gt;&lt;/begin&gt;&lt;/user1,user2...&gt;&lt;/pre&gt;&lt;p&gt;which specify the users and search/graphics/layout parameters&lt;/p&gt;&lt;pre&gt;/users/ajstarks,nytimes,%23golang,cnn?b=2009-12-05&amp;amp;e=2009-12-09&amp;amp;c=100&amp;amp;m=12&amp;amp;p=48&amp;amp;l=24&amp;amp;s=60 &lt;/pre&gt;&lt;p&gt;builds a visualization of the twitter update frequency for the users ajstarks, nytimes, cnn, and the mentions of the #golang hashtag during the period between December 5-9, 2009 (UTC), up to 100 tweets/user, with a marker width of 12 pixels, a picture width of 48 pixels,&lt;br /&gt;line width of 24 pixels, with spacing of 60 pixels.&lt;/p&gt;&lt;p&gt;Planned updates include support for twitter lists in the form of&lt;/p&gt;&lt;pre&gt;/lists/{user}/{listname}&lt;/pre&gt;&lt;p&gt;(improved support for authentication in the http package would be&lt;br /&gt;helpful here...)&lt;/p&gt;More on &lt;a href="http://www.scribd.com/doc/22231126/TweetFreq-Visualizing-Twitter-update-behavior"&gt;TweetFreq &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8002248475809897548-6626337984111068918?l=mindchunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindchunk.blogspot.com/feeds/6626337984111068918/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8002248475809897548&amp;postID=6626337984111068918' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/6626337984111068918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/6626337984111068918'/><link rel='alternate' type='text/html' href='http://mindchunk.blogspot.com/2009/12/tweetfreq-go-language-web-server-wtf_09.html' title='TweetFreq Go Language web Server (wtf): Browser, console, source'/><author><name>Anthony</name><uri>http://www.blogger.com/profile/05976341066259822102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ZBBfXt0sdfo/SrWgaveJE_I/AAAAAAAAAL4/V40R3Jzvj0M/S220/starx.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2499/4168528922_3d01c2c573_t.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8002248475809897548.post-1743938490543454935</id><published>2009-11-18T05:17:00.004-05:00</published><updated>2010-08-29T07:39:27.092-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='golang twitter'/><title type='text'>Parsing JSON and ATOM Twitter Search Results in Go</title><content type='html'>&lt;p style="clear: both"&gt;&lt;a href="http://www.flickr.com/photos/ajstarks/4114605512/" class="image-link"&gt;&lt;img src="http://farm3.static.flickr.com/2583/4114605512_e49efb0a44_m.jpg" height="180" width="240" style=" text-align: center; display: block; margin: 0 auto 10px;" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="float: right; margin-left: 10px; margin-bottom: 10px;"&gt;&lt;br /&gt;&lt;span style=" margin-top: 0px;font-size:0.9em;"&gt;&lt;a href="http://www.flickr.com/photos/ajstarks/4114605512/"&gt;Parsing JSON and ATOM Twitter Search Results in Go&lt;/a&gt;&lt;br /&gt;Originally uploaded by &lt;a href="http://www.flickr.com/people/ajstarks/"&gt;ajstarks&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;  &lt;p style="clear: both"&gt;The top chart shows the time a Go program takes to search twitter, parse the results, and output the tweets, varying the number of search results from 10-100. The blue shows the results for JSON, the green for ATOM (XML).&lt;/p&gt;  &lt;p style="clear: both"&gt;&lt;/p&gt;  &lt;p style="clear: both"&gt;Also depicted is the number of bytes to parsed, and the resulting parsing rate.&lt;br /&gt;&lt;br /&gt;The conclusion is that JSON is more efficient; HTTP rates are constant, but JSON requires less data, with less complex data structures to unmarshal. Both methods deliver identical results:&lt;br /&gt;&lt;br /&gt;ts -f json -n 10 '#golang'&lt;br /&gt;&lt;br /&gt;RT @koizuka: RT @tokuhirom: #golang は C/C++ のかわりにつかうというよりは。python のかわりに使うという領域の方がおおきいんだとおもう&lt;br /&gt;RT @tokuhirom: #golang は C/C++ のかわりにつかうというよりは。python のかわりに使うという領域の方がおおきいんだとおもう&lt;br /&gt;&lt;br /&gt;Here is the program: it demonstrates command line parsing, error checking, http processing and unmarshaling both JSON and XML.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;  &lt;pre style="clear: both"&gt;&lt;br /&gt;// ts -- twitter search&lt;br /&gt;//&lt;br /&gt;// Anthony Starks (ajstarks@gmail.com)&lt;br /&gt;//&lt;br /&gt;&lt;br /&gt;package main&lt;br /&gt;&lt;br /&gt;import (&lt;br /&gt; "fmt"&lt;br /&gt; "http"&lt;br /&gt; "io"&lt;br /&gt; "io/ioutil"&lt;br /&gt; "flag"&lt;br /&gt; "os"&lt;br /&gt; "xml"&lt;br /&gt; "json"&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;type JTweets struct {&lt;br /&gt; Results []Result&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;type Result struct {&lt;br /&gt; From_user string&lt;br /&gt; Text      string&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;type Feed struct {&lt;br /&gt; XMLName xml.Name "http://www.w3.org/2005/Atom feed"&lt;br /&gt; Entry   []Entry&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;type Entry struct {&lt;br /&gt; Title  string&lt;br /&gt; Author Person&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;type Person struct {&lt;br /&gt; Name string&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;type Text struct {&lt;br /&gt; Type string "attr"&lt;br /&gt; Body string "chardata"&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;var (&lt;br /&gt; format   = flag.String("f", "atom", "Output format (json or atom)")&lt;br /&gt; nresults = flag.Int("n", 20, "Maximum results (up to 100)")&lt;br /&gt; since    = flag.String("d", "", "Search since this date (YYYY-MM-DD)")&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;const (&lt;br /&gt; queryURI  = "http://search.twitter.com/search.%s?q=%s&amp;rpp=%d"&lt;br /&gt; outputfmt = "%s \u27BE %s\n"&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;func ts(s string, how string, date string, n int) {&lt;br /&gt;&lt;br /&gt; var q string&lt;br /&gt; if len(date) &gt; 0 {&lt;br /&gt;  q = fmt.Sprintf(queryURI+"&amp;since=%s", how, http.URLEscape(s), n, date)&lt;br /&gt; } else {&lt;br /&gt;  q = fmt.Sprintf(queryURI, how, http.URLEscape(s), n)&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; r, _, err := http.Get(q)&lt;br /&gt; defer r.Body.Close()&lt;br /&gt; if err != nil {&lt;br /&gt;  fmt.Fprintf(os.Stderr, "%v\n", err)&lt;br /&gt;  return&lt;br /&gt; }&lt;br /&gt; if r.StatusCode == http.StatusOK {&lt;br /&gt;  switch how {&lt;br /&gt;  case "atom":&lt;br /&gt;   readatom(r.Body)&lt;br /&gt;  case "json":&lt;br /&gt;   readjson(r.Body)&lt;br /&gt;  }&lt;br /&gt; } else {&lt;br /&gt;  fmt.Fprintf(os.Stderr,&lt;br /&gt;   "Twitter is unable to search for %s as %s (%s)\n", s, how, r.Status)&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;func readatom(r io.Reader) {&lt;br /&gt; var twitter Feed&lt;br /&gt; err := xml.Unmarshal(r, &amp;twitter)&lt;br /&gt; if err != nil {&lt;br /&gt;  fmt.Fprintf(os.Stderr, "Unable to parse the Atom feed (%v)\n", err)&lt;br /&gt;  return&lt;br /&gt; }&lt;br /&gt; for _, t := range twitter.Entry {&lt;br /&gt;  fmt.Printf(outputfmt, t.Author.Name, t.Title)&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;func readjson(r io.Reader) {&lt;br /&gt; var twitter JTweets&lt;br /&gt; b, err := ioutil.ReadAll(r)&lt;br /&gt; if err != nil {&lt;br /&gt;  fmt.Fprintf(os.Stderr, "%v\n", err)&lt;br /&gt;  return&lt;br /&gt; }&lt;br /&gt; jerr := json.Unmarshal(b, &amp;twitter)&lt;br /&gt; if jerr != nil {&lt;br /&gt;  fmt.Fprintf(os.Stderr, "Unable to parse the JSON feed (%v)\n", jerr)&lt;br /&gt;  return&lt;br /&gt; }&lt;br /&gt; for _, t := range twitter.Results {&lt;br /&gt;  fmt.Printf(outputfmt, t.From_user, t.Text)&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;func main() {&lt;br /&gt; flag.Parse()&lt;br /&gt; for i := 0; i &lt; flag.NArg(); i++ {&lt;br /&gt;  ts(flag.Arg(i), *format, *since, *nresults)&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8002248475809897548-1743938490543454935?l=mindchunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindchunk.blogspot.com/feeds/1743938490543454935/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8002248475809897548&amp;postID=1743938490543454935' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/1743938490543454935'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/1743938490543454935'/><link rel='alternate' type='text/html' href='http://mindchunk.blogspot.com/2009/11/parsing-json-and-atom-twitter-search_6681.html' title='Parsing JSON and ATOM Twitter Search Results in Go'/><author><name>Anthony</name><uri>http://www.blogger.com/profile/05976341066259822102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ZBBfXt0sdfo/SrWgaveJE_I/AAAAAAAAAL4/V40R3Jzvj0M/S220/starx.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2583/4114605512_e49efb0a44_t.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8002248475809897548.post-3565192636801591173</id><published>2009-11-16T21:19:00.001-05:00</published><updated>2009-11-16T21:19:48.885-05:00</updated><title type='text'>Go vs. Curl for twitter search</title><content type='html'>&lt;div style="float: right; margin-left: 10px; margin-bottom: 10px;"&gt;&lt;a href="http://www.flickr.com/photos/ajstarks/4111178358/" title="photo sharing"&gt;&lt;img src="http://farm3.static.flickr.com/2581/4111178358_2a1d662555_m.jpg" alt="" style="border: solid 2px #000000;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size: 0.9em; margin-top: 0px;"&gt;&lt;a href="http://www.flickr.com/photos/ajstarks/4111178358/"&gt;Go vs. Curl for twitter search&lt;/a&gt;&lt;br /&gt;Originally uploaded by &lt;a href="http://www.flickr.com/people/ajstarks/"&gt;ajstarks&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;br clear="all" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8002248475809897548-3565192636801591173?l=mindchunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindchunk.blogspot.com/feeds/3565192636801591173/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8002248475809897548&amp;postID=3565192636801591173' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/3565192636801591173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/3565192636801591173'/><link rel='alternate' type='text/html' href='http://mindchunk.blogspot.com/2009/11/go-vs-curl-for-twitter-search.html' title='Go vs. Curl for twitter search'/><author><name>Anthony</name><uri>http://www.blogger.com/profile/05976341066259822102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ZBBfXt0sdfo/SrWgaveJE_I/AAAAAAAAAL4/V40R3Jzvj0M/S220/starx.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2581/4111178358_2a1d662555_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8002248475809897548.post-499211767718371896</id><published>2009-11-16T21:17:00.001-05:00</published><updated>2009-11-16T21:17:37.435-05:00</updated><title type='text'>Twitter Search Grid: #artandcode #4</title><content type='html'>&lt;div style="float: right; margin-left: 10px; margin-bottom: 10px;"&gt;&lt;a href="http://www.flickr.com/photos/ajstarks/4099666814/" title="photo sharing"&gt;&lt;img src="http://farm3.static.flickr.com/2579/4099666814_c8fd234664_m.jpg" alt="" style="border: solid 2px #000000;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size: 0.9em; margin-top: 0px;"&gt;&lt;a href="http://www.flickr.com/photos/ajstarks/4099666814/"&gt;Twitter Search Grid: #artandcode #4&lt;/a&gt;&lt;br /&gt;Originally uploaded by &lt;a href="http://www.flickr.com/people/ajstarks/"&gt;ajstarks&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;br clear="all" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8002248475809897548-499211767718371896?l=mindchunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindchunk.blogspot.com/feeds/499211767718371896/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8002248475809897548&amp;postID=499211767718371896' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/499211767718371896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/499211767718371896'/><link rel='alternate' type='text/html' href='http://mindchunk.blogspot.com/2009/11/twitter-search-grid-artandcode-4.html' title='Twitter Search Grid: #artandcode #4'/><author><name>Anthony</name><uri>http://www.blogger.com/profile/05976341066259822102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ZBBfXt0sdfo/SrWgaveJE_I/AAAAAAAAAL4/V40R3Jzvj0M/S220/starx.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2579/4099666814_c8fd234664_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8002248475809897548.post-303425333548510688</id><published>2009-11-16T21:16:00.001-05:00</published><updated>2009-11-16T21:16:43.380-05:00</updated><title type='text'>TweetFreq: Scobleblog followers</title><content type='html'>&lt;div style="float: right; margin-left: 10px; margin-bottom: 10px;"&gt;&lt;a href="http://www.flickr.com/photos/ajstarks/4101243061/" title="photo sharing"&gt;&lt;img src="http://farm3.static.flickr.com/2649/4101243061_986e9870fa_m.jpg" alt="" style="border: solid 2px #000000;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size: 0.9em; margin-top: 0px;"&gt;&lt;a href="http://www.flickr.com/photos/ajstarks/4101243061/"&gt;TweetFreq: Scobleblog followers&lt;/a&gt;&lt;br /&gt;Originally uploaded by &lt;a href="http://www.flickr.com/people/ajstarks/"&gt;ajstarks&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;br clear="all" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8002248475809897548-303425333548510688?l=mindchunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindchunk.blogspot.com/feeds/303425333548510688/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8002248475809897548&amp;postID=303425333548510688' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/303425333548510688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/303425333548510688'/><link rel='alternate' type='text/html' href='http://mindchunk.blogspot.com/2009/11/tweetfreq-scobleblog-followers.html' title='TweetFreq: Scobleblog followers'/><author><name>Anthony</name><uri>http://www.blogger.com/profile/05976341066259822102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ZBBfXt0sdfo/SrWgaveJE_I/AAAAAAAAAL4/V40R3Jzvj0M/S220/starx.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2649/4101243061_986e9870fa_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8002248475809897548.post-8760935165432006972</id><published>2009-09-24T00:58:00.001-04:00</published><updated>2009-09-24T00:58:00.456-04:00</updated><title type='text'>TwitGrid: Public timeline</title><content type='html'>&lt;div style="float: right; margin-left: 10px; margin-bottom: 10px;"&gt;&lt;a href="http://www.flickr.com/photos/ajstarks/3944897247/" title="photo sharing"&gt;&lt;img src="http://farm3.static.flickr.com/2560/3944897247_24e8b51759_m.jpg" alt="" style="border: solid 2px #000000;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size: 0.9em; margin-top: 0px;"&gt;&lt;a href="http://www.flickr.com/photos/ajstarks/3944897247/"&gt;TwitGrid: Public timeline&lt;/a&gt;&lt;br /&gt;Originally uploaded by &lt;a href="http://www.flickr.com/people/ajstarks/"&gt;ajstarks&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;br clear="all" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8002248475809897548-8760935165432006972?l=mindchunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindchunk.blogspot.com/feeds/8760935165432006972/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8002248475809897548&amp;postID=8760935165432006972' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/8760935165432006972'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/8760935165432006972'/><link rel='alternate' type='text/html' href='http://mindchunk.blogspot.com/2009/09/twitgrid-public-timeline.html' title='TwitGrid: Public timeline'/><author><name>Anthony</name><uri>http://www.blogger.com/profile/05976341066259822102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ZBBfXt0sdfo/SrWgaveJE_I/AAAAAAAAAL4/V40R3Jzvj0M/S220/starx.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2560/3944897247_24e8b51759_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8002248475809897548.post-8958120762117008556</id><published>2009-09-19T23:31:00.003-04:00</published><updated>2009-09-19T23:31:57.820-04:00</updated><title type='text'>TweetFreq: 10 Most Influential Journalists on Twitter -- 2009-09-11</title><content type='html'>&lt;div style="float: right; margin-left: 10px; margin-bottom: 10px;"&gt;&lt;a href="http://www.flickr.com/photos/ajstarks/3912692504/" title="photo sharing"&gt;&lt;img src="http://farm3.static.flickr.com/2612/3912692504_41e2611e18_m.jpg" alt="" style="border: solid 2px #000000;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size: 0.9em; margin-top: 0px;"&gt;&lt;a href="http://www.flickr.com/photos/ajstarks/3912692504/"&gt;TweetFreq: 10 Most Influential Journalists on Twitter -- 2009-09-11&lt;/a&gt;&lt;br /&gt;Originally uploaded by &lt;a href="http://www.flickr.com/people/ajstarks/"&gt;ajstarks&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;br clear="all" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8002248475809897548-8958120762117008556?l=mindchunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindchunk.blogspot.com/feeds/8958120762117008556/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8002248475809897548&amp;postID=8958120762117008556' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/8958120762117008556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/8958120762117008556'/><link rel='alternate' type='text/html' href='http://mindchunk.blogspot.com/2009/09/tweetfreq-10-most-influential_19.html' title='TweetFreq: 10 Most Influential Journalists on Twitter -- 2009-09-11'/><author><name>Anthony</name><uri>http://www.blogger.com/profile/05976341066259822102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ZBBfXt0sdfo/SrWgaveJE_I/AAAAAAAAAL4/V40R3Jzvj0M/S220/starx.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2612/3912692504_41e2611e18_t.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8002248475809897548.post-5175095305368754475</id><published>2009-09-19T23:31:00.001-04:00</published><updated>2009-09-19T23:31:19.672-04:00</updated><title type='text'>TweetFreq: 10 Most Influential Journalists on Twitter -- 2009-09-04</title><content type='html'>&lt;div style="float: right; margin-left: 10px; margin-bottom: 10px;"&gt;&lt;a href="http://www.flickr.com/photos/ajstarks/3887889326/" title="photo sharing"&gt;&lt;img src="http://farm4.static.flickr.com/3482/3887889326_6cae627924_m.jpg" alt="" style="border: solid 2px #000000;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size: 0.9em; margin-top: 0px;"&gt;&lt;a href="http://www.flickr.com/photos/ajstarks/3887889326/"&gt;TweetFreq: 10 Most Influential Journalists on Twitter -- 2009-09-04&lt;/a&gt;&lt;br /&gt;Originally uploaded by &lt;a href="http://www.flickr.com/people/ajstarks/"&gt;ajstarks&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;br clear="all" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8002248475809897548-5175095305368754475?l=mindchunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindchunk.blogspot.com/feeds/5175095305368754475/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8002248475809897548&amp;postID=5175095305368754475' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/5175095305368754475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/5175095305368754475'/><link rel='alternate' type='text/html' href='http://mindchunk.blogspot.com/2009/09/tweetfreq-10-most-influential.html' title='TweetFreq: 10 Most Influential Journalists on Twitter -- 2009-09-04'/><author><name>Anthony</name><uri>http://www.blogger.com/profile/05976341066259822102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ZBBfXt0sdfo/SrWgaveJE_I/AAAAAAAAAL4/V40R3Jzvj0M/S220/starx.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3482/3887889326_6cae627924_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8002248475809897548.post-4000547495760943405</id><published>2009-09-19T23:18:00.002-04:00</published><updated>2009-09-19T23:26:01.212-04:00</updated><title type='text'>TweetFreq: @scoopingthenews 10 most influential journalists on Twitter: 2009-09-18</title><content type='html'>&lt;div style="float: right; margin-left: 10px; margin-bottom: 10px;"&gt;&lt;a href="http://www.flickr.com/photos/ajstarks/3931425875/" title="photo sharing"&gt;&lt;img src="http://farm3.static.flickr.com/2541/3931425875_9b6fcf4e10_m.jpg" alt="" style="border: solid 2px #000000;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style=" margin-top: 0px;font-size:0.9em;"&gt;&lt;a href="http://www.flickr.com/photos/ajstarks/3931425875/"&gt;TweetFreq: @scoopingthenews 10 most influential journalists on Twitter: 2009-09-18&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8002248475809897548-4000547495760943405?l=mindchunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindchunk.blogspot.com/feeds/4000547495760943405/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8002248475809897548&amp;postID=4000547495760943405' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/4000547495760943405'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/4000547495760943405'/><link rel='alternate' type='text/html' href='http://mindchunk.blogspot.com/2009/09/tweetfreq-scoopingthenews-10-most.html' title='TweetFreq: @scoopingthenews 10 most influential journalists on Twitter: 2009-09-18'/><author><name>Anthony</name><uri>http://www.blogger.com/profile/05976341066259822102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ZBBfXt0sdfo/SrWgaveJE_I/AAAAAAAAAL4/V40R3Jzvj0M/S220/starx.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2541/3931425875_9b6fcf4e10_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8002248475809897548.post-3289236358922324143</id><published>2009-09-19T23:17:00.001-04:00</published><updated>2009-09-19T23:17:56.594-04:00</updated><title type='text'>@scoopingthenews 10 most influential journalists on Twitter, Sept 18,
2009 (sorted by Influence score)</title><content type='html'>&lt;div style="float: right; margin-left: 10px; margin-bottom: 10px;"&gt;&lt;a href="http://www.flickr.com/photos/ajstarks/3931688583/" title="photo sharing"&gt;&lt;img src="http://farm4.static.flickr.com/3507/3931688583_3f711769bd_m.jpg" alt="" style="border: solid 2px #000000;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size: 0.9em; margin-top: 0px;"&gt;&lt;a href="http://www.flickr.com/photos/ajstarks/3931688583/"&gt;@scoopingthenews 10 most influential journalists on Twitter, Sept 18, 2009 (sorted by Influence score)&lt;/a&gt;&lt;br /&gt;Originally uploaded by &lt;a href="http://www.flickr.com/people/ajstarks/"&gt;ajstarks&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;10 most influential journalists on Twitter, 2009-09-18 as defined by @scoopingthenews www.scoopingthenews.com/2009/09/10-most-influential-journ...&lt;br /&gt;&lt;br /&gt;Data shown is the influence score (50% RT rate, 25% followers, 25% tweets)&lt;br clear="all" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8002248475809897548-3289236358922324143?l=mindchunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindchunk.blogspot.com/feeds/3289236358922324143/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8002248475809897548&amp;postID=3289236358922324143' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/3289236358922324143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/3289236358922324143'/><link rel='alternate' type='text/html' href='http://mindchunk.blogspot.com/2009/09/scoopingthenews-10-most-influential.html' title='@scoopingthenews 10 most influential journalists on Twitter, Sept 18,&#xA;2009 (sorted by Influence score)'/><author><name>Anthony</name><uri>http://www.blogger.com/profile/05976341066259822102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ZBBfXt0sdfo/SrWgaveJE_I/AAAAAAAAAL4/V40R3Jzvj0M/S220/starx.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3507/3931688583_3f711769bd_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8002248475809897548.post-7360843388047681701</id><published>2009-09-18T16:16:00.001-04:00</published><updated>2009-09-18T16:16:49.625-04:00</updated><title type='text'>10 most influential journalists on Twitter, Sept 18, 2009 (sorted by
Influence score)</title><content type='html'>&lt;div style="float: right; margin-left: 10px; margin-bottom: 10px;"&gt;&lt;a href="http://www.flickr.com/photos/ajstarks/3931688583/" title="photo sharing"&gt;&lt;img src="http://farm4.static.flickr.com/3507/3931688583_3f711769bd_m.jpg" alt="" style="border: solid 2px #000000;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size: 0.9em; margin-top: 0px;"&gt;&lt;a href="http://www.flickr.com/photos/ajstarks/3931688583/"&gt;10 most influential journalists on Twitter, Sept 18, 2009 (sorted by Influence score)&lt;/a&gt;&lt;br /&gt;Originally uploaded by &lt;a href="http://www.flickr.com/people/ajstarks/"&gt;ajstarks&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;br clear="all" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8002248475809897548-7360843388047681701?l=mindchunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindchunk.blogspot.com/feeds/7360843388047681701/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8002248475809897548&amp;postID=7360843388047681701' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/7360843388047681701'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/7360843388047681701'/><link rel='alternate' type='text/html' href='http://mindchunk.blogspot.com/2009/09/10-most-influential-journalists-on.html' title='10 most influential journalists on Twitter, Sept 18, 2009 (sorted by&#xA;Influence score)'/><author><name>Anthony</name><uri>http://www.blogger.com/profile/05976341066259822102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ZBBfXt0sdfo/SrWgaveJE_I/AAAAAAAAAL4/V40R3Jzvj0M/S220/starx.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3507/3931688583_3f711769bd_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8002248475809897548.post-2413587642684812937</id><published>2009-07-15T16:52:00.013-04:00</published><updated>2009-07-15T17:53:48.816-04:00</updated><title type='text'>Documenting Processing Work</title><content type='html'>&lt;p&gt;I've created this deck to document my &lt;a href="http://www.scribd.com/doc/17386670/Anthony-Starks-Processing-Portfolio"&gt;Processing work&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ZBBfXt0sdfo/Sl5CinplAsI/AAAAAAAAALw/aF_NFbe5E5Y/s1600-h/processing.001.png"&gt;&lt;img style="margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_ZBBfXt0sdfo/Sl5CinplAsI/AAAAAAAAALw/aF_NFbe5E5Y/s320/processing.001.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5358793769143829186" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;How do you document your Processing work?  (Flickr &lt;a href="http://www.flickr.com/photos/ajstarks/sets/72157618491647464/detail/"&gt; sets &lt;/a&gt; and &lt;a href="http://www.flickr.com/groups/13813978@N00/pool/"&gt;groups&lt;/a&gt; seem to be popular)&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8002248475809897548-2413587642684812937?l=mindchunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindchunk.blogspot.com/feeds/2413587642684812937/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8002248475809897548&amp;postID=2413587642684812937' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/2413587642684812937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/2413587642684812937'/><link rel='alternate' type='text/html' href='http://mindchunk.blogspot.com/2009/07/documenting-processing-work.html' title='Documenting Processing Work'/><author><name>Anthony</name><uri>http://www.blogger.com/profile/05976341066259822102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ZBBfXt0sdfo/SrWgaveJE_I/AAAAAAAAAL4/V40R3Jzvj0M/S220/starx.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_ZBBfXt0sdfo/Sl5CinplAsI/AAAAAAAAALw/aF_NFbe5E5Y/s72-c/processing.001.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8002248475809897548.post-2446982574017095471</id><published>2009-07-12T17:22:00.004-04:00</published><updated>2009-07-12T17:40:34.705-04:00</updated><title type='text'>Official Google Blog: Google accounts on Twitter</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/ajstarks/3714459040/"&gt;&lt;img style="float:right; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 375px; height: 280px;" src="http://farm4.static.flickr.com/3491/3714459040_44a8bbf8f4.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://googleblog.blogspot.com/2009/07/google-accounts-on-twitter.html"&gt;Official Google Blog: Google accounts on Twitter&lt;/a&gt;  here is a visualization of how much the Google Twitter accounts are used (posting frequency over the past week)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8002248475809897548-2446982574017095471?l=mindchunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindchunk.blogspot.com/feeds/2446982574017095471/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8002248475809897548&amp;postID=2446982574017095471' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/2446982574017095471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/2446982574017095471'/><link rel='alternate' type='text/html' href='http://mindchunk.blogspot.com/2009/07/official-google-blog-google-accounts-on.html' title='Official Google Blog: Google accounts on Twitter'/><author><name>Anthony</name><uri>http://www.blogger.com/profile/05976341066259822102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ZBBfXt0sdfo/SrWgaveJE_I/AAAAAAAAAL4/V40R3Jzvj0M/S220/starx.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3491/3714459040_44a8bbf8f4_t.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8002248475809897548.post-8794938329339283969</id><published>2008-03-12T18:53:00.004-04:00</published><updated>2008-03-12T19:18:23.105-04:00</updated><title type='text'>Do one thing -- 30 years between Unix and  iPhone</title><content type='html'>&lt;div&gt;A similar philosophy is stated between classic UNIX and iPhone development:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;"Make each program do one thing well, to do a new job build afresh rather than complicate old programs by adding new features "  &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;  -- Doug McIlroy, Bell System Technical Journal, 1978&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;"Remember that you application should address a specific need -- most of the built in applications to one thing very, very well, instead of trying to do many things only moderately well"&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;   -- Vicki Murley, Key Practices for iPhone Application Development",  2008.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8002248475809897548-8794938329339283969?l=mindchunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindchunk.blogspot.com/feeds/8794938329339283969/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8002248475809897548&amp;postID=8794938329339283969' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/8794938329339283969'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/8794938329339283969'/><link rel='alternate' type='text/html' href='http://mindchunk.blogspot.com/2008/03/do-one-thing-30-years-between-unix-and.html' title='Do one thing -- 30 years between Unix and  iPhone'/><author><name>Anthony</name><uri>http://www.blogger.com/profile/05976341066259822102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ZBBfXt0sdfo/SrWgaveJE_I/AAAAAAAAAL4/V40R3Jzvj0M/S220/starx.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8002248475809897548.post-2847546463293943112</id><published>2007-11-20T14:02:00.001-05:00</published><updated>2007-11-20T18:46:36.707-05:00</updated><title type='text'>The Kindle</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_ZBBfXt0sdfo/R0MxLEo_LgI/AAAAAAAAAH0/jsMG-kByG4M/s1600-h/kindlereivew.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp0.blogger.com/_ZBBfXt0sdfo/R0MxLEo_LgI/AAAAAAAAAH0/jsMG-kByG4M/s320/kindlereivew.jpg" alt="" id="BLOGGER_PHOTO_ID_5135002066426473986" border="0" /&gt;&lt;/a&gt;With great fanfare Amazon just announced its dedicated ebook reader -- the Kindle.  The web is "ablaze" with coverage: starting with the Newsweek cover story, &lt;a href="http://www.blogger.com/%28http://www.newsweek.com/id/70983/output/print"&gt;"The Future of Reading"&lt;/a&gt;, and continuing with the &lt;a href="http://amazon.com/kindle/"&gt;Kindle Product Page&lt;/a&gt;. &lt;h4&gt;Overview&lt;/h4&gt;&lt;p&gt;&lt;a href="http://arstechnica.com/news.ars/post/20071119-amazon-kindle-attempts-to-reignite-e-book-market.html"&gt;Ars Technica&lt;/a&gt;, &lt;a href="http://www.crunchgear.com/2007/11/19/kindle-hands-on/"&gt;CrunchGear&lt;/a&gt;,  &lt;a href="http://gizmodo.com/gadgets/amazon/amazon-kindle-hands+on-and-questions-answered-gallery-324375.php"&gt;Gizmodo&lt;/a&gt;, &lt;a href="http://www.paidcontent.org/entry/419-first-look-amazon-kindle/"&gt;PaidContent&lt;/a&gt;, and &lt;a href="http://gadgets.boingboing.net/2007/11/19/amazon-kindle-ebook-1.html"&gt;BoingBoing&lt;/a&gt;, have reviews. And there is no shortage of commentary:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://daringfireball.net/2007/11/dum"&gt;John Gruber (&lt;em&gt;DUM&lt;/em&gt;)&lt;/a&gt;,&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://sethgodin.typepad.com/seths_blog/2007/11/you-wont-find-m.html"&gt;Seth Godin (&lt;em&gt;you won't find me on Amazon's new book reader&lt;/em&gt;)&lt;/a&gt; &lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.roughtype.com/archives/2007/11/the_luddite_dre.php"&gt;Nick Carr (&lt;em&gt;the Luddite Dream of Jeff Bezos&lt;/em&gt;)&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://diveintomark.org/archives/2007/11/19/the-future-of-reading"&gt;Mark Pilgrim: &lt;em&gt;(The Future of Reading (A Play in Six Acts&lt;/em&gt;)&lt;/a&gt; &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://sethgodin.typepad.com/seths_blog/2007/11/you-wont-find-m.html"&gt;&lt;/a&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.roughtype.com/archives/2007/11/the_luddite_dre.php"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Wired has a brief comparison of the &lt;a href="http://blog.wired.com/gadgets/2007/11/amazon-kindle-v.html"&gt;Kindle vs. the Sony Reader&lt;/a&gt;, and &lt;a href="http://www.teleread.org/blog/2007/11/17/amazon-sized-ego-kindle-to-shun-epub-and-yes-the-ugly-box-is-the-final-design/#more-7673"&gt;Rothman's Teleread Blog&lt;/a&gt; , where I first heard about the device months ago, comments on the design and format issues.&lt;/p&gt;&lt;p&gt;The feature set is unremarkable (essentially the same hardware specs as the Sony reader; they both sport the 166.67 dpi E-Link screen), with the standard ebook functions: zoomable text, search, annotation,  -- but what distinguishes the Kindle is the connection to Amazon -- easy ordering and downloading content from the Amazon via always-on EVDO wireless networking.   The connectivity comes for free with the device, but subscriptions fees apply to magazines, newspapers, and surprisingly, blogs.  &lt;/p&gt;&lt;p&gt;The Amazon connection also brings 90,000 titles at introduction--nice---but this leads to two questions: what about the other millions of titles, and at what rate will the Kindle-compatible titles grow. It seems to me that cutting deals with individual publishers is not going to cut it -- this is not Steve Jobs dealing with a few record labels -- what is needed is a &lt;em&gt;simple&lt;/em&gt; method for generating content for a device, so that both mainstream and long-tail content are available.  Today this is answered by PDF, and the &lt;a href="http://www.idpf.org/"&gt;.epub&lt;/a&gt; format also promises to fulfill this need -- neither of these formats is currently supported natively on the Kindle. The supported file formats are: Kindle (.azw), text (.txt), unprotected Mobipocket (.mobi, .prc), Audible (.aa) and MP3 (.mp3). Amazon supplies (for fee) conversion of content via an email address assigned to each Kindle, and other conversions can be managed via its &lt;a href="http://dtp.amazon.com/"&gt;Digital Text Platform&lt;/a&gt;.&lt;/p&gt;&lt;h4&gt;The Design, Marketing and Positioning&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;The design of the Kindle is &lt;a href="http://www.urbandictionary.com/define.php?term=fugly"&gt;fugly&lt;/a&gt; but seemingly functional. It includes a scroll-select wheel, and a physical keyboard---this feature alone breaks the "bookiness" that the device is striving for. But a physical keyboard is probably required given that the slow responding E-ink screen probably won't adequately support an on-screen keyboard.  It will be interesting to analyze the UI and general user experience of the interface, but the reviews and videos to date don't provide enough detail yet. I'm hoping any UI or functionality bugs can be fixed via software updates.&lt;/p&gt;&lt;p&gt;In the promotional videos, Bezo's introduction, and the Newsweek piece, there is an emphasis on the act of reading -- note that the spokespeople recruited to push the device, Toni Morrison, Michael Lewis, Daniel Handler are authors, not geeks.  I also note that the demo video has a "Kindle Dude", similar to the "iPhone guy" to introduce its features -- but unlike the Apple personality, K.D. gets out of the studio, putting the device through its paces in the park, coffee shop, the airport, and at home.&lt;/p&gt;&lt;p&gt;The &lt;a href="http://www.planetebook.com/mainpage.asp?webpageid=15&amp;amp;TBToolID=1115"&gt;Rocket ebook&lt;/a&gt; , &lt;a href="http://www.amazon.com/RCA-REB1200-eBook-Reader/dp/B00005T3UJ"&gt;REB 1200&lt;/a&gt; , &lt;a href="http://en.wikipedia.org/wiki/Sony_Librie"&gt;Sony Librie&lt;/a&gt; , &lt;a href="http://www.sonystyle.com/webapp/wcs/stores/servlet/CategoryDisplay?catalogId=10551&amp;amp;storeId=10151&amp;amp;langId=-1&amp;amp;categoryId=16184"&gt;Sony Readers&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/ILiad"&gt;Irex Iliad&lt;/a&gt;,  &lt;a href="http://en.wikipedia.org/wiki/Amazon_Kindle"&gt;Kindle&lt;/a&gt;. It feels like the period between 1977-1981 when the personal computer marketplace was shaping up.   Lots of machines that taken individually had interesting features, but none that reached the sweet spot that defined a product category. &lt;/p&gt;&lt;p&gt;Kindle, sadly, you are no IBM PC.&lt;/p&gt;&lt;p&gt;Although it feels like a device Steve Jobs would have rejected, the basic concepts are sound (take-your-content with you, nice screen, easy connectivity, document conversion and self-publishing), there is so much that can be improved: the design, DRM/lock-in, a more open platform.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Where is my device that can order content from not just from Amazon, but from other outlets as well, one that can easily and beautifully display any blog, not just selected ones (yes, I know the limited web browser fixes this somewhat, but what about a &lt;a href="http://www.blogger.com/reader.google.com"&gt;Google Reader&lt;/a&gt;-like application built into the device?  Whoever develops a beautiful, &lt;em&gt;universal container&lt;/em&gt; for my purchased, commercial, web, and personal content will win, Kindle points the way, but does not quite reach it.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8002248475809897548-2847546463293943112?l=mindchunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindchunk.blogspot.com/feeds/2847546463293943112/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8002248475809897548&amp;postID=2847546463293943112' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/2847546463293943112'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/2847546463293943112'/><link rel='alternate' type='text/html' href='http://mindchunk.blogspot.com/2007/11/kindle_20.html' title='The Kindle'/><author><name>Anthony</name><uri>http://www.blogger.com/profile/05976341066259822102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ZBBfXt0sdfo/SrWgaveJE_I/AAAAAAAAAL4/V40R3Jzvj0M/S220/starx.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_ZBBfXt0sdfo/R0MxLEo_LgI/AAAAAAAAAH0/jsMG-kByG4M/s72-c/kindlereivew.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8002248475809897548.post-9075602094171527931</id><published>2007-11-13T19:51:00.001-05:00</published><updated>2007-11-13T20:34:11.451-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='processing graphics programming java development  art'/><category scheme='http://www.blogger.com/atom/ns#' term='infographics'/><title type='text'>Programming Infographics with Processing</title><content type='html'>&lt;p&gt;In learning &lt;a href="http://www.processing.org/"&gt;Processing&lt;/a&gt;, it occurred to me that it could be used to produce visuals previously done via traditional tools like spreadsheets and presentation software.  Using Processing means that layout decisions are programmed in -- for example the placement of pictures to annotate a barchart; instead of tediously placing each graphic, the placement is automatic. To test this, I used this graphic, produced in &lt;a href="http://www.apple.com/iwork/keynote"&gt;Keynote&lt;/a&gt; as a basis:&lt;br /&gt;&lt;/p&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;a href="http://bp3.blogger.com/_ZBBfXt0sdfo/Ru8LYY-1n5I/AAAAAAAAAD8/vWDdWIpWxdI/s1600-h/trends2007-stock.011.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; cursor: pointer;" src="http://bp3.blogger.com/_ZBBfXt0sdfo/Ru8LYY-1n5I/AAAAAAAAAD8/vWDdWIpWxdI/s320/trends2007-stock.011.jpg" alt="" id="BLOGGER_PHOTO_ID_5111316615739580306" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;Here is the same data, but produced by code in Processing:&lt;/p&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ajstarks/1751754846/" title="Apple Purchases vs. Stock Price by ajstarks, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2265/1751754846_2388c609c2.jpg" alt="Apple Purchases vs. Stock Price" height="250" width="500" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;In comparison to the original Keynote graphics, I toned down the bar chart color significantly, and also plotted the products pictures as data, instead of axis labels.&lt;/p&gt;&lt;h2&gt;The Data&lt;br /&gt;&lt;/h2&gt;&lt;p&gt;Of course, visuals must be data driven, and Processing can take input from files;  in this case, tracking stock price with other events: Apple Stock price to personal purchases,(incidentally this kind of visualization can based from other things as well, Google products. vs. stock price, &lt;a href="http://www.acaloriecounter.com/fast-food.php"&gt;Fat content of foods&lt;/a&gt;, IMDb ratings, or a drug companies product launches vs. stock price, etc.&lt;/p&gt;&lt;p&gt;The relevant stock data can be obtained from &lt;a href="http://finance.yahoo.com/"&gt;Yahoo Finance&lt;/a&gt; -- select the relevant time interval, and then download the data as a CSV file.  Note that these visualizations work best if there is not too many data points.&lt;/p&gt;&lt;p&gt;The data file that my Processing code uses consists of these fields:&lt;br /&gt;date, stock price, picture file, product name (with the exception of the first line, used to specify the title&lt;/p&gt;for example:&lt;br /&gt;&lt;pre&gt;Apple Purchases vs. Stock Price&lt;br /&gt;2002-04,12.4,tipb.jpg,Ti PowerBook&lt;br /&gt;2002-08,7.38,jaguar.png,Jaguar&lt;br /&gt;2003-04,7.11,itunes.jpg,iTunes&lt;br /&gt;...&lt;br /&gt;2007-10,172.75,leopard.jpg,Leopard&lt;br /&gt;&lt;/pre&gt;&lt;h2&gt;The code&lt;/h2&gt;The code (166 lines) is broken down into these sections:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Read in the data, with sanity checks&lt;/li&gt;&lt;li&gt; Define major object locations based on percentages relative to the graphic's width and height (for example, the title is defined to be located at 7% of the overall height)&lt;/li&gt;&lt;li&gt;Define scaling factors&lt;/li&gt;&lt;li&gt;Show Title&lt;/li&gt;&lt;li&gt;Show the Y axis label, and the Grid&lt;/li&gt;&lt;li&gt;Plot the data&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;p&gt;The display of titles, bars, data values, labels, grid, images, names, and dates, can be independently  toggled on or off, controlled via boolean variables.&lt;/p&gt;&lt;h2&gt;Observations&lt;br /&gt;&lt;/h2&gt;&lt;p&gt;The model visual has the traditional barchart, but invoking the option to remove the grid and bars allows the the product pictures and the stock values to serve as data points:&lt;/p&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;a href="http://www.flickr.com/photos/ajstarks/1750905655/" title="Apple Purchases vs. Stock Price by ajstarks, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2244/1750905655_77117feeb0.jpg" alt="Apple Purchases vs. Stock Price" height="250" width="500" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Here is a slightly different twist: Relating the introduction of "iconic" Apple products with the stock price:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ajstarks/1751754578/" title="Iconic Apple Products vs. Stock Price by ajstarks, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2114/1751754578_55afba3e40.jpg" width="500" height="222" alt="Iconic Apple Products vs. Stock Price" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Having complete control over every aspect of the graphic is freeing --- with Processing, you are not constrained by what a standalone software package can do --- if you can conceive it, you can easily program it in without waiting for Apple, Adobe, or Microsoft to add the feature or behavior.  (Another useful side effect is that your graphics won't look like everyone else's).&lt;br /&gt;&lt;br /&gt;Processing encourages this interactive "sketching" style. (in fact instead of "code" and "graphics", the Processing environment refers to these collectively as sketches.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_ZBBfXt0sdfo/RzpHkiUbpaI/AAAAAAAAAHs/N3RDwX-NP94/s1600-h/sketch-menu.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; cursor: pointer;" src="http://bp1.blogger.com/_ZBBfXt0sdfo/RzpHkiUbpaI/AAAAAAAAAHs/N3RDwX-NP94/s320/sketch-menu.png" alt="" id="BLOGGER_PHOTO_ID_5132493418355467682" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;I note that using percentages and not hard-wired "magic" numbers means that the graphic will scale when the height and width are adjusted.  This means that you can pick the correct aspect ratio for a given data set and the various graphic elements remain in their proper places.  Also, because each section of the graph is drawn and placed independently, re-arrangement and experimentation is easy: Need to move the product labels -- adjust one number -- hit the execution command, -- boom. Instant gratification.&lt;/p&gt;I plan to continue this with other types of data -- See the &lt;a href="http://flickr.com/photos/ajstarks/sets/72157602704127558/"&gt;flickr set &lt;/a&gt;for more.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8002248475809897548-9075602094171527931?l=mindchunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindchunk.blogspot.com/feeds/9075602094171527931/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8002248475809897548&amp;postID=9075602094171527931' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/9075602094171527931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/9075602094171527931'/><link rel='alternate' type='text/html' href='http://mindchunk.blogspot.com/2007/11/programming-infographics-with.html' title='Programming Infographics with Processing'/><author><name>Anthony</name><uri>http://www.blogger.com/profile/05976341066259822102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ZBBfXt0sdfo/SrWgaveJE_I/AAAAAAAAAL4/V40R3Jzvj0M/S220/starx.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_ZBBfXt0sdfo/Ru8LYY-1n5I/AAAAAAAAAD8/vWDdWIpWxdI/s72-c/trends2007-stock.011.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8002248475809897548.post-5100395273096476848</id><published>2007-10-30T20:32:00.000-04:00</published><updated>2007-11-05T22:34:02.249-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='leopard'/><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><category scheme='http://www.blogger.com/atom/ns#' term='apple'/><title type='text'>Leopard: Fixing the translucent Menu</title><content type='html'>On Mac OS X Leopard, the &lt;a href="http://arstechnica.com/reviews/os/mac-os-x-10-5.ars/4"&gt;top menu is now translucent&lt;/a&gt;.  I hate it. The effect is especially bad if you use a single color background:&lt;br /&gt;&lt;br /&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_ZBBfXt0sdfo/RyfRHcIMnrI/AAAAAAAAAGE/GEJ3gV5oAfQ/s320/Picture+4.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5127296626524462770" /&gt;&lt;br /&gt;&lt;br /&gt;To fix this I needed a very precise desktop background that has a strategically placed white stripe at the top.  &lt;a href="http://processing.org/"&gt;Processing&lt;/a&gt; to the rescue:&lt;br /&gt;&lt;br /&gt;int menuHeight=22; // Height of the top Menu&lt;br /&gt;size(1280,854); // size of my PowerBook screen&lt;br /&gt;noStroke();&lt;br /&gt;fill(255);&lt;br /&gt;rect(0,0,width,menuHeight);&lt;br /&gt;fill(58,103,173);&lt;br /&gt;rect(0,menuHeight,width,height-menuHeight);&lt;br /&gt;save("menufix.jpg");&lt;br /&gt;&lt;br /&gt;After this runs, use the System preferences to use "menufix.jpg" as your background.&lt;br /&gt;&lt;br /&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_ZBBfXt0sdfo/RyfQw8IMnqI/AAAAAAAAAF8/loQgPAgtdT8/s320/Picture+2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5127296239977406114" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8002248475809897548-5100395273096476848?l=mindchunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindchunk.blogspot.com/feeds/5100395273096476848/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8002248475809897548&amp;postID=5100395273096476848' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/5100395273096476848'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/5100395273096476848'/><link rel='alternate' type='text/html' href='http://mindchunk.blogspot.com/2007/10/leopard-fixing-translucent-menu.html' title='Leopard: Fixing the translucent Menu'/><author><name>Anthony</name><uri>http://www.blogger.com/profile/05976341066259822102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ZBBfXt0sdfo/SrWgaveJE_I/AAAAAAAAAL4/V40R3Jzvj0M/S220/starx.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_ZBBfXt0sdfo/RyfRHcIMnrI/AAAAAAAAAGE/GEJ3gV5oAfQ/s72-c/Picture+4.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8002248475809897548.post-2233325608279321988</id><published>2007-10-30T20:01:00.000-04:00</published><updated>2007-11-05T23:04:19.920-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dock'/><category scheme='http://www.blogger.com/atom/ns#' term='leopard'/><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><category scheme='http://www.blogger.com/atom/ns#' term='scripting'/><category scheme='http://www.blogger.com/atom/ns#' term='apple'/><title type='text'>Leopard: Fixing the 3D Dock</title><content type='html'>Some have &lt;a href="http://arstechnica.com/reviews/os/mac-os-x-10-5.ars/4"&gt;complained about the appearance of the Dock &lt;/a&gt;on Leopard, and offered a bit of command line magic to fix it.   Below is a shell script to automate the process of turning the dock "shelf" on and off.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;When called as "flatdock" you get the non-3D version of the dock;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_ZBBfXt0sdfo/RyfI-8IMnnI/AAAAAAAAAFk/a1TV4de9bq0/s320/Picture+1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5127287684402552434" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Called as "3ddock" the shelf is restored:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_ZBBfXt0sdfo/RyfLScIMnpI/AAAAAAAAAF0/VuWwq8ubwyo/s320/Picture+2.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5127290218433257106" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;To install, place the script in your PATH, call it flatdock, make it executable, and then hardlink to 3ddock.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#!/bin/sh&lt;br /&gt;state="YES"&lt;br /&gt;name=`basename $0`&lt;br /&gt;case $name in&lt;br /&gt;3ddock) state="NO";;&lt;br /&gt;flatdock) state="YES";;&lt;br /&gt;esac&lt;br /&gt;defaults write com.apple.dock no-glass -boolean $state&lt;br /&gt;killall Dock&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8002248475809897548-2233325608279321988?l=mindchunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindchunk.blogspot.com/feeds/2233325608279321988/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8002248475809897548&amp;postID=2233325608279321988' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/2233325608279321988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/2233325608279321988'/><link rel='alternate' type='text/html' href='http://mindchunk.blogspot.com/2007/10/leopard-fixing-3d-dock.html' title='Leopard: Fixing the 3D Dock'/><author><name>Anthony</name><uri>http://www.blogger.com/profile/05976341066259822102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ZBBfXt0sdfo/SrWgaveJE_I/AAAAAAAAAL4/V40R3Jzvj0M/S220/starx.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_ZBBfXt0sdfo/RyfI-8IMnnI/AAAAAAAAAFk/a1TV4de9bq0/s72-c/Picture+1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8002248475809897548.post-2416665219144893911</id><published>2007-10-10T16:12:00.002-04:00</published><updated>2007-10-11T01:26:50.278-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='processing graphics programming java development  art'/><title type='text'>Processing...</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_ZBBfXt0sdfo/Rw0yNlYQ5sI/AAAAAAAAAFM/HGZpmzWASzI/s1600-h/processing.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp1.blogger.com/_ZBBfXt0sdfo/Rw0yNlYQ5sI/AAAAAAAAAFM/HGZpmzWASzI/s320/processing.jpg" alt="" id="BLOGGER_PHOTO_ID_5119803560343692994" border="0" /&gt;&lt;/a&gt;The &lt;a href="http://www.processing.org/"&gt;Processing&lt;/a&gt; Environment is a nice one --- it's quite useful for prototyping graphical and &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;typographical&lt;/span&gt; ideas.&lt;br /&gt;&lt;br /&gt;The &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;PDE&lt;/span&gt; (Processing Development Environment) is a study in simplicity and &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;efficiency&lt;/span&gt; -- it abstracts much of the underlying Java-environment, and allows you to simply work with the expected graphical primitives (points, lines, rectangles, ellipses, curves, etc.), and coordinate system, using your own code to control the formation and interaction with the graphic.&lt;br /&gt;&lt;pre&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_ZBBfXt0sdfo/Rw1LilYQ5uI/AAAAAAAAAFc/oJnEWvwe2lU/s1600-h/pde-funnel.png"&gt;&lt;img style="cursor: pointer;" src="http://bp1.blogger.com/_ZBBfXt0sdfo/Rw1LilYQ5uI/AAAAAAAAAFc/oJnEWvwe2lU/s400/pde-funnel.png" alt="" id="BLOGGER_PHOTO_ID_5119831408911640290" border="0" /&gt;&lt;/a&gt;&lt;/pre&gt;&lt;br /&gt;I really like &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;PDE&lt;/span&gt; -- it works the way you would expect: enter some code, press the run button, the result is displayed -- instant gratification. The environment supports the notion of "sketching" -- (in fact works in progress are called sketches).  Want to change a color? tweak an  &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;RGB&lt;/span&gt; value in the code window, see the results immediately. The same applies to other areas of your graphic like sizes, primitives, loop &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_9"&gt;indices&lt;/span&gt;, etc.&lt;br /&gt;&lt;br /&gt;A new book on Processing has just been published: &lt;a href="http://www.amazon.com/Processing-Programming-Handbook-Designers-Artists/dp/0262182629/"&gt;&lt;strong&gt;Processing: A Programming Handbook&lt;br /&gt;for Visual Designers and Artists&lt;/strong&gt;&lt;/a&gt; by Casey Reas and Ben Fry.  The processing web site has&lt;a href="http://processing.org/learning/books/index.html"&gt; excerpts and all the sample code from the book.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8002248475809897548-2416665219144893911?l=mindchunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindchunk.blogspot.com/feeds/2416665219144893911/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8002248475809897548&amp;postID=2416665219144893911' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/2416665219144893911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/2416665219144893911'/><link rel='alternate' type='text/html' href='http://mindchunk.blogspot.com/2007/10/processing.html' title='Processing...'/><author><name>Anthony</name><uri>http://www.blogger.com/profile/05976341066259822102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ZBBfXt0sdfo/SrWgaveJE_I/AAAAAAAAAL4/V40R3Jzvj0M/S220/starx.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_ZBBfXt0sdfo/Rw0yNlYQ5sI/AAAAAAAAAFM/HGZpmzWASzI/s72-c/processing.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8002248475809897548.post-1060524351194013919</id><published>2007-09-25T14:29:00.000-04:00</published><updated>2007-09-25T16:07:46.819-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='amazon mp3 apple mac music'/><title type='text'>The New Amazon MP3 Store, Step by step</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_ZBBfXt0sdfo/Rvlgz1YQ5rI/AAAAAAAAAFE/kxDXDRK8v-Q/s1600-h/amazonmp3.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp2.blogger.com/_ZBBfXt0sdfo/Rvlgz1YQ5rI/AAAAAAAAAFE/kxDXDRK8v-Q/s200/amazonmp3.png" alt="" id="BLOGGER_PHOTO_ID_5114225295474353842" border="0" /&gt;&lt;/a&gt;Amazon has just &lt;a href="http://home.businesswire.com/portal/site/google/index.jsp?ndmViewId=news_view&amp;amp;newsId=20070925005710&amp;amp;newsLang=en"&gt;launched their DRM-free MP3 store&lt;/a&gt;.  Here is a step-by-step walkthrough on my Mac  (for the impatient, it works, but in terms of usability, selection, and convenience, it's no iTunes, but I welcome the competition)  One oddity: although you eventually wind up with MP3 files in iTunes, the process uses a standalone app to manage the downloads; you get a open a .amz file, and then the real MP3 is downloaded.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Step 1.  Make your selection via the website, press the Buy MP3 button:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_ZBBfXt0sdfo/RvlWo1YQ5kI/AAAAAAAAAEM/jUKQlJG5Pxk/s1600-h/Picture+4.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_ZBBfXt0sdfo/RvlWo1YQ5kI/AAAAAAAAAEM/jUKQlJG5Pxk/s200/Picture+4.png" alt="" id="BLOGGER_PHOTO_ID_5114214111379514946" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Step 2. Download and install the Amazon downloader application (one time only)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_ZBBfXt0sdfo/RvlW-VYQ5lI/AAAAAAAAAEU/WcxP0NxwGrM/s1600-h/Picture+2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_ZBBfXt0sdfo/RvlW-VYQ5lI/AAAAAAAAAEU/WcxP0NxwGrM/s200/Picture+2.png" alt="" id="BLOGGER_PHOTO_ID_5114214480746702418" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Step 3. Get confirmation of the purchase (via the web, and email)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_ZBBfXt0sdfo/RvlXRlYQ5mI/AAAAAAAAAEc/-2V0fC72-zc/s1600-h/Picture+5.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_ZBBfXt0sdfo/RvlXRlYQ5mI/AAAAAAAAAEc/-2V0fC72-zc/s200/Picture+5.png" alt="" id="BLOGGER_PHOTO_ID_5114214811459184226" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Step 4. Double-click the .amz file,  the Amazon downloader puts the MP3 file to your hard disk&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_ZBBfXt0sdfo/RvlX3lYQ5nI/AAAAAAAAAEk/wegdRV6symU/s1600-h/Picture+7.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_ZBBfXt0sdfo/RvlX3lYQ5nI/AAAAAAAAAEk/wegdRV6symU/s200/Picture+7.png" alt="" id="BLOGGER_PHOTO_ID_5114215464294213234" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Step 5. Press the "Reveal in Finder" button,  double-click to import into iTunes -- this includes album art and appropriate metadata.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_ZBBfXt0sdfo/RvlbilYQ5pI/AAAAAAAAAE0/bwqa874kn8c/s1600-h/Picture+9.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_ZBBfXt0sdfo/RvlbilYQ5pI/AAAAAAAAAE0/bwqa874kn8c/s200/Picture+9.png" alt="" id="BLOGGER_PHOTO_ID_5114219501563471506" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Step 6. Play in iTunes:&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_ZBBfXt0sdfo/RvlYo1YQ5oI/AAAAAAAAAEs/nmcLS5OwNWQ/s1600-h/Picture+12.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_ZBBfXt0sdfo/RvlYo1YQ5oI/AAAAAAAAAEs/nmcLS5OwNWQ/s200/Picture+12.png" alt="" id="BLOGGER_PHOTO_ID_5114216310402770562" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8002248475809897548-1060524351194013919?l=mindchunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindchunk.blogspot.com/feeds/1060524351194013919/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8002248475809897548&amp;postID=1060524351194013919' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/1060524351194013919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/1060524351194013919'/><link rel='alternate' type='text/html' href='http://mindchunk.blogspot.com/2007/09/new-amazon-mp3-store-step-by-step.html' title='The New Amazon MP3 Store, Step by step'/><author><name>Anthony</name><uri>http://www.blogger.com/profile/05976341066259822102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ZBBfXt0sdfo/SrWgaveJE_I/AAAAAAAAAL4/V40R3Jzvj0M/S220/starx.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_ZBBfXt0sdfo/Rvlgz1YQ5rI/AAAAAAAAAFE/kxDXDRK8v-Q/s72-c/amazonmp3.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8002248475809897548.post-9144401065423419897</id><published>2007-09-24T15:05:00.000-04:00</published><updated>2007-09-24T15:08:51.789-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='olpc'/><title type='text'>OLPC: 1+1</title><content type='html'>The One Laptop per Child Project now allows individual purchase:  &lt;a href="http://www.xogiving.org/"&gt;Give one, Get one.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8002248475809897548-9144401065423419897?l=mindchunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindchunk.blogspot.com/feeds/9144401065423419897/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8002248475809897548&amp;postID=9144401065423419897' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/9144401065423419897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/9144401065423419897'/><link rel='alternate' type='text/html' href='http://mindchunk.blogspot.com/2007/09/olpc-11.html' title='OLPC: 1+1'/><author><name>Anthony</name><uri>http://www.blogger.com/profile/05976341066259822102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ZBBfXt0sdfo/SrWgaveJE_I/AAAAAAAAAL4/V40R3Jzvj0M/S220/starx.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8002248475809897548.post-2738067526504143153</id><published>2007-09-19T19:13:00.000-04:00</published><updated>2007-09-19T19:22:26.301-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='apple iphone design'/><title type='text'>Stephen Fry on what distinguishes Apple</title><content type='html'>Fry's &lt;a href="http://www.stephenfry.com/blog/?m=200709"&gt;long essay on iPhone competitors&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;That’s why Apple is Apple, they have people there (and of course it comes from the top) who say - “woah, not good enough, not cool enough, not simple enough, not fun enough, not sexy enough, not clever enough, not useful enough”.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8002248475809897548-2738067526504143153?l=mindchunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindchunk.blogspot.com/feeds/2738067526504143153/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8002248475809897548&amp;postID=2738067526504143153' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/2738067526504143153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/2738067526504143153'/><link rel='alternate' type='text/html' href='http://mindchunk.blogspot.com/2007/09/stephen-fry-on-what-distinguishes-apple.html' title='Stephen Fry on what distinguishes Apple'/><author><name>Anthony</name><uri>http://www.blogger.com/profile/05976341066259822102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ZBBfXt0sdfo/SrWgaveJE_I/AAAAAAAAAL4/V40R3Jzvj0M/S220/starx.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8002248475809897548.post-2136369939919591435</id><published>2007-09-18T11:56:00.000-04:00</published><updated>2007-09-25T16:06:20.938-04:00</updated><title type='text'>Another use for the iPhone: redeeming coupons</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_ZBBfXt0sdfo/RvAYso-1n6I/AAAAAAAAAEE/wKzg2LY-PsQ/s1600-h/borders-coupon.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp1.blogger.com/_ZBBfXt0sdfo/RvAYso-1n6I/AAAAAAAAAEE/wKzg2LY-PsQ/s200/borders-coupon.jpg" alt="" id="BLOGGER_PHOTO_ID_5111612732259803042" border="0" /&gt;&lt;/a&gt;The other day, when I picked up "&lt;a href="http://www.stuffcreators.com/UPOD.html"&gt;The Universal Principles of Design&lt;/a&gt;", I used a 20% off coupon from Borders. Instead of using a printed coupon,  I handed my iPhone to the cashier,  which had the PDF of the coupon from my email.&lt;br /&gt;&lt;br /&gt;I wonder if the same thing will work for boarding passes?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8002248475809897548-2136369939919591435?l=mindchunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindchunk.blogspot.com/feeds/2136369939919591435/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8002248475809897548&amp;postID=2136369939919591435' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/2136369939919591435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/2136369939919591435'/><link rel='alternate' type='text/html' href='http://mindchunk.blogspot.com/2007/09/another-use-for-iphone-redeeming.html' title='Another use for the iPhone: redeeming coupons'/><author><name>Anthony</name><uri>http://www.blogger.com/profile/05976341066259822102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ZBBfXt0sdfo/SrWgaveJE_I/AAAAAAAAAL4/V40R3Jzvj0M/S220/starx.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_ZBBfXt0sdfo/RvAYso-1n6I/AAAAAAAAAEE/wKzg2LY-PsQ/s72-c/borders-coupon.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8002248475809897548.post-2783075942223082423</id><published>2007-09-17T19:39:00.000-04:00</published><updated>2007-09-17T19:43:07.102-04:00</updated><title type='text'>Trends 2007: ERP 2.0</title><content type='html'>Companies like SAP and Oracle have lock on ERP systems for enterprises.  Why is there not Open Source alternatives to these large and comprehensive packages?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8002248475809897548-2783075942223082423?l=mindchunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindchunk.blogspot.com/feeds/2783075942223082423/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8002248475809897548&amp;postID=2783075942223082423' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/2783075942223082423'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/2783075942223082423'/><link rel='alternate' type='text/html' href='http://mindchunk.blogspot.com/2007/09/erp-20.html' title='Trends 2007: ERP 2.0'/><author><name>Anthony</name><uri>http://www.blogger.com/profile/05976341066259822102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ZBBfXt0sdfo/SrWgaveJE_I/AAAAAAAAAL4/V40R3Jzvj0M/S220/starx.png'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8002248475809897548.post-2050018691392445748</id><published>2007-09-17T16:08:00.001-04:00</published><updated>2007-09-17T19:44:18.860-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='apple imac stock pod iphone emac powerbook macbook &quot;mac os x&quot;'/><title type='text'>Trends 2007: The Rise of Apple</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_ZBBfXt0sdfo/Ru8LYY-1n5I/AAAAAAAAAD8/vWDdWIpWxdI/s1600-h/trends2007-stock.011.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp3.blogger.com/_ZBBfXt0sdfo/Ru8LYY-1n5I/AAAAAAAAAD8/vWDdWIpWxdI/s320/trends2007-stock.011.jpg" alt="" id="BLOGGER_PHOTO_ID_5111316615739580306" border="0" /&gt;&lt;/a&gt;Apple has firmly established itself as "the new cool". It's obvious that the company has hit its stride, with a relentless march of new products and continued evolution of its entire product line.&lt;br /&gt;&lt;br /&gt;There is something to be said for a company that continues to delight its customers, create new classes of products,  inspire such devotion (when was the last time you heard of a Windows fanboy), and manage to garner so much press, both mainstream and blogosphere.&lt;br /&gt;&lt;br /&gt;I personally made the transition to Apple products in early 2002, and have not looked back. My personal five-year Apple timeline is:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;2002/03: 15 inch Titanium PowerBook G4&lt;/li&gt;&lt;li&gt;2002/08: Mac OS 10.2, Jaguar&lt;/li&gt;&lt;li&gt;2003/04: First iTunes purchase ("Look to the Rainbow", Dinah Washington)&lt;/li&gt;&lt;li&gt;2003/10: Mac OS 10.3, Panther&lt;/li&gt;&lt;li&gt;2004/08: eMac, (college machine)&lt;/li&gt;&lt;li&gt;2004/08: 3G iPod, 15Gb&lt;/li&gt;&lt;li&gt;2005/03: 15 inch Aluminum PowerBook G4&lt;/li&gt;&lt;li&gt;2005/06: Mac OS 10.4, Tiger&lt;/li&gt;&lt;li&gt;2005/09: 4G Video iPod, 30Gb&lt;/li&gt;&lt;li&gt;2006/12: MacBook (college machine)&lt;/li&gt;&lt;li&gt;2007/06: iPhone&lt;/li&gt;&lt;li&gt;2007/08: MacBook (college machine)&lt;/li&gt;&lt;/ol&gt;During that period, Apple stock has grown from about $12.00 to over $130, I have purchased three generations of iPods, three versions of computers in two families (PowerBook G4, eMac, MacBook),  three major operating system revisions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8002248475809897548-2050018691392445748?l=mindchunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindchunk.blogspot.com/feeds/2050018691392445748/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8002248475809897548&amp;postID=2050018691392445748' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/2050018691392445748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/2050018691392445748'/><link rel='alternate' type='text/html' href='http://mindchunk.blogspot.com/2007/09/trends-2007-rise-of-apple.html' title='Trends 2007: The Rise of Apple'/><author><name>Anthony</name><uri>http://www.blogger.com/profile/05976341066259822102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ZBBfXt0sdfo/SrWgaveJE_I/AAAAAAAAAL4/V40R3Jzvj0M/S220/starx.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_ZBBfXt0sdfo/Ru8LYY-1n5I/AAAAAAAAAD8/vWDdWIpWxdI/s72-c/trends2007-stock.011.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8002248475809897548.post-7889632855482960152</id><published>2007-09-17T15:49:00.000-04:00</published><updated>2007-09-17T19:32:50.416-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby django mtv 37signals web design rest java j2ee cobol'/><title type='text'>Trends 2007: Scripting Language Web Frameworks</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_ZBBfXt0sdfo/Ru7byY-1nwI/AAAAAAAAAC0/_IY-jcmpSWY/s1600-h/trends2007.013.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp2.blogger.com/_ZBBfXt0sdfo/Ru7byY-1nwI/AAAAAAAAAC0/_IY-jcmpSWY/s200/trends2007.013.jpg" alt="" id="BLOGGER_PHOTO_ID_5111264285858045698" border="0" /&gt;&lt;/a&gt;As a platform for developing web applications, scripting language-based frameworks like &lt;a href="http://rubyonrails.org/"&gt;Ruby on Rails&lt;/a&gt; and &lt;a href="http://djangoproject.com/"&gt;Django&lt;/a&gt; are gaining in popularity and mindshare.  Rails is famously used by &lt;a href="http://37signal.com/"&gt;37signals&lt;/a&gt; to produce its suite of products, Basecamp (project management), Campfire (group chat), Backpack (information organization), and Highrise (contact management).  The approach advocated by this framework is rapid development, convention over configuration, and embracing the web including the REST architectural style.&lt;br /&gt;&lt;br /&gt;Django is interesting to me because it's based on python, embraces the notions that URLs are meaningful, and like RoR, built based on real-world experience and issues (the framework built for &lt;a href="http://video.google.com/videoplay?docid=-70449010942275062"&gt;perfectionists with deadlines&lt;/a&gt;), and uses a &lt;a href="http://www2.jeffcroft.com/blog/2007/jan/11/django-and-mtv/"&gt;MTV (Model/Template/View)&lt;/a&gt; worldview that allows   designers to concentrate on look and layout, leveraging data provided by developers.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.russellbeattie.com/blog/java-needs-an-overhaul"&gt;Recently there has been a move away&lt;/a&gt; from bigger, heavier weight frameworks like J2EE, to more agile frameworks.  Some have even said that Java is like COBOL -- your dad's language. This move is described in "&lt;a href="http://oodt.jpl.nasa.gov/better-web-app.mov"&gt;Better Web Application Development&lt;/a&gt;", by Sean Kelly, where J2EE gets a real smackdown in the face of Ruby on Rails, Zope/Plone, TurboGears, and  Django.  This is a great example of "evidence-based" architecture.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8002248475809897548-7889632855482960152?l=mindchunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindchunk.blogspot.com/feeds/7889632855482960152/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8002248475809897548&amp;postID=7889632855482960152' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/7889632855482960152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/7889632855482960152'/><link rel='alternate' type='text/html' href='http://mindchunk.blogspot.com/2007/09/trends-2007-scripting-language-web.html' title='Trends 2007: Scripting Language Web Frameworks'/><author><name>Anthony</name><uri>http://www.blogger.com/profile/05976341066259822102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ZBBfXt0sdfo/SrWgaveJE_I/AAAAAAAAAL4/V40R3Jzvj0M/S220/starx.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_ZBBfXt0sdfo/Ru7byY-1nwI/AAAAAAAAAC0/_IY-jcmpSWY/s72-c/trends2007.013.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8002248475809897548.post-4440769516635629251</id><published>2007-09-17T13:30:00.001-04:00</published><updated>2007-09-17T19:31:31.314-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iphone dasboard music podcast gartner enterprise web safari apple mobile photos'/><title type='text'>Trends 2007: iPhone</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_ZBBfXt0sdfo/Ru7KMo-1ntI/AAAAAAAAACc/R5x23DXOV4A/s1600-h/trends2007.011.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp3.blogger.com/_ZBBfXt0sdfo/Ru7KMo-1ntI/AAAAAAAAACc/R5x23DXOV4A/s200/trends2007.011.jpg" alt="" id="BLOGGER_PHOTO_ID_5111244945620311762" border="0" /&gt;&lt;/a&gt;Yes, I was one of the &lt;a href="http://www.flickr.com/photos/ajstarks/793848406"&gt;early adopters (Los Angeles Century City Apple Store, 10 minute wait in line)&lt;/a&gt;, I have an iPhone receipt dated June 29, 2007, and I have no regrets, and my &lt;a href="http://www.apple.com/iphone/storecredit/"&gt;$100 "gift" &lt;/a&gt;is also welcome.&lt;br /&gt;&lt;br /&gt;This device illustrates everything I like about Apple products: a delightful, human-centric user-interface, a clean design that meets the &lt;a href="http://www.jnd.org/dn.mss/emotional_desig.html"&gt;"emotional"&lt;/a&gt; test -- you want to use it because it's fun to use, &lt;a href="http://www.apple.com/iphone/technology/"&gt;novel technology&lt;/a&gt;, and a hackable platform. Beyond the &lt;a href="http://www.engadget.com/tag/iphonesimfree"&gt;current round of hacks &lt;/a&gt;to route around AT&amp;amp;T lock-in, the iPhone as a web platform is extremely interesting.  Here'&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_ZBBfXt0sdfo/Ru7Mro-1nvI/AAAAAAAAACs/tIuMrHec4OU/s1600-h/iphone-widget.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp3.blogger.com/_ZBBfXt0sdfo/Ru7Mro-1nvI/AAAAAAAAACs/tIuMrHec4OU/s200/iphone-widget.jpg" alt="" id="BLOGGER_PHOTO_ID_5111247677219512050" border="0" /&gt;&lt;/a&gt;s Apple's developer strategy as I see it: &lt;a href="http://developer.apple.com/iphone/designingcontent.html"&gt;Create a standards-based web platform&lt;/a&gt;, with mechanisms to optimize for the iPhone within that framework, followed by leveraging the existing &lt;a href="http://www.apple.com/macosx/features/dashboard/"&gt;Dashboard widget&lt;/a&gt; framework for "native" applications.  You only need compare Stock and Weather iPhone applications to their desktop counterparts to see where this is going.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;From a person that rarely even carried a mobile phone, this is the device that has me happily and easily texting my college-aged kids, showing my and &lt;a href="http://www.flickr.com/search/?q=iphone&amp;amp;w=35237099299%40N01"&gt;taking photos&lt;/a&gt;, looking at videos, listening to music and podcasts (at home and in the car), browsing the web, and even experimenting with developing &lt;a href="http://home.comcast.net/%7Eajstarks/candide.html"&gt;content.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Initial reports from analyst firms like &lt;a href="http://www.macworld.com/news/2007/06/21/gartnerit/index.php"&gt;Gartner advised caution &lt;/a&gt;on adopting the iPhone in the enterprise, but subsequent reports moderated that stance somewhat as more &lt;a href="http://www.news.com/Gartner+Expect+an+enterprise+iPhone/2100-1033_3-6205910.html"&gt;enterprise-friendly features or versions &lt;/a&gt;were predicted.  In my view Apple should resists the &lt;span style="font-style: italic;"&gt;enterprization&lt;/span&gt; of the iPhone, and enterprises should embrace the iPhone as is, and can leverage it now by taking advantage of its web and podcast capability --- it's a platform, just like the PC, and frankly the the arguments against sound like the old stuff I used to hear in the 198os about personal computers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8002248475809897548-4440769516635629251?l=mindchunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindchunk.blogspot.com/feeds/4440769516635629251/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8002248475809897548&amp;postID=4440769516635629251' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/4440769516635629251'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/4440769516635629251'/><link rel='alternate' type='text/html' href='http://mindchunk.blogspot.com/2007/09/trends-2007-iphone.html' title='Trends 2007: iPhone'/><author><name>Anthony</name><uri>http://www.blogger.com/profile/05976341066259822102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ZBBfXt0sdfo/SrWgaveJE_I/AAAAAAAAAL4/V40R3Jzvj0M/S220/starx.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_ZBBfXt0sdfo/Ru7KMo-1ntI/AAAAAAAAACc/R5x23DXOV4A/s72-c/trends2007.011.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8002248475809897548.post-6311418824150495210</id><published>2007-09-17T10:38:00.000-04:00</published><updated>2007-09-17T13:30:27.488-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web2.0 google amazon 37signals wikipedia flickr facebook bookmarking digg salesforce'/><title type='text'>Trends 2007: Web 2.0 Exemplars</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_ZBBfXt0sdfo/Ru6XXY-1nsI/AAAAAAAAACU/n43dX262S00/s1600-h/trends2007.012.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp2.blogger.com/_ZBBfXt0sdfo/Ru6XXY-1nsI/AAAAAAAAACU/n43dX262S00/s200/trends2007.012.jpg" alt="" id="BLOGGER_PHOTO_ID_5111189055210888898" border="0" /&gt;&lt;/a&gt;At this point the notion of Web 2.0 is firmly established, if not endlessly debated and re-debated.  Here is my take on organizations/sites that exemplify modern web technology and business models:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://google.com/"&gt;&lt;span style="font-weight: bold;"&gt;Google&lt;/span&gt;:&lt;/a&gt;  the so called "&lt;a href="http://news.yahoo.com/s/afp/20070914/tc_afp/uscompanygoogleinternet"&gt;heart of the web&lt;/a&gt;"&lt;br /&gt;&lt;a href="http://amazon.com/"&gt;&lt;span style="font-weight: bold;"&gt;Amazon&lt;/span&gt;:&lt;/a&gt; leveraging infrastructure to provide a &lt;a href="http://aws.amazon.com/"&gt;service-based computing grid&lt;/a&gt;&lt;br /&gt;&lt;a href="http://37signals.com/"&gt;&lt;span style="font-weight: bold;"&gt;37Signals&lt;/span&gt;:&lt;/a&gt; Leveraging scripting language frameworks to create useful, web-centric applications&lt;br /&gt;&lt;a href="http://wikipedia.com/"&gt;&lt;span style="font-weight: bold;"&gt;Wikipedia&lt;/span&gt;&lt;/a&gt;: proving that collective knowledge is useful&lt;br /&gt;&lt;a href="http://flickr.com/"&gt;&lt;span style="font-weight: bold;"&gt;Flickr&lt;/span&gt;&lt;/a&gt;: combining photos with community on a web-scale platform&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;span class="on down" style="display: block;" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;a href="http://www.facebook.com/"&gt;Facebook&lt;/a&gt;:&lt;/span&gt; connecting people and what they care about&lt;br /&gt;&lt;a href="http://del.icio.us/"&gt;&lt;span style="font-weight: bold;"&gt;del.icio.us&lt;/span&gt;&lt;/a&gt;: Preserving and sharing the journey through the web&lt;br /&gt;&lt;a href="http://digg.com/"&gt;&lt;span style="font-weight: bold;"&gt;digg&lt;/span&gt;:&lt;/a&gt; what is cool and interesting now&lt;br /&gt;&lt;a href="http://www.salesforce.com/"&gt;&lt;span style="font-weight: bold;"&gt;salesforce.com&lt;/span&gt;&lt;/a&gt;: challenging the &lt;a href="http://www.businessweek.com/print/magazine/content/07_39/b4051061.htm"&gt;big boys &lt;/a&gt;on web-based applications and platforms&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8002248475809897548-6311418824150495210?l=mindchunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindchunk.blogspot.com/feeds/6311418824150495210/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8002248475809897548&amp;postID=6311418824150495210' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/6311418824150495210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/6311418824150495210'/><link rel='alternate' type='text/html' href='http://mindchunk.blogspot.com/2007/09/trends-2007-web-20-exemplars.html' title='Trends 2007: Web 2.0 Exemplars'/><author><name>Anthony</name><uri>http://www.blogger.com/profile/05976341066259822102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ZBBfXt0sdfo/SrWgaveJE_I/AAAAAAAAAL4/V40R3Jzvj0M/S220/starx.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_ZBBfXt0sdfo/Ru6XXY-1nsI/AAAAAAAAACU/n43dX262S00/s72-c/trends2007.012.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8002248475809897548.post-4319869453630764431</id><published>2007-09-17T09:30:00.000-04:00</published><updated>2007-09-17T19:33:40.016-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='REST google microsoft AtomPub Atom &quot;web services&quot; ruby'/><title type='text'>Trends 2007: REST</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_ZBBfXt0sdfo/Ru6KQY-1nrI/AAAAAAAAACM/nAeiTxHcxgM/s1600-h/trends2007.009.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp2.blogger.com/_ZBBfXt0sdfo/Ru6KQY-1nrI/AAAAAAAAACM/nAeiTxHcxgM/s200/trends2007.009.jpg" alt="" id="BLOGGER_PHOTO_ID_5111174641300643506" border="0" /&gt;&lt;/a&gt;Much has been written about &lt;a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/top.htm"&gt;REST&lt;/a&gt;, the architectural style for distributed, networked applications, described by Roy Fielding. My first exposure to the concept was in from Paul Prescod's article published in 2002:  &lt;a href="http://webservices.xml.com/pub/a/ws/2002/02/06/rest.html"&gt;Second Generation Web Services&lt;/a&gt;.  After reading that piece, I  "got it", and I've been an &lt;a href="http://www.icmembers.org/blog/software-ecologist/2007/3/20/soa-vs-rest"&gt;advocate&lt;/a&gt; ever since.  Fast forward to 2007, and we have the the publication of "R&amp;amp;R" -- Richardson and Ruby's, "&lt;a href="http://www.oreilly.com/catalog/9780596529260/"&gt;Restful Web Services&lt;/a&gt;".  Along the way we have &lt;a href="http://weblog.rubyonrails.org/2007/1/19/rails-1-2-rest-admiration-http-lovefest-and-utf-8-celebrations"&gt;Ruby on Rails embracing REST&lt;/a&gt; along with &lt;a href="http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=2a46fd53-67bf-4363-9c65-370984aaa79b"&gt;Microsoft, Google&lt;/a&gt;, and &lt;a href="http://aws.amazon.com/"&gt;others&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;There has been a good bit of REST-theory and debate on the net, but also  note that Roy Fielding is scheduled to provide some perspective at the next ApacheCon with the talk "&lt;a href="http://us.apachecon.com/us2007/program/talk/2012"&gt;A Little REST and Relaxation&lt;/a&gt;".&lt;br /&gt;&lt;br /&gt;If you want to get beyond the theory and see real-world REST semantics, principles, and working code, you need go no further than the &lt;a href="http://www.ietf.org/html.charters/atompub-charter.html"&gt;Atom Publishing Protocol.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;What does it all mean? REST is at this point the default method for doing real "web services" -- any modern API is typically RESTful to some degree.  Traditional IT shops and enterprise vendors should take heed and begin to adopt these methods.&lt;br /&gt;&lt;br /&gt;Here's my &lt;a href="http://del.icio.us/ajstarks/rest"&gt;linkdump&lt;/a&gt; on REST (maintaining these is what prompted me to use del.icio.us)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(thanks to &lt;a href="http://www.intertwingly.net/blog"&gt;Sam Ruby&lt;/a&gt; for the REST logo)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8002248475809897548-4319869453630764431?l=mindchunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindchunk.blogspot.com/feeds/4319869453630764431/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8002248475809897548&amp;postID=4319869453630764431' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/4319869453630764431'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/4319869453630764431'/><link rel='alternate' type='text/html' href='http://mindchunk.blogspot.com/2007/09/trends-2007-rest.html' title='Trends 2007: REST'/><author><name>Anthony</name><uri>http://www.blogger.com/profile/05976341066259822102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ZBBfXt0sdfo/SrWgaveJE_I/AAAAAAAAAL4/V40R3Jzvj0M/S220/starx.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_ZBBfXt0sdfo/Ru6KQY-1nrI/AAAAAAAAACM/nAeiTxHcxgM/s72-c/trends2007.009.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8002248475809897548.post-3107901145212075487</id><published>2007-09-15T17:02:00.001-04:00</published><updated>2007-09-15T17:41:07.408-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syndication RSS atom SynOA OPML feed'/><title type='text'>Trends 2007: Syndication</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_ZBBfXt0sdfo/RuxRbY-1nkI/AAAAAAAAABU/WN6yM_oIiig/s1600-h/trends2007.008.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp0.blogger.com/_ZBBfXt0sdfo/RuxRbY-1nkI/AAAAAAAAABU/WN6yM_oIiig/s200/trends2007.008.jpg" alt="" id="BLOGGER_PHOTO_ID_5110549208162999874" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The notion of &lt;a href="http://en.wikipedia.org/wiki/Web_syndication"&gt;syndication&lt;/a&gt; is now firmly entrenched in the post Web 1.0 world --- anything that matters can now has a feed; from web pages, blogs, news items, photos, you name it. Once you begin to use syndication (via &lt;a href="http://www.apple.com/macosx/features/safari/"&gt;built in browser facilities&lt;/a&gt;, &lt;a href="http://reader.google.com/"&gt;web-based reader,&lt;/a&gt; or &lt;a href="http://www.newsgator.com/Individuals/NetNewsWire/"&gt;dedicated reader,&lt;/a&gt; it's impossible to go back.  The ability to sift through a mountain of information (of your own choosing, much of it discovered from other feeds) is addictive --- in a good way. You can move at your own pace, fast or slow, through your own carefully constructed information space, consuming items as diverse as:  &lt;a href="http://www.doubleviking.com/bullet-points-the-10-greatest-advancements-in-fast-food-6167-p.html"&gt;Bullet Points, the Ten Greatest Advancements in Fast Food&lt;/a&gt; and &lt;a href="http://www.washingtonpost.com/wp-dyn/content/article/2007/09/14/AR2007091402451.html"&gt;Greenspan Is Critical Of Bush in Memoir.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Syndication changes the way you consume information -- you are now in control of how they receive your information via the subscription, and in turn you consume information on your terms --- by headline, by, summary, full. Moreover, the information space is exportable, portable and sharable via &lt;a href="http://en.wikipedia.org/wiki/OPML"&gt;OPML files&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I believe that syndication is largely unexploited in mainstream IT shops -- however this could be changing, in fact some have elevated syndication to its own &lt;a href="http://blog.jonudell.net/2007/09/11/a-conversation-with-rohit-khare-about-syndication-oriented-architecture/"&gt;architecture.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8002248475809897548-3107901145212075487?l=mindchunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindchunk.blogspot.com/feeds/3107901145212075487/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8002248475809897548&amp;postID=3107901145212075487' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/3107901145212075487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/3107901145212075487'/><link rel='alternate' type='text/html' href='http://mindchunk.blogspot.com/2007/09/trends-2007-syndication.html' title='Trends 2007: Syndication'/><author><name>Anthony</name><uri>http://www.blogger.com/profile/05976341066259822102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ZBBfXt0sdfo/SrWgaveJE_I/AAAAAAAAAL4/V40R3Jzvj0M/S220/starx.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_ZBBfXt0sdfo/RuxRbY-1nkI/AAAAAAAAABU/WN6yM_oIiig/s72-c/trends2007.008.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8002248475809897548.post-6267486004928984193</id><published>2007-09-13T11:40:00.000-04:00</published><updated>2007-09-17T19:37:30.176-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='megadata bigtable google flickr data'/><title type='text'>Trends 2007: Megadata</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_ZBBfXt0sdfo/RuxRsI-1nlI/AAAAAAAAABc/KCus-NYcTnA/s1600-h/trends2007.004.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp3.blogger.com/_ZBBfXt0sdfo/RuxRsI-1nlI/AAAAAAAAABc/KCus-NYcTnA/s200/trends2007.004.jpg" alt="" id="BLOGGER_PHOTO_ID_5110549495925808722" border="0" /&gt;&lt;/a&gt;Today it's obvious we now have massive computing power, the &lt;a href="http://news.yahoo.com/s/pcworld/20070913/tc_pcworld/137161"&gt;amount of data &lt;/a&gt;we work on even for personal use is growing larger.  How we will process the volume?&lt;br /&gt;&lt;br /&gt;Joe Gregorio coined the term  "&lt;a href="http://bitworking.org/news/158/ETech-07-Summary-Part-2-MegaData"&gt;megadata&lt;/a&gt;", that is large data sets, where traditional relational techniques (triggers, transactions, joins, are NOT used).  For example, Google's use of &lt;a href="http://labs.google.com/papers/bigtable.html"&gt;BigTable&lt;span style="font-style: italic;"&gt;.&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Moreover, the common themes here are that the "structure" of structured data is different: it is inherently distributed, and de-normalized, (which brings to mind the &lt;a href="http://www.kottke.org/04/10/normalized-data"&gt;Cal Henderson statement on normalized data&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://labs.google.com/papers/bigtable.html"&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8002248475809897548-6267486004928984193?l=mindchunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindchunk.blogspot.com/feeds/6267486004928984193/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8002248475809897548&amp;postID=6267486004928984193' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/6267486004928984193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/6267486004928984193'/><link rel='alternate' type='text/html' href='http://mindchunk.blogspot.com/2007/09/trends-2007-megadata.html' title='Trends 2007: Megadata'/><author><name>Anthony</name><uri>http://www.blogger.com/profile/05976341066259822102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ZBBfXt0sdfo/SrWgaveJE_I/AAAAAAAAAL4/V40R3Jzvj0M/S220/starx.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_ZBBfXt0sdfo/RuxRsI-1nlI/AAAAAAAAABc/KCus-NYcTnA/s72-c/trends2007.004.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8002248475809897548.post-2728920081445377959</id><published>2007-09-13T11:32:00.000-04:00</published><updated>2007-09-15T17:43:10.289-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iphone multitouch ui bumptop surface microsoft movies'/><title type='text'>Trends 2007: Next generation User Interfaces</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_ZBBfXt0sdfo/RuxR6I-1nmI/AAAAAAAAABk/X8BPVI9OvsQ/s1600-h/trends2007.006.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp3.blogger.com/_ZBBfXt0sdfo/RuxR6I-1nmI/AAAAAAAAABk/X8BPVI9OvsQ/s200/trends2007.006.jpg" alt="" id="BLOGGER_PHOTO_ID_5110549736443977314" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Starting with the interface in &lt;a href="http://imdb.com/title/tt0181689/"&gt;Minority Report&lt;/a&gt;, and culminating in the Apple iPhone, we are finally starting to see some movement away from the traditional keyboard/mouse/windows style of interaction to richer ones.&lt;br /&gt;&lt;br /&gt;The grandaddy of these is Jeff Han's &lt;a href="http://cs.nyu.edu/%7Ejhan/ftirtouch/"&gt;Mutitouch &lt;/a&gt;(which I saw demoed at Etech, amazing).  Microsoft follows this with -- the &lt;a href="http://www.microsoft.com/surface/"&gt;Surface,&lt;/a&gt;  and of course the &lt;a href="http://www.apple.com/iphone/technology/"&gt;iPhone&lt;/a&gt;.  On a different note is the &lt;a href="http://www.bumptop.com/"&gt;BumpTop&lt;/a&gt; -- which seeks to take the desktop metaphor to the next level my replicating real world structures like stacks coupled with an interaction model that duplicates real-world physics.&lt;br /&gt;&lt;br /&gt;This notion of movement and direct manipulation makes for a more pleasant experience and is one reason for the appeal of the iPhone -- the idea of "touching your music" somehow brings you closer to the thing at hand -- finding something good to listen to -- in this sense the device is out of your way.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8002248475809897548-2728920081445377959?l=mindchunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindchunk.blogspot.com/feeds/2728920081445377959/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8002248475809897548&amp;postID=2728920081445377959' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/2728920081445377959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/2728920081445377959'/><link rel='alternate' type='text/html' href='http://mindchunk.blogspot.com/2007/09/trends-2007-next-generation-user.html' title='Trends 2007: Next generation User Interfaces'/><author><name>Anthony</name><uri>http://www.blogger.com/profile/05976341066259822102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ZBBfXt0sdfo/SrWgaveJE_I/AAAAAAAAAL4/V40R3Jzvj0M/S220/starx.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_ZBBfXt0sdfo/RuxR6I-1nmI/AAAAAAAAABk/X8BPVI9OvsQ/s72-c/trends2007.006.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8002248475809897548.post-522489582038320113</id><published>2007-09-13T11:11:00.000-04:00</published><updated>2007-09-17T14:57:19.947-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='olpc python display education design'/><title type='text'>Trends 2007: OLPC</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_ZBBfXt0sdfo/RuxSM4-1nnI/AAAAAAAAABs/32bm6LaGP6k/s1600-h/trends2007.007.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp2.blogger.com/_ZBBfXt0sdfo/RuxSM4-1nnI/AAAAAAAAABs/32bm6LaGP6k/s200/trends2007.007.jpg" alt="" id="BLOGGER_PHOTO_ID_5110550058566524530" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The &lt;a href="http://laptop.org/"&gt;One Laptop Per Child &lt;/a&gt;project is interesting on a number of levels, its aim is to bring computing to a new set of people without the constraint of "installed base" and in doing so has the potential to improve computing for the rest of us.  In effect the project asks the question -- "what should computing be like" instead of "we have this set of computing systems along with its built in constraints and conventions that you must deal with.&lt;br /&gt;&lt;br /&gt;The OLPC has challenged the established PC players on two fronts, price, and function, and has met these challenges with a device that costs significantly less than current products, with features like an amazing &lt;a href="http://www.youtube.com/watch?v=wI28-IS9AII"&gt;dual mode display &lt;/a&gt;with higher resolution than 95% of the laptop displays on the market today (7.5 inch, 1200×900 pixel, TFT screen and self-refreshing display at 200 DPI), with 1/7th the power consumption. Add to this a new &lt;a href="http://wiki.laptop.org/go/Bitfrost"&gt;security model&lt;/a&gt;, &lt;a href="http://wiki.laptop.org/go/Mesh_Network_FAQ"&gt;mesh networking&lt;/a&gt;, and &lt;a href="http://wiki.laptop.org/go/Sugar"&gt;new UI&lt;/a&gt;, and you have a device that is pushing the boundaries of what a computing device should be.&lt;br /&gt;&lt;br /&gt;For more on the OLPC design see: "&lt;a href="http://en.sevenload.com/videos/ex57nHu/S100-Laptop-How-the-OLPC-Machine-Was-Designed"&gt;How the OLPC Machine was Designed&lt;/a&gt;" this video which&lt;a href="http://video.google.com/videoplay?docid=-3062666296706912466"&gt;&lt;span style=""&gt; &lt;span id="wholedescr" class="visible"&gt;include &lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style=""&gt;&lt;span id="wholedescr" class="visible"&gt;&lt;a&gt;details and demos of the software&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8002248475809897548-522489582038320113?l=mindchunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindchunk.blogspot.com/feeds/522489582038320113/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8002248475809897548&amp;postID=522489582038320113' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/522489582038320113'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/522489582038320113'/><link rel='alternate' type='text/html' href='http://mindchunk.blogspot.com/2007/09/trends-2007-olpc.html' title='Trends 2007: OLPC'/><author><name>Anthony</name><uri>http://www.blogger.com/profile/05976341066259822102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ZBBfXt0sdfo/SrWgaveJE_I/AAAAAAAAAL4/V40R3Jzvj0M/S220/starx.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_ZBBfXt0sdfo/RuxSM4-1nnI/AAAAAAAAABs/32bm6LaGP6k/s72-c/trends2007.007.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8002248475809897548.post-1353075710995893657</id><published>2007-09-13T10:54:00.000-04:00</published><updated>2007-09-15T17:46:07.682-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google Pike erlang concurrency parallel mapreduce sawzall  newsqueak'/><title type='text'>Trends 2007: Parallel and Concurrent Computing</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_ZBBfXt0sdfo/RuxSmY-1noI/AAAAAAAAAB0/tDd5cwbydH8/s1600-h/trends2007.005.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp0.blogger.com/_ZBBfXt0sdfo/RuxSmY-1noI/AAAAAAAAAB0/tDd5cwbydH8/s200/trends2007.005.jpg" alt="" id="BLOGGER_PHOTO_ID_5110550496653188738" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Following up and related to cloud computing is the notion of parallel and concurrent computing. (Rob Pike points out the distinction of these concepts in &lt;a href="http://video.google.com/videoplay?docid=810232012617965344"&gt;Advanced Topics in Programming Languages: Concurrency/message passing in Newsqueak&lt;/a&gt;)&lt;br /&gt;He states;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Concurrency has nothing to do with Parallelism they are actually separable ideas and thats important&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Another major point of this talk is:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;The world is concurrent, but computers are not!&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;and that language support for concurrency is important. The increased attention to languages like &lt;a href="http://www.erlang.org/"&gt;Erlang,&lt;/a&gt;  which has built-in support for concurrency, in indicative of this trend.&lt;br /&gt;&lt;br /&gt;What does this mean?  We can break out of the sequential/synchronous world and begin to think about problems in more natural ways.  Pike makes the point that concurrency should not be something hariy and messy that "you just have to deal with", but concurrent programs can be "much cleaner and more beautiful" than their sequential counterparts.&lt;br /&gt;&lt;br /&gt;Finally, Google has shown the world that for a certain class of problems, working it in parallel environment is highly effective, and using infrastructure, programming environments, and languages like &lt;a href="http://labs.google.com/papers/sawzall.html"&gt;Sawzall&lt;/a&gt;,  and &lt;a href="http://labs.google.com/papers/mapreduce.html"&gt;MapReduce&lt;/a&gt;  makes it possible.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8002248475809897548-1353075710995893657?l=mindchunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindchunk.blogspot.com/feeds/1353075710995893657/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8002248475809897548&amp;postID=1353075710995893657' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/1353075710995893657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/1353075710995893657'/><link rel='alternate' type='text/html' href='http://mindchunk.blogspot.com/2007/09/trends-2007-parallel-and-concurrent.html' title='Trends 2007: Parallel and Concurrent Computing'/><author><name>Anthony</name><uri>http://www.blogger.com/profile/05976341066259822102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ZBBfXt0sdfo/SrWgaveJE_I/AAAAAAAAAL4/V40R3Jzvj0M/S220/starx.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_ZBBfXt0sdfo/RuxSmY-1noI/AAAAAAAAAB0/tDd5cwbydH8/s72-c/trends2007.005.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8002248475809897548.post-6082457710710033539</id><published>2007-09-12T18:01:00.000-04:00</published><updated>2007-09-15T17:47:27.592-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google microsoft schmidt ozzie cloud mobile Sun'/><title type='text'>Trends 2007: Cloud Computing</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_ZBBfXt0sdfo/RuxS5I-1npI/AAAAAAAAAB8/4gwjn1NmzpU/s1600-h/trends2007.003.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp3.blogger.com/_ZBBfXt0sdfo/RuxS5I-1npI/AAAAAAAAAB8/4gwjn1NmzpU/s200/trends2007.003.jpg" alt="" id="BLOGGER_PHOTO_ID_5110550818775735954" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;This trend is not so new, but has gained a lot of currency lately, from Google pushing both apps and data in the Internet to Microsoft responding in kind.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;One way to summarize the two approaches is to note quotes from &lt;a href="http://www.youtube.com/watch?v=T0QJmmdw3b0"&gt;Google CEO Eric Schmidt:&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;Web 3.0 will ultimately be seen as applications that are pieced together which are relatively small, &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;the data is in the cloud&lt;/span&gt;, apps can be run on any device (PC or mobile), apps are very fast, very customizable, apps distributed virally by social networks and email, not store bought. It's a very different application model from the mainframe era and PC industry, likely to be very large, low barrier to entry, new generation of tools being introduced by Google and others make it relatively easy to do, solves a lot of problems, and works everywhere.&lt;/span&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;Compare these statements to Ray Ozzie in his &lt;a href="http://www.microsoft.com/msft/speech/FY07/OzzieFAM2007.mspx"&gt;recent analysts meeting&lt;/a&gt;: &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;Seamless Office scenarios that span the PC, the Web and even the phone. Documents that go wherever you want them, news scenarios, sharing scenarios, meeting scenarios, note-taking, presentation scenarios that use PCs for they're really good for for document creation and editing and review. That use the web for what it's really good for: publishing and sharing and universal access.  They use the phone for mobile access that extends your PC-based and Web-based activities to wherever you go....&lt;/span&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;Finally for developers,  the services opportunity lies really in the breadth and character of the this new type of platform. At the back end, the promise of services for developers is the &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;promise of utility computing in the cloud&lt;/span&gt;...&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;span&gt;&lt;span&gt;Both of these quotes reflect that applications and data are not just local, Google embracing the "everything in the cloud" approach more aggressively, looking to unseat the PC-centric status-quo, with Microsoft, still clinging a bit to its history and heritage, trying to have it both ways.Nevertheless, having data in a central place has large implications: chief among them is location independence, and as alluded to my both Google and Microsoft above, device independence.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Update: &lt;/span&gt;&lt;a href="http://www.capgemini.com/google"&gt;Cap Gemini is endorsing Google Apps&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;Add to this the notion of massive data centers, used by &lt;a href="http://www.wired.com/wired/archive/14.10/cloudware.html"&gt;Google&lt;/a&gt;,  copied by&lt;a href="http://seattletimes.nwsource.com/html/microsoft/2002958192_microsoft28.html"&gt; Microsoft&lt;/a&gt;, with Sun attempting to &lt;a href="http://www.sun.com/emrkt/blackbox/index.jsp"&gt;commericalize the concept&lt;/a&gt;.  Amazon is making waves with its &lt;a href="http://aws.amazon.com/"&gt;S3 and EC2 services&lt;/a&gt;, leveraging existing capacity to provide storage and computing power at very low barriers of entry.&lt;br /&gt;&lt;br /&gt;This begs the question for individuals, startups, and large enterprises:  how soon will true utility computing be  a reality?&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8002248475809897548-6082457710710033539?l=mindchunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindchunk.blogspot.com/feeds/6082457710710033539/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8002248475809897548&amp;postID=6082457710710033539' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/6082457710710033539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/6082457710710033539'/><link rel='alternate' type='text/html' href='http://mindchunk.blogspot.com/2007/09/trends-2007-cloud-computing.html' title='Trends 2007: Cloud Computing'/><author><name>Anthony</name><uri>http://www.blogger.com/profile/05976341066259822102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ZBBfXt0sdfo/SrWgaveJE_I/AAAAAAAAAL4/V40R3Jzvj0M/S220/starx.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_ZBBfXt0sdfo/RuxS5I-1npI/AAAAAAAAAB8/4gwjn1NmzpU/s72-c/trends2007.003.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8002248475809897548.post-1070044221871445605</id><published>2007-09-12T17:36:00.000-04:00</published><updated>2007-09-21T15:11:27.099-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ideas megadata ui REST olpc syndication apple iphone web2.0 erp python django'/><title type='text'>What's on my mind: Trends 2007</title><content type='html'>I Recently a took stock of items in the world of technology and computing that were occupying my attention.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Looking at things like my feed subscription list, I attempted to boil the list to a managable few -- to further capture the ideas/items, I created a presentation: called &lt;a href="http://www.scribd.com/doc/295979/Trends-2007"&gt;"Trends 2007"&lt;/a&gt;.  &lt;br /&gt;&lt;br /&gt;Of course this kind of introspection is not new, O'Reilly has his &lt;a href="http://radar.oreilly.com/"&gt;Radar&lt;/a&gt;, and recently people like Sam Ruby in his &lt;a href="http://intertwingly.net/blog/2007/08/12/Long-Bets"&gt;"Long Bets" &lt;/a&gt;posting  have done similar exercises.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here is the list;  I plan to write about each of these in subsequent posts:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://mindchunk.blogspot.com/2007/09/trends-2007-cloud-computing.html"&gt;Cloud Computing&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://mindchunk.blogspot.com/2007/09/trends-2007-parallel-and-concurrent.html"&gt;Concurrent/Parallel Computing&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://mindchunk.blogspot.com/2007/09/trends-2007-megadata.html"&gt;Megadata&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://mindchunk.blogspot.com/2007/09/trends-2007-next-generation-user.html"&gt;Next Generation User Interfaces&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://mindchunk.blogspot.com/2007/09/trends-2007-olpc.html"&gt;One Laptop per Child&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://mindchunk.blogspot.com/2007/09/trends-2007-syndication.html"&gt;Syndication&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://mindchunk.blogspot.com/2007/09/trends-2007-rest.html"&gt;REST&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://mindchunk.blogspot.com/2007/09/trends-2007-rise-of-apple.html"&gt;The Rise of Apple&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://mindchunk.blogspot.com/2007/09/trends-2007-iphone.html"&gt;iPhone&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://mindchunk.blogspot.com/2007/09/trends-2007-web-20-exemplars.html"&gt;Web 2.0 Exemplars&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://mindchunk.blogspot.com/2007/09/trends-2007-scripting-language-web.html"&gt;Scripting Languages / New Web Frameworks  and resulting Applications&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://mindchunk.blogspot.com/2007/09/erp-20.html"&gt;ERP 2.0&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8002248475809897548-1070044221871445605?l=mindchunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindchunk.blogspot.com/feeds/1070044221871445605/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8002248475809897548&amp;postID=1070044221871445605' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/1070044221871445605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/1070044221871445605'/><link rel='alternate' type='text/html' href='http://mindchunk.blogspot.com/2007/09/whats-on-my-mind.html' title='What&apos;s on my mind: Trends 2007'/><author><name>Anthony</name><uri>http://www.blogger.com/profile/05976341066259822102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ZBBfXt0sdfo/SrWgaveJE_I/AAAAAAAAAL4/V40R3Jzvj0M/S220/starx.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8002248475809897548.post-6067980864954162999</id><published>2007-09-11T19:27:00.000-04:00</published><updated>2007-09-12T11:09:11.588-04:00</updated><title type='text'>A Piece of my Mind?</title><content type='html'>I'm coming late to the game of public blogging, but the time feels right.  This will be my place to share -- to "give you a piece of my mind" -- not in the sense of raving or railing, but  to show, to give something I know, and hopefully continue to learn. &lt;br /&gt;&lt;br /&gt;Also, this will be a place to &lt;a href="http://simonwillison.net/2007/Sep/4/ideas/"&gt;keep ideas from rotting.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8002248475809897548-6067980864954162999?l=mindchunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindchunk.blogspot.com/feeds/6067980864954162999/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8002248475809897548&amp;postID=6067980864954162999' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/6067980864954162999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8002248475809897548/posts/default/6067980864954162999'/><link rel='alternate' type='text/html' href='http://mindchunk.blogspot.com/2007/09/piece-of-my-mind.html' title='A Piece of my Mind?'/><author><name>Anthony</name><uri>http://www.blogger.com/profile/05976341066259822102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ZBBfXt0sdfo/SrWgaveJE_I/AAAAAAAAAL4/V40R3Jzvj0M/S220/starx.png'/></author><thr:total>0</thr:total></entry></feed>
