PHP Interview With Corey Ballou Co-Organizer Of The Queen City PHP Meetup Group – Start A Web Development Blog & Write About New Things You Learn

About This Interview

This is the #35th 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..

Corey Ballou Co-Organizer Of The Queen City PHP Meetup Group

In this edition I talked with Corey Ballou who is the co-organizer of the Queen City PHP meetup group. @cballou has also been working as a developer with the cool mojoLive team. To be noted that Corey will be the speaker for the next, 3rd NomadPHP Online Talk this week and he will be presenting “Creating Realtime Applications with PHP and Websockets“. I now invite you to learn from his experience and get to know his personality.

And Now The Interview…

>> Please tell us a bit about yourself

I was lucky enough to be exposed to computers at a very young age. My mom was a systems analyst at the local power company, so I got a computer back in the days of AOL and 14.4k modems. I was fascinated with the whole warez scene and free software, which naturally progressed into dabbling with VBScript for nefarious purposes like punting people from AOL. I ran my first domain in the 6th grade, SnowBlown Snowboarding, where I basically compiled images of all of the top industry snowboarders into photo galleries and posted tips and tricks on moves I could only dream of performing. This exposed me to the intricacies of HTML as well as some Perl, CGI, and Server Side Includes. I officially had the web development bug. Ever since then, I’ve always known I wanted to be a web developer. I was self taught in middle school, took local college courses in high school, and received a bachelors degree in Computer Science at Clarkson University.

In terms of my professional career, I began working with design and development agencies for a period of 5 years. This was a phenomenal way to get into the industry. I was exposed to a plethora of projects, held to quick delivery times, and learned a metric ton. During this time I also ran a popular web development blog where I honed my skills in technical writing and exposed myself to reviews and critiques of others. After work, I was always working on side projects to hone my skills. I was coding 10-12 hours a day for those first 5 years.

And here I am today. I’m the current development lead at POP.co, which is a really cool startup that spawned at dotCO after us developers were tossing ideas around. We decided that getting a business or personal presence online was too difficult for the non tech savvy crowd. What we came up with was a tool to automate setting you up with a domain name, a custom email address, google apps, and the ability to enable and disable additional services in under a minute. It’s pretty revolutionary stuff. We even give our users a free 15 day trial with a custom domain name to see if they like it!

>> How you started with PHP

I started with PHP in college on my own. I was building my own music recommendation website because I thought the existing solutions out there were horrible. I didn’t have any formal PHP classes or training, I just picked up a book, read tons online, and began coding. The key is to always be looking for best practices. There’s so many horrible tutorials and open source libraries out there that it’s easy for a beginner to get in a spot where their website could be comprised by an attacker.

>> Your LAMP stack comprises.. ?

Personally, I tend to run CentOS or Ubuntu, nginx running as a reverse proxy, Apache, PHP 5.4, and MySQL 5.5. I also tend install some lesser known things on all my VPSes such as fail2ban, monit, and supervisord.

>> The relationship between You and The PHP Community comprises..

I have been co-organizing the Queen City PHP meetup group in Charlotte, NC for over 2 years now. We took it from a dying group with no monthly meetings to one that brings in some industry leaders a few times a year. Beyond that, I contribute to open source via my github account as well as openly blog at BLACKBELT. I do public speaking on occasion. I used to also heavily contribute on StackOverflow but have since backed off in that department.

>> How do you find PHP now as compared to when you first started

I believe it’s progressed for the better. The language as a whole has taken steps to keep it current with other modern languages. The community is stronger and more tightly knit than before. The general consensus has been to tighten up the tutorials and best practices for newcomers to PHP. When composer started gaining adoption, I believe it was a turning point for PHP. I think we still have room for growth in the package management department. We need a way to point people in the right direction by adding things like upvotes, rankings, and commenting to let others know what’s recommended.

>> Based on your experience, what are the good and bad parts of PHP

Good: It’s easy, it’s full featured, and it’s heavily supported across all hosting platforms.
Bad: It’s a bit more verbose than other languages and doesn’t impose very many restrictions on it’s usage. You’re left to your own devices.

>> What would be the Top advice to a PHP beginner

You really need to put in your hours. It’s the only true way to get better at anything. Consider doing at least one, if not all, of the following:

  1. Keep up on popular blogs, read tutorials, read source code.
  2. Join an existing open source project on github and contribute.
  3. Start a web development blog and write about new things you learn.
  4. Get out there in the community. Attend meetups, conferences. Meet and know your local developers.
  5. Never stop checking out new technologies and libraries. Our industry moves too fast for you to lock yourself in.

>> To someone who wants to become a better PHP developer..?

I’d say my advice for becoming a better PHP dev is the same as that I gave for beginners. I still do everything mentioned above to improve myself. One thing that I supplemented this with is speaking at conferences, local meetup groups, podcasts, etc. Getting yourself out there in public forces you to acquire a domain knowledge of the subject matter before presenting on it. You essentially force yourself to learn; just like a homework assignment. There’s always more to learn, so it’s next to impossible to run out of topics.

>> What are some common PHP mistakes you often see beginners make?

I’m a huge stickler on escaping input and sanitizing output. Security is a must. Always be cautious of XSS and SQL injection attacks. They’re by no means the only two attacks, but they’re ones you should never forget.

>> The best PHP book you’ve read

If you have a general understanding of PHP and are looking to learn best practices from some industry leaders, I recommend checking out PHP Master: Write Cutting Edge Code. It was written by three highly respected leaders of the PHP community: Davey Shafik, Lorna Mitchell, and Matthew Turland. This book isn’t tutorial driven and it’s not going to give you copy and paste code to solve your problems. It’s purpose is to satisfy eager, inquisitive minds who want to correct mistakes before they’re made.

>> A PHP blog or resource you highly recommend

Chris Cornutt The Hero Behind PHPdeveloper.org

Chris Cornutt writes about PHP web security at websec.io. If you haven’t already, check it out!

>> The IDE that you use

Don’t shoot me, but I’m actually using Komodo IDE. I’ve kicked myself several times for not just taking the jump into vim full time. The less you touch the mouse, the more productive you can be. If you’ve ever watched a vim guru, you realize how inefficient you are at programming.

>> How do you debug your PHP code?

I run xdebug for local debugging and use Monolog with a heavy dosage of info, error, and exception catching on our production code which outputs to a MySQL database, local log file, and remote Graylog2 machine. We receive notifications via email for anything exceeding a log level of error (so basically critical and alert). With this information at hand, I can usually track down the problem to within a few lines of code. Alot of this came with years of debugging under my belt. It’s like a black art.

>> A PHP framework you use and would recommend

I both use and recommend Laravel. This is coming from Kohana 3 and Zend Framework 2.

>> A unit test framework you recommend using?

You specifically mention unit testing, so I’d have to say PHPUnit. I’d also like to throw Behat into the mix for BDD. You can use both on your project at the same time.

>> A CMS that you think is worthwhile

I’ve always been a fan of WordPress, having written a number of plugins over the years. It’s very easy to customize the look and feel and the plugin repository is amazing. It’s not the prettiest solution under the hood, but the community support can’t be surpassed.

>> An E-Commerce cms you recommend

This is a tough one. My limited exposure to Magento left a bad taste in my mouth, but it’s definitely feature packed. To be honest, I really haven’t had to deal with many E-Commerce CMSes. I created a full blown one from scratch a number of years ago. It was perhaps one of the most painful experiences of my development career. Things like percentage discounts leave you with order totals that involve fractions of a penny. It’s a whole different ballgame.

>> Do you recommend using database layers and ORM? If yes, what database “framework” you would recommend?

I’ve always been a proponent of writing my own queries by hand for the sake of readability. Anyone with a background in SQL knows what you’re trying to accomplish; it’s framework agnostic. In terms of database layers, I do love the “M” in MVC. Keep all your queries in the model!

>> One PHP library/Project you really appreciate

The combination of composer and packagist on top of PSR-0 standards is perhaps one of the biggest contributions to the community I can think of as of late. It’s giving libraries exposure and making it easier for young developers to get up and running with tested and battle hardened solutions to their problems.

>> One function that you like (or which you tend to use frequently)

I’ve been doing a fair amount of API design lately, so I’d have to say json_encode and json_decode have been at the top of my arsenal when I’m creating RESTful clients and servers. Beyond that, all of the cURL methods in general. I love and hate cURL at the same time.

>> One PHP person that you admire and what strikes you about him/her

Cal Evans NomadPHP Organizer
  1. Cal Evans

I personally admire Cal Evans for not only his passion within the community. I’m most struck by his ability to respond to any and all emails. He’s super active, responsive, and always helpful to anyone he comes in contact with.

>> One PHP Community that you recommend

Any and all! I highly recommend getting on Freenode IRC and joining the channel #phpc.

>> Are you part of any PHP User group? Could you tell a bit about it if yes..

I’m actually a co-organizer of the Queen City PHP user group in Charlotte, NC. You can check us out at qcphp.org. We try to keep things consistent and interesting, scheduling events every second Monday of the month. If you’re ever headed our way and are interested in presenting, just give me a heads up. We love guest speakers!

>> A PHP Usergroup that you appreciate and would highly recommend

The Atlanta PHP user group is one that I believe all of us leaders look up to. They’re very successful, have consistent meetups, a great list of speakers, and have a great turnout to boot. Getting a consistent turnout is a very hard thing to do. It really takes the community on the whole to make the effort to show up.

>> Which was the worst programming mistake you did?

Working as root on a remote machine and performing something recursively such as “rm -r” or “chown -R www-data:www-data *“. Either that or not creating a MySQL backup before performing migration queries. Once you’ve done it once, you always remember to back your stuff up! Messing up a live machine makes your heart sink.

>> If you could change one thing with PHP, that would be…?

The stigmas. There’s so much negative energy coming from developers of other languages towards PHP. I’d like to think of PHP developers as being agnostics in the sense we openly use whatever tools necessary to complete the task at hand efficiently. If we’re more efficient at X than Y, so be it. I’m of the mantra “get shit done“. That’s the single most important thing in development: delivery!

Corey & PHP Conferences

>> The best conference you attended would be..

It’s tough to pick my favorite for the sake of being fair. I like conferences that are well organized and run smoothly with little wifi interruption. Most conferences have an overarching theme which dictates the atmosphere, attendees, speakers, and presentations. I will say that one of my favorite conferences is likely due to me being new to the industry, but it was a MySQL unconference up in Charlottesville, VA. The speakers were top notch and I was really schooled on MySQL performance and optimization. I went home and read the entirety of High Performance MySQL after that.

>> Can you please share the good, and may be not so good moments, of being part of all the conferences you attended

All of my experiences have been positive. My biggest gripe is when I end up in an intro level presentation on a topic I’m already familiar with. Sometimes it’s tough to distinguish the technical level of a presentation based on the summary. I personally prefer walking away from presentations feeling dumb, so it may just be me!

>> What are the main aspects of conferences that can really help a PHP guy to get better in his progression

There’s alot to be said about attending a presentation as opposed to reading the slides online. The slides themselves are missing all of the context. When you attend conferences, you’re already in the mindset of meeting individuals as passionate about your profession as yourself. Not only that, but the topics themselves tend to as current as possible. What I get most out of conferences is a drive to learn new things.

Closing Out With Corey..

>> How do you time manage all the stuff that you do, coupled with your personal life?

My primary work hours are my work hours. I don’t intermingle them with outside activities. If I’m working on a side project, contributing to an open source project, or doing something like blogging, I generally do it from 6 to 8 AM. If you’re an early riser like me, that gives you approximately 10 hours a week to do whatever you please in the mornings if you exclude weekends.

>> The day you realised “You’ve made it to the A-List PHP arena” ?

I’m not so sure I ever feel like I’ve made it. Maybe it’s just me, but there’s always a feeling of self doubt or “Am I really good enough?” I guess the day you’re accepted as a conference speaker gives you a sense that you’re on the right track. For those of you looking to make a personal brand for yourself, I could definitely give you pointers. Always open source your projects, try to get your name out there by blogging, create presentations in advance and submit them to conference CfP (call for papers), and make a conscious effort to meet other community leaders. People want to see your drive; your passion!

>> Why you are successful and why others are not?

I’d say part of my success is due to just putting myself out there for others to see. It’s a risk/reward system. I could put something out there really shitty and get some grief. Generally that’s not the case and people are receptive since you did something to benefit others. The real key is to spend your spare time helping others. By putting yourself out there in the public eye and teaching others, you force yourself to learn. Never stop learning.

>> A final word before closing up..

We need more active community members. More conferences. More proponents! If you’re generally on the sidelines as a passive participant, talk to your local user group and try to get a talk scheduled!

If You Appreciate What I Do Here On Seven PHP :: 7PHP, You Could Consider:

  1. LIKE-ing 7PHP dot COM on FaceBook
  2. 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
  3. Make a comment below using the comment form

{I’m thankful to your response(s)!}




Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.