Tuesday, October 28, 2008

GTalk Profile on ReadWriteWeb and NYTimes.com

See GTalk Profile on ReadWriteWeb and NYTimes.com at its new home on bradley-holt.com.

GTalk Profile is a website we originally launched three years ago right after Google Talk itself was launched. The website was recently featured on ReadWriteWeb and syndicated to the NYTimes.com technology section. From the article:

Google Talk is probably one of the few messaging clients that doesn't have a way for you to interact with other Google Talk users unless you know their email address. GTalk Profile provides the perfect solution to this problem. Using Google Maps, GTalk Profile allows users to plot where they are on a map and also find other users around the world. Simply type your city and state into the search box and GTalk Profile will provide you with a list of users near you along with a description of each user. Clicking on a name takes you to a profile page where you'll find a longer description, photos, interests, location, and the option to request a user's Google Talk information.
It's unfortunate that we haven't been able to spend any real time working on the website for quite a while and that it's not an example of our best work. However, we're thrilled to have the attention and very glad that people like the service.

Monday, October 27, 2008

Vermont 3.0 Thoughts

See Vermont 3.0 Thoughts at its new home on bradley-holt.com.

On Saturday Jason and I attended Vermont 3.0. We were interested in seeing what it was all about and see if it's something we'd exhibit at in the future if we're looking to hire. We walked the floor and had a chance to to talk with several people we know.

First of all, I think it's great that there is a concerted effort to promote Vermont as a technology center. However, the name "Vermont 3.0" is an immediate turn-off to me. It's an obvious reference to "Web 2.0" — a loaded term that is often misused. Most so-called "Web 2.0" practitioners haven't even gotten Web 1.0 right yet. Sure, we've got technology here in Vermont but I'm not sure how anyone could imply that Vermont has somehow moved on from "Web 2.0" to "Web 3.0". Or maybe I'm wrong and the name is not a reference to "Web 2.0" at all.

Speaking of "Web 2.0" — I didn't see a folksonomy section on the Vermont 3.0 website. A handful of people used the #vt3 hashtag on Twitter but there were several more people talking about it that simply used "Vermont 3.0" in their tweets. Some guidance from the event organizers on suggested tags would have helped to make this content easier to find and encouraged online conversation amongst participants. The event organizers should have suggested tags to use on Twitter, Flickr, Technorati, and any other social media site that a conversation may occur at. I didn't have the Eee PC with me so I'm not sure if wireless internet was available. In my opinion, free wireless internet is a prerequisite for a tech conference.

We dropped in on two of the panel discussions. First the "So you wanna build websites?" panel and then the "So you wanna develop software?" panel. The discussions were definitely geared towards people interested in switching careers (or choosing what career to go into). We've generally been disappointed about the topics on which schools are focusing. It seems that schools are more interested in teaching what's "hot" and will boost enrollment numbers rather than teaching a fundamental base that will serve students throughout their careers. I was pleased to hear Mike Battig, a computer science professor at St. Michael’s College, talk about how a good computer science education will teach students things that will be relevant regardless of changing technologies.

In conclusion, I'm not yet sure if we'd exhibit at Vermont 3.0. I think a career fair might be too narrow a focus. I think it would be much more interesting to have Vermont organizations showing how they are using technology to create value in the world. This would give people a chance to gain much more insight into these organizations and the true state of technology in Vermont.

Friday, October 24, 2008

Vermont 3.0

See Vermont 3.0 at its new home on bradley-holt.com.

Jason and I (from Found Line) will probably be stopping by Vermont 3.0 on Saturday. We're not exhibiting but I'm curious to see what it's all about. If you're planning on being there then let me know. You can either comment on this blog entry or, if you're own Twitter, send an @ reply (I see all replies even if I'm not following you) to BradleyHolt. If you already have my contact info then feel free to send me an email or instant message instead. See you there!

PHP In Google App Engine?

See PHP In Google App Engine? at its new home on bradley-holt.com.

According to the newly posted App Engine Product Roadmap, there are plans to add "support for a new runtime language." In an email to the Google Apps Small Business Solution Providers mailing list Google had this to say:

"Of particular interest, may be payment for additional resource usage and a new runtime language - I can't say what this language is, but you can probably guess if you've been following along with community demand."

Looking at the issue list, support for Java is the most requested item followed by support for PHP, Ruby, then Perl. If you haven't already, please go star the "support for PHP" issue (please don't comment on it as it will email everyone who has already starred it - just star it!). Of course, I'm hoping Zend Framework is the framework of choice for all the App Engine specific APIs as well.

Thursday, October 23, 2008

Zend_Container Thoughts

See Zend_Container Thoughts at its new home on bradley-holt.com.

It seems that there's some interest in my Zend_Container proposal including possibly using it as part of Zend_Application. I still need to move Zend_Container from "New" to "Ready for Review" but first I need to add some more details to the proposal. I want to talk about some thoughts on Zend_Container that may be helpful in understanding how it could be useful. For those who aren't familiar with it, Zend_Container is a proposal for a simple dependency injection container in Zend Framework.

I have been asked to show some more use cases for Zend_Container. I think the main thing that people want to see (correct me if I'm wrong) is how Zend_Container would be used as part of a larger web application. In order for Zend_Container to work, it needs to "contain" all of the components that it will be responsible for managing. This means that every component that will either a) be a dependency for other components or b) have a dependency on other components (or both) needs to get added to the container.

In the proposal I show an example of the getComponent method as a way to get instances out of the container. However, use of this method is discouraged. You should instead use setter injection (I'm not sure yet if the proposal will support constructor injection) and let the container provide the instance for you. Dependency injection is sometimes referred to as "inversion of control (IoC)" because it requires you to invert your thinking. In your individual components you are giving control over to the container and letting it provide your dependencies for you rather than reaching out and fulfilling these dependencies yourself (as is done currently with Zend_Registry). This is why every component needs to be added to the container — how else would the container know what to inject or even be able to perform this injection?

This inevitably leads to the question, how do we bootstrap all of this? In other words, how do we get all of these components into the container in the first place so all of this "magic" can happen? In the proposal, I showed examples of manually adding components using the addComponent method. This is a great way to add components and there is nothing wrong with doing this. However, this could start to become impractical if you have a lot of components to add to the container. Another option is to use configuration to add all of the components. I don't have an example of this yet in the proposal, but the basic idea is to list a bunch of components in your configuration and let Zend_Container add all of the components based on this information. This is more practical when you have a lot of components to add to the container.

Another option, which is not yet in the proposal, is to use a combination of directory/file scanning and reflection to add components. This could be hugely beneficial to modular applications - simply drop in your module directory and Zend_Container could automatically load components from your module. This is the sort of thing that I think the people working on Zend_Application thought might be helpful (let me know if I'm way off-base here). Of course, this opens up a host of potential efficiency issues that would need to be thought through (i.e. components should probably be "lazily" loaded and implementation/interface mappings maybe should be cached).

While I haven't yet provided any more use cases, I hope this information is helpful in understanding the role Zend_Container could play within Zend Framework. As always, I'm open to feedback even though the proposal isn't officially "Ready for Review." So far I've mainly focused on the "pure" dependency injection parts of the proposal so any other ideas on how Zend_Container could be used as part of a larger application would be great.

Wednesday, October 22, 2008

BTV PHP UG Meeting

See BTV PHP UG Meeting at its new home on bradley-holt.com.

The Burlington, VT PHP Users Group will be meeting tomorrow night at Bluehouse Group in Richmond. David Walsh of Standards Technology Group (STG) will be giving a demo of STG's web application. STG will also be providing massive amounts of pizza. Matthew Weier O'Phinney, Software Architect for Zend Framework, will be giving a presentation on using Dojo, a JavaScript framework, within Zend Framework. More details are available here.

Monday, October 20, 2008

Found Line Software License

See Found Line Software License at its new home on bradley-holt.com.

We recently made the strategic decision to license all software developed by Found Line under the New BSD License. This is a free/open source software license meaning that our clients will have the four freedoms as outlined by the Free Software Foundation. Basically, this means that clients are free "to run, copy, distribute, study, change and improve the software" that we develop for them. The New BSD License also gives our clients another, more controversial, "freedom": the "freedom" to turn the free/open source software we have licensed to them into proprietary, non-free/non-open source software. This is a "freedom" we hope is not exercised but is something we understand may be important to our clients.

We made this decision for several reasons. We are strong believers in the free/open source software movement. To us, this means not just using free/open source software but also contributing to free/open source software. While this software is currently only licensed to individual clients, we plan on licensing specific components publicly in the future (and, of course, individual clients currently have the right to do this as well). For now, this decision makes it really easy for us to publicly release specific components to the community as it makes sense.

Many of our web applications are built using existing libraries, Zend Framework being the most common. Zend Framework is also licensed under the New BSD License so this provides consistent licensing for our clients. Also, I would like our business to contribute back to Zend Framework and this license parity helps make this simpler.

This licensing allows us to give our clients the most freedom while still protecting our right to reuse individual components (which helps keep costs down). We are in the business of creating value for our clients and are not interested in locking them into proprietary software contracts. This licensing gives our clients many options such as switching to another vendor in the future or even bringing web development work in-house. If clients are going to pay us to develop, maintain, or extend their web applications we want this to be because we're the best team for the job — not because they don't have a choice due to vendor lock-in.

VSA Arts of Vermont Website

See VSA Arts of Vermont Website at its new home on bradley-holt.com.

We recently launched the updated VSA Arts of Vermont website. Since VSA Arts of Vermont's mission is to make "the world of the arts accessible to Vermonters of all abilities" it was critical that their new website be accessible. This was a challenge we readily accepted as web accessibility is something we take very seriously.

Web accessibility is fairly straightforward if you take a content-first approach and focus on web standards. The real challenge is doing this and making a great looking website that doesn't have to compromise on functionality. We accomplished this by using semantic XHTML that contains enough structure to stand on its own without any visual representation. Then, this content was stylized using CSS. Finally, some behavior was added using unobtrusive JavaScript (using jQuery). This concept is called progressive enhancement. The final result is a great looking and very functional website that is accessible to all users.

Monday, October 13, 2008

Proprietary Skype

See Proprietary Skype at its new home on bradley-holt.com.

Peter Saint-Andre (Executive Director of the XMPP Standards Foundation) has pointed out the Free Software Foundation's recent addition of a "Free software replacement for Skype" to its list of High Priority Free Software Projects:
Skype is a proprietary Voice-over-IP program that uses a proprietary protocol. Skype is seducing free software users into using proprietary software, often two users at a time. We do not want to encourage the creation of a Skype compatible client, but instead, we want to encourage you to create, contribute to, or promote the use of free software alternatives to Skype, such as Ekiga, and to encourage to adoption and use of free VoIP, video, and chat protocols such as SIP and XMPP/Jingle.
I have long been annoyed by Skype's closed platform and have refused to use it despite its popularity. Skype users can only communicate with other Skype users (or PSTN users through SkypeOut) because they do not use an open standard and do not federate with other VoIP providers. This destroys much of the value proposition of using VoIP and ultimately reduces VoIP (in people's minds) to simply "free/cheap phone calls." In other words, Skype is helping to hold back an entire industry from innovating.

At Found Line, we use two open VoIP standards: XMPP and SIP. Google Talk provides our XMPP service (through Google Apps) and is used mainly for internal communications. However, Google Talk is connected to the public XMPP network so, just like with email, we can communicate with anyone else using the same standards. Junction Networks provides us with very reliable SIP hosting and allows us to communicate (at no cost) with anyone on any public SIP network. They also provide us with a PSTN gateway (so that we can make "normal" phone calls) and a hosted PBX (auto attendant, unlimited extensions, etc.) all at a very reasonable price.

Tuesday, October 7, 2008

ZendCon Summary

See ZendCon Summary at its new home on bradley-holt.com.

Rafael Dohms has posted a good summary of ZendCon '08. He touches on several topics including performance, testing and code analysis, PHP's integration with other technologies, Zend Framework, and some interesting things to look forward to in 2009 including Ibuildings' PHP Center of Expertise.

Monday, October 6, 2008

Orange Mountain/True Soap Website Launched

See Orange Mountain/True Soap Website Launched at its new home on bradley-holt.com.

We just launched the Orange Mountain/True Soap website. Jason and Dave did a great job on the design and Liz did a fabulous job getting all of the content organized! Although there's no real functionality at the moment, it's built using Zend Framework so that we can add features later. There's an article in the Burlington Free Press today about the company and product if you're interested.

Thursday, October 2, 2008

Don't Vote

See Don't Vote at its new home on bradley-holt.com.