Cycosmos was a multifaceted community and to some extent a forerunner of Facebook. Cycosmos was online from 1998 till end of 2001. As a user, you could create an avatar. Then you specified your own interests like music taste or sports in a very detailed way. You were able to communicate with other users using graphical or text-based chat, webmail, forums, news ticker and thematic communities (Activity Streams). The combination of anonymity and detailed profile made it easy to contact other users and build up a relationship.
Cycosmos was realized by the agency ID Media. The company hoped to promote targeted and interest-based advertising, which was a new idea at this time.
Technical Implementation
Cycosmos was realized based on the webapplication server WebObjects. It used the programming languages Objective-C and Java. WebObjects was one of the first web frameworks that built consistently on the Model-View-Controller design pattern.
The model layer was based on an object-relational mapper (ORM) with the name “Enterprise Objects”. The classes of business objects were generated by a special tool. A language feature of Objective-C was very useful to adapt the generated code: you can add additional methods to a class subsequently. Generated and “handwritten” code are separated in a clean way.
Disadvantages of Objective-C in this project were the long compile times and the primitive memory management without automatic garbage collection.
The presentation layer used HTML templates. Thanks to this separation, front-end developers were able to focus only on the optimization of the HTML code, without to the need of Objective-C knowledge.
The technical realization had to cope with the complexity of the requirements as well as the sophisticated graphic design. Due to the success of Cycosmos, the server infrastructure needed to handle an ever increasing usage,in the end with more than half a million registered users.
Been there, done that:
Programming in Objective-C, Java, JavaScript, enhancing the performance of the system, especially of the ORM layer by optimizing SQL queries, instructing new coworkers, than technical management of the German division. Part of my job was the communication with product management, marketing and sales divisions.