30 Minutes with Active Media Architects

      Comments Off on 30 Minutes with Active Media Architects

Flash and PHP are becoming a popular pair of technologies. It seems that every time I turn around, I’m seeing new Flash front-ends that are talking to PHP back-ends and doing some very interesting things. One of the most interesting things I’ve seen though has to be MyKleenexTissue.com. I was given the opportunity to sit down and talk with Andy Lintner, Director of Application Development, Jon Aniano, General Manager, and Jeff Kazmierski, President and Creative Director; all of Active Media Architects, the team behind MyKleenexTissue.com. Along the way we talked about the technology decisions they made, and the process they used for development.

Good morning gentlemen. First let’s talk a little bit about how the project got started. How did you get involved with Kimberly Clarke?

John: It really came down to just answering the phone. Funny enough it was last summer, the phone rang and I answered it and it was a representative from Kimberly Clarke on the other end. At that time we didn’t know it was them. Someone from their research team was calling around and they basically found us via Google. They were searching for a solution provider to get “something” done. At this point we didn’t know what something was. At that time, he didn’t want to disclose who he was.

He started asking me questions like “Have you ever built something where people design something online?” He was being pretty vague but I got a feel for what he was saying. I told him that we do have this one application that we designed specifically for that. At that point in the conversation he was like “your kidding me, you just happen to have something like this?” So we setup a demo for our Activma Canvas application that we had just rolled out for another customer of ours, greetingbanners.com.

He called back in a couple of days for the demo and when it was over he said he couldn’t believe the application was as good as it was. He immediately sent over the paperwork for us to review. It wasn’t until we had talked to him a couple more times that he actually identified himself as a representative of Kimberly Clarke. After we finished all the paperwork, he began laying out the idea the had for their new Kleenex Oval package design.

That’s amazing, so exactly how big is your development team?

Well, there are two answers to that. The development team is the whole company, but the PHP development team is probably only 75% of the total. That would be 6 programmers full-time. All the applications we develop use PHP in some way.

When considering the options for building a Rich Internet Application, why did you choose Flash for this project?

When we first started kicking around the idea of the Activma Canvas, I really wanted to use HTML. I wanted to be able to drag things around via JavaScript and build something around that. Realistically though, we just couldn’t do it all with JavaScript. One of the first roadblocks we hit was that we couldn’t do things like rotate an image using JavaScript. I even though of sending the image back to the server and using PHP to actually do the rotate, but that really wasn’t feasible. After looking around at what we wanted to do and the technologies that could possibly do it, Flash was really the only choice for building something this dynamic on the front end.

So you did consider other technologies before you settled on Flash?

Yes. We had Flash in mind, we knew it was an option and we knew it was out there. We tried JavaScript using all the techniques out there to build dynamic front-end pieces. When it came down to it though, for an application this demanding, Flash was the best option for us.

There are plenty of “Design your own” whatever sites out there. Particularly with T-Shirts. They use anything from a Java applet all the way down to pure HTML to build their user experience. We could have gone with another technology but we didn’t feel that we would be able to get the fluid user interface across all platforms if we didn’t use Flash.

Once you got moving going the project underway, what were your biggest obstacles that Flash presented? Conversely, what areas did Flash streamline the process for you?

I think the biggest issue was trying to tie together Flash and PHP to generate a PDF. The way the application works is we build a PDF for the final output and that is what is sent over to the printers for printing.

So we were dealing with things like trying to reconcile Flash’ coordinate space and how Flash rotates images within that space, with the way a PDF works. So we really had to get down into the nitty-gritty of how Flash actually works.

You said you export the final document to a PDF to send over to the printers. Which PDF library do you use in PHP to do that?

We use fPDF. We liked it because it was written entirely in PHP. We did have to adjust it some to make it work the way we needed it to work. In our system, Activma Canvas generates XML that we then use PHP to process and then hand of the results to fPDF to generate a PDF for us. Because fPDF is open source, we had the freedom to make the changes we needed to make. The commercial libraries we looked at couldn’t be modified to suite our needs.

What tools did you use to connect your Flash application to PHP?

That communication layer is built into our framework. I am familiar with some of the tools that are out there for connecting Flash and PHP but we’ve had that communication layer built into our framework for a long time now and we trust it. It was just the logical choice for this project.

Also, I should mention, that while there are a lot of great options out there, given the timeframe we committed to for this project, we really needed something that we were familiar with and confident in.

Beneath it all, does your Flash use some type of Web API to communicate with your PHP code?

It’s actually a combination of two techniques. Most of the communication between our front end and backend processes is handled by the JavaScript. For instance, if you chose to rotate an image, and click the rotate button, all the controls are rendered in HTML. We use JavaScript to instruct the Activma Canvas piece to actually do the rotation. The other main communication piece is when the user wants to save the results. For that we are using Flash’s native ability to send XML payloads to the server. PHP then receives the XML, creates a DOM and parses it to create the PDF.

The decision to use JavaScript for the rendering of the interface and only use Flash for the Canvas area itself was a conscious one we made in the design phase. Really it comes down to our wish to use more HTML and CSS than just write an entire Flash application. I think the driving thought behind the decision was that we are more of a peer-coding team; several of us will be working on the same application together. We like the fact that by using HTML, CSS and JavaScript, more people can be in the code than if we had everything in one big fla file. This helped us be more responsive and flexible given the timeline that Kimberly Clarke had set for the project.

Let’s talk about the interface a bit before we move on into the PHP side of things. What, in your mind, makes the interface cool?

The thing we like about this interface is it appears simple. We went through four or five revisions to get the functionality just right. After all, what we are really dealing with here is a non-Internet savvy crowd. In our minds, our target audience was our parents. We count it a triumph that we delivered an interface that only has a single popup window and that only on Safari. To us, overcoming these obstacles was the best part of the project. We would sit our uncles and aunts and parents down in front of the application and tell them “try and use this”. Then we’d stand behind them and tear our hair out because it wasn’t going smoothly. We would come in the next morning though and use that feedback to make it better. We are real proud of the final iteration of the interface.

Ok, lets move on now and talk about your framework for a bit. Your web site touts your framework being written in PHP 5, therefore it can’t be that old. Why did you make the conscious to move to PHP 5?

Our framework actually evolved over time. It was originally written in PHP 4 and has since been migrated to PHP 5. It’s now almost entirely written in PHP 5’s object model. It just made sense for us to go that way. The differences between PHP 4 and PHP 5 make our job a lot easier. It’s great to be able to rely on a framework that is built on solid object oriented features instead of some of the more procedural things we had to do in PHP 4.

Also, with the wider adoption of PHP 5 among hosts, we are now able to build in PHP without fear of limiting our hosting options for our clients. We are seeing PHP 5 becoming quickly adopted among the hosts that we use.

Since we are talking about frameworks, why chose to write your own instead of getting involved in one of the framework projects like symfony, Zend Framework or CakePHP?

Let me start by saying that when we originally had the idea of building a framework in PHP, the Zend Framework wasn’t an option. There were frameworks out there but none of them matched up with what we were looking for. We built our framework on what we knew our clients needed and made it so that it was easy for us to quickly give them the things that they wanted. Rather than trying to adapt one of the frameworks that existed at the time and have to worry that future changes in the framework would leave us stranded, we just decided to build it ourselves. This way we know it’s save, we know that it’s continually growing and it’s our developers we go to when something needs to be changed.

Also, it comes down to a business decision to some extent. Way back in the days of the bubble, companies like ours were going out of business left and right. Previous to that, companies were doing sites like this with giant budgets and throwing parties every time they launched something. We had to distinguish ourselves, set ourselves apart from the “us too” crowd. What we really wanted to do was make sure the company had a value. We wanted to make sure that we had a tangible product and that we could move quicker than anyone else so that people would come to us as a unique solution provider. So when we started developing our framework we had all this in mind. There were commonalities in the clients we had now and the ones that we wanted to attract in the next two to three years.

Now that we have our framework in place, it’s very easy for us to answer the question “Can you do that?” with “yeah, we can.” This helps set us apart in a crowded market. It gives us enough of a differentiation so that when Kimberly Clarke needed something different done, they came to us. We want to be the destination for people who come to us because they want complex, highly customized and trustworthy web applications.

When we originally talked about this interview, you mentioned that you use Zend Platform. Can you tell us what role does Zend Platform play in your development and are you using it in production as well?

Let’s split that up into two questions. First, let’s talk about development. During the development phase of this application, Zend Platform was really invaluable. Zend Studio’s ability to tie into Platform and do real-time debugging is really an amazing contribution to coding in PHP. The ability to step through code, inspect variables, all real time makes such a difference over the old way to doing it like echoing variables out to the screen and other techniques you have to resort to without these tools. When we made the decision to use Zend Platform, we knew that we could put aside our need to develop session clustering. Zend Platform had that handled. In addition, Zend Platform was able to help us pinpoint some of the early errors because of it’s error reporting. The configuration manager helped us when we were setting up the production environment. So in the development environment, we used it in a lot of different way.

In the production environment, clustering was the key feature that attracted us to Platform. We knew that we would be getting a lot of traffic to this application and the things we are doing on the server side are very resource intensive. So we knew we would have to be able to scale across servers quickly. The PHP intelligence has also been a major feature for us. We’ve been able to spot issues before they become major problems on the site. Even if an individual user reports an error, we are able to go into the PHP intelligence module and track down the error and see exactly what happened.

The configuration management module has allowed us to manage multiple servers from a single interface. Before that we would have to ssh into individual servers to change the settings in the php.ini. Now it’s just a click. It’s a very friendly tool and it’s sped up our setup and troubleshooting time tremendously. These facts are underscored when you consider the size of the audience we are reaching here and the resources necessary to do what we are doing.

It has really helped us do the initial scale out. Moving forward, we have confidence that when we need to scale further, Zend Platform will help us. It all comes down to peace of mind.

Let’s talk a bit about your company. I know you guys are always looking for new talent. What do you look for when considering a developer candidate?

We were just recently talking about this. It’s really tough to find qualified developers for the positions we look for. We are trying to figure out if it’s our area? Michigan is not doing very well at all right now so the pool of available candidates is shallow. I go home at night and think, “Man, should we be in New York? Texas? Florida? Where are all the good developers?” Then I start thinking about the people we have here now and where they came from. It’s not easy because in our area we can’t just cast out a big net and bring in tons of resumes form CareerBuilder or Monster, we actually have to dig deeper. We’ve had to be a little more creative in the channels we use to find developers. We have started looking for those developers who may work their regular day job but then go home, hop on their Linux box and start plugging away. In a nutshell, we are looking for great developers who want to work with us and are willing to come to Michigan to do it.

As far as the actual requirements, we are looking for developers who know PHP like the back of their hand. We want people who know PHP 5, who know object oriented principals. People who can also do the front end side too with JavaScript on the front end. Not just simple form validation in JavaScript though. We need people who know how to build these new projects we are working on. It boils down to this, we are looking for people who are intimately familiar with the technologies that we are building with.

The programmers we have now are all really great. They are a microcosm of the PHP development community and the web development community as a whole. They are intelligent, hard working and diligent. Most important though, they have the ability to solve problems. When you think about the people that regularly use PHP, they are problem solvers. They use PHP because it helps them solve the development problems they are having. They have these great ideas and the knowledge of computers to help them work through it but they need a tool that will help them build it and not get in their way. So many of them grab PHP. Those are the kinds of people we need; people who know these tools but also know how to solve problems with them.

Another thing is the working environment here. We have a strong sense of not outsourcing. I don’t mean we don’t send things out to countries where developers make less, we don’t use telecommuters, we don’t use freelancers, everybody working on the project is sitting right here. We have a very open environment that really fosters communication. The guys and girls all work together in the same “huddle” for lack of a better term.

We are in a beautiful area of Michigan, right on the lake, we are close to Chicago, Montreal, New York, it’s really a great place. It’s the exact opposite of working on Madison Ave. in a big agency where you’ve got all those bureaucracies to deal with. We are really looking for developers who are willing to say, I like what you do, I want to come there and work with you. We want to welcome those developers into the company and we want them to plant roots and blossom here.

Ok, last question; you’ve set the bar pretty high with mykleenextissue.com, what’s next?

Well, we knew you were going to ask that and our answer is pretty simple. Just wait. We’ve got some big projects in development right now and some in beta. We will be launching some really interesting projects in the near future.

We’d like to give a shout out to one of our customers who recently launched switchplanet.com They are currently in beta. It’s got a real unique interface and we are real excited about it.

I’d like to thank Andy, Joe and Jeff for taking time out of their busy schedule to talk with me. I always find it interesting to see how people are mixing technologies to build something new. I think Active Media Architects definitely fits that description.

Do you have an interesting project that you want to share with others? If so, drop me a line at cal@zend.com and let’s discuss it.