Wednesday, December 23, 2009

Common Good Vermont

See Common Good Vermont at its new home on

The other day we launched the first iteration of the Common Good Vermont website. From the about page:

Vermont (pop. 621,000) is a small, tightly knit rural state proud of its independent spirit and high levels of civic engagement. Vermont's independent sector (3000+ organizations, $4 billion annual revenue) plays a primary role in the delivery of human and cultural services and in the preservation of the state's cherished natural resources. Most social services—food, shelter, healthcare and education—are delivered within local and regional community settings.

Often separated by geography (mountains, rivers, lakes), Vermont's 251 towns and 14 counties are increasingly knit together by broadband "build-out". Common Good Vermont leverages these electronic networks to bridge the barriers of Vermont's geography and the "beaten paths" of its hyper-local networks. New human and electronic networking activities will support the delivery of information and innovation to the state's community builders: project volunteers and professionals who, by virtue of their civic and nonprofit roles and responsibilities, are the lifeblood of the "green mountain state". Common Good's place-based and community virtual events are designed to improve the capacity of so many "small networks" that, improve Vermont's unique "quality of life".

Common Good Vermont aggregates content for (and from) Vermont independents and nonprofits by pulling in RSS and Atom feeds including blogs, news sources, social bookmarks, and event calendars. The goal is to serve as an information hub encouraging knowledge sharing and increasing cross-organization communication. Content is currently organized by a combination of taxonomy (categories defined by Common Good Vermont staff) and folksonomy (tags from the feeds themselves). Our goal is to eventually remove the taxonomy layer and have all content organized completely by broad and, to a lesser extent, narrow folksonomy. However, the taxonomy layer is there for now to allow a certain amount of curation while we seek out, connect, and aggregate additional sources of information.

Common Good Vermont is built using Zend Framework and hosted on Rackspace Cloud Sites. Components from Zend Framework used include its MVC system, Zend_Application, Zend_Feed_Reader, Zend_Tag_Cloud, Zend_Search_Lucene, Zend_Paginator, Zend_Db, Zend_Date, Zend_Auth, Zend_Acl, and Zend_Form. Stay tuned for future iterations to the website!

Wednesday, December 16, 2009

Moving On

See Moving On at its new home on

Today is my last day at Vermont Oxford Network and I will now be working at Found Line full time. This was not a decision I took lightly. Vermont Oxford Network is a great place to work and they've got an excellent team. For the last four and half years I've been developing software that improves health care for newborn infants. I feel like I've made a contribution beyond just the work. However, it's time to move on to something different.

Jason and I started Found Line almost five years ago and I'm looking forward to helping him and Liz continue to grow the business. We've got some really great clients and I'm very happy to have more time to focus on their projects. I'm also excited about the opportunity to work with free/open source software and open standards full time. So, time to go catch up on some work!

Wednesday, December 2, 2009

RedEye Universal Remote Control

See RedEye Universal Remote Control at its new home on

Today one of our clients, ThinkFlood, launched their RedEye Universal Remote Control for the iPhone and iPod touch. The device and application combination allows you to "use your iPhone or iPod touch to control your TV, stereo, cable box, DVD player, and many other devices that receive standard (infrared) signals." The product launch got some great press coverage including from CrunchGear, Gizmodo, Macworld, iPodNN, Engadget, TUAW, and Wired’s Gadget Lab. Our work with ThinkFlood has included developing their brand identity, packaging, and website.

The latest iteration of the website includes eCommerce functionality allowing ThinkFlood to sell their RedEye device directly to consumers. The eCommerce section includes a shopping cart and an easy-to-use two page checkout process. While the checkout process is simple for end users, there's quite a lot happening behind the scenes with the integration of multiple APIs. The website is built using Zend Framework and thanks to Rackspace Cloud Sites everything has remained running smoothly even with all of the press coverage and associated traffic.

Wednesday, November 18, 2009

Bug Hunting

See Bug Hunting at its new home on

If you are a PHP developer in the Burlington, Vermont area then you should come to tomorrow (11/19) evening's PHP Users Group meeting at the newly opened Office Squared coworking space in downtown Burlington. This month we will be learning how to find and fix bugs in free and open source projects. From the meeting description:

Each third Thursday and Friday of the month, Zend Framework has Bug Hunt Days in which the community helps triage issues and resolve them. These efforts include everything from fixing typos in documentation to creating reproduce cases and capturing them in unit tests to actual creation of patches resolving reported bugs.

Since this month's meeting falls on the third Thursday, Matthew Weier O'Phinney, Project Lead for Zend Framework, thought we could join in on this effort or help contribute to other projects. He will be providing a short presentation on effective bug reporting and triage, after which we will jump into some actual bug hunting on projects you, the attendees, are interested in.

So come with your laptops ready, and let's fix some bugs!

PHP developers of all skill levels are welcome. There are many types of contributions needed to keep free and open source projects moving forward. You will likely have something you can contribute — and you'll learn a lot doing it!

Wednesday, November 11, 2009

Rackspace Cloud Sites

See Rackspace Cloud Sites at its new home on

We've been a Rackspace Cloud Sites (formerly Mosso) customer for about three years. In fact, I signed up as a beta tester when it was originally called "the system beats the machine." I doubt many people that work at Rackspace even know that it once had that rather odd name. Honestly, it was very rocky at the beginning (even after it was officially out of beta) but today it's a very solid platform. I've been a fan of Rackspace for years and would recommend them to anyone who needs dedicated and managed servers, virtual servers, storage delivery, our cloud hosting.

As much as I like Rackspace, the point of this blog post isn't to praise them. They've been making a big marketing push on their cloud offerings lately but I get the impression that Cloud Sites (the service we use) is the, "oh, yeah, we offer that too" service. They seem to be unaware of the potential of one of their own service offerings and push people who need a "serious" solution to Cloud Servers. Cloud Sites is an excellent platform as a service for people running PHP or .NET web applications who have better things to do with their time than manage the hardware or software layers below their PHP or .NET applications. Sure, Cloud Servers takes away the hardware layer management but you still have to manage the software layer (operating system, PHP or .NET, MySQL, etc.) yourself and deploy individual virtual servers if you need more capacity.

Part of this impression comes from Rackspace's recent marketing efforts around their cloud offerings. Some of it also comes from the technology behind Cloud Sites. For example, one of the big pain points (for me) with Cloud Sites is lack of support for features that would make application deployments easier. I understand why ssh isn't supported since there is no single machine to remote into. They do support sshfs which is useful and solves part of that problem. However, support for public key authentication and symlinks (symlinks work but aren't officially supported) would go a long way towards making application deployments less painful. It's my impression that features like these aren't included in Cloud Sites because Rackspace thinks that people who want them should use Cloud Servers instead. If that is what they think, then they're missing the point of how dead simple and awesome an application platform Cloud Sites could be.

Beginner PHP Code Examples

See Beginner PHP Code Examples at its new home on

At last month's Burlington, VT PHP Users Group meeting I presented a session on beginner PHP. The code examples can be downloaded (or forked) from GitHub. The talk was geared towards complete beginners and covered the basic structure of a PHP script, variables, comments, data types, arrays (enumerative, associative and multi-dimensional), operators, conditionals, iterative constructs, functions, scope, web forms and database access. I've licensed the code examples under the New BSD license in case anyone wants to use and/or modify them for their own beginner PHP talk.

Wednesday, October 28, 2009

The PHP Community

See The PHP Community at its new home on

Last week I was at ZendCon, the largest yearly event of the PHP community. One thing that I've been thinking about lately, and something that many other people have talked about, is how unique the PHP community is. People are generally friendly and welcoming. Rarely do you run into someone who thinks he or she is somehow better than anyone else. Sure, you'll get the occasional RTFM on a mailing list but ask anyone who's interacted with the PHP community and they'll probably have something nice to say.

I'm relatively new to the PHP community myself. Sure, I've been a PHP developer for about eight years but I hadn't really been involved in the community until I started our local PHP users group two years ago. There I met many talented local PHP developers including Matthew Weier O'Phinney, now project lead for Zend Framework. I had actually started using Zend Framework a little while before I met Matthew not realizing that one of the developers lived here in Vermont. I then went to ZendCon '08 which was my introduction to the international PHP community.

I think one of the things that makes the PHP community so strong is that we've had to build the community ourselves (my part in building the PHP community has been relatively tiny). Having had some involvement in other technology communities, I've seen the kind of support that companies like Microsoft can provide to strengthen their respective communities. During the "Meet the Zend Team" session at this year's ZendCon, Keith Casey asked what Zend was going to do to further support user groups. I was very happy to hear this question asked.

I'd like to see Zend do more to support user groups — although I don't have any room to talk with Matthew being a regular attendee and presenter at our local user group. In fact, as a response to Keith's question Matthew reiterated his offer to present at other user groups if he was in the area (which, frankly, was a much better answer than the rest of the Zend team gave). Chris Cornutt published a blog post today asking what role should companies take in the developer community ecosystem. I don't think it's any one company or organization's job to support the PHP community. Help is most certainly welcome but I think our strength is in doing it ourselves.

Thursday, October 15, 2009

Beginner PHP

See Beginner PHP at its new home on

The Burlington, VT PHP Users group has been going strong for almost two years now. We've had lots of great presentations and some really experienced PHP developers at the meetings. However, I've been concerned that we might scare away PHP beginners with many of the meetings being on advanced topics. So, our next meeting topic will be Beginner PHP:

Have you recently started using PHP? Don't use PHP but want to learn more about it? The topic of this month's Burlington, VT PHP Users Group meeting will be, "Beginner PHP." Learn the basics and some tips and tricks from experienced PHP developers. Are you an experienced PHP developer? Then come to the meeting and help out some beginners! We were all beginners at some point.

Refreshments will be provided, and you'll have the chance to network and connect with fellow PHP developers. Meetings are open to the public via RSVP.

Monday, October 12, 2009

ZendCon Tips

See ZendCon Tips at its new home on

Last year was my first ZendCon experience and I'm happy to say that I'll be going again this year. Here are some tips based on my experience at last year's conference. These tips are meant for newcomers, but may be useful to alumni as well.

Participate in the backchannel. Last year's conference attendees generated over 1,500 tweets using the #zendcon hashtag and reached the top 5 trending topics on Twitter three days in a row. Over 2,200 photos were posted to Flickr using the zendcon08 tag as people traveled to, attended, and departed from the conference. There were also many blog posts and the #zendcon IRC channel on freenode was quite active. You can participate by using the Twitterslurp of ZendCon 2009 or using (I'm the co-creator of tagnabit).

Attend at least one ZendCon UnCon session. The unconference is, "a community-driven event focused on interesting topics of the moment, and engages everyone at whatever level they can." No paid speakers, no ridged structure, just sessions of interest to the community by community members. Keith Casey did an awesome job organizing last year's unconference and I suspect this year's unconference will be just as interesting!

Attend a few sessions outside of your normal topics of interest. There were a few sessions I didn't go to last year that, retrospectively, I wish I had attended. One that comes to mind was Ben Ramsey's Distribution and Publication With Atom Web Services talk. At the time I didn't know a lot about the Atom Publishing Protocol but now it's a topic that I'm very interested in. You never know what you'll learn if you introduce yourself to some topics you're not currently familiar with.

Spend some time in the "Hallway Track." ZendCon isn't just about attending sessions by some of the most respected people in the PHP community, it's also about meeting many of these same people and others from the PHP community. The PHP community tends to be very friendly, so don't be shy! In fact, you will probably have already "met" some of these people in the backchannel. If you see someone who you've talked to on Twitter or in IRC, don't be afraid to say, "Hey, I know you from Twitter/IRC!"

While I was writing this blog post, Keith Casey published a great post with some dos and dont's for your first conference. Definitely check it out before packing for ZendCon!

Tuesday, October 6, 2009

Project Retrospective

See Project Retrospective at its new home on

When Peak Organic Brewing Company started in 2005 they asked us create their website (yes, it's a table-based layout — this was 2005, get over it). When it launched the website included (and still includes as of this writing) the ability for you to "share your peak experience" with other users of the website by uploading a photo and a brief description of your experience. Other users could then view and rate these "peak experiences" and each newsletter sent would include a recent top rated "peak experience." User submissions were even selected occasionally for use on the product's packaging.

With around 500 submissions and 15,000 ratings this "share your peak experience" aspect of their website allowed Peak Organic to learn about the people who drank their beer. Even better, it allowed their customers to learn a little bit about each other. It also gave people an opportunity to contribute, quite literally, to the Peak Organic brand with the chance of having their photographs and experiences incorporated into the product's packaging and displayed on store shelves throughout the country. I liked to call this "user-generated brand," a form of user-generated content. All brands are influenced by their users but this was user-driven brand evolution made tangible. This content was also a factor in helping them reach the number one position on Google for the search term "organic beer" — sorry Vermont's own Wolaver's!

In addition to Peak Organic's website, we also created their brand identity, developed materials for their event marketing, designed their packaging, made point of sale materials, and created sell sheets. We worked with Peak Organic for several years but we no longer work with them today. I'd like to explore some things we'd do differently today knowing what we know now four years later and with the tools available today. I wouldn't suggest anyone simply try the same things we did with Peak Organic. This worked because it fit in with their brand. However, there are some things you may be able to learn from our experience (no pun intended).

First, I would "unlock" the user generated content from the website. This could be done simply through a feed of recent "peak experiences" with links back to individual experiences. This would allow people to easily access this content from outside the website. If they're engaging with the brand, why does it matter if it they're on the brand's website or not?

An alternative approach would be to have users submit their "peak experiences" to Flickr and aggregate these photographs with a tag and possibly a group (Flickr was still in beta when we first launched the Peak Organic website). The website would then consume these aggregated photos like anyone else would and could even add a metadata layer on top for implementing the rating system. This would potentially give the community more control of this content and give Peak Organic the possibility of tapping into existing communities on Flickr.

When we first launched the Peak Organic website online photo sharing was still relatively new. Since then sites like Flickr have grown exponentially and many people are at least familiar with sites like Flickr, if not sharing photos online themselves. Today, microblogging (e.g. Twitter) is relatively new but growing very quickly. This leads to the second thing I'd do differently today — experiment with tagging beyond Flickr. I'd try tweeting from various events using an event hashtag and/or a brand-specific hashtag. Relatively speaking, not many people are on Twitter yet. However, the momentum is there and mixed in with the all those tweets must be a few "peak experiences" ready to be shared. Coincidentally, the maximum length for a "peak experience" description was 150 characters, 10 more than Twitter's 140 character limit.

Monday, September 28, 2009

ZendCon '09

See ZendCon '09 at its new home on

Last year I had the privilege of attending ZendCon '08 and next month I'll be traveling again to Silicon Valley for ZendCon '09, "the larget event of the PHP community." At last year's conference I met a bunch of amazing people from the PHP community, saw several really good talks, and was one of the first to become a Zend Certified Engineer (ZCE) in Zend Framework (the exam was announced at the conference).

This year I'm looking forward to seeing people in person again that I met last year and meeting others who I've only talked with online. The session lineup is looking good and I'm also very interested in attending some of the unconference sessions again. If you're going to be there, let me know so we can connect.

Thursday, September 24, 2009

PHP Users Group Social

See PHP Users Group Social at its new home on

Tonight (9/24) the Burlington, VT PHP Users Group will be hosting its first "social" event. We'll be having a casual get-together at Madera's in place of the typical meeting format. We've also extended an open invitation for non-PHP people to come and join us. The Vermont Code Camp earlier this month was a great opportunity for local technology and user groups to mingle and I think there is a lot we can learn from each other. So, PHP developer or not, I hope to see you this evening! You can RSVP up until 5pm tonight.

No Invisible Metadata

See No Invisible Metadata at its new home on

Yesterday I tweeted (link expanded):

Google officially ignoring keywords meta tags is a nice validation of @microformats "no invisible metadata" principle:

The link is to a 2005 post on Tantek Çelik's blog where he expands on the microformats principle that "visible data is much better for humans than invisible metadata." Google's announcement the other day that they do not use the keywords meta tag in web rankings didn't surprise anyone that knows anything about search engine optimization. We've known for years that Google ignores the keywords meta tag (Google’s Webmasters/Site owners Help has a page about various meta tags that doesn't say anything about the keywords meta tag) but, until now, it's never been official. Still, I think it's a nice validation of the principles of microformats and will hopefully give people pause when considering hidden metatdata schemes in the future.

On a silo website or within a trusted network, hidden metadata can be useful. In fact, in Google's announcement they mention that the Google Search Appliance has the ability to match on the keywords meta tag. At web scales, hidden metadata is critically flawed. How can you trust that the hidden metadata is in parity with the visible data? The hidden metadata may be intentionally inaccurate (e.g. keyword stuffing) or simply have fallen out of sync with the visible data. Within a silo website or a closed network you can trust the metadata to be true to the visible data it describes and you can enact policies to keep your metadata up-to-date. However, there are no trust models yet that would make this work at web scales.

Microformats are designed for "humans first, machines second" (another principle). This makes a lot of sense since all machines eventually serve humans, even if indirectly through many layers. If the machine doesn't ultimately serve a human need then there is not much point in the machine's existence (unless we are taking about sentient artificial intelligence). For direct human consumption, hidden metadata is completely useless. For machine consumption, hidden metadata can be useful. However, hidden metadata must at some point be transformed into visible data, even if in a completely different context than its associated visible data.

This was the case with search engines that did use the keywords meta tag in rankings: the original context for the visible data was the indexed document and the new context in which the hidden metadata was transformed into visible data was the rankings of engine results. As history tells us, this scheme didn't work so well. Instead, Google used the visible data that is hyperlinks to determine rankings. From Tantek's blog entry (emphasis added):

Lesson learned: hyperlinks, being visible by default, proved more reliable and persistently accurate for many reasons. Authors readily saw mistakes themselves and corrected them (because presentation matters). Readers informed authors of errors the authors missed, which were again corrected. This feedback led to an implied social pressure to be more accurate with hyperlinks thus encouraging authors to more often get it right the first time. When authors/sites abused visible hyperlinks, it was obvious to readers, who then took their precious attention somewhere else. Visible data like hyperlinks with the positive feedback loop of user/market forces encouraged accuracy and accountability. This was a stark contrast from the invisible metadata of meta keywords, which, lacking such a positive feedback loop, through the combination of gaming incentives and natural entropy, deteriorated into useless noise.

Monday, September 14, 2009

Vermont Technology User Groups

See Vermont Technology User Groups at its new home on

One of the great things to come out of this past Saturday's Vermont Code Camp was the opportunity for people from various local technology user groups to connect with one another. People from the Vermont.NET User Group were there (the .NET group spearheaded organizing the event) and I also saw some friends from the Burlington, VT PHP Users Group. Based on turnout at the Ruby on Rails session, it looks like the Vermont Ruby On Rails User Group may be restarting soon. The Vermont Area Group of Unix Enthusiasts (VAGUE) was represented as well as the Green Mountain Oracle Users Group, the New England Adobe User Group, the VT SQL Server Users Group and the Vermont Software Developers' Alliance (vtSDA).

User groups are a great way to meet new people, learn new skills and keep up with the latest trends in your field. Sometimes you'll even be treated to pizza and swag. Whatever technology you work with, I hope you'll find a local user group that you can attend — or start one yourself!

On a related note, the upcoming (10/26) Vermont 3.0 Innovation Jam looks like it will be a lot of fun:

[Showcasing] the coolest companies in the Green Mountains[, this is] not just a job expo. The event will examine the uniqueness of the state’s entrepreneur-founded creative technology companies while acknowledging the start-up drive that lives within each and every one of us.

Update (9/15): To clarify, the Vermont Software Developers' Alliance (vtSDA) is not a user group but instead, "create[s] collaborative and knowledge sharing opportunities that promote and grow Vermont software businesses." They are also a primary sponsor of the aforementioned Vermont 3.0 Innovation Jam.

Vermont Code Camp Heroes

See Vermont Code Camp Heroes at its new home on

By all accounts, the first ever Vermont Code Camp was a big success! There were 85 attendees, 19 sessions, and a whole track of non-.NET topics (not that there's anything wrong with .NET!). A HUGE thank you to Rob Hale, Julie Lerman and everyone else who organized, volunteered and presented. Also, a big thank you to the sponsors and donors: MyWebGrocer, Green Mountain Coffee, Telerik, O'Reilly Media, TechSmith, Microsoft and, of course, the University of Vermont School of Business Administration for hosting the event.

Plans are afoot for the next iteration of Vermont Code Camp so stay tuned!

Saturday, September 12, 2009

Resource-Oriented Web Services

See Resource-Oriented Web Services at its new home on

Below are the slides from my presentation on Resource-Oriented Web Services at the September 12th, 2009 Vermont Code Camp:

Thursday, September 10, 2009

Vermont Code Camp

See Vermont Code Camp at its new home on

This Saturday (Sept 12) from 9am-6pm will be the first ever Vermont Code Camp and it will be here in Burlington, Vermont at Kalkin Hall on the University of Vermont campus. While code camps are typically .NET focused, this one will cover a broad range of topics including .NET, PHP, Ruby and Python (full list of sessions). Some of the sessions include:

Hope to see you there!

Wednesday, August 19, 2009

Unit Tests Are Not About Testing

See Unit Tests Are Not About Testing at its new home on

I had the suspicion for a while but it didn't become clear to me until recently that unit testing really is not about testing. Sure, you are writing tests and there is certainly value in having "tests." However, the real value of unit testing becomes evident when you stop thinking of it in terms of testing. If it's not about testing then what is it about? Unit testing is really about defining behavior. Enter Behavior Driven Development (BDD):

It is not too surprising that it takes apprentice TDD [test-driven development] practitioners a while to realize that TDD is not about testing when all of the nomenclature surrounding it is described in terms of testing.

The aim of Behaviour Driven Development (BDD) is to address this shortcoming. By using terminology focused on the behavioural aspects of the system rather than testing, BDD attempts to help direct developers towards a focus on the real value to be found in TDD at its most successful.

If you're using PHPUnit then check out the Behaviour-Driven Development chapter for more details on how you can use this approach.

Monday, August 17, 2009

Models of Software Acceptance

See Models of Software Acceptance at its new home on

A little while ago I read Richard P. Gabriel's talk on Models of Software Acceptance [PDF]. I couldn't find a date on this talk but I think it's rather old, at least in terms of technology. However, there is very little in there that seems dated and much of it is very relevant today. From the introduction:

Building business success on technology is not easy—myths abound based on common sense, tales told by those who have won, analogies to things like evolution, and appeals to inventiveness and innovation. When we look closely at how technology is accepted and how success is built on it, the picture is quite different, and the process of acceptance is both lengthy and unpredictable. In this talk we’ll look at the myths and the realities, we’ll look at many specific examples, and we’ll conjecture a set of principles that might work.

Those of us who use and build technology every day often don't give much thought to technology acceptance. We're always trying out the newest and latest technology and are frustrated that others aren't keeping up with our efforts to bring technology forward. We're often surprised by what technology does and does not get accepted by the mainstream. We wait impatiently for the rest of the world to catch up with us. A common meme on the popular technology news website Slashdot is, "Where's my flying car?" Most people don't want a flying car, at least not yet.

Many of the interesting innovation opportunities are in technology acceptance. Sure, Google has some of the most advanced technology around but how have they lost out to Facebook over Orkut and to Twitter over Jaiku? Both Orkut and Jaiku are owned by Google but Google's likely superior technology platform does not necessarily equate to superior user acceptance.

The information in Gabriel's talk is great news for startups and entrepreneurs. Focus on technology that is several years old, keep your design simple, and find a niche opportunity where a larger competitor can't beat you at gambler’s ruin. Read the full talk [PDF] for all the details.

Thursday, August 6, 2009

Social Coding

See Social Coding at its new home on

My first real introduction to Git and GitHub was at last year's ZendCon. I've been using Subversion, a centralized revision control tool, for a few years now and it has changed the way I work. For example, I think in terms of changesets or "commits" that fix a defect, make an enhancement or complete a task in my codebase. It's a workflow that has served me well.

I'd heard about distributed revision control tools before last year's ZendCon. I thought it was a neat idea but didn't really get what the advantage was over a centralized tool like Subversion. The folks from GitHub had a vendor booth so I thought I'd ask them why Git was better than Subversion. I forget exactly what they said (probably something about how branching and merging is so much easier in Git) but whatever it was it definitely made me consider trying Git.

The GitHub folks were wearing t-shirts that said, "fork you" and explained that on GitHub they encourage projects to fork. Typically in free/open source projects forking is considered a bad thing. It usually signifies some breakdown in the community when one project forks from another. However, with Git and GitHub it's really easy to "clone" a project's repository, hack away at some changes, and then "push" (or have "pulled") your changes back to the repository you originally cloned. Git makes branching, cloning, pushing/pulling, and merging very easy and GitHub provides a place to host your repositories making this interaction with other people's repositories very simple.

GitHub's tagline is "social coding." With distributed revision control each developer gets his or her own project repository. If your repository is public then anyone can come along and make a clone of it giving themselves their own copy of your project to work on. Assuming their clone is also public, you can track their changes and decide if you want to pull in work they've done. If you find yourself collaborating a lot with a particular person that you trust, you can give them the ability to push to your repository. With Git this actually scales to projects with lots of contributors. This may seem chaotic, pushing and pulling changes to and from decentralized repositories, but it's actually a great way to encourage ad hoc collaboration.

If you want to learn more about Git you can read the Git Community Book, Pragmatic Version Control Using Git or the Pro Git Book. One last thing: if you're currently a Subversion user then forget everything you know about how Subversion works. While a lot of the commands may be similar to Subversion and there's a way to integrate with Subversion (git-svn), Git is fundamentally very different than Subversion. If you try and equate the two you'll most likely end up confused!

Wednesday, July 29, 2009

Free/Open Source and Proprietary Software Symbiosis

See Free/Open Source and Proprietary Software Symbiosis at its new home on

Last week on The Browser I was talking (again) about free/open source software and open standards. Jonathan Butler (the host) asked what my thoughts were about my iPod touch which is proprietary hardware and software. Paraphrasing my answer, I said that Apple has created a killer product and a big part of this is their complete control over the platform. However, long-term innovation can only be sustained by free/open source software and open standards.

I was thinking about that question after the show when I remembered something: there's a ton of free/open source code in the iPhone and iPod touch. These devices run a version of OS X, parts of which come from the free/open source FreeBSD operating system. Safari, the device's web browser, uses the free/open source web browser engine WebKit. Contrary to popular belief, many free/open source software licenses allow you to make proprietary derivative works. Apple does contribute software back to the free/open source community even though they are not always legally required to.

My point is not to praise Apple's contributions. Likely these contributions are beneficial to them. If they branch a free/open source project and their branch strays too far from the original, they will have a hard time incorporating new features from these projects. Linus Torvalds (credited with developing the Linux kernel) recently commented on Microsoft's contribution of code to the Linux kernel:

I agree that it's driven by selfish reasons, but that's how all open source code gets written! We all "scratch our own itches". It's why I started Linux, it's why I started git, and it's why I am still involved. It's the reason for everybody to end up in open source, to some degree.

Apple and other proprietary software companies (maybe even Microsoft) are starting to demonstrate an interesting symbioses with free/open source software. While I do think that free/open source software is better for "consumers" and beneficial to society in general I don't think any of that is a necessary argument in support of free/open source software. I think that it is an approach that will ultimately create more value and be better at sustaining innovation than proprietary software. Smart software companies are starting to recognize this. Apple has reduced their upfront and ongoing research and development costs by tapping into free/open source software, even if the products they deliver to customers are proprietary. They also seem to understand the value of releasing some of their own software and modifications under free/open source licenses: they will get back more than they put in and the reward is greater than the risk.

Domain-Driven Design

See Domain-Driven Design at its new home on

I am currently reading Eric Evans' Domain-Driven Design book. Having read most of the book I can say that his presentations on Putting the Model to Work and Strategic Design are an amazingly concise overview of the book's content (note that InfoQ provides slides below the videos). If you've been interested in reading the book but just haven't had time yet then I'd recommend watching these two presentations.

I have a lot of experience building web applications that separate business logic from presentation and have been using Zend Framework's model–view–controller (MVC) components for over two years now. This has certainly helped make web applications I work on more maintainable. However, creating effective models (the "M" in "MVC") has always been difficult (this has nothing to do with Zend Framework and has everything to do with the difficulty of modeling in general). The Zend Framework team has been relatively quiet on models since modeling tends to be specific to your application's domain (although Matthew Weier O'Phinney recently gave a great webcast and presentation on modeling in Zend Framework).

The Domain-Driven Design book has helped make a lot of things "click" for me. It drives home the point that modeling is a domain-specific task and that the complexity is usually in the domain, not the technical aspects of your project. If you think the complexity is in the technology then you should question your choice of tools (in my opinion) but in this case perhaps domain-driven design isn't right for you. The book provides many patterns that help keep the focus on the domain. Arguably the most important of these patterns is the Ubiquitous Language which is "a language structured around the domain model and used by all team members to connect all the activities of the team with the software." Other important patterns include Entities, Value Objects, Services, Repositories and Factories.

If effective modeling has been something that you've struggled with then I'd urge you to check out Eric Evans' presentations and then read his Domain-Driven Design book.

Thursday, July 16, 2009

Free ZendCon Pass

See Free ZendCon Pass at its new home on

The Burlington, VT PHP Users Group has won a free pass to ZendCon '09 along with Austin PHP Meetup, the Chicago PHP User Group, PHPBenelux, and PHPWomen. Congratulations to my fellow PHP users group members! Now we need to pick a lucky member to get the free ZendCon pass. Are you a local PHP developer that meets the criteria? If so then send in your application by 8/1/2009.

Monday, July 13, 2009

New Media Office Hours (East)

See New Media Office Hours (East) at its new home on

If you're a "new media" (social media, digital video/photography/editing, podcasting, etc.) enthusiast (or just curious) in Burlington, Vermont then you should check out the New Media Office Hours this evening. From the VCAM blog:

So we’d like to officially announce that the first New Media Office Hours (east-coast) gathering will be this coming Monday evening at The Sapa coffeehouse in downtown Burlington at 5:00 P.M. A small group of new-media pros and arm-chair enthusiasts will be on hand to chat with anyone who stops by about whatever is on their mind (related to new-media, that is).

I'm not sure yet if I'll be able to make but it sounds like a fun event!

Thursday, July 9, 2009

HTML 5, HTTP Methods & REST

See HTML 5, HTTP Methods & REST at its new home on

Lots of very exciting things are happening right now for us web standards aficionados. The big news is the buzz around HTML 5 and its growing support in modern web browsers (modern meaning not Internet Explorer). The current state of web standards makes it difficult, but certainly not impossible, to use the web as a true application platform. HTML 5 promises to change this (maybe not fully until 2022 — but we're patient). Many articles have been written about HTML 5 but there's one tiny, but very important, feature I'd like to focus on here: support for the HTTP PUT and DELETE methods in forms. First, a little bit about REST…

I've talked about REST here before but REST is useful for more than just building web services. REST is an abbreviation for representational state transfer and is an architectural style for building software. The web itself is built using REST so it is a proven and scalable architecture. Unfortunately many web developers ignore REST to their detriment. Conforming to REST principles can help with search engine optimization (SEO) as well as make your web applications more usable (through predictability of actions) and scalable (the web itself has scaled to massive proportions).

Using a RESTful approach, every URL is a representation of a resource (a noun). These resources can then be retrieved and manipulated (have their state changed) using a standard set of verbs. These verbs are actually HTTP methods. There are a whole bunch of verbs/HTTP methods but only worry about four of them (at least for now): GET, POST, PUT, and DELETE. Here is an example of how some nouns and verbs can be used to together, borrowing from the Atom Publishing Protocol (APP):

HTTP methodURIresult
GETs a collection of people
POSTs a new person to the collection (using data in the POST request)
GETs bradley-holt
PUTs an updated version of bradley-holt (using data in the PUT request)
DELETEs bradley-holt

The problem was that up until now there was no way to specify a form method other than GET or POST. This meant that everything had to be tunneled through POST (or had to be done using JavaScript) which, while not technically incorrect, was incovenient and did not allow web developers to fully express the intent of user actions. HTML 5 specifies that forms can now have the methods of PUT and DELETE as well. This simple addition is one small way in which HTML 5 will allow the web to become more of a fully-feature application platform.

For you Zend Framework developers: I just learned today that Zend Framework 1.9 will include a new REST router which will help web developers adhere to RESTful principles. Please use it and also use the new PUT and DELETE methods in HTML 5 forms as browser support catches on.

Tuesday, July 7, 2009


See Jelly! at its new home on

Are you an entrepreneur, freelancer, or just someone looking to work out of the office for an afternoon? Then sign up for the upcoming Jelly that we'll be hosting at our Burlington, Vermont studio! The date is Friday, July 31st from 1pm to 5pm. A Jelly is a casual coworking event. For more info on local coworking plans check out the BHive LinkedIn group.

We'll provide the Wi-Fi and coffee (please bring a travel mug so we don't run out of mugs), you bring your laptop (or whatever you need to work). Our studio is small so space is limited. Depending on the number of attendees it could get crowded, so please bring a friendly disposition. Be sure to sign up (it's free!) early to reserve your spot. If there's no remaining space by the time you read this, please contact me (you can simply leave a comment here if you prefer) or Jen Mincar and let us know that you're interested so that we can let you know if space opens up.

Monday, June 15, 2009

Tagnabit Usage

See Tagnabit Usage at its new home on

It's been two weeks since we launched tagnabit. I want to share some information about how people have been using tagnabit. Some of the most popular tags used so far include:

BTV is the airport code for Burlington, Vermont (where we are located). This tag is pretty heavily used on Twitter to represent our city, but it seems to have other meanings on the other social media sites.
A local event, the Burlington Social Media Breakfast took place a few weeks ago.
Next month in Portland, Oregon is the Alliance for Community Media's International Conference and Exhibition. The activity so far has all been on Twitter. If it's anything like acmne09 then I won't be surprised to see lots of photos, blog posts, videos, and bookmarks once the conference gets started.
php|tek 2009 was a PHP Conference that took place last month in Chicago, Illinois. While tagnabit actually launched after the conference was finished, it was an example tag that I used to explain the idea behind tagnabit to several people in the PHP community. There's lots of great content tagged with tek09. Tagnabit is built using PHP and Zend Framework in case you're wondering what the connection is.
Leadership in a Connected Age conference - also a local event.
The tag for the Celebrate Champlain Quadricentennial events taking place here this summer (sensing a local trend?). There will be lots of happenings so hopefully there is a good amount of participation in tagging content around the events. Vermont Public Radio is encourage people to tag content about Champlain 400 as well, so that should help.

On a more serious note, another tag worth mentioning (although I don't think anyone's used tagnabit for this yet) is the iranelection tag. There is a constant stream of tweets, photos, blog posts, videos, and bookmarks using this tag. Our thoughts are with the Iranian people.

Tell us how you've been using tagnabit. Do you plan on using it for an upcoming event? Are you mainly using it to follow tags or are you also posting content? We've got lots of ideas for improving tagnabit but would love to hear your thoughts! You can either comment here or use the tagnabit tag to give us feedback through Twitter, Flickr, Technorati, YouTube or Delicious.

Monday, June 1, 2009

Tagnabit Launched!

See Tagnabit Launched! at its new home on

Last night we announced the launch of tagnabit, a social media aggregator. It's "a service that aggregates tags from popular social media websites. It is useful for conferences or other events. Participants can use a shared tag across Twitter, Flickr, Technorati, YouTube and Delicious. Tagnabit then aggregates this content in one place." The idea originally started with Town Meeting Day Vermont and then was used for the Alliance for Community Media Northeast regional conference. People found it useful, so we decided to make a "generic" version that basically has the same functionality as these sites, but for any arbitrary tag. Bill Simmon has a few ideas on how tagnabit can be used.

The functionality behind tagnabit was built using Zend Framework (MVC components, Zend_Feed, Zend_Service_Flickr, and Zend_Cache). The client side is all semantic XHTML (with a few Microformats), CSS, and a few JavaScript enhancements (using jQuery). We've got plans for some new features - but we're curious to see how people use the site first. If you've got feedback, please send it our way via Twitter, Flickr, Technorati, YouTube or Delicious by tagging your content with tagnabit (#tagnabit on Twitter).

Tuesday, May 26, 2009

ACM-NE Conference

See ACM-NE Conference at its new home on

Last week the Alliance for Community Media Northeast Region (ACM-NE) had a conference here in Burlington, Vermont. Organizers of the conference encouraged participants to use a shared tag, acmne09, on sites such as Twitter, Flickr, blogs, YouTube, and Delicious. We created a website for the conference (similar to what we had done for Town Meeting Day) that aggregated content from these various social media websites. You can see the website at

I also had the pleasure of speaking on a social media panel and helping with a social media workshop. Colin Rhinesmith, who was on the panel with me and also helped with the workshop, has a good summary of the conference on his blog.

Tuesday, April 7, 2009

Open (local) Government

See Open (local) Government at its new home on

Last night I went to the Burlington, Vermont City Council meeting to listen to our newly re-elected mayor, Bob Kiss, give his State of the City speech and watch the City Council attempt to elect a new council president. I said "attempt" because, after 14 rounds of voting, they were still deadlocked 7-7 for opposing candidates. However, that's not what I want to talk about. In Mayor Bob Kiss' speech he made the following statement:

My administration worked closely with the Open Government Committee formed by resolution of the City Council. In response to committee recommendations, we’ve included more information about public meetings on the City web-site and the Planning Department added a new section about proposed and pending zoning amendments. During the campaign it was clear that people want to know more about the activities of each city department. Over the next year we’ll look closely at how to finance and build a more uniform, responsive and user-friendly City website that will keep you better informed about public meetings and how you can participate in the process of government.

I'm all for open government and the City of Burlington, Vermont could certainly use a better website. I'd like to give the city some advice on its priorities in building a better website. This blog post is my first round of advice, but I'd like to hear reactions from other web people in and around Burlington — or anyone else who has an interest in our city having a better website! This advice is based on the goals outlined by Mayor Bob Kiss: that the website is inline with the spirit of Open Government, is responsive, and is user-friendly.

First, the website must be accessible and use open standards. I put these two together because by using open standards the website can be accessible. Specifically, the website should use strictly semantic XHTML. This allows for its use in the widest range of user agents (browsers) by the widest range of user abilities (as opposed to disabilities). Its presentation should be progressively enriched through CSS and its behavior should be progressively enhanced through unobtrusive JavaScript. Progressive enhancement means that the website is useful, at its core, without any CSS or JavaScript. It becomes more useful through the use of CSS and then, perhaps, even more useful through the use of JavaScript. However, neither CSS nor JavaScript should be required to access the website's content.

Second, the website should be built using free (as in freedom, not cost) and open source software. It is our government's responsibility to use non-proprietary software wherever possible. When it comes to building websites and web applications, there are no excuses for not using free and open source software. The capabilities of the open web platforms available equal, or exceed, the capabilities of proprietary web platforms. Any custom software developed for the city's website must be licensed to the city under a free and open source license (this does not mean that the city shouldn't pay for this software to be developed).

Third, the city should embrace the concept of open linked data. This means that the city should publish data, not just content. This data should be both human and machine readable. This allows third parties to access raw data and repurpose this data in new and interesting ways. To this end, data and content should be either put in the public domain (which is probably the case already) or use a Creative Commons license. Where possible, the city's website should consume open data published by others rather than duplicating effort. There are several technical approaches to publishing and consuming open linked data including Microformats and the Semantic Web.

I hope these recommendations are useful. Once I've heard some feedback from other web people, I'll forward these recommendations to my city councilors and the mayor. Hopefully they'll find it helpful in improving the city's website!

Thursday, March 26, 2009

PHP Users Group Meeting Tonight

See PHP Users Group Meeting Tonight at its new home on

The presenter at tonight's (3/26/2009) Burlington, VT PHP Users Group meeting will be Paul Reinheimer of php|architect. His presentation, "Easy Problems are the Hard Problems," will take an in-depth look at the easy/hard parts of web applications. There will be pizza for your consumption (provided by Found Line). If you're a web developer in the area then I hope to see you there! If you know any web developers who may be interested, please let them know about tonight's meeting.

Monday, March 16, 2009

The Web Is Not A Visual Medium

See The Web Is Not A Visual Medium at its new home on

A claim you may have heard me make before is that the web is not a visual medium. Some of you know exactly what I mean and some of you probably think I'm nuts. For those of you who think I'm crazy, let me elaborate. You, like most people, probably experience the web visually. However, this visual aspect is only one facet of the web. Underneath the visual aspect you will find that the web is a structured, or semantic, medium. This means that people (or even machines) of varying capabilities (as opposed to disabilities), using all sorts of user agents (a fancy way of saying web browsers) can experience this same web non-visually. If built correctly, the same web page should be accessible to you visually as well as to visually impaired people, search engine robots, people that want to use text only web browsers, people using older versions of web browsers (backward compatibility), people using mobile devices, and user agents that weren't even invented yet when the web page was first built (forward compatibility).

There's one catch. There are many web sites and web applications built on the incorrect assumption that the web is a visual medium. The web designers and web developers who build these web sites and web applications break the web. In order to not break the web, web designers and web developers need to use open standards starting with plain old semantic (X)HTML. This semantic (X)HTML can then be progressively enriched/enhanced using CSS (for presentation) and JavaScript (for behavior). This approach works well with the concept of One Web which "means making, as far as is reasonable, the same information and services available to users irrespective of the device they are using."

Craig Cook has a good article about How to Grok Web Standards in which he addresses many of these ideas and more. If you still think I'm crazy, hopefully it's not because you think I'm wrong about the web not being a visual medium. If you don't think I'm crazy then maybe in another blog post I'll talk about why I think that content management systems (CMSs) in general, and WYSIWYG editors specifically, break the web.

Sunday, March 15, 2009

The Social Graph

See The Social Graph at its new home on

In my last post about the semantic web I mentioned the XFN project which allows individuals to define their relationships to others simply using semantically marked up hyperlinks. I also said that a global graph can be made of all of these relationships making the "walled gardens" of existing social networking sites obsolete. Before I continue, I should probably mention that the word "graph" in this context refers to graph theory in computer science, not a chart or diagram (although these graphs could be visualized). At risk of over-simplifying: graph theory talks about how individual "nodes" connect to one another and how data can be extracted from looking at these connections.

Google has an interesting project called the Social Graph API that lets developers "utilize public connections their users have already created in other web services. It makes information about public connections between people easily available and useful." It uses public XFN as well as FOAF data to accomplish this. FOAF is, interestingly enough, an example of something designed around the W3C's Semantic Web specification. Here's a video that explains a bit about how Google's Social Graph API works:

The power of this open data is another example of why facebook won’t last as a walled garden. I don't expect existing social networking sites to simply disappear. However, open standards like XFN and FOAF will help level the playing field amongst social networks by allowing even small social networks to benefit from the network effect. Having lots of social networks trying out different things can only be good for innovation in the long run.

Wednesday, March 4, 2009

TMD VT Social Media Recap

See TMD VT Social Media Recap at its new home on

Wow, thank you to everyone who participated and helped make Town Meeting Day Vermont '09 a social media success! In the spirit of openness, I wanted to share some things that Jason and I learned from the experiment. First of all, some disclaimers. It's important to note that we were just one small part of something that was bigger than us. Our goal was to encourage people to use tagging on Twitter, Flickr, blog posts indexed by Technorati, YouTube, and Delicious so that others could easily find Town Meeting Day related content. It didn't matter to us if people used directly, what mattered was that people used the relevant tags when publishing or when searching. In fact, I doubt that had much of an effect on adoption of the #tmdvt hashtag on Twitter, which was the site that, by far, had the most tagging activity.

Before you continue reading the rest of this blog post, you should read my first post on Town Meeting Day Vermont, Bill Simmon's Town Meeting Day & social media, Cathy Resmer's Town Meeting Day 2009, and Ryan Freebern's Townsourcing; or, the promise of localized community media for some background and other perspectives… OK, back? Great!

A big thing we noticed was that since most users found out about through Twitter, they expected the same level of immediacy as Twitter from the other websites we aggregated. Flickr, Technorati, and YouTube all had delays that were longer than what users expected. Delicious bookmarks didn't show up immediately but were still relatively quick. We couldn't quite figure out why some of the content from Flickr was delayed. It seemed to be based on a variety of factors, such as the account's submission frequency (possibly as an anti-spam measure).

As I mentioned earlier, the heaviest tag usage was on Twitter with over 360 tweets from countless people using the #tmdvt hashtag. Next up was Flickr with over 150 uploads tagged with tmdvt09 from a handful of users. Only 6 blog posts used the tmdvt09 tag and were picked up by Technorati: 1 was my original post about the tag, 1 was from Vermont Public Radio's blog, and 4 were from The Seven Days Staff Blog. I think there were more blog posts that used the tmdvt09 tag, but for whatever reason these didn't get indexed. Only 2 YouTube videos were uploaded and tagged with tmdvt09. There were 21 bookmarks tagged with tmdvt09 on Delicious; however, none were tagged enough to be considered "popular" by Delicious.

CCTV Channel 17 pointed out that they were posting exit interviews to and that there was no option for that on It appears that doesn't support tagging or categorized feeds so we had no way of syndicating content specific to Town Meeting Day from or CCTV's channel. However, a representative from was paying attention and was quick to respond to my tweets, which I was very impressed by.

I was also impressed with local news outlets bridging the gap between traditional and social media during Town Meeting Day. Seven Days, Burlington Free Press, Vermont Public Radio, Vermont Community Access Media, and CCTV Channel 17 all had a presence on Twitter, and some had a presence in other social media as well. I had conversations with representatives from several of these news outlets and there was a general interest in further engagement in

The original sketch for included tabs for traditional media outlets in addition to the tabs for various social media websites. I don't think social media will replace traditional media. Traditional media provides the resources (i.e. time and money) to do real reporting and the authority that comes with that legwork. I do, however, believe that traditional media and social media can learn a lot from each other, which is part of why we wanted to put them at the same level on

In order to include traditional media, we needed Atom or RSS feeds specific to Town Meeting Day content. In my research, and in talking with several people from the media, I couldn't find anyone who was currently doing this. The Seven Days Staff Blog was the closest with their Town Meeting Day 2009 category. However, they didn't have an Atom or RSS feed set up for this category, so it would have been very difficult for me to try to aggregate that content. My challenge to the news media is to provide more fine grained feeds so that your readers can decide exactly what type of stories they're interested in reading. It will likely increase the number of people who subscribe to your Atom or RSS feeds and allow people like me to make mashups using your content.

I think there is a lot to be learned from this experiment and I'd love to hear what insight others may have about this. Let's continue the discussion online. Also, it might be interesting to have an offline discussion sharing perspectives from this year's Town Meeting Day and ideas for similar events in the future. If you're interested, let me know!

Saturday, February 28, 2009

Town Meeting Day Vermont

See Town Meeting Day Vermont at its new home on

The first Tuesday of March is Town Meeting Day here in Vermont. Citizens throughout Vermont get together and elect local officers and vote on budgets. While it doesn't get as much attention as some of the bigger elections, it's still an important day in local politics. This year's Town Meeting Day will be on March 3rd, 2009.

We've put together a simple website,, to aggregate content from social media sites (along with traditional media, where available) around Town Meeting Day Vermont '09. If you use the appropriate tags in your tweets, Flickr uploads, blog (if indexed by Technorati), YouTube uploads, and bookmarks on Delicious, then your content will show up on the website. We're also looking for Atom or RSS feeds specific to Town Meeting Day Vermont '09 from traditional media outlets. If you know of any, or have other suggestions, please email Please be gentle, we put this together in one day's time!

Tuesday, February 24, 2009

SilverStripe CMS Overview

See SilverStripe CMS Overview at its new home on

Aaron Carlino will giving an overview of the SilverStripe CMS / framework at this week's Burlington, VT PHP Users Group meeting (details). The meeting will be held Thursday February 26th, 2009 from 6:00 pm - 8:00 pm at Bluehouse Group in Richmond. As always, the meeting is open to the public (but be sure to RSVP so we can get a headcount).

For those new to the group, the local PHP users group has been around for a bit over a year now (our first meeting was in December of 2007). A typical meeting has between 10 and 15 people in attendance and there's usually a main presentation along with some general discussion. The mailing list has about 100 subscribers with moderate traffic (several posts a month) and some of us hang out in the #btvphpug channel on freenode in case you're interested in conversation with local PHP developers between meetings.

Sunday, February 22, 2009

Getting Semantic

See Getting Semantic at its new home on

In a previous post, What You Need to Know About the Semantic Web, I shared my letter to Harvard Business Review's editor about their recent semantic web article. I realized after I made that post that I should probably have addressed the difference between the Semantic Web (a proper noun) and the semantic web (lower-case). The Semantic Web is a formal extension to the World Wide Web that attempts to add semantic data to the web. There are all sorts of terms and acronyms associated with the Semantic Web such as the Resource Description Framework (RDF) and the Web Ontology Language (OWL).

The semantic web (lower-case now) is a more loosely defined term. Generally it refers to a variety of efforts to make the existing web more semantic. The Semantic Web is certainly one part of the semantic web. However, there many other semantic web efforts other than just the Semantic Web project. These efforts often overlap, intertwine, and compete.

My personal favorite semantic web related project is Microformats. Microformats start with making existing web content semantically structured, instead of structured for presentation. See my previous entry on Plain Old Semantic HTML (POSH) for more information on this concept. Microformats then use HTML markup (i.e. elements, classes, ids) to define data structures based on existing formats. For example, the hCard Microformat "is a simple, open, distributed format for representing people, companies, organizations, and places, using a 1:1 representation of vCard (RFC2426) properties and values in semantic HTML or XHTML." There's at least one browser extension that can extract hCard data from web pages. I'd be surprised if search engines haven't already started using this semantic data to better index content.

Another very interesting Microformats related project is XFN (XHTML Friends Network). In Jonathan Butler's recent blog post on CRM, VRM, and the tip of an iceberg he highlighted Tom Ilube's statement that "the semantic web would cut out the intermediary and restore control of personal information to the individuals who are its true owners.” XFN is a great example of this in action. It allows individuals to define their relationships simply using hyperlinks. Taken to an extreme, a global graph can be made of all of these relationships making the "walled gardens" of existing social networking sites obsolete.

Thursday, February 19, 2009

Browser Correction

See Browser Correction at its new home on

On last week's The Browser interview (audio) with Jason Pelletier (jason_pelletier) and me, Jonathan Butler (jonathanpb) asked me for an example of a proprietary framework and I used Adobe Flex as an example. It turns out that the Flex SDK is actually not a proprietary framework and is, in fact, open source. I should have known this since Adobe Flex was the topic of a whole PHP users group meeting awhile back. John Boone (jbgoode12) pointed this out to me in an interesting conversation he and I (BradleyHolt) had on Twitter:

jbgoode12: @jonathanpb @BradleyHolt @jason_pelletier listening to ep 2 of The Browser - also very interesting! One correction: the Flex SDK is open src (view tweet)
jbgoode12: @jason_pelletier @BradleyHolt @jonathanpb It's true that the Flex IDE costs $$$ but you can create Flash w/open src: (view tweet)
BradleyHolt: @jbgoode12 Good point! I guess I was thinking about Adobe Flex Builder. Didn't meant to pick on Adobe, just one example of proprietary SW. (view tweet)
BradleyHolt: @jbgoode12 Oh, and thanks for listening to the show, glad you're finding it interesting! (view tweet)
jbgoode12: @BradleyHolt @jason_pelletier It's like how Micro$oft does it : they have open SDKs but the IDEs are $. FB is based on Eclipse, tho (view tweet)
BradleyHolt: @jbgoode12 Yeah - technically open source but to do anything practical takes lots of work or spending money to make it easier. (view tweet)
BradleyHolt: @jbgoode12 But you're right, the framework itself (Flex SDK) certainly appears to be open source. I stand corrected :-) (view tweet)
jbgoode12: @BradleyHolt It'll be interesting to see if an ecosystem grows around the Flex SDK, like maybe the relationship between .NET and Mono... (view tweet)
BradleyHolt: @jbgoode12 That will be interesting to watch. The Flash Player is still proprietary (although there are some alts) which could be a problem. (view tweet)
jbgoode12: @BradleyHolt right. and the flash player being proprietary kinda makes the rest moot... plus you can do a lot with frameworks like jquery. (view tweet)
BradleyHolt: @jbgoode12 I love jQuery! Would be cool (but unlikely) if Adobe truly opened up everything Flash related as open source and open standards. (view tweet)

I appreciate John's correction and love having conversations like the one above. I hope The Browser inspires many more conversations!

Wednesday, February 18, 2009

David Gibson on The Browser

See David Gibson on The Browser at its new home on

Don't forget to tune into Jonathan Butler's new radio show, The Browser, tonight (Wed Feb 18th) at 6:00pm on Burlington, Vermont's WOMM-LP 105.9 FM The Radiator. He'll be talking with David Gibson of Propeller Media Works. If you're not in Burlington you can always listen online or catch the podcast after the show. The podcast of last week's show that Jason and I were on is available as well as the first episode with Edward Shepard from Small Dog Electronics.

Tuesday, February 10, 2009

Found Line on The Browser

See Found Line on The Browser at its new home on

Tomorrow night (Wednesday February 11th, 2009) Jason and I will be on Jonathan Butler's new radio show, The Browser. We'll be talking about Found Line, our work, free/open source software, and open standards. We'll also talk a little bit about the Burlington, VT PHP Users Group. You can listen to the show at 6:00pm on Burlington, Vermont's local noncommercial low power FM radio station, WOMM-LP 105.9 FM The Radiator. If you're not in listening range you can catch the show online or get the podcast later.