<?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:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">

  <title><![CDATA[Evolving Bits]]></title>
  
  <link href="http://blog.evolvingbits.com/" />
  <updated>2012-04-21T23:28:55-07:00</updated>
  <id>http://blog.evolvingbits.com/</id>
  <author>
    <name><![CDATA[Brian Gershon]]></name>
    
  </author>
  <generator uri="http://octopress.org/">Octopress</generator>

  
  <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/evolvingbits" /><feedburner:info uri="evolvingbits" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>47.63287</geo:lat><geo:long>-122.322536</geo:long><entry>
    <title type="html"><![CDATA[With Great JavaScript Comes Great Inspiration]]></title>
    <link href="http://feedproxy.google.com/~r/evolvingbits/~3/kWLMhlL8KeU/" />
    <updated>2012-04-04T09:15:00-07:00</updated>
    <id>http://blog.evolvingbits.com/blog/2012/04/04/with-great-javascript-comes-great-inspiration</id>
    <content type="html">&lt;p&gt;I&amp;#8217;d say the theme of Day Two at JSConf 2012 was &lt;strong&gt;inspiration&lt;/strong&gt;, and was another great day of talks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;I think my favorite talk (best presentation, very pragmatic) was Jake Archibald&amp;#8217;s &amp;#8220;Application Cache&amp;#8221; &amp;#8211; why it&amp;#8217;s useful and the potholes you&amp;#8217;ll encounter while using it. You&amp;#8217;ll want to watch this video.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The best demo for me was the presentation prior, Thomas Valletta&amp;#8217;s &amp;#8220;The Web Game Console&amp;#8221;, where he talked about his experience developing his mobile game with HTML and JS. He wrote a Web Bowling game using HTML/JS on iOS as the controller, and a Node.js websocket server for displaying the bowling alley.  The source is on Github (so you can setup your own server if you want) and if multiple people play at the same time it turns into &amp;#8220;battle bowling&amp;#8221; with multiple balls at the same time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Project Bikeshed was a great demo too. Not only did its authors put on a great daily video series, but Bikeshed allows you to do many useful things such as importing Flash SWF files, automatically turning those into JavaScript and then allowing you to show, combine, manipulate, animate any of those elements and use them in your JavaScript projects.  He demo&amp;#8217;d an iPad JavaScript game that was powered by Bikeshed.  You can also run Bikeshed on Node.js and send that to devices. With a one-line change, he showed running both scenarios.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ok, another great demo was on Open Data in the B-Track by Daniel Beauchamp &amp;amp; Edward Ocampo-Gooding. They actually packed about 7 small presentations into one and described their process of organizing a city hack-a-thon around Open Data and building a lot of apps for free for the benefit of your city and your community. Very inspired.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The Node.js talk from Brian Ford inspired us with some interesting readings to check out (such as the &amp;#8220;Thinking Fast and Slow&amp;#8221; book) and the importance of leveraging communities outside of JavaScript, such as the experiences of the Ruby community.  He then had many concerns about Node.js repeating concurrency mistakes that Ruby had made. &lt;em&gt;Though I think I mainly left there with only some good book suggestions &amp;#8211; it felt like it ended abruptly since there was no time for questions (since presentation went long) and no specific next steps on how to avoid said concerns.&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;One of the &lt;strong&gt;most inspirational&lt;/strong&gt; talks was 19-year-old James Whelton&amp;#8217;s &amp;#8220;Changing the world one CoderDojo at a time&amp;#8221;. &lt;a href="http://coderdojo.com/about-us/"&gt;CoderDojo&lt;/a&gt; is &amp;#8220;a movement of free coding clubs for young people&amp;#8221;. Check out their site for a lot of inspiration and how to start a club yourself. Also turns out that JavaScript has been a very accessible language to use &amp;#8211; it requires no setup, is available everywhere, fun to work with, and can even land you a job down the road.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Jacob Thornton&amp;#8217;s &amp;#8220;Brûlons les musées&amp;#8221; talk was also very entertaining, and you&amp;#8217;ll need to see the video. He led up to the power of the JavaScript community getting together more specifically around creating specs/tests (versus primarily getting together around an implementation), which then offer flexibility and healthy competition when implementing libraries that meet those specs. His example was creating Hogan.js, which is some ways was a rewrite of Mustache.js. The improvements were possible by leveraging the Mustache tests. Then Mustache was able to make improvements. By using the specs, separate projects were able to code and optimize independently.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The final talk of the day was &lt;a href="http://falkvinge.net/"&gt;Rick Falkvinge&lt;/a&gt;&amp;#8217;s talk about politics, the Pirate Party and inspiration on how to change the world.  He told his story of how the Pirate Party has been able to make in-roads into mainstream politics, and what&amp;#8217;s possible.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;Green for Dinner&lt;/h2&gt;

&lt;p&gt;After the JSConf family photo, nine of us then went to a local vegetarian restaurant called &lt;a href="http://greenvegetarian.com/"&gt;Green&lt;/a&gt; which was amazing.  The place was packed the whole time while the atmosphere was very easy going. They had a great variety of original and tasty foods.&lt;/p&gt;

&lt;h2&gt;Boot2Gecko Phone&lt;/h2&gt;

&lt;p&gt;In the evening, I finally had a chance to play with Mozilla&amp;#8217;s Boot2Gecko phone and built a simple app. In &lt;a href="https://github.com/briangershon/accelo"&gt;Accelo&lt;/a&gt; the JSConf logo floats around the screen and moves as you tilt the phone.&lt;/p&gt;

&lt;p&gt;Development was fairly smooth and I was able to install my app as part of the Gaia update/install process, but didn&amp;#8217;t have luck yet setting it up to install as a stand-alone app.&lt;/p&gt;

&lt;p&gt;Albeit since the app is solely HTML/CSS/JS it works just fine by visiting the site &lt;a href="http://accelo.evolvingbits.com/accelo/"&gt;http://accelo.evolvingbits.com/accelo/&lt;/a&gt; on the Boot2Gecko phone (or even works on my Macbook Pro which apparently sends accelerometer events). However when viewing on iOS, the accelerometer events seem to be reversed, so not sure which implementation is off.&lt;/p&gt;

&lt;h2&gt;Thank you&lt;/h2&gt;

&lt;p&gt;Thanks JSConf for another great year of new friends, bull-riding, great talks, tasty food and inspiration.  I will miss the sunshine and the playtime, but excited to jump into the all new tech-wonders that I can use for my web and mobile projects back in Seattle.  The Firesky Resort in Scottsdale was a perfect conference location, and I was also very happy with my stay next door at &lt;a href="http://www.chaparralsuites.com/"&gt;Chaparral Suites&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Also a big thank you to my company &lt;a href="http://www.saltbox.com"&gt;Saltbox.com&lt;/a&gt;&lt;/strong&gt; who have sponsored me to attend JSConf this year!  We&amp;#8217;re developers of an online communication and learning application that allows Sales organizations to keep a pulse on what happening with their products, their customers and their competitors.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/evolvingbits/~4/kWLMhlL8KeU" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://blog.evolvingbits.com/blog/2012/04/04/with-great-javascript-comes-great-inspiration/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[JSConf 2012: Play]]></title>
    <link href="http://feedproxy.google.com/~r/evolvingbits/~3/gvGYVxRcrCQ/" />
    <updated>2012-04-03T07:50:00-07:00</updated>
    <id>http://blog.evolvingbits.com/blog/2012/04/03/jsconf-2012-play</id>
    <content type="html">&lt;p&gt;On my flight to JSConf, the Southwest Airlines magazine kicked off the topic of Play in &lt;a href="http://spiritmag.com/features/article/its_called_play/"&gt;Its called Play&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This theme continued throughout JSConf 2012&amp;#8217;s Day One.&lt;/p&gt;

&lt;p&gt;Just a &lt;strong&gt;few&lt;/strong&gt; things to play with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Registration included getting an NFC &lt;a href="http://www.poken.com"&gt;Poken&lt;/a&gt;, taking pictures with guns and cowboy gear, and a bag of sponsor loot.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;All attendees were given the first public Boot2Gecko phones from Mozilla with a &lt;a href="https://wiki.mozilla.org/B2G/DeveloperPhone"&gt;challenge to hack it and build apps&lt;/a&gt; by conference end.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Stephan Herhut showed us the possibilities with true parallel programming and JavaScript using &lt;a href="https://github.com/rivertrail/rivertrail/wiki"&gt;Intel RiverTail&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Paul Irish showed us the latest in JavaScript tooling. His &lt;a href="http://dl.dropbox.com/u/39519/talks/jsconf-tools/index.html"&gt;presentation&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Max Shawabkeh walked us through &lt;a href="http://repl.it/"&gt;repl.it&lt;/a&gt; which runs 17 languages natively in JavaScript, including Python and Ruby. This is a great environment for new students to programming (since the only dependency is a web browser), or people wanting to play with compiler technology.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Remy Sharp talked about using JavaScript to &amp;#8220;Build Anything&amp;#8221; and gave a list of things he&amp;#8217;s like to see browsers do, such as real-time notifications, strong desktop integration, direct access to hardware, ability to local install a JavaScript app, &amp;#8220;go naked&amp;#8221; (no browser chrome visible). He also talked about things we should be using today, such as web storage instead of cookies, using HTML5 tags for web form validation (i.e. instead of a crazy client-side email regular expression, use &amp;lt;input type=email&amp;gt;), History API, AppCache manifest for performance (since just relying on browser cache may mean your files disappear after cache fills up), EventSource particularly for mainly server-to-client pushes (in addition to websockets), Drag and Drop.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;David Nolen talked directly about the importance of Play and how ClosureScript was that playground for him. He was also inspired by the book &amp;#8221;&lt;a href="http://mitpress.mit.edu/catalog/item/default.asp?ttype=2&amp;amp;tid=10663"&gt;The Reasoned Schemer&lt;/a&gt;&amp;#8221;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Dan Ingalls, &amp;#8220;principal architect, designer and implementor of five generations of Smalltalk environments&amp;#8221; took us through &lt;a href="http://www.lively-kernel.org/"&gt;Lively Kernel&lt;/a&gt; which you need to see in action.  It &amp;#8220;provides a complete platform for web applications, including dynamic graphics, network access, and development tools&amp;#8221; all in the browser.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Attendees left Day One with new cowboy hats, and many rode the bull later that night at &lt;a href="http://www.srrestaurants.com/"&gt;Saddle Ranch&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;img src="http://feeds.feedburner.com/~r/evolvingbits/~4/gvGYVxRcrCQ" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://blog.evolvingbits.com/blog/2012/04/03/jsconf-2012-play/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[Thanks NotConf for a Great JSConf 2012 Pre-conference]]></title>
    <link href="http://feedproxy.google.com/~r/evolvingbits/~3/IvWaqEE_Aoo/" />
    <updated>2012-04-02T07:36:00-07:00</updated>
    <id>http://blog.evolvingbits.com/blog/2012/04/02/thanks-notconf-for-a-great-jsconf-2012-pre-conference</id>
    <content type="html">&lt;p&gt;Arriving PHX was flawless, the Twilio-sponsored shuttle was there to pick me up from the airport.&lt;/p&gt;

&lt;p&gt;After checking-in, it was sunny and mid-70s as a few of us awaited for a friendly volunteer-sponsored shuttle to whisk us over to &lt;a href="http://notconf.com/"&gt;NotConf&lt;/a&gt; in fine style.&lt;/p&gt;

&lt;p&gt;This one day event went off without a hitch and was a lot of fun.&lt;/p&gt;

&lt;p&gt;We arrived to free food, free local beer, t-shirts, sunshine, friendly faces &amp;#8211; and of course JavaScript.  30-min talks leap frogged 30 min demos.&lt;/p&gt;

&lt;h2&gt;Best talk&lt;/h2&gt;

&lt;p&gt;I was only there the last half of the day, so my favorite talk was Pamela Fox&amp;#8217;s (she also won best costume) &amp;#8220;Why ternary operators make me want to kick someone in the nuts: AKA code readability.&amp;#8221; She highlighted that most JavaScript developers are users of other people (library) code, and had many good points about what to do to make users lives much easier by making the code more approachable:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Documentation &amp;#8211; but not too much (such as having two sets of docs that makes it unclear which are the definitive ones) and using doc generation tools to make docs part of the process and not manual&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Make debugging headache free (by being clear, using less &amp;#8220;elite&amp;#8221; code, no crazy ternary operators) since at some point users will need to debug in there.  Use tools like jshint to keep your code consistent. Also, although you can write javascript without semi-colons, this is not what most users expect and can lead to pain for potential contributors and users.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Make it easy to contribute to the (library) project. A lot of dependencies for running tests could be one barrier.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;Favorite Demo&lt;/h2&gt;

&lt;p&gt;My favorite demo was &lt;a href="http://deployd.com"&gt;deployd.com&lt;/a&gt; who had wired up an iRobot and a maze, and attendees could create a program that navigated the robot through it, complete with leaderboard. This demonstrated their cool &amp;#8220;instant backend&amp;#8221; for software developers and tinkerers to easily create a RESTful backend with no code &amp;#8211; which in this case was then downloaded to a robot. Their business card says it all with &amp;#8220;Join the Backend Liberation Movement&amp;#8221;.&lt;/p&gt;

&lt;h2&gt;Thank you&lt;/h2&gt;

&lt;p&gt;The closing event was of course outside, where we all wound down with beer, nice conversations, and a local musician who was playing for us in the courtyard. My pale Seattle skin even gained some color and was happy to absorb all that natural Vitamin D.&lt;/p&gt;

&lt;p&gt;Thanks to the organizers of NotConf.com &amp;#8211; it was an impressive one-day conference and a great start to JSConf 2012.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/evolvingbits/~4/IvWaqEE_Aoo" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://blog.evolvingbits.com/blog/2012/04/02/thanks-notconf-for-a-great-jsconf-2012-pre-conference/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[Moved to Octopress]]></title>
    <link href="http://feedproxy.google.com/~r/evolvingbits/~3/wvvvO-_Zlaw/" />
    <updated>2012-03-31T12:43:00-07:00</updated>
    <id>http://blog.evolvingbits.com/blog/2012/03/31/moved-to-octopress</id>
    <content type="html">&lt;p&gt;I&amp;#8217;m excited to announce I finally made the plunge to &lt;a href="http://octopress.org/"&gt;Octopress&lt;/a&gt; for my JavaScript and iOS developer blog.&lt;/p&gt;

&lt;p&gt;Please update your RSS reader to point to &lt;a href="http://blog.evolvingbits.com/atom.xml"&gt;this new feed&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I&amp;#8217;ll be migrating content off my &lt;a href="http://www.evolvingbits.com/"&gt;previous Wordpress blog&lt;/a&gt; over time.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/evolvingbits/~4/wvvvO-_Zlaw" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://blog.evolvingbits.com/blog/2012/03/31/moved-to-octopress/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[Sharpening the Mobile and JavaScript Swords]]></title>
    <link href="http://feedproxy.google.com/~r/evolvingbits/~3/W-axfdwIfVk/" />
    <updated>2011-01-12T04:48:24-08:00</updated>
    <id>http://blog.evolvingbits.com/blog/2011/01/12/sharpening-the-mobile-and-javascript-swords</id>
    <content type="html">&lt;p&gt;In the last couple of  years, JavaScript has really become hot for the next breed of web and mobile applications.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;JavaScript runs on a majority of mobile and desktop browsers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&amp;#8230; it runs on the server.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&amp;#8230; it is used for developing desktop widgets and browser extensions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&amp;#8230; it is being used inside desktop applications. eg scripting for &lt;a href="http://kodapp.com/"&gt;Kod editor&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&amp;#8230; it naturally works well with the web &amp;#8211; easily handling JSON, HTTP and REST.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&amp;#8230; works well for new real-time communication techniques (eg websockets).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&amp;#8230; as a language it works well for asynchronous-style services.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;There&amp;#8217;s also a lot of innovation happening in the JavaScript space because it attracts both front-end and back-end developers.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Over the past year I&amp;#8217;ve been working in the mobile application space primarily with native iOS and mobile-optimized websites.&lt;/p&gt;

&lt;p&gt;This year I plan to expand my mobile and JavaScript skills in the following areas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Create applications (and web services) using server-side JavaScript with &lt;a href="http://nodejs.org/"&gt;node.js&lt;/a&gt; and learn the ecosystem that has grown up around it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Practice new &amp;#8221;&lt;a href="http://www.lukew.com/ff/entry.asp?933"&gt;mobile first&lt;/a&gt;&amp;#8221; and &amp;#8221;&lt;a href="http://www.alistapart.com/articles/responsive-web-design/"&gt;responsive web design&lt;/a&gt;&amp;#8221; web-development techniques where new websites are designed for mobile first, and then progressive enhanced so that the same site works well for larger screens and desktop browsers too. Mobile can no longer be thought of as a bolt-on feature, but needs to become central to web design and development efforts.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Attend &lt;a href="http://2011.jsconf.us/"&gt;JSConf 2011&lt;/a&gt; and &lt;a href="http://nodeconf.com/"&gt;NodeConf 2011&lt;/a&gt; which are both in early May in Portland, OR.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Play with more data stores.  CouchDB (for example) is a native JSON store that speaks HTTP. Mixed with client-side or server-side JavaScript (that easily works with JSON and naturally speaks HTTP) makes an interesting combination. A recent talk on &lt;a href="http://jsconf.eu/2010/speaker/nodejs_couchdb_crazy_delicious.html"&gt;node.js + CouchDB&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Continue to work with the various approaches to building mobile applications to find the right tools for the job, whether native, web-based, or a mix.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Continue to practice test-driven development in JavaScript.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;img src="http://feeds.feedburner.com/~r/evolvingbits/~4/W-axfdwIfVk" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://blog.evolvingbits.com/blog/2011/01/12/sharpening-the-mobile-and-javascript-swords/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[Highlights from DjangoCon 2010 (and videos to watch)]]></title>
    <link href="http://feedproxy.google.com/~r/evolvingbits/~3/Z6bNHBjlwkY/" />
    <updated>2010-09-14T15:33:03-07:00</updated>
    <id>http://blog.evolvingbits.com/blog/2010/09/14/djangocon-2010-highlights-videos</id>
    <content type="html">&lt;p&gt;Here were some DjangoCon 2010 highlights for me, along with talk titles so you can find the full presentations online at http://djangocon.blip.tv/posts?view=archive&lt;/p&gt;

&lt;p&gt;&amp;#8220;Creating better apps&amp;#8221;&lt;/p&gt;

&lt;p&gt;Both Eric Florenzano (&amp;#8220;Why Django Sucks, and How We Can Fix It&amp;#8221;) and Alex Gaynor (&amp;#8220;Rethinking the Reusable Application Paradigm&amp;#8221;) had many useful things to say about creating better and more reusable apps.  The videos are worth watching, here are some highlights:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Narrower abstractions would make apps suck less &amp;#8211; such as not directly exposing models (create an API) so you can swap out model or implementation.  This was also a big part of Alex&amp;#8217;s talk.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Class-based views are a nice way of creating an API and allow implementations to change over time.  There are various ways of doing class-based views and there isn&amp;#8217;t an official blessed way, but class-based views would be an improvement (and offer more flexibility) than current function-based views in Django.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&amp;#8220;Databases other than SQL&amp;#8221;&lt;/p&gt;

&lt;p&gt;With the growth in non-relational databases out there, I enjoyed starting to play with MongoDB (pyMongo and django-nonrel).  After hearing experiences from the &amp;#8220;NoSQL and Django Panel&amp;#8221; it&amp;#8217;s obvious that these are new technologies (relative to SQL) and that they are quite varied in what they support and the problems they solve.  There are also pros and cons with schemaless databases.&lt;/p&gt;

&lt;p&gt;Andrew Godwin (&amp;#8220;Step Away From That Database&amp;#8221;) also presented a nice range of databases &amp;#8211; Document databases (MongoDB, CouchDB), Key-value stores (Cassandra, Redis), Message Queues (AMQP, Celery), Graph databases &amp;#8211; and reminds us that filesystems are also key-value stores, and that version-control systems can provide a versioned storage.&lt;/p&gt;

&lt;p&gt;&amp;#8220;Data Migration&amp;#8221;&lt;/p&gt;

&lt;p&gt;Brian Luft&amp;#8217;s talk (&amp;#8220;Data Herding: How to Shepherd Your Flock Through Valleys of Darkness&amp;#8221;) will resonate with anyone looking for better methods of moving from a legacy system to Django. He also highlights the opportunity and flexibility that Django framework provides for clients in moving them off of their desktop and legacy systems.&lt;/p&gt;

&lt;p&gt;&amp;#8220;Website Security&amp;#8221;&lt;/p&gt;

&lt;p&gt;Adam Baldwin (&amp;#8220;Pony Pwning&amp;#8221;) gave a great talk on website security and things to be thinking about while building Django sites.&lt;/p&gt;

&lt;p&gt;Cross-Site Scripting (&amp;#8220;xss&amp;#8221;) vulnerability are alive and well. Though Django offers protections, these can be turned off or it&amp;#8217;s easy to make a mistake in the template layer and open yourself up. You can learn more and play with xss vulnerabilities: http://owasp-esapi-python-swingset.appspot.com/xss/django&lt;/p&gt;

&lt;p&gt;Adam suggests considering OWASP ESAPI, auditing templates, auditing reusable snippets, and educating designers.&lt;/p&gt;

&lt;p&gt;For REST services, good to consider django-piston rather than writing your own.&lt;/p&gt;

&lt;p&gt;Other things include checking upload extensions to avoid running arbitrary code, e.g. Django ImageField doesn&amp;#8217;t check extensions and could possibly run embedded code.  Apache &amp;#8220;mod_security&amp;#8221; as a nice monitoring tool that can let you know what&amp;#8217;s happening, as well as prevent some issues.&lt;/p&gt;

&lt;p&gt;&amp;#8220;Exclusionary Establishment&amp;#8221;&lt;/p&gt;

&lt;p&gt;Eric Florenzano hit on some issues on the social engineering side of Django.  Examples were presented that send messages of &amp;#8220;your contributions aren&amp;#8217;t important&amp;#8221; out to the larger Django community &amp;#8211; enhancements that went through all the steps but didn&amp;#8217;t make it into core (eg truncatechars), key contributors not given committer rights (eg Alex Gaynor), no non-core developer code accepted into django.contrib.&lt;/p&gt;

&lt;p&gt;James Bennett&amp;#8217;s (&amp;#8220;Topics of Interest&amp;#8221;) reflected some of this too in the fact that there are very few core committers (14) and even fewer than understand the ORM and that they&amp;#8217;re having a hard time growing core-committers.  Eric&amp;#8217;s mention of Guido van Rossum&amp;#8217;s quote (creator of Python) &amp;#8220;give out more commit privileges sooner&amp;#8221;.&lt;/p&gt;

&lt;p&gt;Participation could be easier and more inviting if more core devs are added and there is also less concern about breaking trunk.&lt;/p&gt;

&lt;p&gt;Something I&amp;#8217;ll add to this is that there were many talks submitted for DjangoCon so some were turned away, yet some presenters had 3 slots.  Many of the talks were very good, but I think it would be healthy to have some opportunities for new faces to present, and not the same ones each year. (transparency note: our talk was one that wasn&amp;#8217;t accepted)&lt;/p&gt;

&lt;p&gt;&amp;#8220;Become a Django Core Developer&amp;#8221;&lt;/p&gt;

&lt;p&gt;Given the concern about lack of core committers, Russell Keith-Magee (&amp;#8220;So you want to be a core developer?&amp;#8221;) was timely. In addition to going through the process of contributing code, he also mentioned that contributing to the Django community in the form of help (django-user list, stack overflow, etc) and writing new docs (tutorials, howtos, elaborating on existing docs) is key.&lt;/p&gt;

&lt;p&gt;&amp;#8220;Interesting Apps and Projects&amp;#8221;&lt;/p&gt;

&lt;p&gt;The lightning talks and Eric Holscher&amp;#8217;s talk (&amp;#8220;Large Problems in Django, Mostly Solved&amp;#8221;) were a good source of Django apps to try if you&amp;#8217;re not already using them.&lt;/p&gt;

&lt;p&gt;Eric also shares his measure of what makes a solid reusable app &amp;#8211; needs to have an easy setup, a good upgrade path, good documentation and well-tested.&lt;/p&gt;

&lt;p&gt;Apps he mentioned were Haystack (search), Sphinx (documentation), South (db migration), Celery (delayed execution), Fabric (deployment), gunicorn.org (async server), pip and virtualenv (packaging), TastyPie and Piston (RESTful), Taggit (tagging), Hudson (continuous integration tool), django-filter (django admin filtering), djangopackages.com (for finding new apps).&lt;/p&gt;

&lt;p&gt;Some interesting things from the lightning talks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;http://djangopackages.com (a Django Dash project)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;http://readthedocs.org  (a Django Dash project)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;logbook - http://github.com/mitsuhiko/logbook&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&amp;#8220;Performance&amp;#8221;&lt;/p&gt;

&lt;p&gt;Frank Wiles&amp;#8217; talk (&amp;#8220;Alice in Performanceland &amp;#8211; Down the Rabbit Hole&amp;#8221;) was full of a lot of tasty morsels to help you &amp;#8220;do less&amp;#8221; and &amp;#8220;remove pressure on your server&amp;#8221; that ultimately increases the performance and responsiveness of your site.&lt;/p&gt;

&lt;p&gt;&amp;#8220;Code Quality&amp;#8221;&lt;/p&gt;

&lt;p&gt;Human code review is best says Peter Baumgartner in his talk (&amp;#8220;Monitoring Code Quality in Your Django Project&amp;#8221;). There are also many great code quality tools out there that many of us use: test suites, code coverage, link/pep8, profiling, code complexity metrics, value &amp;#8211; and pulling this together via Hudson.  Also, creating a build in one step is offers new developers a fast way to get started on a project.&lt;/p&gt;

&lt;p&gt;&amp;#8220;Managed Django Hosting&amp;#8221;&lt;/p&gt;

&lt;p&gt;I missed Nate Aune&amp;#8217;s lightning talk on his DjangoZoom.com cloud deployment solution, but looks interesting. http://djangozoom.com/ponyexpress/&lt;/p&gt;

&lt;p&gt;One of the lightning talks discussed the django-servee project: http://www.servee.com/features/ http://github.com/servee/servee&lt;/p&gt;

&lt;p&gt;&amp;#8220;Seeing some New Faces&amp;#8221;&lt;/p&gt;

&lt;p&gt;It was nice meeting new people who are using Django in Washington State outside of Seattle, such as in Richland and Spokane, and reconnecting with friends from the Plone and greater Python communities.&lt;/p&gt;

&lt;p&gt;Here were some DjangoCon 2010 highlights for me, along with talk titles so you can find the full &lt;a href="http://djangocon.blip.tv/posts?view=archive"&gt;presentation videos online&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;Creating better apps&lt;/h2&gt;

&lt;p&gt;Both Eric Florenzano (&amp;#8220;Why Django Sucks, and How We Can Fix It&amp;#8221;) and Alex Gaynor (&amp;#8220;Rethinking the Reusable Application Paradigm&amp;#8221;) had many useful things to say about creating better and more reusable apps.  The videos are worth watching, here are some highlights:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Narrower abstractions would make apps suck less &amp;#8211; such as not directly exposing models (create an API) so you can swap out model or implementation.  This was also a big part of Alex&amp;#8217;s talk.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Class-based views are a nice way of creating an API and allow implementations to change over time.  There are various ways of doing class-based views and there isn&amp;#8217;t an official blessed way, but class-based views would be an improvement (and offer more flexibility) than current function-based views in Django.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;Databases other than SQL&lt;/h2&gt;

&lt;p&gt;With the growth in non-relational databases out there, I enjoyed starting to play with djangon-nonrel with MongoDB.  This project also supports Google App Engine.&lt;/p&gt;

&lt;p&gt;After hearing experiences from the &amp;#8220;NoSQL and Django Panel&amp;#8221; it&amp;#8217;s obvious that these are new technologies (relative to SQL) and that they are quite varied in what they support and the problems they solve.  There are also pros and cons with schemaless databases that you should be aware of when picking your solution.&lt;/p&gt;

&lt;p&gt;Andrew Godwin (&amp;#8220;Step Away From That Database&amp;#8221;) also presented a nice range of databases &amp;#8211; Document databases (MongoDB, CouchDB), Key-value stores (Cassandra, Redis), Message Queues (AMQP, Celery), Graph databases &amp;#8211; and reminds us that filesystems are also key-value stores, and that version-control systems can provide a versioned storage.&lt;/p&gt;

&lt;h2&gt;Data Migration to Django&lt;/h2&gt;

&lt;p&gt;Brian Luft&amp;#8217;s talk (&amp;#8220;Data Herding: How to Shepherd Your Flock Through Valleys of Darkness&amp;#8221;) will resonate with anyone looking for better methods of moving from a legacy system to Django. He also highlights the opportunity and flexibility that Django framework provides for clients in moving them off of their desktop and legacy systems.&lt;/p&gt;

&lt;h2&gt;Website Security&lt;/h2&gt;

&lt;p&gt;Adam Baldwin (&amp;#8220;Pony Pwning&amp;#8221;) gave a great talk on website security and things to be thinking about while building Django sites.&lt;/p&gt;

&lt;p&gt;Cross-Site Scripting (&amp;#8220;xss&amp;#8221;) vulnerability are alive and well. Though Django offers protections, these can be turned off or it&amp;#8217;s easy to make a mistake in the template layer and open yourself up. You can learn more and play with xss vulnerabilities: &lt;a href="http://owasp-esapi-python-swingset.appspot.com/xss/django"&gt;http://owasp-esapi-python-swingset.appspot.com/xss/django&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Adam suggests considering OWASP ESAPI, auditing templates, auditing reusable snippets, and educating designers.&lt;/p&gt;

&lt;p&gt;For REST services, good to consider django-piston rather than writing your own.&lt;/p&gt;

&lt;p&gt;Other things include checking upload extensions to avoid running arbitrary code, e.g. Django ImageField doesn&amp;#8217;t check extensions and could possibly run embedded code.  Apache &amp;#8220;mod_security&amp;#8221; as a nice monitoring tool that can let you know what&amp;#8217;s happening, as well as prevent some issues.&lt;/p&gt;

&lt;h2&gt;An Exclusionary Establishment?&lt;/h2&gt;

&lt;p&gt;Eric Florenzano hit on some issues on the social engineering side of Django.  He provided examples of situations that can send the messages of &amp;#8220;your contributions aren&amp;#8217;t important&amp;#8221; out to the larger Django community &amp;#8211; enhancements that went through all the steps but didn&amp;#8217;t make it into core (eg truncatechars), key contributors not given committer rights (eg Alex Gaynor), no non-core developer code accepted into django.contrib.&lt;/p&gt;

&lt;p&gt;James Bennett&amp;#8217;s (&amp;#8220;Topics of Interest&amp;#8221;) reflected some of this too in the fact that there are very few core committers (14) and even fewer than understand the ORM and that they&amp;#8217;re having a hard time growing core-committers.  Eric&amp;#8217;s mention of Guido van Rossum&amp;#8217;s quote (creator of Python) &amp;#8220;give out more commit privileges sooner&amp;#8221;.&lt;/p&gt;

&lt;p&gt;Participation could be easier and more inviting if more core devs are added and there is also less concern about breaking trunk.&lt;/p&gt;

&lt;p&gt;Something I&amp;#8217;ll add: My understanding is that too many talks were submitted for DjangoCon so of course some were turned away, yet some presenters had more than 1 slot.  Many of the talks were very good, but I think it would be healthy to open up more opportunities for community members to present.&lt;/p&gt;

&lt;h2&gt;Improving Django and Becoming Core Developer&lt;/h2&gt;

&lt;p&gt;Given the concern about lack of core committers, Russell Keith-Magee (&amp;#8220;So you want to be a core developer?&amp;#8221;) was timely. In addition to going through the process of contributing code, he also mentioned that contributing to the Django community in the form of help (django-user list, stack overflow, etc) and writing new docs (tutorials, howtos, elaborating on existing docs) is key.&lt;/p&gt;

&lt;h2&gt;Interesting Apps and Projects&lt;/h2&gt;

&lt;p&gt;The lightning talks and Eric Holscher&amp;#8217;s talk (&amp;#8220;Large Problems in Django, Mostly Solved&amp;#8221;) were a good source of Django apps to try if you&amp;#8217;re not already using them.&lt;/p&gt;

&lt;p&gt;Eric also shares his measure of what makes a solid reusable app &amp;#8211; needs to have an easy setup, a good upgrade path, good documentation and well-tested.&lt;/p&gt;

&lt;p&gt;Apps he mentioned were Haystack (search), Sphinx (documentation), South (db migration), Celery (delayed execution), Fabric (deployment), gunicorn.org (async server), pip and virtualenv (packaging), TastyPie and Piston (RESTful), Taggit (tagging), Hudson (continuous integration tool), django-filter (django admin filtering), djangopackages.com (for finding new apps).&lt;/p&gt;

&lt;p&gt;Some interesting things from the lightning talks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://djangopackages.com"&gt;http://djangopackages.com&lt;/a&gt; (reusable apps, sites, tools &amp;#8211; a Django Dash project. Nice work &lt;a href="http://pydanny.com/"&gt;Daniel Greenfeld&lt;/a&gt;!)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://readthedocs.org"&gt;http://readthedocs.or&lt;/a&gt;g  (hosted help documents &amp;#8211; a Django Dash project)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://github.com/mitsuhiko/logbook"&gt;logbook&lt;/a&gt; - an easier way to add logging to Django&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;Performance&lt;/h2&gt;

&lt;p&gt;Frank Wiles&amp;#8217; talk (&amp;#8220;Alice in Performanceland &amp;#8211; Down the Rabbit Hole&amp;#8221;) was full of a lot of tasty morsels to help you &amp;#8220;do less&amp;#8221; and &amp;#8220;remove pressure on your server&amp;#8221; that ultimately increases the performance and responsiveness of your site.&lt;/p&gt;

&lt;h2&gt;Improving your Code Quality&lt;/h2&gt;

&lt;p&gt;Human code review is best says Peter Baumgartner in his talk (&amp;#8220;Monitoring Code Quality in Your Django Project&amp;#8221;). There are also many great code quality tools out there that many of us use: test suites, code coverage, link/pep8, profiling, code complexity metrics, value &amp;#8211; and pulling this together via Hudson.  Also, creating a build in one step is offers new developers a fast way to get started on a project.&lt;/p&gt;

&lt;h2&gt;Managed Django Hosting&lt;/h2&gt;

&lt;p&gt;I missed Nate Aune&amp;#8217;s lightning talk on his DjangoZoom.com cloud deployment solution, but looks interesting. &lt;a href="http://djangozoom.com/ponyexpress/"&gt;http://djangozoom.com/ponyexpress/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One of the lightning talks discussed the django-servee project: &lt;a href="http://www.servee.com/"&gt;http://www.servee.com/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;Thanks DjangoCon!&lt;/h2&gt;

&lt;p&gt;It was nice meeting new people using Django in Seattle and in other areas of Washington State, such as in Richland, Wenatchee and Spokane &amp;#8211; and reconnecting with friends from the Plone and greater Python communities.&lt;/p&gt;

&lt;p&gt;Thank you to the organizers, presenters and supporters for another great DjangoCon!&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/evolvingbits/~4/Z6bNHBjlwkY" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://blog.evolvingbits.com/blog/2010/09/14/djangocon-2010-highlights-videos/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[TAF's TechStart Expo 2010]]></title>
    <link href="http://feedproxy.google.com/~r/evolvingbits/~3/E6yBwX4NXNk/" />
    <updated>2010-06-20T00:55:21-07:00</updated>
    <id>http://blog.evolvingbits.com/blog/2010/06/20/tafs-techstart-expo-2010</id>
    <content type="html">&lt;p&gt;Brian Gershon headed down to White Center to see the final event of the season for TAF&amp;#8217;s &lt;a href="http://techaccess.org/TechStart/techstart.html"&gt;TechStart&lt;/a&gt; program.&lt;/p&gt;

&lt;p&gt;&amp;#8220;TechStart is TAF&amp;#8217;s free, yearlong after-school program for students in kindergarten through 8th grade. The focus of TechStart is providing science, technology, engineering, and math (STEM) enrichment to underserved children of color through project-based learning and advanced technology tools.&amp;#8221;&lt;/p&gt;

&lt;p&gt;There were three event themes in Robotics (using Lego Mindstorms), including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The Hand Crank Race where students had to build a robot, and power it by crank, and get to the finish line.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The Wind Turbine Event, where students had studied alternative wind energy and created a turbine connected to a robot. The robot would calculate the speed to determine which turbines had the best design.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;And the Archery Event, where students are given the distance to the archery target when they show up to the event, and then they need to program their robots to try to stop perfectly on the center of the bullseye.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Here are &lt;a href="http://www.flickr.com/photos/brianfive/sets/72157624314208148/"&gt;photos from the event&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Also, here is some video from the Archery Event:&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/evolvingbits/~4/E6yBwX4NXNk" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://blog.evolvingbits.com/blog/2010/06/20/tafs-techstart-expo-2010/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[TAF Academy's Final Projects in JavaScript]]></title>
    <link href="http://feedproxy.google.com/~r/evolvingbits/~3/Dc9nVM8HjkI/" />
    <updated>2010-06-20T00:41:19-07:00</updated>
    <id>http://blog.evolvingbits.com/blog/2010/06/20/taf-academys-final-projects-in-javascript</id>
    <content type="html">&lt;p&gt;Alex Tokar, Yonas Seifu and Brian Gershon went down to check out the final projects at &lt;a href="http://schools.fwps.org/taf/"&gt;Technology Access Foundation&amp;#8217;s Academy class in Federal Way&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This was the first class there to teach JavaScript, taught by Seth Nelson and Susan Evans.&lt;/p&gt;

&lt;p&gt;We saw Tic-Tac-Toe, a yo-yo animation, a Magic Eight Ball game, &amp;#8220;guess that image&amp;#8221;, and even a slot machine.&lt;/p&gt;

&lt;p&gt;The students did a fine job, and it was impressive to see what 10th grade students were able to learn and accomplish in a limited amount of time.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://blog.evolvingbits.com/images/post/2010/06/tic-tac-toe-300x225.jpg" alt="Tic Tac Toe in JavaScript" /&gt;&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/evolvingbits/~4/Dc9nVM8HjkI" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://blog.evolvingbits.com/blog/2010/06/20/taf-academys-final-projects-in-javascript/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[SURF iPhone and Android Incubator: Upcoming events and a strong initial Meetup]]></title>
    <link href="http://feedproxy.google.com/~r/evolvingbits/~3/W037_lq_Prg/" />
    <updated>2010-01-17T13:38:06-08:00</updated>
    <id>http://blog.evolvingbits.com/blog/2010/01/17/surf-iphone-android-incubator-upcoming-events-and-a-strong-initial-meetup</id>
    <content type="html">&lt;p&gt;There was a nice turnout of around 40 people at the SURF Incubator on Wednesday Jan 13th.&lt;/p&gt;

&lt;p&gt;There were really three events being held at the same time:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;SURF Open House&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;SURF iPhone Coding Night Meetup&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;and a last minute merge of the &amp;#8220;iPhone App Developers&amp;#8221; Meetup&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;The merging of events ultimately created a room full of interesting and engaged people who were networking and discussing mobile app development.&lt;/p&gt;

&lt;p&gt;I would say that most were there to network, and some were there to play with code.&lt;/p&gt;

&lt;p&gt;The networkers were a nice mix of entrepreneurs and people looking for iPhone developers. The coders were mainly new developers (and some graphic designers) that were getting into iPhone or Android development. The coding part of the session ended up very light because the event took on more of a networking feel.&lt;/p&gt;

&lt;p&gt;The Open House event was an active Q&amp;amp;A session for those interested in the incubator, upcoming plans, and how to get involved.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://blog.evolvingbits.com/images/post/2010/01/surf_jeff_brian_dan.jpg" alt="Jeff Yochim, Brian Gershon, Dan Dosen. Photo by Seaton Gras." /&gt;&lt;/p&gt;

&lt;p&gt;I personally made some new connections, reconnected with other iPhone developers and designers, and met people who I hadn&amp;#8217;t run across yet at other iPhone events.  The feeling was that there was pent up demand for iPhone networking and coding.&lt;/p&gt;

&lt;h2&gt;More about SURF Incubator&lt;/h2&gt;

&lt;p&gt;The SURF space is available as a location for people to collaborate and work on code together &amp;#8211; open every weekday during January.  The space is also available for other iPhone / Android events.  There are desks for people to pair up or meet in groups as well. The plan is to ultimately host many events and activities, and there is also permanent space for developers and those building businesses. This month is the Open House so people can start to explore and use the space.  &lt;a href="http://surfincubator.com"&gt;http://surfincubator.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The recent events have been geared toward iPhone, but the SURF Incubator will also host Android events. This would open up opportunities to create synergies between the two platforms.&lt;/p&gt;

&lt;h3&gt;Have feedback?&lt;/h3&gt;

&lt;p&gt;There is also a new IdeaScale portal for people to post feedback to at &lt;a href="http://surfincubator.ideascale.com"&gt;http://surfincubator.ideascale.com&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;Upcoming Meetup Events at SURF&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The &amp;#8220;Seattle iPhone &amp;amp; Android Incubator&amp;#8221; Meetup&lt;/strong&gt; is an umbrella for upcoming workshops and coding sessions at SURF.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The plan it to have host regular coding sessions/workshops around specific themes and experience levels.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Please join this Meetup for a calendar of upcoming events.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;On Monday, there will be a &lt;a href="http://www.meetup.com/Seattle-iPhone-Android-Incubator/calendar/12331931/"&gt;Beginner iPhone SDK Xcode - Q &amp;amp; A Discussion&lt;/a&gt; Meetup.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;These events would also complement the existing NSCoder group by adding an additional location for those that can&amp;#8217;t make it to the University Village Zoka event.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The &amp;#8220;iPhone App Developers&amp;#8221; Meetup&lt;/strong&gt; hosted by Andrew will be located at SURF Incubator. I haven&amp;#8217;t attended this Meetup, but it looks to be a nice opportunity for networking.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;More iPhone-related events&lt;/h2&gt;

&lt;p&gt;We&amp;#8217;re fortunate to have many opportunities to meet and code in Seattle.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;XCoders &amp;#8211; which offer a presentation, post-meeting networking at Luau, and an active email list. There are two meetings per month: One in Seattle and one on the east side. &lt;a href="http://www.seattlexcoders.org/"&gt;http://www.seattlexcoders.org/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;NSCoder Night &amp;#8211; meets each Tuesdays at University Village Zoka in Seattle. &lt;a href="http://nscodernight.com/?cat=28"&gt;http://nscodernight.com/?cat=28&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;img src="http://feeds.feedburner.com/~r/evolvingbits/~4/W037_lq_Prg" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://blog.evolvingbits.com/blog/2010/01/17/surf-iphone-android-incubator-upcoming-events-and-a-strong-initial-meetup/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[Open Tagging on OSX: A Powerful Way to Organize]]></title>
    <link href="http://feedproxy.google.com/~r/evolvingbits/~3/VOdEsNsPYUs/" />
    <updated>2009-09-25T22:23:52-07:00</updated>
    <id>http://blog.evolvingbits.com/blog/2009/09/25/open-tagging-on-osx-a-powerful-way-to-organize</id>
    <content type="html">&lt;p&gt;For each project I work on, I have a multitude of files, folders, applications, and web pages.&lt;/p&gt;

&lt;p&gt;My goal is to have shortcuts in one place, organized by project, as the ultimate launcher.&lt;/p&gt;

&lt;p&gt;Here were some good initial attempts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Firefox bookmarks might be a nice way to go, but doesn&amp;#8217;t make it easy to link to local files, so that solution was quickly dismissed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://www.manytricks.com/butler/"&gt;Butler&lt;/a&gt; did this well &amp;#8211; a quick click in the menu bar pulls up a hierarchical list of projects and shortcuts to resources for each project.  You could easily drag and drop URLs as well as local file shortcuts to Butler as well.  This approach basically created a nice external bookmark manager not tied to any one browser and able to link to files of all types.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Recently I noticed that Snow Leopard&amp;#8217;s improved Grid (in the Dock) now allows for navigating down a hierarchy of folders quickly, so though about putting my shortcuts there.  The only problem is that the dock is &amp;#8220;way down there&amp;#8221; (irregardless of where you put the dock) and takes time to mouse around.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Each tool took their own approach, and I had to pick one since I couldn&amp;#8217;t easily use multiple ones. Also, graphical solutions still take precious time to drag your mouse and navigate through the hierarchy.&lt;/p&gt;

&lt;p&gt;Then a better idea.&lt;/p&gt;

&lt;p&gt;Spotlight is quick and fast for searching so is ideal (just press apple-spacebar) though typing in search phrases still brings up lots of extra information I don&amp;#8217;t want.&lt;/p&gt;

&lt;p&gt;So how do I universally &amp;#8220;tag&amp;#8221; resources and bring them up quickly?&lt;/p&gt;

&lt;p&gt;First, the cool 2006 (and still usable) &lt;a href="http://lifehacker.com/169971/metadata-as-a-filing-system"&gt;metadata solution mentioned on LifeHacker&lt;/a&gt;: Apple-I on files you want to tag, then add a custom tag into the comment box. Prefix with &amp;amp; so it&amp;#8217;s quick to find without bringing up a lot of other crap.  For my common Web Collective company shortcuts, I used &amp;amp;wc.  Now, when I jump to Spotlight and type &amp;amp;wc, I instantly see all my shortcuts.&lt;/p&gt;

&lt;p&gt;This was great, but then I found tagging nirvana on OSX.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;An ecosystem of tagging tools has popped up around a free and open source &lt;a href="http://code.google.com/p/openmeta/"&gt;OpenMeta Tag&lt;/a&gt; standard.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OpenMeta means that you can now tag files, folders, emails, web pages, etc, with an assortment of tools, and then search for them with an assortment of tools.&lt;/strong&gt; No need for custom tagging in the file &amp;#8220;comment&amp;#8221; field, and no need to use a proprietary tagging system that locks you into one tool. (Btw, for web pages, I drag a shortcut from the browser to my file system, then tag the resulting .webloc file)&lt;/p&gt;

&lt;p&gt;The simplest workflow consists of tagging files by dragging/dropping them onto &lt;a href="http://hasseg.org/tagger/"&gt;Tagger&lt;/a&gt;, then pulling them up quickly in Spotlight.  To pull up all my shortcuts tagged with &amp;#8220;wc&amp;#8221; you just type &amp;#8220;tag:wc&amp;#8221;.  This is a free solution and works well.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://blog.evolvingbits.com/images/post/2009/09/tagger_window.png" alt="Tagger window" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="http://blog.evolvingbits.com/images/post/2009/09/Screen-shot-2009-09-25-at-10.31.39-PM.png" alt="Spotlight Search using tags" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Next in the evolution are tools such as &lt;a href="http://gravityapps.com/tags/overview/"&gt;Tags&lt;/a&gt; or &lt;a href="http://www.nudgenudge.eu/punakea"&gt;Punakea&lt;/a&gt; or &lt;a href="http://www.ironicsoftware.com/leap/index.html"&gt;Leap&lt;/a&gt; &amp;#8211; which make it easy to tag, while also having nice integrated search features.&lt;/strong&gt; Tags makes it easy to tag email (in addition to files and folders), Leap (the creator of OpenMeta) is interesting because it has a very fast and flexible searching mechanism and basically does all the work of the Finder with the powerful addition of tagging and rating.  These are all paid applications &amp;#8211; well worth it if they help you to better organize.&lt;/p&gt;

&lt;p&gt;I&amp;#8217;m still playing around to find the right combination of tools for my own workflow.  See &lt;a href="http://code.google.com/p/openmeta/wiki/OpenMetaApplications"&gt;http://code.google.com/p/openmeta/wiki/OpenMetaApplications&lt;/a&gt; for a nice list.&lt;/p&gt;

&lt;p&gt;Tagger and Spotlight are working well for quick shortcuts &amp;#8211; Tags, Punakea and Leap start to show what a world would be like when relying less on hierarchy and more on tags.&lt;/p&gt;

&lt;p&gt;Hmmm, &lt;a href="http://web.me.com/jonstovell/Tag_Folders/Tag_Folders_Home.html"&gt;TagFolders&lt;/a&gt; looks pretty interesting too&amp;#8230;&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/evolvingbits/~4/VOdEsNsPYUs" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://blog.evolvingbits.com/blog/2009/09/25/open-tagging-on-osx-a-powerful-way-to-organize/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[DjangoCon 2009 Recap]]></title>
    <link href="http://feedproxy.google.com/~r/evolvingbits/~3/Krnsjclj9NI/" />
    <updated>2009-09-14T17:21:10-07:00</updated>
    <id>http://blog.evolvingbits.com/blog/2009/09/14/djangocon-2009-recap</id>
    <content type="html">&lt;p&gt;After catching the great videos from last year&amp;#8217;s first DjangoCon I looked forward to attending this year.  I&amp;#8217;m glad I went.&lt;/p&gt;

&lt;p&gt;We&amp;#8217;ll be discussing &amp;#8220;What did we learn at DjangoCon?&amp;#8221; at this Thursday&amp;#8217;s Django Seattle. See &lt;a href="http://www.djangoseattle.org"&gt;http://www.djangoseattle.org&lt;/a&gt; for more details.&lt;/p&gt;

&lt;p&gt;In the meantime, here are some high-level take-aways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Should JavaScript and RESTful services be part of the Django core?  JS is even more useful/powerful with the latest fast JS engines in Chrome, Firefox and Safari/Webkit. Competitor Rails builds in RESTful features - some promising ones for Django include django-piston and django-roa.  I liked how Ted Leung talked about &amp;#8220;science experiments&amp;#8221; and posed many ideas on what we may want to experiment with to get right before approaching Django core.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Git - Though this doesn&amp;#8217;t directly relate to Django, DVCS systems like Git and Mercurial are in wide use.  SVN is a given, but now feel I need to know Git and Mercurial well - since popular projects are using these.  I also wanted to pick a &amp;#8220;pet&amp;#8221; DVCS to use as my default too.  I&amp;#8217;ve chosen Git (mainly because of git-svn and GitHub), but will be using Mercurial as well.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Django Tips and Tricks - Many to pick from, but I liked Query.as_sql() method to show the SQL the Django ORM generates on your behalf, the flexibility of using &amp;#8220;signals&amp;#8221; to loosely couple functionality (see django-signals-ahoy on bithub), reusing other Python WSGI middleware (such as repoze.bitblt, repoze.squeeze, repoze.profile), pylint/djangolint, class-based views, db schema migrations with South, much faster test speeds in Django 1.1, various test utilities floating around, talks on performance, etc.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Django jobs are growing, and &lt;a href="http://ping.fm/WpCf4"&gt;Django also a popular platform for Start-ups&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Check out the &lt;a href="http://djangocon.pbworks.com/Slides"&gt;DjangoCon2009 Wiki&lt;/a&gt; for slides and presentations.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;img src="http://feeds.feedburner.com/~r/evolvingbits/~4/Krnsjclj9NI" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://blog.evolvingbits.com/blog/2009/09/14/djangocon-2009-recap/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[Snow Leopard Smooth Except Python 32/64 Cocktail]]></title>
    <link href="http://feedproxy.google.com/~r/evolvingbits/~3/2hAFyLyDcx8/" />
    <updated>2009-09-02T21:11:57-07:00</updated>
    <id>http://blog.evolvingbits.com/blog/2009/09/02/snow-leopard-smooth-except-python-3264-cocktail</id>
    <content type="html">&lt;p&gt;&lt;strong&gt;UPDATE: Thanks to the helpful commenters, I found success getting an older Zope instance running on Python 2.4 on Snow Leopard using buildout.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NOTE: This post is for installing Python 2.4 on a brand new Snow Leopard Instance.&lt;/strong&gt; If upgrading on top of Leopard, you may have to update easy_install, macports, etc.  More Googling around may be required.&lt;strong&gt;
&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Though I had to create two buildouts to get this to work &amp;#8211; is there a way to get this into one buildout?&lt;/p&gt;

&lt;p&gt;I first tried to create one buildout by combining  Florian Schulze&amp;#8217;s buildout recipe with a standard Zope recipe &amp;#8211; but since initial bootstrap was run by Python 2.5, I couldn&amp;#8217;t get the Zope instance to use the new Python 2.4. &lt;strong&gt;So I first ran a buildout to build Python 2.4 (using OSX-installed Python 2.5), then used that new Python 2.4 to run bootstrap.py on the Zope 2.8.x buildout.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here&amp;#8217;s the recipe I used to just build Python 2.4 (requires Florian&amp;#8217;s buildout, see Alexander Limi&amp;#8217;s comment below for where to find this):&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;[buildout]
#extends = src/snowleopard.cfg     # no longer required as Joe mentions below
python-buildout-root = ${buildout:directory}/src
parts -=
   ${buildout:python25-parts}
   ${buildout:python26-parts}

[install-links]
prefix = /opt/local
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Then I ran a simple Zope 2.8 buildout to see if it would compile (using new Python 2.4 to bootstrap), and it did!&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;[buildout]
parts =
   zope2
   instance

[zope2]
recipe = plone.recipe.zope2install
url = http://www.zope.org/Products/Zope/2.8.9.1/Zope-2.8.9.1-final.tgz

[instance]
recipe = plone.recipe.zope2instance
zope2-location = ${zope2:location}
user = admin:admin
http-address = 8080
debug-mode = on
verbose-security = on
&lt;/code&gt;&lt;/pre&gt;

&lt;hr /&gt;

&lt;p&gt;Here is my initial post:&lt;/p&gt;

&lt;p&gt;I have to say &amp;#8211; most everything I&amp;#8217;ve installed on a fresh Snow Leopard install has worked flawlessly and swiftly &amp;#8211; except for (the minor inconvenience of) iStat not working.  &lt;strong&gt;UPDATE: iStat 2.0 is available for Snow Leopard now.&lt;/strong&gt; &lt;em&gt;There&amp;#8217;s a new beta of MenuMeters too for Snow Leopard&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;There are also nice subtle improvements, see Mac Life&amp;#8217;s &lt;a href="http://www.maclife.com/article/feature/100_snow_leopard_tips_tricks_and_features"&gt;100 Top Snow Leopard Tips, Trick and Features&lt;/a&gt; for improvements to Preview, Expose, Stacks, etc.  I&amp;#8217;ve very happy with the upgrade.&lt;/p&gt;

&lt;p&gt;Now for the bad news for those like myself who depend on Python 2.4 for Plone, since many versions of Zope require Python 2.4.  &lt;em&gt;I also use Python for Django, though that should run fine on Python that shipped with Snow Leopard.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;You can read many of the initial details around the web, but here&amp;#8217;s what I&amp;#8217;ve experienced and have been able to put together:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Note that these details are for a fresh Snow Leopard install - there are a different set of issues if you&amp;#8217;re upgrading over your existing Leopard.  &lt;strong&gt;NEW: &amp;#8220;Clark&amp;#8217;s Tech Blog&amp;#8221; has a nice write-up about &lt;/strong&gt;&lt;a href="http://www.libertypages.com/clarktech/?p=719"&gt;upgrading Python after upgrading Leopard to Snow Leopard&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Snow Leopard ships with Python 2.5.4, and this runs as a 32-bit application.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I also need 2.4 branches of Python too, so I tried rolling my own (as usual) and it didn&amp;#8217;t compile.  I then followed that thread for awhile.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I then thought I pulled a fast one when I compiled from MacPorts and everything ran great!&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&amp;#8230; but then I compiled Zope, and attempted to run an instance.  I saw a mysterious &amp;#8220;No such file or directory&amp;#8221; error.  Hmmm, I can navigate to that file, but running the script with my new Python interpretor was causing this error.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;After digging around with Activity Monitor, I discovered that the Python I built from scratch was running as a 64-bit app &amp;#8211; while the Python that comes with Snow Leopard was only running 32-bit &amp;#8211; which is telling, since most everything else on Snow Leopard is running 64-bit.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Guessing that the the mysterious &amp;#8220;No such file or directory&amp;#8221; (when the file and directory did indeed exist) was due to a &lt;strong&gt;weird cocktail of 32-bit pieces living with 64-bit pieces&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;My latest theory was that I needed to figure out how to build Python as 32-bit.  I played with Macports and various architecture settings to hardwire this, but long-story-short &amp;#8211; the architecture override isn&amp;#8217;t used everywhere &amp;#8211; so parts still compile natively as 64-bit on Snow Leopard.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The best thread on the topic (that&amp;#8217;s steadily growing) is here: &lt;a href="http://bugs.python.org/issue6802"&gt;http://bugs.python.org/issue6802&lt;/a&gt; with msg92153 left today&lt;/strong&gt;, which basically offers some additional settings for compiling Python as a 32-bit app (for Python 2.6).  Also mentions that Snow Leopard did some magic to get Python 2.5 working as a 32-bit app.&lt;strong&gt;
&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;My hope is that once &amp;#8220;32-bit&amp;#8221; Python 2.4 happens, the rest of the Zope install, etc, will be back to the good ol&amp;#8217; days in Leopard.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;strong&gt;Plan B&amp;#8217;s:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Otherwise, to save some headache, I&amp;#8217;m wondering about installing a small Linux distro on VMWare as a local mini web-server where I can easily install Python and Zope &amp;#8211; though that&amp;#8217;s a bit of a pain too.&lt;/p&gt;

&lt;p&gt;Luckily I also have my old Leopard in a separate partition (see my &lt;a href="http://www.evolvingbits.com/2009/08/29/extra-life-for-my-macbook-pro-with-snow-leopard-and-inexpensive-hardware/"&gt;Extra life for my MacBook Pro with Snow Leopard and inexpensive hardware&lt;/a&gt; blog entry) and can boot that if necessary to work on various Zope/Plone sites (that required Python 2.4) while this is all being sorted out.&lt;/p&gt;

&lt;p&gt;Now time to see if I can get 32-bit Python 2.4.6 compiled and installed, while waiting for more patches and information to appear&amp;#8230;&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/evolvingbits/~4/2hAFyLyDcx8" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://blog.evolvingbits.com/blog/2009/09/02/snow-leopard-smooth-except-python-3264-cocktail/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[Extra life for my MacBook Pro with Snow Leopard and inexpensive hardware]]></title>
    <link href="http://feedproxy.google.com/~r/evolvingbits/~3/nJWuQOsG8j4/" />
    <updated>2009-08-29T14:32:11-07:00</updated>
    <id>http://blog.evolvingbits.com/blog/2009/08/29/extra-life-for-my-macbook-pro-with-snow-leopard-and-inexpensive-hardware</id>
    <content type="html">&lt;p&gt;I&amp;#8217;m using the Snow Leopard upgrade as a chance to add some extra life to my (older) MacBook Pro (2,2).&lt;/p&gt;

&lt;p&gt;My goals:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Max out memory to 3GB (up from 2 GB) &amp;#8211; $29&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Upgrade hard-drive to 500GB (up from 120GB) - $129 for a 2.5&amp;#8221; Seagate Momentus SATA 7200 RPM.  My current drive is 5400 RPM, so this will be a speed improvement too.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I also want to install the OS from scratch as a chance to clean things out.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Hey, I can then even upgrade my wife&amp;#8217;s laptop with my 120GB drive!&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;The steps have been pretty easy:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Backup whole drive using &lt;a href="http://www.shirt-pocket.com/SuperDuper/SuperDuperDescription.html"&gt;SuperDuper!&lt;/a&gt; to a bootable external drive.  If I didn&amp;#8217;t want to install Snow Leopard from scratch, you could then just transfer your previous OS back to the new hard-drive and be done.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Upgrade memory, piece of cake&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Upgrade hard-drive. I like to do this sort of thing myself, albeit Apple is the official place to have this done.  This takes a Torx 6 screwdriver, and some patience, but was fairly easy to do thanks to &lt;a href="http://www.ifixit.com/Guide/Repair/MacBook-Pro-15-Inch-Core-Duo-Hard-Drive-Replacement/486/1"&gt;http://www.ifixit.com&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Start Installing Leopard.  Note that you &lt;strong&gt;do not need to install Leopard first&lt;/strong&gt; for a brand new install.  I just put in Snow Leopard, and booted holding down &amp;#8220;C&amp;#8221; and the installer popped up.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Since the drive is large, I decided to take an extra step of partitioning my drive into 2.  You can run Disk Utility right before starting the install to create these.  One partition as my main one for Snow Leopard, and the other as a complete bootable Leopard exactly the way my laptop was before the upgrade &amp;#8211; just in case I forgot something &amp;#8211; and I can easily pull files over while doing the big reinstall-everything-from-scratch step.  SuperDuper! makes this easy &amp;#8211; both to backup your drive, and restore it on a new partition.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Frolic in all my new hard-drive space and anticipated speed improvements &amp;#8211; more memory, faster hard-drive and faster OS.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;img src="http://feeds.feedburner.com/~r/evolvingbits/~4/nJWuQOsG8j4" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://blog.evolvingbits.com/blog/2009/08/29/extra-life-for-my-macbook-pro-with-snow-leopard-and-inexpensive-hardware/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[Django Seattle's Website Barn Raising Sprint: A Recap]]></title>
    <link href="http://feedproxy.google.com/~r/evolvingbits/~3/cFmb9DSbJPw/" />
    <updated>2009-07-27T00:00:56-07:00</updated>
    <id>http://blog.evolvingbits.com/blog/2009/07/27/django-seattles-website-barn-raising-sprint-a-recap</id>
    <content type="html">&lt;h2&gt;New Django Seattle Website&lt;/h2&gt;

&lt;p&gt;Thanks to 14 Sprinters who came together on July 25, we now have a Django Seattle Website at &lt;a href="http://www.djangoseattle.org"&gt;http://www.djangoseattle.org&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="http://blog.evolvingbits.com/images/post/2009/07/django-seattle-sprint-group.jpg" alt="Some of our Django Seattle Sprinters" /&gt;&lt;/p&gt;

&lt;p&gt;There was a lot of infrastructure work done at the sprint which is still in development and didn&amp;#8217;t make it to the live site yet &amp;#8211; but the experience of getting to know each other, and learning/sharing Django knowledge was another fine Sprint accomplishment.&lt;/p&gt;

&lt;p&gt;Here&amp;#8217;s a brief summary of what people worked on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Integrated in Blogging, Profile and Calendar functionality from &lt;a href="http://code.google.com/p/django-basic-apps/"&gt;django-basic-apps&lt;/a&gt;. &lt;em&gt;Initially Pinax was explored, but had a lot of dependencies and seemed better for creating specific sites genres, but was challenging to incorporate into our existing site.&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Created a Twitter portlet that shows live #djangoseattle Tweets.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Setup Flatpages for core content, and creating a database-driven menu&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Created a logo and initial site design and templates&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Setup Django on live server&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Used the Django Debug Toolbar while developing the site&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Some were playing with Django for the first time&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Some floated around to help diagnose problems and help those new to Django&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;img src="http://blog.evolvingbits.com/images/post/2009/07/django-seattle-sprint-whiteboard.jpg" alt="Functionality brainstorm" /&gt;&lt;/p&gt;

&lt;h2&gt;Thank you Sprinters&lt;/h2&gt;

&lt;p&gt;Our sprinters (in alphabetical order) were: Andrew Beyer, Jon Callahan, Jesse Franceschini, Doug, Brian Gershon, Johann Heller, Paul Pham, Micah Ransdell, Leo Shklovskii, Trevor Smith, Jesse Snyder, Alex Tokar, Ragan Webber, Ben Wilber&lt;/p&gt;

&lt;h2&gt;Thank you Sponsors&lt;/h2&gt;

&lt;p&gt;Also a &lt;strong&gt;Big Thank You&lt;/strong&gt; to our sponsors, hosts and organizers.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Jon Callahan at &lt;a href="http://mazamascience.com/"&gt;Mazama Science&lt;/a&gt; treated all 14 of us to a tasty &lt;a href="http://www.pccnaturalmarkets.com/"&gt;PCC Natural Markets&lt;/a&gt; lunch, coffee, drinks and snacks.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Michael Kim at &lt;a href="http://grapevyn.com"&gt;Grapevyn&lt;/a&gt; brought in Top Pot Doughnuts.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Paul Pham hosted us at his coworking space &lt;a href="http://www.officenomads.com/"&gt;Office Nomads&lt;/a&gt; which was a great place to have a sprint.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Leo Shklovskii at &lt;a href="http://www.evoworx.com/"&gt;Evoworx&lt;/a&gt; and Brian Gershon at &lt;a href="http://www.webcollective.coop"&gt;Web Collective&lt;/a&gt; had a great time organizing the sprint.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;We look forward to our next sprint!&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/evolvingbits/~4/cFmb9DSbJPw" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://blog.evolvingbits.com/blog/2009/07/27/django-seattles-website-barn-raising-sprint-a-recap/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[PyCon2009 Tutorial Recap: Real World Django / Optimizations in Python]]></title>
    <link href="http://feedproxy.google.com/~r/evolvingbits/~3/1Fnbq9kHxeM/" />
    <updated>2009-03-25T19:54:27-07:00</updated>
    <id>http://blog.evolvingbits.com/blog/2009/03/25/pycon2009-tutorials-real-world-django-optimizations-in-python</id>
    <content type="html">&lt;p&gt;I primed the pump on the flight to PyCon by catching up on my reading. &amp;#8220;Expert Python Programming&amp;#8221; (Tarek Ziade) reminded me that I wanted to play with ipython shell and virtualenv (just learned today about the handy extension &amp;#8220;virtualenvwrapper&amp;#8221;), and reinforced and offered many great Best Practices.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Optimization Tutorial&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I then got on my geek at &amp;#8220;Faster Python Programs through Optimization&amp;#8221; (Mike Müller of Python Academy), where we dove deeper into profiling and tips on improving speed or saving memory.&lt;/p&gt;

&lt;p&gt;Some paraphrased guidelines to consider before you start optimizing (which were also reinforced in the &amp;#8220;Real World Django&amp;#8221; tutorial which I&amp;#8217;ll chat about next):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Make sure your program is really too slow - could be other factors like network traffic, database, etc.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Don&amp;#8217;t optimize as you go - might ultimately not need to spend that time.  Also working code is always important first.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Only consider realistic use cases and user experience&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;We played with the profiling tools (profile, cProfile, time, pystone, heapy) and used them to compare various techniques:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;xrange and also Generators shaved off time by not having to allocate memory for large data sets.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;use built-in types as much as possible (including some newer collection classes)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;iterating and appending strings by first appending to lists, then using a join statement to create large strings (versus building strings via += and loops)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;One new one for me was converting lists to Sets before testing for membership of an item in the list, which is fast due to Set optimizations.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The tutorial also covered pysco, processing and numpy modules, as well as caching techniques.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;strong&gt;Real-world Django Tutorial&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This very aptly named presentation by Jacob Kaplan-Moss and James Bennett was excellent for those of us who develop and deploy Django websites.  The full skinny (with link to slides) is here: &lt;a href="http://jacobian.org/speaking/2009/real-world-django/"&gt;http://jacobian.org/speaking/2009/real-world-django/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Some highlights for me included:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Focus on tight Django Applications that promote reuse while also breaking a website into components. Benefits of also leveraging packaging up your own components.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Gain flexibility by leveraging Django Managers, and they help encapsulate behavior behind an API.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Can extend models via new (in Django 1.1) Proxy subclasses.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Lots of discussion and recommendations for testing &amp;#8211; from unit testing, through functional testing, and then browser-based functional testing. Yep, you need them all. I&amp;#8217;d like to play more with Twill and Windmill.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Automating deployment - including options like virtualenv (and virtualenvwrapper), Ian Bicking&amp;#8217;s &lt;a href="http://blog.ianbicking.org/2008/10/28/pyinstall-is-dead-long-live-pip/"&gt;pip&lt;/a&gt; (&amp;#8220;pip installs packages&amp;#8221;), zc.buildout, and &lt;a href="http://pypi.python.org/pypi/Fabric/"&gt;Fabric&lt;/a&gt;.  &lt;em&gt;zc.buildout&amp;#8217;s power was emphasized (with its recipes, etc) was a bit overshadowed by comments on lack of documentation.&lt;/em&gt; I&amp;#8217;d like to give pip and Fabric a try.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Apache + mod_wsgi is now a preferred platform for server Django sites (or at least much more consistent performance and memory-usage wise than Apache + mod_python).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Definitely flip through the session slides!  &lt;em&gt;These were just some highlights for me out of 189 slides of useful information.&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Various tidbits for the next few days here at PyCon:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Open Space sessions come highly recommended&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;There&amp;#8217;s a &lt;a href="http://us.pycon.org/2009/conference/talks/?filter=testing"&gt;heavy testing thread&lt;/a&gt; throughout conference (10 sessions worth!)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://us.pycon.org/2009/conference/schedule/event/P37/"&gt;Friday 11am&lt;/a&gt;: Using Windmill&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://us.pycon.org/2009/conference/schedule/event/76/"&gt;Saturday 4:15p&lt;/a&gt;: Ian Bicking&amp;#8217;s session (creator of PIP and virtualenv, among many other topics)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://us.pycon.org/2009/conference/schedule/event/88/"&gt;Sunday 10:35a&lt;/a&gt;: Panel: Functional Testing Tools in Python&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&amp;#8230; though it will ultimately be tough to pick and choose from all the great topics!&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Time for some sleep&amp;#8230; more tutorials tomorrow, then 3 days of conference, then 4 days of sprints!&lt;/p&gt;

&lt;p&gt;ps: It&amp;#8217;s been great to see familiar faces from the Zope and Plone communities, which is often where I &amp;#8220;get my Python on&amp;#8221;.  Lately I&amp;#8217;m also doing a lot of Django, so enjoying all the synergy around Python here at PyCon2009!&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/evolvingbits/~4/1Fnbq9kHxeM" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://blog.evolvingbits.com/blog/2009/03/25/pycon2009-tutorials-real-world-django-optimizations-in-python/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[Social and Economic Justice, The Interra Project, Center for Ethical Leadership -- and Plone]]></title>
    <link href="http://feedproxy.google.com/~r/evolvingbits/~3/rvCrVGkIV-o/" />
    <updated>2009-02-12T17:21:07-08:00</updated>
    <id>http://blog.evolvingbits.com/blog/2009/02/12/social-and-economic-justice-the-interra-project-center-for-ethical-leadership-and-plone</id>
    <content type="html">&lt;p&gt;&lt;strong&gt;Congratulations to &lt;/strong&gt;&lt;strong&gt;Jon Ramer&lt;/strong&gt; from &lt;strong&gt;The Interra Project&lt;/strong&gt;, and &lt;strong&gt;Mark Okazaki&lt;/strong&gt; from &lt;strong&gt;Neighborhood House &lt;/strong&gt;for winning this year&amp;#8217;s Bill Grace Leadership Legacy Award awards from the Center for Ethical Leadership.&lt;/p&gt;

&lt;p&gt;Both the Interra Project and Center for Ethical Leadership are clients (and friends) of ours at &lt;a href="http://www.webcollective.coop"&gt;Web Collective&lt;/a&gt; and we&amp;#8217;re impressed with the great work they are doing.&lt;/p&gt;

&lt;p&gt;We developed websites for them in &lt;a href="http://www.plone.org/"&gt;Plone&lt;/a&gt;, including &lt;a href="http://www.bostoncommunitychange.org/"&gt;Boston Community Change&lt;/a&gt;, &lt;a href="http://www.pugetsound.cc/"&gt;Puget Sound Community Change&lt;/a&gt; and &lt;a href="http://www.ethicalleadership.org"&gt;Center for Ethical Leadership&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This award &amp;#8220;celebrates Puget Sound leaders whose vision, commitment and unceasing efforts are significantly advancing social, environmental, and economic justice.&amp;#8221;&lt;/p&gt;

&lt;p&gt;Tickets are available for the &lt;a href="http://www.brownpapertickets.com/event/50921"&gt;4th Annual Bill Grace Leadership Legacy Awards Dinner&lt;/a&gt; on March 5th, 2009.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.interraproject.org/"&gt;The Interra Project&lt;/a&gt; &amp;#8220;provides consumers with the incentives they need to shift their purchasing habits to support the health of their communities by shopping with locally-focused, environmentally and sustainably-minded businesses.&amp;#8221;  I was part of the team that built the &lt;a href="http://www.bostoncommunitychange.org/"&gt;Boston Community Change&lt;/a&gt; website.  Now there is a  &lt;a href="http://www.pugetsound.cc/"&gt;Puget Sound Community Change&lt;/a&gt; in our local community.  You can &lt;a href="http://www.pugetsound.cc/join-now"&gt;sign-up for a community change card&lt;/a&gt; for free and use when purchasing at local businesses, or if you own a business you can offer your services to those who have cards.&lt;/p&gt;

&lt;p&gt;My experience with &lt;a href="http://www.nhwa.org/"&gt;Neighborhood House&lt;/a&gt; is through a monthly Multicultural Committee meeting where I live (at New Rainier Vista) where they provide language translation and other great community services. Our community has native speakers from Somalia, Ethiopia, China, and Vietnam.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/evolvingbits/~4/rvCrVGkIV-o" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://blog.evolvingbits.com/blog/2009/02/12/social-and-economic-justice-the-interra-project-center-for-ethical-leadership-and-plone/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[Packed House at Northwest Python Day 2009]]></title>
    <link href="http://feedproxy.google.com/~r/evolvingbits/~3/D6XxUyiIbMM/" />
    <updated>2009-02-01T16:18:44-08:00</updated>
    <id>http://blog.evolvingbits.com/blog/2009/02/01/packed-house-at-northwest-python-day-2009</id>
    <content type="html">&lt;p&gt;I enjoyed hanging with the local Python crowd yesterday in Seattle for &lt;a href="http://www.seapig.org/NorthwestPythonDay"&gt;Northwest Python Day 2009&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;As usual, Python is popular in many realms.&lt;/p&gt;

&lt;h2&gt;Who attended?&lt;/h2&gt;

&lt;p&gt;We started with quick introductions - a nice mix of folks with some traveling from Portland OR, Vancouver BC and even one from Chicago and DC.  Many folks using Python &amp;#8211; several announcing Python job openings.  People were from various organizations such as University of Washington, NOAA, ONENW, Web Collective, NPower, LexisNexis, Microsoft, Sun, and many interesting companies I didn&amp;#8217;t catch the names of.&lt;/p&gt;

&lt;h2&gt;Quick Highlights&lt;/h2&gt;

&lt;p&gt;We started with a lightning talk with tips on moving your code toward Python 3.0 (running Python 2.6 with -3 option; using &lt;strong&gt;future&lt;/strong&gt;, running 2to3).&lt;/p&gt;

&lt;p&gt;Then saw a light-weight web framework called &lt;a href="http://werkzeug.pocoo.org/"&gt;Werkzeug&lt;/a&gt; - I like its idea of decorating a Python view function with its URL mapping [e.g. @expose(&amp;#8216;/&amp;#8217;) to connect a view with the root of the site].&lt;/p&gt;

&lt;p&gt;We then heard about the ease of leveraging &lt;a href="http://buildbot.net/trac"&gt;buildbot&lt;/a&gt; for testing.&lt;/p&gt;

&lt;p&gt;NOAA started the presentations with their CAMEO Chemical modeling application, &amp;#8220;a Pylons-based web app wrapped in a wxPython interface for desktop use.&amp;#8221;  There were various complications making this work cross-platform on both IE and Safari, but overall successful.  Chris has high hopes for upcoming wxWebKit (which wasn&amp;#8217;t quite mature enough at the time they were developing their app), and might consider pyQT or pyGTK for future projects.&lt;/p&gt;

&lt;p&gt;University of Washington&amp;#8217;s Beraber was interesting - a way to offer open source cloud computing (via a Python-based VM) by sharing your computer safely with others, and being able to run programs on many computers around the world.&lt;/p&gt;

&lt;p&gt;After lunch, lightning talks resumed with Sphinx, an RST based system for writing documentation for your code (used for Python&amp;#8217;s documentation).&lt;/p&gt;

&lt;p&gt;We then saw NodeBox, &amp;#8220;a Mac OS X application that lets you create 2D visuals (static, animated or interactive) using Python programming code and export them as a PDF or a QuickTime movie.&amp;#8221;  I checked out their website &amp;#8211; some cool plugins like modeling of flocks.  You could probably make some very cool desktop wallpapers with this too.&lt;/p&gt;

&lt;p&gt;If you&amp;#8217;d like to play with virtualization and open source, &lt;a href="http://cool-st.com/wordpress/"&gt;Derek Simkowiak&lt;/a&gt; is working on a program called &amp;#8220;vmshell&amp;#8221; that allows you to more easily manage virtual sandboxes.  Management of VMs was mentioned as something missing from many open source VM solutions.&lt;/p&gt;

&lt;p&gt;Our first afternoon presentation talked about the benefits of high-level languages like Python and benefits over lower-level languages like C++ or Java.  Mark McWiggins presented good arguments for why organizations may want to consider Python over these other languages.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.sagemath.org/"&gt;Sage&lt;/a&gt;, and its 5+ million lines of code, offers open source math modeling.  For those that need Mathematica, Magma, Maple, or Matlab power, Sage was impressive &amp;#8211; from interacting with and showing complex math formulas in Python and Javascript, to live 2D/3D plotting, to importing the library into your own Python program and going to town.  One of its innovative features (from a web dev perspective) is writing a math function (in Python) which you want to interact with it on the web &amp;#8211; instead of creating your own web form, you can decorate your function with @interact, which introspects the function parameters and automatically creates a web form for that function.&lt;/p&gt;

&lt;p&gt;After having played a bit with Google App Engine, it was nice to hear a real-world experience about using this in a production project.  Web 2.0 apps can be a sweet spot for GAE, though there are differences with other traditional web development methods that may help determine if your app fits GAE or not.  I won an online O&amp;#8217;Reilly book on this topic.&lt;/p&gt;

&lt;p&gt;I had seen mention of Cython, but hadn&amp;#8217;t investigated.  Cython is a way to compile your Python code in C code for major speed improvements.  It has some cool profiling features like an interactive web-based code display that uses light-to-dark color-coding to show which Python code lines are the slowest, and allows you to click on the line to see the actual C code that was generated.&lt;/p&gt;

&lt;p&gt;The last presentation was by Sun, who are investing in Python (and other languages in addition to Java) due to their popularity by programmers.  They are also investing in Jython (adding more resources than before) to bring this up to latest versions of Python 2.x, and some work on the JVM to support languages other than Java.&lt;/p&gt;

&lt;h2&gt;Pycon&lt;/h2&gt;

&lt;p&gt;&lt;a href="http://us.pycon.org/2009/about/"&gt;Registration just opened for PyCon 2009&lt;/a&gt; (in March) in Chicago.&lt;/p&gt;

&lt;p&gt;I plan on attending this year, hope to see you there!&lt;/p&gt;

&lt;h2&gt;Thanks!&lt;/h2&gt;

&lt;p&gt;Thank you Seattle Python and the University of Washington for hosting!&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/evolvingbits/~4/D6XxUyiIbMM" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://blog.evolvingbits.com/blog/2009/02/01/packed-house-at-northwest-python-day-2009/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[Finding Energy in the Mix of Art and Physical Computing]]></title>
    <link href="http://feedproxy.google.com/~r/evolvingbits/~3/oOtWbdlewRY/" />
    <updated>2009-01-09T00:04:43-08:00</updated>
    <id>http://blog.evolvingbits.com/blog/2009/01/09/finding-energy-in-the-mix-of-art-and-physical-computing</id>
    <content type="html">&lt;p&gt;Santa brought me an &lt;a href="http://www.arduino.cc/"&gt;Arduino&lt;/a&gt; this year - an open-hardware and open-software platform for connecting computers to the physical world &amp;#8211; used by artists, designers, geeks, entrepreneurs who often find interesting things to create.&lt;/p&gt;

&lt;p&gt;Now I&amp;#8217;m finding renewal in a mix of art, &lt;a href="http://en.wikipedia.org/wiki/Physical_computing"&gt;physical computing&lt;/a&gt;, and the new concepts and ideas that come along with that.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What would you do with a platform where you can buy interesting off-the-shelf components&lt;/strong&gt; (&lt;em&gt;such as GPS, wired/wireless Internet connectivity, mini-cameras, color/light sensors, accelerometers&lt;/em&gt;) &lt;strong&gt;that you could put together then control via a small $35 micro-controller, or easily connect to your computer as input or output?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The possibilities are endless.  Try searching for &amp;#8220;physical computing&amp;#8221; or &amp;#8220;arduino&amp;#8221; on YouTube.com for some ideas, or see &lt;a href="http://www.arduino.cc/playground/Projects/ArduinoUsers"&gt;Arduino Playground&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blog.evolvingbits.com/images/post/2009/01/img_04421.jpg"&gt;&lt;img src="http://blog.evolvingbits.com/images/post/2009/01/img_04421.jpg" alt="Josh Kopel's Presentation at Dorkbot Seattle" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Creating gizmos that interact with the physical world make keyboards and computer screens pretty darn boring.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Personal note: Renewal is always very energizing.  In regard to my software engineering interests, when I discovered Open Source in 2000, I learned everything I could about Linux and Open Source software, gave talks, ran Linux as my main desktop for many years.  When I discovered Zope and Plone and Python in 2002, I helped fuel a local Plone community, and based my whole business on Plone (RagingWeb.com and now at &lt;a href="http://www.webcollective.coop"&gt;WebCollective.coop&lt;/a&gt;) and never looked back.  More recently I continue to find interesting projects in Plone and Django, while playing with Google App Engine, the Apple iPhone and the myriad of social applications that keep popping up.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What&amp;#8217;s happening with Physical Computing in Seattle?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I missed an Arduino class in November, but discovered &lt;a href="http://dorkbot.org/dorkbotsea/"&gt;dorkbot seattle&lt;/a&gt; and attended my first meeting last night at &lt;a href="http://www.911media.org"&gt;911media.org&lt;/a&gt;.  I found a vibrant every-seat-taken mini-auditorium full of people ready to hear the night&amp;#8217;s line-up (see photo above).&lt;/p&gt;

&lt;p&gt;Here was the [paraphrased] lineup:&lt;/p&gt;

&lt;p&gt;First, all three presenters are established artists with interesting projects.  &lt;strong&gt;My brief takeaways don&amp;#8217;t do justice to their work and knowledge. Please check out the links to their blogs for many cool projects and exhibits.&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&amp;#8220;&lt;a href="http://abigmagnet.blogspot.com/"&gt;Josh Kopel&lt;/a&gt;: &amp;#8220;Out of Control&amp;#8221; a quick review of the micro-controller and DIY electronics explosion that was 2008. 2008 might well be called the year of Arduino, as the little micro-controller from Italy invaded the DIY scene and showed up just about everywhere. Beyond just the Arduino, 2008 also saw a vast increase of interest in micro-controllers and unique interfaces for use in the arts.&amp;#8221;&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;Some takeaways: I hadn&amp;#8217;t realized Arduino was open hardware and all the variations that have arisen from that, such as the &lt;a href="http://www.arduino.cc/en/Main/ArduinoBoardLilyPad"&gt;LilyPad Arduino&lt;/a&gt; that is a tiny wearable computer.  Josh was mentioning that the mix of an open, inexpensive, and easy to leverage platforms (Arduino is just one of many platforms out there) plus the fact that you can find and buy components in sizes of 1 (versus years ago when you had to buy large quantities of parts) has brought this technology to the masses.  Try searching for &lt;a href="http://www.google.com/trends?q=arduino"&gt;Arduino in Google Trends&lt;/a&gt;.&lt;strong&gt; One project where the husband hooked up a home-made gizmo to his wife that measured each time his unborn baby kicked with a &amp;#8220;I kicked Mommy at 5:21pm&amp;#8221; Twitter message got a pretty good laugh from the audience.
&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&amp;#8220;&lt;a href="http://a.parsons.edu/~aufierot/blog/"&gt;Tina Aufiero&lt;/a&gt;: Computers, wireless cameras, electronics, and swans. Tina will talk about using computers, a wireless camera, and some electronics to marry the abstract concepts and representational forms in her works, which includes &amp;#8220;project_swancam&amp;#8221;. We know Tina as the Education Director at 911 Media Arts Center.&amp;#8221;&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;Some takeaways: Swans are definitely interesting birds!  Tina demonstrated a mix of her art, growing knowledge and experimentation with technology such as video manipulation and wireless camera, and her love for swans - which she has made into many interesting exhibits, and used to support her activism.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&amp;#8220;&lt;a href="http://hugosolis.net/"&gt;Hugo Solis Garcia&lt;/a&gt;: Juum, a framework for multimedia production and composition. In his talk, Hugo will talk about Juum, a framework for multimedia production and composition that he has been developing during the last year. The tool has evolved because of the artistic requirements and the art pieces have been influenced by the program.&amp;#8221;&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;Some takeaways: Hugo was able to augment his talents as a musician by creating new composition techniques using visual programming tools and home-made hardware.  Too difficult to summarize, but &lt;strong&gt;my favorite piece was &lt;a href="http://hugosolis.net/Tell-Tale_Piano"&gt;Tell-Tale Piano&lt;/a&gt;&lt;/strong&gt;, which was a chair on top of a box that contained a used piano within. People could sit in the chair and experience dramatic music being created below their feet electronically via the piano which followed the theme of Edgar Allen Poe&amp;#8217;s &amp;#8220;Tell Tale Heart&amp;#8221;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What&amp;#8217;s Next?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://abigmagnet.blogspot.com/"&gt;Josh Kopel&lt;/a&gt; will likely be teaching another class in March 2009&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;This year&amp;#8217;s &amp;#8220;People Doing Strange Things With Electricity&amp;#8221; event is in June 2009, and is a showcase of projects by local artists and hobbyists.  See &lt;a href="http://www.dorkbot.org/dorkbotsea/archive.shtml"&gt;dorkbot seattle archive&lt;/a&gt; for previous events and projects.&lt;strong&gt;
&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;I&amp;#8217;ve started my first Arduino project, now with additional inspiration from last night&amp;#8217;s meeting, which I plan to blog about as the pieces come together&amp;#8230;&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/evolvingbits/~4/oOtWbdlewRY" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://blog.evolvingbits.com/blog/2009/01/09/finding-energy-in-the-mix-of-art-and-physical-computing/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[Taming Twitter and RSS in 2009]]></title>
    <link href="http://feedproxy.google.com/~r/evolvingbits/~3/DssMBH6uvYs/" />
    <updated>2009-01-08T21:49:36-08:00</updated>
    <id>http://blog.evolvingbits.com/blog/2009/01/08/taming-twitter-and-rss-in-2009</id>
    <content type="html">&lt;p&gt;As I gleam more information through blogs and microblogs there comes a time when the fun wears off and overload sets in.&lt;/p&gt;

&lt;p&gt;In 2009, I&amp;#8217;ve decided to tame overload and reinstate fun with some simple rules:&lt;/p&gt;

&lt;p&gt;For Twitter (and other microblogging services):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Follow only folks that have a reasonable number of posts per day.&lt;/strong&gt; Chronic Twitters (some individuals, but often sources like large blog sites or newspapers) force me to weed through a lot of cruft to come to the juicy information I can use.  No one has infinitely interesting things happening all day long.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Twitter is not email&lt;/strong&gt; - I find back-and-forth conversation via public twitter replies to be tedious unless one puts a bit of context in their reply.  If the reply is interesting in itself, I&amp;#8217;ll spend the effort to flip to the initial Tweet and try to see what was initially said.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;For chronic Twitters&lt;/strong&gt; that still do have some interesting morsels, I often stop following them on Twitter, but subscribe to their blog RSS and follow lower traffic there &amp;#8211; RSS is much easier to skim through than Twitter.  Garden hose instead of fire hose.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Don&amp;#8217;t blindly follow! (good advice in many situations).&lt;/strong&gt; When someone follows me, I check out their profile, recent Tweets, and number of Tweets per day before jumping in.  If a reasonable number of posts are interesting, and they&amp;#8217;re not Tweeting every moment of their lives, I will follow them too.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Keep it interesting!&lt;/strong&gt; Sure, not every tweet someone makes is interesting, but many should be. Try out folks, but don&amp;#8217;t be afraid to jump off without guilt.  I&amp;#8217;m personally &lt;strong&gt;attracted to Tweets&lt;/strong&gt; pointing me to resources, interesting sites, or interesting happenings &amp;#8211; in other words, I rely on my social graph to provide interesting content, not noise.  I keep this in mind when posting Tweets for others.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;For RSS&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cut out large noisy RSS feeds&lt;/strong&gt; even if occasionally interesting.  Feeds that produce too much traffic (albeit this traffic can safely be higher than microblogging since it&amp;#8217;s easier to skim) even if a few morsels are interesting should be tossed because they prevent you from reading the really interesting ones.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;We each have a limited amount of attention we can give - these simple rules will keep these services interesting and useful.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What other techniques do people use&lt;/strong&gt; to handle the growing amount of information coming at them through microblogging (e.g. Twitter, Facebook), location-aware microblogging (e.g. BrightKite) and good old fashion blogging (via RSS)?&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/evolvingbits/~4/DssMBH6uvYs" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://blog.evolvingbits.com/blog/2009/01/08/taming-twitter-and-rss-in-2009/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[Effortless Email Management with GTD and Remember the Milk]]></title>
    <link href="http://feedproxy.google.com/~r/evolvingbits/~3/52hxc7nnkB4/" />
    <updated>2008-10-25T08:46:43-07:00</updated>
    <id>http://blog.evolvingbits.com/blog/2008/10/25/effortless-email-management-with-gtd-and-remember-the-milk</id>
    <content type="html">&lt;p&gt;If you&amp;#8217;re using Gmail, and want to manage it using GTD, I found a great solution.&lt;/p&gt;

&lt;p&gt;I&amp;#8217;m now using &lt;a href="http://www.rememberthemilk.com"&gt;Remember the Milk&lt;/a&gt; as my primary GTD tool with the &lt;a href="http://www.rememberthemilk.com/services/gmail/"&gt;Firefox extension for Gmail&lt;/a&gt;. The extension lets you see all your action items on the right side of the Gmail page (grouped by day) and lets you add new ones and roll-over existing ones and make quick changes and reschedules.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Its most useful feature is that you can add action items automatically when you &amp;#8220;star&amp;#8221; (or tag) a Gmail message.  With many of my actionable items and reminders coming in through email, this is a killer feature for me.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For example&amp;#8230;&lt;/p&gt;

&lt;p&gt;&amp;#8230;if a client sends me an email that I need to respond to later in the day, I just star it and it registers as an action item for today.  If I decide I really could answer it tomorrow, I can roll over the new action item, and click the &amp;#8220;postpone&amp;#8221; button or type in a due date of &amp;#8220;tomorrow&amp;#8221;.&lt;/p&gt;

&lt;p&gt;Then, when tomorrow comes and it&amp;#8217;s time to act on this, I roll over the action item and now see a little &amp;#8220;envelope&amp;#8221; icon which allows me to jump to the email, reply to it, unstar it, and the task disappears because it&amp;#8217;s done.&lt;/p&gt;

&lt;p&gt;There are some very nice OSX GTD apps (like OmniFocus, and Things) but after personally jumping from client to client, I decided I wanted to go with a web-based service that had an API in case I wanted to extend it with a new UI, or maybe integrate it with another web service.&lt;/p&gt;

&lt;p&gt;I looked at many web-based tools, but liked Remember the Milk for its API, its web-based interface (not flashy, but useful), no syncing worries, the Gmail Firefox extension (my main interface for using it), and it even has a &lt;strong&gt;nice iPhone web interface&lt;/strong&gt; (with a native iPhone app rumored).  &lt;em&gt;For the iPhone interface, they ask you to join their Pro membership, but $25 for a year is well worth supporting this great service.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I also built &lt;a href="http://plone.org/products/collectivegtd-thoughts"&gt;CollectiveGTD for Plone&lt;/a&gt;, but have decided to take a different direction with this product.  Instead of it being a tool to manage all my general GTD needs, it will evolve into a set of tools for managing Plone content within a site.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/evolvingbits/~4/52hxc7nnkB4" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://blog.evolvingbits.com/blog/2008/10/25/effortless-email-management-with-gtd-and-remember-the-milk/</feedburner:origLink></entry>
  
</feed>

