ZendCon 2009: Day 3

And so ends the Zend PHP Developers Conference for 2009…

The last day of ZendCon is always a mixed bag when it comes to wrapping things up. On the one hand you, as a programmer, are loving the learning and education and networking and mixing things up with your peers. But on the other hand you, as a regular person, are tired from all the learning and education and networking and mixing things up with your peers (and drinking… and eating… and more drinking). Still, when all is said and done, all good things must come to an end. And so it goes with ZendCon.

Today started out pretty much the same as the other days except we knew we were in for a half day of sessions instead of a whole day. With that we chose the sessions we wanted to attend and headed for our rooms.

Session 0: Design Patterns for PHP developers
This was the second talk of Cal’s that I attended this ZendCon and, much like the first, Cal gave a great presentation on Design Patterns for PHP. Covering the basics of design patterns, he made sure to mention the most important patterns we could use, like Factory, Strategy, Observer, Model-View-Controller, Facade and Singleton. He made the samples very easy to understand and was quick to answer the questions asked of him.

Design Patterns have a special place in my heart as a programmer (I have given talks to local meetup groups about design patterns) and I love how knowing design patterns levels out the disparity between programming languages. Knowing them makes one language for all programmers and allows anyone from any language background to be able to communicate programming concepts and paradigms in a common tongue, if you will. That said, Cal delivered big-time in his talk on patterns. He also inspired me to pursue my ambition of putting together a PHP Design Patterns web site for developers that have not seen, or do not understand, design patterns applied to PHP.

Slide for Cal’s presentation can be downloaded here. (.pdf)

Session 1: Authorization with OAuth
Rob Richards gave a talk about OAuth and the difference between authentication and authorization. He moved pretty quickly into an actual implementation of using OAuth for authentication of a user from an application and, in my opinion, moved a little too fast into too concrete of an implementation. Still, the presentation was very informative and useful for anyone that is thinking of utilizing OAuth as an authentication mechanism.

Day 3 && ZendCon wrap-up
I was a little saddened to see the end of the conference come up so fast. Still, I am glad its over because I can use the rest.

I’m thinking next year I want to see if I can get in on giving a talk. I’d love to present and would love to not have to pay to get into the conference 🙂 . I also think that it would be freaking awesome to have a small group of the guys I have met over the last two hears at ZendCon over to my home for a BBQ or something, though I should probably bring that up with my wife before I even think of doing anything like that (I will honey, I promise 😛 ).

Overall, this year’s conference was better than last years in a couple of ways. First, the subject of many of the talks was NOT scaling. That, in and of itself, made this conference better than last year.

Second, the location was also a bit better than last year, being closer to downtown and all that being in downtown has to offer.

On the other hand, this year’s conference was deficient in several area. First off, the lack of power in the lobby and in the conference rooms was painful. Having a laptop battery with only a 38% capacity made it difficult to attend a session that didn’t have sufficient power.

Secondly, the vendor fair this year kinda sucked. It was nice to have them there, as always, but they didn’t seem to want to interact with people this year. The shirts were awesome and the shwag was also very nice -who doesn’t like free, right? Still, I think having more relevant vendors with more accessibility to relevant and pertinent information would have been nice.

Regardless, I got nothing but love for the organizers of this conference. Specifically, kudos need to go out to Eli White (@eliw) for his incredible support of the conference and attendees, and Keith Casey (@CaseySoftware) for the indescribable work he does on the conference uncon sessions. I cannot wait for ZendCon2010.

ZendCon 2009: Day 2

Yesterday was an amazing day at ZendCon. Lots of talks, lots of information, lots of networking, lots of geekdom. The day was long but very informative and at the end of it I couldn’t wait to get back for today.

Today started off a bit different than yesterday because today I was scheduled to take the Zend Framework Certification exam and my coworker was scheduled to take the Zend Certification Exam. So we got to the conference and camped out for the morning to get some last minute studying in.

As we studied we were joined by Aaron Wormus. I’m not sure why, but when presenters and other people who are widely known in PHP are close by I always feel like I am in the presence of a celebrity. Last year I was like a little kid at a football game, meeting everyone, shaking hands, being excited, enjoying the conference. This year? Well, kinda the same, except I haven’t seen to have as much time this year to find people to meet.

Still, it was nice to be able to spend a couple of hours trying to familiarize myself with the Zend Framework. The exam preparation study guide is 214 pages long, and as of 12:15, when it was lunch time, I had gotten through about 110 page of it. So much for being totally prepared for the exam.

After lunch was over my coworker and I headed to the exam room where we took our test. And wouldn’t you know it… I passed. So now I am not only a Zend Certified PHP Engineer, I am also Zend Framework certified as well. Sweet!

After the certifications were over we were able to get back into the swing of the sessions…

MySQL Server Performance Tuning 101
Cal Evans, filling in for Legaya Turmelle, did an excellent job of describing how to optimize your MySQL server and sent queries to enhance the performance of your applications. Filled with an incredible amount of technical data, this presentation was still a vibrant session that involved the attendees throughout the entire session. And I managed to sneak away two things that will be a help to me as soon as I get back to work:

/* Show all of your global variables */
/* Show your statuses */

Both of these can filter your queries by adding a “LIKE ‘%{filter}%'” to the query. Very handy pieces of information.

Architecting Your Models
Matthew Weier O’Phinney gave an awesome talk about architecting models (the M in MVC) and using your models to handle business logic. The logic that was employed was very similar to the Introduction to Zend Framework talk he gave on Monday (kudos for consistency) and covered data access, table/row gateways and service layers.

This is one of those presentations that I would recommend you get the slides for because just the programming practices employed in his presentation make it an absolutely stellar session and one that can only help you as a programmer. [Note: as soon as the links to the slides are posted I will put that link here. Sorry.]

Building Desktop RIAs with JavaScript and PHP
Ed Finkler gave a sweet presentation on taking PHP and Javascript from the web to the desktop in his talk on building Rich Internet Applications. His talk was dynamic, funny, had a couple of well handled snafus and totally captivated the audience.

Using Adobe AIR, Appcelerator’s Titanium and PHP, he built a couple of cool little desktop apps that are driven by server hosted PHP applications. Though the apps were just for example, what you can do with AIR or Titanium, jQuery and PHP is freaking amazing and I can’t wait to try some of this stuff when I get back to work.

Links to his presentation and associated code samples:

Day 2 wrap-up
Sitting here, at the end of the last session, I am overwhelmed with the amount of information I learned in the last couple of days. I am so looking forward to how ZendCon will be wrapping up tomorrow and cannot wait to meet some of the people of I haven’t yet had a chance to meet.

ZendCon 2009: Day 1

The second day of ZendCon is always a busy day. That is the day the sessions start; when you try as hard as you can to be in three places at once; where you spend half of each session reading Twitter for all #zendcon hash tags or hang out on the #zendcon IRC channel; when all you can think of outside of PHP is free swag and free beer.

Today was like that for me. Well, minus the mad rush to sit in on the morning keynote. I spent the early morning reading up on the Zend Framework so I can stand a chance at passing the ZF Certification Exam tomorrow. There is a lot to learn in that stupid manual (214 pages long – gripes!) so there was naturally lots of reading to do. After that we started the day.

Session 0: PHP 5.3 = Awesome
Ilia Alshanetsky gave this talk on PHP 5.3 and some of the new and exciting features in it. Outside the fact that Ilia never stops talking… I mean never… this talk was filled with some pretty cool stuff that a lot of programmers have been waiting for in PHP.

He opened with talking about namespaces and how they can be used. There are so many ways to utilize the namespace feature that to repeat that here would take a lot of screen real estate. I would recommend getting your hands on the slides of the presentation and reading through the first few slides. There is lots of useful information on namespaces in the slides.

The next thing he talked about was the new usage for the ternary operator. While there are, I’m sure, different ways to implement this feature, the manner in which it is implemented right now is pretty neat. Essentially you can now say “If the first condition evaluates to true, use it, otherwise use the second” without saying it exactly that way:

// We used to do this with ternary
$var = $a ? $a : $b;
// Now we can do this
$var = $a ?: $b;

That is pretty slick in my opinion.

There was also mention of the use, internally, of the MySQLInd client library for MySQL Database Server interaction and how much overhead is being saved on select queries when not manipulating SELECT query result set data. Essentially you can cut your memory consumption in half because of this change. Sweet.

After this the talk moved into some new stuff you can do with INI files and data you can set in them. This change will make configuration pretty freaking sweet in my opinion, just because of what you can set and how you can set it. There is also some pretty nifty stuff that is happening with the DataTime built in objects in PHP. And lastly, there is a new PHP constant being introduced. That constant is E_DEPRECATED and it will be used to tell you, when you have error_reporting set to E_ALL, if what you are using in PHP 5.3 is slated for deprecation in PHP 6.

Overall this was an awesome talk. Ilia is a great speaker, knows his stuff very well and packs in about three hours worth of presentation into about an hour.

Session 1: Xdebug — PHP developer’s swiss-army knife
Presented by Derick Rethans, the author of xDebug, this presentation covered an enormous set of the features included in xDebug. Derick also talked about kcachegrind and utilizing xDebug with PHPUnit to cover many aspects of unit testing and debugging

Slides for Derick’s talk are available for download at his website.

Session 2: Mastering OpenXML Documents with PHP
Aaron Wormus gave an excellent talk about the PHPExcel library and how it utilizes the OpenXML standard to write complex and feature rich spreadsheets for Microsoft Excel, Open Office and other text based formats. This was very well presented session and covered several different, clearly coded examples.

Session 3: Premature Optimization Mistakes
Another awesome presentation by Ilia Alshanetsky, this session talked about some of the wrong directions programmers can go into when trying to optimize their applications. Many myths were debunked in this session, like the idea that smaller code is better code, removing comments in PHP makes your applications faster and changing your code makes it better. I even installed APC on the PHP Developer’s Network forums during this presentation to buy some performance gain without having to do any really heaving lifting.

Again, Ilia put about three hours worth of information into an hour long session and knocked it out of the park.

Session 4: Taming the Deployment Beast
Chris Cornutt, the man behind PHPDeveloper.org and joind.in, gave a hugely informative presentation about deployment and managing your applications from the start of development to the implementation of production over both teams of developers and for individual programmers.

Covering an array of various tools, practices and principles, Chris’s presentation was filled with application lifecycle management concepts, deployment practices and low level programming practices.

Slides can be downloaded here

Day 1 wrap-up
Much like last year, the first day of ZendCon was packed with information, networking, free swag (thank God for vendor fairs) and great food. Seriously%2

ZendCon 2009: Day 0

Woo to the frickin’ hoo! ZendCon 2009 is back in town!

I am fortunate enough to work for a company that believes that you should continue your education within your professional field. They back up that commitment by putting their money where their mouth is and actually spending money to send their employees to various training seminars and conferences throughout the year. And this year, like last year, ZendCon is that conference for me.

Like last year, this year opened up with the conference tutorials day. This year I chose to focus on Zend Framework and learning what I could of it. It is a fast growing framework and is quickly becoming a popular tool in the arsenal of many a PHP developer. I am seeing more and more recruiter emails that are asking for ZF experience. And it is a beast of a code base, well written and extremely well organized, developed by a team of people that are some of the biggest and brightest names in PHP development around the world.

Session 0
My day started out with an Introduction to Zend Framework by Matthew Weier O’Phinney. Matthew gave a stellar presentation on using the Zend Framework to develop a pastebin application. Covering some of the ins and outs of the MVC architecture employed by the Zend Framework, he also taught some programming practices as he started out first by developing his models, then his forms, then his controllers then his views. He taught techniques like setting view variables as their lowest PHP variable type so they are not to tightly coupled to a particular implementation should controllers or models change (like passing a result array to the view as opposed to a DB result object).

He also went into a decent amount of detail on Zend_Tool, Zend_Config, plugins and routing. In the end I felt like I could actually do something cool with the Zend Framework. Maybe not as cool as what he did, but cool nonetheless.

Now if I could just figure out those sweet vim plugins he was using…

Session 1
Seeing as the Zend Framework certification exam is being offered to conference attendees for free I figured since I am here that I would try to add to my ZCE certification. To do that I figured I’d sit in on the Zend Framework Certification Refresher course being presented by Rob Allen.

I am pretty sure I was in over my head from the start of this class. One of the first things that Rob said was that this class was not a tutorial on Zend Framework but a refresher for those that are using it regularly. For almost every component that was covered he asked the question “Who has used this?” and sadly I could not raise my hand for hardly any of them. Still, on the practice questions I did alright because much of the Zend Framework is common enough that you can expect certain behavior from it. That seemed to get me some pretty good mileage.

Of course there were lots of things that I had never seen, either. Parts of Zend_Log (and the writers, the formatters and the filters), parts of Zend_Db (the table data gateway and the row data gateway), Zend_Auth (the returns from Zend_Auth::authenticate()) and a host of other items from the framework are fodder for me reading up on.

Still, I think I can pass the exam if I don’t overthink the questions being asked. Of course, that means lots and lots of reading tonight, tomorrow, tomorrow evening and Wednesday morning.

Other happenings (and mishappenings)
When my coworker and I got to the conference and registered that we were there we noticed something missing from our registration packet. All early registrants who attended a previous ZendCon were supposed to receive a netbook for the conference. Ours was not there. Throughout the day we checked back in with the front desk, per their instruction, and found out at the end of the day that we would be getting ours tomorrow. That was a small bummer, though it had a happy ending so I am pretty stoked about that.

Something else I noticed this year was the lack of power in the rooms. Last year there was no shortage of power plugs to plug my laptop into. This year, in the first session, only the people that sat next to the walls close to an outlet could plug in. The second session was a little better in that my room had two power strips. Still, both of those were on one side of the room so if you sat on the other side of the room for the three hour session there was a decent chance that you were going to be running out of power before the end of the session.

Wireless internet this year was way better than last year for me (albeit a lot slower). Connecting to it was a snap and once I was able to power up my laptop I was able to stay connected to the internet pretty much the entire rest of the day.

Lunch was really good this year. For a boxed lunch the food was really, really good. As were the dining accommodations. My coworker and I were able to meet some new folks (a fellow from Seattle, John from Vermont and another fellow from Slovenia) as we talked about the ZCE, differences between PHP and Java and this year’s conference versus last year’s.

Ending the day this year was a little sad for me. Not because the day was over and I had to wait an entire half a day to mingle with my peers again. No, it was because of the $18 I spent on parking at the Convention Center. What. The. Hell? There was no validation either. And to top it off, the stupid ticket reader didn’t work so we had to drive around the entire garage until we found a guy that could help us.

Still, given the day as it went, I am very happy with ZendCon this year. I cannot wait until it gets into full swing tomorrow. And I really can’t wait for some of the uncons that were just posted late tonight.

ZendCon 2008 – Day 4

Today was the fourth and final day of the Zend Conference in Santa Clara and I am almost sad (actually I am sad) that the conference is over. This has been one of the best experiences of my life and certainly of professional career as I was able to meet several of my peers that I have looked up to for quite a while.

But before we get into all that there were a few things that I was able to take away from today that I thought were interesting. Much of this came from the panel discussion on what is to be expected in PHP 5.3 and some of the things PHP has planned for Windows development. The discussion was pretty high level but it entailed some things that a lot of developers are going to love like namespaces, late static binding, variable class name allowance in static method calls and the __DIR constant that will expose itself as the current directory from which your code is being called.

After the morning, as I was walking upstairs I ran into Davey Shafik. We talked for a bit and were soon joined by a collection of people that, to me, represent a sort of pantheon of PHP names:

I was fortunate enough to actually meet Paul and Laura for the first time. The other folks I had met throughout the conference and thoroughly enjoyed their company this morning. After what seemed an entirely too short an hour or so I decided it was time to call it a conference and proceeded home, somewhat sad that this great experience was over and somewhat relieved at that same thought.

I am so looking forward to next year’s Zend Conference. Perhaps I might make it to a few other conferences before then (like Tek or Works). If not, I will still be happy in knowing that I was finally able to mix it up a bit with my peers and I was able to get my ZCE certification. I am so stoked now.

ZendCon 2008 – Day 3

Sometimes you can pick them well and sometimes you can’t. That was the story of my day.

After missing the morning session that I wanted to go to (Elizabeth Smith’s talk on Architecting for PHP5 happened to be in the smallest room and was full 10 minutes before the start) Jason and I made our way to the big room where we learned about several lesser known security vulnerabilities in PHP. Stefan Essar has a knack for finding security issues in PHP and moving the fixes into production rapidly (his technique is a little, well, cutting edge but gets the job done with a minimum of carnage).

After Stefan’s talk we attended the “State of Ajax” keynote given by Ben Galbraith of Ajaxian. All I can say about this talk is WOW. I did not know that the web was headed in the direction it is headed and I am so excited to be a web developer right now because what is going to be produced over the next few years is going to be butt-kicking goodness. I am just plain excited and looking forward to tapping into this technology. Plus Ben was using his iPhone as a remote to control his presentation on his Mac, and he showed how to use a Wii with Javascript to make a dart game for your computer.

From there things went a little downhill. Instead of hitting up Terry Chay’s talk about “Making your frameworks suck less” in his uncon session I decided to listen to Chris Shiflett talk about security centered design. I think this was not the wisest choice I could have made. Terry Chay was running the gauntlet on foul language and involving his attendees while Shiflett, as much as I love this dude, just talked about, well, to be honest, I’m not really sure. It lulled me a tad and it was actually more entertaining to watch Terry Chay’s talk on the #zendcon Twitter stream than it was listening to Chris (sorry Chris, I give you mad props for security but the talk was a little boring).

Thinking that I wanted to hit up Andrei Zmievsky’s “VIM for PHP Programmers” talk next we headed up there to find that there were no tables in his class room. This made following in VIM very difficult so instead I changed gears and hit up Sebastian Bergmann’s “Quickstart to Continuous Integration” talk. That, I think, was my first mistake. I totally misunderstood continuous integration I believe since I was not really able to follow along in that talk at all.

It got better though when I went to Eli White’s talk on “High Performance PHP & MySQL Scaling Techniques”. His talk, while covering some high level ideas and principles, was easy to follow and offered a lot of good information to the listeners. If I ever get to the point where I get to deploy several servers I will be sure to dig up the slides from this talk because it was awesome for those that are interested in scaling applications to a large degree.

After Eli’s talk we headed to dinner where we hung out a bit more with Brad Vernon over beers and snacks. And though I really, really wanted to go to the Yahoo! party, Jason, who was acting as my chauffeur for the evening had to hit the road so we took off and headed home. But the day was not a total loss. I was able to meet Andi Gutmans (the “nd” part of Zend) and Keith Casey. So overall it was an awesome day of learning, networking and meeting people I have really wanted to meet. I cannot almost not wait until tomorrow.

ZendCon 2008 – Day 2

Wow, today was an absolutely awesome day. It started with me passing the ZCE exam (which in and of itself was enough for my day to be pretty darn cool). But immediately afterward, as I was walking in the hall, I was able to meet a ton of people that I have wanted to meet for a while. Some of the folks I was able to meet and shake hands with today were:

  • Davey Shafik
  • Derick Rethans
  • Sebastian Bergmann
  • Cal Evans
  • Chris Cornutt
  • Matthew Weier O’Phinney
  • Zeev Suraski

I was also able to learn quite a bit of stuff in Wez Furlong‘s talk on PDO and Brandon Savage‘s talk on user permissions.

After those talks was dinner, which made for a great time meeting people, eating, drinking and walking around aimlessly as though I was trying to find something. The food was awesome, available in large quantity and warm and the drinks were flowing freely to anyone that asked. And it was at dinner that I was able to meet Zeev Suraski, the “Ze” part of Zend.

After a very long day, a lot of fighting with the stupid ZendCon network, lots of good food and meeting good people and lots of learning, Jason and I hit the road at about 7:15, tired, but looking forward to tomorrow.

And I am. There are still people I need to meet.

Hi, I’m Robert Gonzalez, Zend Certified Engineer

I am a ZCE! And I am stoked.

I have been wanting to take the exam for a while now and I finally got the opportunity to do it today. I have had a voucher to take the exam for a while as well, but got another one when I signed up for the Zend Conference so I decided I would study and take the exam while I was at ZendCon. I really wanted to take it on Monday but I wasn’t able to get into the session so I scheduled my exam (and my coworker Jason’s exam) for 10:00 AM this morning.

Jason picked me up early and we got to the Santa Clara Convention Center at about 8:45. We decided to study up until the time we had to be in the exam room so we opened up the PHP manual and started memorizing. That is probably not the best way to prepare for an exam but it was all we could do other than pee and drink more coffee so that is what we did.

We hit the room a little before 10:00, got signed in, got set up then got busy. About 45 minutes later I was able to throw my hands in the air after an exasperated sigh when I found out I passed. I was, and still am, stoked.

It might not mean a lot right away, but to me it is something accomplished that I have wanted to accomplish for a while now. And I am glad it is done.

ZendCon 2008 – Day 1

Today marked a new experience for me as a PHP developer: I got to go my first PHP developer’s conference, ZendCon 2008. I have wanted to come to one of these conferences for a long time now so this is a real boon for me as a tech head and professional developer.

I gotta tell you I am really freaking stoked at my experience today. Although I didn’t attend any tutorials today I did spend the day in Christian Wenz’s ZCE Crash Course breakout session in preparation for the PHP 5 ZCE exam I am planning on taking tomorrow. This session was worth the price of admission all by itself.

Christian just knows how to teach. I had taken a ZCE training course before over the course of four weeks and 24 hours and managed to learn a pretty decent amount. I took a few ZCE practice exams after that and managed to score a PASS and a PASS. But they were not really string passes as I failed in a few of the 12 sections, got a pass in most of them and an excellent in a few others.

After taking Christian’s course today I came home and took another practice exam and managed to get a pass in which 10 of the 12 sections were scored as excellent and two of the sections were pass. So I am feeling a little better about taking the ZCE exam tomorrow as I think I might actually be able to pass this thing knowing a little more about streams and XML.

But getting back to the conference, I was pretty excited today to be able to meet some folks that I have always wanted to meet (or at least as long as I have been a developer and have known some of these names).  I was able to meet Christian Wenz, Wez Furlong, Elizabeth Smith, Ben Ramsey, Matthew Turland, Lorna Mitchell and Christian Flickinger. I was like a kid in a candy store meeting names of people that I look up to in the PHP development community.

Overall today I had a great time. Jason, my coworker, and I took in a lot of good info from the day and from the breakout session. I am really looking forward to meeting some other folks and mixing it up  bit tomorrow. And I am also looking forward to passing my ZCE first thing in the morning. Wish me luck. Tomorrow I plan on being a ZCE.