P'unk Avenue Window

Archive for ‘Apostrophe’

Apostrophe Updates

August 6th, 2010 by Tom 2 Comments

Apostrophe has received quite a few fixes and improvements over the past few months. We’ve made upgraded releases of our open source software available. To learn more, visit the Apostrophe developer site.

Read on for a changelog of what’s new in four Symfony plugins that go into practically every Apostrophe site: apostrophePlugin and apostropheBlogPlugin (which we created) and sfJqueryReloadedPlugin and sfDoctrineActAsTaggablePlugin (which we contribute to).
(more…)

Symfony 2 hub-bub

June 10th, 2010 by Tom 6 Comments

Symfony is the best framework for building web applications in PHP. The forthcoming Symfony 2 is a dramatic improvement and a complete rewrite with many new features and, even more importantly, better software architecture. Enthusiasts may have heard about the State of Symfony 2 Online Conference to be held on June 23rd. Fabien and the Sensio team have encouraged folks to become “Symfony conference hubs” and invite others to attend the conference from our offices and enjoy the benefits of our lovely projector, coffee, etc. And P’unk Avenue is definitely all about it. Please RSVP by commenting here.

WHAT: Symfony 2 Live Conference
WHERE: P’unk Avenue offices, 1168 E. Passyunk Ave, Philadelphia PA
WHEN: 11am Wednesday, June 23rd

Thanks to our hub status, You do not have to buy your own Symfony 2 ticket to attend at our office.

We’re looking forward to discussion and possibly busting out the Symfony 2 sandbox and experimenting after the conference.


Amid the excitement about Symfony 2, this would be a good time to mention our ongoing support for Symfony 1.4, and by extension Apostrophe 1.x. If Symfony 2.0 is coming, does that mean we’re going to abandon Symfony 1.x and Apostrophe 1.x?

No, not by a long shot, not any time soon. Symfony 2 will not be backwards compatible in a “super easy upgrade path” way, which is a valid choice to make improvements that would otherwise be impossible but an obvious problem for existing projects. And we have plenty of those. What’s more, Symfony 2 requires PHP 5.3.x at a minimum, and we know how tough it can be to move clients along just to PHP 5.2.x.

Fortunately, Sensio had the wisdom to make Symfony 1.4 a long-term-support release. And since Apostrophe 1.x is happily married to Symfony 1.4, that means we’re all in good shape.

Symfony 1.4 is supported until November of 2012, and Apostrophe 1.x will also be supported until at least November of 2012.

At some point, Apostrophe 2.x will come into being and it will be based on Symfony 2, but we have many client and internal projects that are purring away happily on Symfony 1.4 and we have absolutely no interest in abandoning it. So you can very safely pursue client projects based on the current stable releases of Apostrophe.

Introducing Apostrophe’s Blog Plugin

June 7th, 2010 by Tom 4 Comments

Apostrophe, our content management system, now sports a nifty new blog plugin. And you can see it in action on GPTMC’s Philly360.

Wondering where the blog is? In the context of a larger website, a blog doesn’t always jump out and shake you by the lapels. On philly360 it’s the engine behind The Insider:


Screen shot 2010-06-07 at 9.19.17 AM


Notice the navigation links at the left. You can spelunk by category, date or tag.

Don’t see the categories? That’s because, on this particular site, they have been rebranded as “Features.” This is a common way to use Apostrophe blog categories: as separate “blogs.” It’s possible to set them up with entirely separate pages at any point in the site or, as in this case, as subpages of the main blog.

The Apostrophe blog plugin also drives the Events page:


Screen shot 2010-06-07 at 9.23.19 AM


But that’s not quite the whole story. In truth, the blog is front and center on the home page. Let’s take another look:


Screen shot 2010-06-07 at 9.22.56 AM


Notice the “News” and “Events” sections. These are Apostrophe slots pulling in recent blog posts and recent events from the blog plugin. Editors can plug in recent posts and events, or plug specific posts and events into specific pages. And designers can customize the presentation of posts to suit any page template.

Visitors can comment on blog posts in a spam-free environment, optionally logging in via Facebook, Twitter and several other services thanks to the excellent Disqus blog comment management service.

All of these capabilities are standard in Apostrophe’s blog plugin. And it’s open source, so Symfony developers can dive right in. Visit the Apostrophe documentation for details.

“Great, so how come your own blog is still running WordPress?” That will change! It’s not broken and we have plenty of client projects to build, so it’s not our first priority today. But our blog will be migrating to punkave.com/window. We need to take a little time to design it nicely and take advantage of Disqus’ “import comments from Wordpress” feature.

Open Source Help Desk

April 14th, 2010 by Tom 1 Comment

TOM: “Open source help desk, this is Tom speaking. How may we help each other?”

CALLER: “I chose your open source project for my client project and it’s due tomorrow and it doesn’t work! This is your problem and you must fix it immediately or I will explode!”

TOM: [CLICK]


TOM: “Open source help desk, this is Tom speaking. How may we help each other?”

CALLER: “Your code has several bugs, which I am going to describe in harsh and unsympathetic but highly accurate detail.”

TOM: [Hangs up on caller, then fixes those bugs]


TOM: “Open source help desk, this is Tom speaking. How may we help each other?”

CALLER: “I translated your program into Swahili! Here’s the XLIFF file. Also I found a bug. Here’s a patch file.”

TOM: “Yay! Welcome to the cool people’s club! We’re having chocolate ice cream. Would you like some?”


TOM: “Open source help desk, this is Tom speaking. How may we help each other?”

CALLER: “500 ERROR! AAAAAAAAAAAAAA!”

TOM: “Lower your voice, read your log files, try the dev controller and call back.”

CALLER: [reads own log files, discovers glaringly obvious permissions problem, solves it, is never heard from again]


TOM: “Open source help desk, this is Tom speaking. How may we help each other?”

CALLER: “something isn’t quite right. When I do X, Y and Z, I get the following error message [copies and pastes complete error message].”

TOM: “reproducible bug reports make me deeply happy. I’ve just committed a fix in svn. Would you like some ice cream?”

Apostrophe Speaks Your Language

March 24th, 2010 by Tom 2 Comments

Apostrophe en francais
We’ve just released version 1.0.9 of Apostrophe, our content management system. This is an exciting release because it includes French, German and Spanish user interfaces, as well as improved support for translating the actual content of your site into multiple languages.

If you visit our demo site and switch languages you’ll see pages with pretty translated chrome but no content. That, of course, is because our own demonstration web site’s content is currently only available in English. Feel free to play with translating it, but keep in mind that the demo site resets at the top of the hour. If you’re seriously interested in translating our demo site’s content to go along with the nicely translated interface, join the Apostrophe google group and drop us a line to get involved.

Interested in putting this power to work on your projects? Visit apostrophenow.com to find out how we can help you. If you’re a Symfony developer or just a ballsy webmaster who doesn’t mind learning some new tricks, head straight for the Apostrophe manual to check out our installation guide. We do documentation in a big way.

We’d like to thank Quentin Dugauthier (French), Frank Wenzl (German), and Pablo Godel (Spanish) for their hard volunteer work on the translations. Others are working hard on Portuguese and Greek and have been patient through our growing pains as we mastered the fine points of UTF-8 and character sets in our translation system. We’ll be sure to thank them by name when they are done, so you don’t nag them too much now. (:


There are, of course, other important fixes and improvements in Apostrophe 1.0.9, including one security fix. Here’s the list:

  • A computer abandoned by an admin who has logged out can no longer be used to edit slots the admin previously edited using cleverly constructed URLs (only an issue on the same computer and if the PHP session has not ended). Note that you must upgrade your myUser class in apps/frontend/lib to extend aSecurityUser rather than sfGuardSecurityUser to get this fix (aSecurityUser is a subclass of the latter)
  • Global or virtual-page media slots can be edited successfully on Symfony pages that are not CMS pages
  • Unpublished pages no longer interfere with aNavigationAccordion layout
  • Fixtures no longer use HTML tags our filters remove on edit
  • Plaintext slots now autolink URLs and email address (obfuscated) as described in the manual
  • Search engine updates refactored, search engine now updates when you save page settings
  • ‘tool’ option to rich text slots now correctly activates the FCK toolbar set name you specify
  • Slot save/cancel buttons now survive form validation passes properly (thanks to Spike)
  • Date widget is XHTML correct (thanks Spike)
  • Engines now work when the CMS is not mounted at the root of the site (important for those using the CMS as a subfolder of a site dominated by other Symfony modules)
  • Attempting to attach a list of zero items to a slideshow no longer results in adding all items in the media repository
  • Cross-browser and XHTML strictness fixes
  • Moved lib/base to lib/action (you must symfony cc)
  • Lost connections between existing media slots and media items when editing other media slots: fixed. Also, slideshows etc. are no longer removed on “cancel,” and selecting zero media items no longer selects all media items
  • i18n of over 99% of the admin interface (many thanks to Quentin, Galileo, Frank, Pablo and Fotis), new languages are regularly being added to the demo project’s apps/frontend/i18n folder
  • More convenient i18n of your site content (temporary titles supplied, all navigation controls work for pages whose titles are not yet translated)
  • Aesthetic upgrades
  • Superadmins can grant superadmin status
  • Some demo-specific styles moved from a.css to demo.css
  • Optional language selector in a/login partial
  • Global admin buttons now have separate names and labels (labels can be internationalized) and a documented way to add and reorder them in app.yml
  • Alpha channel is now preserved when rendering PNGs from a PNG original with gd (not available with netpbm)
  • Compact PDF slot style, without inline preview (you can override this in aMediaPDF/normalView if you want it back and you have ghostscript)
  • Better IE6 upgrade message
  • Various private methods now protected for easier app level overrides

Apostrophe has a Point of View

March 22nd, 2010 by Geoff 1 Comment

The Apostrophe Google Group has become pretty active lately. It has been so great to connect up with people around the world that are using Apostrophe to make sites for themselves or their clients. It feels great to be able to share something that we have labored long and hard on. It is especially exciting to know that we scratched our own itch and made something that works well for us and for our clients. It’s also exciting to see it helping with other peoples’ itches.

We love the passion that people have about Apostrophe. We have seen that in many forms including the suggestion of new features. What I want to make clear, though, is that Apostrophe does have a point of view embedded in all of the decisions that we make as we design and build it. If someone asks for a new feature, I always ask, “What problem are you trying to solve?” or “Can you describe a situation where the need for this feature came up?”

I think that surprises some people. They assume that our goal is to have the longest list of features of any web content management tool. In fact, that is not our goal. Our goal is to create a tool that is joyful to use while still being powerful.

The reason people fall in love with Apostrophe is because we have worked very hard to keep it simple and elegant. We are always going to ask the tough question of what problem does this solve. (Can it be solved with what is already built?)

We will never build a feature just because we wonder if it can be done. We are not in a feature race with anyone. We have found that sometimes people pick something based on a list of features, but our clients and users pick Apostrophe based on how they feel when they use it (think Tiffany’s, not Walmart). They feel empowered and excited. They have often mentioned the joyfulness of using Apostrophe. We have even heard people gasp and giggle when editing content for the first time.

All that said, we don’t want to be the solution for everyone, but we hope you enjoy using Apostrophe if it works for you.

________

Note: I just finished reading Rework by Jason Fried and David Heinemeier Hansson of 37 Signals, and it reminded me that I should be putting down more of our thoughts on Apostrophe. These decisions have been embedded in Apostrophe from the beginning, but we have not always been good about communicating them.

Apostrophe: the bipartisan CMS

March 22nd, 2010 by Johnny No Comments

Ok, so it’s Friday and we’re all psyched for the weekend:

ok ok, it’s Monday but you can’t let that stop the dance party!

Faster, PHP! Kill! Kill!

March 8th, 2010 by Tom 15 Comments


PHP is easy… as programming languages go, that is. You can build sites in a real hurry.

With frameworks like Symfony, you can build them faster still, and follow modern programming practices at the same time.

And Apostrophe strips away yet another layer of effort if your site calls for a content management system.

Yes, Java has more raw speed, all else being equal (which it never is). But as the LISP programmers used to say, “a moment of regret, a lifetime of convenience.”

Still, sooner or later success catches up with you and you want your site to cope with Serious Traffic… or cope with moderate traffic on a cheap virtual machine… or at the very least, not be dog-slow with just a handful of users on the system.

There’s a lot of advice out there about optimizing PHP code, some of it well worth your while. And there’s excitement about HipHop, Facebook’s new native code compiler for PHP. But these are drastic steps that require you to rewrite your code or adopt less proven and more awkward ways of delivering your code.

Justified? Sure, sometimes, on the biggest projects in the world (like Facebook) (*). But as Donald Knuth says, “premature optimization is the root of all evil.” That’s because tweaking your code for speed’s sake usually makes it harder to maintain and less adaptable to new requirements.

What most developers don’t realize is that there are three major factors that typically slow down PHP projects based on frameworks (like Symfony or, sigh, Drupal) so much that code profiling and database query redesign don’t even have a chance to become relevant factors. Fix these things first before you worry about other issues:

1. Compiling code over and over and over. Would you wait for your Mac to recompile MacOS X from source code every time you boot it up? Of course not. How about every time you fill out a dialog box? That’s pretty much what you’re doing every time you access a PHP-driven website that doesn’t use a bytecode cache.

2. Waiting and waiting and waiting for web browsers to make another request, pinning down web server processes that your other users need. By default Apache usually lets browsers hold on to a connection for up to 15 seconds just in case they ask for more. This is a good thing in many ways, but 15 seconds is far too long. Which leads us to #3:

3. Tying up a “fat” web server process with PHP on board for every request, even requests for the zillions of little static PNGs that probably make up your page design. (**) A typical Apache web server configuration with mod_php suffers from this flaw, fatally limiting the number of simultaneous users you can handle.

So what can we do about these problems? Quite a bit as it turns out. I’ll start with the low-hanging fruit and move on to the tougher stuff. The fascinating common thread with all of these suggestions: no changes at all to your PHP code.

(more…)

Apostrophe 1.0!

February 11th, 2010 by Geoff 3 Comments

We have labored long and hard to prepare for the 1.0 release of Apostrophe. As we said before, it has been stable and in use for a long time now, but we wanted to mark a moment in time with an official release.

Probably the easiest way to get a feel for Apostrophe is to go to our demo site and login. The user name is “admin” and the password is “demo”. Keep in mind that the content resets itself every hour on the hour.

If you want to get your bearings before you you do that, head over to the newly revamped Apostrophe site. For the very interested, you should consider checking out our extensive README which includes an Installation section, an Editor’s guide, a Designer’s guide and a Developer’s guide.

Now for some of the highlights.

Slots!

Apostrophe Slot Buttons

There are rich text, image, slideshow, video, button, PDF, Raw HTML, and other slots built in. If you have used Apostrophe before, you know that you can add a slot on a page, choose what you want to place and then reorder it. New custom slots can also be made for any project.

Slot Options

Apostrophe Slideshow: Compact Option

For some time we have wanted to be able to give you more fine control of a specific slot. For instance, what if you wanted to make the background color of a some text slots yellow, and some white? In the past that would have required two slots. Now, it can just be an option of the same text slot. In this screenshot, you can see that we allow you to switch between different types of slideshows. Make sure you try that out in the demo. It is probably our favorite new feature. We really sweated the details on making sure the option control was contextual. We hope you appreciate the effort.

There are many other new features and highlights, but for the moment I will leave you to find them in the demo (remember: user is “admin” and password is “demo”) or in the documentation. (We promise to highlight these in future posts.)

So, what does this mean to you?

Well, it depends. If you are a PHP developer with Symfony skills you can get started today. From our README:

Right now Apostrophe is best suited to PHP developers who want to make an intuitive content management system available to their clients. Apostrophe is very easy for your clients to edit, administer and maintain once it is set up. Right now, though, Apostrophe installations does call for some command line skills and a willingness to learn about Symfony. We are working to reduce the learning curve.

If you are a front-end developer and want to get started using Apostrophe, talk to us. We are in the process of working out a package where we set up a staging server with Symfony and Apostrophe running on it. We would train you on templating in Apostrophe and you should be up in running in a day or two.

If you don’t want to go that route, here is what we suggest:

Front-end developers who do not yet have PHP and Symfony skills but wish to set up an Apostrophe site by themselves should consider tackling the Symfony tutorial to get up to speed. It’s not necessary to complete the entire tutorial, but it helps to have at least a passing familiarity with Symfony.

If you just think Apostrophe is rad and you want one… like now, just drop us a line. We would be happy to design and implement an Apostrophe site for you. You would be joining some good company if you do.

Surprise!

We (more accurately Tom) decided to build an extra slot last night as a gift for making you wait an extra day. Isn’t that nice of us (him)?

If you are observant you may have noticed an extra slot in the screenshot above. So without further ado, we present the Feed Slot (commonly referred to as the RSS Feed slot, but it will take Atom feeds as well). Use this to bring in your Twitter updates or maybe our Apostrophe SVN code commit feed.

Feel free to thank us anytime. (We like expensive beer.)

This is really just the beginning. We hope you have an opportunity to check out Apostrophe. We would love to hear from you if you do. Comments below would be much appreciated (and read), as well.
__________________

Don’t forget to follow us on Twitter for on-going updates: @apostrophenow

If you are a developer, the Apostrophe Trac is the home of the open source community. On that site you can open support tickets, browse and contribute to the Wiki, and access and potentially contribute to the source code via svn (you’ll need to contact us if you want write access).

Also, please join the Apostrophe Google Group if you want to tap into the community of people using Apostrophe to get support and help.

Oh So Close!

February 10th, 2010 by Geoff 2 Comments

We have decided to push back the release of Apostrophe 1.0 until tomorrow.

We are truly in the home stretch. Just hitting a few bugs, finishing up documentation and adding some instructional content to the demo site. To tide you over, we are publishing this screencast of how you add video to a project by searching YouTube from within Apostrophe. Note how we bring in associated metadata (url, title, etc). For the record, you can add video by pasting in embed codes from countless other services like Viddler and Vimeo.

Please tune back in tomorrow.

P.S. We are not blaming the snow for the delay, but did want to note that we are certainly under a deep white blanket here in Philadelphia.