This Cyber Monday Tuts+ courses will be reduced to just $3 (usually $15). Don't miss out.
Jason Lengstorf is a professional web developer who specializes in PHP and jQuery applications. He's the author of the recently released PHP for Absolute Beginners, which is an expert's voice in open source. Additionally, he co-authored an eight-part tutorial on Creating a Web App from Scratch with Chris Coyier. Join us as we discuss web development, PHP, and his life in general.
1. Many of us may be familiar with you because of your book: "PHP for Absolute Beginners." For those who are unfamiliar with you, can you tell us a bit about yourself and your life?
In a nutshell, I'm a PHP developer based out of Missoula, MT. I run a company called Ennui Design that specializes in small business and individual website development. I'm also into front-end development, which I do primarily using jQuery.
I'm 24, and I've been working in web development for about six years, and I've been developing full-time for about a year and a half now. I'm completely self-taught, so I owe my career to the blogosphere and the great folks who are always helping out on forums like W3schools and the like.
I also try to write, and I've written a couple articles around the web for sites like Smashing Magazine, CSS Tricks, and Nettuts+, as well as for my own blog on Ennui Design. Earlier this year, I got the opportunity to write a book for Apress publishing that came out in October, called "PHP for Absolute Beginners", and I'm currently working on a new title for Apress called "Pro PHP and jQuery."
2. How did you get started in web development?
I got started in web development out of necessity. When I was 18 or 19, I played in a band, and we needed a website. When we started looking at pricing, we realized there was no way we could afford to have one built for us. So I told the rest of the guys, "Well, I think I can figure this out."
I got on w3schools (after searching "how to build a website" on Google) and worked through the HTML course, after which I was sure I was an expert web designer. So I built this awful, table-based website, complete with iframes and all inline styling.
Right around that same time, a couple friends of mine needed websites, and I offered to build them for free. I did, and they were both happy with them, but I realized that maintenance on their sites was really cumbersome. That's when I got into PHP, because I needed a solution that would allow for easier maintenance.
Since I didn't know anything about content management systems or that there were existing CMSs available, I ended up rolling my own. It was full of holes, clunky, and feature-poor, but it did the trick, and I loved building it. I spent 14 hours a day in my favorite coffee shop tweaking it and rebuilding it.
After my two friends' sites launched, I received a call from my first real client, and realized I could actually make money building websites. I spent four years trying to get good enough to build sites full time, and I finally hit that goal in Fall 2008, when I quit my day job at a FedEx Kinko's to work full-time on Ennui Design projects.
3. What is the best way to learn PHP - and how was your experience writing this book?
Learning PHP is like learning any language. Yeah, you can do a bunch of exercises that don't have real world application ("Repeat after me: 'Cette espadon est glissante! This swordfish is slippery!'"), but that only helps you memorize concepts. I think you have to really immerse yourself in real world uses of the language so that you can see how and why it's used.
That's the approach I took when writing "PHP for Absolute Beginners." We cover the basic concepts, then immediately build a real-world project (a very basic content management system).
Writing the book was great for me, because it forced me to defend my approach in development. I had a technical, editorial, and project reviewer, all keeping an eye on how everything was put together, which put the pressure on to do everything the right way, with no shortcuts. Learning to just do it properly the first time was a good lesson in patience for me. It will also help me when I'm working on future projects with collaborators, because I now have a better grip on writing self-descriptive code, including better inline documentation, and justifying my programming choices with concrete reasoning.
4. Recently, you co-wrote an 8-Part series called "Creating a Web App from Scratch" with Chris Coyier on CSS-Tricks>. What was that like?
Chris Coyier is the man, hands-down. I'm a workaholic, but that guy manages to make me feel like a slacker with the amount of work he produces consistently.
The tutorial series was a great way to force myself back into blogging (because I've been slacking lately), and an opportunity to give another real-world example to beginner to intermediate level developers. It's one thing to explain a concept, but an entirely different beast when you're attempting to explain a concept in the context of a real-life production site.
The comments we received were really helpful, because it showed us pieces of the app that we hadn't thought of, like some security holes that we hadn't considered and features that would really enhance the app.
That series was one of my favorite tutorials I've ever worked on, and I hope to put more of them together along those lines in the future.
5. Can you provide us with any information on your upcoming book, "Pro PHP and jQuery"?
Pro PHP and jQuery is going to be for intermediate to advanced PHP developers who want to become familiar with jQuery's capabilities. It's going to cover the creation of an AJAX-powered events calendar that'll have a bunch of features like tooltips, file uploads, drag-n-drop ordering of events and photos, and other useful concepts.
6. You are owner of Ennui Design, which offers custom web development. What's your day-to-day like?
As I mentioned earlier, Ennui Design is the company name under which I do my freelance work. I've tried to become a one-man army of sorts by offering top-to-bottom site development, from art and design to customized content management systems. Recently I've started to take on clients who need custom applications, and that's been a lot of fun.
As of this month, I'm expanding Ennui Design and trying to build a network of fellow freelancers to help me handle my client load. I just brought on Drew Douglass recently, and I'm really excited to be working with him. I'm still looking for a front-end designer to help me with artwork and PSD-to-XHTML conversion, so if you know anyone... :)
7-What is your favorite web application framework and why?
Because I never knew that web application frameworks existed, I never learned any of them. I subscribe to the concept of multi-tiered architecture, and I've even written an article about it for Nettuts+.
I've looked into other patterns, like MVC, and I think they're great, but I try not to get bogged down in programming dogma; if it's easy to read, easy to maintain, and DRY for the most part, I consider it to be good code.
8. Can you tell us a bit about your personal projects?
Currently, I'm working on getting my CMS ready for an open source release with Drew Douglass and a few other friends. I'm also planning on developing a version 2.0 of Colored Lists with Chris Coyier (the app we built in our 8-part "Building a Web App from Scratch" series).I've also got a few jQuery plugins that I want to tidy up and release sometime in the future.
I recently decided to try my hand at product design as well and launched an apparel company called Humblecock with a couple close friends. We wanted high-quality, ultra-comfortable shirts for ourselves, and we decided that the best way to get them was to make them ourselves. It's a brand new adventure, and I'm having a blast with it so far. It was one of my favorite websites to design, and it was really cool to design physical products.
My blog, unfortunately, has fallen victim to my overloaded project schedule. Between my client load and deadlines with my publisher, I've had very little free time. However, with the addition of Drew and (hopefully) other freelancers to the Ennui Design network, I'm hoping to have more time to blog again.
9. What are your favorite online resources to stay up to date on the web development industry?
I try to keep up with as many blogs as possible, really. If I've got a spare moment I'll try and power-read as many articles as I can to see if any new developments are directly affecting any of the work I'm doing. Some of the sites I frequent are:
Chris Shiflett also has a lot of good articles on security in his back catalog that I use for reference regularly.
10. What's your opinion on WordPress and Drupal?
I've barely used either, so I don't think I'm really qualified to answer this question.
11. When working, how do you concentrate while writing code, and what is your favorite code editor?
I generally work at my home desk when I'm doing any kind of writing or heavy development. However, when I need a change of atmosphere, I'm known to haunt a local coffee shop (I actually spent so much time there that they had me build their website ).
I use XAMPP, Eclipse, and Firefox (with Firebug/FirePHP/Web Developer Toolbar) for the majority of my development. Eclipse is Java-based, but it's also open source and has support for everything I've ever needed. I've briefly played with a few other IDEs, but it would take a pretty solid argument to convince me to switch at this point.
12. What do you think the future holds for PHP?
In the immediate future, it holds great news like anonymous functions and namespaces (with the adoption of PHP 5.3). I can't wait until there's wide enough support by the hosting companies to start using them. :)
On a less specific level, I think PHP and other "web" languages are going to start becoming more and more relevant for serious development. The whole world is moving online, and web apps are beginning to matter just as much as native apps, if not more so. I'm excited to see what's next for PHP.
13. Any code pet peeves?
Personally, I hate to see code that sprawls. It really bothers me when code is written as a long string of actions instead of chunked up into small functions or methods that handle one action. That lack of separation leads to incredibly bloated, difficult to maintain files, and there tends to be a lot of repetitive code. It just begs for errors when you have two chunks of code that do the exact same thing.
In general, I just wish everyone would code like there was someone else working with you that needs to understand what the hell you're talking about. The arrogance that leads someone to think, "If you're not smart enough to understand how my code works, you shouldn't be in my source code," really bothers me; I think a better question is, "If you're not smart enough to write clear code that any functional developer can understand, you shouldn't be talking down to anyone."
14. What type of music do you like? Any hobbies?
I grew up on country music, then started listening to Top 40 stuff as I got a bit older. I got introduced to metal, then punk and hardcore, then hip-hop, then folk. I found some good in all of it, but I listen to mostly folk/alternative and hip-hop now. I spend an inordinate amount of time listening to music, and I track it all through Last.fm.
I stay pretty busy, so I don't have too many hobbies, but I make an effort to keep them non-geeky (I mean, at some point I'm going to need to impress the ladies, right?). I lift weights a few times a week, and I like cooking. I'm also a big time beer lover, and I love finding new microbrews and specialty beers (especially stouts and porters). I brew my own beer every month or two for fun, which is way more fun than it sounds. Plus, there's nothing better than drinking a beer you bottled yourself. I try to travel as much as possible, also. I'm planning a couple road trips that pass by some of my favorite breweries in the spring, and I'm hoping to get out of the country next fall and hang out in Europe for a bit.
15. What are your future plans?
If I get everything I'm hoping for, I'll be doing a little less in terms of freelance work and focusing more on the teaching aspect of programming. I'd love to continue producing in-depth tutorials alongside influential bloggers in the community, like Chris Coyier. I also hope to start speaking at conferences in 2010, if I'm lucky enough to get the opportunity.
Apress has been great, and I hope to continue writing books about web development. I also want to get back into writing articles for sites like Nettuts+ (I haven't forgotten about that article, Jeffrey! I promise!) and regularly blogging on Ennui Design.
I also want to try and grow Humblecock as much as possible, if for no other reason than I want to be able to make exactly the clothes I want to wear.
And at some point I'll have to grow more of a social life and start dating. My mother will have a heart attack if I keep coming home alone for Christmas. :)
Thanks so much for your valuable time, Jason! It was a pleasure to talk with you!
- Follow us on Twitter, or subscribe to the Nettuts+ RSS Feed for the best web development tutorials on the web. Ready
Ready to take your skills to the next level, and start profiting from your scripts and components? Check out our sister marketplace, CodeCanyon.