SciSpike, my new company. The site is using some cutting edge technology and we went up from a wireframe prototype to the first version of the functional site in a very short time.
Creating a web site for our company posed some interesting architectural and technological challenges. For implementation, we have considered the usual suspects, such as the various popular Content Management Systems, and they all provided a lot of initial, very useful functionality, but customizing and extending these solutions further would be difficult and is likely to be an obstacle in the long term.
We decided to go with our own design. Architecting and designing software is something we know how to do and enjoy immensely. We debated the technologies we could use: Scala with its exciting Lift framework, the Play Framework, Ruby on Rails, some more conservative solutions based on JSPs with Spring or just JEE. For the interactive part in the web pages, the choices were equally exciting. There were the Ajax frameworks: the comprehensive Dojo (of which we are fond of), the widely used jQuery, and a special contender: GWT.
The winner on the front end for dynamic and interactive content is GWT, plus two lines of jQuery, for some neat visual elements on the home page. We used GWT before, and in general had very good experiences. For the non-interactive parts of the site, we create HTML using our own generator. Creating our own generator was an easy choice, as we are doing model driven and generative development since the 90's and we were creating DSLs for us and our clients. For an example of a dynamic GWT control, check out the "Course Search" widget that suggests the courses as the user is typing. I guess you could call this a Domain Specific Search Engine.
Here is the fragment from the site showing the control for searching the courses.
As the user starts typing, the control suggests the title of courses on this topic:
Play with it live on the SciSpike site. This is just the first version, we are planning to add couple of improvements soon.
The choice on the back end was equally exciting, as we were inspired to move the IT into the cloud. In my old company, we were running a set of machines in a noisy server room full of wires and equipment accumulated during years. Every now and then something happens. A disk crashes. A CPU dies. A cooling fan stops spinning. A router quits. It is annoying, it costs time, and it is distracting. Today, SciSpike is running on Google App Engine and so far we were pleased with deployment and administration features.
The persistence is handled by the JPA. Our data volume is low and the JPA performance was adequate for the current needs. JPA is also a relatively easy technology to port, in the case we experience difficulties with GAE. So far everything worked out fine.
I am happy that we don't need the server room anymore!