In 1999, I decided to start coffeeblack, a very small company focused on building efficient, high-quality software and Web applications. As a consultant, I create:
- Relational databases and hierarchical data structures
- Object-oriented software models and implementations
- Web applications
- Standards-compliant web interfaces
You can find samples of my work here, including the award-winning Avenues Lesson Planner project I completed in the summer of 2004, and the first release of the Sermo social network for physicians in 2006. I have also published some free software libraries as examples of my coding work.
Probably the single most important reason for starting my own consultancy was the opportunity to produce work at a higher level of quality than most large-volume shops. When working on a project, my main goals for the finished product are:
- Ease of Use
- Above all else, a piece of software or web application exists to serve its users. When designing a solution, I always start examining the problem from user-centric point of view. The Avenues Lesson Planner project exemplifies the ideal of usability.
- Code should explain the solution and how it works, not confuse or obfuscate it. The source code I deliver is highly structured, well commented and documented, and applies uniform conventions so that its purpose is always straightforward. The rapid development schedule of the Sermo physician network required code that was modular, well designed and documented.
- Well-designed code runs in the most efficient manner possible for the given task. I only consider a project complete if I have created a solution to all of its problems and that solution functions without wasting memory or processor cycles. I delivered an extremely efficient solution with the Researcher project.
In the real world, my thoughts on development translate into rigorously planned, efficiently implemented work that places usability and standards-compliance above all else. Some of the development practices I employ to make sure the end result matches the vision include:
- Standards Compliance
- Conformance with accepted standards facilitates ease of implementation and re-use. Especially for web applications, where browser standards-compliance has been the greatest hindrance to innovation, the code I deliver always adheres to W3C standards for markup and style. The web presence I created for Chushin Dojo is a great example of fully compliant code.
- Automated Workflow
- The repetetive tasks of project work, like building and maintaining source revisions, can sometimes become so time-consuming that they get in the way of successful delivery. Avoiding these problems means consistently relying on good development practices such as source control (using applications like Subversion) and automated build processes (with tools like Ant and XDoclet).
- Free Software
- As much as possible, I try to use high-quality free or open-source software in the solutions I provide. The Social Studies Series project is an example of a large-scale solution I have created to a complicated problem using nothing but free software. I also contribute to free software projects and publish my own free software, such as the Dynamic HTML and Java libraries and the Kindlize PDF metadata tool.