P'unk Avenue Window

Archive for March, 2010

Mix Tape

March 28th, 2010 by Geoff 1 Comment

IMG_2289

We will be expanding soon to create a project room for P’unk Ave (war room, for you violent types). The expansion space is in the row home next door to the studio (in fact, it was the original studio space of P’unk Avenue.)

In preparation, I have been going through some boxes that were stored there.

In one of the boxes, I found some mix tapes. Over the years, I have been paring them down. (Maybe 4 years ago, I put more than a hundred on the steps of the studio with a free sign and they disappeared within a couple of hours.) For some reason, I have had trouble deaccessioning the ones that were made for me or ones I made together with a good friend.

For instance, the one pictured above was made with my friend Steve. He brought over his records and CDs and together we made this mix. As many of you remember, mix tapes were made in real time so this process took a couple of hours, a few beers were consumed and many things were discussed. I don’t recall what we talked about, but I have such a warm memory of that evening.

It has been hard to imagine parting with this tape, since one glance at it and I feel that all is right with the world for an instant. Taking this picture has been cathartic, though. This tape is in the box destined for Goodwill this week.

Philly Symfony Users Group: ASSEMBLE!

March 25th, 2010 by Tom 3 Comments


Sure, geeks have grabbed Philly by the balls, but that doesn’t mean we can’t sharpen our… skills… where am I going with this?

Oh yeah: the Philly Symfony Users Group. We use the Symfony framework for PHP development all day long. It’s been the basis for every single client project we’ve done since… hell, before I came aboard two years ago. It’s the foundation on which Apostrophe is based. We cannot imagine suffering through web application development without it (or at least something on a similar plane of object-oriented, thoroughly modern, Model-View-Controller awesome, like Zend Framework).

But we haven’t met a lot of other Philly-based Symfony developers. And this is where you come in. We’d like to spread the word and help aspiring local Symfony developers get their boots on the ground. And if other experienced Symfony developers are out there reading this, we’d really, really like to get to know you better.

Announcing the Philly Symfony Users Group! Every second Thursday of the month at 6:30pm, you are cordially invited to our office at 1168 East Passyunk Avenue. We’ll start off with informal discussion (and beer), then someone will present on an aspect of Symfony development.

WHERE: 1168 E. Passyunk Ave
WHEN: 6:30pm, Thursday April 8th
WHAT: Symfony Users Group
PRESENTATION: “Getting Started with Symfony,” Tom Boutell

At this first meeting I’ll talk about the process of installing Symfony, PHP and Apache on your own computer, focusing primarily on what it’s like to build a simple Symfony 1.4 web application.

You don’t have to be an experienced Symfony developer to attend! We welcome all PHP developers and those who aspire to become PHP coders.

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!

Beware of Geeks Bearing Gifts

March 11th, 2010 by Tom No Comments

@odysseus is now mayor of Shiny Wooden Horse Disco Everybody Come Check It Out! on #foursquare!

@agamemnon just checked in from Shiny Wooden Horse Disco Everybody Come Check It Out! via gowalla

@cassandra IT’S A TRAP!

@priam @cassandra SHUT UP ADMIRAL AKBAR THIS HORSE IS AWESOME

@agamemnon is now mayor of Sacked Ruin of Troy BOOYEAH! on #foursquare!

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…)