<?xml version="1.0" encoding="UTF-8"?>
<!--Generated by Squarespace Site Server v5.9.2 (http://www.squarespace.com/) on Fri, 12 Mar 2010 03:18:01 GMT--><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><title>blog</title><link>http://m.odul.us/blog/</link><description></description><lastBuildDate>Sun, 15 Nov 2009 23:28:37 +0000</lastBuildDate><copyright></copyright><language>en-US</language><generator>Squarespace Site Server v5.9.2 (http://www.squarespace.com/)</generator><item><title>My Verizon Droid</title><category>AT&amp;T</category><category>Android</category><category>Blackberry</category><category>Droid</category><category>Verizon</category><category>general technology</category><category>iPhone</category><dc:creator>Matt Bowen</dc:creator><pubDate>Sun, 15 Nov 2009 17:40:04 +0000</pubDate><link>http://m.odul.us/blog/2009/11/15/my-verizon-droid.html</link><guid isPermaLink="false">311404:3238491:5809494</guid><description><![CDATA[<p><strong>I got a Motorola Droid on Tuesday, and so far I'm very happy with it. I picked it primarily to stay on Verizon, but I've found several serendipitous features, mostly related to the user interface. While not perfect, I expect it will be an excellent smart phone, maybe even better than an iPhone.</strong></p>
<p><iframe width="600" height="400" frameborder="0" src="http://www.mindmeister.com/maps/public_map_shell/35006079?width=600&height=400&zoom=1" scrolling="no" style="overflow:hidden"></iframe></p>
<p>While there are lots of really thorough Droid evaluations out there (I really <a href="http://gizmodo.com/5396168/motorola-droid-review">liked the Gizmodo review</a>), what I'm hoping to offer here is an "I'm a regular technical person who has lived with this phone exclusively" look at the droid. I'll go over</p>
<ul>
<li>why I got a droid now (basically background), </li>
<li>what I wanted, </li>
<li>what has been awesome, </li>
<li>what has been just fine, </li>
<li>what has sucked, </li>
<li>and finally some overall impressions. </li>
</ul>
<p>Although I have read and largely agree with <a href="http://www.techcrunch.com/2009/10/26/the-problem-with-iphone-killers/">the sentiment that the Droid is not aiming to be an iPhone killer</a>,<strong> for me the decision really was iPhone or Droid</strong>, and so that's my vantage point. I was previously using a Blackberry Curve.</p>
<h2>Background</h2>
<p><span class="full-image-float-right ssNonEditable"><span><a title="Cell Phones (1 of 2) by MattBowen, on Flickr" href="http://www.flickr.com/photos/mattbowen/4106494966/"><img src="http://farm3.static.flickr.com/2707/4106494966_7697ccd01b_m.jpg" alt="Cell Phones (1 of 2)" width="149" height="240" /></a></span></span></p>
<p>Last Tuesday, my trusty Blackberry Curve finally gave up the ghost &mdash; the trackball fell out of the phone and I have no idea where it went, ending an otherwise lovely relationship. I had been considering a new phone for a while, and until hearing about the Droid, I was dead-set on switching to AT&amp;T to get an iPhone. I've had an iPod Touch for a few years, and <a href="http://m.odul.us/blog/2007/9/26/ipod-touch-buggy-fun.html">I've been mostly happy with it</a>, so I felt like I knew what I was getting with an iPhone: a nicely designed device with lots of awesome applications and with a virtual keyboard that I find deeply frustrating.</p>
<p>The big unknown with an iPhone was the network; I see tweets and hear complaints about the lack of actual 3G coverage (and any phone coverage at all in parts of NYC and San Fran); I remember AT&amp;T's network collapse during the inauguration (I only saw tweets from friends on other networks for most of that day); <a href="http://www.techcrunch.com/2009/07/18/att-is-a-big-steaming-heap-of-failure/">I read about AT&amp;T's voicemail problems</a>; and I get good value from Verizon's "in" program, since my family and many of my far-away friends (i.e., the ones I talk to on the phone) are on Verizon.</p>
<p><strong>Had there been an iPhone on Verizon, I'd have almost definitely gone with it. But, after a week with my droid, I'm not sure that would have been the right decision.</strong> The iPhone is an incredible piece of hardware with a really slick OS on top, but so is the Droid. And, there are already things I really love about the droid that don't exist on iPhone.</p>
<h2>What I was looking for</h2>
<p>I'm not going to give numbered scores or anything, but I did try to come up with the things I was looking for in a new phone:</p>
<ul>
<li>One device for media and communications, because I have only one pocket without keys in it</li>
<li>Good phone (as in talking on it) support</li>
<li>Better twitter and gmail clients than on my Curve</li>
<li>Better maps than my Curve with an un-crippled GPS</li>
<li>A reasonably good MP3 player that can sort through 10s of GBs of MP3s</li>
<li>At least 16GB for music, 32 GB would be better</li>
<li>Something like InstaPaper for reading web articles offline (on metro, specifically)</li>
<li>A platform that actually has apps</li>
<li>Fast internet and a reasonably good web browser</li>
<li>An app for reading books</li>
<li>A device that feels and looks good </li>
<li>A monthly bill that wasn't horribly higher than what I have now</li>
</ul>
<p>I basically wanted my Blackberry to hook up with my iPod Touch and make me a new phone. The droid and the iPhone both fit that description, and in the end it was the "Fast internet" and "Good phone support" that tipped things for me.</p>
<h2>What has been awesome</h2>
<p><span class="full-image-float-left ssNonEditable"><span><a title="Cell Phones (2 of 2) by MattBowen, on Flickr" href="http://www.flickr.com/photos/mattbowen/4105727449/"><img src="http://farm3.static.flickr.com/2795/4105727449_ec46005660_m.jpg" alt="Cell Phones (2 of 2)" width="240" height="173" /></a></span></span></p>
<p>A lot, honestly. As soon as I got it, it had my gmail, had synced all my contacts to my google contacts, had my calendar, and within a few minutes was grabbing people's pictures and facebook statuses into my contact list. The phone part works really well, and as I'm used to, I have service pretty much everywhere I go that isn't a basement. Even better, I have 3G almost everywhere I've gone so far, so my phone's Internet connection is actually pretty zippy. The phone itself is really fast, too; apps launch pretty much instantly.</p>
<p>The operating system user interface is usable and powerful at the same time. I expected basic tasks (like finding the right app to launch) to be difficult, but instead I feel like in a lot of ways, this phone is easier to use than an iPhone. There's this "shade" status bar at the top of the phone that gives me notifications, such as new emails, voicemails, to-do tasks, and tweets. If I touch and hold it, I can drag it down for more information and touch on the notification to launch the appropriate app. This comes in handy particularly since there's multitasking -- I have apps running in the background and checking twitter, the weather, and even my location-specific to-do items (in Remember the Milk), so it's nice to have a heads-up display of notifications. Plus, for things that might have more interesting information that I don't want constant notices of (longer-term Todo items, the weather forecast, my current song I'm listening to), there's widgets that I can drop on my home screen. Finally, there's a back button on the phone and a cross-app history manager built in to the OS, so if I see a notice and go look at it, and then I want to get back to what I was doing, I just hit back and I'm back in the app I left to take care of the notification.</p>
<p>There's also a button on the screen and a widget on the home screen for search, which I find myself using often; if I can remember the name of what I want (be it person or application), I can just search and then take the appropriate action. There's also a pretty neat voice search built in, meaning often I don't even have to type &mdash; I just say what I want and it searches. If what I want isn't a contact or app, I get a web browser.</p>
<p>The combination of the speed of the phone and the internet, the notification system (with multitasking), and the excellent built-in search gives the phone a really powerfully usable feeling; it makes things feel instant. For a small, limited device, this is huge; when there's something I'd be interested in, it's in my notifications. Otherwise, I search for it. If I can't remember the name of the app, I can bring up all my apps and browse them alphabetically. If the app is something I use a lot (like my email), I can drop it on a home screen for quick access.</p>
<p>The operating system extends this "instant" feeling further by allowing apps to be designed for easy mashing-up; when I installed evernote, it became possible to send web pages and photographs to it from the native web browser and camera app. This is because the OS allows application developers to advertise "intents" that their applications support (such as sharing content or address-book functionality), and then to make reusable "activities" that can receive data from other applications. This makes it so applications reinforce one another, and makes the phone feel more powerful; it makes sense that I can share web pages through Evernote, Facebook, Gmail, Paperdroid, Google Reader, and Twidroid. What's nice is none of those developers had to collaborate to make it happen.</p>
<p>Additionally (and complementary), I've been very happy with both the physical and software keyboards. Android's text predictions are excellent and make typing on the screen pretty painless, and the physical keyboard is perfectly usable for me. A decent keyboard is a big win on a small device.</p>
<h2>What has been just fine</h2>
<p>There have been plenty of satisfactory-but-not-amazing experiences. I don't particularly love the look of the phone itself; it's not clunky or anything, but it does feel big and a little awkward because of the slide-out keyboard. It's definitely not sleek like an iPhone.</p>
<p>As for apps that I actually have cared about, I was able to find a twitter app (<a href="http://twidroid.com/">Twidroid</a>, which is OK but definitely doesn't have my heart), something to get me metro times (DC Metro Train Info), and a good Amazon app. To replace InstaPaper, I found <a href="http://readitlaterlist.com/">Read It Later</a> and <a href="http://www.latedroid.com/">PaperDroid</a>. I really hope PaperDroid adds tilt-scrolling; if it does, that'll pretty much entirely replace InstaPaper for me.</p>
<p>The media player on Android has been fine so far &mdash; it sorts my albums well enough that I can find what I'm looking to listen to. I'm not a particularly demanding music user though &mdash; I usually listen on random for a while until I hear a song on an album that catches my interest, then I listen to that album, then go back to random and repeat the process. I care more that I can hold lots of music on the thing, and I expect someone will release a really slick media player eventually.</p>
<p>The browser is as others have said: it renders pages well and the double-tap zoom is good, but the lack on pinch-zoom is lacking. It's a huge step up from my Curve's browser though, and doesn't seem to cause the Droid to crash the way Safari on my iPod Touch liked to, so I'll take it.</p>
<p>The battery life is neither great nor terrible. If I don't use the screen much, the battery holds out. If I do, I burn through it. That makes sense. If Motorola were to make a bigger battery that added a little more heft to the phone, I'd take it, as long as the phone still fit comfortably in a pocket. On the up side, the Droid charges over microusb, so I was able to get a bunch of cables for $3 a piece, and thus I'll have multiple chargers at home, one at work, and one in my messenger bag (you know, just in case).</p>
<p>I've barely touched the maps application, but it definitely uses GPS and knows where I am, and I hear the turn-by-turn directions are awesome, so I look forward to really putting it through its paces when I head out for thanksgiving.</p>
<h2>What sucks</h2>
<p>There's no doubt about the number or quality of apps compared to the iPhone: they're just not on droid. Many apps for droid from major companies are brand new, and lack the polish of their iPhone counterparts. The games in particular seem pretty pathetic. On the one hand, except for an iTunes remote that works, I've found apps for pretty much everything I want; on the other, it's hard not to notice the relative dearth of innovative apps. The lack of apps has meant no Kindle or Barnes and Noble apps, which means insufficient books for my taste; there just aren't that many ePub books that I want to read yet.</p>
<p>Worse than the lack of apps is a lack of momentum. I don't hear developers talking excitedly about developing android apps. I don't see lots of books coming out for android. I don't feel like there's a big market for the android apps people do develop. I don't think this is a permanent state; I think the lack of having Android phones on either AT&amp;T or Verizon made the market too small. But, it's still worrying; someone's going to have to invest in even better developer tools and get people really excited. I have a number of additional thoughts on this topic that I'll hold for a separate post though; I'll update a link here once it's written.</p>
<p>Less bothersome but still annoying is the camera and the lack of a good music application. The camera seems to hate to focus. It tries, it gets in focus, then it takes the picture soft. I hear this is a software issue, but it's an annoying one. Getting music on the phone isn't a joy, either. On the one hand, you can just drag a bunch of folders on to the SD card and call it a day, which is pretty rad. But, that's not how I want to manage my music; I want to drag albums on and have them organized for me. That's not sync, but it's not the file system either. There's <a href="http://www.doubletwist.com/dt/Home/Index.dt">DoubleTwist</a>, but it doesn't recognize the Droid as a media device and generally feels horribly buggy; it locks and crashes as often as it works. I've gotten music on the Droid and it hasn't been a dealbreaker, but it's still sucked. I have some hopes either someone like <a href="http://www.lala.com">Lala</a> will create a wireless sync, or maybe <a href="http://www.getsongbird.com/">Songbird</a> will step up and we'll see an Android plug-in there, which would be fine to me; I don't love iTunes.</p>
<h2>Conclusion</h2>
<p>One week in, I'm really happy with and excited about my phone. My girlfriend keeps grinning because I keep taking it out to play with it whenever there's downtime. The phone's UI and features give it an "instant" feeling that I've not had in many other computer devices. I've been able to find apps that do most of what I want; however, the app market in general is worrying because of a lack of momentum. The phone isn't perfect, as evidenced by the media player and buggy camera, but overall, I'm very happy with it and would certainly recommend it to other demanding technical folks.</p>]]></description><wfw:commentRss>http://m.odul.us/blog/rss-comments-entry-5809494.xml</wfw:commentRss></item><item><title>Plone and its peers</title><category>content management</category><category>plone</category><category>web</category><dc:creator>Matt Bowen</dc:creator><pubDate>Sat, 18 Apr 2009 20:28:58 +0000</pubDate><link>http://m.odul.us/blog/2009/4/18/plone-and-its-peers.html</link><guid isPermaLink="false">311404:3238491:3696792</guid><description><![CDATA[<p><strong style="font-size: 110%;">Plone is doing pretty well against the rest of the field of content management systems in several key areas, which I learned in a presentation by CMS Watch's Tony Byrne.</strong></p>
<p><iframe width="600" height="400" frameborder="0" src="http://www.mindmeister.com/maps/public_map_shell/18460825?width=600&height=400&zoom=1" scrolling="no" style="overflow:hidden"></iframe></p>
<p>Several months ago, I got to see a presentation by <a href="http://www.cmswatch.com">CMS Watch</a>'s Tony Byrne about the state of Web Content Management in 2009, hosted by DC's <a href="http://webcontentmavens.com/">Web Content Mavens</a>. I took notes and then sat on actually writing this post for, um, about four months. But, better late than never.</p>
<p>The presentation first went over several major prediction that didn't come true in 2009; namely, that Web Content Management Systems did not converge with <a href="http://en.wikipedia.org/wiki/Enterprise_content_management">Enterprise Content Management</a> (ECM), Social Networking Systems, or Component Content Management Systems (CCM). None of these particularly surprised me; as I've learned from Plone and Drupal over the past few years, it's tricky to build systems that have adequate granular security and workflow features that also support large numbers of concurrent, logged-in users who are creating content and relationships. As for ECM overtaking/merging with WCM, my understanding there is real ECM is absurdly hard to do well, and so I'm not surprised that trying to bolt-on web publishing to records and document management systems proved to be a massive undertaking. And I really know very little about CCM to begin with, so I'll just keep my mouth shut there.</p>
<p>Overall, I was impressed at how many of these things Plone's been doing right for a lot more than a year, and how many of the things that it hasn't been are well underway. For a quick summary, check <a href="http://www.mindmeister.com/18460825">this post's accompanying mindmap</a>; or, stick around for my commentary on the areas where we're doing well and falling down. I unfortunately can't post the slides (as they're not mine to post), but I can at least share my notes.</p>
<h2>Friendly URLs</h2>
<p>This one Plone's had for a long time, care of the zope publisher. Plone's default title-to-ID converter does a good job making search-friendly path components, and products like <a href="http://plone.org/products/redirectiontool">redirection tool</a> give you total control over the URLs for objects. I am consistently amused when I see systems where they actually charge for the ability to set reasonable URLs for objects.</p>
<h2>Repository Search</h2>
<p>Plone doesn't have some much of a separate "repository" to speak of, at least from an end-user perspective; content objects are searchable via the site search and editable from their web-representations. The advanced search gives you some ability to find objects by type and review state, but otherwise we could use some work here. Out of the box, there isn't an obvious way to get a listing of all objects of a particular type and sort them meaningfully (although clever content managers can use their own collections for this purpose), nor to do anything like faceted search. I have heard of products coming out to support this, and I'd be interested to hear about others' ideas for making it easier to find content that needs editing without browsing the site or relying on full-text search.</p>
<h2>Dependency Tracking</h2>
<p>Plone actually got a screen-shot in here in the presentation, as a system that provided user-friendly dependency tracking. Byrne seemed impressed by the delete notifications Plone gives you. As the composite page story for Plone evolves and content can appear in more places on a site, it will be valuable to add more ways to track where a given object is showing up on your site.</p>
<h2>System Management and Configuration Management for Business People</h2>
<p>I've unfortunately forgotten what the different between System Management and Configuration Management were, so I'm just going to conflate them and say generic setup is wonderful. I realize that it can be opaque to system integrators, and I won't pretend that I haven't cursed as I tried to find something in a sea of &lt;object /&gt; tags, but the fact that Plone can serialize out configuration to a format I can teach my non-developer colleagues to edit, and then can easily read configuration back in from the file system, is a godsend. When you're starting a site from scratch, it can seem unnecessarily complex, but once you have a live site that users are updating constantly and you want to test changes before you deploy them, it's wonderful to be able to automate configuration changes and be sure of reliable repetition. Having spent some weekends trying to deploy changes in Drupal 5 and be sure I've clicked all the right places in the right order (often following someone else's notes), I'll gladly do some XML sit-ups for the sleep they save me at deployment.</p>
<h2>[Content] Management Metrics</h2>
<p>Plone could definitely use some work here. Clever use of collections allows content managers to create queues of pending, old, and expired content, which is a good start. However, if you're managing a large site, these queues aren't going to be enough; it can be really valuable to be able to get an idea of which sections of your site are getting the most updates, which sections are aging worst, and to know more about your aggregate site activity. To my knowledge, there's no good way to get this information from Plone; I remember Kapil Thangavelu mentioning a content auditing system that could use a SQL database to provide some of this information, but I can't even find it now.</p>
<h2>Site Analytics</h2>
<p>Plone doesn't do this one really at all &mdash; there's a box for inserting web-based analytics code into the footer of pages, and otherwise you're pretty well on your own here. There are systems that do provide some of this; the blogging platform I use actually gives pretty good analytics. And, on its face, it's hard to know why your CMS should provide analytics; with so many dedicated packages for that, why bother?</p>
<p>However, analytics combined with content metrics could provide powerful tools for content managers. Imagine being able to see where your traffic were going and how it was traveling through your site (or bouncing away), and then being able to overlay information about how frequently those pages were updated and re-reviewed, and who had been working on them. Right now, if you have firm goals for how your site should perform in terms of analytics, you might be able to get that information from a third-party system, but then drawing inferences from current practices requires either a lot of custom programming or some other external auditing system. This is another area where I'd love to hear comments &mdash; maybe I'm overestimating the kind of intelligence you could get from combined analytics and content metrics, or maybe there are systems that would make this much easier in Plone.</p>
<h2>Word Conversion</h2>
<p>This is an area where no one does well. It's hard to blame the CMSes, either. People use word badly, and then word makes matters worse by producing a ton of crazy markup when you paste from it (and it's different crazy markup depending on your word version). I'm not sure how a CMS could be expected to really accurately convert text destined for print to the web when that text doesn't use page-level styles. I know enfold desktop offers integration directly with word, but I've never been able to get it to work in a way that I found acceptable; then again, I haven't put a ton into it.</p>
<h2>True Multi-Site Management</h2>
<p>This is an exciting area in Plone right now, with the changes that went into 3.3 and the <a href="http://plone.org/products/collective-lineage">new lineage product</a>. It's also an area where most other systems do a bad job, according to Byrne. With Lineage, it's now possible to setup a single Plone site with multiple independent children, where the parent site can access the content of the child sites, but the child sites are independent of one another and segregated from the parent. This solves a variety of use-cases, like campaign-specific sites or large institutions with several independent departments or divisions. I haven't gotten to play with lineage myself, but I'm looking forward to using it soon.</p>
<h2>Usability</h2>
<p>This is an area where I've always felt Plone really excelled; although the interface may not exactly be simple, it is gloriously consistent. In training end users to create content and manage sites, I've found that they learn quickly and are able to extend their knowledge easily, thanks to this consistency and the care put into keeping the UI logical. And from what I hear, Plone 4 will only get better, with a simpler interface and fewer concepts to master, even for complicated tasks.</p>
<h2>Non-browser Clients</h2>
<p>This is apparently a hot area for non-FOSS CMS vendors. According to Byrne, adobe's Flex has vendors all excited about creating "rich internet applications" for interacting with their products. I have trouble seeing how this would be useful for many tasks; you're managing a website, you might as well do it through the web. To my knowledge, Plone doesn't have any non-browser clients, but I'm not going to hold that against it.</p>
<h2>Overall</h2>
<p>Overall, I'm impressed. There are plenty of areas where other systems are just now playing catch-up, and plenty of others where Plone is keeping pace or maintaining its lead. And I don't see development or innovation slowing down, so I can't wait to see how we're doing in the state of content management in 2010.</p>]]></description><wfw:commentRss>http://m.odul.us/blog/rss-comments-entry-3696792.xml</wfw:commentRss></item><item><title>Links Let You Keep Your Deep Thoughts</title><category>content</category><category>web</category><category>writing</category><dc:creator>Matt Bowen</dc:creator><pubDate>Tue, 03 Mar 2009 02:20:09 +0000</pubDate><link>http://m.odul.us/blog/2009/3/3/links-let-you-keep-your-deep-thoughts.html</link><guid isPermaLink="false">311404:3238491:3154371</guid><description><![CDATA[Writing web-ready documents means thinking hard about linking. Long copy is not forbidden on the web; it's just likely not what you want to present to a reader first. Thanks to links, that's not a tall order to fill.]]></description><wfw:commentRss>http://m.odul.us/blog/rss-comments-entry-3154371.xml</wfw:commentRss></item><item><title>Web writing for Communicators</title><category>content</category><category>web</category><category>writing</category><dc:creator>Matt Bowen</dc:creator><pubDate>Sun, 08 Feb 2009 22:06:56 +0000</pubDate><link>http://m.odul.us/blog/2009/2/8/web-writing-for-communicators.html</link><guid isPermaLink="false">311404:3238491:2950904</guid><description><![CDATA[Even if you're a good writing with clear ideas, writing for the web is different than for other media. You need to carefully consider your content's goal in the context of a site, manage interactive elements, and use a web-friendly style, all of which I explain below.]]></description><wfw:commentRss>http://m.odul.us/blog/rss-comments-entry-2950904.xml</wfw:commentRss></item><item><title>Two quick SquareSpace tricks</title><category>blogging</category><category>code</category><dc:creator>Matt Bowen</dc:creator><pubDate>Mon, 02 Feb 2009 02:08:45 +0000</pubDate><link>http://m.odul.us/blog/2009/2/2/two-quick-squarespace-tricks.html</link><guid isPermaLink="false">311404:3238491:2943476</guid><description><![CDATA[<p>In the process of migrating modulus to squarespace and starting a separate personal blog, I've come across two useful tricks that I wanted to share in case anyone else ever needs them.</p>
<p>The first is related to migrating from Drupal to SquareSpace. SquareSpace accepts a variety of formats, and they seem pretty ecited about their Moveable Type importer. I lucked out and found a <a href="http://andrew.sterling.hanenkamp.com/2008/03/drupal-to-movable-type.html">script to export a drupal site to moveable type (</a>scroll down for the python version), but unfortunately it didn't</p>
<ol>
<li>handle my node revisions correctly</li>
<li>filter out unpublished comments</li>
<li>write the date in a format that SquareSpace could handle</li>
<li>have an obvious way for non-programmers to run it</li>
</ol>
<p>So, I hacked in fixes to those four issues, and it worked like a charm. I tested it against drupal 5 -- no promises it'll actually work for you, but it was nice to have to work with.</p>
<p>&nbsp;</p>
<pre class="prettyprint">def read_drupal(outfile,db,host,user,passwd):<br /> import re,MySQLdb,time,wikimarkup<br /> linefeed = re.compile('\r')<br /> fout = open(outfile,'w')<br /> db = MySQLdb.Connect(db = db,host = host, user = user, passwd = passwd)<br /> c = db.cursor()<br /> c2 = db.cursor()<br /> cdata = db.cursor()<br /> c.execute("SELECT nid,uid,type,title,status,created,comment from node where type = 'blog' AND status = 1")<br /> stat = ["draft","publish"]<br /> for (nid,uid,type,title,status,created,ncomment) in iter(c.fetchone,None):<br /> #for i in range(0,10): <br /> #(nid,uid,type,title,status,created,ncomment,teaser,body) = c.fetchone()<br /> cdata.execute("SELECT body,teaser,format FROM node_revisions WHERE nid = %i ORDER BY timestamp" % int(nid))<br /> (body, teaser,format) = cdata.fetchone()<br /># teaser = ''<br /># body = ''<br /> body = linefeed.sub('',body)<br /> if format==4:<br /> body = wikimarkup.parse(body)<br /> created = time.strftime('%m/%d/%Y %I:%M:%S %p',time.localtime(created))<br /> c2.execute("SELECT name from users where uid = %s", (uid,))<br /> (name,) = c2.fetchone()<br /> fout.write("AUTHOR: %s\nTITLE: %s\nSTATUS: %s\nALLOW COMMENTS: %s\nCONVERT BREAKS: 1\nALLOW PINGS: %s\nDATE: %s\n" % (name,title,stat[status],ncomment,1,created))<br /> c2.execute("SELECT name from term_node n, term_data d where n.nid = %s and n.tid = d.tid" % (nid,))<br /> categories = [cat[0] for cat in iter(c2.fetchone,None)]<br /> fout.write("TAGS:%s\n-----\n" % (','.join(categories)))<br /> fout.write("BODY:\n%s\n-----\nKEYWORDS:\n/node/%s\n-----\n" % (body,nid))<br /> if teaser != '':<br /> fout.write("EXCERPT:\n%s\n-----\n" % (teaser,))<br /> c2.execute("SELECT subject,comment,hostname,timestamp,name,mail,homepage from comments where status = 0 AND nid = %s order by cid" % (nid,))<br /> for (subject,comment,hostname,timestamp,name,mail,homepage) in iter(c2.fetchone,None):<br /> timestamp = time.strftime('%m/%d/%Y %I:%M:%S %p',time.localtime(timestamp))<br /> #timestamp = time.strftime('%Y-%m-%dT%H:%M',time.localtime(timestamp))<br /> fout.write( "COMMENT:\n")<br /> if name != '': <br /> fout.write( "AUTHOR: %s\n" % (name,))<br /> if mail != '': <br /> fout.write( "EMAIL: %s\n" % (mail,))<br /> if hostname != '': <br /> fout.write( "IP: %s\n" % (hostname,))<br /> if homepage != '': <br /> fout.write( "URL: %s\n" % (homepage,))<br /> if timestamp != '': <br /> fout.write( "DATE: %s\n" % (timestamp,))<br /> fout.write( "%s\n" % (subject,));<br /> fout.write(comment + "\n")<br /> fout.write( "-----\n")<br /> fout.write('''--------\n''')<br /> fout.close()<br /><br />if __name__ == "__main__":<br /> read_drupal("filename", "tablename", "server", "user", "password")<br /></pre>
<p>&nbsp;</p>
<p>The second is a bit of javascript for creating a music player on blog enclosures. I'm posting <a href="http://blog.mattbowen.net/blog/category/minute-of-music">about a minute of music, about every day</a>, to my personal blog, and I'd wanted an easy way for people to be able to play it. So, I found a <a href="http://www.alsacreations.fr/dewplayer-en">nice, creative-commons licensed music player called dewplayer</a>, and wrote some jQuery code to find MP3 enclosured and add a player for them to the entry.</p>
<p>&nbsp;</p>
<pre class="prettyprint">$(function () {<br /> mp3s = $(".enclosureWrapper a[href$=mp3]");<br /> mp3s.wrap("&lt;div class='player-wrapper'&gt;&lt;/div&gt;");<br /> mp3s.each(function() {<br /> elem = $(this);<br /> wrapper = elem.parent();<br /> song = elem.attr("href");<br /> playerHolder = $("&lt;div class='player'&gt;&lt;/div&gt;");<br />wrapper.prepend(playerHolder);<br /> playerHolder.flash({<br /> swf: '/storage/resources/dewplayer.swf',<br /> flashvars: {<br /> mp3: song,<br /> wmode: "transparent",<br /> showtime: 1<br /> },<br /> params: {<br /> wmode: "transparent"<br /> },<br /> height: 20,<br /> width: 200<br /> });<br /> });<br />});<br /></pre>
<p>&nbsp;</p>
<p>Because SquareSpace uses YUI internally, eventually I'll rewrite that code to just use YUI and swfObject. But, for now, it works and isn't too heavy, and has the advantage of only taking about 15 minutes to throw together.</p>]]></description><wfw:commentRss>http://m.odul.us/blog/rss-comments-entry-2943476.xml</wfw:commentRss></item><item><title>Starting back up</title><category>blogging</category><category>meta</category><dc:creator>Matt Bowen</dc:creator><pubDate>Fri, 23 Jan 2009 01:50:00 +0000</pubDate><link>http://m.odul.us/blog/2009/1/23/starting-back-up.html</link><guid isPermaLink="false">311404:3238491:2939762</guid><description><![CDATA[<p><iframe width="600" height="250" frameborder="0" src="http://www.mindmeister.com/maps/public_map_shell/14678813?width=600&height=400&zoom=1" scrolling="no" style="overflow:hidden"></iframe></p>
<p>For a while I was blogging pretty well on m.odul.us. I had a blog running on Drupal hosted with Site5 and I was enjoying it a lot. Then I got very busy, and my blog faltered. But, even faltered, my content was still there. But then something much more annoying happened: site5 performed an upgrade and knocked my sites out. Being pretty busy, it was hard to find the time to fix a suddenly broken drupal install or any of the other applications that had suddenly fallen offline. Getting back online has left me with some decisions to make about blogging platforms, and I'd like to chronicle those here.</p>
<p>For me, the first question was, do I host my own blog again? I'm a full time web developer, so finding hosting and getting the app installed isn't really an issue. And, I'd certainly use an open source engine (<a href="http://zine.pocoo.org/">zine</a> is quite impressive, if slightly lacking in usability), so I'd like to pick one I might be able to contribute to. But, there's a flip-side to being a web developer: for me at least, keeping a server up to date in my free time isn't a ton of fun. In fact, it's a chore. I don't mind doing it for clients, or for interesting pet projects that require some admin attention; but, updating wordpress or drupal regularly (and wondering if everything's going to randomly break) is just a motivator to avoid looking at the blog at all. So there's a very strong temptation to just use a hosted service.</p>
<p>The temptation is so strong, in fact, that it looks like I've given into it. Certainly no technology choice is forever, but my goal this year is to simplify the details so that I actually do the work I care about. And picking a hosted blog means one less detail to keep track of. So, now I'm doing a heads-up comparison of a few blog hosts:</p>
<ul>
<li><a href="http://www.squarespace.com">Squarespace</a></li>
<li><a href="http://www.wordpress.com">WordPress</a></li>
<li><a href="http://www.typepad.com">TypePad</a></li>
<li><a href="http://www.vox.com">Vox</a></li>
<li><a href="http://www.blogger.com">Blogger</a></li>
</ul>
<p>I also tried to get a sense of what I'm looking for in a blog, which ended up being a pretty healthy list, and which you can check out in the mindmap above if you're really interested. But the highlights were that I needed to be able to be pretty sure on the security front, be able to use custom CSS (and javascript), be able to import and export data from the system, be able to set arbitrary URL redirects (to preserve content from my old blog), offer feeds filtered by tag (so I can submit entries to various planets), and use a custom domain.</p>
<p>I eliminated Vox right away because there was no obvious way to use a custom domain. This is too bad though, because I really like their media manager; if I ever set up a more personal blog, I'd definitely consider using them. TypePad I had used before when I used to write for <a href="http://ncpc.typepad.com/">Prevention Works</a>, and I had honestly grown to hate their admin UI; it's cluttered and I can almost never find what I'm looking for. I know it works for lots of people, but we don't get along. Blogger lost out for similar reasons -- I don't like the editor UI, and I want blogging to be something easy and peasant so that I actually do it.</p>
<p>This left Squarespace and WordPress. Deciding between these two is actually pretty difficult. WordPress is an actively developed open source project, and wordpress.com benefits from that development. It has a killer community, lots of nice looking themes, and a usable admin UI. Squarespace is smaller, but has nearly all the features I want, and a really nice theme editor that makes simple personalization dead-easy. It also has a redirect system, and makes it possible in inject JavaScript onto the page (meaning I can have fancy features like code-highlighting via JavaScript), which is a big plus.</p>
<p>So, this ends up as a long post saying that I'm blogging again, I'm not hosting myself anymore but instead I'm using Squarespace. Who knows what I'll be using next year, but for now, I'm really enjoying this service. Hopefully I'll have my entries exported from my drupal DB backup soon, too, and then this blog can be whole again.</p>]]></description><wfw:commentRss>http://m.odul.us/blog/rss-comments-entry-2939762.xml</wfw:commentRss></item><item><title>Plone Conference 2008</title><dc:creator>Matt Bowen</dc:creator><pubDate>Sun, 14 Sep 2008 22:38:10 +0000</pubDate><link>http://m.odul.us/blog/2008/9/14/plone-conference-2008.html</link><guid isPermaLink="false">311404:3238491:2939733</guid><description><![CDATA[For readers who don't know, the Plone Conference 2008 will be in Washington, DC, October 8th through 10th (with trainings on the 6th and 7th and sprinting on the 11th and 12th). If you're interested in content management, open source, or python, you'll be hard pressed to find a smarter, more inviting community, and we're honored to have so much of that community here in DC. I'm especially honored to be program director; it's given me a chance to see just how dedicated the community is to sharing knowledge and improving Plone. It's, of course, been something of a double-edged sword; there were more great talks than I could accept, which is difficult. But, talks are picked, and information is available online.The [http://plone.org/events/conferences/2008-washington-dc/agenda| full list of sessions is available on plone.org] , as is the [http://plone.org/events/conferences/2008-washington-dc/agenda/schedule| day-by-day, hour-by-hour schedule]. This year's slate of talks is extremely exciting, with great looking tutorials on topics from [http://plone.org/events/conferences/2008-washington-dc/agenda/toc/theming-a-plone-3.1-site-from-start-to-finish| theming] to [http://plone.org/events/conferences/2008-washington-dc/agenda/introduction-to-z3c.form| z3c.form], interesting talks from [http://plone.org/events/conferences/2008-washington-dc/agenda/toc/nasascience-the-science-mission-directorates-makeover| how NASA used Plone on its science mission directorate's website] to [http://plone.org/events/conferences/2008-washington-dc/agenda/toc/the-future-of-plones-user-experience| the future of Plone's user experience], and fascinating panel discussions, too. Plus, there will of course be lightening talks and birds-of-a-feather sessions to show off what's cool and to meet people with similar interests.I know I'm excited to see everyone again, and I'm hoping that some locals might make it out, too. There are still [http://plone.org/events/conferences/2008-washington-dc/logistics/accommodations| hotel rooms] left, and [http://ploneconf2008.eventbrite.com/| registration is open].]]></description><wfw:commentRss>http://m.odul.us/blog/rss-comments-entry-2939733.xml</wfw:commentRss></item><item><title>Brandstreaming is suspicious, or "Engagement" means "interaction"</title><dc:creator>Matt Bowen</dc:creator><pubDate>Mon, 28 Jul 2008 23:19:48 +0000</pubDate><link>http://m.odul.us/blog/2008/7/28/brandstreaming-is-suspicious-or-engagement-means-interaction.html</link><guid isPermaLink="false">311404:3238491:2939732</guid><description><![CDATA[This morning, I learned about brandstreaming, via a post on [http://www.readwriteweb.com/archives/brandstreaming.php| ReadWriteWeb], which itself covered a blog post from feed publisher [http://www.pheedo.info/archives/2008/06/brandstreaming.html| Pheedo]. I am incredulous about brandstreaming for the majority of companies; I think many will try and fail. I think those that do fail will do so because they do not understand that, for most companies, engagement means actually interacting with your customers, which takes dedicated people and therefore costs money.First, some background on a concept nearly-too-new to have background. According to Pheedo, "A Brandstream is a consistent flow of content created by a brand." Pheedo is careful to explain that this is not just another content syndication strategy though; they feel that "Brandstreaming is not simply pushing information out to consumers ... A Brandstream shares and communicates a company's ideas, beliefs, passions, thoughts, and values." I'm not sure that I understand the distinction they're trying to draw (they're an RSS company, and RSS tends to be an outgoing-only technology), but it certainly does sounds good, if you turn off your brain.The trick is, companies don't have passions, thoughts, or values, per se. The people who work there may, and the sometimes that comes through. That's tricky, though -- with so many people involved, it's very hard for a company to get both a reasonable product and an aura of passion; few even achieve the reasonable product part. Thankfully, what's more more important is that a company's '''customers have values, beliefs, passions, and ideas.''' And if your company helps its customers embody those, or even see themselves doing so in the future, then maybe people will be interested in your brandstream.If your company helps users live their own passions and realize their own dreams, then people may want to identify with your brand--subscribe to it, follow it, and actual look at the press releases, product announcements, blog posts, and picnic pictures in your company's brandstream. If your brand inspires aspiration, then people will like the information that can fuels those aspirations. Otherwise, you need to leverage that material differently: as collateral in '''direct interactions with your customers.''' If you really want to use a brandstream to build your brand, there had better be a person tending the brandstream--watching how people interact with your materials and interacting back, communicating with those who are spending more time with your product than your marketing materials, and generally trying to understand (1) what your customers want to achieve, (2) where your product is letting them down, and (3) where you're doing well and can therefore build from. I have grown to really appreciate a good community manager; with one, people feel like there's someone watching out for them and interested in their needs. And, if you have a good community manager, and that manager does build a community, then maybe your customers will identify enough with your brand to want to follow your company's output. Chances are though, people don't--not without a lot of encouragement and personal interaction. To engage your customers, you need to have someone with them. Just resyndicating your press releases on friendfeed, though, is not going to build you any good will; it's just more noise, and I'm way too busy trying to figure out how to achieve my dreams for noise I can easily ignore.]]></description><wfw:commentRss>http://m.odul.us/blog/rss-comments-entry-2939732.xml</wfw:commentRss></item><item><title>Plone Conference Session Proposals due Monday!</title><dc:creator>Matt Bowen</dc:creator><pubDate>Wed, 16 Jul 2008 21:26:24 +0000</pubDate><link>http://m.odul.us/blog/2008/7/16/plone-conference-session-proposals-due-monday.html</link><guid isPermaLink="false">311404:3238491:2939730</guid><description><![CDATA[A quick reminder to the Plone-loving public: Session Proposals are due on Monday, July 21st! If you haven't submitted yours yet, you can do so [http://tinyurl.com/48q3hu| in a matter of minutes on our handy form].Not sure what to talk about? Well, I have some suggestions:* Real life migration stories from some prior version of Plone to Plone 3* Using the current tools well: Developing with Archetypes* How does Plone stack up to the competition?* How to deploy a well-performing, stable Plone site* How to make Plone downright fast* The most important Plone features you probably don't use (and don't need to have written)* E-Commerce on Plone* Plone and multimedia* Case studies that highlight Plone's strengths (and informative ones where you learned about the weakness, too)However, feel free to stray from this list if you have a good idea. Remember to get your proposal in soon, and I look forward to seeing many of you in DC in just a few months!]]></description><wfw:commentRss>http://m.odul.us/blog/rss-comments-entry-2939730.xml</wfw:commentRss></item><item><title>Blog Autopsy</title><dc:creator>Matt Bowen</dc:creator><pubDate>Mon, 14 Jul 2008 23:12:58 +0000</pubDate><link>http://m.odul.us/blog/2008/7/14/blog-autopsy.html</link><guid isPermaLink="false">311404:3238491:2939729</guid><description><![CDATA[I [http://m.odul.us/2007/07/09/why-i-blog| started this blog about a year ago] with a couple of things in mind. My big idea was that I sometimes have something to say to several people at once, and so instead of emailing them, I could blog instead. A lot of times I'd find interesting links, so a blog would provide a good opportunity to share those, too. As I wrote, I found that I could also [http://m.odul.us/2007/08/14/ubiquitous-emacs| share ideas for software that I'd like to write] (even if I might not actually get around to writing it for years).By the new year, I was really enjoying writing. My plone-related posts republish to [http://planet.plone.org| Planet Plone] and everything goes to [http://planetdc.org| plantdc]. The re-aggregation started brining comments and response posts, and I felt like I was a part of "the conversation." By the end of December, I had [http://m.odul.us/2007/12/31/new-years-resolutions| resolved to blog two or three times a week]. Probably at that point, a betting man would have put money on "this thing is gonna die." He'd have been right, sort-of.I had a remarkable February. I had the honor of attending the Plone Strategic Planning Summit (PSPS), which was an amazing learning experience. I started to freelance on content management projects for [http://aclark.net/|ACLARK.NET, LLC], and several others. I also started working at [http://www.revolutionhealth.com Revolution Health] (which I have since left for [http://stratacomm.net| strata@comm]) directly after the PSPS. It was a heady, busy month, and it was the culmination of pretty powerful [http://www.dancingwithwords.com/2007/05/05/ambition-creep/| ambition creep]. I took on way more "new stuff" than I really had capacity for. The startup environment of Revolution would have been more than enough to use most of the free energy I had, and the excitement of freelancing did a good job consuming more than what was left. I was also a champion for a PSPS topic, and a part of the 2008 Plone Conference Planning Committee.So, things started to drop. For months, I did not fulfill any of my resolutions. I really just focused on what I could maintain from my very ambitious February (which I really was not done with until June). And even some promises fell through (I am still disappointed in myself for the "job" I did as a PSPS Champion; I am just grateful the community is deep enough that my being overwhelmed wasn't particularly detrimental). Mostly, anything that I was doing for intellectual amusement dropped; there just wasn't time.Looking at the date stamp of this post and the previous one, the blog obviously dropped. Amusingly though, the date-stamps don't tell all -- I actually have partially written posts on my laptop that I didn't have time to finish to my own satisfaction and that then got too old to be of much use to anyone. That's the funny thing about the blog; I really enjoy writing, even if I don't do it as frequently a I'd like. Maybe it's that English degree, or the way that I like to talk about ideas--but if I don't blog for a month, I miss it.Now that I've dug myself out of my four-month February, what happens? Well, having thought about it carefully, I'll try to take some of this energy and put it back into my resolutions, which means more blogging. It turns out that those things I was doing "purely for intellectual amusement" are the things I really enjoy about my lifestyle, so I'll bring them back and guard them a little more carefully in the future.  And hopefully, I'll avoid any more posts this meandering and personal in the future.]]></description><wfw:commentRss>http://m.odul.us/blog/rss-comments-entry-2939729.xml</wfw:commentRss></item></channel></rss>