So, this week the Semantic Technologies conference went live. This is the first commercial deployment of Bright Content as well as its first foray into more generalized content management. I did want to take a second to say thanks to Uche and Eric for having me on the team. A big thank you goes to Zepheira for using Bright Content and seeing its potential.
The big question then is where you can see Bright Content on the Semantic Technologies Conference site. The answer is everywhere! The site uses XSLT for rendering content via a core data file and XSLTemplates . Each page then is created by adding a new template that extends the base XSLT. The templates are stored in an AtomPub store and could potentially be administered using AtomPub, but for our purposes, we left that out. Beyond the pages there are a few programmatic helpers out there such as scheduler, which uses Bright Content to mess with iCal files.
The other big feature of the site is comments. More specifically, we are referring these as annotations since they are really more than simple comments. Again, we are using Bright Content's AtomPub store. The comments are simply posted to the comment store and can be queried via a key to get a feed. The comments are moderated via Atom's control element.
This was all very simple due to Bright Content's core libraries. The first main library is XSLTemplates that has become relatively simple and easy to use. The other primary core lib is the Bright Content Atom store. The store is based on Amplee and has helped drive its development. Specifically, we have used Amplee for its indexers. Amplee allows you to create indexes that can be driven by whatever sort of scheme as needed. This means indexing pieces such as Atom categories or in the case of commenting, the Atom Threading Extension in-reply-to elements. The model can definitely be applied to generic XML, but at the moment we are using Atom. With that said, the indexing can occur on both the Atom entry and/or the actual content. So, in theory, one could do some crazy image processing to see if the picture is a person or not and make a feed of people pics.
The indexing piece of Amplee is nice because you can specify how the index is stored as well as how the actual data is stored. We are using a file storage and memory for indexes, but Sylvain has hooked up S3, SVN, and a wealth of other basic storage facilities that are all very nice. This means if one index is rarely used and large, we can persist to disk or S3 while those we use all the time can be directly in memory for faster look ups.
At the moment we are still actively working on getting Bright Content to be something someone could easily install. For the moment though, it is becoming apparent the XML with indexes model is very robust. Our pattern for applying business logic seems to be pretty solid in that it was easy to layer the store with our requirements. Overall, I would say the project was a huge success!
Lately I've been constantly making note of my opinions. It is a frustrating practice because it really means realizing how often opinion stray to the negative. I've been told I'm a "nice guy", so at the moment I feel safe in my internal dialogs. Yet, it is obvious that if left unchecked, a person could easily bring negative stigma.
One piece that is often portrayed in films covering successful individuals is the aspect of drive that consumes. This is usually measured by the person's relationships, which traditionally fail in one way or another. It is interesting because in monitoring my opinions, my quest to be a better developer causes me to neglect my relationships. In this case, I am very glad my internal opinions caught my attention. Although it is a huge challenge to become a truly great developer, it is even more of a challenge to do so while treating those you love like they deserve to be treated.
I should point out my "neglect" is never a factor of my actual opinions of anyone. It is really a physical issue where my lack of sleep simply puts me on edge and I get rather snippy and annoyed easily. The truth is I have great friends and family who I could not live without. More over, like most successful folks in the movies, I have an amazing wife who seems to pull me together as I consistently fall apart. She makes life easy, fun and enjoyably challenging all the time. So, baby, I know I get tired and snippy sometimes, but I love you and always find myself in love with you.
Over lunch today I watched the closure controversy . What struck me was the nature of the language design and how its creators think of its use. The speaker made it clear that Java was designed with users in mind. I personally have never found Java very usable, but that is simply my opinion. Java's success makes it clear that its usability is a viable feature.
The speaker also alluded to the Java designers acknowledging that most developers were not very smart. Of course he did not say this directly, but the essence of what he mentioned was that Java was made for the "common" programmer. Personally, I have always taken great pride in my work as a developer. I have been diligent about learning technologies, languages and patterns that help to develop my skills as a programmer. For this reason, I am attracted to tools that provide grace and elegance in their power. This is probably why I have never liked Java, its design focused on a tool for getting things done. It has no concern for the quality or elegance of the output.
I'm not saying programming is brain surgery but, if it were, would you want your doctor operating with a drill press and a table saw on your head? Likewise, would you want to see sky scrapers built with only wood and nails? This concept is faulty at its core because without progressing the field into the complex, there will never be any progress towards stability and eventual elegance. We as people can see the art in architecture, fashion and even medicine. None are considered common trades that anyone can do, yet we settle for mediocrity in programming because of the perceived lack of impact.
The problem with this is that there would most likely be a serious lack of available developers. I wonder if that would be an appropriate cost compared to the amount of money spent fixing bugs and poorly programmed applications. One solution to provide a reasonable hierarchy of developers would be something similar to the medical field. There are different classes of nurses with each being qualified to do different types of development. While this is somewhat true today in that most developers are thought to have started with testing and moved up towards and architect, it might actually be worthwhile to have some sort of a guild or union type group to help make the qualifications more official and performed by those who actually understand programming. This could easily cause more problems then it would solve, but again, the costs of bad programming is probably much higher than one would think. Even if a guild type system was created and caused something of a stir, the potential money saved from lost data, broken systems and better designed applications could potentially make the market a much better place for those creating and using software.