<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>cfalzone</title>
	<atom:link href="http://www.cfalzone.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.cfalzone.com/blog</link>
	<description>Christopher Falzone's Blog</description>
	<lastBuildDate>Thu, 15 Jul 2010 19:38:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Running DotCMS in Windows and Memory</title>
		<link>http://www.cfalzone.com/blog/2010/07/dotcms-windows-memory/</link>
		<comments>http://www.cfalzone.com/blog/2010/07/dotcms-windows-memory/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 19:38:59 +0000</pubDate>
		<dc:creator>cfalzone</dc:creator>
				<category><![CDATA[DotCMS]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Memory]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.cfalzone.com/blog/?p=257</guid>
		<description><![CDATA[Just a quick post today.  A few months back we decided to increase the RAM on our dotCMS servers to 12Gb.  We were starting to notice some performance lags in our boxes that only had 4Gb.  In doing this we also had to make the switch to 64bit Windows.  Everything went very smoothly, albeit we [...]]]></description>
			<content:encoded><![CDATA[<p><img src="/blog/wp-content/uploads/2010/07/WrapperLogo.png" alt="Java Service Wrapper Logo" style="float:right" />  Just a quick post today.  A few months back we decided to increase the RAM on our dotCMS servers to 12Gb.  We were starting to notice some performance lags in our boxes that only had 4Gb.  In doing this we also had to make the switch to 64bit Windows.  Everything went very smoothly, albeit we did not see the performance increase we were hoping for.</p>
<p>Today, while talking with a dotCMS support agent, he made us aware that Java Service Wrapper that dotCMS uses to let you install dotCMS as a service in windows is a 32bit application and as such only allows windows to access 4Gb of memory.  On top of this, the 64bit windows version of this third-party application is not freely available.  The Java Service Wrapper that ships with dotCMS is developed by a company called Tanuki Software.  Here is a link to the software page:  <a href="http://wrapper.tanukisoftware.com/doc/english/download.jsp">http://wrapper.tanukisoftware.com/doc/english/download.jsp</a></p>
<p>If you scroll down to the bottom of the page you will note note #2:</p>
<p><em>*2: 64-bit Windows versions of the Java Service Wrapper are not currently being made available in the Community Edition.</em></p>
<p>The Community Edition is what dotCMS ships with.  Moral of the story, if you are using dotCMS in windows and want to access more than 4Gb or RAM, you need to purchase a Standard Version License from Tanuki.  I&#8217;ll post more after we&#8217;ve made the upgrade.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cfalzone.com/blog/2010/07/dotcms-windows-memory/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Live Blogging &#8211; DotCMS Bootcamp Day 2</title>
		<link>http://www.cfalzone.com/blog/2010/04/dotcmsbc10-2/</link>
		<comments>http://www.cfalzone.com/blog/2010/04/dotcmsbc10-2/#comments</comments>
		<pubDate>Thu, 15 Apr 2010 13:08:27 +0000</pubDate>
		<dc:creator>cfalzone</dc:creator>
				<category><![CDATA[DotCMS]]></category>
		<category><![CDATA[bootcamp]]></category>
		<category><![CDATA[liveblogging]]></category>

		<guid isPermaLink="false">http://www.cfalzone.com/blog/?p=141</guid>
		<description><![CDATA[Watch this space for updates today. I will be missing the first session today  But stay tuned at 11:15 for updates from the Plugins Session. Last night we decided to head to the 8 oz Burger for dinner.  There are not many Burger Joints I would feel comfortable getting a raw burger at, but this [...]]]></description>
			<content:encoded><![CDATA[<p>Watch this space for updates today.</p>
<p>I will be missing the first session today <img src='http://www.cfalzone.com/blog/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />   But stay tuned at 11:15 for updates from the Plugins Session.</p>
<p>Last night we decided to head to the 8 oz Burger for dinner.  There are not many Burger Joints I would feel comfortable getting a raw burger at, but this place was top notch.  Very good burgers.<span id="more-141"></span></p>
<p><strong>9:30 &#8211; Surprise &#8211; I did get to attend the first session &#8211; Super Widget</strong></p>
<ul>
<li>Maria is presenting and they are setting everything up still</li>
<li>&#8220;Planning for flexible and reusable pulls&#8221;</li>
<li>Arnaud is presenting as well</li>
<li>Purpose of a widget
<ul>
<li>Minimize redundancy</li>
<li>Facilitate pulls for content editors</li>
<li>Permissioning
<ul>
<li>Widgets are Structures which have granular permissions</li>
<li>It is the admin&#8217;s job to make sure people can&#8217;t screw things up</li>
</ul>
</li>
</ul>
</li>
<li>Common Uses
<ul>
<li>Content listing</li>
<li>Detail Pages</li>
<li>Random Pulls</li>
<li>UI for a Macro</li>
</ul>
</li>
<li>Widgets Overview
<ul>
<li>Can be added on any container</li>
<li>Parameters &#8211; fields on widget structure</li>
<li>Widget Code &#8211; Velocity code to be executed</li>
</ul>
</li>
<li>Simple Widget -vs- Custom Widgets
<ul>
<li>Simple:  Just a title and the code &#8211; used forms, detail page, sitemap</li>
<li>Custom:  Parameters &#8211; used for pulls, reusable</li>
</ul>
</li>
<li>When to create a widget
<ul>
<li>Rule of Thumb 1 &#8211; one widget structure per content structure</li>
<li>What Content do you need? -&gt; create the structure (ex. news structure)</li>
<li>How does this need displayed? -&gt; create the widget (ex. news listing widget)</li>
<li>Checklist for creating a widget
<ul>
<li>Wireframes as a foundation for structures</li>
<li>Identification of *all* dynamic pulls</li>
<li>Definition of Parameters</li>
</ul>
</li>
</ul>
</li>
<li>Arnaud is showing several examples, you can see some of these on the demo site:  <a href="http://demo.dotcms.org/">http://demo.dotcms.org/</a></li>
<li>widget structure -vs- widget content
<ul>
<li>You create the structures and for each structure you can create the content items for your users to use.</li>
</ul>
</li>
<li>Arnaud is wrapping up time for questions</li>
<li>Maria is showing us &#8212; when users change their minds &#8212; give them the parameters to change their minds.  If they decide they want the image bigger/smaller then they can change the parameters, if this was a macro or just a contentlet you would be modifying the code.</li>
<li>Have a show checkbox for each of the fields so if they don&#8217;t want an image they can turn them off</li>
<li>If you upgraded from pre-widgets then you didn&#8217;t get things like the simple widget and the pre built custom widgets.  You will get these in 1.9 when you upgrade.  Or if you want to see them now you can always copy from the demo site or deploy a starter site of your own,</li>
<li>If you started post-widgets then you get those things by default to start with</li>
<li>field names:  make them useful for your user not you.  don&#8217;t do fields like class names and so forth, just make a radio narrow/wide</li>
<li>Maria is demoing creating a structure</li>
<li>Now she is showing editing one to add a sort by field
<ul>
<li>Have the content structure open in another window while you are editing so you can see the field names</li>
</ul>
</li>
<li>Use line dividers to separate fields into groups:  Pull Options, Display, RSS Feed Options</li>
</ul>
<p><strong>11:15 &#8211; Plugin Training Part 1 &#8212; don&#8217;t know how well I will do here, lots of information and I want to play with it <img src='http://www.cfalzone.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />   We&#8217;ll see how I do</strong></p>
<ul>
<li>Jason Tesser is presenting &#8230;</li>
<li>&#8220;How to extend and add functionality to the dotCMS&#8221;</li>
<li>Lots of flexibility and power, be careful, you can brick your system</li>
<li>Who can use plugins?
<ul>
<li>Sys Admins &#8211; Configuration</li>
<li>Java Developers &#8211; View tools and so forth</li>
<li>Web Developers &#8211; Macros/widgets and so forth</li>
</ul>
</li>
<li>Deploying  a plugin means stoppin/starting the system</li>
<li>What can we do in plugins
<ul>
<li>Macros &#8212; New or overriding existing ones the right way
<ul>
<li>This is the only way to really override an existing dotCMS macro</li>
</ul>
</li>
<li>Config</li>
<li>tinyMCE Config and adding plugins for tinyMCE
<ul>
<li>It is just some HTML but it is in a JSP so you can do things like show different things for different users</li>
</ul>
</li>
<li>Velocity Tools</li>
<li>Custom Java
<ul>
<li>Override DotCMS java and libraries</li>
<li>New tooling, servlets, web services</li>
</ul>
</li>
<li>JSP</li>
<li>Backend Tooling
<ul>
<li>Velocity / Struts/ or JSP Portlets</li>
</ul>
</li>
</ul>
</li>
<li>What&#8217;s really important about plugins for Jason &#8212; Understanding How it works and what it can do</li>
<li>Plugin Idea:  Create a UI to control tinyMCE based on user roles.</li>
<li>You don&#8217;t have to understand the java stack to create a viewtool.  All the API&#8217;s are there to do it for you.  It is very easy, not a scary thing</li>
<li>Plugin Idea:  Create a plugin to pull in your SIS or an external Database system as back-end tooling &#8211; portlet</li>
<li>Query Test Tool in 1.9 beta is a JSP portlet.</li>
<li>Eclipse is not that scary &#8212; just take some time to learn it</li>
<li>Example of an external system brought in via iframe and velocity portlet from @fienen:  <a href="http://ow.ly/1ySwb">http://ow.ly/1ySwb</a></li>
<li>How do they work?
<ul>
<li>Build/Compile
<ul>
<li>One of the primary weaknesses to deploying plugins you have to get to the filesystem</li>
<li>You need root access to do this</li>
<li>This is not changing in 1.9 but in 2.0 it might with OSGi</li>
</ul>
</li>
<li>Deploy
<ul>
<li>By default plugins are deployed in reverse alpha</li>
<li>Plugins can overload themselves if you are not careful</li>
<li>You can specify the order by modifying the plugin configurations</li>
<li>Plugin names are the folders they are stored in and must be unique.  Of course you can&#8217;t create 2 folders with the same name, so that won&#8217;t be too hard to stick to</li>
<li><strong>Don&#8217;t just delete a plugin without undeploying it first!!!</strong></li>
<li>Your files are put in a JAR file and dropped in a place with your Libraries</li>
<li>in 1.7 tomcat was modified for the deploy to work &#8212; DotCMS 1.9 is totally different in this respect.  DotCMS can now deploy to potentially any other container as a war file.</li>
</ul>
</li>
<li>Configuration</li>
<li>Properties</li>
</ul>
</li>
<li>dotCMS Architecture
<ul>
<li>Current Status
<ul>
<li>DotCMS is not a new puppy.  This is why the old stuff is still around like old struts and hibernate.  The effort to change this would be huge and not beneficial to us as the customers.  What would be the value add?</li>
<li>DotCMS 1.7 has this problem &#8212; everything is cached in memory so it does not have to hit the DB.  Where this falls apart is when there is not enough room in memory it has to hit the db and this is expensive.</li>
<li>In 1.9 there is a new velocity library because we need the cache on disk to combat this problem</li>
<li>Jason is laughing about his use of little guys.  He calls every little component in dotcms a guy</li>
<li>These changes made to velocity engine are looking at going back to the velocity project</li>
</ul>
</li>
<li>Future Development &#8211; New Architecture
<ul>
<li>Possibly upgrade Hibernate</li>
<li>Not going to upgrade struts</li>
<li>The code has been around a long time.  Some of it is better than others.   The older stuff doesn&#8217;t practice good MVC.  But changing this is really hard and again, what is the value for the customer?</li>
</ul>
</li>
<li>Legacy -vs- New Code
<ul>
<li>Morale of the story is use the APIs</li>
</ul>
</li>
</ul>
</li>
<li>Alright the intro is over &#8212; stay tuned for the next session for part 2 for some depth into this info.</li>
</ul>
<p><strong>12:45 &#8211; Time for Lunch.  I am starvin!</strong></p>
<p><strong>2:15 &#8211; Plugin Training Part 2</strong></p>
<ul>
<li>Jason is reviewing part 1 now</li>
<li>Plugin Development
<ul>
<li>Viewtools
<ul>
<li>This is where you add new functionality for your pages.</li>
<li>When it can&#8217;t be done in just velocity.</li>
<li>When do you use viewtool or struts or Macro/Velocity?
<ul>
<li>It can be done many ways</li>
<li>Velocity is for spitting out content on a page</li>
<li>Computation and work is done in a viewtool</li>
<li>When it is inconvenient to do a viewtool then you need struts</li>
<li>When you do not really need to send to a page, just do some action.  Velocity always needs to go to a page</li>
<li>Jason can only think of using struts or servlets for handling a form</li>
</ul>
</li>
</ul>
</li>
<li>Macros</li>
<li>Struts / Servlet
<ul>
<li>Struts gives you the message guy for handling errors and validation and so forth</li>
</ul>
</li>
<li>Portlets</li>
</ul>
</li>
<li>Jason is showing us the hello world view tool</li>
<li>&#8220;Let your plugin guy handle that&#8221;</li>
<li>Viewtool Scope:
<ul>
<li>Request &#8212; every request he dies</li>
<li>Session &#8212; every web session he dies</li>
<li>Application &#8212; only one ever</li>
</ul>
</li>
<li>Now he is showing the guy in action</li>
<li>&#8220;Always a good idea to throw velocity code in a simple widget&#8221;</li>
<li>plugins.xml is where you set the order your plugins are deployed is set.</li>
<li>If your plugin configuration is malformed it is going to deploy malformed</li>
<li>ant -p &#8212; displays all the ant targets</li>
<li>there is a .bat .sh script to help you deploy your plugins in the bin directory</li>
<li>You can run ant directly from eclipse by right-clicking the main build.xml &gt; run as</li>
<li>Jason is going over the different Config files you can alter in plugins
<ul>
<li>Hiberbate mapping files &#8212; skipping these with a brief explanation of what they are and why</li>
<li>dotmarketing-config-ext.properties &#8212; modifies the main dotcms configuration</li>
<li>dwr-ext.xml &#8212; AJAX Library configuration &#8211; exposes Java classes to Javascript (Jason doesn&#8217;t like this &#8212; he uses jQuery load some html method)</li>
<li>Language-ext.properties &#8212; Language Variables for your portlet</li>
<li>liferay-portlet-ext.xml</li>
<li>portal-ext.xml</li>
<li>portlet-ext.xml   &#8212; all 3 for deploying portlets</li>
<li>macros-ext.vm &#8212; there is where you create macros</li>
<li>plugin-controller.properties &#8212; this is where you wire hooks like preContentletHooks.  There are a lot of uses for this</li>
<li>plugin.properties &#8212; allows you to have properties for your plugins</li>
<li>struts-cms-ext.xml &#8212; for struts on the front-end</li>
<li>struts-ext.xml &#8212; for struts on the back-end</li>
<li>system-ext.properties &#8212; configuration for the system, velocity stuff</li>
<li>portal-ext.properties &#8212; ldap config and so forth</li>
<li>tiles-defs-ext.xml &#8212; struts and portlet stuff</li>
<li>toolbox-ext.xml &#8212; for wiring your viewtools</li>
<li>urlrewrite-ext.xml &#8212; rules for the url rewrite filter</li>
<li>web-ext.xml &#8212; servlets and filters config</li>
</ul>
</li>
<li>It&#8217;s always easier to edit than reuse &#8212; Jason had said this 3 times now <img src='http://www.cfalzone.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
<li>Nice plug from Jason for the IRC channel in #dotcms on freenode</li>
<li>Jason is going to show us the scripting plugin
<ul>
<li>The scripting plugin allows you to access all the java classess on the classpath via the language of your choice &#8212; no plugin no viewtool quick and easy</li>
<li>Showed us how to get your user from a viewtool &#8212; look at the plugin it is not as easy as you think, but it isn&#8217;t too much to get it.</li>
<li>Showing us how he modified the CMS Filter
<ul>
<li>Created his own filter extending the dotcms CMS Filter</li>
<li>Skip processing and move on if you are a php file</li>
<li>Otherwise call the super.doFilter()</li>
</ul>
</li>
</ul>
</li>
<li>All done folks &#8212; see you next year</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.cfalzone.com/blog/2010/04/dotcmsbc10-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Live blogging &#8211; DotCMS Bootcamp Day 1</title>
		<link>http://www.cfalzone.com/blog/2010/04/dotcmsbc10-1/</link>
		<comments>http://www.cfalzone.com/blog/2010/04/dotcmsbc10-1/#comments</comments>
		<pubDate>Wed, 14 Apr 2010 13:31:26 +0000</pubDate>
		<dc:creator>cfalzone</dc:creator>
				<category><![CDATA[DotCMS]]></category>
		<category><![CDATA[dotcms liveblogging]]></category>

		<guid isPermaLink="false">http://www.cfalzone.com/blog/?p=84</guid>
		<description><![CDATA[I will be trying to live blog from the DotCMS Bootcamp conference here.  Watch this space for updates. Last night opened with a cocktail party for some social networking.  It was great to meet back up with some old friends and meet some new ones as well.  It was kinda sad that a lot of the folks [...]]]></description>
			<content:encoded><![CDATA[<p>I will be trying to live blog from the DotCMS Bootcamp conference here.  Watch this space for updates.</p>
<p>Last night opened with a cocktail party for some social networking.  It was great to meet back up with some old friends and meet some new ones as well.  It was kinda sad that a lot of the folks that didn&#8217;t get to make it.  We miss you fusion27, bradrice, and all the other folks from the IRC channel that couldn&#8217;t make it.  After the party a bunch of us went to Sushi Samba &#8212; AMAZING, I really recommend it.<span id="more-84"></span></p>
<p><strong>8:30 AM:  Breakfast in the Hotel was nice.  The weather here in Miami is amazing.</strong></p>
<p><strong>9:30 AM:  First Session:  DotCMS Roadmap.</strong></p>
<ul>
<li>Tim is up to kick off the session</li>
<li>Plug for the mailing list and the IRC channel:  #dotcms on freenode &#8212; Feel free to join in</li>
<li>Tim is passing it off to Will</li>
<li>Jason Tesser and David Tores are co-presenting</li>
<li>1.9 &#8230;
<ul>
<li>1.9 Has thousands of improvements over 1.7</li>
<li>Expected to ship 1.9 in June/End</li>
<li>1.9 Beta was released yesterday</li>
<li>One more big piece for 1.9 &#8230; scripting plugin is going to be built into the core of dotCMS:  PHP, Groovy, Python, Server Side Javascript</li>
</ul>
</li>
<li>What is coming for 2.0?
<ul>
<li>API/DB Updates</li>
<li>UI/UX Sugar</li>
<li>Enterprise Support</li>
<li>Multi-tenant features</li>
<li>Marketing Tooling upgrades</li>
<li>Revisit Workflow</li>
<li>Functionality via modules</li>
</ul>
</li>
<li>Will passed it to Jason to talk about API/DB Stuff
<ul>
<li>Normalization of Identifier and Tree Tables !!!  his is huge for anyone going straight to the DB for development/searches</li>
<li>End of Limits to structures</li>
<li>SQL to Lucene Translator &#8212; Ability to write SQL against the Lucene Index!!!  HUGE.</li>
<li>API Refactoring in Folders, HTML Pages, File Assets &#8212; Allow you to write plugins that won&#8217;t break from version to version, of course this will break plugins initially</li>
<li>Upgrade to Hibranate 3.X and OSGi</li>
<li>OSGi &#8211;
<ul>
<li>Injecting things into the menus/UI hooks</li>
<li>Hot deploy plugins</li>
</ul>
</li>
</ul>
</li>
<li>Jason Passed to David to talk about UI/UX Changes
<ul>
<li>Front End inline content editing &#8212; in place editing!!</li>
<li>Simple Content Search &#8212;  Think gmail interface, simple, intuitive for users.  Single field searcing, autocomplete, with advanced options of course</li>
<li>Better Image tooling &#8212; cropping and rotating &#8212; for users</li>
<li>Continue to make it suck less &#8212; yes that is actually a bullet point.  Many small improvements to the UX</li>
<li>Better Error Handling and reporting for velocity developers &#8212; THANK YOU!</li>
</ul>
</li>
<li>Back to Jason for Enterprise Deployment
<ul>
<li>Was push publishing &#8211; Now called sync engine</li>
<li>This is a step towards this</li>
<li>Having multiple live servers and keeping them in sync</li>
<li>The code is there for this in 1.9 &#8212; but the tooling is not done</li>
<li>This is not so much pushing dotcms content to an IIS server as dotcms to dotcms (this is what CMIS for)</li>
<li>Staging &gt; Live system</li>
</ul>
</li>
<li>David on Multi-Tenant
<ul>
<li>Becoming your own onDemand CMS Provider and maintaining control &#8212; divide websites between clients</li>
<li>Delegated User Management</li>
<li>Putting Users on Hosts</li>
<li>Cloud-Based Mega Deployments &#8212; Need a new instance or more power for a new client, just add it via cloud computing ALA Amazon EC2</li>
</ul>
</li>
<li>Jason for Marketing tools
<ul>
<li>Currently it sucks</li>
<li>Retooling the eNewsletter process to utilize 3rd party SMTP services</li>
<li>Separate users from customers</li>
<li>Users as content types &#8211; extendable and flexible &#8212; powering the developer</li>
<li>Tools for browser compatibility and 404 checking</li>
<li>HostWatch dashboard &#8211; aggregating analytics internal or external across your sites</li>
</ul>
</li>
<li>David for Workflow
<ul>
<li>currently workflow is not powerful enough</li>
<li>Not doing things like JIRA, more tied to the website</li>
<li>1 click default actions for all the tasks that are currently tedious</li>
<li>Batch Actions &#8212; Publishing/Reviewing multiple objects at the same time</li>
<li>Multiple Approval Steps &#8212; Not rule based, but allowing for multiple steps instead of just one approval</li>
<li>Better emails for workflow that allow you to take action directly in the email instead of having to log in</li>
<li>Preview Token &#8211; viewing staged content without logging in</li>
<li>Don&#8217;t bog it down with complexity &#8212; keep it simple but extend the functionality</li>
</ul>
</li>
<li>Will is up for the Enterprise Modules
<ul>
<li>Some of the things they are working on now:
<ul>
<li>KonaKart eCommerce Module</li>
<li>Real Wiki Module</li>
<li>User Forum Module</li>
<li>Intranet Module</li>
<li>Document Management Module</li>
<li>Data Import/Export Module</li>
<li>Server Management and Profiling tools</li>
</ul>
</li>
<li>Things that can be deployed as plugins or modules to the system &#8212; not core features but extending the system to meet your needs.</li>
<li>They are adding the hooks now to make these kinds of things possible</li>
</ul>
</li>
<li>That is it for the roadmap folks</li>
<li>2.0 will be about 6 months after 1.9 &#8212; speed up release cycle (I&#8217;ve heard this before)</li>
</ul>
<p><strong>10:30:  You got and OutofMemoryException, no what?</strong></p>
<ul>
<li>The session hasn&#8217;t quite started yet.  Waiting for people to return from break</li>
<li>Andres Olarte and Nick Rodriguez up for the session</li>
<li>Identifying the problem
<ul>
<li>Memory Related &#8212; could be caused by a series of events or a single event</li>
<li>Performance &#8212; Hard to identify the problem</li>
<li>Stability &#8212; Mostly caused by bugs or a combination of many different elemetns</li>
<li>Front-End -vs- Back-End
<ul>
<li>Front end relies on cache (in memory and on disk (1.9)) and lucene index</li>
<li>Going to the Cache can be expensive if there is not enough room in memory that is why in 1.9 is moving to allow cache overflow on disk, going to a cache on disk is much more performant than going to the DB, figuring out the permissions and all that.</li>
<li>A page is made of multiple layers &#8212; Template, Container, Contentlet, Fields &#8212; all cached separately for performance</li>
<li>Back-end always goes to database</li>
</ul>
</li>
<li>Tools available
<ul>
<li>JMX &#8212; Standard protocol provided by Java which allows you to peek into the JVM</li>
<li>Logs &#8212; First line of troubleshooting &#8212; but they are noisy and hard to process.  (it would be nice if these were available in the UI &#8212; HINT HINT)</li>
<li>Talking to the user to identify what is actually wrong</li>
<li>Logs are good when it is one page causing the problem</li>
<li>JMX is going to be better if the server is going down after a certain amount of time and can&#8217;t be blamed on one specific page</li>
</ul>
</li>
</ul>
</li>
<li>Creating a baseline
<ul>
<li>Simulate Traffic
<ul>
<li>Use access logs as test base</li>
<li>Organic traffic is really hard to simulate synthetically</li>
</ul>
</li>
<li>Andres is showing a demo now &#8212; how to create the baseline
<ul>
<li>Compile a list of url from the access log of all the urls for a day or some amount of time</li>
<li>He is using siege to hit this list of urls
<ul>
<li>40 users for a min</li>
<li>Ignore the first run &#8212; let the cache do it&#8217;s job</li>
<li>he got 45 transactions per seconds</li>
<li>You shouldn&#8217;t have any urls that are particularly heavy to load or simple</li>
</ul>
</li>
<li>He also uses jMeter and Bad Boy</li>
<li>He is using Java Monitoring and Management Console now (jConsole)
<ul>
<li>Memory Usage, CPU Usage, and Threads are important here
<ul>
<li>When Garbage Collection runs you want it to reclaim a bunch of memory.</li>
</ul>
</li>
<li>Classes are not as important</li>
<li>Gives you an online thread dump on the fly &#8212; this is very valuable</li>
<li>VM Summary gives some useful information  like uptime, startup and so forth</li>
<li>MBeans are information we can examine and change on the fly
<ul>
<li>Here you can actually examine what is in cache</li>
<li>velocityCache is where everything lives</li>
<li>He increased the Velocity Cache from 100 to 5000 and is rerunning the siege test &#8230; ok that wasn&#8217;t much better</li>
<li>Don&#8217;t test while the spellchecker is initializing <img src='http://www.cfalzone.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
<li>Ran again and now we are 51 trans/sec</li>
<li>Make one change at a time when testing</li>
<li>JMX will change your baseline</li>
<li>Balance between memory management and performance increase</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li>Understanding the system
<ul>
<li>Java memory management
<ul>
<li>Garbage Collection &#8212; it needs to run, but it shouldn&#8217;t run very often</li>
</ul>
</li>
<li>Memory Utilization
<ul>
<li>More memory gives you better performance, this is the best way to increase performance</li>
</ul>
</li>
<li>Database Usage &#8212; it is expensive no matter how beefy your DB is</li>
<li>Common Bottlenecks
<ul>
<li>Saving Content &#8212; if you have huge imports running in the background checking in a content can be expensive</li>
</ul>
</li>
</ul>
</li>
<li>Memory Issues
<ul>
<li>JVM Memory configuration
<ul>
<li>If you have threads locked in completely random places it is most likely a garbage collection issue</li>
</ul>
</li>
<li>Cache Config
<ul>
<li>Region sizes</li>
<li>Time to live &#8212; Change and make sure you watch how that affects your baseline &#8212; it may or may not help</li>
</ul>
</li>
<li>Per request memory usage</li>
<li>Per session memory usage &#8212; when is the memory stored per request, per session</li>
<li>Only pull data that you need, don&#8217;t filter and sort in velocity</li>
</ul>
</li>
<li>Performance Issues &#8212; Nick is up now
<ul>
<li>per page performance</li>
<li>System-Wide performance
<ul>
<li>Garbage Collection &#8212; looking at this can show you if you are having an issue</li>
<li>http -vs- https &#8212; https is more expensive</li>
</ul>
</li>
<li>Resource utilization
<ul>
<li>Database Connections</li>
<li>Client Connections</li>
<li>Enough connections to handle the requests &#8212; this is managed in the ROOT.xml  &#8211; 1 DB connection per Client connection plus a round number of buffer</li>
</ul>
</li>
</ul>
</li>
<li>Best Practices &#8212; Andres is back up
<ul>
<li>Assign as much memory as is available</li>
<li>But use as little memory as possible</li>
<li>Limit the amount of data used on each page &#8212; again only pull what you need don&#8217;t filter in velocity</li>
<li>When Benchmarking, change one thing at a time to see how that affects your baseline</li>
</ul>
</li>
<li>Questions
<ul>
<li>Garbage collection management is really really hard
<ul>
<li>You need enough memory for GC to run effectively</li>
<li>Memory will grow at a certain point GC will run</li>
<li>When GC runs the system locks</li>
<li>If GC is happening a lot you are locked a  lot</li>
<li>This is why it is bad to increase your regions too much.</li>
<li>Identifying it &#8211;
<ul>
<li>Taking a thread dump: kill -3 PID</li>
<li>Use thread dump analyzer to examine it:  <a href="https://tda.dev.java.net/">https://tda.dev.java.net/</a> &#8212; very nice</li>
<li>Look for locked up threads &#8212; locked without an explicit lock, that is probably garbage collection</li>
</ul>
</li>
</ul>
</li>
<li>There may be some issues with redhat linux 64 and Java 6 in re: Lucene</li>
<li>To view Cache info in jConsole:  org.dotcms &gt; Cache Info</li>
</ul>
</li>
<li>End of the session folks time for lunch</li>
</ul>
<p><strong>12:00 Lunch</strong></p>
<p><strong>1:45  Starting the next session on Mobile Development with DotCMS  Presentation is from </strong><a href="http://aquent.com/"><strong>http://aquent.com/</strong></a></p>
<ul>
<li>Mobile site for a device that runs a browser with HTML, Javascript, CSS</li>
<li>The Challenges
<ul>
<li>Frequent Updates</li>
<li>Multilingual Content</li>
<li>UI Between Devices</li>
</ul>
</li>
<li>Staff Profiles updated Daily</li>
<li>8000+ fields</li>
<li>22 Languages &#8212; Word lengths &amp; Different Markets</li>
<li>UI differences between devices
<ul>
<li>Use a single webkit don&#8217;t develop different UIs for each device</li>
</ul>
</li>
<li>Authentication &#8212; using Google OpenID &#8212; very cool tie in for DotCMS &#8212; maps the user roles and everything</li>
<li>Going further they are looking at ajax for the auth</li>
<li>He wants us to try it on our phones:  <a href="http://dir.aquent.com/">http://dir.aquent.com/</a></li>
<li>Data size &#8212; what can you cut down to make it smaller for the mobile device.</li>
<li>Methods:
<ul>
<li>UI Design
<ul>
<li>HTML/CSS/JavaScript</li>
<li>Unified Design &#8212; look at wikipedia&#8217;s mobile css, it works just about everything</li>
</ul>
</li>
<li>dotCMS coding method
<ul>
<li>DWR
<ul>
<li>Loads fast</li>
<li>harder to develop</li>
<li>JS Required</li>
</ul>
</li>
<li>PullContent
<ul>
<li>Fast to develop and easy</li>
<li>Slow to load and overloads server</li>
<li>no JS required</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li>Now a demo of his website
<ul>
<li>homepage is pulling content from the dictionary</li>
<li>it&#8217;s literally only like 5 lines of code</li>
<li>Uses user agent to detect the browser</li>
<li>Don&#8217;t enable-mobile in every page just the main content they will be accessing</li>
<li>disabled form validation for phones</li>
</ul>
</li>
</ul>
<p><strong>2:30:  The session is over now, just people asking questions &#8212; I am stoked to hear Michael Fienen&#8217;s Presentation (Who is sitting next to me) on DotCMS Best Practices next</strong></p>
<p><strong>3:00 Michael&#8217;s Session is starting soon.  I look over and he is finishing up slides as we speak.</strong></p>
<ul>
<li>Maria is co-presenting with Michael</li>
<li>Container Must haves
<ul>
<li>A Container for Includes &#8212; global variables, macro testing, Cache busting for CSS/JS
<ul>
<li>Set a quote variable for queries #set($quote = &#8216;&#8221;&#8216;)</li>
</ul>
</li>
<li>Meta Container &#8211; Page title, Meta tags, CSS, JS</li>
<li>Stats Container &#8211; For Google Analytics and others
<ul>
<li>Use the $host variable to determine the hostname</li>
</ul>
</li>
</ul>
</li>
<li>Templates -vs- Container
<ul>
<li>Templates should only be used for layouts.  Try to use as few as possible</li>
<li>Contains are things you reuse or are editable</li>
<li>Doctype should be in the template</li>
<li>&lt;head&gt; should be in template, and CSS/JS that is specific to the templates</li>
</ul>
</li>
<li>VTL files
<ul>
<li>Limit use of vtl files for simple widgets</li>
<li>Save them to a central directory</li>
<li>To override a macro&#8217;s vtl files</li>
<li>Don&#8217;t abuse them</li>
</ul>
</li>
<li>Widgets
<ul>
<li>Simple Widgets &#8212; dynamic code that doesn&#8217;t need parameters &#8211; generic, dynamic tools</li>
<li>Structured Widgets &#8212; Take parameters &#8212; A front-end for macros</li>
</ul>
</li>
<li>URL Maps &#8212; coming in 1.9
<ul>
<li>ties a url for the details page to a field in your structure</li>
<li>Use a custom field for the &#8220;slug&#8221; to build the slug for you based off of your title</li>
</ul>
</li>
<li>Custom Forward pages
<ul>
<li>/cmsHomePage virtual link for your homepage</li>
<li>You can also do this with /cms###Page for 404, ect.</li>
<li>Build an automatic 404 reporter off of the vtl servlet url</li>
</ul>
</li>
<li>Valid HTML and 508 Compliance
<ul>
<li>Validate your code before you spit them out</li>
<li>TinyMCE will not do this for you, it tries, but it doesn&#8217;t</li>
<li>MS Word Hates the Interent</li>
</ul>
</li>
<li>Get @fienen on twitter or <a href="http://www.google.com/profiles/fienen">http://www.google.com/profiles/fienen</a></li>
<li>dotCMS Cheat Sheet &#8211; <a href="http://tinyurl.com/dotcmscheatsheet">http://tinyurl.com/dotcmscheatsheet</a></li>
<li>DotCMS book coming out with 1.9 &#8212; hopefully</li>
<li>You can customize the TinyMCE editor</li>
</ul>
<p><strong>Ok that&#8217;s all for today folks &#8212; watch for another post tomorrow. </strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.cfalzone.com/blog/2010/04/dotcmsbc10-1/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Creating an iCal Feed from DotCMS Content / Calendar</title>
		<link>http://www.cfalzone.com/blog/2009/09/ical-dotcms/</link>
		<comments>http://www.cfalzone.com/blog/2009/09/ical-dotcms/#comments</comments>
		<pubDate>Wed, 16 Sep 2009 19:47:35 +0000</pubDate>
		<dc:creator>cfalzone</dc:creator>
				<category><![CDATA[DotCMS]]></category>
		<category><![CDATA[Edinboro University]]></category>
		<category><![CDATA[calendar]]></category>
		<category><![CDATA[events]]></category>
		<category><![CDATA[ical]]></category>

		<guid isPermaLink="false">http://www.cfalzone.com/blog/?p=81</guid>
		<description><![CDATA[First off I apologize for be a slacker and not having time to post anything on this blog for quite some time. I&#8217;d like to say that I&#8217;m going to get better at it, but I probably won&#8217;t! This past week I needed to get an iCal feed created for my DotCMS Calendar.  What I [...]]]></description>
			<content:encoded><![CDATA[<p>First off I apologize for be a slacker and not having time to post anything on this blog for quite some time.  I&#8217;d like to say that I&#8217;m going to get better at it, but I probably won&#8217;t!</p>
<p>This past week I needed to get an iCal feed created for my <a href="http://www.edinboro.edu/calendar">DotCMS Calendar</a>.  What I came up with might not be the most elegant solution, but it does the trick for Outlook and Google Calendars at least.  So I thought I&#8217;d post up my process &#8230;</p>
<p>First I started by creating an HTML page in DotCMS, and choosing the Blank Template.  The next thing I did was create a new contentlet.  The important thing to remember about this step is to name your contentlet something that is going to be ewasy to remember.  The reason for this is that doing this will break the DotCMS Page Editor.  You&#8217;ll see why a little latter.</p>
<p>Now for the code:</p>
<pre>$response.setContentType('text/calendar')
$response.setHeader("Content-disposition","attachment;filename=calendar.ics")
#set($today = $UtilMethods.now())
#set($fromDate = $date.format("MM/dd/yyyy", $today))
#set($endDate = $UtilMethods.addDays($today, 30))
#set($toDate = $date.format("MM/dd/yyyy", $endDate))
#pullContent("+structureInode:135155  +date1:[01/01/1900 00:00:00
TO $toDate 23:59:59] +date2:[$fromDate 00:00:00 TO 01/01/3000 00:00:00]
+languageId:1 +deleted:false +live:true" '0' 'date1')
BEGIN:VCALENDAR
PRODID:-//Microsoft Corporation//Outlook 9.0 MIMEDIR//EN
VERSION:2.0
METHOD:PUBLISH
CALSCALE:GREGORIAN
X-WR-TIMEZONE:America/New_York
X-WR-CALNAME:EUP Events
BEGIN:VTIMEZONE
TZID:US-Eastern
LAST-MODIFIED:19870101T000000Z
BEGIN:STANDARD
DTSTART:19971026T020000
RDATE:19971026T020000
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
TZNAME:EST
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19971026T020000
RDATE:19970406T020000
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
TZNAME:EDT
END:DAYLIGHT
END:VTIMEZONE
#foreach($content in $list)
BEGIN:VEVENT
DTSTAMP:$date.format("yyyyMMdd'T'HHmmss", $content.startDate)
DTSTART:$date.format("yyyyMMdd'T'HHmmss", $content.startDate)
DTEND:$date.format("yyyyMMdd'T'HHmmss", $content.endDate)
SUMMARY:$!content.title
UID:$!content.identifier
PRIORITY:3
CATEGORIES:MEETING
LOCATION:Edinboro
END:VEVENT
#end
END:VCALENDAR</pre>
<p>Let me pick this apart section by section.  First off we have what I like to call, &#8220;The Magic&#8221; of this whole thing:</p>
<pre>$response.setContentType('text/calendar')
$response.setHeader("Content-disposition","attachment;filename=calendar.ics")</pre>
<p>What this little bit of code does is set content type for the page, and tells the browser that this should be downloaded, not displayed in the screen.  It also tells the browser exactly what the filename should be that they are downloading.  This allows us to set the extension of .ics.</p>
<pre>#set($today = $UtilMethods.now())
#set($fromDate = $date.format("MM/dd/yyyy", $today))
#set($endDate = $UtilMethods.addDays($today, 30))
#set($toDate = $date.format("MM/dd/yyyy", $endDate))
#pullContent("+structureInode:135155  +date1:[01/01/1900 00:00:00
TO $toDate 23:59:59] +date2:[$fromDate 00:00:00 TO 01/01/3000 00:00:00]
+languageId:1 +deleted:false +live:true" '0' 'date1')</pre>
<p><em>Note:  I had to break up the #pullContent into 3 lines so it would fit on the page, this should be one line.</em></p>
<p>This bit of code is probably fairly familiar to most of you reading this.  Basically it is pulling the events from the last 30 days.  You will of course need to make sure you change the structureInode to match what your Event Structure&#8217;s Inode is.</p>
<pre>BEGIN:VCALENDAR
PRODID:-//Microsoft Corporation//Outlook 9.0 MIMEDIR//EN
VERSION:2.0
METHOD:PUBLISH
CALSCALE:GREGORIAN
X-WR-TIMEZONE:America/New_York
X-WR-CALNAME:EUP Events
BEGIN:VTIMEZONE
TZID:US-Eastern
LAST-MODIFIED:19870101T000000Z
BEGIN:STANDARD
DTSTART:19971026T020000
RDATE:19971026T020000
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
TZNAME:EST
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19971026T020000
RDATE:19970406T020000
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
TZNAME:EDT
END:DAYLIGHT
END:VTIMEZONE</pre>
<p>This is the begining of the iCal Code.  It defines the Time Zone, the name, the version, and various other tidbits.  I found it was necessary to put in the vTimeZone element for the calendar to show up in Google in the right times.  I also found a nifty reference of the iCal Format <a href="http://www.kanzaki.com/docs/ical">Here</a>.</p>
<pre>#foreach($content in $list)
BEGIN:VEVENT
DTSTAMP:$date.format("yyyyMMdd'T'HHmmss", $content.startDate)
DTSTART:$date.format("yyyyMMdd'T'HHmmss", $content.startDate)
DTEND:$date.format("yyyyMMdd'T'HHmmss", $content.endDate)
SUMMARY:$!content.title
UID:$!content.identifier
PRIORITY:3
CATEGORIES:MEETING
LOCATION:Edinboro
END:VEVENT
#end
END:VCALENDAR</pre>
<p>The rest of the code is fairly straight foward I think.  Loop through each contentlet and create a vEvent item then bookend with your ending vCalendar.  The hard part is the Time Format.  I found putting in the Timezone here did not work in Google, perhaps you will have better luck.</p>
<p>Now, I know this isn&#8217;t perfect.  I haven&#8217;t put in descriptions and nice locations and all that.  This was a quick and dirty write-up to get what I needed done.  I hope it benefits you, if you have any questions or suggestions I&#8217;d love to hear from you in the comments.</p>
<p>Where to go from here?  I would love to see this macroized and/or wigitized and put into a plugin.  I hope some day I have time to beef it up and learn more about what I can and can&#8217;t do with iCal.  I would also like to put in the ability to give iCal Feeds for specific categories and tags.  Ultimately, I would like to see the iCal download servelet that already exists in DotCMS fleshed out to this natively within the CMS.</p>
<p>Please if you have any suggestions on how to make this better or any improvements you&#8217;ve made on this, I&#8217;d love to hear about it in the comments.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cfalzone.com/blog/2009/09/ical-dotcms/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>How to Enable SSL in DotCMS</title>
		<link>http://www.cfalzone.com/blog/2009/02/how-to-enable-ssl-in-dotcms/</link>
		<comments>http://www.cfalzone.com/blog/2009/02/how-to-enable-ssl-in-dotcms/#comments</comments>
		<pubDate>Wed, 18 Feb 2009 16:09:47 +0000</pubDate>
		<dc:creator>cfalzone</dc:creator>
				<category><![CDATA[DotCMS]]></category>
		<category><![CDATA[DotCMS Tomcat SSL]]></category>

		<guid isPermaLink="false">http://www.cfalzone.com/blog/?p=78</guid>
		<description><![CDATA[Having just gone through this process, I thought I&#8217;d share the steps I took to enable SSL in DotCMS.  On the DotCMS wiki there are some fairly brief instructions on how to enable SSL.  A quick search on Tomcat and SSL will point you to their documentation which explains it step-by-step.  So here it is [...]]]></description>
			<content:encoded><![CDATA[<p>Having just gone through this process, I thought I&#8217;d share the steps I took to enable SSL in DotCMS.  On the <a href="http://dotcms.org/documentation/TableOfContents">DotCMS wiki</a> there are some fairly <a href="http://dotcms.org/documentation/ConfigureDotCMSToRunSSL">brief instructions</a> on how to enable SSL.  A quick search on Tomcat and SSL will point you to <a href="http://tomcat.apache.org/tomcat-4.0-doc/ssl-howto.html">their documentation</a> which explains it step-by-step.  So here it is all laid out in once nice How To.  Note that I am using windows and our Certificate Authority id DigiCert.  Your experience my vary.</p>
<h3>Step 1:  Generating a Keystore</h3>
<p>The first steps is to generate the keystore.  Tomcat, the java application server that DotCMS runs on, uses a format called Java KeyStore (JKS) for it&#8217;s keystores.  The Java SDK provides all the tools necessary to get the task done.  So, hop on over to where you have your SDK installed and follow along</p>
<p><code>C:\Program Files\Java\jdk1.6.0_03\bin&gt;keytool -genkey -alias tomcat -keyalg RSA -keystore C:\DotCMS_keystore.key</code></p>
<p>You will need to enter some information about your organization and location.  You will have have to choose a password for your keystore.  Don&#8217;t forget the password or you&#8217;ll have to start over.  You should now have a valid keystore with the alias of tomcat.</p>
<h3>Step 2 &#8211; Generate a Certificate Request</h3>
<p>With the keystore in place you could skip all the way to the end now and have a fully functioning self-signed certificate.  This is nice, but more likely you are looking to have a certificate authority such as DigiCert or Verisign sign your certificate.  To do this you are going to need to generate a CSR or Certificate Signing Request.  Thankfully the keytool takes care of that for us as well.</p>
<p><code>C:\Program Files\Java\jdk1.6.0_03\bin&gt;keytool -certreq -alias tomcat -keyalg RSA -keystore C:\DotCMS_keystore.key -file c:\DotCMS_certreq.csr</code></p>
<p>You are going to be required to enter your keystore password, but this should generate the certificate request for you without too much trouble.  Now you can take your DotCMS_certreq.csr to your signing authority and submit a request for a certificate.  I am not going to cover that process because  I don&#8217;t do that part, my sys admin does.  Well, it is also different with each signing authority.   Once you have your certificate you are ready to start the next step.</p>
<h3>Step 3 &#8211; Importing your certificate</h3>
<p><code>C:\Program Files\Java\jdk1.6.0_03\bin&gt;keytool -import -trustcacerts -alias tomcat -file c:\star_edinboro_edu.p7b -keystore c:\DotCMS_keystore.key</code></p>
<p>Again, the keytool handles the dirty work for you and you&#8217;ll need that password again.</p>
<h3>Step 4 &#8211; Checking the details</h3>
<p>You could probably skip this step if you know you have the right password.  Honestly the output of this command really didn&#8217;t tell me much other than I could see that my certificated had imported.</p>
<p><code>C:\Program Files\Java\jdk1.6.0_03\bin&gt;keytool -list -v -keystore c:\DotCMS_keystore.key</code></p>
<h3>Step 5 &#8211; Configure DotCMS to listen on Port 443</h3>
<p>The next step is going to require you to head to your DotCMS&#8217;s server.xml  Add the following lines:</p>
<p><code>&lt;Connector port="443" address="192.168.8.221"<br />
protocol="HTTP/1.1"<br />
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"<br />
SSLEnabled="true" scheme="https" secure="true"<br />
clientAuth="false" sslProtocol="TLS"<br />
keystoreFile="C:\DotCMS_keystore.key"<br />
keypass="..."  /&gt;</code></p>
<p>You will have to change the address and keypass to match your system.</p>
<h3>Step 6 &#8211; Restart and test</h3>
<p>That&#8217;s really all there is to it.  Restart your DotCMS service and you can use openSSL to test the connection just like telnet.</p>
<p><code>C:\Program Files\Java\jdk1.6.0_03\bin&gt;openssl s_client -connect 192.168.8.221:443 -state</code></p>
<p>After it establishes a connection you should see your certificate information.  You will of course want to test the whole setup in a browser.</p>
<p>In order for DotCMS to use SSL you also need to set a page to use SSL in the properties.  Create a test page, but before you save and publish head to the advanced properties and check the force https option.  Now when you try to visit that page it should redirect you https if you are not already using it.</p>
<p>Hopefully this small little guide helps out anyone trying to figure out how to setup SSL in DotCMS.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cfalzone.com/blog/2009/02/how-to-enable-ssl-in-dotcms/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DotCMS Bootcamp</title>
		<link>http://www.cfalzone.com/blog/2009/02/dotcms-bootcamp/</link>
		<comments>http://www.cfalzone.com/blog/2009/02/dotcms-bootcamp/#comments</comments>
		<pubDate>Wed, 11 Feb 2009 16:00:36 +0000</pubDate>
		<dc:creator>cfalzone</dc:creator>
				<category><![CDATA[DotCMS]]></category>
		<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Open Minds]]></category>

		<guid isPermaLink="false">http://www.cfalzone.com/blog/?p=71</guid>
		<description><![CDATA[Last week saw me in Miami at the DotCMS Open Minds Conference, Boot Camp.  DotMarketing&#8217;s approach to the conference this year was slightly different this year.  The focus was more on Training whereas last year was more like demo.  I&#8217;d have to say that I really enjoyed the conference. Tuesday, Feb 3 My journey to [...]]]></description>
			<content:encoded><![CDATA[<p>Last week saw me in Miami at the DotCMS Open Minds Conference, Boot Camp.  DotMarketing&#8217;s approach to the conference this year was slightly different this year.  The focus was more on Training whereas last year was more like demo.  I&#8217;d have to say that I really enjoyed the conference.</p>
<h2><strong>Tuesday, Feb 3</strong></h2>
<p>My journey to Miami started a day before the conference.  I couldn&#8217;t get a flight in the day of the conference.  It was fairly uneventful (that&#8217;s good!).  The Hotel this year was the Mayfair.  A little more ritzy than the Sonata, but still very nice.  I ended up eating at the Johnny Rockets.</p>
<h2>Wednesday, Feb 4</h2>
<p>The conference didn&#8217;t officially start until the registration/welcome party at 6PM.  Since I was there quite early I decided to jump over to DotMarketing Headquarters about 1PM.  DotMarketing was nice enough to throw us Jason Tesser for some informal pre-conference training.</p>
<p>We talked a lot about the bits and pieces of DotCMS.  Here are some take-aways from that conversation:</p>
<ul>
<li>Lucene queries will no longer require the live, deleted, and language parameters.  The DotCMS code tries to be smart enough to put those in based on where you are in the system.  This should simplify the lucene quries in our code considerably.</li>
<li>DotMarketing plans on hitting the Content Browser Search functionality with a hammer very soon.  They want to add a more intuitive search.  The idea is to make the search much more like a Google search.  A very simple one field search with advanced option and more intuitive operators.</li>
<li>They removed multicast traffic in clustering.  This is coming in the next version, but it is a major improvement on the way clustering works.  At Edinboro I decided to nix the cluster because of the multicast issues on campus.</li>
</ul>
<p>After the informal training we went back to the Hotel for the opening party.  I got to meet back up with Fienen and meet some of the new folks from the DotCMS Community.  A big welcome to IPFW who just made the decision to go with DotCMS and had a considerable force at the conference.  After the party we (Jason, Fienen, and some others) headed to the Knife for dinner.  The Knife was a very nice place to eat.  It is an Argentinian Steak House Buffet kinda thing.  Very Nice!</p>
<p>After dinner I had mega troubles with my laptop&#8217;s wireless.  So that&#8217;s why this post is coming a little late.</p>
<h2>Thursday, Feb 5</h2>
<p>Thursday started with breakfast at the Bookstore in the Grove.  The first session of the day was on structures and relationships.  I already knew much of the content here, but for the new guys this was a lot of bricks and mortar kind of training on the Back-End of DotCMS.  I did manage to grab a couple morsels of goodness from the session though:</p>
<ul>
<li>Relationships have an order field but in order to get the #PullRelatedContent macro to sort on that field you have to first save the order in the back-end.  Then, if you leave the sort parameter blank your results will be sorted by that field.  This is something I had been wondering how to do for some time now.</li>
<li>You can also pass a lucene query to the macro.  Allowing you to drill down the results to just what you need.  I couldn&#8217;t think of an immediate use for this, but I&#8217;ll tuck it away for a rainy day.</li>
</ul>
<p>The rest of the day, I spent with Jason Tesser in a one-on-one session.  This is the true value of the DotCMS conference.  I am really happy to see a company that will give you one-on-one attention.  Jason and I talked a lot about the nuts and bolts of the Content API and DotConnect Java Classes.  I learned how to use the DotConnect Class to retrieve SQL results from my server and then use the Content API to update and insert new content into DotCMS structures.  Very, very valuable stuff.</p>
<p>After the show a few of had a specialized training on administration of DotCMS.  We learned that you can use JMX to debug some of the more interesting problems may run into with cache and other things in the system.  It looked like really cool stuff, but it was a bit over my head.  Andres did a great job of showing us what can can&#8217;t be done though.</p>
<p>I ended up going with a rather large group to a sushi place for dinner.  I am not overly obsessed with sushi, but I went along and the place we went to was very nice.  I had a fried shrimp/lettuce/rice roll that was actually very good.</p>
<h2>Friday, Feb 6</h2>
<p>Breakfast was at the bookstore again.  We started the day off with Plugins Training.  The training was very well laid out and was my main target for the conference.  Jason covered a ton of information about what you can do with plugins and how they work.  I wish there was more actual code, but when you are talking to a large audience that kind of thing would&#8217;ve been hard to pull off. I can&#8217;t say how stoked I am about the addition of plugins to the DotCMS product.</p>
<p>One of the cool things you can do with plugins is move all your configuration and custom macros out of DotCMS.  This way if you ever need to restore a server or do an upgrade, you can just stick your plugin back in and you are essentially up and running.  I plan on doing this as my first plugin and hope to have a good post about how it&#8217;s all done.  That is, or corse, if Fienen doesn&#8217;t beat me to it <img src='http://www.cfalzone.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>The last half of the day was on Ajax.  While I was not overly interested in the ajax stuff, it was interesting to see some of the cool stuff that DotCMS can do there.</p>
<p>After the Ajax session we moved into the Focus Group / Roadmap / Deiscuss / Wrapup portion of the conference.  I can&#8217;t tell you how impressed I am with the way DotCMS is developing.  Here is what is in store for us in the coming year:</p>
<ul>
<li>Enterprise Offeringe -vs- Open Source Offerings:  The idea is is to not turn DotCMS into crippleware.  There are quite a few CMSs that go the crippleware route.  In other words, you can have the software for free, but to really get the most out of it you have to pay.  DotCMS is going pretty much the opposite route.  The open source product will always be fully featured.  (Actually, it will most likely be more featured than the Enterprise. )  The Enterprise version will be the hardened product with better supoprt.</li>
<li>Plugins, Plugins, Plugins:  Plugins give us a major shift in the way customization of DotCMS is handled.  From the simplest stuff like your configuration or a small macro, to the big stuff like new portlets.   Plugins also push forward community growth.  We hope to see the infamous DotCMSForge this year.  To add to this DotMarketing is also going to be putting on a plugin competition to get the community start on making plugins.</li>
<li>1.7:  What was going to be 1.6.5c is now going to be 1.7.  With this version, slated to come out in the next few weeks, we will see the addition of plugins.  Also, as a first plugin DotMarketing has created Front Ent Content Submition.</li>
<li>1.8: With 1.8 we will see fater releases (to the tune of 1 every 3-4 months).  1.8 will also add the concept of Binary Content.  This will allow us to dirrectly attach files to content along with exporters.  This esentially turns DotCMS into a digital asset / document management system.  Also due for 1.8 is drafting.  The idea is that it will work much like wordpress posts that auto-save or gmail messages.  There are also changed coming for content/page owners, which is something that has not worked as intended in DotCMS.  Lastly, it will add wiki-like link structures to DotCMS.</li>
<li>Looking beyond 1.8 there are some big plans for this year.  A simplified UI for permissions, improvements to the Multi-Site Hosting UI, Push Publishing, a better forms builder with chaining, and access to content in the CMS view web services over CMIS.</li>
</ul>
<h2>Wrap Up</h2>
<p>So, this has been a really long congolomo-blog post.  Sorry for that.  As you can see the conference was a great source of information!  I thouroughly enjoyed myself and I think everyone that came got a ton of value out of it.  Not to mention the networking possibilities.    There are some really cool things in store for us this year.  To say that I am giddy with anticipation would be an understatement.</p>
<p>Here are some additional links to information about the conference (more as I find them):</p>
<ul>
<li>Fienen&#8217;s Live Blogging of the Conference:  <a href="http://www.supersatellite.com/2009/02/05/oh-hai-gaiz-im-in-myamee/">Post 1</a> | <a href="http://www.supersatellite.com/2009/02/06/dotcms-plugin-joyfulness/">Post 2</a></li>
<li><a href="http://www.flickr.com/photos/fienen/sets/72157613404845392/">Fienen&#8217;s Flickr Feed</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.cfalzone.com/blog/2009/02/dotcms-bootcamp/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>.eduGuru Vote &amp; Warhammer Wrapup #5</title>
		<link>http://www.cfalzone.com/blog/2008/11/eduguru-vote-warhammer-wrapup-5/</link>
		<comments>http://www.cfalzone.com/blog/2008/11/eduguru-vote-warhammer-wrapup-5/#comments</comments>
		<pubDate>Wed, 26 Nov 2008 13:45:41 +0000</pubDate>
		<dc:creator>cfalzone</dc:creator>
				<category><![CDATA[Gaming]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[.eduGuru]]></category>
		<category><![CDATA[MMO]]></category>
		<category><![CDATA[Mythic]]></category>
		<category><![CDATA[Warhammer]]></category>
		<category><![CDATA[WeekendGamer]]></category>

		<guid isPermaLink="false">http://www.cfalzone.com/blog/?p=60</guid>
		<description><![CDATA[My weekly Warhammer Wrapup is up at WeekendGamer:   http://weekendgamer.wordpress.com/2008/11/25/the-weekly-warhammer-wrapup-5/ Also, Don&#8217;t forget to vote for me in the .eduGuru Blogger Contest:  http://feeds.feedburner.com/~r/DotEduGuru/~3/463906741/id1326-blogger-search-vote.html Thanks!!]]></description>
			<content:encoded><![CDATA[<p>My weekly Warhammer Wrapup is up at WeekendGamer:  <br />
<a href="http://weekendgamer.wordpress.com/2008/11/25/the-weekly-warhammer-wrapup-5/"> http://weekendgamer.wordpress.com/2008/11/25/the-weekly-warhammer-wrapup-5/</a></p>
<p>Also, Don&#8217;t forget to vote for me in the .eduGuru Blogger Contest: <br />
<a href="http://feeds.feedburner.com/~r/DotEduGuru/~3/463906741/id1326-blogger-search-vote.html"> http://feeds.feedburner.com/~r/DotEduGuru/~3/463906741/id1326-blogger-search-vote.html</a></p>
<p>Thanks!!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cfalzone.com/blog/2008/11/eduguru-vote-warhammer-wrapup-5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Weekly Warhammer Wrapup #4</title>
		<link>http://www.cfalzone.com/blog/2008/11/weekly-warhammer-wrapup-4/</link>
		<comments>http://www.cfalzone.com/blog/2008/11/weekly-warhammer-wrapup-4/#comments</comments>
		<pubDate>Tue, 18 Nov 2008 20:57:51 +0000</pubDate>
		<dc:creator>cfalzone</dc:creator>
				<category><![CDATA[Gaming]]></category>
		<category><![CDATA[MMO]]></category>
		<category><![CDATA[Mythic]]></category>
		<category><![CDATA[Warhammer]]></category>
		<category><![CDATA[WeekendGamer]]></category>

		<guid isPermaLink="false">http://www.cfalzone.com/blog/?p=58</guid>
		<description><![CDATA[My weekly warhammer wrapup is up and ready for you&#8217;re viewing pleasure at WeekendGamer&#8217;s blog http://waaagh.wordpress.com/2008/11/18/realm-war-changed-or-standing-still/ Check it out!!]]></description>
			<content:encoded><![CDATA[<p>My weekly warhammer wrapup is up and ready for you&#8217;re viewing pleasure at WeekendGamer&#8217;s blog</p>
<p><a href="http://waaagh.wordpress.com/2008/11/18/realm-war-changed-or-standing-still/">http://waaagh.wordpress.com/2008/11/18/realm-war-changed-or-standing-still/</a></p>
<p>Check it out!!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cfalzone.com/blog/2008/11/weekly-warhammer-wrapup-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>.eduGuru Guest Post</title>
		<link>http://www.cfalzone.com/blog/2008/11/eduguru-guest-post/</link>
		<comments>http://www.cfalzone.com/blog/2008/11/eduguru-guest-post/#comments</comments>
		<pubDate>Tue, 18 Nov 2008 15:58:20 +0000</pubDate>
		<dc:creator>cfalzone</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[.eduGuru]]></category>
		<category><![CDATA[Broken Links]]></category>
		<category><![CDATA[Higher Education]]></category>
		<category><![CDATA[Xenu]]></category>

		<guid isPermaLink="false">http://www.cfalzone.com/blog/?p=51</guid>
		<description><![CDATA[I have been dabbling with the idea of separating my Tech/Work posts from my personal blog.  Just as I was thinking of purchasing another domain, along came the .eduGuru Blogger(s) Search Contest. So, I decided to jump on over and write a guest post to enter the contest.  Head on over to .eduGuru and check [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.cfalzone.com/blog/wp-content/uploads/2008/11/header.jpg"><img class="alignright size-full wp-image-54" title=".eduGuru" src="http://www.cfalzone.com/blog/wp-content/uploads/2008/11/header.jpg" alt="" width="163" height="78" /></a>I have been dabbling with the idea of separating my Tech/Work posts from my personal blog.  Just as I was thinking of purchasing another domain, along came the <a href="http://doteduguru.com/id1015-new-blogger-contest.html" target="_blank">.eduGuru Blogger(s) Search Contest</a>.</p>
<p>So, I decided to jump on over and write a <a href="http://doteduguru.com/id1182-xenu-broken-link.html" target="_blank">guest post</a> to enter the contest.  Head on over to .eduGuru and check out my post and don&#8217;t forget to vote for me:</p>
<p><a href="http://doteduguru.com/id1182-xenu-broken-link.html">http://doteduguru.com/id1182-xenu-broken-link.html</a></p>
<p>Thanks!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cfalzone.com/blog/2008/11/eduguru-guest-post/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Weekend Warhammer Update #3</title>
		<link>http://www.cfalzone.com/blog/2008/11/weekend-warhammer-update-3/</link>
		<comments>http://www.cfalzone.com/blog/2008/11/weekend-warhammer-update-3/#comments</comments>
		<pubDate>Wed, 05 Nov 2008 14:24:49 +0000</pubDate>
		<dc:creator>cfalzone</dc:creator>
				<category><![CDATA[Gaming]]></category>
		<category><![CDATA[MMO]]></category>
		<category><![CDATA[Mythic]]></category>
		<category><![CDATA[WAR]]></category>
		<category><![CDATA[Warhammer]]></category>
		<category><![CDATA[WeekendGamer]]></category>

		<guid isPermaLink="false">http://www.cfalzone.com/blog/?p=46</guid>
		<description><![CDATA[A little late in reporting it, but my Weekend Warhammer Update is up on Weekend Gamer. http://weekendgamer.wordpress.com/2008/11/04/weekly-warhammer-wrapup-episode-3/]]></description>
			<content:encoded><![CDATA[<p>A little late in reporting it, but my Weekend Warhammer Update is up on Weekend Gamer.</p>
<p><a href="http://weekendgamer.wordpress.com/2008/11/04/weekly-warhammer-wrapup-episode-3/">http://weekendgamer.wordpress.com/2008/11/04/weekly-warhammer-wrapup-episode-3/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.cfalzone.com/blog/2008/11/weekend-warhammer-update-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
