Factory Method pattern; ATLPHP tonight!

I'll be giving a "mini-talk" on the Factory Method pattern at Atlanta PHP this evening.

Who doesn't love the Factory Method pattern, right? Good stuff. A link to a PDF of the slides is below. I struggled to come up with a cool example, but an one related to cars was the best that I could do. You'll find some PHP-specific example code in the slides, too.

Grab the slides (PDF)

For further reading on the Factory Method pattern and other classic design patterns, you can always grab a copy of Design Patterns: Elements of Reusable Object-Oriented Software. Enjoy!

PHP/technical New Year's resolutions - 2009

Reflecting on my 2008 New Year's resolutions, I didn't accomplish all of them. The only one I really even began to tackle was contributing to Zend Framework. I participated in PHP TestFest, and my tests ended up making their way into CVS, so that was a nice surprise. I did manage to speak at both php|tek 2008 and ZendCon 2008, so that was good...though not really a resolution of mine.

Regardless, it's been a good year for accomplishing some of my technical- and PHP-related goals. But what about 2009?

Well, since it's public knowledge now, my wife and I are expecting our first child in June 2009 (woohoo!), so I'm going to be taking a bit of time off of the conference circuit. I specifically didn't propose anything for php|tek 2009, because it's due to take place just a few weeks before the kid's due date, so I don't want to be away from home at such an important time. Maybe I'll supplement that with more talks at Atlanta PHP?

So, since I'll be stepping back from conferences a bit, what will I be focusing on? Here are some of my PHP/technical resolutions for 2009:

  • Continue contributing to Zend Framework: With my first proposal now in the state of "Pending Recommendation," I'd like to start drafting a proposal for a Zend_Cache_Profiler of sorts, ala Zend_Db_Profiler. I'll be looking to write up and submit that proposal within Q1 2009, I think.
  • Contribute to php|architect: The 2009 Editorial Calendar for php|architect has been released. There are at least two topics in there that I'd love to write on. Specifically, I want to attempt to adapt my "Rickroll To Go With PHP, WURFL, and Other Open Source Tools" presentation into an article format. That should prove to be an interesting, entertaining challenge.
  • Catch up on my list of technical books I want to read: My Amazon Wish List is filled with all kinds of books that I want to read, so I'm really hoping to get through a handful of them this year.
  • Finish my iPhone game: It's a super top secret idea, of course, but the gameplay is largely done and works well. I've got to work on scoring, how leveling works, preferences, and finally, graphic design. So...I've got a long way to go on that. It's been a great exercise in learning UIKit/Objective-C!
  • Write an OS X Memcached GUI monitoring/profiling client?: I've wanted to build a little OS X desktop app for monitoring the performance of Memcached servers for a while now -- think cool graphs of gets, puts, evictions, bytes used, etc. Something that, if you managed a pool of many Memcached servers, that it'd come in really handy at giving you a snapshot of performance and potential areas of improvement. This would be another great exercise at learning more about Cocoa/Objective-C, too. Desktop software development just feels a bit more legitimate sometimes, ya' know? Or maybe that's just me.

So, I think that's it for now. We'll see how I do this year.

Happy holidays to everyone! See you in 2009.

Conference wrap-up: Schematic Tech Summit 2008

As I write this, I'm in flight back to Atlanta from the first annual Schematic Technology Summit, which was held in San Jose, Costa Rica at the La Condesa hotel and resort. What an incredible event. Everyday, I get to work with all sorts of smart, passionate technical minds from many disciplines. The Schematic Technology Department is made up of about 90 people across our New York, Los Angeles, Atlanta, Austin, Minneapolis, London, and San Jose, Costa Rica offices. The past four days have seen all of those 90 people in the same place -- quite an accomplishment!

An equally impressive accomplishment is that we had over 70 presentations from 45 speakers across seven different disciplines. Internally, we're made up of PHP, Java, .Net, Silverlight, Flash, and HTML/Javascript developers. We also have a team of Solutions Architects across the globe, as well as Quality Assurance Analysts. Also represented was the Schematic Technology Management team, of which I'm a part of, in addition to being the Platform Chair of our Open Source Platforms Group (the PHP team).

We've been planning this event since about May of this year. We opened up a call for proposals to all technology Platform Groups, sifted through all of the submissions, chose from them, and worked out a schedule. All of these talks were spread out over six different rooms, ranging from small to large.

As OSPG Platform Chair, I was responsible for all or part of a total of seven different presentations. I presented:

  • Opening keynote (OSPG portion)
  • Zend Framework: A Look Back (and Forward)
  • State of phplib (our internal PHP code library, modeled after Zend Framework)
  • Abracadabra!: Mastering Unix Shell Scripting
  • Shrinking Your Static Stuff
  • Load Testing Introduction
  • Open discussion (discussed various OSPG and PHP topics)

I actually won an award for "most prolific" speaker since I had the largest amount of presentations on the schedule. My fellow OSPG teammates also presented:

  • Joseph Jorgensen: Flash Remoting with AMFPHP
  • Pablo Viquez: PHAR: PHP's Self-Contained Archives (and a short spanish lesson!)
  • Maggie Nelson, David Mora: Be The Database! (theme song included)
  • Karolina Hidalgo: MVC (.Net and PHP comparison)
  • Ben Ramsey: You Look Like You Could Use Some REST! REST and the Resource-Oriented Architecture Explained and Web Application Security 101
  • Megan McNulty, Jim Connell: "I Can Haz App Enjun?" (intro to Google App Engine)

Special thanks to all of them for their hard work in proposing talks and ultimately preparing them! For the rest of you that we couldn't accept, we'll get you on the books for 2009!

I also attended many other talks (when I wasn't speaking myself!), such as:

  • Robert Reinhardt: Personal Brand Building
  • Michelle Kempner, Schematic SA Group: Diagramming Pictionary
  • Schematic SA Group: SA Rapid Fire Show and Tell

My Atlanta cohorts, Ryan Taylor, Corey Schuman and Brandon Dement spoke on "PixelBender Unleashed," "WPF," and "Automation" respectively. Good stuff, guys! ATL represent!

In our spare time, the group could be found in the hotel casino, drinking in one of the bars, or playing ping pong (New York won the first office ping pong tournament!). We also took a group outing to La Paz Waterfall Gardens on Saturday afternoon. We survived the bus ride up, down, and through mountains to reach our destination, which is filled with some amazing waterfalls, monkeys, butterflies, hummingbirds, and other awesome rainforest stuff. We all hiked through the trails and paths winding through the rainforest, checking out a handful of amazing waterfalls. I don't know about the rest of you Schemers, but that trip reminded me just how out of shape I am. Mowing the yard isn't enough for exercise!

Also, a huge thanks to our event planners Kimberly Brown and Viria Azofeifa, as well as Yvette Pasqua, Jason Buzzeo, Larry Davidson, and Chris Bray for driving this thing! You all rocked it.

Anyways, just a little wrap-up from me! I'm excited to see how things might come together to hold the second annual Schematicon in 2009! Don't forget to relive the action on Twitter (#schematicon08 and #squarecon08) and Flickr (schematicon08).

A slight change in my focus

Just a little note that I'm officially changing my duties around a bit at work. During my three years at Schematic, year one was spent as a Senior Software Developer, the second was spent as a Manager for our Open Source Platforms Group (the PHP team), and for the third, I went back to the hands-on technology side as a Senior Software Architect in OSPG. Now, I've decided to make a move back over to the management side as "Senior Manager, Technology" in our Atlanta office.

"What is this 'Senior Manager, Technology' thing?" you ask? Well, basically, it means I'll be leaving some of my hands-on development duties behind (though still using them occasionally!) to focus on managing a crack team of developers across various technical disciplines. I'll also be helping to match these people up to projects they'd like to work on, helping ensure their career growth is on the right track, that they're happy, enjoying their work and so on. I'll also be actively involved in recruiting and other types of managerial-type activities. I tend to think that I'm a good fit for this role given my years of experience down in the trenches, getting my hands dirty with code and project teams, while also being somewhat business-savvy given my experience and education.

It's a different kind of challenge for me, but I've got some experience with it and am happy to help out our growing technology team in the Atlanta office. I will be working on the occasional project at a high level, such as in a Solutions Architect role, or maybe even acting as a Software Architect from time to time. I'll continue to act as the Platform Chair of our Open Source Platforms Group team, too, which means that I'll continue to be involved in shaping coding standards, best practices, and other key technical processes around Schematic.

"But...you're a developer! Surely you're not leaving that behind!" you exclaim. Of course not! I'm going to use my spare time outside of work to pursue other things that interest me right now, such as Cocoa and iPhone development as well as working with the Arduino platform to do some tinkering with electronics. And don't worry, I'll still be spending a lot of time with my dear old friends, PHP, Zend Framework, and other open source technologies.

So, this is all very exciting! For the three of you that read my blog, this is a short summary of what I'll be up to for the foreseeable future. See you PHP'ers out on the conference and user group circuits, too!

Development process for PHP-based projects

Lately I've been doing a lot of thinking on development processes and quality, specifically for large-scale, professional PHP-based projects.

I've got some decent experience writing unit tests with PHPUnit, using a smoke testing script, and even writing use cases (it's been a while, though).

Generally speaking, my perception is that software development shops that really care about and emphasize quality have processes that consist of things such as:

  • Writing use cases
  • Performing code reviews
  • Unit testing
  • Continuous integration
  • Writing test cases and test plans (ala a Quality Assurance department)

...and so on.

For those of you that happen to read my blog, what do you think? Do you use these types of quality control measures? If so, have you used them for a long time, or did you one day wake up and realize "Gee, I need to be doing more for quality control"? If you're not using them, why aren't you? Lack of time, budgetary constraints, etc.? Or are you just not aware of them?

Just some food for thought. Please leave comments here or email me (brian at deshong dot net) if you'd like to provide some input.

Some goals for the next year...

There are a few things that I've wanted to do for a while now, but haven't found the inspiration or time to get around to them. Here are those things, in no particular order:

Of these, I'd REALLY like to write an article in the coming year and have it published. I'd be able to do the writing no problem, but I've had a hard time finding a topic to write on that A) I find interesting and B) hasn't been written about by others.

We'll see what I can do between now and Summer 2007.