Evolving Bits

JavaScript. iOS.

Sharpening the Mobile and JavaScript Swords

In the last couple of  years, JavaScript has really become hot for the next breed of web and mobile applications.

  • JavaScript runs on a majority of mobile and desktop browsers.

  • … it runs on the server.

  • … it is used for developing desktop widgets and browser extensions.

  • … it is being used inside desktop applications. eg scripting for Kod editor

  • … it naturally works well with the web – easily handling JSON, HTTP and REST.

  • … works well for new real-time communication techniques (eg websockets).

  • … as a language it works well for asynchronous-style services.

  • There’s also a lot of innovation happening in the JavaScript space because it attracts both front-end and back-end developers.

Over the past year I’ve been working in the mobile application space primarily with native iOS and mobile-optimized websites.

This year I plan to expand my mobile and JavaScript skills in the following areas:

  • Create applications (and web services) using server-side JavaScript with node.js and learn the ecosystem that has grown up around it.

  • Practice new ”mobile first” and ”responsive web design” 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.

  • Attend JSConf 2011 and NodeConf 2011 which are both in early May in Portland, OR.

  • 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 node.js + CouchDB

  • 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.

  • Continue to practice test-driven development in JavaScript.

Highlights From DjangoCon 2010 (and Videos to Watch)

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

“Creating better apps”

Both Eric Florenzano (“Why Django Sucks, and How We Can Fix It”) and Alex Gaynor (“Rethinking the Reusable Application Paradigm”) had many useful things to say about creating better and more reusable apps.  The videos are worth watching, here are some highlights:

  • Narrower abstractions would make apps suck less – 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’s talk.

  • 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’t an official blessed way, but class-based views would be an improvement (and offer more flexibility) than current function-based views in Django.

“Databases other than SQL”

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 “NoSQL and Django Panel” it’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.

Andrew Godwin (“Step Away From That Database”) also presented a nice range of databases – Document databases (MongoDB, CouchDB), Key-value stores (Cassandra, Redis), Message Queues (AMQP, Celery), Graph databases – and reminds us that filesystems are also key-value stores, and that version-control systems can provide a versioned storage.

“Data Migration”

Brian Luft’s talk (“Data Herding: How to Shepherd Your Flock Through Valleys of Darkness”) 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.

“Website Security”

Adam Baldwin (“Pony Pwning”) gave a great talk on website security and things to be thinking about while building Django sites.

Cross-Site Scripting (“xss”) vulnerability are alive and well. Though Django offers protections, these can be turned off or it’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

Adam suggests considering OWASP ESAPI, auditing templates, auditing reusable snippets, and educating designers.

For REST services, good to consider django-piston rather than writing your own.

Other things include checking upload extensions to avoid running arbitrary code, e.g. Django ImageField doesn’t check extensions and could possibly run embedded code.  Apache “mod_security” as a nice monitoring tool that can let you know what’s happening, as well as prevent some issues.

“Exclusionary Establishment”

Eric Florenzano hit on some issues on the social engineering side of Django.  Examples were presented that send messages of “your contributions aren’t important” out to the larger Django community – enhancements that went through all the steps but didn’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.

James Bennett’s (“Topics of Interest”) 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’re having a hard time growing core-committers.  Eric’s mention of Guido van Rossum’s quote (creator of Python) “give out more commit privileges sooner”.

Participation could be easier and more inviting if more core devs are added and there is also less concern about breaking trunk.

Something I’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’t accepted)

“Become a Django Core Developer”

Given the concern about lack of core committers, Russell Keith-Magee (“So you want to be a core developer?”) 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.

“Interesting Apps and Projects”

The lightning talks and Eric Holscher’s talk (“Large Problems in Django, Mostly Solved”) were a good source of Django apps to try if you’re not already using them.

Eric also shares his measure of what makes a solid reusable app – needs to have an easy setup, a good upgrade path, good documentation and well-tested.

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).

Some interesting things from the lightning talks:

  • http://djangopackages.com (a Django Dash project)

  • http://readthedocs.org  (a Django Dash project)

  • logbook - http://github.com/mitsuhiko/logbook

“Performance”

Frank Wiles’ talk (“Alice in Performanceland – Down the Rabbit Hole”) was full of a lot of tasty morsels to help you “do less” and “remove pressure on your server” that ultimately increases the performance and responsiveness of your site.

“Code Quality”

Human code review is best says Peter Baumgartner in his talk (“Monitoring Code Quality in Your Django Project”). 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 – 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.

“Managed Django Hosting”

I missed Nate Aune’s lightning talk on his DjangoZoom.com cloud deployment solution, but looks interesting. http://djangozoom.com/ponyexpress/

One of the lightning talks discussed the django-servee project: http://www.servee.com/features/ http://github.com/servee/servee

“Seeing some New Faces”

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.

Here were some DjangoCon 2010 highlights for me, along with talk titles so you can find the full presentation videos online.

Creating better apps

Both Eric Florenzano (“Why Django Sucks, and How We Can Fix It”) and Alex Gaynor (“Rethinking the Reusable Application Paradigm”) had many useful things to say about creating better and more reusable apps.  The videos are worth watching, here are some highlights:

  • Narrower abstractions would make apps suck less – 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’s talk.

  • 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’t an official blessed way, but class-based views would be an improvement (and offer more flexibility) than current function-based views in Django.

Databases other than SQL

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.

After hearing experiences from the “NoSQL and Django Panel” it’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.

Andrew Godwin (“Step Away From That Database”) also presented a nice range of databases – Document databases (MongoDB, CouchDB), Key-value stores (Cassandra, Redis), Message Queues (AMQP, Celery), Graph databases – and reminds us that filesystems are also key-value stores, and that version-control systems can provide a versioned storage.

Data Migration to Django

Brian Luft’s talk (“Data Herding: How to Shepherd Your Flock Through Valleys of Darkness”) 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.

Website Security

Adam Baldwin (“Pony Pwning”) gave a great talk on website security and things to be thinking about while building Django sites.

Cross-Site Scripting (“xss”) vulnerability are alive and well. Though Django offers protections, these can be turned off or it’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

Adam suggests considering OWASP ESAPI, auditing templates, auditing reusable snippets, and educating designers.

For REST services, good to consider django-piston rather than writing your own.

Other things include checking upload extensions to avoid running arbitrary code, e.g. Django ImageField doesn’t check extensions and could possibly run embedded code.  Apache “mod_security” as a nice monitoring tool that can let you know what’s happening, as well as prevent some issues.

An Exclusionary Establishment?

Eric Florenzano hit on some issues on the social engineering side of Django.  He provided examples of situations that can send the messages of “your contributions aren’t important” out to the larger Django community – enhancements that went through all the steps but didn’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.

James Bennett’s (“Topics of Interest”) 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’re having a hard time growing core-committers.  Eric’s mention of Guido van Rossum’s quote (creator of Python) “give out more commit privileges sooner”.

Participation could be easier and more inviting if more core devs are added and there is also less concern about breaking trunk.

Something I’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.

Improving Django and Becoming Core Developer

Given the concern about lack of core committers, Russell Keith-Magee (“So you want to be a core developer?”) 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.

Interesting Apps and Projects

The lightning talks and Eric Holscher’s talk (“Large Problems in Django, Mostly Solved”) were a good source of Django apps to try if you’re not already using them.

Eric also shares his measure of what makes a solid reusable app – needs to have an easy setup, a good upgrade path, good documentation and well-tested.

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).

Some interesting things from the lightning talks:

Performance

Frank Wiles’ talk (“Alice in Performanceland – Down the Rabbit Hole”) was full of a lot of tasty morsels to help you “do less” and “remove pressure on your server” that ultimately increases the performance and responsiveness of your site.

Improving your Code Quality

Human code review is best says Peter Baumgartner in his talk (“Monitoring Code Quality in Your Django Project”). 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 – 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.

Managed Django Hosting

I missed Nate Aune’s lightning talk on his DjangoZoom.com cloud deployment solution, but looks interesting. http://djangozoom.com/ponyexpress/

One of the lightning talks discussed the django-servee project: http://www.servee.com/

Thanks DjangoCon!

It was nice meeting new people using Django in Seattle and in other areas of Washington State, such as in Richland, Wenatchee and Spokane – and reconnecting with friends from the Plone and greater Python communities.

Thank you to the organizers, presenters and supporters for another great DjangoCon!

TAF’s TechStart Expo 2010

Brian Gershon headed down to White Center to see the final event of the season for TAF’s TechStart program.

“TechStart is TAF’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.”

There were three event themes in Robotics (using Lego Mindstorms), including:

  • The Hand Crank Race where students had to build a robot, and power it by crank, and get to the finish line.

  • 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.

  • 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.

Here are photos from the event.

Also, here is some video from the Archery Event:

TAF Academy’s Final Projects in JavaScript

Alex Tokar, Yonas Seifu and Brian Gershon went down to check out the final projects at Technology Access Foundation’s Academy class in Federal Way.

This was the first class there to teach JavaScript, taught by Seth Nelson and Susan Evans.

We saw Tic-Tac-Toe, a yo-yo animation, a Magic Eight Ball game, “guess that image”, and even a slot machine.

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.

Tic Tac Toe in JavaScript

SURF iPhone and Android Incubator: Upcoming Events and a Strong Initial Meetup

There was a nice turnout of around 40 people at the SURF Incubator on Wednesday Jan 13th.

There were really three events being held at the same time:

  • SURF Open House

  • SURF iPhone Coding Night Meetup

  • and a last minute merge of the “iPhone App Developers” Meetup

The merging of events ultimately created a room full of interesting and engaged people who were networking and discussing mobile app development.

I would say that most were there to network, and some were there to play with code.

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.

The Open House event was an active Q&A session for those interested in the incubator, upcoming plans, and how to get involved.

Jeff Yochim, Brian Gershon, Dan Dosen. Photo by Seaton Gras.

I personally made some new connections, reconnected with other iPhone developers and designers, and met people who I hadn’t run across yet at other iPhone events.  The feeling was that there was pent up demand for iPhone networking and coding.

More about SURF Incubator

The SURF space is available as a location for people to collaborate and work on code together – 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.  http://surfincubator.com

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.

Have feedback?

There is also a new IdeaScale portal for people to post feedback to at http://surfincubator.ideascale.com

Upcoming Meetup Events at SURF

  • The “Seattle iPhone & Android Incubator” Meetup is an umbrella for upcoming workshops and coding sessions at SURF.

    • The plan it to have host regular coding sessions/workshops around specific themes and experience levels.

    • Please join this Meetup for a calendar of upcoming events.

    • On Monday, there will be a Beginner iPhone SDK Xcode - Q & A Discussion Meetup.

    • These events would also complement the existing NSCoder group by adding an additional location for those that can’t make it to the University Village Zoka event.

  • The “iPhone App Developers” Meetup hosted by Andrew will be located at SURF Incubator. I haven’t attended this Meetup, but it looks to be a nice opportunity for networking.

More iPhone-related events

We’re fortunate to have many opportunities to meet and code in Seattle.

  • XCoders – 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. http://www.seattlexcoders.org/

  • NSCoder Night – meets each Tuesdays at University Village Zoka in Seattle. http://nscodernight.com/?cat=28

Open Tagging on OSX: A Powerful Way to Organize

For each project I work on, I have a multitude of files, folders, applications, and web pages.

My goal is to have shortcuts in one place, organized by project, as the ultimate launcher.

Here were some good initial attempts:

  • Firefox bookmarks might be a nice way to go, but doesn’t make it easy to link to local files, so that solution was quickly dismissed.

  • Butler did this well – 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.

  • Recently I noticed that Snow Leopard’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 “way down there” (irregardless of where you put the dock) and takes time to mouse around.

Each tool took their own approach, and I had to pick one since I couldn’t easily use multiple ones. Also, graphical solutions still take precious time to drag your mouse and navigate through the hierarchy.

Then a better idea.

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’t want.

So how do I universally “tag” resources and bring them up quickly?

First, the cool 2006 (and still usable) metadata solution mentioned on LifeHacker: Apple-I on files you want to tag, then add a custom tag into the comment box. Prefix with & so it’s quick to find without bringing up a lot of other crap.  For my common Web Collective company shortcuts, I used &wc.  Now, when I jump to Spotlight and type &wc, I instantly see all my shortcuts.

This was great, but then I found tagging nirvana on OSX.

An ecosystem of tagging tools has popped up around a free and open source OpenMeta Tag standard.

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. No need for custom tagging in the file “comment” 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)

The simplest workflow consists of tagging files by dragging/dropping them onto Tagger, then pulling them up quickly in Spotlight.  To pull up all my shortcuts tagged with “wc” you just type “tag:wc”.  This is a free solution and works well.

Tagger window

Spotlight Search using tags

Next in the evolution are tools such as Tags or Punakea or Leap – which make it easy to tag, while also having nice integrated search features. 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 – well worth it if they help you to better organize.

I’m still playing around to find the right combination of tools for my own workflow.  See http://code.google.com/p/openmeta/wiki/OpenMetaApplications for a nice list.

Tagger and Spotlight are working well for quick shortcuts – Tags, Punakea and Leap start to show what a world would be like when relying less on hierarchy and more on tags.

Hmmm, TagFolders looks pretty interesting too…

DjangoCon 2009 Recap

After catching the great videos from last year’s first DjangoCon I looked forward to attending this year.  I’m glad I went.

We’ll be discussing “What did we learn at DjangoCon?” at this Thursday’s Django Seattle. See http://www.djangoseattle.org for more details.

In the meantime, here are some high-level take-aways:

  • 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 “science experiments” and posed many ideas on what we may want to experiment with to get right before approaching Django core.

  • Git - Though this doesn’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 “pet” DVCS to use as my default too.  I’ve chosen Git (mainly because of git-svn and GitHub), but will be using Mercurial as well.

  • 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 “signals” 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.

  • Django jobs are growing, and Django also a popular platform for Start-ups.

  • Check out the DjangoCon2009 Wiki for slides and presentations.

Snow Leopard Smooth Except Python 32/64 Cocktail

UPDATE: Thanks to the helpful commenters, I found success getting an older Zope instance running on Python 2.4 on Snow Leopard using buildout.

NOTE: This post is for installing Python 2.4 on a brand new Snow Leopard Instance. If upgrading on top of Leopard, you may have to update easy_install, macports, etc.  More Googling around may be required.

Though I had to create two buildouts to get this to work – is there a way to get this into one buildout?

I first tried to create one buildout by combining  Florian Schulze’s buildout recipe with a standard Zope recipe – but since initial bootstrap was run by Python 2.5, I couldn’t get the Zope instance to use the new Python 2.4. 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.

Here’s the recipe I used to just build Python 2.4 (requires Florian’s buildout, see Alexander Limi’s comment below for where to find this):

[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

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!

[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

Here is my initial post:

I have to say – most everything I’ve installed on a fresh Snow Leopard install has worked flawlessly and swiftly – except for (the minor inconvenience of) iStat not working.  UPDATE: iStat 2.0 is available for Snow Leopard now. There’s a new beta of MenuMeters too for Snow Leopard.

There are also nice subtle improvements, see Mac Life’s 100 Top Snow Leopard Tips, Trick and Features for improvements to Preview, Expose, Stacks, etc.  I’ve very happy with the upgrade.

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.  I also use Python for Django, though that should run fine on Python that shipped with Snow Leopard.

You can read many of the initial details around the web, but here’s what I’ve experienced and have been able to put together:

  • Note that these details are for a fresh Snow Leopard install - there are a different set of issues if you’re upgrading over your existing Leopard.  NEW: “Clark’s Tech Blog” has a nice write-up about upgrading Python after upgrading Leopard to Snow Leopard.

  • Snow Leopard ships with Python 2.5.4, and this runs as a 32-bit application.

  • I also need 2.4 branches of Python too, so I tried rolling my own (as usual) and it didn’t compile.  I then followed that thread for awhile.

  • I then thought I pulled a fast one when I compiled from MacPorts and everything ran great!

  • … but then I compiled Zope, and attempted to run an instance.  I saw a mysterious “No such file or directory” error.  Hmmm, I can navigate to that file, but running the script with my new Python interpretor was causing this error.

  • After digging around with Activity Monitor, I discovered that the Python I built from scratch was running as a 64-bit app – while the Python that comes with Snow Leopard was only running 32-bit – which is telling, since most everything else on Snow Leopard is running 64-bit.

  • Guessing that the the mysterious “No such file or directory” (when the file and directory did indeed exist) was due to a weird cocktail of 32-bit pieces living with 64-bit pieces.

  • 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 – the architecture override isn’t used everywhere – so parts still compile natively as 64-bit on Snow Leopard.

  • The best thread on the topic (that’s steadily growing) is here: http://bugs.python.org/issue6802 with msg92153 left today, 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.

  • My hope is that once “32-bit” Python 2.4 happens, the rest of the Zope install, etc, will be back to the good ol’ days in Leopard.

Plan B’s:

Otherwise, to save some headache, I’m wondering about installing a small Linux distro on VMWare as a local mini web-server where I can easily install Python and Zope – though that’s a bit of a pain too.

Luckily I also have my old Leopard in a separate partition (see my Extra life for my MacBook Pro with Snow Leopard and inexpensive hardware 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.

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…

Extra Life for My MacBook Pro With Snow Leopard and Inexpensive Hardware

I’m using the Snow Leopard upgrade as a chance to add some extra life to my (older) MacBook Pro (2,2).

My goals:

  • Max out memory to 3GB (up from 2 GB) – $29

  • Upgrade hard-drive to 500GB (up from 120GB) - $129 for a 2.5” Seagate Momentus SATA 7200 RPM.  My current drive is 5400 RPM, so this will be a speed improvement too.

  • I also want to install the OS from scratch as a chance to clean things out.

  • Hey, I can then even upgrade my wife’s laptop with my 120GB drive!

The steps have been pretty easy:

  • Backup whole drive using SuperDuper! to a bootable external drive.  If I didn’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.

  • Upgrade memory, piece of cake

  • 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 http://www.ifixit.com

  • Start Installing Leopard.  Note that you do not need to install Leopard first for a brand new install.  I just put in Snow Leopard, and booted holding down “C” and the installer popped up.

  • 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 – just in case I forgot something – and I can easily pull files over while doing the big reinstall-everything-from-scratch step.  SuperDuper! makes this easy – both to backup your drive, and restore it on a new partition.

  • Frolic in all my new hard-drive space and anticipated speed improvements – more memory, faster hard-drive and faster OS.

Django Seattle’s Website Barn Raising Sprint: A Recap

New Django Seattle Website

Thanks to 14 Sprinters who came together on July 25, we now have a Django Seattle Website at http://www.djangoseattle.org

Some of our Django Seattle Sprinters

There was a lot of infrastructure work done at the sprint which is still in development and didn’t make it to the live site yet – but the experience of getting to know each other, and learning/sharing Django knowledge was another fine Sprint accomplishment.

Here’s a brief summary of what people worked on:

  • Integrated in Blogging, Profile and Calendar functionality from django-basic-apps. 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.

  • Created a Twitter portlet that shows live #djangoseattle Tweets.

  • Setup Flatpages for core content, and creating a database-driven menu

  • Created a logo and initial site design and templates

  • Setup Django on live server

  • Used the Django Debug Toolbar while developing the site

  • Some were playing with Django for the first time

  • Some floated around to help diagnose problems and help those new to Django

Functionality brainstorm

Thank you Sprinters

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

Thank you Sponsors

Also a Big Thank You to our sponsors, hosts and organizers.

We look forward to our next sprint!