Passing the AMFPHP torch

February 4th, 2010

I am stepping down from being the lead of AMFPHP as of January 2010 and passing the torch to Ariel Sommeria and Danny Kopping. The goal of AMFPHP was as follows:

  • Quick installation and implementation
  • Nothing required – PHP4/PHP5 compatible, no extensions needed
  • Low footprint, lightweight, fast
  • Convention over configuration (service and class mapping)
  • Can be embedded into a framework (see CakeAmfphp , Seagull )
  • Services are “non-specific” PHP classes that are portable to anything without code change
  • Productivity tools included (service browser, code gen, profiling)
  • Batteries included – XML-RPC, JSON
  • Not a framework by itself (use your own)
  • Examples
  • Mimic the AMF specification

When I started AMFPHP I was using Flash 8 to build RIA’s; boy the world has changed! I honestly can say I don’t personally agree with the goal of AMFPHP anymore. A week ago Patrick Mineault called me out on my motivation; he was right. I have since migrated to using Flex and even had the amazing opportunity to work on Flash Builder 4’s PHP integration. Overall my mission has changed and with it I tried to change AMFPHP. Sorry everyone; I didn’t even notice I was doing that! Overall I am probably much better at slinging PHP code than moderating a project. ;-) With that in mind I will still be committing updates and answering questions for both projects.

Flex Builder 4, Security (Zend_ACL), Robust Logging, Robust Authentication (Zend_Auth), ORM and Master/Slave DB’s (Zend_DB), Messaging (AMQP), 5.3 Naming Conventions, clean New BSD license, decoupled serialize, OOP code base, and a massive service catalog are why I will continue to work on Zend Amf. I believe that Zend Amf is a great solution for anyone looking to build RIA’s in PHP.

I’m sure AMFPHP and Zend AMF is dealing with a larger problem that Adobe is dealing with. How do we keep those that are getting started and need a quick solution and those that need enterprise architecture all happy under the same name; Flash. I wish Danny and Ariel the best of luck and will give them my full support with questions and introductions to the community at large! They have already released an updated patch available for download today!

AMFPHP, Flash Platform

10X Zend Amf Performance enhancements — please test!

January 18th, 2010

Mark Reidenbach from everytruckjob.com has submitted a awesome patch for Zend Amf that creates a huge performance increase. Thanks so much Mark! I have also added a reference check optimization that uses SPL_object_hash to quickly see if an object has been seen before or not. Overall you should see a big performance increase. The test case I used was the James Ward’s census data from my ZendCon talk which consists of random people objects ranging from 1 – 100 duplicates totaling 5k total rows.  Xdebug profiling analyzed by  KCacheGrind showed roughly a 10X increase in performance!

The question is did all of these changes introduce any bugs? I have not been able to find anything and all of the tests pass. However with such a major change I would really appreciate you downloading the attached file and overwriting Zend/Amf/* with it’s contents. Please report any issues in the comments here or better yet on the actual bug ZF-7493 If all goes well we will try and get this into the 1.10 release.

Amf_performace.zip

Flash Platform, Zend_Amf

T8DESIGN Changes Name to T8 Webware

October 26th, 2009

T8DESIGN Changes Name to T8 Webware
Financial Web strategy firm introduces new name to better reflect full scope of offerings, broadened expertise

Cedar Falls, IOWA, Oct. 26, 2009 – T8DESIGN, a provider of Web development, management and hosting services for the financial industry, today announced it has changed its name to T8 Webware. The new name more accurately reflects the full range of T8’s Web services as well as the company’s overarching strategy that focuses on providing financial institutions with a holistic, constantly connected Web experience.

“T8 originally began as a design and consulting company, but as our clients and their consumers’ needs for Internet tools evolve, we have identified an opportunity to completely restructure customer experiences on the Web,” explained Wade Arnold, CEO of T8 Webware. “With sophisticated yet simple content management tools, any size financial institution can leverage its Web site as another channel to position cross-sell opportunities to its customer or member base.

“We believe that the [new] name, T8 Webware, better encompasses the comprehensive Web experiences we deliver to our customers, and also opens the door for additional functionality as we continue to grow the digital solutions we offer.”

T8 Webware provides its customers with Web sites that are custom-designed to each financial institution, never derived from a template. The company offers Web site development, hosting and design and remote backup services. FREEDOM8, its content management system, additionally enables financial institutions to effectively update and alter their Web sites’ text and images. The tool’s ease of workflow allows T8 Webware customers to maintain an active Web presence, therefore improving their online traffic and organic search results. All of the company’s Web sites are mobile optimized, offering financial institutions’ customers the instant information that they need in an easily accessible format.

About T8 Webware
T8 Webware is a strategic Web development, management and hosting firm that caters specifically to financial institutions. The company provides progressive, non-template driven Web sites to more than 150 banks and credit unions, all of which are mobile-enabled. T8 Webware’s philosophy is to help financial institutions leverage their most powerful marketing tool, their Web site, to drive new business and build an online marketing presence. Most customers experience an ROI within months because of cross sales, while Web traffic is also dramatically improved.

The company’s content management system, FREEDOM8, enables financial institutions to provide updates to their Web sites by any authorized user, from any location at any time, while enforcing FFIEC guidelines and FDIC functional compliance. The user interface reflects a word processor format, making the system easy for anyone to use. For more information, visit www.t8webware.com or call 877.884.3327.

T8DESIGN

Zend Con 2009 session files

October 21st, 2009

Zend Con ’09 has already been a great event. If your not here you need to come in 2010! Attached are the files for my Zend Amf talk on Advanced Data Communication with the Flash Platform

Session Files

Here are all the resources too!

Zend AMF Downloads

http://framework.zend.com/download/amf

Adobe Flash Builder 4 beta 2
http://labs.adobe.com/technologies/flashbuilder4/

New PHP Features in Flash Builder 4 – Part 1: Data-Centric Feature Overview

http://ria.dzone.com/articles/new-php-features-flash-builder

New PHP Features in Flash Builder 4 – Part 2: Using Zend AMF and Flash Remoting

http://ria.dzone.com/articles/new-php-features-flash-builder-2

James Ward Census

http://www.jamesward.com/blog/2007/04/30/ajax-and-flex-data-loading-benchmarks/

ActionScript 3, Flash Platform, Speaking, Zend_Amf

ZF 1.8.4 breaks addDirectory()

June 27th, 2009

Looks like a bug was introduced in 1.8.4 that breaks class loading from the addDiretory() method. If  you use require_once with setClass or just use the 1.8.3 Zend_Amf_Server class file it will work. Unfortunitly I didn’t write the affected change but hope to have

=== Update July 1st 2009 ===

For some reason in 1.8.4 package there’s an old version of Zend/Loader/PluginLoader.php.

Take the new one here:

http://framework.zend.com/svn/framework/standard/branches/release-1.8/library/Zend/Loader/PluginLoader.php

It should work with it and the Zend Framework team is going to patch the 1.8.4 release on June 2nd to resolve this release issue.

== Update July 7th 2009 ==

http://devzone.zend.com/article/4808-Zend-Framework-1.8.4pl1-Now-Available

This patch-level version corrects a missing patch for Zend_Loader_PluginLoader that provided some critical functionality for Zend_Amf users. If you utilize that component, you are encouraged to upgrade immediately; for all other uses, the release tarball remains the same as the 1.8.4 version, and upgrading is left to your discretion.

Flash Platform, Zend_Amf

Major Zend Amf updates for 1.8.4 release

June 23rd, 2009

Lots of changes made to Zend Amf made there way into Zend Frameworks next mini release for 1.8.4. I thought that I would run through the major changes. Special thanks to Stefan Klug for all of the patches that he produced! Absolutely grateful sir! This is probably the biggest update to the system since the first release. Please make sure that you test 1.8.4 before you push it into your production environment. Why? Well if your like me you probably built a couple work arounds for some of these bugs. Those work arounds may no longer work once the bug is fixed!

Major Changes

ZF-6641 Shared references are duplicated
ZF-6205 Serializer does not support cyclic references
ZF-6393 Wrong Amf0_Amf3 reference counting
ZF-5382 Multiple calls seems to break the deserializer.
ZF-6625 Zend Amf can load any instantiated PHP class. Security

Minor but significant changes

ZF-6975
Adobe Flash Builder 4 wizard now supports data types for introspection.
ZF-6992 Negative integers on 64 bit system is resolved.
ZF-6775 Unable to send Array’s from Blaze DS.

The 1.8.4 release has already been tagged and should come out sometime today 6/23/2009

AMFPHP, Flash Platform, Zend_Amf

ArrayCollection beta update in Zend Amf: thoughts?

June 15th, 2009

I started working on a project this week that extensively uses ArrayCollection’s and I found that ZendAmf could use a couple additions in order to have some utilities for working with ArrayCollections in PHP. The new feature relies heavily on PHP’s SPL and specifically Countable, ArrayAccess, and IteratorAggregate all of which require PHP 5.2.3 or greater.

The following file can be added to your Zend Amf project to play with some of these features. Please let me know if there is anything else that I should add before it is added in the next release. Please post feedback to the blog or directly to the Zend Framework feature request.

Alpha Zend_Amf_Value_Messaging_ArrayCollection

To create an ArrayCollection

$this->_data[] = array('foo' => 'foo1', 'bar' => 'bar1');
$this->_data[] = array('foo' => 'foo2', 'bar' => 'bar2');
$this->_arrayCollection = new Zend_Amf_Value_Messaging_ArrayCollectionTwo($this->_data);

To Create an ArrayCollection from a Zend_Db_Table_row

$table = new Bugs();

$select = $table->select();
$select->where('bug_status = ?', 'NEW');

$rows = $table->fetchAll($select);
$this->_arrayCollection = new Zend_Amf_Value_Messaging_ArrayCollectionTwo($rows);

To alter an element of an ArrayCollection

$this->_arrayCollection = new Zend_Amf_Value_Messaging_ArrayCollection($this->_data);
$total = count($this->_arrayCollection);
echo($total); // outputs 2

To get the size of the array collection


to iterate through the ArrayCollection

$count = 0;
foreach($this->_arrayCollection as $row) {
    $count++;
}
$this->assertEquals(2, $count);

To manipulate an ArrayCollection based on keys.

$this->_arrayCollection = new Zend_Amf_Value_Messaging_ArrayCollection($this->_data);

// See if the offset key exists
$boolean = $this->_arrayCollection->offsetExists(1);

// Alter or add the row at they key offset of 1
$data = array('fooSet' => 'fooSet2', 'barSet' => 'barSet2');
$this->_arrayCollection->offsetSet(1,$data);

// Remove the row at the offset key of 3
$this->_arrayCollection->offsetUnset(3);

// Get the row at the offset 6
$row = $this->_arrayCollection->offsetGet(6);

To change an ArrayCollection to an Array

$standardArray = iterator_to_array($this->_arrayCollection);

To append another row to an ArrayCollection

$this->_arrayCollection->append(array('kung' => 'foo', 'Bruce' => 'Lee'));

– Update –
From a PHP developers perspective this makes little since. I am asking that you comment why you like the new ArrayCollection. I am creating something that can already be done with an array in PHP and then just wrap it into a stub ArrayCollection class. The two things that action script does not do with an array is:

it can not handle sparse array’s. {1=> one, 2=>two, 4=>four} this is a sparse array and Action Script will try and pad the array or just make it an object.

Actionscript can not use strings as the key in the array so it just uses an object. If you want a numerically keyed array of objects they call it an ArrayCollection.

Both of these concepts are handled in PHP as just an Array. So there is no reason that you could not use the Array and then pass the array into a simple ArrayCollection class for it to be parsed back to flex. So when you see the new ArrayCollection class what are the use cases that you feel you would use the class for? Is it just a convenience tool or does it add complexity that does not need to exists?

ActionScript 3, Flash Platform, Zend_Amf

Adobe Flash Builder 4 Beta for PHP developers

June 9th, 2009

I am giving a couple e-seminars about some of the new  features exposed in Flash Builder 4. The examples are all going to be PHP but it the majority of the talk is on tooling. Come check it out and ask questions. It’s still beta so if you want something changed now is the time to ask!

Adobe® Flash Builder 4 Beta (formerly Flex Builder) for PHP developers
Tuesday, June 9, 2009 12:00 PM PT
Thursday, July 16, 2009 11:00 AM PT

Learn about the new improvements with Adobe Flex 4 Beta and how developers working with Flex and PHP are boosting their productivity by combining it use with Zend. This demonstration will show you how you can create a combined project with Flex components and PHP natures and reap the benefit of coding in both languages.

Flash Platform, Zend_Amf

Video response to getMicrophone().com

May 7th, 2009

If you have not been to getMicrophone() go check it out. It’s an initiative to have raw access to the audio stream that is coming off the getMicrophone() method; clever url!. The project is similar to the MAKE SOME NOISE initiative. All the wonderful things that we want in the player asap! Go vote on some of these feature requests so we can see this in the next player release!

Open Microphone Object in Flash Player

Acoustic Echo Cancellation support

Raw WebCam greater resolution than 320×240 ok you got me I just want this fixed too!

Flash Platform, microphone

Speaking at PHP | tek Chicago

May 5th, 2009

I am giving a presentation with Lee Brimelow about using Flex and PHP. Looks like it is going to be a great presentation. ;-)

php|tek 2009 PHP Conference - Chicago, May 19-22, 2009

I submitted an unconfrence hands on session. This requires a vote so GO VOTE if you find it interesting. If you want me to address anything in either talk just let me know.

Flex + AMF+ PHP = Data Visualization

http://joind.in/event/view/41

Looking to build your first Flex application or are just curios about it’s complexity? Most people are attracted to Flex in order visualize complex data. Learn the technical details for setting up your first visualization application with charting, maps, and lazy loaded data sets. For even more fun we will use some real time data from #tek09 with the help from Zend Framework.

Flash Platform, Speaking, Zend_Amf