Posts Tagged ‘conference’

Unwinding

// February 10th, 2008 // 2 Comments » // Travel, Web

Well, I was wrong.  This last day worked out a spot of all right.  Originally, my plan was to take an day of vacation to stay in Miami a day longer.  This went to suck when I found out the hotel we were up in for the conference was…outside my budget.  This forced me to find a different hotel for the final day.  So I sorta thought that the mess wasn’t going to hardly be worth it, as I’d have to pack, switch hotels, be away from the nice area I was in, etc.  As it turns out, I got to enjoy the afternoon all right.  When I got here, they didn’t have a room ready, so I was forced to amuse myself for a couple hours.

As it turned out, the hotel is on what they call the “Miracle Mile” in Coral Gables.  Plenty of shops and stuff (though most were closed on Sunday), but there was a Subway for an affordable lunch, and a car show taking place.  I also found a sushi place about 4 blocks from the hotel the guys from dotMarketing were telling me about called Sushi Maki.  That was dinner.  So I was able to get out and about a couple times, did plenty of walking, and got to enjoy the weather some more.  I also rode in a taxi for the first time.  It was anticlimactic.

I saw a bag lady uptown too.  I was going to take a picture, because I’d never seen an honest to goodness bag lady (she had about 20 garbage bags full of random goods, stacked very well).  I thought better of it, as I should probably respect her right to…well, live how she wants to live and not be bothered by a random, curious, small town tourist.  But, interesting nonetheless.  I also saw a Bentley, which I didn’t think “real” people “drove” in normal, everyday life.  And more small dogs.  What the hell is with the small dogs down here?

Anyway, to the topic of the previous three days, the conference was excellent.  DotMarketing treated us phenomenally.  For one, they hooked us up with some decent swag, including a nice messenger bag that I’ll be putting to use (free stuff is all it’s really about anyway :D ).  They took us out bowling in South Beach last night, which was by far and long the fanciest bowling alley I have ever seen.  The discussions I got to have face to face with their developers were invaluable.  All the guys and gals there are very easy to approach and talk with things about, which is great.  They also bowl better than me.  Except Lianis and David.  Sorry guys, but at least I can beat someone, heh.

Next year, I expect the conference will be a good deal bigger, with a little more diversity in experience levels and presentations from more people in the community.  If so, it would certainly get better and better. All around it was very well organized though, and the tracks were balanced so that at least I never had to argue between two sessions I wanted to go to (or not, were that the case).  The round table discussion I was in was very promising with respect to unifying and building the community of users that were here, and I think that will have a huge impact over the next year.

I’m excited to get back now and put to use some of what I learned and talked about.  That’s the mark of a good product and company in my opinion, that they can get you excited about stuff.  I don’t feel like I’m going back to fight a monster, just build one, heh.

So I will now sign off.  I leave in the morning, and will apparently have to fight some less than appealing weather when I get into KC.  Hopefully it all holds together long enough to get home.

Closing day: Open Minds 2008

// February 9th, 2008 // No Comments » // Web

So, Miami is an interesting place. There is a crazy fetish around here with small dogs, making them into an almost accessory, if you will. And more than you might expect. It’s common enough that we probably saw a dozen of them while eating. Roller blading is still popular too. Lincoln Road is also a neat (expensive) place to explore at night too. You can see everything from living statues to dancing transvestites that look like the serial killer from Silence of the Lambs. I gave him a wide berth.

Today is a big day for more training and roadmap discussions. I started out in the server admin training, since that will be one of my big responsibilities at the college. Jason Tesser, one of the lead developers, was in charge of this discussion. I want to note how awesome it is getting to work directly with the people who make dotCMS. It really helps with insights into the software. He took the time to explain how while dotCMS runs on Tomcat, it can run on really any Java application server. Also, even though dotCMS was based on the Liferay project, Liferay is becoming almost a non-issue in regards to the project, mainly being used for permissioning and users. I talked with him last night some about this, and the thought is that eventually Liferay will disappear entirely as a component of the CMS (Content Management System), and it will be all dotCMS code from that point on. Think Joomla vs. Mambo, how Joomla forked the Mambo project, but by version 2.0 will be wholly Joomla’s own code, not Mambo’s.

In the front end, most content is served to users via the static file storage, which in the latest version is /dotCMS/WEB-INF/velocity/live (in 1.5.x, just swap out “dotCMS” for “liferay”). This allows a site to run with little to no database interaction, and provides a level of redundancy in the event of a loss of database connectivity. This is the same place that the getContentMapDetail() macro references that I mentioned from yesterday’s blogging session. If a page isn’t serving, checking the file store can give you a clue as to where the problem is originating at, if it is or isn’t showing up there. Go up one directory to the velocity file and you can read files in there to see how Velocity macros are written.

He gave a pretty good commentary on what Lucene does, which acts as a query language that indexes the static file store. Sending Lucene queries to the system references pointers in its index to the file store. In the /dotLucene directory, you can view versions of the index, and change the number in the currentindex.txt file to switch to an older or newer index for troubleshooting. Lucene currently will create and manage up to 10 indexes (0-9).

This followed up with information on where configuration data is stored and how it all comes together. I’m not going to provide the nuts and bolts of this info since you can holler on the mailing list and get answers as to where a certain config is stored (besides, I don’t type fast enough to keep up). However, in the portal-ext.properties file, he did talk about the skeleton folder creation section, which is neat for giving a user a default folder architecture to operate within. This is similar to plugin functionality available in CMS’s like Joomla.

The performance tuning section was very interesting, and gave me some good insight into getting into settings to keep servers running top notch. This also included info for clustering environments, not that we run one. Googling for “Java memory options” was recommended as a good way to take care of some settings, and using that in the catalina.sh file. It was also pointed out that the connectors information in server.xml is a big place where you can optimize, especially in lower resource environments. This is because connection threads run in native memory, and not the java memory set in catalina.sh, so between the two, you can potentially overflow your RAM into swap, which slows things down. Threads use up to about 2Mb per connection. If you have 150 HTTP threads, and 150 SSL threads at 2Mb each, that’s 600Mb plus whatever you gave Java. Depending on your server and traffic load, you can do a lot to control memory usage there. Similarly, keep track of database connections that might be higher than what your database server actually allows.

Prior to developer training, I got pointed to some good tools that I tagged in del.icio.us like Aptana and Veloeclipse. These can be helpful for debugging code that you develop that you want to eventually incorporate into dotCMS. This session seems to be much more technically minded, greasemonkey type stuff. I have every reason to believe that this might be largely over my head. Hopefully that’s true, because this is an area I need to improve in. Unfortunately, by lack of experience in Java and Eclipse will limit my ability to comment on this, but it seems very fascinating, and something that will eventually be put to heavy use by me in the future. They did recommend sticking in Java 1.5 for the time being, and not using 1.6, as they won’t be switching to it for at least a year or so.

For Velocity work, learn by doing or learn by example; those were the two main suggestions, which aren’t bad advice. There’s enough information and examples out there and on their demo site that there’s a lot of opportunity to see how Velocity works in files to create content. Plus the Apache documentation is pretty decent with respect to Velocity. The thing that one must remember, Velocity is not Java, but ViewTools are. I’m not particularly good enough to explain what a viewtool is/does. But development of the two are very different, and if I knew Java, it’d make more sense. What I can say is that ViewTools are basically tiny Java applications that run within dotCMS to provide special functionality. The key is that dotCMS provides a lot of tools that you might never even need to worry about making a ViewTool.

And now for what everyone’s been waiting for, the roadmap discussion. Right now we are on version 1.5.1.1. 1.6 is on the way, probably in the next month, and 2.0 sometime this year. They’ve recently topped 10,000 downloads, and still growing, and were 2nd place as the most promising open source content management system. There’s already a lot of headway being made with users helping users on the mailing list, and users committing code to the project. One of the big plans that I think will make a huge break through for them is an open source community source for users to contribute things like macros, viewtools, and reports for others to share (think plugins and modules in other systems). They’ll also be coming out with dotCMS as software as a service to help lower the entry to barrier. On the community side, they are planning to put together a community team that helps with planning, suggestions, task coverage, and supplying feedback. That would be very interesting and really help with exposure too, get people excited about the product. It puts the consumer in a position to “own” the project, even if they can’t directly supply code or development help.

In the spring of 2008 a new documentation site is planned, designed in the fashion of PHP’s or MySQL’s documentation sites, providing the ability for people to add comments and examples, etc. Color me excited. This has been another barrier that has limited dotCMS, that the documentation just isn’t there, and where it is, it isn’t as mature as it could be to provide real, structured help for new users.

On the subject of lowering the barrier to entry, they plan on packaging a starter site into a default installation, based on Yahoo’s CSS (Cascading Style Sheets) framework. Also look for an honest to goodness module framework. Initial configuration will be wizard based, which should definitely help keep people from getting lost in different config files on the file structure. It’s not a big deal, but it’s just cludgy. People are used to, and expect easy configuration these days. WordPress is a good example of a project that took that to heart in an impressive way.

Deploying dotCMS as a software as a service will allow users to have upgrades, backups, and maintenance included. They are looking at using Amazon’s Elastic Cloud Computing to serve as a backbone to that, allowing users to only pay for the load they create.

Partnership is on their mind, working with other groups in different regions and countries to help service people they can’t easily get to. They can also get a different type of feedback from them, and gain marketshare. This also would increase training and support options for end users.

Version 1.6 is scheduled for a spring of ’08 release (the chatter seems to think a month or so from now). It will move off of Tomcat 5.5 and onto Tomcat 6. More items are moving into being based on structures, like events and such, that used to be more self contained (this is very cool). This should open things up for a whole new level of interaction and usability in the front/backend. They will be opening up the API (Application Program Interface), and providing over 200 bug fixes and performance enhancements. Inside 1.6, there is an improved LDAP module, a starter site, added category level permissions, better content ownership features, a customizable content entry form, and a brand new, structure based, social calendar.

Version 2.0 is scheduled for Fall of ’08. It will have a 100% dedicated team internally devoted to developing dotCMS (separate from work they do for clients). They will have a completed framework for add on modules, which will be tied in with the launch of the dotCMSForge, where users will be able to collaborate. dotCMS 2.0 will be JSR-170 compliant, and they will add RESTful Web Services for content, users, and data. RESTful will allow better interaction with external applications, allowing dotCMS to exist as a true content repository, regardless of use.

On the subject of modules, one they are looking at deploying (in conjunction with the JSR-170 specs) is a digital asset management solution. This would be in competition with the likes of the Fedora project, and allow storing and recalling of content through macros, etc into other uses. This is partly because Fedora, in dotMarketing’s eyes, is not a mature enough solution for their customers. They’ll also be releasing an event and conference registration module that works with custom forms, sub events with separate registration, and tie all that into e-commerce and reporting. E-commerce would be a module, allowing products as content. There’s a potential for social networking (including Open Social and OpenID) and wiki functionality as well. The social networking module sounds a lot like Ning. All in all, this module thing will be very good, as that’s part of what makes other open source CMS’s so successful, as it helps really drive a community.

Some links worth noting, in part from the round table, are the Pibb channel and the Facebook group that have been set up to facilitate group intercommunication.  These are also tagged in del.icio.us of course.  What would people think of a Ning group?

Okay, I’m spent.  I hope this was helpful.  I’ll probably throw up some closing thoughts tomorrow.  After we go BOWLING tonight.  Heck yeah baby.

From the Front Lines: Open Minds Day 2

// February 8th, 2008 // 2 Comments » // Web

For those interested, I’m doing some tagging of useful links from the conference over at del.icio.us, under the tag “openminds2008.” Here’s the page. If you are/were there, by all means add to that list any stuff that I missed, or things in sessions that I wasn’t in.

I started the day with the session on developing dynamic pages. This was the first of two parts, and dealt largely with using macros that they have built in to pull in and create things like photo galleries, MP3 players, navigation, etc. Their photo gallery macro is interesting in that it uses Lightbox (or a close relative thereof) as the basis for galleries. Personally, I like that. What this raised to me was that you could actually build your own macro around the more useful Thickbox system, allowing much of the same functionality, and a lot more. Unfortunately, I haven’t yet dove into the creation of my own macros. I’m now interested in trying that out though.

They also took a moment to show some of the upcoming WebDav functionality that you can use to bulk upload things like photos or videos. This is done in Windows by adding a network place and pointing it at http://www.yourdomain.com/webdav. However, this functionality is not officially supported just yet and is still beta, but will be eventually (maybe in 1.6? I’ll find out in the roadmap session tomorrow if I remember). It is controlled via logins and roles like the file browser in the back end of dotCMS. Generally, files uploaded this way are only saved, not published (though there appears to be a bug where something can publish if you have the permissions to do so), and there’s no confirmation as to whether or not WebDav could enforce file type rules, though it appears initially that it will return a 400 error if you try to upload a file that isn’t permitted due to restrictions defined in the CMS (Content Management System).

We also reviewed info on the video player and video gallery macros, which appears to use the standard Dreamweaver player wrapper (or something similar). If you are in need of a free FLV converter, the Riva FLV Encoder was recommended. I have not used it, however. There are plans for building some conversion utilities into dotCMS that would automatically encode AVI’s and MPG’s into FLV’s (a la YouTube or Google Video), but no timeline is currently available as to when that might be available.

On the audio side, the current MP3 player is a little basic, but there are some new features there that are in the Trunk that should make it in to an upcoming release. That will be nice to see. I’ve been using the systems that have been created at jeroenwijering.com. It sounds like they are going a route to provide functionality similar to that, only better. Their mp3PlayerExtended() macro actually is based on the jeroenwijering.com player right now. Their upcoming player is apparently being developed in house. A demo wasn’t available at the moment.

The rest of this first session was spent in the demo site looking at examples. For the most part, you can see what they did there, it’s pretty straight forward, and get the gist of what we were learning. They did confirm that on the video players, if you leave out either a height or width variable, it scales proportionally. So, that’s nice to know.

And now: LUNCH.

Post lunch, part two, should be more useful as I am familiar with macro usage already, and this should be more advanced stuff. It’s chilly in here, for those keeping score. But the weather is awesome. I digress. Hopefully they will make their powerpoint presentations online. I know that they are recording these sessions, so at some point you should be able to go watch them at their site.

This is a look at part of what makes dotCMS so powerful, creating custom views based on structured queries of content. If it is content in the system, and you have read access to it, you can create a scenario to view it. What is great is that using the built in content search, you can use that to create the queries and copy and paste them into a macro. No need to actually know any Lucene (though learning a bit will help you make more complex queries, as I have discovered). I tagged a Lucene syntax guide in del.icio.us if you want more information.

They noted while talking about relationships and details pages that the use of “inodes” as a query variable will be phased out in favor of “identifiers.” Mostly the same thing, but clearer and easier for users to understand. Worth mentioning, because that’s goofed me up in the past, and it appears they are in the middle of a transition there. Documentation will eventually reflect that change across the board. Other upcoming changes include granular permissions on categories, and being able to require categories on a piece of content.

Beyond that, it was a lot of practical examples regarding pullContent() and pullRelatedContent(). Most of this I am well familiar with, and I finally got my answer about paginating pullRelatedContent() results: wait for 1.6, heh. That will prove very useful though. The macros, tips, and tricks guide should be helpful in showing most of what the examples went over though, so I’ll refer you there.

The last session that you’ll hear about before I take off for some one-on-one work and dinner is the session for building a blog in dotCMS.  That was part of what inspired my question regarding paginating related content, as I was trying to build a blog using relationships.  I feel good, because the work I did on my own matches what they are describing, relating blog entries to a blog structure, so I was definitely on the right track.  dotCMS can essentially work exactly like most other blogging tools out there (think WordPress or TypePad).  The catch is that you just have to write the tools to do it yourself.  This amounts to a couple structures and a couple pages of Velocity code.  It sounds crazy that you have to make those tools yourself, but it turns out to be very easy.  Naturally, they have a blog on their demo site that can get things started.  Once you understand structures and relationships, following the bouncing ball to how that evolves into a blog isn’t difficult.  Where WordPress uses The Loop, you just use a pullContent() macro and a foreach() function in dotCMS for essentially the same thing (well, not exactly, but close).

As it turns out, you can also pull in content from the file cache without hitting the database by using the getContentMapDetail() macro, which I could see being very useful.  That would allow you to essentially remove the need for database requests for older content, or content that never changes.

Okay, if you’re still reading, go outside and get some sun or something.  Today has been good.  I look forward to some more advanced stuff, if not tomorrow, maybe next year.   I’ll hit you with some new stuff tomorrow though (look for plenty of details on the roadmap hopefully).  By the way, if anyone who is/was here is reading, be sure to look me up over on the UWebD Ning group or on my LinkedIn profile.  Viva information sharing.

Open Minds Conference: Day 1

// February 7th, 2008 // 1 Comment » // Web

Assuming my brain is still functioning on a level that facilitates higher math (e.g. addition), I have currently not been to bed in thirty-five hours (thirty-six by the time I finished this). So…take that in to account if this lacks any discernible level of c….co…coherency. I wish I could say that I was pretending there, and that I did know that word from the start. I did not. My brain is being fueled only by Coke and sushi at the moment.

Travel was long. Pretty self explanatory.

Open Minds BannerI did get all checked in to the hotel in time to make it to the pre-conference training sessions though. The first one dealt with handling the reporting mechanism in dotCMS. It’s a neat deal, as they have incorporated the Jasper Reports system as the driving force behind report output. What this allows you to do is download iReports and craft custom reports based on any data in the database that you want to. You can take it about as far as you are able to based on the permissions to the database you have. That might be duplicating Google Analytics like reports, user tracking metrics, or any combination thereof. The framework allows you to call and compile any data in the database you like, and input parameters such as dates or titles as control mechanisms. And we aren’t just talking reports like the top ten pages for a site. You could do the top ten pages visited by the top fifty most frequent users between January and July. Through their use of the Jasper framework, you aren’t limited by dotCMS’s code to get the information you want. I’d be lying if I said it all made sense. The concept is simple, but I could easily spend weeks learning the intricacies of iReport. They did say that the 1.6 release of dotCMS should come with a few basic reports installed, so you could use them to see how to structure more custom ones.

The second session dealt with the built in form handling. There is a document available which discusses most of the ins and outs of using it, and this was pretty well contained within the scope of that guide. Most CMS (Content Management System)’s come with some level of form handling these days. There’s some room for improvement here, such as the fact that the only access control resides at the portlet level. If someone is granted access to the web forms portlet, they can see results of any form that you have created. It’s nice since the form handler is built in and just works as a feature, but you must keep in mind it will still require you to write the code for the form, and set up any logical branching or such that needs to take place as it is filled out. And because of how the data is stored and extracted, I would be concerned about the ability to poison data entered into a form. I’m not saying it can happen, but just that I see a potential for it. Hopefully they’ll add on some kind of GUI front end that end users could use to build forms, that will be very helpful since at the moment you really need the forms to be made by someone familiar with how the handler works. But as far as I am concerned, forms will be a headache no matter how good your tools are. End users will always find a way to break or otherwise screw them up, heh.

I missed out on the end user training session and updating from SVN session due to having not mastered being in two places at once. I apologize. The guys have been really great though, and in just an afternoon I’ve gotten a ton of great info. The developers and programmers for dotCMS are all very great people to work with, and they have been happy to share ideas and insight into things, which is nice. When was the last time you met someone deeply involved with actually making Drupal or WordPress? Here, the developers are both names and faces. The same folks responding on the mailing list and helping in JIRA are the ones going out to eat with you.

I’ll be back with more info as things continue, and after I get some much, much, much needed sleep.