<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CUYNRX8zeip7ImA9WhVUFko.&quot;"><id>tag:blogger.com,1999:blog-946587890062083577</id><updated>2012-05-22T17:53:14.182+10:00</updated><title>Never Read Passively</title><subtitle type="html">Document everything obsessively. Synthesize new ideas constantly. Never read passively. &lt;small&gt;&lt;a href="http://www.neverreadpassively.com/2008/03/how-to-think.html"&gt;[?]&lt;/a&gt;&lt;/small&gt;</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://www.neverreadpassively.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://www.neverreadpassively.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/946587890062083577/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Jason</name><uri>http://www.blogger.com/profile/11283603094324243247</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://3.bp.blogspot.com/_Nm8O-3rVrk0/Sk_iFShcXkI/AAAAAAAAAFc/cUqZBpgrQ9Y/S220/Snapshot.png" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>161</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/NeverReadPassively" /><feedburner:info uri="neverreadpassively" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;AkQCSXY_eCp7ImA9WhVQEEg.&quot;"><id>tag:blogger.com,1999:blog-946587890062083577.post-8034700340579022882</id><published>2012-03-30T08:59:00.001+11:00</published><updated>2012-03-30T08:59:28.840+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-30T08:59:28.840+11:00</app:edited><title>Mobile Game Engines</title><content type="html">&lt;div style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;I'm launching&amp;nbsp;&lt;a href="http://mobilegameengines.com/" style="color: #1155cc;" target="_blank"&gt;http://MobileGameEngines.com&lt;/a&gt;&amp;nbsp;today.&amp;nbsp;It's a simple site that lets anyone compare between all known iPhone, Android and HTML5 game engines.&lt;br /&gt;
&lt;br /&gt;
I had the problem of trying to decide which game engine to choose for an iPhone game project and wrote about my efforts in a blog post in 2009: &lt;a href="http://www.neverreadpassively.com/2009/03/review-of-iphone-3d-engines.html"&gt;Review of 3D Engines for the iPhone&lt;/a&gt;&amp;nbsp;I noted that many others had been through the same pain and had written a similar blog post and figured someone would come along and address this problem.&lt;br /&gt;
&lt;br /&gt;
It has been a few years and the number of posts on quora and stackoverflow asking "&lt;b&gt;what is the best iphone game engine&lt;/b&gt;" and "&lt;b&gt;what is the best android game engine&lt;/b&gt;" continue to be posted. I decided to make a site to really nail the answer to this question, the result was &lt;a href="http://mobilegameengines.com/"&gt;MobileGameEngines.com&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I've been in contact with the majority of the game engine developers listed on the site to ensure all the information is correct and useful. We are sitting on 65 game engines listed and still growing as more are uncovered.&lt;br /&gt;
&lt;br /&gt;
Take a look and let me know what you think.&lt;br /&gt;
Pass the link on to anyone you think might be experiencing this pain.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/946587890062083577-8034700340579022882?l=www.neverreadpassively.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NeverReadPassively/~4/dyi9V6toWDk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.neverreadpassively.com/feeds/8034700340579022882/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=946587890062083577&amp;postID=8034700340579022882" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/946587890062083577/posts/default/8034700340579022882?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/946587890062083577/posts/default/8034700340579022882?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NeverReadPassively/~3/dyi9V6toWDk/mobile-game-engines.html" title="Mobile Game Engines" /><author><name>Jason</name><uri>http://www.blogger.com/profile/11283603094324243247</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://3.bp.blogspot.com/_Nm8O-3rVrk0/Sk_iFShcXkI/AAAAAAAAAFc/cUqZBpgrQ9Y/S220/Snapshot.png" /></author><thr:total>2</thr:total><feedburner:origLink>http://www.neverreadpassively.com/2012/03/mobile-game-engines.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEEBR385fSp7ImA9WhVSEEw.&quot;"><id>tag:blogger.com,1999:blog-946587890062083577.post-2528997300790843563</id><published>2012-03-06T17:50:00.000+11:00</published><updated>2012-03-06T17:50:56.125+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-06T17:50:56.125+11:00</app:edited><title>DailyAIFeed: Your daily dose of Artificial Intelligence news</title><content type="html">I've been running a little email list for about a year called DailyAIFeed. I started it because I got sick of checking my RSS and email each morning, preferring to just check email.&lt;br /&gt;
&lt;br /&gt;
I've recently cleaned it up a little and opened it up to general consumption at &lt;a href="http://www.dailyaifeed.com/"&gt;www.DailyAIFeed.com&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
The list provides a daily email of the top interesting news in the fields of Artificial Intelligence, Machine Learning, Natural Language Processing, Computational Intelligence, Infographics and Data Science.&lt;br /&gt;
&lt;br /&gt;
You can see examples of the types of messages on the blog at &lt;a href="http://blog.dailyaifeed.com/"&gt;blog.DailyAIFeed.com&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Go and check it out, and if you have any suggestions on how to further improve it, please get in touch.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/946587890062083577-2528997300790843563?l=www.neverreadpassively.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NeverReadPassively/~4/xMXxtmFSjCc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.neverreadpassively.com/feeds/2528997300790843563/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=946587890062083577&amp;postID=2528997300790843563" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/946587890062083577/posts/default/2528997300790843563?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/946587890062083577/posts/default/2528997300790843563?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NeverReadPassively/~3/xMXxtmFSjCc/dailyaifeed-your-daily-dose-of.html" title="DailyAIFeed: Your daily dose of Artificial Intelligence news" /><author><name>Jason</name><uri>http://www.blogger.com/profile/11283603094324243247</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://3.bp.blogspot.com/_Nm8O-3rVrk0/Sk_iFShcXkI/AAAAAAAAAFc/cUqZBpgrQ9Y/S220/Snapshot.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.neverreadpassively.com/2012/03/dailyaifeed-your-daily-dose-of.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUEHR3s-fip7ImA9WhRaE0k.&quot;"><id>tag:blogger.com,1999:blog-946587890062083577.post-6795724066566645068</id><published>2012-02-16T09:02:00.001+11:00</published><updated>2012-02-16T09:07:16.556+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-16T09:07:16.556+11:00</app:edited><title>Hosted Data Analysis Project Workflow</title><content type="html">I have been thinking a lot about the&amp;nbsp;previously&amp;nbsp;mentioned "&lt;a href="http://www.neverreadpassively.com/2012/02/data-analysis-project-management-saas.html"&gt;Data Analysis Project Management: SaaS&lt;/a&gt;".&lt;br /&gt;
&lt;br /&gt;
Such a system could be focused on the project management side, say a &lt;a href="http://basecamphq.com/"&gt;Basecamp&lt;/a&gt; for Data Analysis projects. But I think it could something different, something more. I think there are pain points in the data analysis workflow that could be 1) systematized and 2) automated. I also suspect that large data platforms from IBM and Oracle may offer solutions, but I question whether the any such solutions exist for smaller scale/cost projects. I think there is an opportunity for a&amp;nbsp;&lt;b&gt;Hosted Data Analysis Project Workflow&lt;/b&gt; system.&lt;br /&gt;
&lt;br /&gt;
I've been trying to think hard about possible pain points, and here's what I got:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Revision control - keeping track of changes to project files.&lt;/li&gt;
&lt;li&gt;Research Journal - keeping track of what questions have been asked and what findings have been made.&lt;/li&gt;
&lt;li&gt;Reproducibility - ensuring there is a&amp;nbsp;recipe&amp;nbsp;to recreate a past result.&lt;/li&gt;
&lt;li&gt;Collaboration - working with others on a&amp;nbsp;particular&amp;nbsp;on all aspects of the analysis workflow.&lt;/li&gt;
&lt;li&gt;Interpreting&amp;nbsp;Data - Looking at tables and graphs and&amp;nbsp;generating&amp;nbsp;hypotheses&amp;nbsp;to go and test.&lt;/li&gt;
&lt;li&gt;Executing Models - configuring, running, tuning models.&lt;/li&gt;
&lt;li&gt;Verifying Models - assessing models on test and verification datasets.&lt;/li&gt;
&lt;li&gt;Blending Models - comparing and combining model outputs.&lt;/li&gt;
&lt;/ul&gt;I have also been thinking about solutions in the market that address specific pain points. This is much harder - the Internet is a big place. Here is what I could put together quickly:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://www-958.ibm.com/software/data/cognos/manyeyes/"&gt;Many Eyes&lt;/a&gt; -&amp;nbsp;Collaborate on interpretation from visualization.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developers.google.com/prediction/"&gt;Google Predict&lt;/a&gt; -&amp;nbsp;Hosted models and data&lt;/li&gt;
&lt;li&gt;&lt;a href="http://github.com/"&gt;Github&lt;/a&gt; (and similar) - Hosted project files, forking, collaboration&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.kaggle.com/"&gt;Kaggle&lt;/a&gt;, &lt;a href="http://tunedit.org/"&gt;TunedIT&lt;/a&gt; -&amp;nbsp;Data competitions, competitive community around problems,&amp;nbsp;Data Spec Work / R&amp;amp;D Outsourcing.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://stats.stackexchange.com/"&gt;Cross Validated&lt;/a&gt; -&amp;nbsp;Q/A community around statistics and machine learning&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.google.com/publicdata/directory"&gt;Google data explorer&lt;/a&gt; -&amp;nbsp;Visualization and interpretation public datasets&lt;/li&gt;
&lt;/ul&gt;Do we need a system that combines all or some of these together? Why can't this problem be solved with existing systems, why isn't it such?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/946587890062083577-6795724066566645068?l=www.neverreadpassively.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NeverReadPassively/~4/vNskrIL6948" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.neverreadpassively.com/feeds/6795724066566645068/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=946587890062083577&amp;postID=6795724066566645068" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/946587890062083577/posts/default/6795724066566645068?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/946587890062083577/posts/default/6795724066566645068?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NeverReadPassively/~3/vNskrIL6948/hosted-data-analysis-project-workflow.html" title="Hosted Data Analysis Project Workflow" /><author><name>Jason</name><uri>http://www.blogger.com/profile/11283603094324243247</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://3.bp.blogspot.com/_Nm8O-3rVrk0/Sk_iFShcXkI/AAAAAAAAAFc/cUqZBpgrQ9Y/S220/Snapshot.png" /></author><thr:total>4</thr:total><feedburner:origLink>http://www.neverreadpassively.com/2012/02/hosted-data-analysis-project-workflow.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0IAQX89eSp7ImA9WhRaEkg.&quot;"><id>tag:blogger.com,1999:blog-946587890062083577.post-7826265134450139063</id><published>2012-02-15T07:00:00.053+11:00</published><updated>2012-02-15T08:39:00.161+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-15T08:39:00.161+11:00</app:edited><title>Data Analysis Project Management: SaaS</title><content type="html">The idea for developing a&amp;nbsp;Data Analysis Workflow SaaS as been percolating in my brain for a few days.&lt;br /&gt;
&lt;br /&gt;
I read a post on the Kaggle HHP forum entitled "&lt;a href="http://www.heritagehealthprize.com/c/hhp/forums/t/805/project-management-software-for-data-analysis"&gt;Project Management software for Data Analysis&lt;/a&gt;" by&amp;nbsp;&lt;a href="http://www.linkedin.com/pub/dan-becker/34/9a8/945"&gt;Dan Becker&lt;/a&gt; and it got me thinking. With almost every data or machine learning competition I enter, I end up solving the wrong problem. Rather than solving the problem presented by the competition, I solve the problem of automating and optimizing my work flow by writing scripts and software.&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
It makes sense, it's what I do for a living. I write and maintain software. Why not expose the problem for what it is and solve it. The real question: &lt;b&gt;Is there a market for such a solution?&lt;/b&gt; and secondarily, &lt;b&gt;What features would the software have?&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;My ad hoc competition-wise solutions focus on result&amp;nbsp;reproducibility&amp;nbsp;(good science), summary statistics,&amp;nbsp;visualization, research journal, generating webpages of experiments performed and above all, automation. I figure that the more I can&amp;nbsp;automate, the faster I can test ideas and the higher my velocity will be on the problem of the competition. Except, most of my effort goes into the automation rather than ideas for the subject data.&lt;br /&gt;
&lt;br /&gt;
Whether I build the software or not, it is a good research topic to consider.&lt;br /&gt;
&lt;br /&gt;
The aforementioned forum post lists some interesting resources, specifically:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://dryworkflow.r-forge.r-project.org/"&gt;dryWorkflow project&lt;/a&gt;&amp;nbsp;Don't Repeat Yourself Workflow for efficient data analysis. Focused on R.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.johnmyleswhite.com/notebook/2010/08/26/projecttemplate/"&gt;ProjectTemplate&lt;/a&gt;: Automates the creation of new statistical analysis projects. &lt;a href="http://projecttemplate.net/"&gt;Project Webpage&lt;/a&gt;, &lt;a href="https://github.com/johnmyleswhite/ProjectTemplate"&gt;Github project&lt;/a&gt;, &lt;a href="http://cran.r-project.org/web/packages/ProjectTemplate/index.html"&gt;CRAN project&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://cran.r-project.org/web/views/ReproducibleResearch.html"&gt;CRAN Task View: Reproducible Research&lt;/a&gt; with some interesting ideas.&lt;/li&gt;
&lt;li&gt;Book: &lt;a href="http://www.stata.com/bookstore/wdaus.html"&gt;The Workflow of Data Analysis Using Stata&lt;/a&gt;,&amp;nbsp;J. Scott Long, 2009&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;Some google'ing resulted in some additional useful links:&amp;nbsp;&lt;a href="http://stats.stackexchange.com/questions/2910/how-to-efficiently-manage-a-statistical-analysis-project"&gt;How to efficiently manage a statistical analysis project?&lt;/a&gt; on &lt;a href="http://stats.stackexchange.com/"&gt;CrossValidated&lt;/a&gt; which provides some excellent answers and great links to go off and read. Other CV links that were pretty useful included &lt;a href="http://stats.stackexchange.com/questions/645/best-way-to-aggregate-and-analyze-data"&gt;Best Way to Aggregate and Analyze Data&lt;/a&gt; and &lt;a href="http://stats.stackexchange.com/questions/22697/what-is-a-practically-good-data-analysis-process"&gt;What is a practically good data analysis process?&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I also came across&amp;nbsp;&lt;a href="http://www.emersonstatistics.com/dnlds/Analysis.pdf"&gt;Organizing Your Approach to a Data Analysis&lt;/a&gt; by &lt;a href="http://www.emersonstatistics.com/"&gt;Scott Emerson&lt;/a&gt; which provides some excellent motivating questions.&lt;br /&gt;
&lt;br /&gt;
Know any other good resources?&lt;br /&gt;
&lt;br /&gt;
I'm keen for feedback, should such a software (web-based) platform exist in the world?&lt;/div&gt;&lt;div&gt;Are their data analysis people that would use this, pay for this, beyond competition patrons?&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/946587890062083577-7826265134450139063?l=www.neverreadpassively.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NeverReadPassively/~4/WHFCOSc5B98" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.neverreadpassively.com/feeds/7826265134450139063/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=946587890062083577&amp;postID=7826265134450139063" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/946587890062083577/posts/default/7826265134450139063?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/946587890062083577/posts/default/7826265134450139063?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NeverReadPassively/~3/WHFCOSc5B98/data-analysis-project-management-saas.html" title="Data Analysis Project Management: SaaS" /><author><name>Jason</name><uri>http://www.blogger.com/profile/11283603094324243247</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://3.bp.blogspot.com/_Nm8O-3rVrk0/Sk_iFShcXkI/AAAAAAAAAFc/cUqZBpgrQ9Y/S220/Snapshot.png" /></author><thr:total>1</thr:total><feedburner:origLink>http://www.neverreadpassively.com/2012/02/data-analysis-project-management-saas.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkYFRHs9cSp7ImA9WhRaEUU.&quot;"><id>tag:blogger.com,1999:blog-946587890062083577.post-8499974008315208195</id><published>2012-02-14T13:55:00.000+11:00</published><updated>2012-02-14T13:55:15.569+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-14T13:55:15.569+11:00</app:edited><title>Preview of Clever Algorithms: Statistical Machine Learning Recipes</title><content type="html">I am&amp;nbsp;feverishness&amp;nbsp;working to complete a first draft of my next book in the Clever Algorithm series:&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;&lt;b&gt;Clever Algorithms: Statistical Machine Learning Recipes&lt;/b&gt;&lt;/blockquote&gt;You can take a&amp;nbsp;&lt;a href="http://www.cleveralgorithms.com/machinelearning/index.html"&gt;sneak&amp;nbsp;peek&lt;/a&gt; at some early chapters online. I am developing the project in plain view on github, &lt;a href="https://github.com/jbrownlee/CleverAlgorithmsMachineLearning"&gt;take a look&lt;/a&gt; at my source R files or LaTeX files if you're into that sort of thing.&lt;br /&gt;
&lt;br /&gt;
The book will provide a treatment of the field of Machine Learning much like the &lt;a href="http://www.cleveralgorithms.com/nature-inspired/index.html"&gt;first book&lt;/a&gt; provided a treatment of the field of Computational Intelligence and Biologically Inspired Computation.&lt;br /&gt;
&lt;br /&gt;
Here is a preliminary blurb:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;Implementing an Machine Learning algorithms is difficult. Algorithm descriptions may be incomplete, inconsistent, and distributed across a number of papers, chapters and even websites. This can result in varied interpretations of algorithms, undue attrition of algorithms, and ultimately bad science.&lt;br /&gt;
This book is an effort to address these issues by providing a handbook of algorithmic recipes drawn from the field of Machine Learning, described in a complete, consistent, and centralized manner. These standardized descriptions were carefully designed to be accessible, usable, and understandable.&lt;br /&gt;
An encyclopedic algorithm reference, this book is intended for research scientists, engineers, students, and interested amateurs. Each algorithm description provides a working code example in R.&lt;/blockquote&gt;&lt;br /&gt;
I have started to distribute chapters to copy editors and technical editors. I'm also trying hard to nail down the table of contents and specifically which algorithms will appear in the text.&lt;br /&gt;
&lt;br /&gt;
If you know anyone who might be interested in technical editing or any editing, get into contact: &lt;a href="mailto:jasonb@CleverAlgorithms.com"&gt;jasonb@CleverAlgorithms.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/946587890062083577-8499974008315208195?l=www.neverreadpassively.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NeverReadPassively/~4/SRSFlY3U-6A" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.neverreadpassively.com/feeds/8499974008315208195/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=946587890062083577&amp;postID=8499974008315208195" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/946587890062083577/posts/default/8499974008315208195?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/946587890062083577/posts/default/8499974008315208195?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NeverReadPassively/~3/SRSFlY3U-6A/preview-of-clever-algorithms.html" title="Preview of Clever Algorithms: Statistical Machine Learning Recipes" /><author><name>Jason</name><uri>http://www.blogger.com/profile/11283603094324243247</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://3.bp.blogspot.com/_Nm8O-3rVrk0/Sk_iFShcXkI/AAAAAAAAAFc/cUqZBpgrQ9Y/S220/Snapshot.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.neverreadpassively.com/2012/02/preview-of-clever-algorithms.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEcMQX87cCp7ImA9WhZWFk8.&quot;"><id>tag:blogger.com,1999:blog-946587890062083577.post-2114637774976749145</id><published>2011-05-17T19:03:00.009+10:00</published><updated>2011-05-17T19:54:40.108+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-17T19:54:40.108+10:00</app:edited><title>House Price Regression: Vermont South, Melbourne</title><content type="html">While looking for a house I maintained statistics on the main suburbs we were visiting, and more specifically, on the houses we looked at.&lt;br /&gt;
&lt;br /&gt;
Each house we visited was about 4 bed rooms and generally had the same kinds of attributes - attributes we thought we wanted in a house. For each house we visited, I recorded the address, size of land in square meters, date of sale, sale type (auction, private), asking price, sale price, and other assorted details. An additional contrived measure was the driving distance to main shops reported by Google Maps, in kilometers.&lt;br /&gt;
&lt;br /&gt;
I also supplemented the dataset with additional matching houses in the area when data was available. I found prices were sometimes available from the auction results, although in other cases I had to call to find out, and.or scourer the web.&lt;br /&gt;
&lt;br /&gt;
Rather than let this information go to waste, I thought I would share some of the collected data. This post provides data I collected for the Melbourne suburb of Vermont South.&lt;br /&gt;
&lt;br /&gt;
The following graph simply shows sale price by date, quite boring.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/--HY4mHxmDNk/TdIEfLAIw-I/AAAAAAAAAMY/JPAAsJzIokU/s1600/chart_1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/--HY4mHxmDNk/TdIEfLAIw-I/AAAAAAAAAMY/JPAAsJzIokU/s1600/chart_1.png" /&gt;&lt;/a&gt;&lt;/div&gt;The following graph shows the sale price by land size in square meters.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-k4_MZNYqFYE/TdIEgBSKIxI/AAAAAAAAAMg/HzAssjg9mns/s1600/chart_3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-k4_MZNYqFYE/TdIEgBSKIxI/AAAAAAAAAMg/HzAssjg9mns/s1600/chart_3.png" /&gt;&lt;/a&gt;&lt;/div&gt;The following graph shows the sale price by distance to a specific set of shops in kilometers.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-VItHcVH7IUE/TdIEfjWD59I/AAAAAAAAAMc/XGjzOGhW59E/s1600/chart_2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-VItHcVH7IUE/TdIEfjWD59I/AAAAAAAAAMc/XGjzOGhW59E/s1600/chart_2.png" /&gt;&lt;/a&gt;&lt;/div&gt;I found the data generally useful for plugging in new places and using simple linear regression to help answer questions about expected price at auction or private sale.&lt;br /&gt;
&lt;br /&gt;
Some of this data may be available for purchase from various retail data providers, but I found collecting and entering the data myself made it a lot more personal and gave me some additional focus when inspecting properties and talking to agents about trends.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/946587890062083577-2114637774976749145?l=www.neverreadpassively.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NeverReadPassively/~4/-M8eMUlBBbI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.neverreadpassively.com/feeds/2114637774976749145/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=946587890062083577&amp;postID=2114637774976749145" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/946587890062083577/posts/default/2114637774976749145?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/946587890062083577/posts/default/2114637774976749145?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NeverReadPassively/~3/-M8eMUlBBbI/house-price-regression-vermont-south.html" title="House Price Regression: Vermont South, Melbourne" /><author><name>Jason</name><uri>http://www.blogger.com/profile/11283603094324243247</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://3.bp.blogspot.com/_Nm8O-3rVrk0/Sk_iFShcXkI/AAAAAAAAAFc/cUqZBpgrQ9Y/S220/Snapshot.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/--HY4mHxmDNk/TdIEfLAIw-I/AAAAAAAAAMY/JPAAsJzIokU/s72-c/chart_1.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.neverreadpassively.com/2011/05/house-price-regression-vermont-south.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE8ER3syeip7ImA9WhZWFU4.&quot;"><id>tag:blogger.com,1999:blog-946587890062083577.post-7839626716015578877</id><published>2011-05-16T18:00:00.030+10:00</published><updated>2011-05-16T18:00:06.592+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-16T18:00:06.592+10:00</app:edited><title>So, we bought a house</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-JkrJ__N2V2g/TdDL4sT0C2I/AAAAAAAAAMU/8Ms5tbyQX38/s1600/house.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://3.bp.blogspot.com/-JkrJ__N2V2g/TdDL4sT0C2I/AAAAAAAAAMU/8Ms5tbyQX38/s320/house.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;So we finally bought a house. We've been looking on and off for about 12 months although &lt;a href="http://www.neverreadpassively.com/2011/02/new-project-buy-house.html"&gt;things got serious&lt;/a&gt; about 3 months ago.&lt;br /&gt;
&lt;br /&gt;
We first looked at the place we bought last Saturday, and walking in the door I knew it was a strong contender. We looked at three other places that day, and they all paled in comparison.&lt;br /&gt;
&lt;br /&gt;
The place had been passed in at auction nearly three months before, and we were told that initially the vendors expectations were too high. We saw this as a good opportunity to negotiate and try to broker a good deal. The market had been slumped for a few months and the early figures for the quarter had &lt;a href="http://www.heraldsun.com.au/businessold/melbourne-house-prices-drop-25-per-cent-in-march/story-e6frfh4f-1226048304456"&gt;indicated a ~2.5% drop&lt;/a&gt; in median house price for the city.&lt;br /&gt;
&lt;br /&gt;
We did another inspection on the following Tuesday and enlisted all of the troops (extended family) to give the place a good once over. We then sat down and signed a formal offer. It was rejected. We upped the offer $5K and it was accepted, although at the insistence of my wife we made the offer contingent on the outcome of a builders inspection.&lt;br /&gt;
&lt;br /&gt;
A found a company in the yellow pages and had the inspection done on the last day of the 3 day cooling off period. The building and pest report was incredibly detailed, providing photos and a room-by-room summary, inside and out. We learned a lot about the types of preventative maintenance the place will need over the next 5-10 years, and more importantly, we learned that the upstairs balcony had some major structural problems.&lt;br /&gt;
&lt;br /&gt;
The report said that the wood used was popular in the decade that the balcony was built and was known to rot unless property treated. Rather than expecting the vendor to return the balcony to new condition, we made an offer to split the difference, deducting half of the cost of the repair from our offer.&lt;br /&gt;
&lt;br /&gt;
All of the negotiating occurred on the last day of cooling off period, a Friday. I had my wife on one had, adamant that she didn't want to pay a thing to have the balcony fixed, and the agent on the other hand threatening to open the property for inspection on the next day. I really liked the place and I was feeling totally strung out (to say the least).&lt;br /&gt;
&lt;br /&gt;
We managed to broker a deal in the end and initial the final amendment on the Saturday, one week from our first inspection. With previous auctions and negotiations, I tried to remain emotionless, time was on our side and we could wait for a deal. I really liked this place and it was beginning to dawn on me that our remaining time to find a place (before the baby came) had shrunk to a matter of a few months. We're both happy we finally got there and have high hopes for turning the property into our home.&lt;br /&gt;
&lt;br /&gt;
We learned a lot throughout the process. My analysis of &lt;a href="http://www.neverreadpassively.com/2011/02/melbourne-house-price-trends.html"&gt;median house prices&lt;/a&gt;, &lt;a href="http://www.neverreadpassively.com/2011/02/buying-house-suburb-selection.html"&gt;suburb selection&lt;/a&gt;, &lt;a href="http://www.neverreadpassively.com/2011/02/suburb-analysis-crime-statistics.html"&gt;crime rates&lt;/a&gt;, and even &lt;a href="http://www.neverreadpassively.com/2011/02/suburb-analysis-travel-time-tofrom-work.html"&gt;travel time studies&lt;/a&gt; months ago were interesting, although in the end did not directly affect the outcome. Even the detailed suburb house price regressions I was building up were not used, as we ended up buying in a completing different suburb, inspecting the house on a whim.&lt;br /&gt;
&lt;br /&gt;
I was told early on that buying a home is different from buying an investment, and it bit me in the end, because its emotional. If/when there is a next time, at least our expectations - that it is a long hard emotional roller coaster - will mean we'll be better prepared. Hopefully.&lt;br /&gt;
&lt;br /&gt;
Rather than letting them go to waste, I'll post some regression analysis for a selected suburb soon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/946587890062083577-7839626716015578877?l=www.neverreadpassively.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NeverReadPassively/~4/XMv7RdFg9dU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.neverreadpassively.com/feeds/7839626716015578877/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=946587890062083577&amp;postID=7839626716015578877" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/946587890062083577/posts/default/7839626716015578877?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/946587890062083577/posts/default/7839626716015578877?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NeverReadPassively/~3/XMv7RdFg9dU/so-we-bought-house.html" title="So, we bought a house" /><author><name>Jason</name><uri>http://www.blogger.com/profile/11283603094324243247</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://3.bp.blogspot.com/_Nm8O-3rVrk0/Sk_iFShcXkI/AAAAAAAAAFc/cUqZBpgrQ9Y/S220/Snapshot.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-JkrJ__N2V2g/TdDL4sT0C2I/AAAAAAAAAMU/8Ms5tbyQX38/s72-c/house.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.neverreadpassively.com/2011/05/so-we-bought-house.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkcERHc8fSp7ImA9WhZXE0o.&quot;"><id>tag:blogger.com,1999:blog-946587890062083577.post-8778956601768206816</id><published>2011-05-03T07:00:00.028+10:00</published><updated>2011-05-03T07:00:05.975+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-03T07:00:05.975+10:00</app:edited><title>Quake AI Programming Book</title><content type="html">I intend to write a follow-up book to the &lt;a href="http://cleveralgorithms.com/"&gt;Nature-Inspired Clever Algorithms book&lt;/a&gt; on Machine Learning. I have a lot going on this year, so I was thinking of postponing it until 2012. If I do decided to go down this road, I was thinking of taking on a different project in 2011 that would be smaller in scope, less taxing, although still interesting and rewarding.&lt;br /&gt;
&lt;br /&gt;
I have been thinking of writing a book about the AI in the Quake series of computer games. I was thinking of either writing a book that analysed the Artificial Intelligence architecture in each game in the series, or analyze the AI in the bot modifications. Perhaps both. The book would walk through monster or bot case studies and describe how they fit together, think, and behave. Perhaps with small experiments and demonstrations along the way. The kind of book that would have captured me as a game programming hacker 15 years ago.&lt;br /&gt;
&lt;br /&gt;
In pondering this idea, I thought it prudent to explore other books written on or related to this idea. The following is a list of books that I found:&lt;br /&gt;
&lt;br /&gt;
Quake Series Programming Books&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/gp/product/193184156X/ref=as_li_tf_tl?ie=UTF8&amp;amp;tag=pensiveponder-20&amp;amp;linkCode=as2&amp;amp;camp=217145&amp;amp;creative=399349&amp;amp;creativeASIN=193184156X"&gt;Focus On Mod Programming in Quake III Arena&lt;/a&gt;, 2002&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/gp/product/0470037466/ref=as_li_tf_tl?ie=UTF8&amp;amp;tag=pensiveponder-20&amp;amp;linkCode=as2&amp;amp;camp=217145&amp;amp;creative=399349&amp;amp;creativeASIN=0470037466"&gt;Quake 4 Mods For Dummies&lt;/a&gt;, 2006&lt;/li&gt;
&lt;/ul&gt;Related Programming Books&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/gp/product/0672326922/ref=as_li_tf_tl?ie=UTF8&amp;amp;tag=pensiveponder-20&amp;amp;linkCode=as2&amp;amp;camp=217145&amp;amp;creative=399349&amp;amp;creativeASIN=0672326922"&gt;Mastering Unreal Technology: The Art of Level Design&lt;/a&gt;, 2004&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/gp/product/1598631489/ref=as_li_tf_tl?ie=UTF8&amp;amp;tag=pensiveponder-20&amp;amp;linkCode=as2&amp;amp;camp=217145&amp;amp;creative=399349&amp;amp;creativeASIN=1598631489"&gt;UnrealScript Game Programming All in One&lt;/a&gt;, 2006&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/gp/product/1598633465/ref=as_li_tf_tl?ie=UTF8&amp;amp;tag=pensiveponder-20&amp;amp;linkCode=as2&amp;amp;camp=217145&amp;amp;creative=399349&amp;amp;creativeASIN=1598633465"&gt;Unreal Tournament Game Programming for Teens&lt;/a&gt;, 2006&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/gp/product/1933097132/ref=as_li_tf_tl?ie=UTF8&amp;amp;tag=pensiveponder-20&amp;amp;linkCode=as2&amp;amp;camp=217145&amp;amp;creative=399349&amp;amp;creativeASIN=1933097132"&gt;Mapping and Modding Half Life 2 Complete&lt;/a&gt;, 2006&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/gp/product/0470096314/ref=as_li_tf_tl?ie=UTF8&amp;amp;tag=pensiveponder-20&amp;amp;linkCode=as2&amp;amp;camp=217145&amp;amp;creative=399349&amp;amp;creativeASIN=0470096314"&gt;Half Life 2 Mods For Dummies&lt;/a&gt;, 2007&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/gp/product/B000OZ0O2A/ref=as_li_tf_tl?ie=UTF8&amp;amp;tag=pensiveponder-20&amp;amp;linkCode=as2&amp;amp;camp=217145&amp;amp;creative=399349&amp;amp;creativeASIN=B000OZ0O2A"&gt;Advanced Source Level Design&lt;/a&gt;, 2007&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/gp/product/0672329913/ref=as_li_tf_tl?ie=UTF8&amp;amp;tag=pensiveponder-20&amp;amp;linkCode=as2&amp;amp;camp=217145&amp;amp;creative=399349&amp;amp;creativeASIN=0672329913"&gt;Mastering Unreal Technology, Volume I: Introduction to Level Design with Unreal Engine 3&lt;/a&gt;, 2009&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/gp/product/0672329921/ref=as_li_tf_tl?ie=UTF8&amp;amp;tag=pensiveponder-20&amp;amp;linkCode=as2&amp;amp;camp=217145&amp;amp;creative=399349&amp;amp;creativeASIN=0672329921"&gt;Mastering Unreal Technology, Volume II: Advanced Level Design Concepts with Unreal Engine 3&lt;/a&gt;, 2009&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/gp/product/1568814593/ref=as_li_tf_tl?ie=UTF8&amp;amp;tag=pensiveponder-20&amp;amp;linkCode=as2&amp;amp;camp=217145&amp;amp;creative=399349&amp;amp;creativeASIN=1568814593"&gt;Unreal Game Development&lt;/a&gt;, 2010&lt;/li&gt;
&lt;/ul&gt;These are by no means the cream of the crop of game AI programming, and there are in fact many level design books in there as well.&lt;br /&gt;
&lt;br /&gt;
All of these books are focused on teaching some form of programming or game development using an existing game as a medium. The advantage of the Quake series is that the source code is released under the GPL. The Unreal series and the Half-Life (Source Engine) series are not released as open source, although do provide access to some aspects of the source under restricted licence for the modding community.&lt;br /&gt;
&lt;br /&gt;
It is clear that there is interest/demand for books on game development based on the Unreal series, which makes a lot of sense given their &lt;a href="http://en.wikipedia.org/wiki/List_of_Unreal_Engine_games"&gt;general success&lt;/a&gt; in licencing the technology.&lt;br /&gt;
&lt;br /&gt;
Some concerns about tackling such a project include:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Interest: The games in the Quake series are old (10-15 years). The methods may be outdated, they may not be relevant to modern computer games, and it is more than likely that no one will care&lt;/li&gt;
&lt;li&gt;Low Barrier: It is more than likely that no one has undertaken such a project because the barrier is so low. One can simply read the code and understand what is happening, no analysis is necessary.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Copyright: Although the source code is released under the GPL, the game assets are not. One may have to acquire a licensed copy of the game to do any meaningful development. Additionally, my use of game screenshots may be restricted (fair use!?).&lt;/li&gt;
&lt;/ul&gt;There is some effort required to produce such a work. Getting each project setup may be involved, especially across the three main platforms (Windows, Mac, Linux). The work would be primarily analysis: reading source code, experimenting and communicating what is happening with diagrams and descriptions. This tinker-write cycle is slightly more relaxed than the deep research needed for each algorithm in a machine learning text.&lt;br /&gt;
&lt;br /&gt;
Is there interest in the market? Would you read or skim such a book?&lt;br /&gt;
Let me know what you think in a comment or &lt;a href="mailto:jason.brownlee05@gmail.com"&gt;email&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/946587890062083577-8778956601768206816?l=www.neverreadpassively.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NeverReadPassively/~4/nUti0Z9vodk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.neverreadpassively.com/feeds/8778956601768206816/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=946587890062083577&amp;postID=8778956601768206816" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/946587890062083577/posts/default/8778956601768206816?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/946587890062083577/posts/default/8778956601768206816?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NeverReadPassively/~3/nUti0Z9vodk/quake-ai-programming-book.html" title="Quake AI Programming Book" /><author><name>Jason</name><uri>http://www.blogger.com/profile/11283603094324243247</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://3.bp.blogspot.com/_Nm8O-3rVrk0/Sk_iFShcXkI/AAAAAAAAAFc/cUqZBpgrQ9Y/S220/Snapshot.png" /></author><thr:total>3</thr:total><feedburner:origLink>http://www.neverreadpassively.com/2011/05/quake-ai-programming-book.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUEERXg6eSp7ImA9WhZXEkU.&quot;"><id>tag:blogger.com,1999:blog-946587890062083577.post-8298848761142314480</id><published>2011-05-02T07:00:00.000+10:00</published><updated>2011-05-02T07:00:04.611+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-02T07:00:04.611+10:00</app:edited><title>The Little Taxonomist</title><content type="html">We are expecting our first child in a bunch of months and I have been thinking about all kinds of science experiments to perform on/with the bub. I had an idea last week for what I think is a cool little web app that allows a a parent and their child to&amp;nbsp;catalogue&amp;nbsp;the native species around their home and learn more about their local environment. I am referring to this idea as "&lt;i&gt;Little Taxonomist&lt;/i&gt;".&lt;br /&gt;
&lt;br /&gt;
I'll present the idea in the context of some stories:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Story #1&lt;/b&gt;&lt;br /&gt;
A father and son are curious about the plants and animals in and around their house and neighbourhood. In an effort to learn more, they decide to begin to catalogue the things they see in their backyard. They select a subject (say a flower, tree, or insect), photograph it, and note down a few descriptive phrases. They enter this information into a web application. The web application accepts the image and structured description and makes informed guesses (based on location and time of year and subjects collected by others) as to the exact species of the subject. The web application also suggests interesting subjects that are known or expected to exist in their area (probabilistically based on entries of other entries in the area), and some information about where they might be found, creating a context sensitive scavenger hunt. Slowly, a subject every few days, more on weekends, over weeks, they build up a catalogue of plants and animals in and around their home. Together they have learned more about the specifics of the suburban flora and fauna.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Story #2&lt;/b&gt;&lt;br /&gt;
A primary school class have a week or month long assignment that is a scavenger hunt of genera and/or species in the school ground. The class is split into pairs or small groups and allocated a flip camera (or equivalent single button point-and-shoot). They have a list of hints or requirements as well as blank pages, structured to capture basic taxonomic descriptions. Students return to the classroom and use the computer to copy the photos from the camera, drag them into the web application and add their descriptions. Students are awarded badges and points for the breadth and depth of species described, teams are ranked, and some indication of what other groups are finding is provided.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Vision&lt;/b&gt;&lt;br /&gt;
A web application for children to be completed in groups or with a guardian. The objective is to describe subjects in the local area (home or neighbourhood) and in so doing learn more about the local flora and fauna. The system encourages the collection of species by intelligently guessing based on brief descriptions and photos as to the actual known species. A gamaification layer is provided that includes badges, points, leaderboards, and similar extrinsic motivators. Additionally, the system uses the localized information in aggregate to suggest subjects to look for (to "collect"), and a probabilistic expectation that they can be spotted (you have a 90% chance of seeing a fruit bat between 5pm and 8pm by looking up). This probabilistic understating of what can be seen in the local area would be coupled with the gamification system, highlighting rare finds. The system would provide all data in aggregate (anonymize) allowing kids to explore what others are finding in their neighbourhood and the types of descriptions being used.&lt;br /&gt;
&lt;br /&gt;
The following are some mock screens I hacked together in Google Docs:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Mock: Add Subject&lt;/b&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-hOku7rz5eHE/Tbeb5e81X7I/AAAAAAAAAL8/E7dgUUOjRpI/s1600/a.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="232" src="http://4.bp.blogspot.com/-hOku7rz5eHE/Tbeb5e81X7I/AAAAAAAAAL8/E7dgUUOjRpI/s320/a.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;b&gt;Mock: List of Subjects&lt;/b&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-XgCDZiN8_3M/Tbeb5uvq3rI/AAAAAAAAAMA/qQLv8Zv6Gz8/s1600/b.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://4.bp.blogspot.com/-XgCDZiN8_3M/Tbeb5uvq3rI/AAAAAAAAAMA/qQLv8Zv6Gz8/s400/b.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Forget kids, I want to use this. There might be a general case for adults with smart phones.&lt;br /&gt;
&lt;br /&gt;
I am not sure whether I will build it yet, I figure it needs a 5-10 year old child to make it fun. I figure it could make money by selling some cheap cameras with a website subscription or maybe&amp;nbsp;targeted&amp;nbsp;advertising (kids+science).&lt;br /&gt;
&lt;br /&gt;
A friend pointed me to &lt;a href="http://www.projectnoah.org/"&gt;Project Noah&lt;/a&gt;, which is a similar idea, but not the same.&lt;br /&gt;
&lt;br /&gt;
I'm eager to hear what people think, seen anything like this? Would you use it yourself or with a child?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/946587890062083577-8298848761142314480?l=www.neverreadpassively.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NeverReadPassively/~4/HPfUzgA7ez4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.neverreadpassively.com/feeds/8298848761142314480/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=946587890062083577&amp;postID=8298848761142314480" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/946587890062083577/posts/default/8298848761142314480?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/946587890062083577/posts/default/8298848761142314480?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NeverReadPassively/~3/HPfUzgA7ez4/little-taxonomist.html" title="The Little Taxonomist" /><author><name>Jason</name><uri>http://www.blogger.com/profile/11283603094324243247</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://3.bp.blogspot.com/_Nm8O-3rVrk0/Sk_iFShcXkI/AAAAAAAAAFc/cUqZBpgrQ9Y/S220/Snapshot.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-hOku7rz5eHE/Tbeb5e81X7I/AAAAAAAAAL8/E7dgUUOjRpI/s72-c/a.jpg" height="72" width="72" /><thr:total>4</thr:total><feedburner:origLink>http://www.neverreadpassively.com/2011/05/little-taxonomist.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0MEQHo4fip7ImA9WhZXEk4.&quot;"><id>tag:blogger.com,1999:blog-946587890062083577.post-8447705266847547795</id><published>2011-05-01T16:30:00.000+10:00</published><updated>2011-05-01T16:30:01.436+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-01T16:30:01.436+10:00</app:edited><title>May Challenge: Touch-type Faster!</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-iVJzYMiHVdY/Tbku4figWEI/AAAAAAAAAMM/mYYtks-MN0k/s1600/keyboard.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="212" src="http://1.bp.blogspot.com/-iVJzYMiHVdY/Tbku4figWEI/AAAAAAAAAMM/mYYtks-MN0k/s320/keyboard.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;We learned touch-typing in high-school. I think we did it for two or three years. Nevertheless, I suck at touch-typing, and as a programmer it may be &lt;a href="http://www.codinghorror.com/blog/2008/11/we-are-typists-first-programmers-second.html"&gt;considered&amp;nbsp;embarrassing&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
I can type without looking at the keyboard, so technically, I touch-type all day long. What I don't do is type as I was taught was "correct". I think that as a consequence I am starting to get some wrist pain.&lt;br /&gt;
&lt;br /&gt;
Anyway, in the constant battlefield of self-improvement, I thought I would take the month of May as an opportunity to improve my touch typing and&amp;nbsp;hopeful&amp;nbsp;start typing "correctly" from the end of May onward in day-to-day computer interaction.&lt;br /&gt;
&lt;br /&gt;
The May Challenge is to perform one lesson in touch-typing each day and to measure a standard typing word count each day. Hopefully this word count and/or accuracy will improve by the end of the month and my&amp;nbsp;confidence&amp;nbsp;in correctly touch typing will also improve.&lt;br /&gt;
&lt;br /&gt;
At this stage, I believe I will use the free online service&amp;nbsp;&lt;a href="http://www.typingweb.com/"&gt;www.typingweb.com&lt;/a&gt;&amp;nbsp;because it provides lessons and ad word speed tests, and of course it's free. I just took a test using the "correct" home-row based method and scored: 18 WPM average, 23 WPM gross, and 96% accuracy. It would be interesting to see what my score would be with my unorthodox method - a bad idea, I suspect it may reinforce the bad method.&lt;br /&gt;
&lt;br /&gt;
Again, as with April, I will adopt a penalty-based approach to the challenge. For each day that I miss, I will have to donate $20 to an open source project of choice (not a .NET project as with last month). This is less relaxed (I support opensource, generally), because I am concerned that commitment required may mean that I miss a day or two here and here. We'll see. $20 a day is still a decent disincentive.&lt;br /&gt;
&lt;br /&gt;
I'll be sure to&amp;nbsp;summarize&amp;nbsp;progress at the end of the month.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;Image copyright&amp;nbsp;&lt;a href="http://www.flickr.com/photos/wouterverhelst/362538835/"&gt;Wouter Verhelst&lt;/a&gt;.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/946587890062083577-8447705266847547795?l=www.neverreadpassively.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NeverReadPassively/~4/pnXOmj2_tJo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.neverreadpassively.com/feeds/8447705266847547795/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=946587890062083577&amp;postID=8447705266847547795" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/946587890062083577/posts/default/8447705266847547795?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/946587890062083577/posts/default/8447705266847547795?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NeverReadPassively/~3/pnXOmj2_tJo/may-challenge-touch-type-faster.html" title="May Challenge: Touch-type Faster!" /><author><name>Jason</name><uri>http://www.blogger.com/profile/11283603094324243247</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://3.bp.blogspot.com/_Nm8O-3rVrk0/Sk_iFShcXkI/AAAAAAAAAFc/cUqZBpgrQ9Y/S220/Snapshot.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-iVJzYMiHVdY/Tbku4figWEI/AAAAAAAAAMM/mYYtks-MN0k/s72-c/keyboard.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.neverreadpassively.com/2011/05/may-challenge-touch-type-faster.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEQHSX0ycSp7ImA9WhZXEUw.&quot;"><id>tag:blogger.com,1999:blog-946587890062083577.post-3402660098341434182</id><published>2011-04-30T07:25:00.001+10:00</published><updated>2011-04-30T07:25:38.399+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-30T07:25:38.399+10:00</app:edited><title>April Challenge Over: Watch One Tech Video Every Day</title><content type="html">I set my self a &lt;a href="http://www.neverreadpassively.com/2011/04/april-challenge-watch-1-tech-video.html"&gt;challenge for April&lt;/a&gt; to watch one technical video every day throughout the month. My rationale was that if I could apply the same&amp;nbsp;discipline&amp;nbsp;that I use to discriminate what I eat to what media I consume, that it would have a beneficial effect. Sure, fluffy, but the challenge was measurable and the penalty for missing one day was a donation of $20 to a .NET opensource project.&lt;br /&gt;
&lt;br /&gt;
The month has come to and end and I did manage to watch one technical video each day, so no donations needed.&lt;br /&gt;
&lt;br /&gt;
I&amp;nbsp;intended&amp;nbsp;to spend most of the month watching university lectures and Google Tech Talks, which I mostly did. It became harder and harder towards the end of the month to find an hour+ to watch a tech talk. I ended up catching a quick (15 minute) TED talk instead. TED talks are good (some can be great), but they are so brief that my retention is poor, and so high-level that I finish thinking that I have not learned very much at all.&lt;br /&gt;
&lt;br /&gt;
The following image provides a breakdown of the sources for videos I watched. The "other" category includes random tech videos on youtube that do not fit into one of the other broader and popular categories.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-C28BsCcktsw/TbssDSLFqvI/AAAAAAAAAMQ/LahsDIoyX14/s1600/chart_1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-C28BsCcktsw/TbssDSLFqvI/AAAAAAAAAMQ/LahsDIoyX14/s1600/chart_1.png" /&gt;&lt;/a&gt;&lt;/div&gt;I enjoyed almost all videos. I ranked each with a real-valued scoring between 0 and 5 and provided my own description in a spreadsheet. Five real highlight videos (in no particular order) were as follows:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=H3YG-5f9kPU"&gt;Properties of Exoplanets&lt;/a&gt;:&amp;nbsp;Planet detection, Kepler, Nature of planets found so far (bad sound, but whatever!)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=QbTf2nE3Lbw"&gt;Brains, Meaning and Corpus Statistics&lt;/a&gt;:&amp;nbsp;Text statistics in, map of neural activity out!&lt;/li&gt;
&lt;li&gt;&lt;a href="http://media.kaggle.com/MelbURN.html"&gt;Getting in Shape for the Sport of Data &amp;nbsp;Science&lt;/a&gt;:&amp;nbsp;Tools for data mining competitions, intro. to random forests&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=dBnniua6-oM"&gt;Sugar: The Bitter Truth&lt;/a&gt;:&amp;nbsp;Sugar is bad for you, it is a poison&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=xLBvCB2kr4Q"&gt;"All Questions Answered" by Donald Knuth&lt;/a&gt;:&amp;nbsp;Q&amp;amp;A&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;I found that I read a lot less RSS feeds in my Google Reader. I also found that I consumed a lot less 'acquired' media in the form of US TV shows (selling the &lt;a href="http://www.neverreadpassively.com/2011/03/family-media-player.html"&gt;family media player&lt;/a&gt; helped here, no doubt).&lt;br /&gt;
&lt;br /&gt;
I had a good time with this challenge and will attempt to stick to it and record my progress in a spreadsheet.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/946587890062083577-3402660098341434182?l=www.neverreadpassively.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NeverReadPassively/~4/NwprK2suSFg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.neverreadpassively.com/feeds/3402660098341434182/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=946587890062083577&amp;postID=3402660098341434182" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/946587890062083577/posts/default/3402660098341434182?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/946587890062083577/posts/default/3402660098341434182?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NeverReadPassively/~3/NwprK2suSFg/april-challenge-over-one-tech-video.html" title="April Challenge Over: Watch One Tech Video Every Day" /><author><name>Jason</name><uri>http://www.blogger.com/profile/11283603094324243247</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://3.bp.blogspot.com/_Nm8O-3rVrk0/Sk_iFShcXkI/AAAAAAAAAFc/cUqZBpgrQ9Y/S220/Snapshot.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-C28BsCcktsw/TbssDSLFqvI/AAAAAAAAAMQ/LahsDIoyX14/s72-c/chart_1.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.neverreadpassively.com/2011/04/april-challenge-over-one-tech-video.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0cDSH44eSp7ImA9WhZXEE8.&quot;"><id>tag:blogger.com,1999:blog-946587890062083577.post-8696056937685546197</id><published>2011-04-29T07:00:00.113+10:00</published><updated>2011-04-29T07:11:19.031+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-29T07:11:19.031+10:00</app:edited><title>AIFeeds Part 4: Automating an AIFeed aggregator</title><content type="html">In &lt;a href="http://www.neverreadpassively.com/2011/04/aifeeds-part-1-artificial-intelligence.html"&gt;Part1&lt;/a&gt;, we prepared a large list of RSS feeds and filtered them down to something workable. In &lt;a href="http://www.neverreadpassively.com/2011/04/aifeeds-part-2-recent-ai-articles.html"&gt;Part2&lt;/a&gt;, we processed all of the articles in the feeds and presented posts from the last five days as a static RSS reader. In &lt;a href="http://www.neverreadpassively.com/2011/04/aifeeds-part-3-intelligently-filter-ai.html"&gt;Part3&lt;/a&gt; we used a number of JSON APIs for social networking website to&amp;nbsp;gauge&amp;nbsp;the popularity of articles and highlight those popular posts at the top of the page on our static reader.&lt;br /&gt;
&lt;br /&gt;
In this 4th and final post in the series we will explore different ways to disseminate the results of our filtering.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Step1: Send via Email&lt;/b&gt;&lt;br /&gt;
Last time in &lt;a href="http://www.neverreadpassively.com/2011/04/aifeeds-part-3-intelligently-filter-ai.html"&gt;Part3&lt;/a&gt; we ended up with a result that was quite passable. The scripts generated an HTML page that promoted popular AI, Data Mining, Machine Learning, etc. articles from the last 7 days, followed by a listing of all those other articles that, though were deemed to be less popular, may be of interest -&amp;nbsp;organized&amp;nbsp;by day.&amp;nbsp;A simple approach to disseminate the results of this script is to send an email. The objective here is to receive the&amp;nbsp;equivalent&amp;nbsp;of an AI-themed version of the most excellent &lt;a href="http://www.hackernewsletter.com/"&gt;Hacker Newsletter&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
I have a Google Gmail account and I assume most programmers do. The first step is to prepare a script that can generate an HTML email message and use the Gmail SMTP server to send the email. We are not focused on mass distribution here, just emailing the results to ourselves, at the moment, on demand. &lt;br /&gt;
&lt;br /&gt;
The built-in &lt;a href="http://www.ruby-doc.org/stdlib/libdoc/net/smtp/rdoc/classes/Net/SMTP.html"&gt;SMTP handling&lt;/a&gt; in the Ruby standard library more than meets our needs here. The Gmail SMTP details are also &lt;a href="http://mail.google.com/support/bin/answer.py?answer=13287"&gt;easily obtained&lt;/a&gt;. The result is a script with two simple functions: the first for building a standard SMTP message with support for text/html content (mimetype), and the second for connecting to the Gmail SMTP server and posting the email. The script provides a spot test that will ask for your Gmail credentials and use them to send you a hello world email. Easy as pie.&lt;br /&gt;
&lt;blockquote&gt;See &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;a href="https://github.com/jbrownlee/AIFeeds/blob/master/part4/sendemail.rb"&gt;sendemail.rb&lt;/a&gt;&lt;/span&gt;&lt;/blockquote&gt;See below for a screenshot of my Gmail inbox with the resulting test email.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-Fwu4nC8af6w/TbZ5daGRPOI/AAAAAAAAALw/6rxH9iAMfk8/s1600/Screen+shot+2011-04-26+at+5.50.24+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="239" src="http://1.bp.blogspot.com/-Fwu4nC8af6w/TbZ5daGRPOI/AAAAAAAAALw/6rxH9iAMfk8/s320/Screen+shot+2011-04-26+at+5.50.24+PM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;b&gt;Step 2: Cron Send Email&lt;/b&gt;&lt;br /&gt;
The next step is to prepare a script that can be executed each day, generate a summary of the AIFeed output and email it to you. The easiest way to do this on any Linux or Mac machine is with &lt;a href="http://en.wikipedia.org/wiki/Cron"&gt;cron&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
A variation of the &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;a href="https://github.com/jbrownlee/AIFeeds/blob/master/part3/listpopulardayarticles.rb"&gt;listpopulardayarticles.rb&lt;/a&gt;&lt;/span&gt; script from &lt;a href="http://www.neverreadpassively.com/2011/04/aifeeds-part-3-intelligently-filter-ai.html"&gt;Part3&lt;/a&gt; is used as the basis for the email. A new function is defined that generates the html content of the email and sends it. The script accepts two parameters on the command line: a gmail email address and a gmail password. These&amp;nbsp;credentials&amp;nbsp;are then used to send the email using the script prepared above.&lt;br /&gt;
&lt;blockquote&gt;See &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;a href="https://github.com/jbrownlee/AIFeeds/blob/master/part4/dailyfeed.rb"&gt;dailyfeed.rb&lt;/a&gt;&lt;/span&gt;&lt;/blockquote&gt;To execute the script we can create a shell script that contains the call to the script and the Gmail credentials used to send the email. For example, the shell script may be called &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;run_dailyfeed.sh&lt;/span&gt; and look as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;#!/bin/sh&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;cd /path/&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;AIFeeds/part4/&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;ruby dailyfeed.rb [email] [password]&amp;nbsp;&lt;gmail email=""&gt;&lt;gmail password=""&gt;&amp;gt;&amp;gt;&amp;nbsp;&lt;/gmail&gt;&lt;/gmail&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;/path/AIFeeds/part4/dailyfeed.log&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
The script is three lines: a &lt;a href="http://en.wikipedia.org/wiki/Shebang_(Unix)"&gt;shebang&lt;/a&gt;, change directory to the script location, and a call to the ruby script with parameters. Replace &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;/path/&lt;/span&gt; with the path to your AIFeed directory, and replace the &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;[email]&lt;/span&gt;&amp;nbsp;and &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;[password]&lt;/span&gt;&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;gmail password=""&gt;&lt;/gmail&gt;&lt;/span&gt;with your gmail login details. The output of the script (and any errors) are output to a new log file&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;dailyfeed.log&lt;/span&gt;.&lt;br /&gt;
&lt;br /&gt;
The crontab for the current user can be opened as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;crontab -e&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Add an entry that looks something like the following:&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;00&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* &amp;nbsp; &amp;nbsp;* &amp;nbsp; &amp;nbsp;/path/AIFeeds/part4/run_dailyfeed.sh&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
This is all one line with tabs in between the fields. Again&amp;nbsp;replace&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;/path/&lt;/span&gt;&amp;nbsp;with the path to your AIFeed directory.&amp;nbsp;Cron will execute the shell script once each day at 5am local time.&lt;br /&gt;
&lt;br /&gt;
The following is an example of a resulting email sent to my email account.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-r34XPK_ktH8/TbfRLlxok6I/AAAAAAAAAME/5vrNUGJ_eVg/s1600/Screen+shot+2011-04-27+at+6.17.24+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="303" src="http://2.bp.blogspot.com/-r34XPK_ktH8/TbfRLlxok6I/AAAAAAAAAME/5vrNUGJ_eVg/s400/Screen+shot+2011-04-27+at+6.17.24+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;b&gt;Improvements and Extensions&lt;/b&gt;&lt;br /&gt;
This section&amp;nbsp;summarizes&amp;nbsp;possible improvements and&amp;nbsp;extensions&amp;nbsp;to this part in the series.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Cron is an easy way to schedule a task on your machine. A better approach would be to set this up on a server (such as&amp;nbsp;&lt;a href="http://www.heroku.com/"&gt;Heroku&lt;/a&gt;, &lt;a href="http://code.google.com/appengine/"&gt;AppEngine&lt;/a&gt;, or &lt;a href="http://aws.amazon.com/"&gt;AWS&lt;/a&gt;) and send an email to an email list (via something like MailChimp).&lt;/li&gt;
&lt;li&gt;An interesting extension to this project would be to turn the output into a webpage that is re-generated every hour or so. This might provide a useful diversion to reddit and hacker news, with a targeted corpus of links to scan over.&lt;/li&gt;
&lt;/ul&gt;In this fourth and final part in the series we have hacked together simple script to send email via Google Gmail and scheduled the script to email ourselves a list of popular AI articles each morning at 5am. Not bad for a few &lt;s&gt;days&lt;/s&gt; hours work. Sure, there are some rough edges, but the result is&amp;nbsp;entirely&amp;nbsp;functional and I think useful.&lt;br /&gt;
&lt;br /&gt;
If you would like to see this as a service or perhaps a website, drop me a comment or an email. I'd be happy to clean it up further and automate it for a broader crowd if I knew that others as passionate as me about AI and Machine Learning were interested!&lt;br /&gt;
&lt;br /&gt;
Don't forget all code and data for this series is available on the &lt;a href="https://github.com/jbrownlee/AIFeeds"&gt;AIFeeds github project&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/946587890062083577-8696056937685546197?l=www.neverreadpassively.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NeverReadPassively/~4/gEEIztqP_q8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.neverreadpassively.com/feeds/8696056937685546197/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=946587890062083577&amp;postID=8696056937685546197" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/946587890062083577/posts/default/8696056937685546197?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/946587890062083577/posts/default/8696056937685546197?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NeverReadPassively/~3/gEEIztqP_q8/aifeeds-part-4-automating-aifeed.html" title="AIFeeds Part 4: Automating an AIFeed aggregator" /><author><name>Jason</name><uri>http://www.blogger.com/profile/11283603094324243247</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://3.bp.blogspot.com/_Nm8O-3rVrk0/Sk_iFShcXkI/AAAAAAAAAFc/cUqZBpgrQ9Y/S220/Snapshot.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-Fwu4nC8af6w/TbZ5daGRPOI/AAAAAAAAALw/6rxH9iAMfk8/s72-c/Screen+shot+2011-04-26+at+5.50.24+PM.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.neverreadpassively.com/2011/04/aifeeds-part-4-automating-aifeed.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkcEQH4_cCp7ImA9WhZQGU4.&quot;"><id>tag:blogger.com,1999:blog-946587890062083577.post-1797576859553064184</id><published>2011-04-28T07:00:00.122+10:00</published><updated>2011-04-28T07:00:01.048+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-28T07:00:01.048+10:00</app:edited><title>AIFeeds Part 3: Intelligently filter AI posts by social impact</title><content type="html">In &lt;a href="http://www.neverreadpassively.com/2011/04/aifeeds-part-1-artificial-intelligence.html"&gt;Part1&lt;/a&gt; we learned how to prepare a master list of Artificial Intelligence and Machine Learning RSS feeds. In &lt;a href="http://www.neverreadpassively.com/2011/04/aifeeds-part-2-recent-ai-articles.html"&gt;Part2&lt;/a&gt; we learned how to process articles from the list of feeds and present them as either a fire-hose or in a more compact day-based manner. In this part we explore how we may filter articles by their perceived social impact.&lt;br /&gt;
&lt;br /&gt;
As with Part2, the &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;a href="https://github.com/jbrownlee/AIFeeds/blob/master/part2/curated_feeds.txt"&gt;curated_feeds.txt&lt;/a&gt;&lt;/span&gt; file is used as the basis for locating articles to consider listing.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Step 1: Computing Social Impact&lt;/b&gt;&lt;br /&gt;
Computing social impact for a give URL involves determining how many times it has been shared,&amp;nbsp;up-voted, stumbled, etc on popular social networking websites. All of the large sites offer APIs and almost all offer JSON APIs. &lt;br /&gt;
&lt;br /&gt;
I started out thinking I would need a ruby gem for each social networking site, one for Twitter, one for&amp;nbsp;Facebook, etc. I started looking around and found that there were some gems here and there and most were quite outdated. I figured that because most APIs were in JSON format, that I could just interact with each in turn manually. I stared reading API docs for various sites and quickly got bogged down. For example, searching for a URL on&amp;nbsp;twitter&amp;nbsp;is not enough because people use URL shortening services. In fact, these services are quite pervasive.&lt;br /&gt;
&lt;br /&gt;
The requirements here are quite specific: For a given article URL, how popular is it in a given social networking website? After a little more searching around, I came across &lt;a href="http://sharedcount.com/documentation.php"&gt;a very useful website on&amp;nbsp;Shared Count&lt;/a&gt; that provides a listing of the JSON API calls needed to answer this question across a host of social networks. I combined this with some of the API code I had already written and built a little URL scoring sub-system.&lt;br /&gt;
&lt;br /&gt;
Given that all of the APIs we are dealing with are JSON based, we need some robust&amp;nbsp;functions&amp;nbsp;for downloading and parsing JSON files. I installed the&amp;nbsp;&lt;a href="http://flori.github.com/json/"&gt;json gem&lt;/a&gt; and wrote a robust function for making&amp;nbsp;arbitrary&amp;nbsp;JSON API calls (HTTP GET requests) that used similar socket timeout handling as to that which was used in Part1 for RSS downloading.&lt;br /&gt;
&lt;blockquote&gt;See &lt;a href="https://github.com/jbrownlee/AIFeeds/blob/master/part3/parsejson.rb"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;parsejson.rb&lt;/span&gt;&lt;/a&gt;&lt;/blockquote&gt;Next, the specific query formatting and data processing needed for each social networking website was prepared and tested based on the JSON downloading and parsing code. The scoring of a URL against a a given API was relegated one per file allowing any special handing (like MD5 digests in the case of delicious) and spot checks.&lt;br /&gt;
&lt;br /&gt;
API handling was written for 8 services: (each links to the specific ruby code) &lt;a href="https://github.com/jbrownlee/AIFeeds/blob/master/part3/scoredelicious.rb"&gt;Delicious&lt;/a&gt;, &lt;a href="https://github.com/jbrownlee/AIFeeds/blob/master/part3/scoredigg.rb"&gt;Digg&lt;/a&gt;, &lt;a href="https://github.com/jbrownlee/AIFeeds/blob/master/part3/scorefacebook.rb"&gt;Facebook&lt;/a&gt;, &lt;a href="https://github.com/jbrownlee/AIFeeds/blob/master/part3/scoregoogle.rb"&gt;Google Web Search&lt;/a&gt;, &lt;a href="https://github.com/jbrownlee/AIFeeds/blob/master/part3/scoregooglebuzz.rb"&gt;Google Buzz&lt;/a&gt;, &lt;a href="https://github.com/jbrownlee/AIFeeds/blob/master/part3/scorereddit.rb"&gt;Reddit&lt;/a&gt;, &lt;a href="https://github.com/jbrownlee/AIFeeds/blob/master/part3/scorestumbleupon.rb"&gt;Stumbleupon&lt;/a&gt;, and &lt;a href="https://github.com/jbrownlee/AIFeeds/blob/master/part3/scoretwitter.rb"&gt;Twitter&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Step 2: Article Scoring&lt;/b&gt;&lt;br /&gt;
The next step is to combine the scoring for a given URL. There are many ways to do this and the more thought and experiment put into the scoring, the more&amp;nbsp;meaningful&amp;nbsp;the scores will become.&lt;br /&gt;
&lt;br /&gt;
The chosen method here is a simple sum of the scores. This first approximation will provide a number that can be compared, but the relation between the scores in the sum from different websites is&amp;nbsp;unknown. For example, a large score on&amp;nbsp;Facebook&amp;nbsp;or Twitter likely has more meaning than a large score on the Google web search. This is an obvious area for further research.&lt;br /&gt;
&lt;br /&gt;
A URL scoring function was prepared that evaluated a given address against each website in a different thread. Digg was dropped from the cannon of scoring functions because the results did not appear to be meaningful and the API was always slow to respond.&lt;br /&gt;
&lt;blockquote&gt;See &lt;a href="https://github.com/jbrownlee/AIFeeds/blob/master/part3/scoreurl.rb"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;scoreurl.rb&lt;/span&gt;&lt;/a&gt;&lt;/blockquote&gt;&lt;b&gt;Step 3: List Popular Articles&lt;/b&gt;&lt;br /&gt;
Now that we can score articles by their impact on the world, we can combine the scoring information with the list of articles posted in the last week to create a list of popular articles.&lt;br /&gt;
&lt;br /&gt;
Starting with the &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;a href="https://github.com/jbrownlee/AIFeeds/blob/master/part2/viewarticles.rb"&gt;viewarticles.rb&lt;/a&gt;&lt;/span&gt; and &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;a href="https://github.com/jbrownlee/AIFeeds/blob/master/part2/listarticles.rb"&gt;listarticles.rb&lt;/a&gt;&lt;/span&gt; scripts prepared in Part2, an updated list of popular articles can be created. In this case, the score for each article can be computed and all articles can be listed by their scoring. This promotes those articles that are expected to be interesting to the top of the page with the intent that they may be read first.&lt;br /&gt;
&lt;blockquote&gt;See &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;a href="https://github.com/jbrownlee/AIFeeds/blob/master/part3/listpopulararticles.rb"&gt;listpopulararticles.rb&lt;/a&gt;&lt;/span&gt;&lt;/blockquote&gt;The following provides a screenshot from the last time that the script was executed showing an example of the resulting &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;populararticles.html&lt;/span&gt; file.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-iFrKycf01Xo/TbYqSX4D4SI/AAAAAAAAALo/Ea83tT-S1f4/s1600/Screen+shot+2011-04-26+at+11.50.04+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/-iFrKycf01Xo/TbYqSX4D4SI/AAAAAAAAALo/Ea83tT-S1f4/s400/Screen+shot+2011-04-26+at+11.50.04+AM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;b&gt;Step 4: Combine List by Day and Popular Articles&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;The resulting listing of posts is long, it contains 7 days worth of articles. Additionally, taking a closer look at the posts in the list shows that most of them have a score of 0. It is expected that the older a post is, the larger its potential to have a meaningful score. This is because it gets indexed and shared more over that time. It is also expected that most articles posted within the last day or two will not have a score. In fact, it is expected that most AI articles in general will not have a score - it is a niche field of interest after all.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;In this step we separate "popular" articles (those with a score) from the "unpopular" articles (those without a score). Popular articles are listed at the top of the page and the remaining articles that have not achieved a score yet are listed&amp;nbsp;below&amp;nbsp;the popular articles, broken down by day.&lt;/div&gt;&lt;blockquote&gt;See &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;a href="https://github.com/jbrownlee/AIFeeds/blob/master/part3/listpopulardayarticles.rb"&gt;listpopulardayarticles.rb&lt;/a&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;div&gt;The following screenshot shows an example of the resulting &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;populardayarticles.html&lt;/span&gt; generated by the script.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-Yi6lxqViZBk/TbYyGusQ9fI/AAAAAAAAALs/7eNYCzqKAJs/s1600/Screen+shot+2011-04-26+at+12.43.35+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="345" src="http://1.bp.blogspot.com/-Yi6lxqViZBk/TbYyGusQ9fI/AAAAAAAAALs/7eNYCzqKAJs/s400/Screen+shot+2011-04-26+at+12.43.35+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;b&gt;Improvements and Extensions&lt;/b&gt;&lt;br /&gt;
In this section a number of improvements and extensions to this part are&amp;nbsp;summarized.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;An important improvement to this part is the assessment of the URLs. Specifically, permalinks reported by some ATOM and feedburner feeds involve a proxy that redirects to the page. The effect is that the popularity of these proxy URLs are assessed against the social networking websites rather than the permalinks themselves, resulting in incorrect scorings. This may be addressed by following the redirect in the proxy URLs or using a different feed parsing library that has knowledge of the different feed types.&lt;/li&gt;
&lt;li&gt;A natural first extension to this part is to add scoring from more social networks and sources. For example: Hacker News, Google Blog Search, Friendfeed, etc.&lt;/li&gt;
&lt;li&gt;The scoring used is very&amp;nbsp;simplistic. A good extension would be to make better use of the information&amp;nbsp;available&amp;nbsp;for each URL and combine them in more intelligent ways. Such as a weighted sum of their relative importance, more weighting to comments and&amp;nbsp;up-votes, etc.&lt;/li&gt;
&lt;li&gt;Additional meta information about a given URL on social networking sites could be used in&amp;nbsp;conjunction&amp;nbsp;with an intelligent parsing of the articles themselves to determine broader categories that articles could be put into. A new list could be constructed with articles by category and popularity.&lt;/li&gt;
&lt;li&gt;The generated HTML pages will only ever contain AI articles that are actually in the source RSS feeds. A useful&amp;nbsp;extension&amp;nbsp;of this project would be to monitor social networking sites and other news sites for articles on AI and Machine Learning and include them in the mix.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;In this part we looked at the social interest of each article from the last 7 days and used that information to promote "popular" articles to be read above "unpopular" articles. The dynamic nature of the social scoring function means that popularity can be re-calculated each time the script is executed,&amp;nbsp;responding&amp;nbsp;to changes in the spread and sharing of a given story.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;In the next and final article in the series we will look at automating the generation of the AIFeed and in&amp;nbsp;disseminating&amp;nbsp;it via email and the web.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Don't forget that all code and data for this series is available for free on the &lt;a href="https://github.com/jbrownlee/AIFeeds"&gt;AIFeeds github project&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/946587890062083577-1797576859553064184?l=www.neverreadpassively.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NeverReadPassively/~4/1GpDJlO_uLs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.neverreadpassively.com/feeds/1797576859553064184/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=946587890062083577&amp;postID=1797576859553064184" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/946587890062083577/posts/default/1797576859553064184?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/946587890062083577/posts/default/1797576859553064184?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NeverReadPassively/~3/1GpDJlO_uLs/aifeeds-part-3-intelligently-filter-ai.html" title="AIFeeds Part 3: Intelligently filter AI posts by social impact" /><author><name>Jason</name><uri>http://www.blogger.com/profile/11283603094324243247</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://3.bp.blogspot.com/_Nm8O-3rVrk0/Sk_iFShcXkI/AAAAAAAAAFc/cUqZBpgrQ9Y/S220/Snapshot.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-iFrKycf01Xo/TbYqSX4D4SI/AAAAAAAAALo/Ea83tT-S1f4/s72-c/Screen+shot+2011-04-26+at+11.50.04+AM.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.neverreadpassively.com/2011/04/aifeeds-part-3-intelligently-filter-ai.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0ECQ3czfSp7ImA9WhZQGEg.&quot;"><id>tag:blogger.com,1999:blog-946587890062083577.post-6287144384030449966</id><published>2011-04-27T07:00:00.104+10:00</published><updated>2011-04-27T09:14:22.985+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-27T09:14:22.985+10:00</app:edited><title>AIFeeds Part 2: Recent AI Articles</title><content type="html">In &lt;a href="http://www.neverreadpassively.com/2011/04/aifeeds-part-1-artificial-intelligence.html"&gt;Part1&lt;/a&gt;, we went through the process of aggregating and filtering a bunch of RSS feeds for Machine Learning, Data Mining, Artificial Intelligence and related topics. In this continuation we will explore the properties of articles listed within a feed and provide a way of generating a static list of recent articles.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Step 1: List articles from the past week&lt;/b&gt;&lt;br /&gt;
A problem with this effort is that there are a lot of inconsistencies in the real world data. Some feeds are missing fields and some articles have fields that do not match expectations. The first step is to explore the data that we have by listing articles from the past week. This includes all fields that we think might be usefully related to an article, a feed, and its source website.&lt;br /&gt;
&lt;br /&gt;
To start with, the final list of feeds prepared in &lt;a href="http://www.neverreadpassively.com/2011/04/aifeeds-part-1-artificial-intelligence.html"&gt;Part1&lt;/a&gt; was taken and curated based on eyeballing the output in &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;feedlist.html&lt;/span&gt; (also generated in Part1). The result is the file &lt;a href="https://github.com/jbrownlee/AIFeeds/blob/master/part2/curated_feeds.txt"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;curated_feeds.txt&lt;/span&gt;&lt;/a&gt; with some of the more&amp;nbsp;obviously&amp;nbsp;wrong and non-interesting feeds removed.&lt;br /&gt;
&lt;br /&gt;
Next, a script was prepared to generate listing of all articles from the last seven days drawn from the feeds in the curated list. Almost all information for each article is provided such that we can discern what might be appropriate or interesting in further experiments.&lt;br /&gt;
&lt;br /&gt;
It was interesting that some articles had neither a &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;date_published&lt;/span&gt; or &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;last_updated&lt;/span&gt; field. Some articles would put the content in the &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;description&lt;/span&gt; and others in the &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;content&lt;/span&gt; field. These may be&amp;nbsp;artifacts&amp;nbsp;of the chosen RSS library, or may be&amp;nbsp;artifacts&amp;nbsp;of the feeds themselves, more investigation is needed. There are also Unicode issues with strange characters all over the place where&amp;nbsp;apostrophes&amp;nbsp;and quotes should be. Again, it is not clear whether this is because of the library or because some custom parsing is needed, nevertheless, as a static RSS the result is very basic.&lt;br /&gt;
&lt;blockquote&gt;See &lt;a href="https://github.com/jbrownlee/AIFeeds/blob/master/part2/viewarticles.rb"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;viewarticles.rb&lt;/span&gt;&lt;/a&gt;&lt;/blockquote&gt;The following provides a sample screenshot at the time I last executed the script to produce the&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;articlelview.html&lt;/span&gt; file.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-P3nnaRMRFGU/TbUIsddk7zI/AAAAAAAAALg/mvRJwDFkKAs/s1600/Screen+shot+2011-04-25+at+3.37.15+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="312" src="http://3.bp.blogspot.com/-P3nnaRMRFGU/TbUIsddk7zI/AAAAAAAAALg/mvRJwDFkKAs/s400/Screen+shot+2011-04-25+at+3.37.15+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;b&gt;Step 2: Summarize articles by day&lt;/b&gt;&lt;br /&gt;
In recent months I have become a big fan of the &lt;a href="http://www.hackernewsletter.com/"&gt;Hacker Newsletter&lt;/a&gt;. It is basically an email sent once per-week that contains a summary of the top stories of the week on the website Hacker News with links to comments as well as other relevant and&amp;nbsp;interesting&amp;nbsp;sections. I like the layout of the email and I think it provides a good pattern to head towards in this project.&lt;br /&gt;
&lt;br /&gt;
The previous step&amp;nbsp;explored&amp;nbsp;how to filter the feeds and how to&amp;nbsp;extract&amp;nbsp;the relevant information from each article, but it also demonstrated how ugly rendering the raw data can be. One could invest effort into replicating an RSS reader, or in doing something simpler and move toward a better summary view on the same data. This step explores such a simplified view where each article is presented on one line.&lt;br /&gt;
&lt;br /&gt;
A script was prepared to produce an article summary for the last seven days. The same filtering was performed as in Step1, although rather than writing out a long list of articles, the script was updated to group articles by date and only list the article title and source webpage. The result is a compact listing of recent AI and Machine Learning blog posts. The resulting page also provided clearer insight into the nature of the blogs included in the master list. As a result, the curated list of feeds was further culled.&lt;br /&gt;
&lt;blockquote&gt;See &lt;a href="https://github.com/jbrownlee/AIFeeds/blob/master/part2/listarticles.rb"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;listarticles.rb&lt;/span&gt;&lt;/a&gt;&lt;/blockquote&gt;The following figure provides a screenshot from the last time I executed the script to produce the &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;articielist.html&lt;/span&gt; file.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-yOVNrr1Olbw/TbUItDNm-jI/AAAAAAAAALk/r-qLZ4YbbD4/s1600/Screen+shot+2011-04-25+at+3.37.27+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="290" src="http://3.bp.blogspot.com/-yOVNrr1Olbw/TbUItDNm-jI/AAAAAAAAALk/r-qLZ4YbbD4/s400/Screen+shot+2011-04-25+at+3.37.27+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;Improvements and&amp;nbsp;&lt;/b&gt;&lt;/span&gt;Extensions&lt;/b&gt;&lt;br /&gt;
This section lists some potential improvements and extensions to this part in the series.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Curating the master list of source feeds by hand is a bad idea. It seems&amp;nbsp;feasible&amp;nbsp;that all articles from each feed could be scanned and their appropriateness to the project determined using heuristics on the structure or content (keywords).&lt;/li&gt;
&lt;li&gt;Unicode&amp;nbsp;characters&amp;nbsp;in the feeds need to be rendered correctly. This still effects the titles of the articles and the blogs themselves.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;In this part we have explored the content for articles in RSS feeds and two methods for&amp;nbsp;presenting&amp;nbsp;the data: a&amp;nbsp;fire-hose&amp;nbsp;and a daily&amp;nbsp;summarization, the latter currently preferred.&lt;br /&gt;
&lt;br /&gt;
Next in Part3 we explore additional social-web based methods for filtering the list of articles and promoting those that are more likely to be interesting to the reader.&lt;br /&gt;
&lt;br /&gt;
Don't forget, all the code and data for this series can be downloaded from the &lt;a href="https://github.com/jbrownlee/AIFeeds"&gt;AIFeeds github project&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/946587890062083577-6287144384030449966?l=www.neverreadpassively.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NeverReadPassively/~4/mnuMdEiExbc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.neverreadpassively.com/feeds/6287144384030449966/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=946587890062083577&amp;postID=6287144384030449966" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/946587890062083577/posts/default/6287144384030449966?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/946587890062083577/posts/default/6287144384030449966?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NeverReadPassively/~3/mnuMdEiExbc/aifeeds-part-2-recent-ai-articles.html" title="AIFeeds Part 2: Recent AI Articles" /><author><name>Jason</name><uri>http://www.blogger.com/profile/11283603094324243247</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://3.bp.blogspot.com/_Nm8O-3rVrk0/Sk_iFShcXkI/AAAAAAAAAFc/cUqZBpgrQ9Y/S220/Snapshot.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-P3nnaRMRFGU/TbUIsddk7zI/AAAAAAAAALg/mvRJwDFkKAs/s72-c/Screen+shot+2011-04-25+at+3.37.15+PM.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.neverreadpassively.com/2011/04/aifeeds-part-2-recent-ai-articles.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0EFRHwzeSp7ImA9WhZQGEg.&quot;"><id>tag:blogger.com,1999:blog-946587890062083577.post-6714469549797694475</id><published>2011-04-26T07:00:00.195+10:00</published><updated>2011-04-27T09:13:35.281+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-27T09:13:35.281+10:00</app:edited><title>AIFeeds Part 1: Artificial Intelligence and Machine Learning blogs</title><content type="html">Recently, I have been neglecting my RSS feeds. I'm a Google Reader user and my unread count is far from zero. I've been&amp;nbsp;distracted&amp;nbsp;and too busy. The problem though, is that there are many excellent Artificial Intelligence and Machine Learning blog posts that are being written every day and I get a lot of enjoyment in reading them and keeping&amp;nbsp;abreast&amp;nbsp;with current research and interesting projects.&lt;br /&gt;
&lt;br /&gt;
An obvious solution would be to simply rely on social media to filter such articles and let the best float to the top on Hacker News, Reddit, and Twitter. Maybe.&lt;br /&gt;
&lt;br /&gt;
I felt like some hacking over my Easter break (in between the numerous family&amp;nbsp;responsibilities), so I decided to have a crack at this problem. This post&amp;nbsp;represents&amp;nbsp;the first of four posts of my exploration of aggregating and filtering RSS feeds from popular blogs in the areas of computer science, data mining, data&amp;nbsp;visualization, machine learning and artificial intelligence. I've called the project AIFeeds and have &lt;a href="https://github.com/jbrownlee/AIFeeds"&gt;hosted the code and data for all parts on github&lt;/a&gt; if you want to skip ahead.&lt;br /&gt;
&lt;br /&gt;
The objective of this first part is to simply build a list of a large number of blogs that match my loose criteria. Specifically, the objective of this part is to prepare a list of working RSS feeds for blogs on (AI and related fields) without any duplicates. This will then be used as the basis for the subsequent parts in the series.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Step 1: Extract relevant blogs from my Google Reader Account&lt;/b&gt;&lt;br /&gt;
For starters, I have a modest collection of relevant feeds in my google reader. Going to google reader, I clicked settings, Import/Export, then&amp;nbsp;Export your subscriptions as an OPML file. I opened the OPML file in a text editor and delete all those feeds that I knew were not on topic.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Step 2: Search for lists of relevant blogs&lt;/b&gt;&lt;br /&gt;
The next step is to Google search for lists of machine learning blogs. I remember seeing such lists on Quora and MetaOptimize before so I kept an eye out for these sites in the search results. Here are some good lists I found:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://metaoptimize.com/qa/questions/3163/good-machine-learning-blogs"&gt;Good Machine Learning Blogs&lt;/a&gt; (MetaOptimize)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://mark.reid.name/iem/kith.html"&gt;Machine Learning Resources&lt;/a&gt; (Inductio ex Machina)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://yaroslavvb.blogspot.com/2010/09/updated-machine-learningstatistics-blog.html"&gt;Updated Machine Learning/Statistics blog list&lt;/a&gt; (Machine Learning, etc)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.dataminingblog.com/list-of-blogs/"&gt;Data Mining Blogs&lt;/a&gt; (Data Mining Research)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.quora.com/What-are-the-best-machine-learning-blogs"&gt;What are the best blogs about data?&lt;/a&gt; (Quora)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.quora.com/What-are-the-best-machine-learning-blogs"&gt;What are the best machine learning blogs?&lt;/a&gt; (Quora)&lt;/li&gt;
&lt;/ul&gt;The result is a bunch of links in webpages and OPML files. Additionally, many of the linked blogs themselves provide a blog roll to related blogs.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Step 3: Aggregate&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
The first easy thing to do is to write a script to extract all feeds from the collected OPML files. Using the built-in REXML library in Ruby I bashed out a script to read in all .opml files in an &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;opml/&lt;/span&gt; subdirectory, parsing each entry for the&amp;nbsp;rss attribute and writing a &lt;a href="https://github.com/jbrownlee/AIFeeds/blob/master/part1/opml_feeds.txt"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;opml_feeds.txt&lt;/span&gt;&lt;/a&gt; file.&lt;br /&gt;
&lt;blockquote&gt;See &lt;a href="https://github.com/jbrownlee/AIFeeds/blob/master/part1/parseopml.rb"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;parseopml.rb&lt;/span&gt;&lt;/a&gt;&lt;/blockquote&gt;I then did something stupid, slow, but effective. I clicked a lot of links, read a lot of blog rolls, viewed source on a ton of &amp;nbsp;blogs, and copy-pasted links to blog RSS feeds into a &lt;a href="https://github.com/jbrownlee/AIFeeds/blob/master/part1/byhand_feeds.txt"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;byhand_feeds.txt&lt;/span&gt;&lt;/a&gt;. I could have written scripts for this, but there is a lot of pain to deal with and I suspected I could do this once of task by hand faster than I could write code to parse a bunch of pages, extract (the right) links, and then download the pages and extract links to rss feeds. I took an hour or so to do by hand - not a big deal.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Step 4: Filter list of feeds&lt;/b&gt;&lt;br /&gt;
So now we have two lists of RSS feeds. Some may work, some may not. There are likely many duplicates and even many that are not strictly on topic. An easy quick win is to write a script that opens a connection to each url, parses the contents and builds a list of unique feeds.&lt;br /&gt;
&lt;br /&gt;
The first thing that is needed is a library that can process RSS feeds in ruby, at least RSS1, RSS2 and Atom. Google throws up a few options, such as &lt;a href="http://rubyrss.com/"&gt;RubyRSS&lt;/a&gt;, &lt;a href="http://www.ruby-doc.org/stdlib/libdoc/rss/rdoc/index.html"&gt;Ruby RSS in the stdlib&lt;/a&gt;,&amp;nbsp;&lt;a href="http://home.gna.org/ruby-feedparser/"&gt;Ruby-Feedparser&lt;/a&gt;, &lt;a href="http://simple-rss.rubyforge.org/"&gt;Simple RSS&lt;/a&gt;,&amp;nbsp;&lt;a href="http://rubyforge.org/projects/feed-normalizer/"&gt;feed-normalizer&lt;/a&gt;, and others. I tried a few and was somewhat frustrated. I ended up going with feed-normalizer (&lt;a href="http://rubydoc.info/github/aasmith/feed-normalizer/master/frames"&gt;rdoc&lt;/a&gt;) because it was really easy to use and provided a consistent data structure for RSS and Atom feeds.&lt;br /&gt;
&lt;br /&gt;
I wrote a small script using feed-normalizer to parse a feed and return the data structure. Importantly, it provided safety for the URL failing to open, the XML being bad, and for socket timeouts. An error is reported to stdout on error and a &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;nil&lt;/span&gt; is returned. I used this script to test some rss, atom and even some bad URLs. This file provides a home for helper functions for loading and parsing RSS feeds.&lt;br /&gt;
&lt;blockquote&gt;See&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt; &lt;a href="https://github.com/jbrownlee/AIFeeds/blob/master/part1/parserss.rb"&gt;parserss.rb&lt;/a&gt;&lt;/span&gt;&lt;/blockquote&gt;Using this parser function, I wrote a script to read in lists of RSS feeds in text files (&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;opml_feeds.txt&lt;/span&gt; and &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;byhand_feeds.txt&lt;/span&gt;), parse each and build a unique list based on the website name. There are many hundreds of feeds to check in those files and I'm lazy. I wrote a small function to hammer the feeds in the file using lots of threads and then check all of the data structures in memory. Lazy but effective. The result is a list of &lt;b&gt;236&lt;/b&gt; rss feeds in &lt;a href="https://github.com/jbrownlee/AIFeeds/blob/master/part1/filtered_feeds.txt"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;filtered_feeds.txt&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt;
&lt;blockquote&gt;See &lt;a href="https://github.com/jbrownlee/AIFeeds/blob/master/part1/filterfeeds.rb"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;filterfeeds.rb&lt;/span&gt;&lt;/a&gt;&lt;/blockquote&gt;&lt;b&gt;Step 5: Summarize list of feeds&lt;/b&gt;&lt;br /&gt;
A final step is to generate a summary of all the available feeds. An easy way to do that is to generate an HTML page that&amp;nbsp;summarizes&amp;nbsp;each feed in turn, ordered by the name of the website. A script was prepared to parse each feed and list the name of the site, link to the site, and finally link to the actual rss feed. The list was ordered by site name.&lt;br /&gt;
&lt;blockquote&gt;See &lt;a href="https://github.com/jbrownlee/AIFeeds/blob/master/part1/listfeeds.rb"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;listfeeds.rb&lt;/span&gt;&lt;/a&gt;&lt;/blockquote&gt;The following provides a screenshot of the generated html page providing the final list of webpages and their rss feeds in &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;feedlist.html&lt;/span&gt;.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-qApgwYshUUg/TbTpu2IscDI/AAAAAAAAALY/jw_vraNR3SY/s1600/Screen+shot+2011-04-25+at+1.25.26+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://2.bp.blogspot.com/-qApgwYshUUg/TbTpu2IscDI/AAAAAAAAALY/jw_vraNR3SY/s400/Screen+shot+2011-04-25+at+1.25.26+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;b&gt;Improvements and Extensions&lt;/b&gt;&lt;br /&gt;
There are a number of improvements and extensions that could be made to the first part of this effort, such as:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;The final list contains some oddball and even some off-topic feeds. A high-level human-based curation of the list would be a good start. For example, removing Q&amp;amp;A feeds and delicious feeds would be useful.&lt;/li&gt;
&lt;li&gt;Some of the links to the sites in the generated feedlist.html are suspect, meaning that some feeds do not accurately report the site URL or site title. It may be possible to carry over this information from the source documents, either the website themselves and/or the OPML files. Ideally, the final corpus of feeds could/should be stored in an OPML file for portability and reuse.&lt;/li&gt;
&lt;li&gt;Build a larger corpus of feeds. Naturally, this is the easy extension to the whole project and there are may ways to go about collecting more feeds starting with some simple google searches. Getting more OPML files and including them in the opmlparser.rb script would be a great first step.&lt;/li&gt;
&lt;li&gt;Write a script to extract links of blogs from some of the above listed collections. Once such links to blogs are collected, write a script to download the HTML, parse it and extract the link to the RSS or Atom feed. This is most commonly listed in the head tag of the HTML file as an alternative link (at least it is for blogger and wordpress blogs).&lt;/li&gt;
&lt;/ul&gt;&lt;b&gt;Done&lt;/b&gt;&lt;br /&gt;
So we now have a list of RSS feeds for blogs, most of which are likely to provide posts on or related to our topics of interest. Each feed has been tested, and duplicates have been removed.&lt;br /&gt;
&lt;br /&gt;
Next, in AIFeeds Part 2 we will use this list of sources to prepare a summary of posts as a simple static RSS reader.&lt;br /&gt;
&lt;br /&gt;
Remember, all data and code is provided on the&amp;nbsp;&lt;a href="https://github.com/jbrownlee/AIFeeds"&gt;AIFeeds github project&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/946587890062083577-6714469549797694475?l=www.neverreadpassively.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NeverReadPassively/~4/ukM9BELcmds" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.neverreadpassively.com/feeds/6714469549797694475/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=946587890062083577&amp;postID=6714469549797694475" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/946587890062083577/posts/default/6714469549797694475?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/946587890062083577/posts/default/6714469549797694475?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NeverReadPassively/~3/ukM9BELcmds/aifeeds-part-1-artificial-intelligence.html" title="AIFeeds Part 1: Artificial Intelligence and Machine Learning blogs" /><author><name>Jason</name><uri>http://www.blogger.com/profile/11283603094324243247</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://3.bp.blogspot.com/_Nm8O-3rVrk0/Sk_iFShcXkI/AAAAAAAAAFc/cUqZBpgrQ9Y/S220/Snapshot.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-qApgwYshUUg/TbTpu2IscDI/AAAAAAAAALY/jw_vraNR3SY/s72-c/Screen+shot+2011-04-25+at+1.25.26+PM.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.neverreadpassively.com/2011/04/aifeeds-part-1-artificial-intelligence.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0MGQX05eip7ImA9WhZSGEs.&quot;"><id>tag:blogger.com,1999:blog-946587890062083577.post-8003075357821220095</id><published>2011-04-04T07:17:00.000+10:00</published><updated>2011-04-04T07:17:00.322+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-04T07:17:00.322+10:00</app:edited><title>Automatically Generate Regular Expressions (regex)</title><content type="html">I had a thought about two weeks ago that I really wanted a web app that would generate regular expressions for me. I was lazy and had spent some time hacking expressions together for a script I was working on.&lt;br /&gt;
&lt;br /&gt;
I wrote some notes and posted them to a gaggle of programmers and engineers I email&amp;nbsp;regularly. Something like:&lt;br /&gt;
&lt;blockquote&gt;A programmer normally google’s for examples of their problem or similar problems online, copies the code and adapts it for their needs. There are websites dedicated to discussing programming problems, and websites dedicated to listing solutions to common problems. The objective of this system is to write a new program for the user from scratch that exactly addresses their needs.&amp;nbsp;&lt;/blockquote&gt;&lt;blockquote&gt;A user defines some sample input and some sample output. The system examines the data and generates a program for the user to perform the transform. This program can be downloaded, executed in place, or used as a service. The more information provided by the user, the better the robot programmer can do its job. The robot programmer may not get it right the first time, providing an opportunity for the user to work with the robot to better define the problem and tinker with candidate programs that may be used as the basis for the robots second and subsequent tries.&lt;/blockquote&gt;I abstracted the problem and proposed a generic "&lt;i&gt;robot programmer&lt;/i&gt;" or "&lt;i&gt;robot coder&lt;/i&gt;" that would compute&amp;nbsp;arbitrary&amp;nbsp;transformations based on sample input and output. I pitched both the general case and the specific regex case and got a variety of responses and some good technical discussions.&lt;br /&gt;
&lt;br /&gt;
Using Heroku, I hacked together a prototype of the interface and sent it around for comment. The following is a snap shot of the regex mock:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-mlvJHLUPc0A/TZQuU1RK9CI/AAAAAAAAALI/1ywge9JUcP8/s1600/Screen+shot+2011-03-31+at+6.27.37+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="322" src="http://1.bp.blogspot.com/-mlvJHLUPc0A/TZQuU1RK9CI/AAAAAAAAALI/1ywge9JUcP8/s400/Screen+shot+2011-03-31+at+6.27.37+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;The following is a snap shot of the general case mock, here the example requires a program to print the input as well as all the input summed together.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-9jyj3eogHeA/TZQuVeSPAUI/AAAAAAAAALM/HrU0nZ_Eeu4/s1600/Screen+shot+2011-03-31+at+6.33.10+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://2.bp.blogspot.com/-9jyj3eogHeA/TZQuVeSPAUI/AAAAAAAAALM/HrU0nZ_Eeu4/s400/Screen+shot+2011-03-31+at+6.33.10+PM.png" width="381" /&gt;&lt;/a&gt;&lt;/div&gt;Ideally, the service would be free for the simple case, and cost a dollar or two for a more advanced case. The free case would allow a large corpus of examples to be collected and the system refined, and the complex case would provide useful pay-only features such as: save, private, download in preferred language, and pair-program with the system. This last case would be the truly useful incarnation of the system where one could modify the expressions or programs and I/O and iterate the solver until a desired solution was achieved.&lt;br /&gt;
&lt;br /&gt;
I still think it is a good idea, but I just couldn't think of a good way to&amp;nbsp;monetize&amp;nbsp;it. It is an interesting technical challenge and the service would make an interesting novelty, but it is not an earner and I'd rather hack on other things for now.&lt;br /&gt;
&lt;br /&gt;
I have some designs and small technical prototypes for the ensemble of&amp;nbsp;inductive&amp;nbsp;automatic programming solvers and heuristic solvers that would be needed, but I'm keeping the details to myself for now, just in case the idea gets some traction or I can think of a better way to make a few bucks from it (Excel plug-in?).&lt;br /&gt;
&lt;br /&gt;
Sure the general problem is intractable, but the&amp;nbsp;specific&amp;nbsp;case is results-driven. It only has to be good enough for the users needs - a monkey patch for whatever data conversion or scripting they happen to be doing at the time. The subset of actual problems that people have will be much smaller than all of possibility space, and the web is a fertile ground for seed and test instances.&lt;br /&gt;
&lt;br /&gt;
Anyway, if anyone has a burning desire for either or both of these services to exist or has some further ideas, drop me a comment or an &lt;a href="mailto:jason.brownlee05@gmail.com"&gt;email&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/946587890062083577-8003075357821220095?l=www.neverreadpassively.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NeverReadPassively/~4/GYepgaNgfDw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.neverreadpassively.com/feeds/8003075357821220095/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=946587890062083577&amp;postID=8003075357821220095" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/946587890062083577/posts/default/8003075357821220095?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/946587890062083577/posts/default/8003075357821220095?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NeverReadPassively/~3/GYepgaNgfDw/automatically-generate-regular.html" title="Automatically Generate Regular Expressions (regex)" /><author><name>Jason</name><uri>http://www.blogger.com/profile/11283603094324243247</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://3.bp.blogspot.com/_Nm8O-3rVrk0/Sk_iFShcXkI/AAAAAAAAAFc/cUqZBpgrQ9Y/S220/Snapshot.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-mlvJHLUPc0A/TZQuU1RK9CI/AAAAAAAAALI/1ywge9JUcP8/s72-c/Screen+shot+2011-03-31+at+6.27.37+PM.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://www.neverreadpassively.com/2011/04/automatically-generate-regular.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0ECQXs5fip7ImA9WhZSFk0.&quot;"><id>tag:blogger.com,1999:blog-946587890062083577.post-8974022417837366600</id><published>2011-04-01T07:01:00.000+11:00</published><updated>2011-04-01T07:01:00.526+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-01T07:01:00.526+11:00</app:edited><title>April Challenge: Watch 1 Tech Video Every Day</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh6.googleusercontent.com/-9XLX5HSf2wE/TY2NG3shcqI/AAAAAAAAAK8/KjKd9qpS3wU/s1600/252772357_e5e0115d32_b.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="213" src="https://lh6.googleusercontent.com/-9XLX5HSf2wE/TY2NG3shcqI/AAAAAAAAAK8/KjKd9qpS3wU/s320/252772357_e5e0115d32_b.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;I was recently thinking about my &lt;a href="http://www.neverreadpassively.com/2011/03/junk-food-media-consumption.html"&gt;junkfood media&amp;nbsp;consumption&lt;/a&gt;. My thesis was that one could apply the same&amp;nbsp;discipline&amp;nbsp;that one uses for discerning the food they eat to media consumption, ideally with the intention of self improvement.&lt;br /&gt;
&lt;br /&gt;
If one must consume to relax (as opposed to &lt;a href="http://en.wikipedia.org/wiki/Cognitive_Surplus"&gt;drinking gin&lt;/a&gt;), then why not impose&amp;nbsp;discipline to&amp;nbsp;avoid the fast food of consumption (reading online news, twitter, American TV shows, etc.) and consume with intent.&lt;br /&gt;
&lt;br /&gt;
The April challenge is self imposed (unlike the &lt;a href="http://www.neverreadpassively.com/2011/02/march-challenge-shed-weight-get-ipad.html"&gt;March Challenge&lt;/a&gt;) and is as follows:&lt;br /&gt;
&lt;blockquote&gt;&lt;i&gt;Watch one free online technical video for each day of April. For each day missed, you (I) must donate $20 to .NET open source projects.&amp;nbsp;&lt;/i&gt;&lt;/blockquote&gt;I'm experimenting with a "loss" as a motivating facto, rather than the "gain" of the March challenge. I'm really starting to get into this public challenge approach to self improvement :) Also, I recently sold our &lt;a href="http://www.neverreadpassively.com/2011/03/family-media-player.html"&gt;family media solution&lt;/a&gt;, so there is far less opportunity for general lazy consumption.&lt;br /&gt;
&lt;br /&gt;
Seriously, why would one write open source using the .NET framework? It has oxymoron written all over it.&amp;nbsp;Donating&amp;nbsp;to open source is good, and $20 is not too much pain if I miss a day. It quickly starts adding up though, 5 days is a $100 and I'd much rather give that $100 to some noble device&amp;nbsp;driver hacker working on Linux than some .NET hacker&amp;nbsp;playing&amp;nbsp;around in Visual Studio, or whatever it is they do.&lt;br /&gt;
&lt;br /&gt;
This challenge does not&amp;nbsp;preclude my normal media consumption, although it imposes constraint on at least one hour of that dedicated time, typically in the evenings. If I have a busy night, I guess I'll need to make time in the morning or during my lunch hour. I intend to&amp;nbsp;maintain&amp;nbsp;a spreadsheet of what I watch, it's duration, and its URL. I'm sure I'll think of ways to slice and dice this collected data.&lt;br /&gt;
&lt;br /&gt;
Some sources of media may include:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.ted.com/talks"&gt;TED talks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/user/GoogleTechTalks"&gt;Google Tech Talks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.apple.com/education/itunes-u/"&gt;iTunes U&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.khanacademy.org/"&gt;Khan Academy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;I am passionate about technical topics,&amp;nbsp;specifically&amp;nbsp;Artificial Intelligence and Machine Learning, so this directed form of media consumption does align with my interests. I have to focus and&amp;nbsp;concentrate&amp;nbsp;for tech talk, take notes, think, quite different from what I need to do when I consume acquired TV shows. It will be interesting if I can/should switch to more passive consumption for interesting subject matter (what if I&amp;nbsp;forget&amp;nbsp;something amazing!?!). Alternatively, the&amp;nbsp;penalty&amp;nbsp;for remaining active in "relax time" may be worse,&amp;nbsp;irritability,&amp;nbsp;increased&amp;nbsp;tiredness, etc. It will be an interesting experiment.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;I'm looking forward to this challenge!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;Image copyright by&amp;nbsp;&lt;a href="http://www.flickr.com/photos/schmilblick/252772357/"&gt;schmilblick&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/946587890062083577-8974022417837366600?l=www.neverreadpassively.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NeverReadPassively/~4/9pgo842ItLg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.neverreadpassively.com/feeds/8974022417837366600/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=946587890062083577&amp;postID=8974022417837366600" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/946587890062083577/posts/default/8974022417837366600?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/946587890062083577/posts/default/8974022417837366600?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NeverReadPassively/~3/9pgo842ItLg/april-challenge-watch-1-tech-video.html" title="April Challenge: Watch 1 Tech Video Every Day" /><author><name>Jason</name><uri>http://www.blogger.com/profile/11283603094324243247</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://3.bp.blogspot.com/_Nm8O-3rVrk0/Sk_iFShcXkI/AAAAAAAAAFc/cUqZBpgrQ9Y/S220/Snapshot.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh6.googleusercontent.com/-9XLX5HSf2wE/TY2NG3shcqI/AAAAAAAAAK8/KjKd9qpS3wU/s72-c/252772357_e5e0115d32_b.jpg" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://www.neverreadpassively.com/2011/04/april-challenge-watch-1-tech-video.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEQGQHs7fCp7ImA9WhZSFUw.&quot;"><id>tag:blogger.com,1999:blog-946587890062083577.post-6088448480684091913</id><published>2011-03-31T07:10:00.008+11:00</published><updated>2011-03-31T07:18:41.504+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-31T07:18:41.504+11:00</app:edited><title>March Challenge: All Over</title><content type="html">Today is the last day of March, and the last day of my &lt;a href="http://www.neverreadpassively.com/2011/02/march-challenge-shed-weight-get-ipad.html"&gt;March Challenge to lose 10 kilograms&lt;/a&gt;. I did my final weigh-in this morning. The results were as I had expected&amp;nbsp;earlier: I did not lose enough weight to get an iPad. No big deal, I didn't know what I would do with one anyway :)&lt;br /&gt;
&lt;br /&gt;
I lost a total of &lt;b&gt;8 kilograms (17.63 pounds)&lt;/b&gt;, falling 2 kilograms short of my goal. The following graph shows my weight loss over the month in kilograms and days. I think that big initial drop was some water weight or something. I&amp;nbsp;remember&amp;nbsp;my first few runs took a bit out of me, sweated a lot and weighed&amp;nbsp;myself&amp;nbsp;right after the runs. In recent weeks I've been eating light lunches and don't even feel hungry (shrunk&amp;nbsp;stomach?)&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-4a420FswUHk/TZONTULsTlI/AAAAAAAAALA/N098uCKP5Ek/s1600/chart_3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-4a420FswUHk/TZONTULsTlI/AAAAAAAAALA/N098uCKP5Ek/s1600/chart_3.png" /&gt;&lt;/a&gt;&lt;/div&gt;My regime was&amp;nbsp;strict. I weighed myself each morning, typically before breakfast. I stuck to a&amp;nbsp;&lt;a href="http://www.fourhourworkweek.com/blog/2007/04/06/how-to-lose-20-lbs-of-fat-in-30-days-without-doing-any-exercise/"&gt;slow carb diet&lt;/a&gt;&amp;nbsp;and avoided all white carbohydrate foods (rice, flower, sugar, potato, etc). I did not have one day off a week as suggested in that diet. I did crave foods, but not badly enough to require a day off the diet. I ate a lot of beans, meat, and&amp;nbsp;vegetable, with one piece of fruit most days (technically fruit is bad, natural sugars and all). I kept making the same dish (&lt;a href="http://en.wikipedia.org/wiki/Chili_con_carne"&gt;chili con carne&lt;/a&gt;&amp;nbsp;with tons of kidney beans) and ate it one or &amp;nbsp;two times a day. I also had a week and a half of canned tuna lunches. I mostly stuck to a small serve of baked beans for breakfast. If we ate out, I carefully chose my dishes, focusing on lean meat and&amp;nbsp;vegetable. I did not stop drinking coffee (black, no sugar), and stuck to a glass of red wine each night (a man needs to relax). I did have one&amp;nbsp;sneaky&amp;nbsp;beer over the whole month, it was worth it!&lt;br /&gt;
&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;I walked for 1 hour every work day (I do anyway), and I ran 5km most days either before or after work. I qualitatively noticed more wait loss when I stopped running for a few days!? Once I noticed, I stopped running all together (last week and a half of the month). This might just be the inertia of my system or an interplay of&amp;nbsp;cardio&amp;nbsp;and the diet...&lt;br /&gt;
&lt;br /&gt;
I also measured the&amp;nbsp;circumference&amp;nbsp;of my belly at the belly button each day. I have sort of a pair shape, so this seemed an effective measure of mid-section fat. I lost a total of &lt;b&gt;6.55 centimeters (2.57 inches)&lt;/b&gt; from my belly! The following shows my belly circumference decrease in centimeters and days. That data shows a lot more variability than weight.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-CHL08Oy8KQw/TZONT5H-dCI/AAAAAAAAALE/KYwGWsqBt7I/s1600/chart_4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-CHL08Oy8KQw/TZONT5H-dCI/AAAAAAAAALE/KYwGWsqBt7I/s1600/chart_4.png" /&gt;&lt;/a&gt;&lt;/div&gt;I feel that the month was a success regardless of meeting the initial (and aggressive) 10kg target. I feel fitter and I also feel like my brain is working better. I have been more productive both at work and in my after hours pursuits. More recently, I've been abuzz with ideas, and am furiously writing blog posts, talking peoples ears off and writing a lot.&lt;br /&gt;
&lt;br /&gt;
My wife has proposed a 15 kilogram challenge for March through to the end of April. That means I would need to lose a further 7 Kilograms over the next 30 days (easy enough). I am sticking with the daily measuring&amp;nbsp;schedule, exercise, and diet. If I make the April 30 weigh-in then that is a bonus. Ideally, I would like to hit close to my running weight, but I'm still a fair way off.&lt;br /&gt;
&lt;br /&gt;
If I had to do the challenge again, I would change the design. A loss is a bigger motivator than a gain. Rather than gaining an iPad for winning the challenge, I should have had to buy an iPad for someone else, putting my out of pocket for losing. To make it more interesting, I should have to buy an iPad for someone I don't like very much, or for someone who doesn't need or want it. That being said, I don't want to do that for the so-expanded March-April challenge.&lt;br /&gt;
&lt;br /&gt;
I will re-visit these graphs at the end of April.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/946587890062083577-6088448480684091913?l=www.neverreadpassively.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NeverReadPassively/~4/VKtO944Ir7U" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.neverreadpassively.com/feeds/6088448480684091913/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=946587890062083577&amp;postID=6088448480684091913" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/946587890062083577/posts/default/6088448480684091913?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/946587890062083577/posts/default/6088448480684091913?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NeverReadPassively/~3/VKtO944Ir7U/march-challenge-all-over.html" title="March Challenge: All Over" /><author><name>Jason</name><uri>http://www.blogger.com/profile/11283603094324243247</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://3.bp.blogspot.com/_Nm8O-3rVrk0/Sk_iFShcXkI/AAAAAAAAAFc/cUqZBpgrQ9Y/S220/Snapshot.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-4a420FswUHk/TZONTULsTlI/AAAAAAAAALA/N098uCKP5Ek/s72-c/chart_3.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.neverreadpassively.com/2011/03/march-challenge-all-over.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEIBQ34ycSp7ImA9WhZTF0U.&quot;"><id>tag:blogger.com,1999:blog-946587890062083577.post-4272882056684411986</id><published>2011-03-22T20:30:00.032+11:00</published><updated>2011-03-22T20:35:52.099+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-22T20:35:52.099+11:00</app:edited><title>Buying a House at Auction: Some Lessons</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-9f-fmFmpKw8/TYhbvnc-CTI/AAAAAAAAAKw/5cbLvjCd6qE/s1600/ForSale.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="212" src="https://lh5.googleusercontent.com/-9f-fmFmpKw8/TYhbvnc-CTI/AAAAAAAAAKw/5cbLvjCd6qE/s320/ForSale.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Last weekend we attended an auction with the intention to buy. We did our homework and expected to come home with a deal or nothing at all. We ended up not getting the house, which was fine, it fit into our expectations. Before we move on to more harrowing house auction experiences, I wanted to capture what happened, the things we did right, and some lessons we learned for next time.&lt;br /&gt;
&lt;br /&gt;
We got to the house early and did the pre-auction walk through. We opened cupboards, draws and generally tried to get a final feeling for the quality of the house. We did the walk through with my parents who had no inhibitions about commenting on all the good qualities on the&amp;nbsp;property&amp;nbsp;(shh). This was good because it confirmed some of my own thoughts, but also further tipped our hand that we were interested in the place to anyone listening in. The auction kicked off with a solid but expected figure. I stood and tried to look as&amp;nbsp;nonchalant&amp;nbsp;as I could. There were no bids. The auctioneer put in a vendor bid of an extra $10K. One, Two, Three.&lt;br /&gt;
&lt;br /&gt;
The auctioneer walked back inside and conferred with the vendor, and eventually came back out. "&lt;i&gt;Time to get serious&lt;/i&gt;" he said, looking right at my wife and I. The auctioneer's minions moved about the crowd, and one started needling my father, and then my wife and I. "&lt;i&gt;This is your last chance to get an&amp;nbsp;exclusive&amp;nbsp;opportunity on this property&lt;/i&gt;". Whatever. I stood my ground. I my head I was thinking "No one has bid, the market is not interested in this property, let is pass in then negotiate". Last call, One, Two... (my wife turned to me "&lt;i&gt;Should we bid $5K?&lt;/i&gt;" she asked. "&lt;i&gt;Nope&lt;/i&gt;" I said.) ... and Three.&lt;br /&gt;
&lt;br /&gt;
The auctioneers made noises about a Dutch auction. I wasn't too concerned. I saw one or two other&amp;nbsp;couples&amp;nbsp;walk into the house. We walked into the house knowing we could walk out at any time we wanted, it felt powerful. We learned the&amp;nbsp;unrealistically&amp;nbsp;high reserve and made a low offer, which involved reading and signing the contract. It was rejected. We inched up the offer. It was rejected. We made our final offer at our pre-agreed&amp;nbsp;fair price and draw a line in the sand. Eventually, it too was rejected. The vendors showed movement in their expectations, but not enough. We learned that there were three people in the room all trying to work the deal - a brother, sister and the sisters husband. I could imagine bickering and maybe even fighting, either of which might have worked in our favor if one of the group was powerfully motivated to sell.&lt;br /&gt;
&lt;br /&gt;
The agents worked us. In retrospect we didn't have to budge a dollar from our first offer. There appeared to be no one else in the house putting in offers, and the lack of bids suggested the markets sentiment towards the property at the asking price. The agents worked a few angles, trying to befriend us and convince us that they were on our side and wanted a deal, and&amp;nbsp;eventually&amp;nbsp;pushing us that we needed to get serious and make a reasonable offer.&lt;br /&gt;
&lt;br /&gt;
All -in-all it was a great learning experience, and most importantly, it didn't cost a cent. We noticed that the property is now back on the market for private sale at a price closer to our final offer. Maybe they'll call back in a week or two. In the mean time we have lined up a number of follow-on candidates and I'm looking forward to the games.&lt;br /&gt;
&lt;br /&gt;
Advice we were given: (I'm paraphrasing)&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Go to lots of auctions and get a feeling for the process. (awesome advice)&lt;/li&gt;
&lt;li&gt;Bid as little and as late as possible. (awesome advice)&lt;/li&gt;
&lt;li&gt;Be civil, don't be agressive (awesome advice, it's a big game)&lt;/li&gt;
&lt;li&gt;Agents lie, it's about their bottom line. (awesome advice)&lt;/li&gt;
&lt;li&gt;The reserve price is usually 5%, 8%, 10%, even 20% above the asking price (I've seen it many times in practice!)&lt;/li&gt;
&lt;li&gt;Stories of aggressive bidding, making the first bid and intimidating the other bidders from the beginning. (did not gel with me at all)&lt;/li&gt;
&lt;li&gt;Read the Section 32 many times, a solicitor can read it just as well as you can, why pay. (great advice)&lt;/li&gt;
&lt;li&gt;Location is what matters. (maybe for resale, but so does a comfortable place to live)&lt;/li&gt;
&lt;li&gt;Size of land is what matters. (sure, if you want to&amp;nbsp;demolish&amp;nbsp;and build units, not applicable)&lt;/li&gt;
&lt;li&gt;Pay extra to get a place you love. (na, humans are very adaptable, and houses can be&amp;nbsp;renovated)&lt;/li&gt;
&lt;li&gt;You must get a building inspection. (maybe, but only if I'm suspicious of the vendor/agent/property)&lt;/li&gt;
&lt;li&gt;Schools is what matters. (agreed it is a consideration)&lt;/li&gt;
&lt;/ul&gt;What we did right:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;We were not emotionally invested in the property. It was one of many and we talked plainly about the good features and the bad, and&amp;nbsp;focused&amp;nbsp;on the things that needed to be fixed/renovated&amp;nbsp;and their cost relative to a fair purchase price.&lt;/li&gt;
&lt;li&gt;We worked hard to estimate a fair price for the property based on an investigation of the area and recent sales. Regression is hard simply because the data is not available, but&amp;nbsp;attending&amp;nbsp;lots of auctions and looking at lots of houses helped to build a&amp;nbsp;qualitative&amp;nbsp;model.&lt;/li&gt;
&lt;li&gt;We clearly defined and agreed upon what&amp;nbsp;constituted&amp;nbsp;a deal, a fair price, our soft limit and our hard brick wall limit in terms of what we were willing to spend on the property.&lt;/li&gt;
&lt;li&gt;We read, re-read, and re-re-read the section 32. We researched all things that looked interesting and generally learned more about the documents it contained.&lt;/li&gt;
&lt;li&gt;We spoke with the agent a number of times. We called the agent and asked a bunch of dumb questions. This clearly tipped them off that we were interested in the place, but also allowed us to learn more about the property.&lt;/li&gt;
&lt;li&gt;We asked lots of questions about the vendors. We asked about their status (brother and sister), were they selling to buy (no), was it an investment (yes), etc.&lt;/li&gt;
&lt;li&gt;We talked to neighbours and asked about the street and the other neighbours. This is all to my wife's credit. She seems to have no fear in approaching random people and speaking plainly. We got some useful tidbits. &amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;What we did wrong:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;We did not get a copy of the contract before the auction. Normally the contract is provided with the Section 32, but in this case it wasn't.&lt;/li&gt;
&lt;li&gt;We should have addressed a builder's&amp;nbsp;inspection&amp;nbsp;before the auction. We tried to organize this late in the week before the auction and even tried to have the contract amended on the spot to be subject to a builders inspection. Both of these measures were too late (although, I thought we should be able to amend and initial a contract - it's just a contract after all).&amp;nbsp;&lt;/li&gt;
&lt;li&gt;We should not have increased our offer. The market was not interested in the property at the auction price. We should have made our offer at the auction price and left it there. This is&amp;nbsp;debatable, because one could argue that the auction price was not necessarily a fair price (the vendor needs to be&amp;nbsp;placated&amp;nbsp;as well).&lt;/li&gt;
&lt;li&gt;The only stream of information is from the auctioneer and his minions. How do we really know what the vendor was saying or thinking? All we have to go off is what we have been told by the auctioneer. Next time I will listen to them less and try to just think through the situation.&lt;/li&gt;
&lt;/ul&gt;I get the feeling that there are a lot of anecdotes and lot of folk advice, but few people actually study this process (I do know of some exceptions). Sometimes I get quite conflicting advice from seasoned house buyers. With that in mind&amp;nbsp;I'm sure my "lessons learned" would be a different story if I had messed it up. I just hope I can keep my head, try to think rationally and see the big picture next time.&lt;br /&gt;
&lt;br /&gt;
If you've got any additional advice, I'd love to hear it.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;Image copyright by&amp;nbsp;&lt;a href="http://www.flickr.com/photos/imuttoo/3921086059/"&gt;Ian Muttoo&lt;/a&gt;.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/946587890062083577-4272882056684411986?l=www.neverreadpassively.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NeverReadPassively/~4/39DD1hA5HwY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.neverreadpassively.com/feeds/4272882056684411986/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=946587890062083577&amp;postID=4272882056684411986" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/946587890062083577/posts/default/4272882056684411986?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/946587890062083577/posts/default/4272882056684411986?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NeverReadPassively/~3/39DD1hA5HwY/buying-house-at-auction-some-lessons.html" title="Buying a House at Auction: Some Lessons" /><author><name>Jason</name><uri>http://www.blogger.com/profile/11283603094324243247</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://3.bp.blogspot.com/_Nm8O-3rVrk0/Sk_iFShcXkI/AAAAAAAAAFc/cUqZBpgrQ9Y/S220/Snapshot.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh5.googleusercontent.com/-9f-fmFmpKw8/TYhbvnc-CTI/AAAAAAAAAKw/5cbLvjCd6qE/s72-c/ForSale.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.neverreadpassively.com/2011/03/buying-house-at-auction-some-lessons.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUcGQXk9cCp7ImA9WhZTEUU.&quot;"><id>tag:blogger.com,1999:blog-946587890062083577.post-290932969903995322</id><published>2011-03-15T20:57:00.000+11:00</published><updated>2011-03-15T20:57:00.768+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-15T20:57:00.768+11:00</app:edited><title>Sony NEX-5</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;a href="https://lh5.googleusercontent.com/-kDCBwf5ixgM/TX8tt1PKhEI/AAAAAAAAAKc/jgAf3sNA5ec/s1600/NEX5KS.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="183" src="https://lh5.googleusercontent.com/-kDCBwf5ixgM/TX8tt1PKhEI/AAAAAAAAAKc/jgAf3sNA5ec/s320/NEX5KS.png" width="320" /&gt;&lt;/a&gt;So I bit the bullet and bought the Sony NEX-5, and I'm happy. The camera was built for me.&lt;br /&gt;
&lt;br /&gt;
It has the body of a compact, the sensor of a DSLR and allows me to switch lenses as needed. It provides point and shoot in an "intelligent automatic" configuration, and then provides all the DSLR features in software for when I can be bothered.&lt;br /&gt;
&lt;br /&gt;
I don't want to list all the facts and features. There are plenty of sites that do that and I'll link to them. I'll just go over the few things that I'm really pleased with.&lt;br /&gt;
&lt;br /&gt;
The camera can do Full HD at 1080i resolution and stereo sound. I bought the version that included two kit lenses, specifically a 16mm pancake (wide angle) and an 18-55mm zoom. There is a 200mm lens&amp;nbsp;around&amp;nbsp;for it that I'm secretly thinking about. The camera has hardly any buttons and all the core functionality is handled in software. Buttons are&amp;nbsp;programable, so I can configure my favourite features to be one step rather than menu-driven. The camera features slide-panorama, adjustable background defocus (effect- rather than setting-driven behaviour), auto HDR and the list goes on. Mucking around with it, my happy-snaps all of a sudden look a whole hell of a lot better!&lt;br /&gt;
&lt;br /&gt;
I managed to&amp;nbsp;bargain&amp;nbsp;in a 16GB memory card and carry bag when I purchased it, so I was ready to go&amp;nbsp;immediately.&amp;nbsp;The only thing I think I might need at this stage is a second battery.&lt;br /&gt;
&lt;br /&gt;
For some more information on the camera see:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Sony_Alpha_NEX-5"&gt;Sony NEX-5&lt;/a&gt; on Wikipedia&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.sonystyle.com/webapp/wcs/stores/servlet/ProductDisplay?catalogId=10551&amp;amp;storeId=10151&amp;amp;langId=-1&amp;amp;productId=8198552921666192716#overview"&gt;Official Sony product page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.dpreview.com/reviews/sonynex5nex3/default.asp"&gt;dpreview review of NEX-3/5&lt;/a&gt;&amp;nbsp;(must read if you're keen on this beast!)&lt;/li&gt;
&lt;/ul&gt;Check out the following Sony advertisements. Specifically, the &lt;a href="http://blog.discover.sonystyle.com/tag/david-mclain"&gt;David McLain shorts&lt;/a&gt; are good clean fun.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=Qh_Rb5gAW40"&gt;Sony NEX Preview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=CEKkYS3jzv0"&gt;Sony Asia Pacific Ad&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=0qtGAinZsy0"&gt;Sony UK Ad&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=wz5PJvNVx5U"&gt;David McLain:&amp;nbsp;Available Low Light&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=SSrYXjtrI40"&gt;David McLain: Sweep Panorama&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=oPFClA63mhM"&gt;David McLain: Creative Control&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=mjfG78xGfjU"&gt;David McLain: HD Video&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=kwi3s_-jVDo"&gt;David McLain: Overview&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;The day after I bought it I set myself a small assignment to try out as many features as I could throughout my normal day. I managed quite nicely and thought I'd put up some of the nicer shots (click to enlarge). I'm clearly no photographer.&lt;br /&gt;
&lt;br /&gt;
The following shot was taken with the background defocus feature and the 55mm lens.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-ln2mj5OqDXQ/TX8wCbe2uDI/AAAAAAAAAKk/94YbzYUZXkA/s1600/DSC00034.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="425" src="https://lh3.googleusercontent.com/-ln2mj5OqDXQ/TX8wCbe2uDI/AAAAAAAAAKk/94YbzYUZXkA/s640/DSC00034.JPG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;The following is a shot taken with the macro feature and the 55mm lens.&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-SPju9RCvHp0/TX8v7CaZx5I/AAAAAAAAAKg/1j0i-6Z6Wm8/s1600/DSC00030.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="https://lh5.googleusercontent.com/-SPju9RCvHp0/TX8v7CaZx5I/AAAAAAAAAKg/1j0i-6Z6Wm8/s640/DSC00030.jpg" width="425" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Finally, this shot was taken with the automatic&amp;nbsp;panoramic&amp;nbsp;sweep option that stitches the image together in the camera.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-ShxzXcZVdk0/TX8wW51I_nI/AAAAAAAAAKo/Cp0iFCQbsZ8/s1600/DSC00100.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="144" src="https://lh3.googleusercontent.com/-ShxzXcZVdk0/TX8wW51I_nI/AAAAAAAAAKo/Cp0iFCQbsZ8/s640/DSC00100.JPG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
As I said, I'm no photographer, but this camera is a joy to use.&lt;br /&gt;
&lt;br /&gt;
I'm trying to organize a "&lt;i&gt;go to the zoo and play with camera's&lt;/i&gt;" day with some mates to really burn in this new toy. I need to hang around some guys who can remind me what ISO and&amp;nbsp;aperture&amp;nbsp;are all about again so I can make better use of the features. Looking forward to it!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/946587890062083577-290932969903995322?l=www.neverreadpassively.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NeverReadPassively/~4/jdJSSG_DsRo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.neverreadpassively.com/feeds/290932969903995322/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=946587890062083577&amp;postID=290932969903995322" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/946587890062083577/posts/default/290932969903995322?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/946587890062083577/posts/default/290932969903995322?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NeverReadPassively/~3/jdJSSG_DsRo/sony-nex-5.html" title="Sony NEX-5" /><author><name>Jason</name><uri>http://www.blogger.com/profile/11283603094324243247</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://3.bp.blogspot.com/_Nm8O-3rVrk0/Sk_iFShcXkI/AAAAAAAAAFc/cUqZBpgrQ9Y/S220/Snapshot.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh5.googleusercontent.com/-kDCBwf5ixgM/TX8tt1PKhEI/AAAAAAAAAKc/jgAf3sNA5ec/s72-c/NEX5KS.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.neverreadpassively.com/2011/03/sony-nex-5.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE8MQX8-fSp7ImA9WhZTEEg.&quot;"><id>tag:blogger.com,1999:blog-946587890062083577.post-737292177306470154</id><published>2011-03-14T08:48:00.150+11:00</published><updated>2011-03-14T08:48:00.155+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-14T08:48:00.155+11:00</app:edited><title>Junk food media consumption</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh6.googleusercontent.com/-kiwTH-VAxz4/TXs5iHAK0bI/AAAAAAAAAKU/ulvwFuDkm4o/s1600/800px-Flickr_jef_31871680--In-N-Out_Cheeseburgers.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="https://lh6.googleusercontent.com/-kiwTH-VAxz4/TXs5iHAK0bI/AAAAAAAAAKU/ulvwFuDkm4o/s320/800px-Flickr_jef_31871680--In-N-Out_Cheeseburgers.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Make things. &lt;a href="http://www.google.com/search?q=work+on+stuff+that+matters"&gt;Work on stuff that matters&lt;/a&gt;. Produce. I try to optimize my time such that I'm producing more than consuming, but we all have limits. You cannot work all the time, and more than&amp;nbsp;axiomatic&amp;nbsp;advice, I have learned this lesson the hard, more than once. Thinking turns to mud long after the sun goes down and no&amp;nbsp;doubt&amp;nbsp;productivity with it. Over an extended period, eventually&amp;nbsp;you burn out.&lt;br /&gt;
&lt;br /&gt;
I make time in the early mornings before work to hack and I do the same thing with pockets of time after work. But I also make time to not-hack. I'm not just talking about making time for loved ones or whatever, I talking about making time for &lt;b&gt;active consumption&lt;/b&gt;.&amp;nbsp;I now take it as assumed that one needs to turn off, that that turning off more than likely means consuming media.&lt;br /&gt;
&lt;br /&gt;
So, is sitting in front of the TV for a few hours a total write off? Is it better or worse than reading news articles on the web? How about reading science fiction?&lt;br /&gt;
&lt;br /&gt;
We're not massive TV consumers in our house, we have a small CRT and if when we do use it, it's to watch an episode of a carefully&amp;nbsp;procured&amp;nbsp;show via our &lt;a href="http://www.neverreadpassively.com/2011/03/family-media-player.html"&gt;Media player rig&lt;/a&gt;. To find out what is happening in the world or what the weather will be, we check a local or internal website, typically once or twice a day (generally we don't consume broadcast TV).&lt;br /&gt;
&lt;br /&gt;
Nevertheless, even with a "carefully&amp;nbsp;procured&amp;nbsp;show" or movie, I feel guilty after sitting impassively for an hour or two. I could be watching a&amp;nbsp;documentary&amp;nbsp;and taking notes, I could be reading a text book and taking notes. Should I be?&lt;br /&gt;
&lt;br /&gt;
The natural breakdown (in my head) of permissive media consumption is as follows (descending):&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Socially (the other humans)&lt;/li&gt;
&lt;li&gt;Reading (books, the web!?)&lt;/li&gt;
&lt;li&gt;Listening (radio, music!?)&lt;/li&gt;
&lt;li&gt;Watching (video, TV, movies!?)&lt;/li&gt;
&lt;/ol&gt;Here, I use permissive to refer to general social acceptance. For example: I watched LOST last night &amp;lt; I listened to radio national last night &amp;lt; I read an awesome book last night &amp;lt; I went to a dinner part last night. Here the ordinal relationship between these activities is something like utility or benefit. One may be interested in optimizing such things.&lt;br /&gt;
&lt;br /&gt;
Maybe this is generally accepted, at least I believe other people around me might have similar opinions. The breakdown might be as such because there may be built-in assumptions around the level of attention required or the level of knowledge&amp;nbsp;acquisition. I don't like this argument all by itself. How useful is having partial memories of random tech factoids in your head from the 20 technical articles one reads in a sitting? Is this better or worse than one deep but inconsequential conversation, or compared to reading a Hugo award winning novel?&amp;nbsp;Naturally, the argument is not so simple. What I have pointed to is the obviously orthogonal concern of content.&lt;br /&gt;
&lt;br /&gt;
A lot of my non-work time is concerned with consumption of some sort or another. I want to be productive and make good use of my time. Can a balance be found? Can or should one optimize or actively consume media to "turn off"?&lt;br /&gt;
&lt;br /&gt;
I have been on &lt;a href="http://www.neverreadpassively.com/2011/02/march-challenge-shed-weight-get-ipad.html"&gt;my health kick&lt;/a&gt; for nearly two weeks now and I've been thinking. It is easy to snuggle up and watch an episode of some TV show, but is that like eating junk food? To be&amp;nbsp;generally&amp;nbsp;making better use of my time on this planet, should I in fact be watching something more education? A&amp;nbsp;documentary? Something more cultured? An opera? Should I be reading the books from my shelf more than slurping down popular tech articles?&lt;br /&gt;
&lt;br /&gt;
One has to eat as one has to "turn off", but I now think the&amp;nbsp;discipline&amp;nbsp;one applies to the consumption of food applies just as equally to ones consumption of media.&lt;br /&gt;
&lt;br /&gt;
Do I simply have the taste for science fiction television shows and technical new articles on the web? Are they fatty foods I could be doing better without or do they broaden me, my imagination, my dreams?&amp;nbsp;ultimately&amp;nbsp;my personality? Is this even testable?&lt;br /&gt;
&lt;br /&gt;
There's lots of&amp;nbsp;rhetoric&amp;nbsp;here, I don't the&amp;nbsp;answers, but I am also beginning to think that this generalized&amp;nbsp;discipline of consumption may also apply to production and making things.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;Image from &lt;a href="http://en.wikipedia.org/wiki/File:Flickr_jef_31871680--In-N-Out_Cheeseburgers.jpg"&gt;Wikipedia&lt;/a&gt;.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/946587890062083577-737292177306470154?l=www.neverreadpassively.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NeverReadPassively/~4/6nEI7bcxN2M" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.neverreadpassively.com/feeds/737292177306470154/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=946587890062083577&amp;postID=737292177306470154" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/946587890062083577/posts/default/737292177306470154?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/946587890062083577/posts/default/737292177306470154?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NeverReadPassively/~3/6nEI7bcxN2M/junk-food-media-consumption.html" title="Junk food media consumption" /><author><name>Jason</name><uri>http://www.blogger.com/profile/11283603094324243247</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://3.bp.blogspot.com/_Nm8O-3rVrk0/Sk_iFShcXkI/AAAAAAAAAFc/cUqZBpgrQ9Y/S220/Snapshot.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh6.googleusercontent.com/-kiwTH-VAxz4/TXs5iHAK0bI/AAAAAAAAAKU/ulvwFuDkm4o/s72-c/800px-Flickr_jef_31871680--In-N-Out_Cheeseburgers.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.neverreadpassively.com/2011/03/junk-food-media-consumption.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUQDRHoyeSp7ImA9Wx9aGUs.&quot;"><id>tag:blogger.com,1999:blog-946587890062083577.post-603522521350228230</id><published>2011-03-13T09:01:00.098+11:00</published><updated>2011-03-13T09:02:55.491+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-13T09:02:55.491+11:00</app:edited><title>Publishing a book on Lulu</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-mf1U7m3X7L4/TXsFtkw1w1I/AAAAAAAAAKQ/pqMP-6uUz0g/s1600/Lulu_Logo.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="111" src="https://lh3.googleusercontent.com/-mf1U7m3X7L4/TXsFtkw1w1I/AAAAAAAAAKQ/pqMP-6uUz0g/s320/Lulu_Logo.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;I&amp;nbsp;published&amp;nbsp;my most recent book "&lt;a href="http://www.cleveralgorithms.com/"&gt;Clever Algorithms&lt;/a&gt;" using &lt;a href="http://www.lulu.com/publish/index.php?cid=en_tab_publish"&gt;Lulu&lt;/a&gt;. The process meet my expectations and I cannot be happier with how the whole process unfolded.&lt;br /&gt;
&lt;br /&gt;
I thought it best to capture some of my notes and findings before I forget them completely. I do intend to &lt;a href="http://www.neverreadpassively.com/2011/02/machine-learning-jumpstart.html"&gt;write and publish more books&lt;/a&gt; in the future, and I will more than&amp;nbsp;likely&amp;nbsp;use Lulu for the process.&lt;br /&gt;
&lt;br /&gt;
To get started, I bought two books from Lulu with the same general market as my book. I wanted to get a feeling for the&amp;nbsp;quality&amp;nbsp;of the printing, the feel of the paper, the clarity of the cover images, and generally a feel for the publisher themselves. I purchased:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.lulu.com/product/paperback/a-field-guide-to-genetic-programming/2502912?productTrackingContext=search_results/search_shelf/center/1"&gt;A Field Guide to Genetic Programming&lt;/a&gt;, by Poli, Langdon, McPhee, 2008 (sales rank 368)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.lulu.com/product/paperback/essentials-of-metaheuristics/15028803?productTrackingContext=search_results/search_shelf/center/1"&gt;Essentials of Metaheuristics&lt;/a&gt;, by Luke, 2010 (sales rank 25,727)&lt;/li&gt;
&lt;/ul&gt;The first book on Genetic Programming was very close fit for what I was trying to achieve. They provided a free PDF version of their book on Lulu, and priced their paperback low. Also the form-factor matched what I wanted for Clever Algorithms (6x9 inches).&lt;br /&gt;
&lt;br /&gt;
The second book also had a similar model, providing a free PDF on a separate webpage and a modestly priced paperback. Interesting, Luke chose a USLetter form-factor for the book, likely keeping with the "course notes" intention of the text. Also, the paper quality was better, where Luke seemed to have chosen a whiter white rather than the default&amp;nbsp;beige.&lt;br /&gt;
&lt;br /&gt;
I thought both paperbacks were well made, the binding was solid, the books held together nicely. Most importantly the text was clearly presented.&lt;br /&gt;
&lt;br /&gt;
For the cover, I chose &lt;a href="http://99designs.com/"&gt;99Designs&lt;/a&gt;. I chose to go with &lt;a href="http://www.lulu.com/publish/books/"&gt;US Trade 6x9 inch&lt;/a&gt;&amp;nbsp;sized cover and provided templates for the front and back covers as well as the &lt;a href="http://connect.lulu.com/t5/Cover-Formatting/What-dimensions-should-my-one-piece-wraparound-cover-have/ta-p/33338"&gt;one piece&lt;/a&gt;. I bashed out a&amp;nbsp;&lt;a href="http://99designs.com/print-design/contests/cover-book-biologically-inspired-artificial-intelligence-60068/brief"&gt;brief&lt;/a&gt;&amp;nbsp;with some help from a friend&amp;nbsp;and&amp;nbsp;spent a lot of time over the course of the ~7 day competition discussion my expectations designers and providing detailed feedback on candidate designs. Eventually, I selected a top 8-10 designs and &lt;a href="http://www.reddit.com/r/MachineLearning/comments/ep4jk/help_vote_for_the_best_cover_for_my/"&gt;posted a message to the MachineLearning reddit&lt;/a&gt; (as well as friends and&amp;nbsp;colleagues) in order to tender votes (you can still see all the finalists up there).&amp;nbsp;Ultimately&amp;nbsp;I went with my gut and picked what I thought was the most complete and suitable design.&lt;br /&gt;
&lt;br /&gt;
Once I had a cover, I printed a proof copy of the book even though the copy was not&amp;nbsp;finalized. I ended up printing 2 or 3 proof copies to get the cover size, spine size and barcode perfect. I found some articles on the Lulu support website useful during this process, answering the general questions I had such as:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://connect.lulu.com/t5/Cover-Formatting/Will-my-ISBN-barcode-be-automatically-generated-on-my-one-piece/ta-p/33666"&gt;Will my ISBN barcode be automatically generated on my one-piece cover?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://connect.lulu.com/t5/Cover-Formatting/Tips-for-creating-your-one-piece-cover-PDF/ta-p/31513"&gt;Tips for creating your one-piece cover PDF&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://connect.lulu.com/t5/Cover-Formatting/What-dimensions-should-my-book-cover-images-have/ta-p/33279"&gt;What dimensions should my book cover images have?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://connect.lulu.com/t5/Interior-Formatting/PDF-Creation-Settings-How-can-I-be-sure-my-PDF-will-print/ta-p/33681"&gt;PDF Creation Settings (How can I be sure my PDF will print correctly?)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://connect.lulu.com/t5/ISBN-Distribution/Mandatory-Requirements-for-Distribution/ta-p/33632"&gt;Mandatory Requirements for Distribution&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;Lulu provided the ISBN and I used another program to generate the barcode image. I then used GIMP or Photoshop to add the barcode to the one-piece cover image and convert it to PDF.&lt;br /&gt;
&lt;br /&gt;
I prepared all my book content in LaTex (&lt;a href="https://github.com/jbrownlee/CleverAlgorithms"&gt;available under Creative Commons on github&lt;/a&gt;). The PDF created by my LaTex Makefile did not pass the Lulu checks. I think I had some embedded fonts inside some GNUPlot images. I simply used the command line too&amp;nbsp;ps2pdf13 to embed all fonts into the PDF.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
Finally, I purchased a distribution deal to release the book on Amazon and to make it&amp;nbsp;available&amp;nbsp;to traditional book stores. This and availability on Google Books are still pending, but should come through soon enough.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
One area of weakness has been eBook format. I didn't consider it, and in fact, I still don't think reading my book on a Kindle or an iPad is appropriate - it's a&amp;nbsp;reference&amp;nbsp;text. I need to think about this area, maybe even get a device and start paying around before I make up my mind.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
All in all, I've had a very positive experience. If I could change one thing, it would be the Lulu sites ability to report on the number of PDF downloads. I know there must have been many thousands of downloads, but I can only speculate - I'd love some hard numbers.&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/946587890062083577-603522521350228230?l=www.neverreadpassively.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NeverReadPassively/~4/Xawi8fylyZU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.neverreadpassively.com/feeds/603522521350228230/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=946587890062083577&amp;postID=603522521350228230" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/946587890062083577/posts/default/603522521350228230?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/946587890062083577/posts/default/603522521350228230?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NeverReadPassively/~3/Xawi8fylyZU/publishing-book-on-lulu.html" title="Publishing a book on Lulu" /><author><name>Jason</name><uri>http://www.blogger.com/profile/11283603094324243247</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://3.bp.blogspot.com/_Nm8O-3rVrk0/Sk_iFShcXkI/AAAAAAAAAFc/cUqZBpgrQ9Y/S220/Snapshot.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh3.googleusercontent.com/-mf1U7m3X7L4/TXsFtkw1w1I/AAAAAAAAAKQ/pqMP-6uUz0g/s72-c/Lulu_Logo.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.neverreadpassively.com/2011/03/publishing-book-on-lulu.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkUNRHg_eSp7ImA9Wx9aGU0.&quot;"><id>tag:blogger.com,1999:blog-946587890062083577.post-1400621570165679115</id><published>2011-03-12T15:31:00.001+11:00</published><updated>2011-03-12T15:31:35.641+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-12T15:31:35.641+11:00</app:edited><title>Pondering a new Camera</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-AokBLZ39qgY/TXqZ3q96s-I/AAAAAAAAAKM/EZoGggY6XfY/s1600/mju-DIGITAL-600-blue-front_m.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://lh3.googleusercontent.com/-AokBLZ39qgY/TXqZ3q96s-I/AAAAAAAAAKM/EZoGggY6XfY/s1600/mju-DIGITAL-600-blue-front_m.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;The last&amp;nbsp;digital&amp;nbsp;camera I bought was in 2006 for a trip to the States. It is an &lt;a href="http://www.olympus.co.uk/consumer/29_mju_digital_600.htm"&gt;Olympus mu Digital 600&lt;/a&gt;&amp;nbsp;(pictured left). It is smal, fast,&amp;nbsp;6 megapixel&amp;nbsp;but generally takes crappy photos. Specifically, the photos are really really grainy!&lt;br /&gt;
&lt;br /&gt;
I need a new camera. Bad.&lt;br /&gt;
&lt;br /&gt;
I did some thinking and figured I have 3 options: 1) Get another point and shoot&amp;nbsp;digital&amp;nbsp;and likely be let down again, 2) Get a full on&amp;nbsp;digital&amp;nbsp;SLR and re-learn how to drive one of those crazy things, 3) get an compact with DSLR-like features and try out the middle ground.&lt;br /&gt;
&lt;br /&gt;
What the hell do I know about digital cameras? I at least know that the crappy camera on the back of my mobile phone is not good for anything other than ad hocery. I sent the word out to my camera-knowledgeable friends, who came back with some generalities:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Point and Shoot&lt;/b&gt;: Small and high-resolution. Slow to focus. Poor zoom. Poor in low light. Look for fast shutter speed and selective focus.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Compact&lt;/b&gt;: Cheaper and smaller than a full DSLR. Better lens than point and shoot. Close to the same functionality as a basic DSLR.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;DSLR&lt;/b&gt;: Full control over everything. Expensive and physically large. Likely lack video support.&lt;/li&gt;
&lt;/ul&gt;I also got some specific product and brand suggestions:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Point and Shoot&lt;/b&gt;:&amp;nbsp;&lt;a href="http://www.canon.co.uk/For_Home/Product_Finder/Cameras/Digital_Camera/IXUS/IXUS_220_HS/"&gt;Canon IXUS 220 HS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Compact&lt;/b&gt;:&amp;nbsp;&lt;a href="http://www.canon.co.uk/for_home/product_finder/cameras/digital_camera/powershot/powershot_g9/index.aspx"&gt;Canon PowerShot G9&lt;/a&gt;,&amp;nbsp;&lt;a href="http://www.canon.co.uk/For_Home/Product_Finder/Cameras/Digital_Camera/PowerShot/PowerShot_G11/"&gt;Canon PowerShot G11&lt;/a&gt;, &lt;a href="http://www.sony.co.uk/hub/nex-compact-camera-system/range/nex-3"&gt;Sony&amp;nbsp;NEX-3&lt;/a&gt;, &lt;a href="http://www.sony.co.uk/hub/nex-compact-camera-system/range/nex-5"&gt;Sony NEX-5&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;DSLR&lt;/b&gt;: &lt;a href="http://www.sony.co.uk/product/dsi-body/slt-a33"&gt;Sony&amp;nbsp;SLT-A33&lt;/a&gt;, &lt;a href="http://www.sonystyle.com/webapp/wcs/stores/servlet/ProductDisplay?storeId=10151&amp;amp;catalogId=10551&amp;amp;langId=-1&amp;amp;productId=8198552921666254669"&gt;Sony&amp;nbsp;SLT-A55VL&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;Recommendation of the Canon G Series came from two different groups of people. I note that the most recent model is the &lt;a href="http://www.usa.canon.com/cusa/consumer/products/cameras/digital_cameras/powershot_g12"&gt;Canon PowerShot G12&lt;/a&gt;. Reading up a little on the Sony NEX series suggests some seriously cool tech on a seriously tiny frame!&lt;br /&gt;
&lt;br /&gt;
I think a compact is the way to go and I think the Sony and the Canon are good contenders. I intend to get myself to a camera shop or two and try out some of these models before making a decision.&lt;br /&gt;
&lt;br /&gt;
Thanks to Rod, Martin, Rick, and Hasan for the advice.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/946587890062083577-1400621570165679115?l=www.neverreadpassively.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NeverReadPassively/~4/FzuDbUahtjY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.neverreadpassively.com/feeds/1400621570165679115/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=946587890062083577&amp;postID=1400621570165679115" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/946587890062083577/posts/default/1400621570165679115?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/946587890062083577/posts/default/1400621570165679115?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NeverReadPassively/~3/FzuDbUahtjY/pondering-new-camera.html" title="Pondering a new Camera" /><author><name>Jason</name><uri>http://www.blogger.com/profile/11283603094324243247</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://3.bp.blogspot.com/_Nm8O-3rVrk0/Sk_iFShcXkI/AAAAAAAAAFc/cUqZBpgrQ9Y/S220/Snapshot.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh3.googleusercontent.com/-AokBLZ39qgY/TXqZ3q96s-I/AAAAAAAAAKM/EZoGggY6XfY/s72-c/mju-DIGITAL-600-blue-front_m.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.neverreadpassively.com/2011/03/pondering-new-camera.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkYCQXg5fCp7ImA9Wx9aFUo.&quot;"><id>tag:blogger.com,1999:blog-946587890062083577.post-7355797145922260910</id><published>2011-03-08T20:56:00.000+11:00</published><updated>2011-03-08T20:56:00.624+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-08T20:56:00.624+11:00</app:edited><title>10 Great Ideas for using Clever Algorithms</title><content type="html">&lt;a href="https://lh5.googleusercontent.com/-AfibVGilFmA/TXVamOzLkeI/AAAAAAAAAKE/1qrtE21xdLs/s1600/basin2.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="191" src="https://lh5.googleusercontent.com/-AfibVGilFmA/TXVamOzLkeI/AAAAAAAAAKE/1qrtE21xdLs/s200/basin2.png" width="200" /&gt;&lt;/a&gt;The &lt;a href="http://cleveralgorithms.com/"&gt;Clever Algorithms book&lt;/a&gt; provides working, although minimal, implementations of 45 algorithms from the fields of Computational Intelligence,&amp;nbsp;Biologically&amp;nbsp;Inspired&amp;nbsp;Computational, and Metaheuristics.&lt;br /&gt;
&lt;br /&gt;
The intent of providing&amp;nbsp;minimal implementations is to allow people to play with the systems, to make them come alive, and most importantly, provide the basis for extension.&lt;br /&gt;
&lt;br /&gt;
I'm really keen to see what people can do with the algorithms. To see the creative side in how these methods can be applied, not just in science and engineering.&lt;br /&gt;
&lt;br /&gt;
In this post I'll suggest 10 projects uses the algorithm implementations, and maybe&amp;nbsp;provoke&amp;nbsp;something interesting. The majority of these ideas are proposed as exercises for learning more about one or more algorithms described in the book or about the genetic research or application of such methods.&lt;br /&gt;
&lt;br /&gt;
The following 5 ideas relate to a single given algorithm.&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;&lt;b&gt;Change the demonstration problem&lt;/b&gt;. The problems presented in the book were&amp;nbsp;idealized&amp;nbsp;and simplistic. They were selected for the simplicity and ability to demonstrate a given method. A great place to start would be to simply change the problem being solved by a give algorithm. This may be as simple as changing the number of dimensions on a&amp;nbsp;continuous&amp;nbsp;function&amp;nbsp;optimization&amp;nbsp;problem, to changing a method to work with a new representation all together. Remember, most methods are generic, therefore careful attention must be paid to the both the representation and the chosen cost function.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Extend an algorithm implementation&lt;/b&gt;. Many of the implementations provide a minimal working version of the algorithm. This leaves a lot of room to add in all the fancy bells and whistles (extensions discovered to improve performance over&amp;nbsp;intervening&amp;nbsp;studies). Most of the time I mention these extensions. In some cases, such as many Evolutionary Algorithms, one can extend an algorithm implementation by switching out a high-level operator. These algorithms are described in such a way that the principle operators and sub-processes are modular and can be exchanged. Perhaps for starters, consider switching out the selection, crossover, and/or mutation genetic operators in the Genetic Algorithm or related evolutionary algorithm.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Study an algorithm&lt;/b&gt;. Something I really get a kick out of is going deep on a given method. Vary one parameter at a time and control all others, including the problem domain. Run each variation multiple times (control for the random starting position) and evaluate the algorithm configuration on each configuration. You will quickly build up&amp;nbsp;matrices&amp;nbsp;of configuration-performance behaviours that you can slice, dice, and graph. Sample parameters randomly or test them in a tightly&amp;nbsp;stratified&amp;nbsp;manner (such as each 0.01 increment between 0 and 1 for the crossover rate in the genetic&amp;nbsp;algorithm). By performing such studies across multiple test problems or across multiple algorithms you can start to define equations that describe the behaviour of a method under specific conditions. You might even learn something new about a method (and publish)! These are&amp;nbsp;complex&amp;nbsp;systems, there is much to learn.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Implement another algorithm&lt;/b&gt;. I only managed to describe 45 algorithms in the book. There are many many other algorithms and variations I didn't have time to describe. Pick one and implement it. If you're super keen, try describing it using the same &lt;a href="https://github.com/jbrownlee/CleverAlgorithms/raw/master/workspace/release/techreport-20100107-1.pdf"&gt;algorithm description template&lt;/a&gt;. &amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Apply to something fun&lt;/b&gt;. One can run off and attempt to solve difficult science and technology problems where there is limited domain knowledge, complex constraints, and where such a method would be appropriate. There are also those problems that are&amp;nbsp;slightly&amp;nbsp;less serious, but whose outputs can be very provocative. For example, start framing problems that require innovation or creativity as&amp;nbsp;optimization&amp;nbsp;or function approximation problems and apply a technique. For example music&amp;nbsp;composition, art, and types of design problems. For inspiration, see these &lt;a href="http://www.puremango.co.uk/2011/03/genetic-algorithm-examples/"&gt;5 fun genetic algorithm examples&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;&lt;a href="https://lh5.googleusercontent.com/-_QeM9x4FJIw/TXVbHjCxzvI/AAAAAAAAAKI/_ygpPdzc6OA/s1600/tsp3.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="186" src="https://lh5.googleusercontent.com/-_QeM9x4FJIw/TXVbHjCxzvI/AAAAAAAAAKI/_ygpPdzc6OA/s200/tsp3.png" width="200" /&gt;&lt;/a&gt;The next following 5 ideas relate to a collection of algorithms, maybe all the algorithms in the book.&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;&lt;b&gt;Race algorithms&lt;/b&gt;. The natural thought when one has a bunch of competing methods at ones disposal is to race them. Although I discourage this behaviour in the book (from a scientific merit perspective), it can be enticing. Construct a bake-off between a number of closely related methods,&amp;nbsp;fairly&amp;nbsp;tune each in turn on one or a small suite of test problems and test-away. You can produce some thought provoking graphs and perhaps begin speculating about the relative merit of this method or that. Remember to think deeply on the actual transferability of your findings to other algorithms or problems.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Port algorithms to a favorite programming language&lt;/b&gt;. Ruby is pretty awesome in my humble opinion. It is concise, productive, and fun to program in, which is why I chosen it for the implementations in the book. That being said, it is not everyone's favorite programming language. Consider porting one or more algorithms to YOUR favorite programming language. For example Python is a natural fit given the close&amp;nbsp;similarities&amp;nbsp;to Ruby, but I'd be keen to see ports to Javascript, ANSI C, Go, Java, even LISP languages like Clojure. You would be sharing these interesting AI methods with people from your language tribe while learning the innards of each algorithm as you ported them. Win-Win.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Implement a plug-in for existing software&lt;/b&gt;. There are many great software packages out there that might benefit by having some of the optimization and function approximation methods described in the book provided as plug-in's. For example, one might write plug-in's for&amp;nbsp;&lt;a href="http://www.cs.waikato.ac.nz/ml/weka/"&gt;WEKA&lt;/a&gt;, &lt;a href="http://www.mathworks.com/products/matlab/"&gt;Matlab&lt;/a&gt;, &lt;a href="http://www.wolfram.com/mathematica/"&gt;Mathematica&lt;/a&gt;, or &lt;a href="http://www.gnu.org/software/octave/index.html"&gt;Octave&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Implement a software library&lt;/b&gt;. Rather than simply port the algorithms to a new language or provide implementations as plugin-in's for existing software workbenches, one could build a new library of optimization algorithms. One could start building a library of genetic Artificial Intelligence methods, data representations and&amp;nbsp;visualization, or could focus on a specific problem domain and build up a suite of methods specifically for solving it (such as&amp;nbsp;continuous&amp;nbsp;function multiple objective problems)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Translate the book&lt;/b&gt;. Not really an algorithm thing, but if you can speak (write in) another&amp;nbsp;language&amp;nbsp;and want to really absorb this content, I can't think of a better way than translating algorithm descriptions to another language. Chinese? Russian? Spanish? I'm sure you would have a gaggle of devoted fans for doing so.&lt;/li&gt;
&lt;/ol&gt;All of the content (including the algorithm implementations themselves) have been released under a permissive &lt;a href="http://creativecommons.org/licenses/by-nc-sa/2.5/au/deed.en"&gt;Creative Commons license&lt;/a&gt;. Go nuts! If you do end up exploring one or more of these ideas, shoot me an comment or email. I'd be very keen to see what you come up with!&lt;br /&gt;
&lt;br /&gt;
If there is any general interest, I'd really like to add a "projects" section to the&lt;a href="http://cleveralgorithms.com/"&gt; Clever Algorithms website&lt;/a&gt;. A place where one can suggest a project idea, read over tutorials on applying the algorithms in the book, and download interesting code examples. Let me know what you think?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/946587890062083577-7355797145922260910?l=www.neverreadpassively.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NeverReadPassively/~4/WvfSZ7yOzZA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.neverreadpassively.com/feeds/7355797145922260910/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=946587890062083577&amp;postID=7355797145922260910" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/946587890062083577/posts/default/7355797145922260910?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/946587890062083577/posts/default/7355797145922260910?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NeverReadPassively/~3/WvfSZ7yOzZA/10-great-ideas-for-using-clever.html" title="10 Great Ideas for using Clever Algorithms" /><author><name>Jason</name><uri>http://www.blogger.com/profile/11283603094324243247</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://3.bp.blogspot.com/_Nm8O-3rVrk0/Sk_iFShcXkI/AAAAAAAAAFc/cUqZBpgrQ9Y/S220/Snapshot.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh5.googleusercontent.com/-AfibVGilFmA/TXVamOzLkeI/AAAAAAAAAKE/1qrtE21xdLs/s72-c/basin2.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.neverreadpassively.com/2011/03/10-great-ideas-for-using-clever.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0EAQX0zfCp7ImA9Wx9aE0g.&quot;"><id>tag:blogger.com,1999:blog-946587890062083577.post-608907510739209815</id><published>2011-03-06T08:14:00.000+11:00</published><updated>2011-03-06T08:14:00.384+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-06T08:14:00.384+11:00</app:edited><title>Computational Intelligence on Wikipedia</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh6.googleusercontent.com/-eLNO4o02430/TXBgsXvM_oI/AAAAAAAAAJs/4Si8sMIVUpY/s1600/wikipedia.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://lh6.googleusercontent.com/-eLNO4o02430/TXBgsXvM_oI/AAAAAAAAAJs/4Si8sMIVUpY/s1600/wikipedia.png" /&gt;&lt;/a&gt;&lt;/div&gt;During the&amp;nbsp;hoopla&amp;nbsp;of the &lt;a href="http://cleveralgorithms.com/"&gt;Clever Algorithms&lt;/a&gt; book launch, an interesting question came up:&lt;br /&gt;
&lt;blockquote&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Why didn't I just write a whole heap of Wikipedia articles (to give back) rather than write a standalone book?&lt;/span&gt;&lt;/i&gt;&lt;/blockquote&gt;It's a good question. I started out writing Wikipedia articles. I wrote an entry for &lt;a href="http://en.wikipedia.org/wiki/Extremal_optimization"&gt;Extremal Optimization&lt;/a&gt; way back when. I expanded the &lt;a href="http://en.wikipedia.org/wiki/Artificial_immune_systems"&gt;Artificial Immune Systems&lt;/a&gt; entry and wrote an entry for the &lt;a href="http://en.wikipedia.org/wiki/Clonal_Selection_Algorithm"&gt;Clonal Selection Algorithms&lt;/a&gt;. I also wrote a bunch of other articles. I enjoyed the interface and the fact that many thousands of people would benefit from the information every day.&lt;br /&gt;
&lt;br /&gt;
The more I contributed, the more I disliked the lack of control. Although I'm a world expert on this or that algorithm or method, I cannot self cite. Sometimes I can mold an article to my will, other times some random person or bot will come and wipe out carefully crafted content.&amp;nbsp;Ultimately, Wikipedia did not align closely enough with my desire (need!) to present a large&amp;nbsp;corpus&amp;nbsp;of algorithms in a consistent way.&lt;br /&gt;
&lt;br /&gt;
Anyway, I recently trawled through Wikipedia and collected a bunch of algorithms that are in or could have been in my Clever Algorithms book. I then organized them by the rough taxonomy I used in the book. Rather than keep this hidden away, I though I may as well share it more broadly than my &lt;a href="http://en.wikipedia.org/wiki/User:Jasonb05"&gt;Wikipedia user page&lt;/a&gt;.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;The Field&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Artificial_intelligence"&gt;Artificial Intelligence&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Computational_intelligence"&gt;Computational Intelligence&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Bio-inspired_computing"&gt;Bio-Inspired Computing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Natural_computing"&gt;Natural Computing&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;Stochastic Algorithms: &lt;a href="http://en.wikipedia.org/wiki/Stochastic_optimization"&gt;Stochastic Optimization&lt;/a&gt;&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Tabu_search"&gt;Tabu search&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Greedy_randomized_adaptive_search_procedure"&gt;Greedy randomized adaptive search procedure&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Stochastic_diffusion_search"&gt;Stochastic diffusion search&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Random_search"&gt;Random search&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Random_optimization"&gt;Random optimization&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Reactive_search_optimization"&gt;Reactive search optimization&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Stochastic_hill_climbing"&gt;Stochastic hill climbing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Iterated_local_search"&gt;Iterated local search&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Guided_Local_Search"&gt;Guided Local Search&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Stochastic_gradient_descent"&gt;Stochastic gradient descent&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;Evolutionary Algorithms: &lt;a href="http://en.wikipedia.org/wiki/Evolutionary_algorithm"&gt;Evolutionary Algorithm&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Evolutionary_computation"&gt;Evolutionary Computation&lt;/a&gt;&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Genetic_Algorithm"&gt;Genetic Algorithm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Differential_evolution"&gt;Differential evolution&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Evolution_strategy"&gt;Evolution strategy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Learning_classifier_system"&gt;Learning classifier system&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Memetic_algorithm"&gt;Memetic algorithm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Evolutionary_programming"&gt;Evolutionary programming&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Genetic_programming"&gt;Genetic programming&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Grammatical_evolution"&gt;Grammatical evolution&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Gene_expression_programming"&gt;Gene expression programming&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/CMA-ES"&gt;CMA-ES&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Interactive_evolutionary_computation"&gt;Interactive evolutionary computation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Human-based_genetic_algorithm"&gt;Human-based genetic algorithm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Human-based_evolutionary_computation"&gt;Human-based evolutionary computation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Learnable_Evolution_Model"&gt;Learnable Evolution Model&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;Physical Algorithms&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Extremal_optimization"&gt;Extremal optimization&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Cultural_algorithm"&gt;Cultural algorithm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Harmony_search"&gt;Harmony search&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Simulated_annealing"&gt;Simulated annealing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Quantum_annealing"&gt;Quantum annealing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Adaptive_simulated_annealing"&gt;Adaptive simulated annealing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Stochastic_tunneling"&gt;Stochastic tunneling&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Parallel_tempering"&gt;Parallel tempering&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;Probabilistic Algorithms&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Population-based_incremental_learning"&gt;Population-based incremental learning&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Gaussian_adaptation"&gt;Gaussian adaptation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Cross-entropy_method"&gt;Cross-entropy method&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;Swarm Algorithms: &lt;a href="http://en.wikipedia.org/wiki/Swarm_intelligence"&gt;Swarm Intelligence&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Collective_intelligence"&gt;Collective Intelligence&lt;/a&gt;&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Ant_colony_optimization"&gt;Ant colony optimization&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Particle_swarm_optimization"&gt;Particle swarm optimization&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Bees_algorithm"&gt;Bees algorithm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Bee_colony_optimization"&gt;Bee colony optimization&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Firefly_algorithm"&gt;Firefly algorithm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Glowworm_swarm_optimization"&gt;Glowworm swarm optimization&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Cuckoo_search"&gt;Cuckoo search&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;Immune Algorithms: &lt;a href="http://en.wikipedia.org/wiki/Artificial_immune_systems"&gt;Artificial Immune Systems&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Immunocomputing"&gt;Immunocomputing&lt;/a&gt;&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Clonal_Selection_Algorithm"&gt;Clonal Selection Algorithm&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;Neural Algorithms: &lt;a href="http://en.wikipedia.org/wiki/Artificial_neural_networks"&gt;Artificial Neural Networks&lt;/a&gt;,&amp;nbsp;&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Perceptron"&gt;Perceptron&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Backpropagation"&gt;Backpropagation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Hopfield_net"&gt;Hopfield net&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Learning_Vector_Quantization"&gt;Learning Vector Quantization&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Self-organizing_map"&gt;Self-organizing map&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/ADALINE"&gt;ADALINE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Adaptive_resonance_theory"&gt;Adaptive resonance theory&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/ul&gt;A strange mixture of seminal methods and techniques I've never heard of before! If I missed anything interesting, please post a comment. I note that there category lists, such as the &lt;a href="http://en.wikipedia.org/wiki/Category:Optimization_algorithms"&gt;Optimization Algorithms category&lt;/a&gt;, but the mixture of algorithms in there is diverse to say the least.&lt;br /&gt;
&lt;br /&gt;
After scanning through a couple of entries, the differences in organization and quality of the content is obvious. What sucks is that each article gets such a high ranking in a Google search result, although the quality is generally so poor.&amp;nbsp;Nevertheless, I find it interesting to see them all together and compare entries. I might even prepare a similar set for &lt;a href="http://www.scholarpedia.org/"&gt;Scholarpedia&lt;/a&gt; or &lt;a href="http://mathworld.wolfram.com/"&gt;Mathworld&lt;/a&gt;, two sites that also have entries for some of the algorithms described in the book.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;Image taken from &lt;a href="http://en.wikipedia.org/wiki/Wikipedia"&gt;Wikipedia&lt;/a&gt;.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/946587890062083577-608907510739209815?l=www.neverreadpassively.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NeverReadPassively/~4/r89xSg9GZZg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.neverreadpassively.com/feeds/608907510739209815/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=946587890062083577&amp;postID=608907510739209815" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/946587890062083577/posts/default/608907510739209815?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/946587890062083577/posts/default/608907510739209815?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NeverReadPassively/~3/r89xSg9GZZg/computational-intelligence-on-wikipedia.html" title="Computational Intelligence on Wikipedia" /><author><name>Jason</name><uri>http://www.blogger.com/profile/11283603094324243247</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://3.bp.blogspot.com/_Nm8O-3rVrk0/Sk_iFShcXkI/AAAAAAAAAFc/cUqZBpgrQ9Y/S220/Snapshot.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh6.googleusercontent.com/-eLNO4o02430/TXBgsXvM_oI/AAAAAAAAAJs/4Si8sMIVUpY/s72-c/wikipedia.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://www.neverreadpassively.com/2011/03/computational-intelligence-on-wikipedia.html</feedburner:origLink></entry></feed>

