About This Interview
This is the #19th
set of PHP Interview to help aspiring PHP developers and PHP fans alike to get inspired by listening from those PHPeople who are already highly involved into the PHP Ocean and *being there* taming the waves and surfing better than ever to make themselves an Awesome PHP Expert both in their own eyes (for self-accomplishment) and for the PHP Community.
On the other side, this is an opportunity for new PHPers to get to know their “PHP Elders“. I hope you will derive as much fun to read my interviews as I’m having by interviewing those awesome PHP people.
A Small Intro..
In this edition I talked with [Eli White @EliW], who is currently the Founding Partner and Chief Technical Officer Of Musketeers.me – a consulting firm. Eli was previously the CTO at the social career management platform known as mojoLive and has been working for numerous famous high profile web projects, namely Digg and TripAdvisor amongst others. He was also (back in 2009) the PHP Community Relations Manager and DevZone Editor-in-Chief for Zend Technologies Inc.
Elliott White is also the author of the PHP book – PHP 5 in Practice and has attended 30 conferences (at the time of this writing) in which he was a presenter for 49 sessions. You can find more info about his presentations here – with PDF files downloadable!
And Now The Interview…
>> Please tell us a bit about yourself
Heh, well depends on what you want to know. As far as professionally, I’ve worked a number of different jobs that span the spectrum of Government, Nonprofit, Corporate, Startup, Consulting, etc. I’ve worked for the Hubble Space Telescope program, Digg, TripAdvisor, and others. Currently I’ve co-founded a consulting/product team Musketeers.me with my former co-workers from mojoLive.
But I also happen to have a vast number of other interests. I’m a big video gamer, you can find me on Xbox Live as “EliCrossbow”. But one of my biggest other hobbies is as a member of the Society for Creative Anachronism (SCA), where I do Medieval Reenactment. Within the SCA I do archery, sword fighting, woodworking, brewing, and more. Besides all that, I also golf, geocache, love to play poker, and constantly love learning new skills in the real world.
That, and spending time with my wife and 7yr old kid, who I have quickly instilled a similar obsession with video games 🙂
>> How you started with PHP
I actually got started with PHP back when I worked for NASA on the Hubble Space Telescope program. We were doing lots of basic web applications at the time, and were doing them all as Perl CGI-BIN at the time.
I’d looked at PHP before that, in version 3, and found it interesting, but just not quite compelling yet. However as soon as PHP 4 was released, I went to my boss at Hubble and told him: “We are doing everything in PHP now moving forward.” We did, and I never looked back.
PHP (along with JavaScript obviously) have been my preferred language ever since.
>> Your LAMP stack comprises.. ?
For local development, I use a MacBook Pro, running Zend Server CE & MySQL.
For actual deployment machines, I tend to use Amazon Web Services. And I prefer Debian instances, running standard Apache & PHP – Kept up to date by using the DotDeb packages. And using Amazon RDS as my MySQL database.
>> The relationship between You and The PHP Community comprises..
The PHP Community is a great source of information & friendship as well. I first really got pulled into the Community when I started speaking at conferences … and then eventually people started mentioning to me that there were IRC channels and other venues where everyone got together to share information, or just chat and hang out.
>> How do you find PHP now as compared to when you first started
Wow, well in many ways, it’s just overall ‘better’, though I think the core concepts behind it (at least since PHP 4) are still there. So it’s more robust, more stable, more feature-rich. But that’s all just natural evolution from it’s original concepts.
>> Based on your experience, what are the good and bad parts of PHP
Trying to get me into trouble now aren’t you? Well honestly I think that the best part of PHP, is the massive library that comes with it. Almost anything you can feel the need to do, there is probably a function in PHP that just does it for you. And if there isn’t, wait until the next release, then there will be one.
PHP is great in it’s “ball of nails” aspect. You can throw it at any problem, and it sticks. You can solve something quickly, and move on to your next problem.
Now, the bad parts of PHP? I wouldn’t say that PHP itself has any bad parts. If anything, the constant push to try to ‘stay ahead of other programming languages’, can have negative effects though. The great part, is that none of the core basic functionality of PHP has been removed, nor do I think it ever will be.
So 10 years from now, you could still make an HTML page, with a few <?php calls in the middle of it to add some simple functionality. Done.
But the push to make PHP on par feature-for-feature with every other programming language out there … while excellent from a flexibility standpoint, I think starts to confuse beginners. Because they see this rich language with millions of features, and find themselves overwhelmed. One of the great reasons that PHP ‘won’ in the early days, was that it was so simple to use.
So speaking of which …
>> What would be the Top advice to a PHP beginner
I’d say to just get started, write some code, and pick up parts of the language as you go. Don’t get completely overwhelmed by trying to learn EVERYTHING there is about PHP at once. Just get in there, hack some code, and enjoy yourself.
>> To someone who wants to become a better PHP developer..?
Read my book 😉 No really, I’d say that becoming a better PHP developer just comes with practice. Write more code. Pick up more aspects of the language. One of the BEST things that I think you can do, is spend lots of time on the PHP documentation website. Back when I was first learning PHP, I’d sometimes just get bored and spend an afternoon where I loaded up the documentation, and just started reading down the function list. Familiarizing myself with pieces that I hadn’t heard of yet.
>> The best PHP book you’ve read
Obvious Answer would be my own: PHP 5 in Practice. But I guess you want me to mention another one. I’d probably say “PHP and MySQL Web Development” by [Laura Thomson @lxt] and [Luke Welling @lukewelling]. It’s one of the best ‘beginning to end‘ books that you could pick up, read, and walk away a PHP developer.
>> A PHP blog or resource you highly recommend
[phpdeveloper.org @phpdeveloper] I think is the best source of information, since it’s the best cherry picked blog entries of the day. Beyond that, as a resource, I’d point anyone to PHPWomen (of which I’m a board member). It’s a great group, that is extremely welcoming and friendly, and ready to help anyone in need.
>> The IDE that you use
Heh, I actually dislike IDEs in general. I don’t like it when my editor tries to be smarter than me about how I should manage my own coding.
So for my day-to-day coding, I use Textmate. If I need to write code on a remote website, I use Emacs. And if I just need to quickly edit a file, I just use vi.
>> How do you debug your PHP code?
I handle that very old school. I end up just putting debugging statements in the code as I work. I’ve actually written a series of Textmate extensions that actually make it just a few quick key-presses to insert all the debugging statements I could need. Then one more key-press to remove them all at once.
I’m also a huge fan of [FirePHP @firephplib]. Not only for general debugging, but for allowing me to add debug statements in my PHP, that don’t just echo out to the screen, but instead come into FireFox’s console log. So the page render is kept untouched.
>> A PHP framework you use and would recommend
Well, I recently Open Sourced my own personal framework: “Treb“, but it probably isn’t well suited for most people looking for a generic framework. It’s extremely minimal (on purpose), with some core features that I found myself always having to code for the custom applications I was building (Digg, TripAdvisor, Goodsie, mojoLive).
As far as a more general framework, I’m a fan of those frameworks, such as [Zend Framework @zfChannel], that allow you to pick-n-choose what parts of them you want to use. So you aren’t forced into doing everything the ‘one true way’ that the framework provides.
Though I’ll challenge everyone when starting a new project, to really think about their use case. Think about what they are building, how they expect it to grow, how much future support they need to provide, what core features they know they will need, etc. Then go in and actually look at each framework out there in relation to this, as well as the concept of just building something themselves. And really decide what’s the best solution for the problem at hand.
>> A unit test framework you recommend using?
I actually am a big fan of more simplistic testing frameworks, such as [PHPT @phptestfest], which yeah, is actually functional testing versus unit testing. But it makes it so much simpler to crank out a few tests when you need them, and to test more complex concepts. But yeah, I know I’m in a minority there.
(Also, I’ll mention it, that [Selenium @SeleniumHQ] is an amazing system for doing ‘web app’ testing of your overall functionality)
>> A CMS that you think is worthwhile
It’s hard to give a single ‘This CMS is worthwhile’, because any of them can be worthwhile, it completely depends on what your end task/problem is. Are you making a blog or ‘blog-like-thing’? Then WordPress is a perfect fit. Do you need something extremely customizable, then [Drupal @drupal] probably fits your bill better, though will take more effect to get up and going.
Or if you need something VERY simple, there are lots of other options (or heck, you can write your own in just a few hundred lines of code)
Or don’t even bother trying to create something yourself. Just go use [SquareSpace @Squarespace], there’s no need to re-invent the wheel.
>> An E-Commerce cms you recommend
Honestly, if I were to have someone come to me and want to do an e-commerce CMS, I’d probably point them to the numerous pre-build hosted solutions that exist out there. [Goodsie @Goodsie], [Shopify @Shopify], [BigCartel @bigcartel], etc.
Or even back to [SquareSpace @Squarespace] again, since it has e-commerce options.
Most any e-commerce site I’ve worked on in the past, either could have been served with zero effort from one of those solutions, or really
needed a much more custom solution anyway because of what they were trying to do.
>> One PHP System/software/library/Project you really appreciate
Honestly, the biggest thing that I’ve come to love lately is the SPL. Specifically all of the Iterators, ArrayAccess, Countable, and other features that allow you to make your own objects work just like built-in types of the language. It allows for much cleaner code overall.
>> One function that you like (or which you tend to use frequently)
DateTime::diff() – Honestly, the entire DateTime and DateInterval classes have completely revolutionized how you handle dates & times in PHP, especially in this global world where doing timezone math is par for the course.
But specifically diff(), and having the ability to easily, quickly, do date math, and get back a very detailed response of exactly the difference, in terms of days, months, years, etc.
>> One PHP person that you admire and what strikes you about him/her
Only one? Ugh. I guess I’d have to pick Rafael Dohms – Besides just being an amazing guy and friend of mine … He constantly amazes me with his ability to show up somewhere, and instantly a user group is created around him 🙂
(PS: Read a similar interview with Rafael Dohms here – click!)
>> One PHP Community that you recommend
A community? Well for the most part I consider [The PHP Community @phpc] one big one. Not really as separate parts. But if I need to separate parts out, I’ll mention [PHPWomen @PHPWomen] again, I can’t say enough good things about them.
>> Are you part of any PHP User group? Could you tell a bit about it..
Yes, actually, 3 of them if you can believe it. I have the unique position of living in Northern Maryland, where there isn’t a user-group immediately where I am, but I’m right between 3 of them.
The first is [Baltimore PHP @BaltimorePHP] – A group group that meets halfway between Baltimore and DC that gets very good turnout from all around the area because of the location.
The second is [DCPHP @dcphp] – Based down in DC, with meetings in the city as well as surrounding areas. Often they do joint meetings with other local user groups and can get some amazing turnout when they do.
Both of these also have embraced the idea of a “Beverage Subgroup” where they not only have regular meetings, with talks and discussion. But they also just hold meetings where the idea is to just get together and have a beer and chat.
The other that I attend is the [Frederick Web Technology Meetup @fredwebtech] – It’s based in Frederick, MD, and while it’s not a purely PHP Usergroup, that’s one of it’s strengths actually, as while there are a number of PHP people there (including the organizer), you get a much more diverse population attending.
>> A PHP Usergroup that you appreciate and would highly recommend
There are so many amazing user-groups, some that are very large! In the end though, the one that I will have to recommend is [PHPSP @phpsp] (PHP São Paulo) – I was invited to speak at PHP Conference Brasil a while back. And the community embraced me, and my wife, during the stay and really made us feel welcome. They picked us up from the airport and drove us back to the airport at the end. They took time off from work to drive us around, showing us the sights. Took us out for dinner & drinks. Took us into perhaps ‘less savory’ areas of São Paulo just to gives us the full experience. Even in the end took us to the beach.
They just really made us feel welcome.
>> Which was the worst programming mistake you did?
Ha, it’s hard to just pick one. You be at this long enough and you have a number of scars.
The one that comes to mind right now, was that one time, I had this software that would automatically send out emails for press releases.
Well this system wasn’t using any database at the time, so the press releases were just stored in numbered text files, and my cron job that ran each week, just kept a file on the hard disk called ‘last’.
Each time it ran, it would open that file and read in the number of the last press release sent. It would then scan the PR directory, and if any press releases that were numbered higher than the ‘last’ sent, it would email to a mailing list. It was rather simple, but effective, since any given week, there might be 1 release, or more. It then would write the new ‘last’ number to the file, and shut down.
Well, one morning I woke up to see the cron job was going crazy, and resending every single press release EVER released in rapid succession. For something like 10+ years of history.
I got it shut down and then scrambled to figure out what happened. Someone reading this may have already guessed. But what happened was that when I was going to write the number back to the file, I was just opening the file for writing (in overwrite mode), adding the data then saving.
What happened, was that the filesystem completely filled up with log files. So when my script went to do this, it opened the file for overwriting, which blows away the contents of the file, then when it tried to save the new number, it failed. And left a blank file.
Then 1 week later when my script ran again, it opened the file. And a blank line equals ‘0’, so it started going through every single press release all over again, thinking that it hadn’t ever sent a single one. I hadn’t done any basic error detection to check that the number in the file, was actually a valid number. Nor had I added any sanity checks to say, only send at most X releases, or even not to sent any older than a month, etc.
>> Things that you’ve learned from being part of The PHP Community
Just to ask. It never hurts to ask for help. It doesn’t matter if you are brand new to PHP, or someone that’s been doing it for over a decade. It’s always a safe place to ask: “Hey, how do I do X?” And someone probably knows the answer instantly. Instead of you spending hours trying to track it down.
>> If you could change one thing with PHP, that would be…?
OK, I know this is minor, but you asked. I want the new shortcut ternary, ( ?: ), to implicitly do an isset() at the same time. I know this was discussed to death, and there are reasons why it doesn’t.
But one of the main use cases of the shortcut ternary is to look at passed in user data and provide defaults, such as:
$name = $_POST[‘name’] ?: ‘n/a’;
But that will throw a PHP notice if ‘name‘ isn’t set.
>> If you had to go back in time, would you still choose PHP? What would you do different?
I’d absolutely choose PHP again. The one thing I would want to do differently, is to find out about the community even sooner than I did.
I used PHP for many years before realizing that there was a group of enthusiasts out there chatting about it all the time, and ready and willing to help you out.
>> The best conference you attended would be..
Best conference IMO every year is [PHP|tek @php|tek] – It’s a great get-together of like minds, to sit, hack, talk, share ideas, and enjoy.
>> Can you please share the good, and may be not so good moments, of being part of all the conferences you attended
Some of the best moments are usually not at the conference sessions themselves. Like they say how the hallway track is the best. Usually it’s the evening events that end up giving me some of the best memories. Playing Rock Band until 2am in the morning, The massive Halo 3 battles that took place one year. Random poker games that break out, etc. Some of those times and places form the strongest bonds between people.
The not so good moments? Waking up at 8am after being up until 2am, so that you can attend that morning’s keynote.
>> What are the main aspects of conferences that can really help a PHP guy to get better in his progression
Honestly the main thing is getting to meet people. To exchange contact information, to get to know people.
The best thing that I’ve ever known to come out of conferences, are when 2 weeks later you are struggling with a problem. Let’s say you just can’t figure out how something is supposed to work in a library you are using. When you realize that, WAIT, I was having beers with the person who wrote that code! And you are able to send a quick message to that person on twitter, or find them on IRC, and just ask.
Suddenly what might have been months of frustration at something just not working right, are solved when the person answers you. Or even better says: “Oh, that’s a bug, hold on, I’ll fix it”
The connections you make at a conference, will help you immensely in your work.
>> How do you time manage all the stuffs that you do, coupled with your personal life?
Ha, I don’t. Did you see the number of interests and hobbies I have? I find that sleeping less helps 😉 Mostly I just try to make sure that I ‘step away’ from things when I need to. When the workday ends, I walk away. I don’t keep coming back for that ‘one more thing’.
But really, I couldn’t even come close to trying to do everything that I do without my loving wife who does everything she can to keep me sane. Given what she has to work with, she does an amazing job.
>> The day you realised “You’ve made it to the A-List PHP arena” ?
I’m still not sure that I have. But if I did, it was just when I actually started getting accepting to conference regularly. In the beginning when I was applying for conferences, I found myself having about a 20% acceptance rate. I’d apply to 5-6 conferences a year, and hope I got accepted at one. Until one year (just after I started working for Digg), when I applied to 6 conferences, and suddenly was accepted at all 6. That was a big of a shock (and quite a few frequent flyer miles)
>> Why you are successful and why others are not?
I don’t think I am successful. If you see my track record with companies, I’m a bouncing ball of moving from one failed attempt to another. There are many others who are far more successful than I am. I just keep sticking with it, putting my head down, and not taking no for an answer.
It just about hanging in there and doing what you love.
>> A final word before closing up..
PHP is an amazing language, and the PHP community is a great group of people who help support each other. But the one word of advice I have to all PHP gurus or aspiring folks out there: Make sure that you know your JavaScript just as well, if not better.
In the end, everything on the Web is moving to being far more client-side driven, and JavaScript is slowing winning the language war (if there ever was one).
That’s not to say that PHP will ever go away, but far more of the logic is now being done on the display side, with JavaScript, than ever before. So make yourself marketable, make sure you are a full stack developer who can go from HTML to CSS to Javascript to PHP to the Database … and you’ll do fine!
Now Do Your Part!
1) Help diffuse this interview to the PHP ecosystem – Share, tweet and spread the word to your audience ==> That would be a FREE way to thank me 😉
2) Make a comment below using the comment form – I’m sure you can at least say 1 word about this interview
{I’m thankful to your response(s)!}
-> “One of the BEST things that I think you can do, is spend lots of time on the PHP documentation website.”