2. ABOUT
The Atlanta Journal-Constitution is
the only major daily newspaper in Atlanta,
Georgia and its suburbs. The AJC is the
flagship publication of Cox Enterprises.
8. 50 blogs that generate roughly 8% of all AJC
traffic.
AJC.com does well in excess of 1 billion
pageviews a year
Multiple posts with thousands of comments
30. CONSISTENCY AND SIMPLICITY
• Consistent design which works for multiple sites
• Avoid exceptions for a single blog or blogger
31. CONSISTENCY AND SIMPLICITY
• Consistent design which works for multiple sites
• Avoid exceptions for a single blog or blogger
• Easily make changes and automate deployment
32. CONSISTENCY AND SIMPLICITY
• Consistent design which works for multiple sites
• Avoid exceptions for a single blog or blogger
• Easily make changes and automate deployment
• Move quickly
46. DEVELOPMENT WORKFLOW
• Use a separate server for CSS and JavaScript
• Allows sharing across multiple sites and platforms
47. DEVELOPMENT WORKFLOW
• Use a separate server for CSS and JavaScript
• Allows sharing across multiple sites and platforms
• Versioned controlled
48. DEVELOPMENT WORKFLOW
• Use a separate server for CSS and JavaScript
• Allows sharing across multiple sites and platforms
• Versioned controlled
• Deployment to multiple environments
49. CONTINUOUS IMPROVEMENT
• Remote includes for header, footer, and other elements
• Allow users to flag inappropriate comments
• Deeper integration with CMS
50. CONTACT US
• Cliff Barrett • Jason Gilstrap
• cbarrett@ajc.com • jgilstrap@ajc.com
• Twitter: cliffr • Twitter: jpg
51. TECHNICAL STUFF
3 apache servers running php
not mod php - php cgi - using mpm worker in apache
mysql one machine - replication - shared
wordpress mu - batcache plugin - no longer supercache
plugin
http://andy.wordpress.com/2008/06/22/batcache-for-
wordpress/
2 memecache servers - shared
52. COMPLAINTS
• WPMU - Wordpress Plugin compatibility
• Security
releases for Wordpress - while listing WPMU
vulnerability
• Per Blog settings and config vs sitewide
• support memcache out of the box
• Pagination issues
• despite those would still choose WPMU
Notas del editor
The Atlanta Journal was established in 1883
The Atlanta Constitution was first published on June 16, 1868.
They were Combined in 1982
Been with the ajc for 4 years
in online development group doing django development
little over a year ago left and became team lead for a software development group
until recently the ajc had a combination of django, ruby on rails and wordpress for blogs
a little bit on how we use wordpress for blogs
we were on movable type and were tasked with bringing wordpress in
as blogging software
sampling which you will hear more about after I am done.
sampling which you will hear more about after I am done.
sampling which you will hear more about after I am done.
sampling which you will hear more about after I am done.
sampling which you will hear more about after I am done.
sampling which you will hear more about after I am done.
sampling which you will hear more about after I am done.
the title of this photo is hobbled automobile
I think I was responsible for hobbling our first wordpress instance
couldn’t get a ton of participation
news became stale because of lack of resources
but the newsroom loved wordpress and use
with the help of jason - little over 2000 users -
too cost intensive to maintain - done when buddypress started to
make presence known - also a case where the ease of publishing was noted by people in the newsroom
beyond the newsroom -- I think we benefited from the community in a big wayplugins or issues tend to be started or completed
such as pets mentioned previously
just took this yesterday
needed speed and effeciency
no secret that the ajc has gone through some serious cuts
experiment - that seems to be playing out well
easy way to publish - publish fast and try to eliminate barriers
take neither the credit for nor the blame for the idea but seems to actually
be playing out in a good way
we have about 22 active plugins - these are some of the important ones
As Cliff said, the AJC’s experience with blogging software in the past has been a learning experience. When we were faced with transitioning more than 50 blogs from our existing Movable Type system to Wordpress, we had some clear goals in mind.
The AJC operates multiple sites
In addition to ajc.com, there’s accessAtlanta for entertainment and things to do in Atlanta, AJC Homefinder for real estate search and news, and even channels like our Holiday Guide, all of which have a unique design. We wanted to allow for these variations while still keeping a consistent layout and a single theme which is easy to maintain.
With our Movable Type system, we allowed for blog-specific exceptions, such as design changes or special features, by request. This led to a system that was bloated, difficult to manage, and nearly impossible to upgrade. When deciding which features we would include with our Wordpress system, an important requirement was that each plugin or widget we made available would be used by multiple blogs.
The typical way of setting a WP install involves creating a theme, editing some files, and uploading to a server via FTP. But with a team of developers and a hosting setup involving multiple web and database servers, that’s not an ideal workflow.
Finally, we wanted to move quickly. From initial setup, theme design, and deployment, we were ready to begin testing in about a month.
As Cliff said, the AJC’s experience with blogging software in the past has been a learning experience. When we were faced with transitioning more than 50 blogs from our existing Movable Type system to Wordpress, we had some clear goals in mind.
The AJC operates multiple sites
In addition to ajc.com, there’s accessAtlanta for entertainment and things to do in Atlanta, AJC Homefinder for real estate search and news, and even channels like our Holiday Guide, all of which have a unique design. We wanted to allow for these variations while still keeping a consistent layout and a single theme which is easy to maintain.
With our Movable Type system, we allowed for blog-specific exceptions, such as design changes or special features, by request. This led to a system that was bloated, difficult to manage, and nearly impossible to upgrade. When deciding which features we would include with our Wordpress system, an important requirement was that each plugin or widget we made available would be used by multiple blogs.
The typical way of setting a WP install involves creating a theme, editing some files, and uploading to a server via FTP. But with a team of developers and a hosting setup involving multiple web and database servers, that’s not an ideal workflow.
Finally, we wanted to move quickly. From initial setup, theme design, and deployment, we were ready to begin testing in about a month.
As Cliff said, the AJC’s experience with blogging software in the past has been a learning experience. When we were faced with transitioning more than 50 blogs from our existing Movable Type system to Wordpress, we had some clear goals in mind.
The AJC operates multiple sites
In addition to ajc.com, there’s accessAtlanta for entertainment and things to do in Atlanta, AJC Homefinder for real estate search and news, and even channels like our Holiday Guide, all of which have a unique design. We wanted to allow for these variations while still keeping a consistent layout and a single theme which is easy to maintain.
With our Movable Type system, we allowed for blog-specific exceptions, such as design changes or special features, by request. This led to a system that was bloated, difficult to manage, and nearly impossible to upgrade. When deciding which features we would include with our Wordpress system, an important requirement was that each plugin or widget we made available would be used by multiple blogs.
The typical way of setting a WP install involves creating a theme, editing some files, and uploading to a server via FTP. But with a team of developers and a hosting setup involving multiple web and database servers, that’s not an ideal workflow.
Finally, we wanted to move quickly. From initial setup, theme design, and deployment, we were ready to begin testing in about a month.
As Cliff said, the AJC’s experience with blogging software in the past has been a learning experience. When we were faced with transitioning more than 50 blogs from our existing Movable Type system to Wordpress, we had some clear goals in mind.
The AJC operates multiple sites
In addition to ajc.com, there’s accessAtlanta for entertainment and things to do in Atlanta, AJC Homefinder for real estate search and news, and even channels like our Holiday Guide, all of which have a unique design. We wanted to allow for these variations while still keeping a consistent layout and a single theme which is easy to maintain.
With our Movable Type system, we allowed for blog-specific exceptions, such as design changes or special features, by request. This led to a system that was bloated, difficult to manage, and nearly impossible to upgrade. When deciding which features we would include with our Wordpress system, an important requirement was that each plugin or widget we made available would be used by multiple blogs.
The typical way of setting a WP install involves creating a theme, editing some files, and uploading to a server via FTP. But with a team of developers and a hosting setup involving multiple web and database servers, that’s not an ideal workflow.
Finally, we wanted to move quickly. From initial setup, theme design, and deployment, we were ready to begin testing in about a month.
Here are some example blogs. The Atlanta Braves blog, written by David O’Brien, is one of our most popular. Notice the graphical header at the top. Each of our blogs has its own header. To the right of that is a brief description of the blog and its author followed by the site search and an advertisement.
This is the same structure for every blog.
Even accessAtlanta, while it has some site-specific styling, the core blog features are the same.
Here’s another example. This is our Holiday Guide blog, which is actually a channel within the accessAtlanta site.
We do this with child themes.
Since all of our sites share a common grid and HTML structure, we can use the same master theme and just vary the header, footer, and CSS.
Creating a new child theme is easy: we just add a subdirectory with a unique header and footer file.
This and other blog-specific options are set on the theme options page.
The theme options page:
- Allows us to specify the header image URL
- When a new child theme is created, it appears in the drop down menu.
- We’ve integrated with Site Catalyst for metrics.
- We’ve also integrated with our ad platform, Yahoo’s Yield Manager. Each blog falls within an existing channel. By specifying a category from theme options, our ad operations team can target ads by site, blog, or even page type.
- We got the idea for the theme options page from the Thematic theme but extended it for our use.
The theme options page:
- Allows us to specify the header image URL
- When a new child theme is created, it appears in the drop down menu.
- We’ve integrated with Site Catalyst for metrics.
- We’ve also integrated with our ad platform, Yahoo’s Yield Manager. Each blog falls within an existing channel. By specifying a category from theme options, our ad operations team can target ads by site, blog, or even page type.
- We got the idea for the theme options page from the Thematic theme but extended it for our use.
The theme options page:
- Allows us to specify the header image URL
- When a new child theme is created, it appears in the drop down menu.
- We’ve integrated with Site Catalyst for metrics.
- We’ve also integrated with our ad platform, Yahoo’s Yield Manager. Each blog falls within an existing channel. By specifying a category from theme options, our ad operations team can target ads by site, blog, or even page type.
- We got the idea for the theme options page from the Thematic theme but extended it for our use.
The theme options page:
- Allows us to specify the header image URL
- When a new child theme is created, it appears in the drop down menu.
- We’ve integrated with Site Catalyst for metrics.
- We’ve also integrated with our ad platform, Yahoo’s Yield Manager. Each blog falls within an existing channel. By specifying a category from theme options, our ad operations team can target ads by site, blog, or even page type.
- We got the idea for the theme options page from the Thematic theme but extended it for our use.
The theme options page:
- Allows us to specify the header image URL
- When a new child theme is created, it appears in the drop down menu.
- We’ve integrated with Site Catalyst for metrics.
- We’ve also integrated with our ad platform, Yahoo’s Yield Manager. Each blog falls within an existing channel. By specifying a category from theme options, our ad operations team can target ads by site, blog, or even page type.
- We got the idea for the theme options page from the Thematic theme but extended it for our use.
We’ve setup separate servers which are optimized for deliver static content such as CSS and JavaScript. This particularly important for performance because serving static content from an application can be extremely inefficient.
In addition to performance, we use dedicated servers for static content because many of our CSS and JavaScript files are shared across multiple platforms (the AJC uses applications built with Java, Rails, Django, in addition to our vendor sites which we don’t directly control).
With a team of developers, it’s important to have all code and templates in a version control system to track changes made of over time and to prevent conflicts.
We use Subversion for code control. For deployment, we use capistrano to deploy to multiple to one of our three environments (development, staging, or production).
Our deployment process is capable of concatenating CSS and JavaScript to minimize server rquests, and our static content servers deliver Gzipped CSS and Javascript to minimize file size. Both servers are setup to use Akamaki, a content delivery network provider which gracefully handles high traffic.
We’ve setup separate servers which are optimized for deliver static content such as CSS and JavaScript. This particularly important for performance because serving static content from an application can be extremely inefficient.
In addition to performance, we use dedicated servers for static content because many of our CSS and JavaScript files are shared across multiple platforms (the AJC uses applications built with Java, Rails, Django, in addition to our vendor sites which we don’t directly control).
With a team of developers, it’s important to have all code and templates in a version control system to track changes made of over time and to prevent conflicts.
We use Subversion for code control. For deployment, we use capistrano to deploy to multiple to one of our three environments (development, staging, or production).
Our deployment process is capable of concatenating CSS and JavaScript to minimize server rquests, and our static content servers deliver Gzipped CSS and Javascript to minimize file size. Both servers are setup to use Akamaki, a content delivery network provider which gracefully handles high traffic.
We’ve setup separate servers which are optimized for deliver static content such as CSS and JavaScript. This particularly important for performance because serving static content from an application can be extremely inefficient.
In addition to performance, we use dedicated servers for static content because many of our CSS and JavaScript files are shared across multiple platforms (the AJC uses applications built with Java, Rails, Django, in addition to our vendor sites which we don’t directly control).
With a team of developers, it’s important to have all code and templates in a version control system to track changes made of over time and to prevent conflicts.
We use Subversion for code control. For deployment, we use capistrano to deploy to multiple to one of our three environments (development, staging, or production).
Our deployment process is capable of concatenating CSS and JavaScript to minimize server rquests, and our static content servers deliver Gzipped CSS and Javascript to minimize file size. Both servers are setup to use Akamaki, a content delivery network provider which gracefully handles high traffic.
We’ve setup separate servers which are optimized for deliver static content such as CSS and JavaScript. This particularly important for performance because serving static content from an application can be extremely inefficient.
In addition to performance, we use dedicated servers for static content because many of our CSS and JavaScript files are shared across multiple platforms (the AJC uses applications built with Java, Rails, Django, in addition to our vendor sites which we don’t directly control).
With a team of developers, it’s important to have all code and templates in a version control system to track changes made of over time and to prevent conflicts.
We use Subversion for code control. For deployment, we use capistrano to deploy to multiple to one of our three environments (development, staging, or production).
Our deployment process is capable of concatenating CSS and JavaScript to minimize server rquests, and our static content servers deliver Gzipped CSS and Javascript to minimize file size. Both servers are setup to use Akamaki, a content delivery network provider which gracefully handles high traffic.