Matt Bowen

Profile

Director of Web Technology at U.S. News & World Report
Internet | Washington D.C. Metro Area, US

Summary

Flexible web developer with experience in several languages and platforms and experience leading a development team. Experience in nonprofit, associations, startups, and defense. Particularly interested in dynamic language projects and emerging web technologies.
Specialties: Web Development (Python, JavaScript, HTML, CSS), Content Management (Plone, Django), Web Application Development, Content Strategy, Web Analytics

Experience

  • Aug 2011 - Present
    Director of Web Technology / U.S. News & World Report
  • Jul 2008 - Present
    Director of Technology Services / Stratacomm
    Developed websites and web-based applications for a variety of clients Manageed Stratacomm’s web team’s day-to-day development work and individual client projects Developed digital strategy, with an emphasis on user experience and content strategy Developed and presented educational materials for clients and staff on best-practices in web strategy Developed web-based applications using a Python, JavaScript, Adobe Flex, (X)HTML, CSS, ASP .Net, Django, and Plone
  • Oct 2006 - Present
    Webmaster / National Crime Prevention Council
    Developed long-term strategy for NCPC's web presence Represented web team to senior staff Developed documentation for NCPC’s web technologies Developed software extensions and maintains NCPC’s Content Management System (CMS) Developed content for NCPC’s web properties, McGruff.org, NCPC.org, and NCPC’s blog Designed pages and interactive components, using XHTML, CSS, and Javascript Managed NCPC’s search engine marking campaign Trained staff on software use and technological trends
  • Jul 2005 - Present
    Assistant Editor / American Institutes for Research
    Copyedited assessment items, web-release items, and technical documents Developed style guides for new projects Developed and documented processes for enhancing efficiency Wrote technical documents and tutorials Analyzed documents for coherence and logic

Education

  • 2001 - 2005
    University of Maryland College Park
    BA/BA in English/Economics
    Activities: Sigma Tau Delta Scholars in the Arts

Additional Information

Websites:
Honors:
Stratacomm Team Player of the Year 2009
Interests:
Content Management, Web Applications, Dynamic Langauges, Content Strategy, Web Writing, Photography, Music Production

Posts

March 22, 08:12 AM

Behind every website is a hypothesis about how to solve some problem people have. Being explicit about that yields benefits in clarity of thought, insights into process, and easier measurement.

March 05, 10:26 AM

Starting a website with comps and code is a bad approach for content-centered sites. Instead, start by clarifying your goals and aligning your team around them, working to understand your audience, and honing your messaging to suit your audience and goals. From there, there’s a whole production process that should include content strategy and user experience design before you actually build a site.

May 28, 11:43 AM

If you have never developed software, the process can seem opaque and confusing. Understanding what motivates developers and what they sweat can help you achieve better results when you are collaborating with them.

Although I do a couple of different things at work, I spend the lion's share of my time as a web developer. I do not work at a software development company though, but instead as a part of a larger company that develops software to accomplish other ends. This means I regularly work with lots of people who have never developed software before (and maybe never wanted to). My goal here is to give non-developers a better sense of what developers do so that projects go more smoothly, cost less, and finish with higher quality. I feel like, for a person who has never written software, developers may be a little too mysterious, and so I hope to clear up some of the mystery here by explaining

  • what we love about developing software
  • what are a developer's inner conflicts that s/he is trying to balance against; these conflicts can tip your project from awesome to nightmare if not mitigated
  • what being a developer does to your brain; that is, where do developers fall down
  • what you can do to make your projects more successful when working with developers

Of course, I have a few caveats. This is heavily influenced by the specific setting of my work experience and the teams I've been on; I can't claim this post is universal. In writing this out, I've also come up with some improvements and projects for myself and my team, and in that respect, I recommend other developers try writing something similar up. Finally, as always, I speak only for myself here, and not for my employer or colleagues.

Why We Love Developing

Developing software is not like normal life activities; it allows you to translate your thoughts and needs into tangible devices that realize your intentions and solve your problems. Software developers, at least ones like me in small shops, are not disconnected from the product of their labor. In the software development classic The Myth of the Man-Month, Frederick P Brooks, Jr. explains

The programmer, like the poet, works only slightly removed from pure thought-stuff. He builds his castles in the air, from air, creating by exertion of the imagination. Few media of creation are so flexible, so easy to polish and rework, so readily capable of realizing grand conceptual structures. (Ch. 1)

And it is this, I think, that is so intoxicating. The day-to-day of software development is mentally taxing, often frustrating, and a little lonely. But the result is the ability to solve complicated problems almost out of thin air. Even better, the things we make are virtually tangible; we do not usually create processes and memos of understanding, but instead systems with interfaces and outputs that people actually interact with. Having a product that you can point to with capabilities that you can describe is strikingly satisfying.

Problem solving is important to the developers I know. We are not exactly artists (at least not all of us); we do not create things just to delight and evoke. We like to make things that make life easier, things that are used, things that people care about. We hate inefficiency and people doing tasks that machines can do, and we like making machines do repetitive tasks. We also like to learn something in the process; once you're hooked on developing software, there's a strong urge to get better at doing it (and to make it less frustrating, mentally taxing, and time consuming). 

What Are Developers' Inner Conflicts

Developers are, like all creative people, tormented by several sets of tradeoffs (or inner conflicts) and systemic problems in their craft. The most frustrating (and, paradoxically, enriching) can be pithily summarized:

  • Software is an asset, source code is a liability (thanks to Alan Cooper for the formulation)
  • Change is inevitable, and potentially very expensive
  • You have to use a computer to run a program
  • Adding people to a late project makes it later (Brooks's Law)

Software is an asset, source code is a liability

Developers work to create software. Software is the stuff you use on your computer: your web browser, word processor, favorite game, and websites like Twitter and Google. Software is clearly an asset; it makes your computer do valuable work and makes your life easier. To make software, we write source code (code for short) in a programming language, which is then translated eventually into software you can use. It's at this making software part that things go to hell.

The trouble is, every line of code we write is fraught with problems:

  • The more code, the more room for bugs; we translate fuzzy ideas into very concrete logic — sometimes, that logic is imperfect, especially when it is very complicated
  • The fastest, most secure code is the code you never wrote; the more complicated the code, the more room for performance and security problems
  • We're in our programs for the long hull — the amount of time we spend actually writing new code is small, compared to the time we spend maintaining existing programs; every new line is another line you need to understand 14 months from now
  • Writing code forces concrete decisions, many of which we make on the fly; every line is a potentially misunderstood intention, which we will later have to delete and rewrite
  • Code rots; we upgrade systems, add features, and fix bugs, any of which can break some older code that we haven't even touched

As such, we want the simplest design that will meet your needs. We love consistency; every special case means more code of questionable long-term value. (Special cases are the most expensive when someone is trying to understand code a few months or years later, or when we're trying to make a major change — like responding to a real-life customer need). When planning software, we want people to justify that the features they want will be used, because once we write the code, we have to live with how it affects the rest of our programs for as long as they're used. Worse, unused features can block us from quickly implementing new, actually useful ones.

Change is inevitable, and potentially very expensive

We know much of the code we initially write will be changed. We will imperfectly understand a client's requirements. The client will misunderstand much of his or her own needs until s/he sees them made concrete as software. The situation surrounding the software will change, requiring the software to pivot to meet reality. 

The trouble is, change is often expensive. There are two types of change: ones we planned for and ones we did not. With anticipated changes, we can typically make a change without disrupting the system; we've made ourselves places to configure the change, or ways to plug into the existing code without disrupting existing parts of the system. In unanticipated changes, most anything could happen — the change could be very simple, or it could require we rewrite 80% of the existing system.

DC Green SceneAn example could make this more concrete, using one of my favorite sites I've developed: DC Green Scene, a calendar of energy and environment events in DC. The calendar has a variety of filtering options, such as filtering by date, event type, and event topic. We anticipated the topics would evolve over time, and so we made it very simple to add new ones; adding and removing topics doesn't require a programmer. We actually capture a lot of information we could filter on (such as event location and cost), and adding these as options wouldn't be terribly complicated either.

However, imagine that we realized we were missing some critical variable in our filtering, such as the event size (to differentiate small meetings from conferences). This we did not anticipate, and it requires the following types of change (with the language required to make the change in parentheses):

  • Add the size field to the database, and figure out a way to add event-size data to the existing events in the database (SQL)
  • Add size filtering options to the code that actually executes the filters (Python)
  • Add the size information to the event's display on the homepage and on the event's page (HTML, CSS)
  • Add code to execute the size filtering dynamically (Javascript) 

So for this relatively simple change, we end up changing about seven files and using five different "languages." This doesn't count the design and usability work required to make the new feature work with the existing look. And that first change, where we need to collect new data about old events, is potentially a nightmare of busy work, or a confusing usability problem as we try to signal that size filter doesn't always work.

The natural question is, of course, why not make the system infinitely flexible, so that every change is simple? We certainly strive for simple, flexible systems, but often flexibility simply adds complexity to the code. A developer will sometimes say a system is over-engineering: this is when a system has been designed to be highly flexible in ways that no one will ever use. In such a system, simple tasks can become very complicated, because you use the same machinery for simple tasks as you would for very complex ones. Worse, you end up with lots of extra, unused code, which I'm sure you understand is undesirable after reading this far. 

Thankfully, there's a mitigation here: the earlier you realize you've made a mistake, the easier it is to fix the problem. When we first started writing DC Green Scene, we could easily add new fields to capture data and filter that data; there wasn't nearly as much code to upset at the beginning as there is now. Paying attention to mockups, prototypes, and early demos is essential; I know they usually look strange and it's hard to get past the interface, but seriously working with a prototype or half-functional product can save a ton of time down the road.

You have to use a computer to run a program

The essence of a developer's job is translate a human's ideas into instructions for a computer. Computers, however, are very unlike humans. Computers are terrible with assumptions. They cannot be given a vague picture of what you want with a little context and understand it. Everything must be described in minute detail. This means

  • every little detail requires a decision — what order things should be listed in, whether punctuation is bold or not, everything
  • when we tell the computer to do something stupid, it does exactly what we told it to

Sometimes, we use systems that provide functionality for us (e.g., when we use a content management system or some other customizable application). Unfortunately, this really just means that someone else made a lot of decisions for us, which might be great and might be totally wrong. In the end though, someone has to sweat the details, or they won't exist in the software at all.

Adding people to a late project makes it later

I used to hate estimating the timelines and costs of software projects. The trouble is, if you haven't written a type software before (e.g., someone asks you how long it would be to make a facebook competitor, but you've never written social networking software), it can be very tricky to have any clue where the pain points will be — and it's in the pain points that your project starts to slip. What always made this process more difficult is the realization that whatever we spec at the beginning will change, but deadlines typically won't.

The Scope CreepFrom the outside, both of these problems look like they could be solved by simply bringing in additional staff. If we get behind due to some unexpected technical trouble, or if the client realizes they need some difficult-to-implement realtime prediction system, we'll just bring in some freelancers. Unfortunately, adding additional developers to a late project will just make it later. The logic here is that once you have a substantial amount of code, it can take longer to bring someone up to speed than it would to implement that person's features. The problem is so well understood, it even has a name and a wikipedia entry: Brooks's Law

Brooks's law has implications: the initial team has a huge effect on the final delivery of the software, and new features added later in the development process likely mean the removal of some other, not-yet-implemented features. If the scope of a project expands substantially beyond its initial description, it will likely be impossible to meet the initial deadline.

A bonus conflict: Writing code requires a ton of focus

Finally, there's a problem that I couldn't pithily summarize but that feels too important to leave out: writing code requires an excess of focus. The number of things you have to remember to write a web application is absurd; I once read programming is the art of balancing an impossible number of details long enough to get an idea into your text editor.

Writing complicated code requires a specific state of mind akin to writing a flowing narrative; you need focus that excludes most everything else, and if someone breaks that focus, it can take hours to get it back. Paul Graham writes about the implications of the state of mind required to write code in Maker's Schedule, Manager's Schedule:

Most powerful people are on the manager's schedule. ... But there's another way of using time that's common among people who make things, like programmers and writers. They generally prefer to use time in units of half a day at least. You can't write or program well in units of an hour. That's barely enough time to get started.

This means many little interruptions through a day or meetings dotting the morning or afternoon can cause sizable delays by making it hard to get the necessary concentration to implement large features.

For my team, there are additional scheduling considerations: We divide all our work into two phases, development mode and deployment mode:

  • During the development cycle, we tend to work more slowly and carefully, while at the same time taking bigger risks with the code. These bigger risks mean that we can make bigger changes that are actually maintainable.
  • When we're in deployment mode, we expect we're going to be making our software available generally very soon; thus, we are looking to break as little as possible and work as quickly as possible — so we cut corners and add quick and dirty fixes, which we hope to resolve during the next development cycle.

The trouble comes in when we're in contant deployment mode (because the schedule was unrealistically agressive, the scope crept, or the content or approvals didn't land). When that happens, if we're rushing and just piling features in without adequate planning because deployment is "any minute now," we may end up making a mess of our own codebase, making later features much more expensive.  

Where We Fall Down

There are a few areas where I have noticed my developer friends and I fall down, I think likely by the nature of our jobs. As every developer is different, any one might be able to combat some of these deficiencies, but they're worth looking out for as a non-developer.

  • It's easy for us to get the "new/shiny's," wherein we find neat new technologies that solve some problem we've recently had; unfortunately, this is how a two person development team ends up with eight products written in six entirely different languages — making it very hard to staff properly in the future
  • We have trouble keeping the really big picture in mind; developing is a lot of very detailed work; unfortunately, that doesn't leave a ton of room for keeping the master plan in mind, which makes it progressively harder to give high level feedback on projects as we get into them
  • We can't know for sure if what we've made meets your needs; only you know what you really had in mind, which means your attention and testing are crucial for knowing whether we've correctly implemented a project.
  • The last 10% of any feature is hideously boring: it turns out that the last 10% of a feature is usually figuring out all the little ways that the other 90% break or are hard to understand, and so is really tedious, time consuming, really important — and we might need a little push to get through it.
  • We over-rely on technological solutions: I know I often assume that we need to automate some process that no one expects or even wants to be automated; I assume people should do as little work as possible, even if it's very time consuming (and thereby expensive) to get the computer to do some simple piece of person work. 

The valuable thing about realizing these weaknesses is that you can then combat them; knowing is, after all, half the battle. For example, at home I'm constantly playing with new applications, frameworks, and languages, but at work I'm pretty conservative about allowing new technologies into our stack; the more technologies you have to know, the less time you have to know any one of them well. 

What Can You Do To Help?

Armed with an understanding of what motivates developers, what makes them crazy, and where they're prone to weakness, you're hopefully brimming with productive changes you can make to improve the software products your company produces. Hopefully, you're thinking that going forward, you'll

  • think hard about what you want, finding good examples of similar products to clearly communicate your desires
  • think hard about the value of new features that you ask for during development, and think about which already-agreed-upon features you can live without to get your new features
  • sweat the details of projects together with your development team
  • pay close attention to prototypes and early demos to catch misunderstandings early
  • embrace technology — I'm not kidding; the more conversant you are with technology, the more likely you will be able to think about your problems in a concrete way that we can actually solve
  • remember that the most flexible system is not necessarily the best system
  • be realistic with your deadlines, knowing now that constant deployment leads to long-term panic 
May 11, 10:18 PM

There's been a lot of chatter lately about Facebook's new privacy policy, especially about people deleting their accounts. Although the rules have changed, the decision about deleting your account is actually pretty simple.

I've seen a good deal of ranting about Facebook's new privacy changes. In particular, I see lots of people I respect talking about how they're considering deleting their Facebook profiles. I feel like there's not a ton to consider.

The decision: Is Facebook useful if all your data are public?

For me, that's what it comes down to: Is Facebook useful to you if you assume there are no privacy controls. There are lots of things I share without privacy settings: my blogs, my photos on flickr (almost all public, and nothing that would break my heart if a stranger saw it), my twitter account, etc. I get value out of having these resources online, and out of the networks around them.

With Facebook, the assumption about your content should be that it is public. The next question is, can you live with that? Can you keep what you share to be things that are only safe to have in public? Are there people on Facebook with whom you wouldn't communicate without it? Would that be a loss? Does interacting with those people require privacy? If you can still get value out of Facebook with everything being public, then stay. If not, stop using it; if you're not getting value, why would you keep using it anyway?

The rules have changed, the reality hasn't

Although Facebook has made it harder to control the privacy of your data on their network, I think it was insane to think anything that was there before was truly "private." We worked hard to drive this home to kids (and particularly teens) when I worked at McGruff, but perhaps we should have been targeting adults too. Realistically, you need to ask yourself, how careful are you with who you accept friend requests from? A few years ago, large companies started having interns from colleges friend recent recruits to get access to their profiles, and that was before the privacy changes. I know I've accepted friend requests from people I'm pretty sure I met at a conference or event. But I couldn't always tell you for sure who everyone with whom I'm "friends" on Facebook is. And those friends have access to my profile, my photos, and the things I post on Facebook.

The trouble has always been that interested parties could get access to a great deal of your profile data. I've certainly never considered it safe to consider what I post on Facebook truly private; I am typically much more concerned about a potential employer getting at my profile data than a company on Yelp anyway, and the chances that someone I'm friends with works at potential employer are pretty high. 

The risk for Facebook

I'm not claiming that Facebook will eventually turn our inboxes and private events into public feeds for anyone to see (at least not on purpose), but I wouldn't expect them to put worrying about the privacy of those data at the top of their concerns either. Their major concern is to leverage the social data they have about you to make your web experience more interesting, and then to leverage the same data to serve you better advertisements. Most of these privacy changes have been in the name of creating cool features to make a more interesting Facebook, not just to upset users. The risk is that that more interesting product is less valuable to users than being able to share their information in a privacy-controlled environment. My guess is features will beat privacy, and that the privacy-centered networks that people are talking about building will fail, but it will be interesting to see how it plays out.

November 15, 12:40 PM

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.

While there are lots of really thorough Droid evaluations out there (I really liked the Gizmodo review), 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

  • why I got a droid now (basically background),
  • what I wanted,
  • what has been awesome,
  • what has been just fine,
  • what has sucked,
  • and finally some overall impressions.

Although I have read and largely agree with the sentiment that the Droid is not aiming to be an iPhone killer, for me the decision really was iPhone or Droid, and so that's my vantage point. I was previously using a Blackberry Curve.

Background

Last Tuesday, my trusty Blackberry Curve finally gave up the ghost — 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&T to get an iPhone. I've had an iPod Touch for a few years, and I've been mostly happy with it, 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.

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&T's network collapse during the inauguration (I only saw tweets from friends on other networks for most of that day); I read about AT&T's voicemail problems; 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.

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

What I was looking for

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:

  • One device for media and communications, because I have only one pocket without keys in it
  • Good phone (as in talking on it) support
  • Better twitter and gmail clients than on my Curve
  • Better maps than my Curve with an un-crippled GPS
  • A reasonably good MP3 player that can sort through 10s of GBs of MP3s
  • At least 16GB for music, 32 GB would be better
  • Something like InstaPaper for reading web articles offline (on metro, specifically)
  • A platform that actually has apps
  • Fast internet and a reasonably good web browser
  • An app for reading books
  • A device that feels and looks good
  • A monthly bill that wasn't horribly higher than what I have now

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.

What has been awesome

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.

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.

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 — I just say what I want and it searches. If what I want isn't a contact or app, I get a web browser.

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.

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.

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.

What has been just fine

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.

As for apps that I actually have cared about, I was able to find a twitter app (Twidroid, 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 Read It Later and PaperDroid. I really hope PaperDroid adds tilt-scrolling; if it does, that'll pretty much entirely replace InstaPaper for me.

The media player on Android has been fine so far — 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 — 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.

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.

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

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.

What sucks

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.

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

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 DoubleTwist, 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 Lala will create a wireless sync, or maybe Songbird will step up and we'll see an Android plug-in there, which would be fine to me; I don't love iTunes.

Conclusion

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.

April 18, 04:28 PM

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.

Several months ago, I got to see a presentation by CMS Watch's Tony Byrne about the state of Web Content Management in 2009, hosted by DC's Web Content Mavens. I took notes and then sat on actually writing this post for, um, about four months. But, better late than never.

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 Enterprise Content Management (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.

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 this post's accompanying mindmap; 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.

Friendly URLs

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 redirection tool 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.

Repository Search

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.

Dependency Tracking

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.

System Management and Configuration Management for Business People

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 <object /> 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.

[Content] Management Metrics

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.

Site Analytics

Plone doesn't do this one really at all — 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?

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

Word Conversion

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.

True Multi-Site Management

This is an exciting area in Plone right now, with the changes that went into 3.3 and the new lineage product. 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.

Usability

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.

Non-browser Clients

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.

Overall

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.

March 02, 09:20 PM

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.

February 08, 05:06 PM

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.

February 01, 09:08 PM

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.

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 script to export a drupal site to moveable type (scroll down for the python version), but unfortunately it didn't

  1. handle my node revisions correctly
  2. filter out unpublished comments
  3. write the date in a format that SquareSpace could handle
  4. have an obvious way for non-programmers to run it

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.

 

def read_drupal(outfile,db,host,user,passwd):
import re,MySQLdb,time,wikimarkup
linefeed = re.compile('\r')
fout = open(outfile,'w')
db = MySQLdb.Connect(db = db,host = host, user = user, passwd = passwd)
c = db.cursor()
c2 = db.cursor()
cdata = db.cursor()
c.execute("SELECT nid,uid,type,title,status,created,comment from node where type = 'blog' AND status = 1")
stat = ["draft","publish"]
for (nid,uid,type,title,status,created,ncomment) in iter(c.fetchone,None):
#for i in range(0,10):
#(nid,uid,type,title,status,created,ncomment,teaser,body) = c.fetchone()
cdata.execute("SELECT body,teaser,format FROM node_revisions WHERE nid = %i ORDER BY timestamp" % int(nid))
(body, teaser,format) = cdata.fetchone()
# teaser = ''
# body = ''
body = linefeed.sub('',body)
if format==4:
body = wikimarkup.parse(body)
created = time.strftime('%m/%d/%Y %I:%M:%S %p',time.localtime(created))
c2.execute("SELECT name from users where uid = %s", (uid,))
(name,) = c2.fetchone()
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))
c2.execute("SELECT name from term_node n, term_data d where n.nid = %s and n.tid = d.tid" % (nid,))
categories = [cat[0] for cat in iter(c2.fetchone,None)]
fout.write("TAGS:%s\n-----\n" % (','.join(categories)))
fout.write("BODY:\n%s\n-----\nKEYWORDS:\n/node/%s\n-----\n" % (body,nid))
if teaser != '':
fout.write("EXCERPT:\n%s\n-----\n" % (teaser,))
c2.execute("SELECT subject,comment,hostname,timestamp,name,mail,homepage from comments where status = 0 AND nid = %s order by cid" % (nid,))
for (subject,comment,hostname,timestamp,name,mail,homepage) in iter(c2.fetchone,None):
timestamp = time.strftime('%m/%d/%Y %I:%M:%S %p',time.localtime(timestamp))
#timestamp = time.strftime('%Y-%m-%dT%H:%M',time.localtime(timestamp))
fout.write( "COMMENT:\n")
if name != '':
fout.write( "AUTHOR: %s\n" % (name,))
if mail != '':
fout.write( "EMAIL: %s\n" % (mail,))
if hostname != '':
fout.write( "IP: %s\n" % (hostname,))
if homepage != '':
fout.write( "URL: %s\n" % (homepage,))
if timestamp != '':
fout.write( "DATE: %s\n" % (timestamp,))
fout.write( "%s\n" % (subject,));
fout.write(comment + "\n")
fout.write( "-----\n")
fout.write('''--------\n''')
fout.close()

if __name__ == "__main__":
read_drupal("filename", "tablename", "server", "user", "password")

 

The second is a bit of javascript for creating a music player on blog enclosures. I'm posting about a minute of music, about every day, to my personal blog, and I'd wanted an easy way for people to be able to play it. So, I found a nice, creative-commons licensed music player called dewplayer, and wrote some jQuery code to find MP3 enclosured and add a player for them to the entry.

 

$(function () {
mp3s = $(".enclosureWrapper a[href$=mp3]");
mp3s.wrap("<div class='player-wrapper'></div>");
mp3s.each(function() {
elem = $(this);
wrapper = elem.parent();
song = elem.attr("href");
playerHolder = $("<div class='player'></div>");
wrapper.prepend(playerHolder);
playerHolder.flash({
swf: '/storage/resources/dewplayer.swf',
flashvars: {
mp3: song,
wmode: "transparent",
showtime: 1
},
params: {
wmode: "transparent"
},
height: 20,
width: 200
});
});
});

 

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.

January 22, 08:50 PM

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.

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 (zine 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.

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:

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.

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 Prevention Works, 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.

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.

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.

Posts

The buildings are actually scraping the sky at Milliumum Park – View on Path.

wtfevolution:

The piglet squid would seem to suggest that evolution’s medications are working. Possibly a little too well.

Ai Weiwei! at Hirshhorn Museum And Sculpture Garden – View on Path.

Butterfield DIET (by grebmops)

A beautiful light after a dreadful day at Washington National Cathedral – View on Path.

It’s our little tree. It doesn’t lack for decoration.

putthison:

paulscheer:

Yes to this

You’re not gonna see a lot of printed t-shirt posts on Put This On.

But you will see this one.

Our Honeymoon, Seattle Edition

For our honeymoon, my wife and I traveled to Seattle and then Portland. I’d never been to the Pacific Northwest, and my wife had been to Seattle and loved it, so we thought it’d be a relaxing, interesting trip to cap-off a busy year of job-changing, moving, and wedding. And, we were right. I shared a lot of what we did via Path, FourSquare, and Twitter, but I thought for my own memory and (maybe) the benefit of others, I’d give a rundown of the various places we went and what we thought of them. We spent a lot of the trip just walking around and exploring, and then stopped for meals, snacks, and the occasional shop, which is most of what I recorded below. Because we went so many places, I’ve broken the list into two posts — this one for Seattle, and a later one for Portland.

But first, the pictures — these are a selection of both snapshots from my phone and more carefully composed shots from my X100.

 

  • Hotel Vintage Park (loved) — We stayed at the Kimpton Vintage Park downtown, and it was lovely. We had a beautiful room with a tremendous view, and the staff could not have been friendly or more accommodating. They had champagne and chocolates waiting for us when we got to our room, and the concierge was very helpful for helping us plan the night when our plans to see Lyrics Born fell through. I’d definitely stay there again.
  • Pike Place Market (loved) — A wonderful, huge market. We went to it several times, and I still can’t be sure we saw everything. They’re famous for their fishmongers, but there’s also food stands, restaurants, craft and art sellers, a tremendous farmer’s market, and much more. It’s just a really neat place. While there, we got a tart from Le Panier (a French bakery with a friendly staff), a breakfast pastry at Cinnamon Works, some Piroshkies (which is like a Russian empanada, and is delicious) from Piroshky Piroshky, black forest cherries (my new favorite candy) from Chukar Cherries, pork buns and pot stickers (both of which were good for the price but not “best ever”) and some really disappointing sesame buns from Mee Sum Pastry, some nice gifts from the artists on the right-side of the market, and took a trip to the original Starbucks (which was amazingly friendly, especially given the crush of tourists they are constantly exposed to). Pike Place is nearly overwhelming, but the people who work there are so friendly that instead it’s energetic and fun.
  • Blue C Sushi (liked) – Blue C is a Seattle-based chain where the sushi comes by on a conveyer belt. Each plate has a color that corresponds to its price. We ate there our first night, because we were tired from traveling and wanted something fast and very low-key. The quality is really quite good, and it’s definitely the fastest sushi meal I’ve ever had. I’d certainly recommend it if you’re in a hurry and want a snack or quick sushi meal.
  • Long Provincial Vietnamese Restaurant (liked) — We go to Nam Viet /Pho 79 a lot at home and were craving Vietnamese, so we stopped here for lunch after a morning at Pike Place. The menu was pretty different from Nam Viet, but the food was good — they used coconut milk in their crepe, which really added something, and the spring rolls were nice and fresh. I wouldn’t go out of my way to go there again, but it was a good find for the time.
  • The Ballard Locks and Fish Ladder (liked) — We went here on a tour of the city and it was really neat to see the salmon swimming up stream. It looked like a ton of work for them. Not necessarily worth going out of your way for, but really cool if you’re in the neighborhood.
  • Skillet Diner (loved) — Someone (on foursquare I think) said this was comfort food for hipsters, and that’s about right — but really good comfort food with a really friendly staff. My wife had a “life changing” veggie burger here, and I had some excellent fried chicken. Next time we’re in Seattle, we’ll make it a point to go here again.
  • Cupcake Royale (so-so) — A nice cupcake shop with so-so cupcakes. They were a little dry and reminded me of DC’s Hello Cupcake — not as good as the excellent cupcakes at Baked and Wired or Something Sweet though. It was a nice place to sit and enjoy a book though while we waited to go to Barboza for a show.
  • Barboza (loved) — Seattle has a ton of cool venues, and this was the one of two we managed to see a show at. It was probably the size of the main room at DC’s Rock & Roll Hotel, with the cleanliness and lighting of the 9:30 Club. Plus, the surrounding neighborhood is really cool. It’s a really nice venue — just the right size to feel intimate without being so small as to have poor acoustics. We saw Cold Specks there, and they were amazing.
  • Seattle Coffee Works (liked) — Just up the street from Pike Place Market (on Pike Street), a large and wonderful coffee shop. I had my first coffee (a cappuccino) in probably 10 years here, and it was a good place to do so. Coffee was smooth (not at all burnt tasting), the staff was very friendly, and there was ample seating. Certainly worth hitting up if you’re near Pike Place Market anyway.
  • Piecora’s Pizzeria (liked) — In Capitol Hill, a pizza shop that calls it pie and claims New York heritage. It was good, straightforward pizza — great if you’re in the neighborhood anyway, and they had a good beer list to go with it. We got the Queens, and I’d definitely get it again.
  • Frye Art Museum (so-so) — A free museum of 19th and 20th century German and American romantic paintings. It was nice that it was free, and the paintings were attractive, but nothing to write home about — I am spoiled by the National Gallery and Corcoran here though.
  • The Seattle/Bainbridge Ferry (loved) — This is a weird thing to have loved, but the views of the city from the water were breathtaking. The ferry itself is a commuter boat, and it’s huge. You can get from Seattle to Bainbridge and back for $7.50, and the ride takes about 50 minutes each way. There’s a garage for cars, a restaurant, restrooms, and an observation deck, which is where I spent all my time. I got some of my favorite pictures of the trip from the boat, and it was a surprisingly fun way to spend two hours.
  • Umi Sake House (loved) — Some of the best sushi we have had, and a sake menu as long as any wine list I’ve ever seen. We just ate at the sushi bar and still had amazingly fast and friendly service. They have these wonderful rolls with citrus sauces that make them taste a little like ceviche, but better. I suspect I will dream of this sushi again for some time.
  • The Fremont Troll (liked) — I feel like he deserves his own mention because he’s so strange — it’s a huge troll under a bridge (see photos above). He was supposedly built to reduce crime in the neighborhood, and I do think he’s improved the economy; there were many other tourists like us there just to see him.
  • Milstead & Co. (loved) — An amazingly hip but friendly coffee shop. They make their own vanilla syrup and it shows — I will probably spend the next year failing to find a latte half as good as the one I had here. It looked like everyone there would be far too cool for school, but no — the baristas were very friendly, made smalltalk as we waited for our drinks, and clearly took their craft seriously.
  • Chiso (liked) — A nice sushi bar and Japanese restaurant in Fremont. I had some incredibly light (and not-at-all greasy) tempura, and my wife had some tasty yakisoba. Also, they had this amazing basil lemonade that sorta outshined the meal. Certainly worth stopping at if you’re in the neighborhood.
  • 112-printworks (liked) — A custom silk-screen printer. They do simply beautiful work — lots of vibrant and beautiful posters for tours and bands, and a friendly staff to boot.
  • Theo Chocolate Factory (loved) — It you’re at all interested in chocolate, this is a really fun tour. Theo sources their own beans and roasts their chocolate on site. It’s easily worth the $6 for the wonderful smell of the factory and the many samples. I also learned a lot about the process of making chocolate (bars, barks, and filled chocolates), which was fun.
  • KEXP Concerta at the Mural (liked) — KEXP, a really cool radio station based in Seattle, holds free concerts in August at Seattle Center. We got a beautiful afternoon and enjoyed some good music there — it felt like the hip counterpoint to the Smithsonian’s “Jazz in the Garden.”
  • Local 360 (loved) — A restaurant in Belltown that sources 90% of its food from within 360 miles. Supposedly the best burger in Seattle (it was good, but I had a better one the next day). I did, however, have the best old fashioned ever (and that’s my usual cocktail), and overall the food and service were both excellent.
  • Harbor City Barbecue (liked) — We had Dim Sum in the International District with a friend, and we went to Harbor City. It was quite good — on par with our beloved Oriental East in Silver Spring, both in terms of price and quality. 
  • Uwajimaya (liked) — An Asian market that takes up pretty much an entire city block. You can get sushi-grade fish there, all kinds of appliances, fruits and vegetables I’ve never heard of, and so on. Interesting to visit just for how foreign it feels.
  • Espresso Vivace (liked) — A nice sidewalk cafe with a very friendly staff. They educated me on the virtues of Hemp Milk as a dairy substitute for us lactose-intolerant people. What’s funny is the cappuccino I got here was substantially better than almost anything I can get at home, but because of how excellent places like Milstead and Zeitgeist were, it doesn’t entirely stand-out.
  • Nordstrom downtown (liked) — The original Nordstrom. Much bigger than the ones I’m used to, and, as promised, we got exceptional customer service. Not worth traveling for or anything, but neat to stop in if you’re nearby and need some clothes.
  • REI (liked) — This is their flagship store, with a climbing wall and bike-test path. It’s absolutely huge, and I got some fall gear here because I couldn’t help myself.
  • Top Pot Doughnuts (loved) — Seattle pretty clearly takes pastries seriously, and Top Pot is simply amazing. We went twice and both locations had friendly staffs and plenty of seating. We were told people “freak out” for their bavarian cream filled, and I can see why — this is another thing I will likely dream about for the next few months.
  • The Cake Spy Shop (liked) — This one is hard to explain; it’s sort-of like going into a curated Etsy, if that makes any sense. They had all kinds of paintings and crafts and T-shirts. I’m not sure exactly how it gets to exist, but I think that’s part of the magic of Seattle.
  • Luc (loved) — Friends of ours recommended we stop at Luc, so we had a nice dinner there. They had a Julia Child tasting menu, but I got Beef Bourguignon on recommendation, and it was indeed worth writing home about. We also had these baffling but delicious “soufflé potato crisps” that were like extremely classy French fries. 
  • Bill Speidel’s Underground Tour (liked) — Many buildings in Downtown Seattle have entrances both at street level and 10-feet below street level; apparently, the street was built twice to make room for a proper sewer and buried electrical. It’s a fun walking and talking tour where you learn a good bit about the early history of Seattle.
  • Ballard Farmer’s Market (liked) — An absolutely huge Farmer’s Market in downtown Ballard. It was roughly twice the size of the big farmer’s market in Dupont, and you could pretty clearly do most of your shopping for the week there. We met friends and had pizza and were generally impressed.
  • Venue (liked) — The Cake Spy people told us about Venue, which is an artist’s workshop and boutique. The workspaces were neat to see, and many of the crafts were pretty cool, if a little on the expensive side. 
  • Alki Beach (liked) — A little beach-park and boardwalk in Seattle. It’s not like a beach like Rehoboth, but it’s also only a 30 minute bus ride from downtown and is certainly picturesque. There’s also lots of pavilions and grills for outdoor parties, and bars and restaurants for a nice afternoon with friends.
  • Quinn’s Pub (loved) — A pretty amazing gastropub in Capitol Hill in Seattle. This is where I actually did have the best burger I’ve ever had. As with everywhere else we went, the service was good and the food came out quickly. 
  • Bauhaus Books & Coffee (liked) — Another extremely hip coffee shop, with a nice view of the neighborhood, lots of seating and very good espresso. The kind of place I wish we had more of in DC.
  • Zeitgeist Kunst & Kaffee (loved) — Our last wonderful coffee in Seattle was at Zeitgeist, and it may be tied for my favorite I had (with the one from Milstead). We also got sandwiches for our train ride to Portland, and they were quite good. If you’re in Seattle, it’s definitely worth stopping at.

new-aesthetic:

Robot Swagger (by timtrusler)

I never get tired of watching researchers push robots as the robots try to walk

The X100

For our honeymoon trip to the Pacific Northwest, I got a Fujifilm X100. A few people have asked me what I think about the camera, and so I thought I’d sum up my experience with it so far. In short, it is a wonderful but quirky camera. For me, the image quality and lens make up for any control issues — the images are on par with my DSLR, and the shooting experience isn’t too far off. But, it is a camera with frustrating flaws, and I’ll discuss those below. You can see the results of my trip on camera diem, my photo blog, or my Seattle and Portland set on flickr. Below, I’ll explain my motivations for picking the X100 and how it’s worked out for me.

For me, one of the great joys of traveling is making photographs, and so I pretty much always bring a camera on any trip, and the camera goes almost everywhere I do on the trip. I shoot between 50 and 100 photos a day while traveling (and keep 3-5 per day). I have previous usually traveled with an SLR — a Nikon N65 in college, then for the last seven years with a Nikon D70. I had tried to travel with a RAW-shooting compact (a Panasonic Lumix LX2) on a road trip, but I just couldn’t stand the image quality. Although the D70 doesn’t pack a ton of pixels, it does have a nice large sensor that produces little noise at ISO 200, and with a prime lens you can get beautiful bokeh and excellent sharpness. A smaller camera simply couldn’t match the image quality, nor the shooting experience.

The trouble with traveling with the D70 is primarily one of size. My best-quality lens is a 90mm f/2.8 macro, and it’s what I shoot with virtually all the time. Because the D70 has pretty poor low-light performance, I also typically carry an SB800 speedlight and a beanbag stabilizer to give me more control over my exposure without having to push the ISO over 400. It’s a not-small bit of kit for vacation. And, carrying the D70 with a prime lens around on my neck, it feels conspicuous — I typically keep it in my bag as much as I can, because I just end up feeling very “tourist.”

The X100 is different from any small camera I’ve seen though. I find the images produced by the X100 easily rival those that I can produce with my D70, both in terms of ease of capture and in raw image quality. The low-light performance is substantially better than what I’m used to — I’ve been happy with images shot all the way to ISO 1600 after lightroom’s noise reduction is applied. I miss the 1:1 macro of my 90mm lens, but I do not miss its heft (and the macro performance of the X100 is surprisingly good). A friend joked that I’d need a helmet because I’d be doing so much “zooming with my feet,” but that didn’t give me much trouble. I have a telephoto and a kit-zoom lens for my D70, but because I typically do my photography while traveling on foot, I almost never carried them, so maybe I’m just used to zooming with my feet. The 35mm equivalent lens turned out to be a good size for travel photography — and when I do want a subject to be larger in the frame than I can get it by moving closer, I just crop — they key is knowing your final output goal (typically a print no larger than 13x19” for me). The ergonomics of the camera work well for me — it took a little adjusting to the dials and menus, but after a few days, the main controls felt adequately intuitive. The shutter has no noticeable lag, and quick-start mode was quick enough that I missed few shots waiting for the camera to boot up. Additionally, the hybrid viewfinder is glorious — I love how bright, large, and immediate the optical is, and being able to see through the lens with the electronic viewfinder for more careful previews and composition is at times a godsend.

As reported in the more thorough reviews, the camera is not without its flaws. I’d say 70% of the time, the autofocus is just fine — not particularly slower or less accurate than what I’m used to in my D70 (which is, granted, an old camera). However, probably three of every ten shots are focused bafflingly. I keep the autofocus zone small and well aimed, and still I get plenty of pictures of people where the camera has decided that the background was more interesting to focus on. Also, if you’re at-all close to your subject, you need to flip to macro-focus mode, which is slow. In practice, this has meant a lot of missed shots of people — it’s difficult enough to time and compose a shot to get a natural expression out of a person, and then to see the shot focused incorrectly can be heart-breaking. I had heard of the focus problems and had thought that the manual focus would ameliorate the problem (I shoot manual on my D70 plenty and can often focus quickly); however, the manual focus is slow and fiddly, making it more useful for slowly composed macros than anything with motion or change. In the end, I’ve just accepted that a number of my shots of people will be out of focus and shoot more to compensate. It’s disappointing, but not a show-stopper for me. If I did more street or people photography (or had cute kids), I may feel differently.

Additionally, one of the cameras greater strengths — its many, retro-inspired external controls — turns out to have a downside. I keep the camera in a domke camera messenger bag when I’m not using it, for protection and, again, to avoid looking too much like a tourist all the time. Unfortunately, when I pull the camera out, typically at least one dial has moved unexpectedly — usually either the exposure compensation or the speed. This was much less of a problem on my D70, since the aperture, exposure compensation, and speed controls only changed anything when the camera was on. With the X100 though, those dials are dedicated and work whether the camera is on or off. The speed is easy to tell when composing a shot — I keep the camera in aperture priority mode, so if the speed dial moves to 1/4000, I see that in red in the display when composing a shot. The exposure compensation is more subtle. I have taken dozens of shots at +1 EV without meaning to. Occasionally, the focus mode will switch to manual, which you’d think you notice right away, but isn’t obvious if you’re using the optical viewfinder (as opposed to the electronic). There is an indication that the focus mode has changed (the focus indicator in the viewfinder changes) — I can say from sad, blurry experience that it’s a subtle change. With time, I’m getting better at checking the camera’s settings as soon as I turn it on — but so far, it’s meant more missed shots.

Unrelated to its performance, the camera was a mixed success at one of my more vain goals. As you probably picked up from the above, I don’t love looking like a camera-crazy tourist as I wander around a new city. I always felt like the D70 (or really non-pro DSLR) was second to only a fanny pack in the way it labels a person. So, I’d hoped the smaller, classier-looking X100 would be more discrete. However, because of its conspicuously retro style, it instead attracted more questions in a week than my D70 did in seven years. Not that I’d want it to look any other way…

Hello Portland! at Union Station Amtrak (PDX) – View on Path.

The sun came out for our visit to the beach at Alki Beach Neighborhood – View on Path.

At an international market

This fellow was apparently built to help prevent vice-related crime in his neighborhood. I’ll give them points for thinking outside of the box.

I took these on a public ferry and I could not be happier with them.

I guess it got cold at Bistrot Du Coin

Presented without comment

I’m trying an experiment with posting a photo-per-day to a separate tumblr. I’ll probably cross-post some favorites back here from time-to-time.

Audio

  • I’m really hoping to work on this more over the weekend, but I had to share the sinister bass in case of emergency.
    15 plays
  • It’s been a while since recorded anything, but this weekend has been a sudden creative burst for me.
    19 plays
  • I’ve decided to start learning how to make synths in Absynth, and this is what happened. It sounds like a 30-second trip into scary-clown town. Here’s hoping future endeavors are at least a little less absurd.
    0 plays
  • It wasn’t supposed to be this way. But apparently, after not writing any music for several weeks, my sonic self took revenge. This won’t be the last track you hear from me this weekend.
    7 plays
  • This is very much a draft of a song — I have a bunch of clips recorded in live that I arranged pretty roughly into a typical verse/chorus combo. On the downside, it’s not really smooth, it’s missing bridges and transitions, and the only real mixing I did was to drop a master compresser on it. On the upside, I write it to be playable by three people, it uses drums sequenced on the kaossilator, and the guitar comes from my neat new PRS semi-hollow. I have some ideas for lyrics bouncing around, so hopefully this comes back more fully realized before too long.
    11 plays
  • Having fallen off the music-making wagon because life just got too busy, I decided I needed to take this project less seriously for a minute. Thankfully, nothing kicks you back into fun mode like the kaossilator. I recorded it into Record, used some of the built in processing to make the sound a little richer, and here’s a 1 minute dance track like I used to post.
    7 plays
  • This may be the deepest bass tone I’ve gotten so far — that part I’m very happy with. The guitar parts could use some work, and the mix itself is pretty rough, but I mostly just wanted to get my ideas down; we’re planning to rework this one for vocals over the next week or two. It should be interesting to see how it comes out.
    10 plays
  • This track is more like my stuff I had been doing in reason and record. It was fun to put together, but I don’t feel like it really gels as a song; several of the parts make me happy, but they just don’t play together correctly. But, maybe I’ll be able to reuse some of the ideas.
    6 plays
  • It’s been a whole year! The format of my Minutes of Music has evolved quite a bit (this one is more like two minutes), but I keep loving doing it, and I’m so glad to have the opportunity. I’m hoping in the coming year that these can move from “whatever I can manage to put out in time” to “sketched for a coherent album of music.” As for this one specifically, I’m starting to really love playing guitar, and I think this reflects that. We’ve got vocals again, only this time I didn’t write the lyrics, which feels like an improvement.
    10 plays
  • There’s not a ton to say about this one; it’s not one of my favorites. I mostly was playing with the new synths I’ve got, trying to get a feeling for what they could sound like. I think after doing a whole song, and with a good deal going on at work, I’m running a little dry on creative juice. But, hopefully by the end of the month, I’ll be back on my game.
    1 plays
  • It’s a full song! Not just a minute of music, but nearly six minutes of music, with multiple verses and everything. The lyrics veer surprisingly (if you know me well) close to praise music, but that’s not the intention; they’re inspired by a visionary art installation, The Throne of the Third Heaven of the Nations’ Millennium General Assembly, which is a 180-piece collection of objects made for the second coming by WWII veteran James Hampton. Hampton spent 14 years making the throne room out of old furniture, cardboard, craft paper, and foil; it’s really quite moving — if you’re in DC, go to the American Art museum in Chinatown and give it a look. We wanted to be respectful, so I wrote from what I hope is an empathetic position. The music was put together in Ableton Live, using Absynth, Battery, and Guitar Rig from Native Instruments’s Komplete 6; AAS’s String Studio; me on guitar and bass; and my regular mystery vocalist. The mix is not perfect, but it’s as close as I’m going to get it any time soon; I figure I’m going to be revisiting several of these later once I have a large collection of songs anyway. I hope people enjoy listening to it as much as I enjoyed writing it; it has pretty much made my last few weeks to work on it.
    23 plays
  • My guest singer has returned to great effect in definitely the most energetic track I’ve done so far. I still have a lot to learn about mixing, particularly with vocals, but I’m not going to pretend I’m unhappy with this track. Having a blizzard on Saturday probably helped, because it gave me an excuse to spend all day working on it.
    27 plays
  • This is the first track I’ve done in Ableton Live that I’m feel comfortable with, and I still feel like I have a ways to go. But, I think it has a more interesting melody than usual, and I’m strongly considering a go at an arrangement with vocals… but, we’ll see what this weekend yields.
    16 plays
  • It’s rough again, but that’s what happens when you first switch digital audio workstations. Some of the bass is synth, some is real, and all this stuff will return in later songs, I suspect.
    2 plays
  • I decided to give last night’s track another go. I used the same clips, but I did mix them a little differently, and i got the length down to a more acceptable 1:30. The mix is a little rough, but the arrangement is a good deal better I think.
    9 plays
  • This is supposed to be a minute of music, but it’s more like four minutes. I decided that this would be a good weekend to try my hand at learning Ableton Live, and I spent a ton of time making tracks of learning how to make music in Live. Unfortunately, all that time led to me making something much longer than one minute. The quality is middling, but I learned a ton.
    10 plays
  • This one’s a milestone; there’s a vocal track. It follows the same basic construction of other minutes of music: it started with bass (me on my Schecter, slightly distorted) and drums (mostly a loop, but I did add the crash cymbals myself), then I added the lead synth and real guitar. But then, I had one verse of lyrics I’d written, and I convinced «name redacted to protect the innocent» to sing them over the instrumentation. The vocal tracking took about an hour from warmup to mixdown, which seemed pretty good, considering this is the first time I’ve recorded vocals for one of these. Now, hopefully there will be more to come.
    6 plays
  • As I was playing last night, I ran across a very straightforward drum beat in the patterns section that I could control near the bottom of the Kaossilator’s pad. Once that was down, I wanted a bassline, but it ended up sounding a bit sinister. However, once the organ-thing came in, the song perked quite a bit up, which was good — I’m in a very good mood tonight, and there’s no need to write moody music when I’m not moody myself.
    0 plays
  • I experimented today with sequencing the drums entirely by hand, and going for a bit more complexity in the by hand pattern (not using the gate arpeggiator there). Again, it’s a bit busy, but I was pretty happy overall with the sound tonight.
    0 plays
  • I was trying to be more minimal today, but that didn’t really come through. What did, however, was something sinister. I’m also past 90 seconds, but that’s balanced out by the more abitious live looping.
    0 plays

Matt Bowen makes things. By day, it's websites. By night... it's also websites. But, when he's taking a break, he writes music and makes photographs.

abcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyz