<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3761776372224414205</id><updated>2024-09-07T15:22:02.913-07:00</updated><category term="Programming"/><category term="Assembly"/><category term="Productivity"/><category term="Web"/><category term="interesting"/><category term="Goals"/><category term="Planning"/><category term="Writing"/><category term="JavaScript"/><category term="AppleScript"/><category term="Automator"/><category term="Browsers"/><category term="Mac"/><category term="Photography"/><category term="Technology"/><category term="cognition"/><category term="jQuery"/><category term="reference"/><category term="skratch"/><title type='text'>amXor</title><subtitle type='html'>Blogging about our lives online.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blogger.andyvanee.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3761776372224414205/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://blogger.andyvanee.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/3761776372224414205/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Andy VanEe</name><uri>http://www.blogger.com/profile/09193663681631407738</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjNjkA6CEOBaIKHyMtqa0kuIlX8FrzPf0aTK3WJ_07PFiXV8w1uBWZp8HgNtnW-ZCcWcCc3oIjKLZX8afdnsgZIVtmiy-O4ZiBHAWlXsx3HPV21PtdACrECSilo15MPw/s220/n607783893_467597_4154.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>60</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3761776372224414205.post-3882461819875128016</id><published>2011-02-11T12:59:00.000-08:00</published><updated>2011-02-11T13:14:06.482-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Automator"/><category scheme="http://www.blogger.com/atom/ns#" term="Productivity"/><title type='text'>Automate The Itch - Part 1</title><content type='html'>&lt;p&gt;Small, single-purpose utility applications have a long lineage in computing history. They are the cornerstone of the UNIX philosophy, and are rampant on mobile platforms. They are the small building blocks in a larger task. These are apps that scratch an itch. They do things that could be done in another way, but with less time and effort.&lt;/p&gt;&lt;p&gt;Every Mac comes with a tool for building your own utility apps quickly and painlessly: Automator. These apps don&#39;t need to clutter your dock, but can sit in the contextual menu (right-click) whenever you need them. This series will show you how to build a few useful apps, and hopefully give you the tools to dream up your own.&lt;/p&gt;&lt;p&gt;The first part will deal with files and folders, then I&#39;ll dive into network tasks, and finally text. I may also throw in a bonus section on porting some command-line wizardry to Automator.&lt;/p&gt;&lt;h2&gt;Batch Renamer&lt;/h2&gt;&lt;p&gt;One of the most common, time consuming tasks is emailing files. You may want to rename them, compress them or convert them somehow. Automator can deal with almost any of these tasks. Say you have 1000 files named [DSC1020.jpg-DSC2020.jpg], and want them to be called [Vacation&lt;em&gt;0001.jpg - Vacation&lt;/em&gt;1001.jpg]. Here&#39;s how Automator can help.&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Open Automator and make a new &quot;Service&quot;&lt;/li&gt;
&lt;li&gt;Set the service to receive files or folders in any application.&lt;/li&gt;
&lt;li&gt;Add a &quot;Rename Finder Items&quot; action. (Don&#39;t make new copies of the files)&lt;/li&gt;
&lt;li&gt;Change &quot;Add Date &amp;amp; Time&quot; to &quot;Make Sequential&quot;.&lt;/li&gt;
&lt;li&gt;In the actions &quot;Options&quot; pane, click &quot;Show this action when workflow runs&quot;, so you can tweak the settings each time you run it.&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;Save it and it will show up whenever you right click any files or folders.&lt;/p&gt;&lt;h2&gt;Resize Images&lt;/h2&gt;&lt;p&gt;If you email photos a lot, your workflow may also include copying them and resizing them. Here&#39;s how that might look:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Create a &quot;Service&quot; that receives &quot;image files&quot;, or just continue on from the previous workflow.&lt;/li&gt;
&lt;li&gt;Add a &quot;Copy Finder Items&quot; action. Set it to copy to the Desktop, your Dropbox or wherever you want the new files.&lt;/li&gt;
&lt;li&gt;Add a &quot;Scale Images&quot; action and set the scaling. 600-pixels is probably good for general usage. If you want to adjust this each time it&#39;s run, check the box &quot;Options &gt; Show this action when run&quot;&lt;br /&gt;
4a. Optionally: add a &quot;Reveal Finder Items&quot; action to show you the files in Finder when it&#39;s complete. This one throws an error for me, even though it does the job perfectly, so it&#39;s up to you…&lt;br /&gt;
4b. Or: add a &quot;New Mail Message&quot; action to automatically add those photos to a new message in Mail. If you&#39;re feeling lucky, you can also add a &quot;Send Outgoing Messages&quot; action to automatically send the prepared email.&lt;/li&gt;
&lt;/ol&gt;&lt;h2&gt;Other Handy File Actions&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Use &quot;Sort Finder Items&quot; prior to a sequential rename, to organize them by date, kind or size. &lt;/li&gt;
&lt;li&gt;Include &quot;Label Finder Items&quot; or &quot;Set Spotlight Comments&quot; to organize the files you run through a particular workflow.&lt;/li&gt;
&lt;li&gt;&quot;Create Archive&quot; is useful if you want to zip the files before sending.&lt;/li&gt;
&lt;li&gt;&quot;New Alias&quot; is a great one-action service that just takes the selected files or folders and makes a shortcut on the Desktop.&lt;/li&gt;
&lt;li&gt;Use &quot;Choose From List&quot; whenever you need to confirm an action. You then have the option to &quot;Select None&quot; or pick and choose items before the workflow continues.&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;Bonus Points - Email Screen Recording&lt;/h2&gt;&lt;p&gt;Here&#39;s a much more esoteric, but potentially very useful workflow. This one captures a screen recording, and emails it to someone.&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Make a new &quot;Application&quot;.&lt;/li&gt;
&lt;li&gt;Add a &quot;New Screen Capture&quot; action.&lt;/li&gt;
&lt;li&gt;Add a &quot;Start Capture&quot; action and check the box &quot;Wait for capture to complete&quot;  &lt;/li&gt;
&lt;li&gt;Add a &quot;Ask For Finder Items&quot; action, and set it to start at &quot;Movies&quot;. This is where screen recordings are saved by default.&lt;/li&gt;
&lt;li&gt;Add a &quot;New Mail Message&quot; action like before. The selected movie will get added to the body of the mail message.&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;This starts the recording right away, if you haven&#39;t used screen recording in QuickTime you probably want to run it once manually to set up your levels. Instant tutorials!&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogger.andyvanee.com/feeds/3882461819875128016/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blogger.andyvanee.com/2011/02/automate-itch-part-1.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3761776372224414205/posts/default/3882461819875128016'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3761776372224414205/posts/default/3882461819875128016'/><link rel='alternate' type='text/html' href='http://blogger.andyvanee.com/2011/02/automate-itch-part-1.html' title='Automate The Itch - Part 1'/><author><name>Andy VanEe</name><uri>http://www.blogger.com/profile/09193663681631407738</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjNjkA6CEOBaIKHyMtqa0kuIlX8FrzPf0aTK3WJ_07PFiXV8w1uBWZp8HgNtnW-ZCcWcCc3oIjKLZX8afdnsgZIVtmiy-O4ZiBHAWlXsx3HPV21PtdACrECSilo15MPw/s220/n607783893_467597_4154.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3761776372224414205.post-6479586017102339478</id><published>2011-02-09T14:11:00.000-08:00</published><updated>2011-02-09T14:11:51.716-08:00</updated><title type='text'>Hashtag Search</title><content type='html'>&lt;p&gt;As a sideline to one of my bigger projects, I decided to build a little webapp that would search Twitter for a hashtag. Fairly basic, but it&#39;s got a few interesting little features:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Name &amp;amp; profile pics link to user&#39;s profile&lt;/li&gt;
&lt;li&gt;Inline URL&#39;s are converted to links&lt;/li&gt;
&lt;li&gt;&#39;More&#39; button loads more tweets via AJAX&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/Andyvanee/HashtagSearch&quot;&gt;Source on Github&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://s3.amazonaws.com/andyvanee/HashtagSearch/index.html&quot;&gt;Online Version&lt;/a&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogger.andyvanee.com/feeds/6479586017102339478/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blogger.andyvanee.com/2011/02/hashtag-search.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3761776372224414205/posts/default/6479586017102339478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3761776372224414205/posts/default/6479586017102339478'/><link rel='alternate' type='text/html' href='http://blogger.andyvanee.com/2011/02/hashtag-search.html' title='Hashtag Search'/><author><name>Andy VanEe</name><uri>http://www.blogger.com/profile/09193663681631407738</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjNjkA6CEOBaIKHyMtqa0kuIlX8FrzPf0aTK3WJ_07PFiXV8w1uBWZp8HgNtnW-ZCcWcCc3oIjKLZX8afdnsgZIVtmiy-O4ZiBHAWlXsx3HPV21PtdACrECSilo15MPw/s220/n607783893_467597_4154.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3761776372224414205.post-3243187694632407227</id><published>2011-02-07T11:55:00.000-08:00</published><updated>2011-02-07T11:55:24.166-08:00</updated><title type='text'>Automator Services</title><content type='html'>&lt;p&gt;I keep discovering new uses for Automator.&lt;/p&gt;&lt;p&gt;I&#39;m not sure when the &quot;Services&quot; option became available, but it&#39;s worth checking out. I had previously wrote a text-to-markdown action, which converted the clipboard contents from markdown to HTML. This was convenient, but it involved copying, running the app and then pasting. The script did this:&lt;/p&gt;&lt;code&gt;pbpaste | Markdown.pl | pbcopy&lt;/code&gt;&lt;br /&gt;
&lt;p&gt;With services this becomes much simpler. It&#39;s now in the contextual(right-click) menu for any application that deals with text, and I also set up the keyboard shortcut CMD-ALT-SHIFT-M. It replaces the selected markdown text with the HTML. The action is even simpler; just a single command:&lt;/p&gt;&lt;code&gt;/usr/local/bin/Markdown.pl&lt;/code&gt;&lt;br /&gt;
&lt;p&gt;If you&#39;ve installed the markdown script somewhere else, you&#39;ll have to set the appropriate path. And here&#39;s a screenshot of how the input is configured.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifU5ci1mJq5SyM8mm14R_fB7k0gtfsntaWm-Q7z2wfS0b6j9UiYoL7LBU0TbSD_lHNKgNC4eHbinR9myT6uBLqWB2RV7IBtulqSR416jbmao2eFnCxkNjpNFazHyuIve6ZIwTC86bwqHJB/s1600/Screen+shot+2011-02-07+at+11.45.40+AM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear:left; float:left;margin-right:1em; margin-bottom:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;224&quot; width=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifU5ci1mJq5SyM8mm14R_fB7k0gtfsntaWm-Q7z2wfS0b6j9UiYoL7LBU0TbSD_lHNKgNC4eHbinR9myT6uBLqWB2RV7IBtulqSR416jbmao2eFnCxkNjpNFazHyuIve6ZIwTC86bwqHJB/s320/Screen+shot+2011-02-07+at+11.45.40+AM.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;h3&gt;Search and Replace&lt;/h3&gt;&lt;p&gt;Almost any shell command can be wired into OSX this way. If the command needs special arguments for each run, just check the box: Options &gt; Show this action when the workflow runs. I did this for Sed search and replace action. Here&#39;s the workflow script:&lt;/p&gt;&lt;code&gt;sed s/old/new/g&lt;/code&gt;&lt;br /&gt;
&lt;p&gt;On each run you want to change old and new with what you&#39;re searching and replacing, but it doesn&#39;t have to end there. You can change the command on the fly to anything that deals with text transformation. &lt;code&gt;sed /^$/d&lt;/code&gt; deletes any empty lines. &lt;code&gt;grep andyvanee&lt;/code&gt; filters out any lines not containing &#39;andyvanee&#39;.&lt;/p&gt;&lt;h3&gt;View Command Output&lt;/h3&gt;&lt;p&gt;For text commands where you don&#39;t want to replace the text, just see the results of some command, uncheck the &#39;Replaces Selected Text&#39; box and add a &quot;Choose From List&quot; action, or maybe &quot;New TextEdit Document&quot; to view the results. For good measure, add a &quot;Copy to Clipboard&quot; action at the end, just in case you want to do something with the output of the command.&lt;/p&gt;&lt;p&gt;This is probably more useful for grep type commands, so I saved this one as &quot;Grep Text&quot; and the previous as &quot;Sed Text&quot;, although either can be used for a wide range of commands.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogger.andyvanee.com/feeds/3243187694632407227/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blogger.andyvanee.com/2011/02/automator-services.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3761776372224414205/posts/default/3243187694632407227'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3761776372224414205/posts/default/3243187694632407227'/><link rel='alternate' type='text/html' href='http://blogger.andyvanee.com/2011/02/automator-services.html' title='Automator Services'/><author><name>Andy VanEe</name><uri>http://www.blogger.com/profile/09193663681631407738</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjNjkA6CEOBaIKHyMtqa0kuIlX8FrzPf0aTK3WJ_07PFiXV8w1uBWZp8HgNtnW-ZCcWcCc3oIjKLZX8afdnsgZIVtmiy-O4ZiBHAWlXsx3HPV21PtdACrECSilo15MPw/s220/n607783893_467597_4154.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifU5ci1mJq5SyM8mm14R_fB7k0gtfsntaWm-Q7z2wfS0b6j9UiYoL7LBU0TbSD_lHNKgNC4eHbinR9myT6uBLqWB2RV7IBtulqSR416jbmao2eFnCxkNjpNFazHyuIve6ZIwTC86bwqHJB/s72-c/Screen+shot+2011-02-07+at+11.45.40+AM.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3761776372224414205.post-7642139888526229428</id><published>2011-01-19T23:00:00.000-08:00</published><updated>2011-01-19T23:00:10.930-08:00</updated><title type='text'>Democamp 13</title><content type='html'>&lt;p&gt;I went to my first Democamp this evening. I thought I&#39;d share the experience while it&#39;s still fresh in my mind.&lt;/p&gt;&lt;p&gt;First off, I wasn&#39;t too sure what to expect, but it was fairly close to what I thought. The community is pretty tight, and there is a good energy. There was only 5 demos, and a couple were somewhat underwhelming, but I&#39;ll start with the good:&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;pluggin.it&quot;&gt;pluggin.it&lt;/a&gt; presented their new app for selling stuff on fb/twitter and sharing the profits with the friends who helped you get the word out. Seems like a great idea, and it seems like they&#39;ve thought it through quite well.&lt;/p&gt;&lt;p&gt;A guy (I forget his name!) from &lt;a href=&quot;http://www.3di.ca/&quot;&gt;3Di&lt;/a&gt; who works with their &lt;a href=&quot;http://www.purelighttech.com/overview.htm&quot;&gt;pureLIGHT&lt;/a&gt; lighting engine presented his concept game that was pretty cool. It was based on the idea of mapping the 3D engine onto curved space... Kind of hard to describe, and unfortunately his demo only covered the basic &quot;training&quot; level, which wasn&#39;t very curved at all, but I could definitely see the potential of a game that ran with that idea. The graphics and lighting were very top-notch for indie developer.&lt;/p&gt;&lt;p&gt;There was guys from &lt;a href=&quot;http://deckle-print-test.appspot.com/&quot;&gt;deckle&lt;/a&gt; there. Solid looking application, but I had this creepy feeling when they demoed the feature of printing bank quality cheques. I suppose I&#39;m just not all that starstruck with the wonders of print media.&lt;/p&gt;&lt;p&gt;And the rest don&#39;t really deserve links, in my humble opinion.&lt;/p&gt;&lt;p&gt;Afterwards, we headed to the pub and I got a chance to meet some cool people in the Edmonton developer community. Good stuff!&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogger.andyvanee.com/feeds/7642139888526229428/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blogger.andyvanee.com/2011/01/democamp-13.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3761776372224414205/posts/default/7642139888526229428'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3761776372224414205/posts/default/7642139888526229428'/><link rel='alternate' type='text/html' href='http://blogger.andyvanee.com/2011/01/democamp-13.html' title='Democamp 13'/><author><name>Andy VanEe</name><uri>http://www.blogger.com/profile/09193663681631407738</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjNjkA6CEOBaIKHyMtqa0kuIlX8FrzPf0aTK3WJ_07PFiXV8w1uBWZp8HgNtnW-ZCcWcCc3oIjKLZX8afdnsgZIVtmiy-O4ZiBHAWlXsx3HPV21PtdACrECSilo15MPw/s220/n607783893_467597_4154.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3761776372224414205.post-4075718173880329585</id><published>2011-01-07T12:32:00.000-08:00</published><updated>2011-01-07T12:33:55.457-08:00</updated><title type='text'>Rapid Game Prototyping in Quartz Composer</title><content type='html'>&lt;p&gt;I am a Quartz Composer junky. I love tinkering with ideas and hacking together logic gates within this kind of visual programming environment.&lt;/p&gt;&lt;p&gt;I think this it&#39;s the best way to teach core CS techniques that are often obscured in text-based code. Things like logic gates, the value of modularity, and application structure start to really make sense when you lay them out visually. It&#39;s like a UML diagram that functions and evaluates in real-time.&lt;/p&gt;&lt;p&gt;As an example, I will use a game-idea I had, and how I quickly mocked it up in Quartz Composer. It&#39;s called &quot;Stellar Debris&quot;, and the point of the prototype is to demonstrate vertical parallax motion in a 2D game (like the background scrolling in Canabalt).&lt;/p&gt;&lt;p&gt;The storyline is that your character is a flying robot(spaceship?) that takes off from the surface and must make it through the layer of orbiting debris in a post-apocalyptic earth. The controls are very basic, click to takeoff, mouse back and forth to move and click to shoot.&lt;/p&gt;&lt;p&gt;Here&#39;s the start screen. The graphics are very rudimentary (prototype remember!).&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVxYnpotkM_sIt1Oqpgu-QG74DbPitOczjBKD0aNyz6Quo2bsevoT467nEnGBFdQptK7FeX23V_mFelzluWL6htMfyTaVsK_QLBnzyQ8PLk6yTgyLfAGH7lVaf9EbSBut6FWpDqzXbBx9Z/s1600/Screen+shot+2011-01-07+at+1.01.50+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear:left; float:left;margin-right:1em; margin-bottom:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;195&quot; width=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVxYnpotkM_sIt1Oqpgu-QG74DbPitOczjBKD0aNyz6Quo2bsevoT467nEnGBFdQptK7FeX23V_mFelzluWL6htMfyTaVsK_QLBnzyQ8PLk6yTgyLfAGH7lVaf9EbSBut6FWpDqzXbBx9Z/s320/Screen+shot+2011-01-07+at+1.01.50+PM.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;Once you click, the character takes off and you can control his motion and fire bullets.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh85VZrjLhUY-7w7lYxwYom47Gm8Bc4w-gKcS4Wb9sCTccJm8L1LEra2fYKu1uTdY-y6zK7fS7pwTTZ6GYiGDtsO4j5M_Ep02iqDJ8TS6cxQrkRAvwxVe3-GP_QA30vvWPWrHithiIu3go4/s1600/Screen+shot+2011-01-07+at+1.03.45+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear:left; float:left;margin-right:1em; margin-bottom:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;194&quot; width=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh85VZrjLhUY-7w7lYxwYom47Gm8Bc4w-gKcS4Wb9sCTccJm8L1LEra2fYKu1uTdY-y6zK7fS7pwTTZ6GYiGDtsO4j5M_Ep02iqDJ8TS6cxQrkRAvwxVe3-GP_QA30vvWPWrHithiIu3go4/s320/Screen+shot+2011-01-07+at+1.03.45+PM.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;You&#39;ll notice the foreground has scrolled off screen already and there are blocks to shoot. The background scrolls much slower, and the sky doesn&#39;t scroll at all. It also gets darker as you ascend into the atmosphere.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhgm4o8R2N5PLxPt-eIPMDohlWvTrMoFZQt0pFqYKxQUFUFD5-BaVAsH_wBe5Ycf1mTRzRnVoJAT0r-H8shLe2BQC08YbYmAyTBzVUozaJ8O3JjCoRuNHkZ2INN1qWSOTQZRGgdkbH_Ssx/s1600/Screen+shot+2011-01-07+at+1.14.41+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear:left; float:left;margin-right:1em; margin-bottom:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;194&quot; width=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhgm4o8R2N5PLxPt-eIPMDohlWvTrMoFZQt0pFqYKxQUFUFD5-BaVAsH_wBe5Ycf1mTRzRnVoJAT0r-H8shLe2BQC08YbYmAyTBzVUozaJ8O3JjCoRuNHkZ2INN1qWSOTQZRGgdkbH_Ssx/s320/Screen+shot+2011-01-07+at+1.14.41+PM.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;h3&gt;Game Logic&lt;/h3&gt;&lt;p&gt;I don&#39;t think I would want to build an entire game in Quartz Composer. But having a mockup like this is great for prototyping because most of the game logic is there in a clear modular structure, which makes it a great starting point for porting it to your programming language of choice. Here&#39;s a look at the patches involved in making this &quot;game&quot; happen.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4Z6TW_HFOogolk005mQsNu-sBJa3Hr7wsASiTlP1nAqBzch7Uf90PElOlatnDYgN76OUkcFjMKdRJjXk4NHvWjlC04lT43h5_WPmkI2nzaWJBPUjVK7AXGotq_AxmwngjiC600N8J8F7D/s1600/Screen+shot+2011-01-07+at+1.18.04+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear:left; float:left;margin-right:1em; margin-bottom:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;271&quot; width=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4Z6TW_HFOogolk005mQsNu-sBJa3Hr7wsASiTlP1nAqBzch7Uf90PElOlatnDYgN76OUkcFjMKdRJjXk4NHvWjlC04lT43h5_WPmkI2nzaWJBPUjVK7AXGotq_AxmwngjiC600N8J8F7D/s320/Screen+shot+2011-01-07+at+1.18.04+PM.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;Rather than coding blindly, many of the logic bits required for gameplay are already in place. Things like &quot;the bullet needs to know the character&#39;s position at the time of firing&quot; or &quot;each 2D layer needs to know the absolute position and multiply it by some factor&quot; or even &quot;the clouds look good enough as a blurred semi-opaque sprite&quot;.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogger.andyvanee.com/feeds/4075718173880329585/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blogger.andyvanee.com/2011/01/rapid-game-prototyping-in-quartz.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3761776372224414205/posts/default/4075718173880329585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3761776372224414205/posts/default/4075718173880329585'/><link rel='alternate' type='text/html' href='http://blogger.andyvanee.com/2011/01/rapid-game-prototyping-in-quartz.html' title='Rapid Game Prototyping in Quartz Composer'/><author><name>Andy VanEe</name><uri>http://www.blogger.com/profile/09193663681631407738</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjNjkA6CEOBaIKHyMtqa0kuIlX8FrzPf0aTK3WJ_07PFiXV8w1uBWZp8HgNtnW-ZCcWcCc3oIjKLZX8afdnsgZIVtmiy-O4ZiBHAWlXsx3HPV21PtdACrECSilo15MPw/s220/n607783893_467597_4154.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVxYnpotkM_sIt1Oqpgu-QG74DbPitOczjBKD0aNyz6Quo2bsevoT467nEnGBFdQptK7FeX23V_mFelzluWL6htMfyTaVsK_QLBnzyQ8PLk6yTgyLfAGH7lVaf9EbSBut6FWpDqzXbBx9Z/s72-c/Screen+shot+2011-01-07+at+1.01.50+PM.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3761776372224414205.post-6328909380033109562</id><published>2010-12-20T16:41:00.000-08:00</published><updated>2010-12-20T16:41:33.495-08:00</updated><title type='text'>From Command-line to XCode</title><content type='html'>&lt;p&gt;I&#39;m a command-line guy at heart when it comes to programming. It seems much more organic to know what every project file is doing and how each one contributes to the whole. Which files might break things, which files are optional and which files can be refactored or optimized.&lt;/p&gt;&lt;p&gt;&quot;The Pragmatic Programmer&quot; challenged this notion. They recommend diversity. If you only know and IDE, try command-line and if you know command-line, try an IDE. At first I was skeptical of this advice. I&#39;ve come to know my command-line toolset fairly well, and IDE&#39;s feel like they add too much baggage and inflexibility. I&#39;ve built Xcode projects before, and there is a lot of behind the scenes voodoo attached to the projects.&lt;/p&gt;&lt;p&gt;But, after pushing through my initial concerns, I&#39;ve come to really enjoy using Xcode for my projects. Here are some command-line programmer concerns, and how to alleviate them in Xcode. Some may be obvious to those who are at home in their IDE, but they weren&#39;t to me.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Problem: I&#39;m going to have to fill my project folder with unnecessary Xcode-specific files.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Solution: Make a workspace (eg. Documents &gt; Web_development.xcworkspace). Add your project folders to this workspace(without copying the files).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Problem: My project is unique, won&#39;t I have to use the command line anyway?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Solution: This is where command-line knowledge really pays off. Just create a new &quot;Scheme&quot; and you can run scripts pre/post Build pre/post Run. For a simple HTML site, I just set Safari.app as the executable and my index.html file as the argument. The build scheme is your hook into all the command-line utilities at your disposal.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Problem: I prefer editing with [vim, emacs, ...].&lt;br /&gt;
Solution: Well, I can&#39;t really help you there. Personally, I like Vim, but I&#39;m not a total fanboy. I&#39;m quite happy using the standard OSX keybindings, with a few tweaks for one&#39;s I use a lot. Find &amp;amp; Replace works well. Split view and file navigation work well, and syntax-highlighting is fully configurable and works with every file I&#39;ve thrown at it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Problem: I can&#39;t manage my git(svn, whatever) repositories from there.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;Solution: This was my own ignorance. I use git for all my projects, and Xcode support for git is actually pretty awesome. It automatically knows if a file is in a git repo, and puts an M beside the file if it&#39;s been modified. &lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;All in all, I&#39;ve really enjoyed programming in Xcode. It does take a small investment of time and imagination to build custom projects, but I think it&#39;s worth it.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogger.andyvanee.com/feeds/6328909380033109562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blogger.andyvanee.com/2010/12/from-command-line-to-xcode.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3761776372224414205/posts/default/6328909380033109562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3761776372224414205/posts/default/6328909380033109562'/><link rel='alternate' type='text/html' href='http://blogger.andyvanee.com/2010/12/from-command-line-to-xcode.html' title='From Command-line to XCode'/><author><name>Andy VanEe</name><uri>http://www.blogger.com/profile/09193663681631407738</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjNjkA6CEOBaIKHyMtqa0kuIlX8FrzPf0aTK3WJ_07PFiXV8w1uBWZp8HgNtnW-ZCcWcCc3oIjKLZX8afdnsgZIVtmiy-O4ZiBHAWlXsx3HPV21PtdACrECSilo15MPw/s220/n607783893_467597_4154.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3761776372224414205.post-1639534348141066666</id><published>2010-12-01T22:05:00.000-08:00</published><updated>2010-12-02T09:52:13.474-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript"/><category scheme="http://www.blogger.com/atom/ns#" term="skratch"/><title type='text'>Skratch Beta - Call for Testers</title><content type='html'>&lt;p&gt;I&#39;ve finally got my online coloring book ready to unleash into the wild and I would like to ask you to try it out!&lt;/p&gt;&lt;p&gt;If you&#39;re willing I would ask that you answer all/some/none of the following questions and e-mail them to me (1andyvanee _at_ gmail _dot_ com )or just leave a comment.&lt;/p&gt;&lt;hr&gt;&lt;ol&gt;&lt;li&gt;What hardware/browser(s) did you try it on?&lt;/li&gt;
&lt;li&gt;What was your overall impression of the app?&lt;/li&gt;
&lt;li&gt;Have you used any comparable applications? If yes, what did you like/dislike about them?&lt;/li&gt;
&lt;li&gt;Was there any features that seemed unexpected or strange to you?&lt;/li&gt;
&lt;li&gt;If you could add one killer feature, what would it be?&lt;/li&gt;
&lt;/ol&gt;&lt;hr&gt;&lt;p&gt;Thanks guys, have fun with Skratch!&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://andyvanee.s3.amazonaws.com/skratch/index.html&quot;&gt;Download it Here&lt;/a&gt;&lt;/p&gt;&lt;p&gt;P.S. If you answer Internet Explorer to the first question, you probably won&#39;t get to the rest...&lt;/p&gt;&lt;p style=&quot;color:red&quot;&gt;P.P.S. Confirmed, Absolutely NO IE SUPPORT.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogger.andyvanee.com/feeds/1639534348141066666/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blogger.andyvanee.com/2010/12/skratch-beta-call-for-testers.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3761776372224414205/posts/default/1639534348141066666'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3761776372224414205/posts/default/1639534348141066666'/><link rel='alternate' type='text/html' href='http://blogger.andyvanee.com/2010/12/skratch-beta-call-for-testers.html' title='Skratch Beta - Call for Testers'/><author><name>Andy VanEe</name><uri>http://www.blogger.com/profile/09193663681631407738</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjNjkA6CEOBaIKHyMtqa0kuIlX8FrzPf0aTK3WJ_07PFiXV8w1uBWZp8HgNtnW-ZCcWcCc3oIjKLZX8afdnsgZIVtmiy-O4ZiBHAWlXsx3HPV21PtdACrECSilo15MPw/s220/n607783893_467597_4154.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3761776372224414205.post-548263358253345975</id><published>2010-11-30T21:13:00.000-08:00</published><updated>2010-11-30T21:14:07.126-08:00</updated><title type='text'>Endangered Species and UX</title><content type='html'>&lt;p&gt;I&#39;ve just picked up Gene Wolfe&#39;s collection of short stories, &lt;a href=&quot;http://amzn.com/0765310333&quot;&gt;&quot;Endangered Species&quot;&lt;/a&gt; for a second read. I stopped after the introduction to think about it for a while. It&#39;s that good.&lt;/p&gt;&lt;p&gt;I&#39;ll outline his points first for context. Wolfe starts by saying that the most important aspect of a story is that it have a reader. He explains that he wrote these stories for me, the reader. He then goes on to describe me, the reader, in great detail. My hopes and fears, my character flaws, virtues, vices and deepest thoughts. He also tells me the reason he wrote a few of the stories particularly for me.&lt;/p&gt;&lt;p&gt;His examples are obviously generic enough to cover a lot of people, but it&#39;s truly remarkable how specifically he targets his audience. Here&#39;s an excerpt to give you the flavour.&lt;/p&gt;&lt;blockquote&gt;&quot;...At certain times you have feared that you are insane, at others that you are the only sane person in the world. You are patient, and yet eager...&quot;&lt;/blockquote&gt;&lt;p&gt;The reason I have found this so refreshing is that I&#39;ve read a lot on User Experience(UX) lately. There is a fair amount of hype and self-importance in a lot of UX articles. The stated goal of UX is providing a pleasant experience for &quot;The User&quot;, but most of the literature drives home the point that the average user is ill-tempered, ignorant and just plain stupid.&lt;/p&gt;&lt;p&gt;Gene Wolfe truly cares about his readers. He thinks highly of them. He also expects creative engagement and effort from his readers.&lt;/p&gt;&lt;p&gt;UX design seems to be focused on placating unwilling participants. I would argue that it should be focused on delighting the willing participants. Valuing them.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogger.andyvanee.com/feeds/548263358253345975/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blogger.andyvanee.com/2010/11/endangered-species-and-ux.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3761776372224414205/posts/default/548263358253345975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3761776372224414205/posts/default/548263358253345975'/><link rel='alternate' type='text/html' href='http://blogger.andyvanee.com/2010/11/endangered-species-and-ux.html' title='Endangered Species and UX'/><author><name>Andy VanEe</name><uri>http://www.blogger.com/profile/09193663681631407738</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjNjkA6CEOBaIKHyMtqa0kuIlX8FrzPf0aTK3WJ_07PFiXV8w1uBWZp8HgNtnW-ZCcWcCc3oIjKLZX8afdnsgZIVtmiy-O4ZiBHAWlXsx3HPV21PtdACrECSilo15MPw/s220/n607783893_467597_4154.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3761776372224414205.post-970291564110915411</id><published>2010-11-25T11:01:00.000-08:00</published><updated>2010-11-29T18:28:06.063-08:00</updated><title type='text'>SVG Explorations</title><content type='html'>&lt;p&gt;SVG seems to have got buried under all the hype about the HTML5 canvas. But it&#39;s really quite cool and I&#39;m surprised more sites aren&#39;t using it for dynamic content.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Part of the problem seems to be early and inconsistent implementation. A lot of the demos that are floating about the web are old, uninspiring and bland. Some good examples can be found on &lt;a href=&quot;http://raphaeljs.com/&quot;&gt;the raphael.js site&lt;/a&gt; and a decent example of a full page built with SVG is &lt;a href=&quot;http://emacsformacosx.com/&quot;&gt;emacsformacosx.com&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;I&#39;ve built a small example using CSS styling and JavaScript mouseover events to randomly rotate each path in an image I &quot;traced&quot; using Illustrator.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;a href=&quot;http://andyv.assignmentcreative.com/IMG_7534_bw.svg&quot;&gt;Take a look.&lt;/a&gt; (Hint: Try to click the pink element!)&lt;/p&gt;&lt;br /&gt;
&lt;p style=&quot;color: #AA3333&quot;&gt;Update: Apparently Google Graphs(a spreadsheet option) are rendered with SVG. Cool!&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogger.andyvanee.com/feeds/970291564110915411/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blogger.andyvanee.com/2010/11/svg-explorations.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3761776372224414205/posts/default/970291564110915411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3761776372224414205/posts/default/970291564110915411'/><link rel='alternate' type='text/html' href='http://blogger.andyvanee.com/2010/11/svg-explorations.html' title='SVG Explorations'/><author><name>Andy VanEe</name><uri>http://www.blogger.com/profile/09193663681631407738</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjNjkA6CEOBaIKHyMtqa0kuIlX8FrzPf0aTK3WJ_07PFiXV8w1uBWZp8HgNtnW-ZCcWcCc3oIjKLZX8afdnsgZIVtmiy-O4ZiBHAWlXsx3HPV21PtdACrECSilo15MPw/s220/n607783893_467597_4154.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3761776372224414205.post-1137314740750306694</id><published>2010-11-24T23:16:00.000-08:00</published><updated>2010-11-24T23:20:02.172-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript"/><category scheme="http://www.blogger.com/atom/ns#" term="Programming"/><title type='text'>Chaining in JavaScript</title><content type='html'>&lt;p&gt;It&#39;s been bugging me for a while that I didn&#39;t understand the method behind jQuery&#39;s function chaining. So I built the smallest functional version of it. I call it aQuery &lt;em&gt;(for andy, or awesome).&lt;/em&gt;&lt;/p&gt;&lt;p&gt;This is the calling code:&lt;/p&gt;&lt;pre&gt;window.onload = function(){
    aQ(&quot;#content&quot;).height().background().elem.innerHTML = &quot;hello&quot;;
};&lt;/pre&gt;&lt;p&gt;I have made two functions .height() and .background(), which do pretty much what their names suggest. The elem is the original object and so I use it to call &quot;native&quot; code. Maybe should have called it &quot;target&quot; to be consistent.&lt;/p&gt;&lt;p&gt;Here&#39;s the meat and potatoes of the &quot;library&quot;:&lt;/p&gt;&lt;code&gt;&lt;pre&gt;(function() {   
    var aQ = function(selector) {
        return new aQuery.fn(selector);
    };

    var aQuery = {};
    aQuery.fn = function(selector) {
        this.elem = document.getElementById(selector.split(&quot;#&quot;)[1]);
        this.cssText = &quot;&quot;;
        this.height = function(){
            this.cssText = this.cssText + &quot;height: &quot; + window.innerHeight + &quot;px;&quot;;
            this.elem.style.cssText = this.cssText;
            return this;
        };
        this.background = function(){
            this.cssText = this.cssText + &quot;background-color: #444;&quot;;
            this.elem.style.cssText = this.cssText;
            return this;
        };
        return this;
    };
    
    return (window.aQ = aQ);
})();&lt;/pre&gt;&lt;/code&gt;&lt;br /&gt;
&lt;p&gt;Each call to aQ makes a new object, primed with the selector string. This object has several functions and attributes, and all the functions return &quot;this&quot;, so they can be chained together. As it stands, it&#39;s not dynamic at all but you can use your imagination!&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogger.andyvanee.com/feeds/1137314740750306694/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blogger.andyvanee.com/2010/11/chaining-in-javascript.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3761776372224414205/posts/default/1137314740750306694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3761776372224414205/posts/default/1137314740750306694'/><link rel='alternate' type='text/html' href='http://blogger.andyvanee.com/2010/11/chaining-in-javascript.html' title='Chaining in JavaScript'/><author><name>Andy VanEe</name><uri>http://www.blogger.com/profile/09193663681631407738</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjNjkA6CEOBaIKHyMtqa0kuIlX8FrzPf0aTK3WJ_07PFiXV8w1uBWZp8HgNtnW-ZCcWcCc3oIjKLZX8afdnsgZIVtmiy-O4ZiBHAWlXsx3HPV21PtdACrECSilo15MPw/s220/n607783893_467597_4154.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3761776372224414205.post-3732528388850362951</id><published>2010-11-17T22:08:00.000-08:00</published><updated>2010-11-17T22:11:15.305-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="interesting"/><category scheme="http://www.blogger.com/atom/ns#" term="jQuery"/><category scheme="http://www.blogger.com/atom/ns#" term="Programming"/><category scheme="http://www.blogger.com/atom/ns#" term="Technology"/><title type='text'>jQuery Mobile Data Attributes</title><content type='html'>In testing out the newly released &lt;a href=&quot;http://jquerymobile.com/&quot;&gt;jQuery Mobile&lt;/a&gt;&amp;nbsp;library, I&#39;m left with strong but mixed feelings about it.&lt;br /&gt;
&lt;br /&gt;
First, it&#39;s a surprisingly unique solution. The jQuery team is very good at simplifying hard problems, but in some ways you come to expect that the solutions will be quite similar. I expected a bunch of jQuery-type functions that would transform your markup into the mobile look and feel. I expected jQueryUI for mobile, and was ready to start moaning about how inflexible and unsemantic it was.&lt;br /&gt;
&lt;br /&gt;
Instead, their solution is to add HTML syntax and automatically wire up all of the functionality for you. Not what I was expecting. You don&#39;t have to write a single line of JavaScript for the default functionality. This has got to be the easiest solution for porting HTML content to a device. Your &quot;pages&quot; can all live inside one HTML file or be loaded dynamically with AJAX. All the URL&#39;s get dynamically referenced to the main page and resolve correctly. And no handwritten JavaScript or CSS in sight.&lt;br /&gt;
&lt;br /&gt;
A lot of this functionality comes through the use of custom data attributes in your HTML. In my perusing of the HTML5 features I have to admit: this one seemed fairly boring. So what if I can add custom attributes and my page still validates? Why should I care?&lt;br /&gt;
&lt;br /&gt;
But the guys at jQuery Mobile have capitalized heavily on this notion. By using custom attributes quite liberally to alter the semantic meaning of lists, headers and anchors, they can automate all the behind the scenes JavaScript and CSS necessary to make it work.&lt;br /&gt;
&lt;br /&gt;
It&#39;s a strange reversal of the web technology where the withering old HTML document is front and center again and the CSS and JavaScript hide in the back room, pulling on the invisible strings.&lt;br /&gt;
&lt;br /&gt;
For a &quot;Navigate to Text Content&quot; site, this is a dead-simple solution. I think a &#39;Project Gutenberg&#39; site is at the top of my list. Or maybe an RSS reader.&lt;br /&gt;
Some negatives that I see:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Building or altering UI components is going to be a pain.&lt;/li&gt;
&lt;li&gt;Really only scales to iPhone-size devices. (They support iPad, but who uses full-width buttons on iPad?)&lt;/li&gt;
&lt;li&gt;The UI is a tad bland. (Erring on the side of caution, I guess)&lt;/li&gt;
&lt;li&gt;I&#39;m undecided on all of those data-role tags.&lt;/li&gt;
&lt;li&gt;It&#39;s new and strange. I don&#39;t like new things. I&#39;m scared of it. What if it doesn&#39;t like me?&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;&lt;i&gt;Anyway&lt;/i&gt;...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
My real takeaway is not the tool itself, but understanding how it works and how I can incorporate those ideas into my own projects. There&#39;s a lot of smart people working on projects like this, and you really only get to know them by reading their code.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogger.andyvanee.com/feeds/3732528388850362951/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blogger.andyvanee.com/2010/11/jquery-mobile-data-attributes.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3761776372224414205/posts/default/3732528388850362951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3761776372224414205/posts/default/3732528388850362951'/><link rel='alternate' type='text/html' href='http://blogger.andyvanee.com/2010/11/jquery-mobile-data-attributes.html' title='jQuery Mobile Data Attributes'/><author><name>Andy VanEe</name><uri>http://www.blogger.com/profile/09193663681631407738</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjNjkA6CEOBaIKHyMtqa0kuIlX8FrzPf0aTK3WJ_07PFiXV8w1uBWZp8HgNtnW-ZCcWcCc3oIjKLZX8afdnsgZIVtmiy-O4ZiBHAWlXsx3HPV21PtdACrECSilo15MPw/s220/n607783893_467597_4154.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3761776372224414205.post-7930510099565571703</id><published>2010-11-10T08:48:00.000-08:00</published><updated>2010-11-15T22:19:20.794-08:00</updated><title type='text'>Boxeddet - Another Wireframing Tool</title><content type='html'>&lt;p&gt;After reading the &lt;a href=&quot;http://sixrevisions.com/user-interface/website-wireframing/&quot;&gt;article on sixrevisions.com&lt;/a&gt; about wireframing I thought to myself: &quot;What the world needs now is another wireframing tool!&quot;&lt;/p&gt;

&lt;p&gt;Yes, the options are staggering. But in a way they all seemed very similar. My feeling is that if you want to sell a tool to a designer, the primary goal is not adding new functionality but simply adding a bit of unique visual flair to make it &quot;pop&quot;.&lt;/p&gt;

&lt;p&gt;Last night I hacked up a bit of code for a different type of tool. This one produces actual HTML layouts in the grey-box style. You just draw your div&#39;s inside the browser, and the DOM is dynamically updated.&lt;/p&gt;

&lt;p&gt;I&#39;ve put the code up on github, so go ahead and clone/fork/prod it and let me know what you think!&lt;/p&gt;

&lt;a href=&quot;https://github.com/Andyvanee/Boxeddet&quot;&gt;Get The Code!&lt;/a&gt;

&lt;p&gt;Or you can &lt;a href=&quot;http://andyv.assignmentcreative.com/Boxeddet/&quot;&gt;Test drive it!&lt;/a&gt;&lt;/p&gt;
&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEih4CN5sMwYaMhd9BbnsY4uUSmZC1mGfLGVLuDDx4VdLRKkG1JC37crsXc2mNVphkdb8IWnaNSgr4-ZMwC_ks8NBzZKrsdD9oI-fwB1xOlPrzWH69dN8LZAHdwLIt_n2OUTlF0Ehp9zMqS-/s1600/screenshot1.png&quot;&gt;&lt;img style=&quot;float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 320px; height: 257px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEih4CN5sMwYaMhd9BbnsY4uUSmZC1mGfLGVLuDDx4VdLRKkG1JC37crsXc2mNVphkdb8IWnaNSgr4-ZMwC_ks8NBzZKrsdD9oI-fwB1xOlPrzWH69dN8LZAHdwLIt_n2OUTlF0Ehp9zMqS-/s320/screenshot1.png&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5537971091489321890&quot; /&gt;&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogger.andyvanee.com/feeds/7930510099565571703/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blogger.andyvanee.com/2010/11/boxeddet-another-wireframing-tool.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3761776372224414205/posts/default/7930510099565571703'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3761776372224414205/posts/default/7930510099565571703'/><link rel='alternate' type='text/html' href='http://blogger.andyvanee.com/2010/11/boxeddet-another-wireframing-tool.html' title='Boxeddet - Another Wireframing Tool'/><author><name>Andy VanEe</name><uri>http://www.blogger.com/profile/09193663681631407738</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjNjkA6CEOBaIKHyMtqa0kuIlX8FrzPf0aTK3WJ_07PFiXV8w1uBWZp8HgNtnW-ZCcWcCc3oIjKLZX8afdnsgZIVtmiy-O4ZiBHAWlXsx3HPV21PtdACrECSilo15MPw/s220/n607783893_467597_4154.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEih4CN5sMwYaMhd9BbnsY4uUSmZC1mGfLGVLuDDx4VdLRKkG1JC37crsXc2mNVphkdb8IWnaNSgr4-ZMwC_ks8NBzZKrsdD9oI-fwB1xOlPrzWH69dN8LZAHdwLIt_n2OUTlF0Ehp9zMqS-/s72-c/screenshot1.png" height="72" width="72"/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3761776372224414205.post-408398736370509501</id><published>2010-10-28T20:29:00.000-07:00</published><updated>2010-10-28T21:22:12.769-07:00</updated><title type='text'>jQuery Extensions?</title><content type='html'>&lt;p&gt;I&#39;ve been working with jQuery a fair bit lately. Although it gives you a fair number of handy shortcuts, I think it&#39;s true value is as an educational tool on how to use JavaScript effectively.&lt;/p&gt;
&lt;p&gt;This means diving in to the jQuery sources. This means learning what anonymous functions and closures are all about, letting it settle, and then learning what they&#39;re about again. It also means taking 98% of all the JavaScript tutorials on the internets and throwing them out. Well, maybe not throwing them out, but putting them in to context.&lt;/p&gt;
&lt;p&gt;What I&#39;m digging in to right now is programming in the jQuery paradigm. What this means is bolting all my own functions onto the jQuery object through an anonymous function. I can then call these functions just as I would call the jQuery functions, making for a cleaner and more reusable codebase.&lt;/p&gt;
&lt;p&gt;The basic pattern is this:&lt;/p&gt;
&lt;h4&gt;jQuery.js&lt;/h4&gt;
&lt;p&gt;The jQuery library.&lt;/p&gt;
&lt;h4&gt;myLibrary.js&lt;/h4&gt;
&lt;p&gt;This is where I attach my functions to the $ object. The template goes like this:&lt;/p&gt;
&lt;pre&gt;(function ($) {
    var private_var = 1;
    var private_function = function() {return &quot;Only this closure can call me, I&#39;m special.&quot;};
    $.cool_function = function(){
      return &quot;Hello jQuery.&quot;;
    }
}(jQuery));
&lt;/pre&gt;
&lt;h4&gt;doStuff.js&lt;/h4&gt;
&lt;pre&gt;$().ready(function() {
    $(&quot;h4&quot;).html($.cool_function());
});
&lt;/pre&gt;
&lt;p&gt;That&#39;s it in a nutshell. For more info on wrapping your brain around why this works, see &lt;a href=&quot;http://www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-Depth&quot;&gt;this article&lt;/a&gt;. I wish I would have read it earlier.&lt;/p&gt;
&lt;p&gt;You&#39;ll note i&#39;m not handling input from jQuery selectors. I&#39;m going to have to let that one bounce around in my brain a bit longer...&lt;/p&gt;

&lt;p&gt;Happy coding!&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogger.andyvanee.com/feeds/408398736370509501/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blogger.andyvanee.com/2010/10/jquery-extensions.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3761776372224414205/posts/default/408398736370509501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3761776372224414205/posts/default/408398736370509501'/><link rel='alternate' type='text/html' href='http://blogger.andyvanee.com/2010/10/jquery-extensions.html' title='jQuery Extensions?'/><author><name>Andy VanEe</name><uri>http://www.blogger.com/profile/09193663681631407738</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjNjkA6CEOBaIKHyMtqa0kuIlX8FrzPf0aTK3WJ_07PFiXV8w1uBWZp8HgNtnW-ZCcWcCc3oIjKLZX8afdnsgZIVtmiy-O4ZiBHAWlXsx3HPV21PtdACrECSilo15MPw/s220/n607783893_467597_4154.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3761776372224414205.post-7426668806981517606</id><published>2010-10-07T19:40:00.000-07:00</published><updated>2010-10-07T20:24:41.090-07:00</updated><title type='text'>Call For Web Standard</title><content type='html'>&lt;p&gt;Developing native apps is a pain. Yes, you have the luxury of fixed screen dimensions and access to hardware features that may not be available elsewhere, but when you&#39;re done, you have an app that only works on one platform.&lt;/p&gt;

&lt;p&gt;Web apps, on the other hand, work on a lot more platforms straight out of the box. The performance may not be the greatest, but the technology is advancing at breakneck speed.&lt;/p&gt;

&lt;p&gt;The single largest drawback of web apps is working with files. The browser has no access to the filesystem, which makes sense in a lot of ways, but I&#39;m surprised that this hasn&#39;t been addressed more thoroughly.&lt;/p&gt;

&lt;p&gt;What we need is a new web standard and API for remote filesystems. Unlike the popular storage solutions like Dropbox, Box.net and MobileMe, this would be a remote hard-drive that you and your apps have access to. Apps would need to authenticate to access zones of your storage space; you could make some zones public and other zones publicly accessible via login.&lt;/p&gt;

&lt;p&gt;Again, this goes back to my idea of content control. I would far sooner use an app that writes to a simple, accessible file-type than one that uses a locked down and proprietary format. The same standard applies to web apps, but the current assumption is that your web-app files live and die with the service that created them. Even Google Docs, probably the best of it&#39;s breed, only operates ideally if you only access and edit the files through their service (downloading/uploading strips date, author, etc. ). Interoperability with other web apps? Well, that&#39;s just crazy talk!&lt;/p&gt;
&lt;h3&gt;Crazy!?!&lt;/h3&gt;
&lt;p&gt;But why is it crazy? What is it about web-services that makes us freely give up the rights to our data? If I downloaded a word processor that password encrypted every file so that only that app could read it, I certainly wouldn&#39;t use it! But we are so blinded by the sharing and publishing features of these apps that we throw interoperability and future-proofing out the window.&lt;/p&gt;

&lt;p&gt;In fact, I think there&#39;s some merit to this idea even in the desktop computing world. By zoning the filesystem, you could download and run apps in a sandboxed environment without worrying that they are messing with your files.&lt;/p&gt;

&lt;p&gt;Maybe something like this exists? It seems like the IETF group working on WebDAV has something like this in mind, but it still seems pretty system level, like Samba and afp.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogger.andyvanee.com/feeds/7426668806981517606/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blogger.andyvanee.com/2010/10/call-for-web-standard.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3761776372224414205/posts/default/7426668806981517606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3761776372224414205/posts/default/7426668806981517606'/><link rel='alternate' type='text/html' href='http://blogger.andyvanee.com/2010/10/call-for-web-standard.html' title='Call For Web Standard'/><author><name>Andy VanEe</name><uri>http://www.blogger.com/profile/09193663681631407738</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjNjkA6CEOBaIKHyMtqa0kuIlX8FrzPf0aTK3WJ_07PFiXV8w1uBWZp8HgNtnW-ZCcWcCc3oIjKLZX8afdnsgZIVtmiy-O4ZiBHAWlXsx3HPV21PtdACrECSilo15MPw/s220/n607783893_467597_4154.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3761776372224414205.post-5179458583425760555</id><published>2010-09-15T22:33:00.001-07:00</published><updated>2010-09-15T22:33:22.224-07:00</updated><title type='text'>Divide And Conquer</title><content type='html'>&lt;p&gt;School has started and I&#39;ve been very busy with projects, but haven&#39;t
had time to write. And in fact there&#39;s not a lot to write about. Sure,
I&#39;ve been working on a lot of cool stuff, but the big picture hasn&#39;t
come into focus.&lt;/p&gt;

&lt;p&gt;Along with getting a grip on the Adobe tools (Photoshop, Illustrator,
Flash/AS), there&#39;s the programming.&lt;/p&gt;

&lt;p&gt;One of the best insights that I&#39;ve got so far is how powerful pencil
and paper can be. Storyboarding, brainstorming and sketching use cases
are a great way to think about a project from all angles. If you sit
down and start coding without any clear direction, you are wasting a
lot of thought on design and abstract principles, when you need to
focus that brainpower on making &lt;em&gt;sensible code&lt;/em&gt;. Working this way, 
a lot of coding design patterns start to emerge before you even begin
coding.&lt;/p&gt;

&lt;p&gt;And maybe that&#39;s the one &lt;em&gt;bigger picture&lt;/em&gt; that is coming into view:
learning to divide and conquer is vital to any project, even if it&#39;s
just a one man show.&lt;/p&gt;
</content><link rel='replies' type='application/atom+xml' href='http://blogger.andyvanee.com/feeds/5179458583425760555/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blogger.andyvanee.com/2010/09/divide-and-conquer.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3761776372224414205/posts/default/5179458583425760555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3761776372224414205/posts/default/5179458583425760555'/><link rel='alternate' type='text/html' href='http://blogger.andyvanee.com/2010/09/divide-and-conquer.html' title='Divide And Conquer'/><author><name>Andy VanEe</name><uri>http://www.blogger.com/profile/09193663681631407738</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjNjkA6CEOBaIKHyMtqa0kuIlX8FrzPf0aTK3WJ_07PFiXV8w1uBWZp8HgNtnW-ZCcWcCc3oIjKLZX8afdnsgZIVtmiy-O4ZiBHAWlXsx3HPV21PtdACrECSilo15MPw/s220/n607783893_467597_4154.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3761776372224414205.post-8613652258910392164</id><published>2010-09-06T23:06:00.001-07:00</published><updated>2010-09-06T23:06:07.126-07:00</updated><title type='text'>Progress</title><content type='html'>&lt;p&gt;Technology is advancing, but is it really advancing as fast as it
seems?&lt;/p&gt;

&lt;p&gt;I might come across as a bit of a Luddite here, but I think that a lot
of the emerging software and hardware is ephemeral. And maybe that&#39;s
the way consumer electronics has to be. In the pre-dawn of the
internet, software was developed for aerospace, medicine and
government. It had to be robust, provable and enduring.&lt;/p&gt;

&lt;p&gt;The landscape has changed completely. Today, developers have embraced
the ephemeral nature of apps, iPads and cell phones. They&#39;re not
worried about building enduring artifacts and code that will be
solid and transparent for a generation.&lt;/p&gt;

&lt;p&gt;Perhaps hindsight is always myopic. There are plenty of criticisms
that judge the UNIX philosophy as being hackish; a virus that spread
the &lt;a href=&quot;http://en.wikipedia.org/wiki/Worse_is_better&quot;&gt;&quot;Worse is Better&quot;&lt;/a&gt;
philosophy of the the open source movement in general. But today, the
tools have been honed, pruned and documented so well that it all works
together as an organic whole. An organic whole that can be extended or
repurposed in ever new ways.&lt;/p&gt;

&lt;p&gt;It is this sense of growth that seems lacking in the software and
hardware landscape of today. Code and hardware now go into the
landfill in a few years by default. Without the organic usefulness of
command-line programs, standalone apps have no value beyond a very
short life-cycle.&lt;/p&gt;

&lt;p&gt;In a way, I think it&#39;s what had to happen. For most consumers, the
only interface that will get used is the one that is blatantly
obvious. They feel smart when the computer doesn&#39;t make them feel
stupid. And so user interface must appeal to the lowest common
denominator. I just feel a tiny shiver of remorse when I see the
amount of energy poured into technology that will be junked and
forgotten in months or years.&lt;/p&gt;
</content><link rel='replies' type='application/atom+xml' href='http://blogger.andyvanee.com/feeds/8613652258910392164/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blogger.andyvanee.com/2010/09/progress.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3761776372224414205/posts/default/8613652258910392164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3761776372224414205/posts/default/8613652258910392164'/><link rel='alternate' type='text/html' href='http://blogger.andyvanee.com/2010/09/progress.html' title='Progress'/><author><name>Andy VanEe</name><uri>http://www.blogger.com/profile/09193663681631407738</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjNjkA6CEOBaIKHyMtqa0kuIlX8FrzPf0aTK3WJ_07PFiXV8w1uBWZp8HgNtnW-ZCcWcCc3oIjKLZX8afdnsgZIVtmiy-O4ZiBHAWlXsx3HPV21PtdACrECSilo15MPw/s220/n607783893_467597_4154.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3761776372224414205.post-5144516467434299754</id><published>2010-09-04T14:15:00.001-07:00</published><updated>2010-09-04T14:15:18.455-07:00</updated><title type='text'>Git Whyto</title><content type='html'>&lt;p&gt;There are plenty of Git howto&#39;s on the internet, instead I think many
people need a Git &lt;em&gt;whyto&lt;/em&gt;. This guide is specifically focused on using
Git and GitHub for personal projects like writing, publishing and
creative work.&lt;/p&gt;

&lt;h4&gt;1. Complete Content Control&lt;/h4&gt;

&lt;p&gt;Git basically tracks any folder you tell it to. As you make changes to
files, you can commit the changes, roll back the changes or create
branches to try out alternate paths without messing with the main
branch. You then &lt;em&gt;push&lt;/em&gt; these changes to GitHub, which is simply a
mirror of the files on-disk.&lt;/p&gt;

&lt;h4&gt;2. Responsibile Collaboration&lt;/h4&gt;

&lt;p&gt;It&#39;s easy to add others as collaborators on your project, and easy to
see what, when and how much they changed. Any changes that you don&#39;t
agree with are easily rolled back to previous versions.&lt;/p&gt;

&lt;h4&gt;3. Tracking Intentions&lt;/h4&gt;

&lt;p&gt;Each time you commit a change, you write a short description of the
change. This helps you to get a sense of where the project is at, what
you were thinking, and what still needs work.&lt;/p&gt;

&lt;h4&gt;4. Scalable Projects&lt;/h4&gt;

&lt;p&gt;Personal projects start out small, but there is a chance one of them
may catch fire and become a big idea. Git works well with a single
contributor or thousands of contributors. And if the project takes
off, you will have the track record of the entire project right from
the first commit.&lt;/p&gt;

&lt;h4&gt;5. Universal Appeal&lt;/h4&gt;

&lt;p&gt;Git was designed for software projects but it really has many
compelling features for any project, from thesis to portfolio to
presentation. System-wide backup plans like Time Machine are great on
the large scale, Git allows the same kind of snapshots on a
per-folder basis but adds the ability to merge, clone and modify these
snapshots across many computers.&lt;/p&gt;

&lt;p&gt;One &lt;em&gt;slight&lt;/em&gt; problem with GitHub is that the free version only allows
public projects (view and download).&lt;/p&gt;

&lt;p&gt;If your project is private you can always just use git on your
personal computer, zip the folder and back it up to Google Docs. You
can then unzip the folder to any other computer and it will work with 
git exactly as it should. Or, alternatively, you could keep your
master on an external hard drive and merge changes from your laptop,
desktop and work computers without a problem.&lt;/p&gt;
</content><link rel='replies' type='application/atom+xml' href='http://blogger.andyvanee.com/feeds/5144516467434299754/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blogger.andyvanee.com/2010/09/git-whyto.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3761776372224414205/posts/default/5144516467434299754'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3761776372224414205/posts/default/5144516467434299754'/><link rel='alternate' type='text/html' href='http://blogger.andyvanee.com/2010/09/git-whyto.html' title='Git Whyto'/><author><name>Andy VanEe</name><uri>http://www.blogger.com/profile/09193663681631407738</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjNjkA6CEOBaIKHyMtqa0kuIlX8FrzPf0aTK3WJ_07PFiXV8w1uBWZp8HgNtnW-ZCcWcCc3oIjKLZX8afdnsgZIVtmiy-O4ZiBHAWlXsx3HPV21PtdACrECSilo15MPw/s220/n607783893_467597_4154.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3761776372224414205.post-4285408644096465940</id><published>2010-08-26T23:15:00.001-07:00</published><updated>2010-08-26T23:15:27.887-07:00</updated><title type='text'>Photo Archiving</title><content type='html'>&lt;p&gt;Backups and Archives are two different things. Ideally you should have
a good archiving system, and your backup would be a redundant copy of
that.&lt;/p&gt;

&lt;p&gt;In photography, a robust archiving system has between two and four copies of
any file. These copies are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Camera Card&lt;/li&gt;
&lt;li&gt;Working Copy&lt;/li&gt;
&lt;li&gt;Source&lt;/li&gt;
&lt;li&gt;Backup&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In this case, Source and Backup are read-only copies that are exact
duplicates of the file off the camera. The Backup copy should be on a
seperate physical media and ideally in a seperate physical location.&lt;/p&gt;

&lt;p&gt;The working copy is the one you edit, view and share. Once a file is
edited, it is important to make a Source and Backup copy of them as
well.&lt;/p&gt;

&lt;p&gt;It is good to view these copies as layers of mutability. &lt;/p&gt;

&lt;p&gt;&lt;b&gt;Camera Card:&lt;/b&gt; Changes the most. Every shooting session will create and
erase content from the card. &lt;/p&gt;

&lt;p&gt;&lt;b&gt;Working Copy:&lt;/b&gt; Can change with each editing session and these files 
can be safely erased once backups are made.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Source Copy:&lt;/b&gt; Should never change, it is the copy that is
accessed for viewing and making working copies. Any Source copy that is
deleted will be deleted forever.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Backup Copy:&lt;/b&gt; A mirror image of your Source copy. It will only be accessed 
in the rare event that your source copies are compromised (HD failure, fire, theft, etc.).&lt;/p&gt;

&lt;h3&gt;Implementation&lt;/h3&gt;

&lt;p&gt;The way to implement this structure will vary with the tools that you
are using. The first step might be to disable automatic importing when
you connect your camera. A better solution when connecting your camera is
to make source and backup copies immediately. &lt;/p&gt;

&lt;p&gt;If you are using DVD&#39;s as your Backup copy, it probably makes sense to 
use a USB thumb drive as an intermediate backup until you have enough 
to fill a DVD.&lt;/p&gt;

&lt;p&gt;It is important though to do regular integrity checks on your Backup
copies. You need to make sure that they aren&#39;t compromised without 
you knowing. If you use an external hard drive, and are command-line 
savvy you might do &quot;diff -r PictureSource/ PictureBackup/&quot; to compare 
the entire contents of the two folders. If you are using DVD&#39;s you 
either have to trust the quality of your media, or do periodic checks 
of your media.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Connect Camera.&lt;/li&gt;
&lt;li&gt;Make Source copy, check file count.&lt;/li&gt;
&lt;li&gt;Organize Source photos into events, deleting any &lt;em&gt;Absolute Garbage&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Make Backup copies, check file count.&lt;/li&gt;
&lt;li&gt;Make Working Copy from Source copy by importing into your editor of
choice.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Resist the temptation to organize your Source folder too much. Use only 
large, time-based, linear chunks. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;DO: Pete&#39;s Wedding, Reception, Saloman Bay Beach...&lt;/li&gt;
&lt;li&gt;DON&#39;T: Flowers, Trees, Close-ups, Saloman Bay Beach...&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The attentive reader will notice that the beach name is both in the do
and don&#39;t list. This is because in the first, I&#39;ve assumed that it was
an afternoon of shooting at the beach. In the second it is a couple
shots of that subject interspersed with shots of other subjects.&lt;/p&gt;

&lt;p&gt;On a related note, don&#39;t rename your files. The filenames from your
camera are a very good &lt;em&gt;shooting record&lt;/em&gt; of your camera. If you want
to attach descriptions and tags, do it in the file&#39;s metadata.&lt;/p&gt;

&lt;p&gt;Now you are ready to edit your files. A typical editing session might
look like this.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Make a Working Copy from Source copy (if it&#39;s not already done).&lt;/li&gt;
&lt;li&gt;Edit the file(s).&lt;/li&gt;
&lt;li&gt;Make a new source copy next to the original (eg. DSC1255-edit1.jpg)&lt;/li&gt;
&lt;li&gt;Make a Backup of what has changed in the Source.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you are using DVD&#39;s, you probably want to make a new folder for any
edited files, because the original folder might already be burned to
disc. Again, use the original name with a standard suffix (Pete&#39;s Wedding-edited).&lt;/p&gt;

&lt;h3&gt;Generalized Strategy&lt;/h3&gt;

&lt;p&gt;Photos are actually quite easy to organize, compared to the myriad of
other file types out there. But the systematic logic can be
transferred to other types of files as well.&lt;/p&gt;

&lt;p&gt;By being systematic, a lot of confusion can be avoided. It also makes
it possible to work toward automating the process entirely. But as the
number of file types increases, so does the tendency to use different
sorting methods or mixing methods.&lt;/p&gt;
</content><link rel='replies' type='application/atom+xml' href='http://blogger.andyvanee.com/feeds/4285408644096465940/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blogger.andyvanee.com/2010/08/photo-archiving.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3761776372224414205/posts/default/4285408644096465940'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3761776372224414205/posts/default/4285408644096465940'/><link rel='alternate' type='text/html' href='http://blogger.andyvanee.com/2010/08/photo-archiving.html' title='Photo Archiving'/><author><name>Andy VanEe</name><uri>http://www.blogger.com/profile/09193663681631407738</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjNjkA6CEOBaIKHyMtqa0kuIlX8FrzPf0aTK3WJ_07PFiXV8w1uBWZp8HgNtnW-ZCcWcCc3oIjKLZX8afdnsgZIVtmiy-O4ZiBHAWlXsx3HPV21PtdACrECSilo15MPw/s220/n607783893_467597_4154.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3761776372224414205.post-7104287370386299101</id><published>2010-08-26T23:09:00.001-07:00</published><updated>2010-08-26T23:09:54.773-07:00</updated><title type='text'>What The Internet Needs Now</title><content type='html'>&lt;p&gt;I&#39;ve been blogging a fair bit lately about metadata, archiving and
dealing with the masses of information that we produce and consume
today.&lt;/p&gt;

&lt;p&gt;It all comes from an idea that has been alternatively percolating and
distilling in my mind. It&#39;s the idea of stability.&lt;/p&gt;

&lt;p&gt;The internet age is highly energized and highly transient. The next
big thing comes along, is adopted by huge masses of people, and
is discarded in a matter of months or years. Examples abound, but my
working example is waning interest in Facebook. &lt;/p&gt;

&lt;p&gt;I recently printed a PDF of my entire facebook history because I&#39;m a 
dork and find that type of thing interesting. I just kept scrolling
down and clicking &quot;Older Posts&quot; until I reached the &quot;Andy joined
Facebook&quot; post. Here are my findings:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It&#39;s only a 36 page PDF (small font though). Though it would be
more.&lt;/li&gt;
&lt;li&gt;I joined in June 2007.&lt;/li&gt;
&lt;li&gt;My first friend is someone I haven&#39;t spoken to since.&lt;/li&gt;
&lt;li&gt;My first status update is still one of my favorite quotes: &quot;The
chief enemy of creativity is good taste. - Pablo Picasso&quot;&lt;/li&gt;
&lt;li&gt;I was really into &quot;Graffiti&quot; in the early days. I printed those off
too.&lt;/li&gt;
&lt;li&gt;I &quot;connected&quot; with many people that I had forgotten about for years.
Then promtly forgot about them again! Some I genuinely want to keep
in touch with though, so that&#39;s good.&lt;/li&gt;
&lt;li&gt;I wish there was a graphic scale of friend numbers. I think it would
resemble a logarithmic curve, rapidly rising, but plateauing at
around 220.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Okay, it&#39;s a silly game, but I find it alarming that we invest so much
time into something that is probably doomed to extinction or, more
likely, habituation. Facebook has become an e-mail replacement and 
when is the last time you were truly excited about e-mail?&lt;/p&gt;

&lt;p&gt;The tool has become stable: less exciting, but stable. The end result
is a tool that is far less robust and stable technically than the one
it replaced. E-mail may be getting archaic, but it is a completely
open and robust mechanism that is largely independant of any specific 
implementation. Facebook on the other hand is completely tied to
corporate interest and a locked down API.&lt;/p&gt;

&lt;p&gt;I think we must all make a conscious effort to aim for stability in 
the turbulent age we live in. To research the tools we use and what
the long term strategy is for them. And for those who are in the
business of creating the tools, to think long and hard about how
robust the system is in the long term. Is a locked and site-specific
format necessary? (no, never!) Is your user policy going to limit the
long-term viability of the system?&lt;/p&gt;

&lt;p&gt;In the case of this blog, I&#39;ve made a conscious decision to keep
control of the content. The site is just the publishing medium, the
actual product, for me, is just a folder of plain-text files on my hard
drive in chronological order. It may not look flashy with
fixed-width fonts and markdown formatting, but it&#39;s simple, stable and
guaranteed to work long into the future.&lt;/p&gt;
</content><link rel='replies' type='application/atom+xml' href='http://blogger.andyvanee.com/feeds/7104287370386299101/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blogger.andyvanee.com/2010/08/what-internet-needs-now.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3761776372224414205/posts/default/7104287370386299101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3761776372224414205/posts/default/7104287370386299101'/><link rel='alternate' type='text/html' href='http://blogger.andyvanee.com/2010/08/what-internet-needs-now.html' title='What The Internet Needs Now'/><author><name>Andy VanEe</name><uri>http://www.blogger.com/profile/09193663681631407738</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjNjkA6CEOBaIKHyMtqa0kuIlX8FrzPf0aTK3WJ_07PFiXV8w1uBWZp8HgNtnW-ZCcWcCc3oIjKLZX8afdnsgZIVtmiy-O4ZiBHAWlXsx3HPV21PtdACrECSilo15MPw/s220/n607783893_467597_4154.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3761776372224414205.post-4952441295601828251</id><published>2010-08-24T13:51:00.001-07:00</published><updated>2010-08-24T13:52:06.239-07:00</updated><title type='text'>Auto Metadata</title><content type='html'>&lt;p&gt;One interesting part of the weekend photographic seminar I just got
back from was the emphasis on metadata.&lt;/p&gt;

&lt;p&gt;It&#39;s important to take great photos, but it&#39;s just as important to
know how you got those results. In the days of film, A photographer
would keep a shooting log, recording aperature, speed, lens, etc. A 
decent digital camera will record all that information for you as long
as you know where to look for it.&lt;/p&gt;

&lt;p&gt;Photography is one of the best examples of how useful metadata can be.
The reason it is so useful is that it is unambiguous and immutable.
Any metadata that has these qualities is easy to work with.&lt;/p&gt;

&lt;h3&gt;Pure Metadata&lt;/h3&gt;

&lt;p&gt;This is the simplest kind of metadata to work with and often the most
useful. It usually has a direct connection to something tangible and
concrete. Some types of &lt;em&gt;pure&lt;/em&gt; metadata:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;File size&lt;/li&gt;
&lt;li&gt;File Attributes (resolution, color space)&lt;/li&gt;
&lt;li&gt;Physical Settings (ISO, aperature, shutter speed)&lt;/li&gt;
&lt;li&gt;Date*&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Dates are very useful but only if they are relevant. If the date is
not the actual shooting date it is actually less help than no date at
all. This can happen with downloaded files or files that are saved
to a new location.&lt;/p&gt;

&lt;h3&gt;Impure Metadata&lt;/h3&gt;

&lt;p&gt;File names are probably the least valuable indexing tool out there.
They don&#39;t have to have any relevance to the content, an identical
file can have different names and totally different files can have the
same name.&lt;/p&gt;

&lt;p&gt;Tags are good, but I don&#39;t find them as useful as they could be.
Again, there isn&#39;t necessarily any correlation with the content, there
is no standard set of tags or naming conventions enforced. But the
primary reason it doesn&#39;t work for me is that it&#39;s a manual process.
Any metadata that isn&#39;t automatically applied to all content is too
much work.&lt;/p&gt;

&lt;p&gt;Folder heirarchies are actually metadata and we use them every day.
It&#39;s important to understand this when backing up or rearranging
files because the heirarchy probably has meaning that would be lost if
you moved those files. &lt;/p&gt;

&lt;p&gt;The biggest problem with impure metadata, like the one&#39;s I&#39;ve
mentioned, is they can be very hard to &lt;em&gt;normalize&lt;/em&gt;. There may be
information attached as file names, tags and folder structures but
it&#39;s all been manually assigned by what makes sense at the time. This 
manual metadata will always be very fragmented and incomplete.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogger.andyvanee.com/feeds/4952441295601828251/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blogger.andyvanee.com/2010/08/auto-meta.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3761776372224414205/posts/default/4952441295601828251'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3761776372224414205/posts/default/4952441295601828251'/><link rel='alternate' type='text/html' href='http://blogger.andyvanee.com/2010/08/auto-meta.html' title='Auto Metadata'/><author><name>Andy VanEe</name><uri>http://www.blogger.com/profile/09193663681631407738</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjNjkA6CEOBaIKHyMtqa0kuIlX8FrzPf0aTK3WJ_07PFiXV8w1uBWZp8HgNtnW-ZCcWcCc3oIjKLZX8afdnsgZIVtmiy-O4ZiBHAWlXsx3HPV21PtdACrECSilo15MPw/s220/n607783893_467597_4154.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3761776372224414205.post-8639984031704796923</id><published>2010-08-21T22:42:00.000-07:00</published><updated>2010-08-21T22:57:44.481-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Photography"/><title type='text'>Meota Summer Photographic Seminar</title><content type='html'>&lt;p&gt;Just finishing up the weekend photographic seminar at the lake. Got some good shots and some good practice at composition, lighting and rhythm.&lt;/p&gt;

&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLnuleuK15yx-8GBwJWqEZ7EaVjHaoElu9hhK0kwjW1WLTB52quTdHQ0shg_mAP_U3yPbOBzHz0CjE2iFOhMbLk1EwKRPyQ3h392-aZwPLAOJuICHn7HGlO5a4Rdl5t0oCGDpy2UQp5n3e/s1600/MeotaSmall5.jpg&quot;&gt;&lt;img style=&quot;margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 240px; height: 320px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLnuleuK15yx-8GBwJWqEZ7EaVjHaoElu9hhK0kwjW1WLTB52quTdHQ0shg_mAP_U3yPbOBzHz0CjE2iFOhMbLk1EwKRPyQ3h392-aZwPLAOJuICHn7HGlO5a4Rdl5t0oCGDpy2UQp5n3e/s320/MeotaSmall5.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5508108624524730210&quot; /&gt;&lt;/a&gt;
&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhISlH3dPLc3zuWM0xnLBBm86agjJ2AakYfiTXTfbdg6rL4MWBOKn_XRGNeF4MNNQGT8YurczDQFw5-qgXwlyafDkn3zs6yY0Kp-TH5oazPFkA4AuXASKVX_nWIUBIhkcqx5QBxSFEYPK1e/s1600/MeotaSmall4.jpg&quot;&gt;&lt;img style=&quot;margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 240px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhISlH3dPLc3zuWM0xnLBBm86agjJ2AakYfiTXTfbdg6rL4MWBOKn_XRGNeF4MNNQGT8YurczDQFw5-qgXwlyafDkn3zs6yY0Kp-TH5oazPFkA4AuXASKVX_nWIUBIhkcqx5QBxSFEYPK1e/s320/MeotaSmall4.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5508108615030936274&quot; /&gt;&lt;/a&gt;
&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgA85mS6ERdv4OQ6_NQJ91GMI8VgxXg-28yvZzC0WFRPHXNEHqlmWKI6ulmZmNO4LQqRN4ukI2z-rKTwZyYupRmBacoTCE-DI0jC_oaf504HJmKzOhr-OUBwtcidV2wUgGT-FEVK6ti8kGr/s1600/MeotaSmall3.jpg&quot;&gt;&lt;img style=&quot;margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 240px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgA85mS6ERdv4OQ6_NQJ91GMI8VgxXg-28yvZzC0WFRPHXNEHqlmWKI6ulmZmNO4LQqRN4ukI2z-rKTwZyYupRmBacoTCE-DI0jC_oaf504HJmKzOhr-OUBwtcidV2wUgGT-FEVK6ti8kGr/s320/MeotaSmall3.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5508108606163306594&quot; /&gt;&lt;/a&gt;
&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo5kYge9sCfSPGKriuxCqjyxCw0wkhmb8rxxA6VOK7vN-nVqUsSfcuZOsiLtc4dQYZUskgitIGZgru149C8Q8oikXyDcOB7x_JM5eFsOc5ml89H1uIzcHRKx39wBBZ6868ynxyuS_265J-/s1600/MeotaSmall2.jpg&quot;&gt;&lt;img style=&quot;margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 180px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo5kYge9sCfSPGKriuxCqjyxCw0wkhmb8rxxA6VOK7vN-nVqUsSfcuZOsiLtc4dQYZUskgitIGZgru149C8Q8oikXyDcOB7x_JM5eFsOc5ml89H1uIzcHRKx39wBBZ6868ynxyuS_265J-/s320/MeotaSmall2.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5508108604024077570&quot; /&gt;&lt;/a&gt;
&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJ2Aiq5hjnDPDdua8n9MdZ13eslhhiPd9ueK9sx3KpuKVBvCoN4NFRYRHchaLVtUt8TLo8iphTky2G44xEjbALPEwBQPqPcRJxwu9ii2oMAAbG-rPA9W8tq1-HSH-U8rB2IanBuCkW0CSP/s1600/MeotaSmall1.jpg&quot;&gt;&lt;img style=&quot;margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 240px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJ2Aiq5hjnDPDdua8n9MdZ13eslhhiPd9ueK9sx3KpuKVBvCoN4NFRYRHchaLVtUt8TLo8iphTky2G44xEjbALPEwBQPqPcRJxwu9ii2oMAAbG-rPA9W8tq1-HSH-U8rB2IanBuCkW0CSP/s320/MeotaSmall1.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5508108597350327666&quot; /&gt;&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogger.andyvanee.com/feeds/8639984031704796923/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blogger.andyvanee.com/2010/08/meota-summer-photographic-seminar.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3761776372224414205/posts/default/8639984031704796923'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3761776372224414205/posts/default/8639984031704796923'/><link rel='alternate' type='text/html' href='http://blogger.andyvanee.com/2010/08/meota-summer-photographic-seminar.html' title='Meota Summer Photographic Seminar'/><author><name>Andy VanEe</name><uri>http://www.blogger.com/profile/09193663681631407738</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjNjkA6CEOBaIKHyMtqa0kuIlX8FrzPf0aTK3WJ_07PFiXV8w1uBWZp8HgNtnW-ZCcWcCc3oIjKLZX8afdnsgZIVtmiy-O4ZiBHAWlXsx3HPV21PtdACrECSilo15MPw/s220/n607783893_467597_4154.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLnuleuK15yx-8GBwJWqEZ7EaVjHaoElu9hhK0kwjW1WLTB52quTdHQ0shg_mAP_U3yPbOBzHz0CjE2iFOhMbLk1EwKRPyQ3h392-aZwPLAOJuICHn7HGlO5a4Rdl5t0oCGDpy2UQp5n3e/s72-c/MeotaSmall5.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3761776372224414205.post-6623399797335101554</id><published>2010-08-11T14:11:00.001-07:00</published><updated>2010-08-11T14:15:24.442-07:00</updated><title type='text'>Chaotic Data</title><content type='html'>&lt;p&gt;Data is chaotic. Our attempts to tame it are largely attempts at dehumanizing
ourselves. Here&#39;s a transcript of a piece of cardboard on my Grandfathers wall:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt; -------------------------
|                         |
|  WALLET    LIST         |
|            ------       |
|   EARS                  |
|             CANE        |
|  WATCH                  |
|                         |
|   SWIM                  |
|                         |
|_________________________|
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Even by typing it here, I am imposing a fair bit more order than the original
had. The original was written with a Sharpie and, although it was very legible,
the intent and structure was &lt;em&gt;difficult to parse&lt;/em&gt;. &quot;List&quot; may or may not have
been the title or one of the items to remember. &quot;Ears&quot;, I assume, meant his
hearing aid. All the items seemed like a general checklist for leaving the house
until &quot;Swim&quot;, which makes the list seem very specific to a certain day, or day
of the week. He has had this list posted by the door for quite some time.&lt;/p&gt;

&lt;p&gt;Grandpa&#39;s list was not very Search Engine Optimized, but he didn&#39;t seem to
bothered by the shortcoming.&lt;/p&gt;

&lt;p&gt;This list has a few other interesting qualities that don&#39;t transfer well to the
digital domain: &lt;/p&gt;

&lt;p&gt;&lt;ol&gt;&lt;li&gt;It&#39;s taped to the door.
   Location and size mean a lot in the physical world.&lt;/li&gt;
&lt;li&gt;It has no definite structure.
   Anything could be added or crossed off the list with ease.&lt;/li&gt;
&lt;li&gt;It&#39;s author is obvious.
   The handwriting is an echo of the mind of the author.&lt;/li&gt;
&lt;/ol&gt;
&lt;/p&gt;
&lt;p&gt;My point is not that my Grandpa has a habit of making strange artifacts, my
point is that we are more unique, creative and human when we&#39;re not forced to
order our data along the way. &lt;/p&gt;

&lt;p&gt;Our attempts to structure and control our data are effectively dehumanizing us. Yes,
parsing the messy world of human language and thought is not a simple task for
computer systems. It is much easier to build rules and frameworks and force
humans to fit their ideas into them; to meet the computer halfway. This has a
few effects:
&lt;ol&gt;&lt;li&gt;it allows the less creative minds to be efficiently less
creative and feel organized&lt;/li&gt;&lt;li&gt;it encourages independant thinkers to
constantly sabotage the system for entertainment&lt;/li&gt;&lt;li&gt;it erodes the capacity
for beautiful, unstructured and creative enterprises.&lt;/li&gt;&lt;/ol&gt;&lt;/p&gt;

&lt;p&gt;I think we too often forget the distinction between the technologies that are
built for enterprise and those built for personal use. This is probably because 
all of the tools are built for enterprise. All of them. The ones that aren&#39;t are
garbage. Web2.0 or 3.0 or whatever, only really make sense for businesses and
consumers. Not for &lt;em&gt;people&lt;/em&gt;.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogger.andyvanee.com/feeds/6623399797335101554/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blogger.andyvanee.com/2010/08/chaotic-data.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3761776372224414205/posts/default/6623399797335101554'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3761776372224414205/posts/default/6623399797335101554'/><link rel='alternate' type='text/html' href='http://blogger.andyvanee.com/2010/08/chaotic-data.html' title='Chaotic Data'/><author><name>Andy VanEe</name><uri>http://www.blogger.com/profile/09193663681631407738</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjNjkA6CEOBaIKHyMtqa0kuIlX8FrzPf0aTK3WJ_07PFiXV8w1uBWZp8HgNtnW-ZCcWcCc3oIjKLZX8afdnsgZIVtmiy-O4ZiBHAWlXsx3HPV21PtdACrECSilo15MPw/s220/n607783893_467597_4154.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3761776372224414205.post-4693295566217684623</id><published>2010-08-09T09:44:00.001-07:00</published><updated>2010-08-09T09:45:35.166-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Productivity"/><title type='text'>Champions Of Order</title><content type='html'>&lt;p&gt;Software Engineers assume that your data can be ordered logically. This
assumption is built in to the file system. They assume that it&#39;s an easy task,
but that it&#39;s best left to the user. Better than imposing an order that doesn&#39;t
make sense for some users. &lt;/p&gt;

&lt;p&gt;But the software engineers are wrong and here&#39;s why:&lt;/p&gt;

&lt;h3&gt;Case Study: Plain Text Library&lt;/h3&gt;

&lt;p&gt;This is the simplest of all systems to represent digitally. All the items are
in the same format, each is a distinct entity. So, you start ordering your 
items by Author into a heirarchy. The index itself is also an item, but not 
like the other items, so you decide to put it at the top of the heirarchy.&lt;/p&gt;

&lt;p&gt;It is simple and unambiguous. But, like all libraries, there will come a day
when you want to extend it a bit. You might want to add a scientific paper, a
scientific journal, a DVD box-set or an untitled and anonymous poem. You might want to
seperate fiction from non-fiction or keep a commentary together with it&#39;s source. 
At every step, you must decide how to incorporate these new elements and 
whatever decision you make must be applied unerringly in the future.&lt;/p&gt;

&lt;p&gt;From the start, the heirarchy must be robust enough to handle any future
additions. The end result - it never works. It&#39;s hard enough for libraries with
full-time staff, training and documented processes to keep things in order. The
average computer user has no chance of making a logical heirarchy that will make
sense now or into the future.&lt;/p&gt;
</content><link rel='replies' type='application/atom+xml' href='http://blogger.andyvanee.com/feeds/4693295566217684623/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blogger.andyvanee.com/2010/08/champions-of-order.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3761776372224414205/posts/default/4693295566217684623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3761776372224414205/posts/default/4693295566217684623'/><link rel='alternate' type='text/html' href='http://blogger.andyvanee.com/2010/08/champions-of-order.html' title='Champions Of Order'/><author><name>Andy VanEe</name><uri>http://www.blogger.com/profile/09193663681631407738</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjNjkA6CEOBaIKHyMtqa0kuIlX8FrzPf0aTK3WJ_07PFiXV8w1uBWZp8HgNtnW-ZCcWcCc3oIjKLZX8afdnsgZIVtmiy-O4ZiBHAWlXsx3HPV21PtdACrECSilo15MPw/s220/n607783893_467597_4154.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3761776372224414205.post-4655558995860459269</id><published>2010-07-31T23:15:00.001-07:00</published><updated>2010-07-31T23:16:05.679-07:00</updated><title type='text'>UNIX and the Emerging Web</title><content type='html'>&lt;p&gt;After reading &quot;The Art Of UNIX Programming&quot; again, it&#39;s got me thinking about the
nature of the technological explosion that has happened since the
quaint days of mainframes and text-based consoles.&lt;/p&gt;

&lt;p&gt;The two ideas that these legendary computer scientists cared greatly about and
seem to be dissolving today are &lt;em&gt;ownership&lt;/em&gt; and &lt;em&gt;simple formats&lt;/em&gt;.&lt;/p&gt;

&lt;h4&gt;Ownership&lt;/h4&gt;

&lt;p&gt;Web-based services take a certain level of trust. The user gives control of
their data to a service provider &lt;em&gt;in trust&lt;/em&gt;. By doing so, there is a subtle
loss of control by the user. We end up with bits of content all over the web
that may or may not be accessible or editable by us.&lt;/p&gt;

&lt;p&gt;There has been some recent development to build a unified &quot;user space&quot; like
OpenID, but in my alternate history of the internet, user profiles would have
expanded beyond the workstation into a worldwide user space. Up until now, the
user space was determined by email accounts, but with the shifting landscape of
email services this was not really a practical solution. &lt;/p&gt;

&lt;p&gt;In my alternate history, instead of email accounts, user profile would be
generated like IP addresses, and could be linked to email accounts or any
other service. Maybe this just seems too &lt;em&gt;big brother&lt;/em&gt; for the average user. It
would enable much easier tracking of the web services and content that is linked
to your profile. I think this would be incredibly convenient for managing your
online history; the services you&#39;ve used and the content you&#39;ve generated.&lt;/p&gt;

&lt;h4&gt;Simple Formats&lt;/h4&gt;

&lt;p&gt;In the UNIX days, plain text was the format of choice for almost anything.
Today, raw emails remain more-or-less human readable, but that&#39;s about it. Every
new web service and application introduces their own formats and interfaces.&lt;/p&gt;

&lt;p&gt;Maybe I&#39;m just dreaming, but I think that with some work, text formats could
work in the context of most popular web services. Twitter, for example, is
simply a collection of text notes with the date as metadata. So why not
integrate it with the desktop workflow?&lt;/p&gt;

&lt;p&gt;The reason is that web browsers have been designed to be very isolated from the
desktop, and the only way to break this isolation is with downloadable formats
or task-specific applications that can bridge the gap. Again, email clients are
the classic example of a task specic application that grabs a stream of
information with a secret handshake and delivers content to the user.&lt;/p&gt;

&lt;p&gt;What I envision here is a two-way RSS folder using a universal keychain and
managed with something like &lt;a href=&quot;http://git-scm.com/&quot;&gt;Git&lt;/a&gt;. But what this requires
is that the web service and browser be given read/write access to the folder. I
think this model is fairly incompatible with the current state of web
technology.&lt;/p&gt;

&lt;h4&gt;Summary&lt;/h4&gt;

&lt;p&gt;In some ways, I think that the values of the UNIX crowd are coming full circle
with emerging web trends. &lt;a href=&quot;http://www.readwriteweb.com/&quot;&gt;ReadWriteWeb&lt;/a&gt; has been
blogging for years about the potential of a web that&#39;s as easy to write as it is
to read. 
&lt;a href=&quot;http://www.readwriteweb.com/archives/beyond_social_web_internet_of_things.php&quot;&gt;This post&lt;/a&gt;
 is a good summary of emerging trends like structured data. But I think that to
really acheive this flexibility, internet and desktop architecture needs to
adapt and build robust standards to allow it to happen.&lt;/p&gt;

&lt;p&gt;The problem isn&#39;t access to services, it&#39;s the completely sandboxed environment
of the web browser. If we truly want to see the potential of web applications
and services, we need a way to let the web in.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogger.andyvanee.com/feeds/4655558995860459269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blogger.andyvanee.com/2010/07/unixandtheemergingweb_31.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3761776372224414205/posts/default/4655558995860459269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3761776372224414205/posts/default/4655558995860459269'/><link rel='alternate' type='text/html' href='http://blogger.andyvanee.com/2010/07/unixandtheemergingweb_31.html' title='UNIX and the Emerging Web'/><author><name>Andy VanEe</name><uri>http://www.blogger.com/profile/09193663681631407738</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjNjkA6CEOBaIKHyMtqa0kuIlX8FrzPf0aTK3WJ_07PFiXV8w1uBWZp8HgNtnW-ZCcWcCc3oIjKLZX8afdnsgZIVtmiy-O4ZiBHAWlXsx3HPV21PtdACrECSilo15MPw/s220/n607783893_467597_4154.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3761776372224414205.post-8201364449132656679</id><published>2010-07-21T10:29:00.001-07:00</published><updated>2010-07-21T10:56:45.869-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Browsers"/><category scheme="http://www.blogger.com/atom/ns#" term="interesting"/><title type='text'>Browser Review: Arora</title><content type='html'>&lt;p&gt;The Browser War is an ongoing battle with no obvious winners, although there is a
seemingly never ending stream of competitors.&lt;/p&gt;

&lt;p&gt;The big players at the moment seem to be converging on their basic feature set
while edging out their opponents in a certain area. Firefox has extensibility,
Chrome has speed, Safari has stability, Opera has security, and IE has users 
(yes, IE bashing is mandatory in any browser debate!).&lt;/p&gt;

&lt;p&gt;Beyond these, there is an interesting subset of purpose built browsers:
&lt;a href=&quot;&quot; title=&quot;http://flock.com/&quot;&gt;Flock&lt;/a&gt; does social browsing in an interesting way. 
&lt;a href=&quot;http://www.seamonkey-project.org/&quot;&gt;Sea Monkey&lt;/a&gt; includes many tools specific to
developers and advanced users. &lt;a href=&quot;http://www.dillo.org/&quot;&gt;Dillo&lt;/a&gt; boasts an
extremely small footprint and fast loading.&lt;/p&gt;
&lt;h3&gt;Arora&lt;/h3&gt;
&lt;p&gt;But the new browser I&#39;ve been testing lately is
&lt;a href=&quot;http://code.google.com/p/arora/&quot;&gt;Arora&lt;/a&gt;. It is still a very immature version,
but I think some of the features are really well done. First of all, it looks
really nice on Mac. This may seem like a silly comment, but most apps that have
been developed with a &quot;cross-platform&quot; toolkit come out looking like cheap
knockoffs with cartoon icons and ugly screen proportions. Even Chrome, with it&#39;s
oh-so-clever tab bar and Firefox with it&#39;s monster icons. This is fine for
Linux, which doesn&#39;t have clearly established UI conventions, but for Mac
development: don&#39;t break the rules unless you have good reason.&lt;/p&gt;

&lt;p&gt;In this sense, Arora does it right. Not that they use Mac icons, but they are
minimalistic and clear, and the layout doesn&#39;t add visual clutter or break
established conventions. It doesn&#39;t shout &quot;Look at this groundbreaking layout!&quot;,
and that&#39;s a good thing as far as I&#39;m concerned. It let&#39;s you focus on the task
at hand.&lt;/p&gt;

&lt;p&gt;I downloaded the .10.1 version which had some serious bugs on the Mac: many SSL
errors, no two-finger scrolling. But this is an alpha version so I gave it the
benefit of the doubt. I installed the Qt SDK and built .10.2 from source and now
it works great. Not really for the faint of heart, so hopefully there will be a
Mac binary update soon.&lt;/p&gt;
&lt;h3&gt;Give me the Keyboard!&lt;/h3&gt;
&lt;p&gt;The first shock was that it was very keyboard friendly. This is like a +5 million 
points for me. The way it works is that when you&#39;re on a site, if you press the
Command key all the links get letter popups beside them. You press the key and
it goes to the link. How cool is that! Generally, all the links get letters
based on the first letter in the link name, so if a site&#39;s top bar has links
named &quot;Home&quot;, &quot;Reviews&quot; and &quot;Downloads&quot;, these will be mapped to the keys H, R
and D. All other keyboard shortcuts work as you would expect on a Mac.&lt;/p&gt;

&lt;p&gt;These guys have done their homework when it comes to keyboard accessibility. The only
exception is using F11 for fullscreen, my macbook has F11 mapped to Volume-DN
and fn-F11 mapped to Expose. Not a big deal, considering the wealth of things
that they got right, even compared to the big browsers. For example, Cmd-L puts
the cursor in the Location bar and Cmd-K jumps to the Search bar. In Safari, you
have to Cmd-L to the location and then tab to the search for keyboard only
input. Yes, it might be a small thing, but it&#39;s good attention to detail.&lt;/p&gt;

&lt;p&gt;So far, there&#39;s really nothing keeping me from using this as my main browser,
which is an amazing feat considering how lightweight and early in development it
is. Page loading is fast and application loading is the fastest of any
full-featured browser I&#39;ve used. It renders with qt-webkit, which was a bit
rocky to begin with, but has come a long way in a short time.&lt;/p&gt;

&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiUziHHrony2CizyjqwfWp1L5P9f_qxG-nxzd2ecDxaETtwsFQFLXcgY_oC1geGYHtqM3gntN07CgaXcP2JFTexybgQye0NOqemNd-8q8zz-9EXCUNeuVf6_0fHfLL4D9RybsNfJZ6X9hq/s1600/Picture+6.png&quot;&gt;&lt;img style=&quot;cursor:pointer; cursor:hand;width: 320px; height: 275px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiUziHHrony2CizyjqwfWp1L5P9f_qxG-nxzd2ecDxaETtwsFQFLXcgY_oC1geGYHtqM3gntN07CgaXcP2JFTexybgQye0NOqemNd-8q8zz-9EXCUNeuVf6_0fHfLL4D9RybsNfJZ6X9hq/s320/Picture+6.png&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5496415530914386370&quot; /&gt;&lt;/a&gt;
&lt;p&gt;And you gotta love the polar bear on the globe icon!&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogger.andyvanee.com/feeds/8201364449132656679/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blogger.andyvanee.com/2010/07/browser-review-arora.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3761776372224414205/posts/default/8201364449132656679'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3761776372224414205/posts/default/8201364449132656679'/><link rel='alternate' type='text/html' href='http://blogger.andyvanee.com/2010/07/browser-review-arora.html' title='Browser Review: Arora'/><author><name>Andy VanEe</name><uri>http://www.blogger.com/profile/09193663681631407738</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjNjkA6CEOBaIKHyMtqa0kuIlX8FrzPf0aTK3WJ_07PFiXV8w1uBWZp8HgNtnW-ZCcWcCc3oIjKLZX8afdnsgZIVtmiy-O4ZiBHAWlXsx3HPV21PtdACrECSilo15MPw/s220/n607783893_467597_4154.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiUziHHrony2CizyjqwfWp1L5P9f_qxG-nxzd2ecDxaETtwsFQFLXcgY_oC1geGYHtqM3gntN07CgaXcP2JFTexybgQye0NOqemNd-8q8zz-9EXCUNeuVf6_0fHfLL4D9RybsNfJZ6X9hq/s72-c/Picture+6.png" height="72" width="72"/><thr:total>1</thr:total></entry></feed>