We do Object Oriented design, mentoring and development. We help clients pick and use software architectures that fit their needs and then assist during implementation as much as needed to keep the clients achieving all of their goals.
We have had particularly good success fixing projects with technical challenges and training the permanent staff to manage the project for the long term.
We have implemented complex high level applications with AJAX web interfaces and drag and drop Swing interfaces. At the other end, we have built database management systems, CPU emulators, and interfaced with embedded systems on a CAN bus.
If you're holding a hammer, most problems look like nails. At Solid Design, we have attempted to pick up a broad range of tools so that we will be better able to pick the right tool for each job.
A library to model complex dependencies -- Many times managing the interdependencies of an object model become more work than designing the model itself. Consider building a form that has calculated fields that the user may want to override. Those overriding values may be used in further calculations. All of this complexity is difficult to deal with using standard programming practices.
A layered filesystem using FUSE to unify a group of remote filesystems in a redundant fashion. The purpose is to maintain N copies of the data across M remote filesystems. The remote filesystems could be of all different types (different latencies, bandwidths, sizes). As new remote filesystems are added or old filesystems fail or are removed, dynamic balancing will attempt to always maintain N copies of the data.