Technical New Year's Resolutions: 2014

In reviewing my 2013 Technical New Year's resolutions, I give myself a solid B-, maybe a C+.

I've been completely slammed and overwhelmed with my day job at times, which has contributed to my lack of focus on things outside of work. It's also worn me down at times, and left me with little motivation. That's no excuse, but a human being can only take so much.

If I reflect on my goals...

  • I did some more speaking, this year at Atlanta PHP, CoderFaire, and Emory University.
  • I built some great software at work, which I'm really proud of.
  • I shipped some decent updates to FloodWatch, but not a major 2.0 version. However, I will ship a major update (with iPad support) to it in the first few days of 2014, so this goal is 75% complete.
  • I didn't blog much at all, which is disappointing. This one evades me every single year. I need to be better about it.

So for 2014, I'm keeping it simple:

  • Ship great products: Nothing else matters. I'm going to ship the best stuff I can all year, both at my day job, and in my spare time.
  • Find fun and satisfaction in all that I do: Not all work is fun all of time (which is why it's called "work"), but I need to strive to find positives in all that I do, or if I can't, cease doing them. If it's not fun and satisfying in some way, then it's not worth doing. Period.
  • Say "no" more: I'm a chronic overachiever who tends to overcommit myself. This year, I'm going to guard myself from being overcommitted. If I can focus on the goals above, shipping and focusing on enjoyable work, then this should be easy.

Wish me luck. Happy New Year! 2014 is going to rock.

Top Ten List + CoderFaire Atlanta 2013

Back in March, I gave a new talk at Atlanta PHP: "Top Ten List: PHP and Web Application Performance". This talk is a culmination of my ~14 years of experience primarily as a web application developer, but also as a systems administrator / DevOps-type.  After working with PHP and web applications for so many years, I have amassed quite a few tricks for squeezing maximum performance out of web applications, PHP or otherwise. I'll be presenting it again at CoderFaire Atlanta on April 20, 2013.  CoderFaire is organized by a fantastic crew of Cal Evans, Kathy Evans, Chris Spruck, Kevin Roberts, and Jacques Woodcock, so it's going to be a great event. I've never attended a CoderFaire event before, but I've only heard positive things. Because it's not limited to a single technology platform, you're sure to meet a wide array of technical minds from all different backgrounds. I'm sure we'll all walk away with some fresh, new ideas from this diverse crowd.

At only $50 per ticket, you're not going to find a better deal on a technical conference this year. Register now!

As a little teaser, here are each of the 10 guests introducing the topics.  Come on out for the juicy details. Be prepared to go home, sit down, and optimize some aspects of your web application, though!  See you there.

10. Elizabeth Naramore, GitHub: Tweak your realpath cache settings

9. Scott Rocher, Tonx Coffee:  Whenever possible, use offline processing

8. Matthew Turland, Synacor: Write efficient SQL queries

7. Scott Lively, 3SI Security Systems: Don't execute queries in loops

6. Jed Lau & Maggie Nelson, Findery: Know what your application is doing

5. Robert Swarthout, ShootProof: Use gzip compression on responses

4. Ian Myers, Findery: Do not use .htaccess files

3. Ken Macke, RockIP Networks: Cache all the data that you can

2. Davey Shafik, EngineYard: Use a content delivery network

1. Ben Ramsey, Moontoast: Use APC and set apc.stat = 0

Technical New Year’s Resolutions: 2013

I try to do this every New Year's Eve, so I'll give it a whirl this year.  First, a little reflection on 2012's resolutions.

  • I did okay in 2012. I failed to actually release FloodWatch 2.0 (for iPhone and iPad), but I've made some great progress in the last quarter of the year, so I should be able to release it in Q1 2013.
  • I failed to blog more. Big time. I've just been so busy with work that I haven't made it a priority. I've already got a post ready for 2013, so I'll publish that in the coming days.  Must stay devoted to this.
  • I've not done much with front end technologies in 2012, sheerly because we're on specialized back and front end teams at CrowdTwist.  While I'm bummed that I haven't done more front end work this year, it's nice to have been so focused on PHP and server-side code all year.
  • I did gain a lot of exposure to PHP 5.3 and PHP 5.4 changes, so that's been great.  I've spent a decent amount of time on the systems administration side this year, as well as helping craft and refine our back end toolset at work, too.  I also submitted and helped resolve an APC bug this year, which the CrowdTwist team looks forward to being included in the 3.1.14 release.

I've built a lot of great application components in PHP this year -- definitely one of my better years with many projects to reflect on.  I'm very aware of how my architecture and implementation skills have improved with time and experience.  I'm building things that I'm genuinely happy with the first time around.  CrowdTwist has been incredible, and 2013's going to be a huge year for us.  Look out!

Here we go for 2013.  I'm keeping it simple so I can focus on these few things:

  • Blog more: I've failed so miserably at this in years past.  I'm going to make a concerted effort to blog more in 2013.
  • Get back to speaking: I spent a good few years on the conference circuit, but not so much since I became a parent in 2009.  I'm speaking at Atlanta PHP in March, so that's a start.  I'm going to try to submit a proposal for php|tek in May 2013, since that's thee conference to attend.
  • Build more great software (at work, primarily): we're working on some incredible projects at CrowdTwist.  I want to continue to give a 110% effort all year long, helping architect and build components that I'm proud of.  Watching something you built function in the real world under high traffic is such a gratifying feeling; there's nothing like it.
  • Actually release FloodWatch 2.0 for iOS: this will be doable for sure.  I'm just taking my time, paying attention to the details.  Building and maintaining my app is a great exercise in helping broaden my skills beyond PHP and open source technologies.  I've enjoyed every minute of it, and really look forward to refining these skills in 2013.

2013 is going to be a wild year!  Bring on the journey.

On to CrowdTwist

TL;DR: I'm making a move to CrowdTwist, a New York City-based startup providing social and loyalty services for some of the world's biggest brands. I worked with their co-founder and CTO, Mike Montero, from 2001-2005 at Community Connect Inc., where I got my start as a developer in PHP and open source tools. I'm thrilled to be joining him and the CrowdTwist team on what's sure to be an incredible adventure.

Back in 2001, I joined Community Connect Inc. (now Interactive One) as a Senior Network Support Specialist. I was an internal sysadmin, spending my time managing Linux-based file servers, development servers and things of that nature. I had been living in New York just a few short months.

CCI operated what were, at the time, some of the most highly-trafficked social networking sites on the Internet. This was before MySpace and Facebook, of course. was one of the mostly highly-trafficked PHP-based sites on the Internet. We were doing an insane amount of traffic. Our applications had to perform well and scale. We had no choice.

Even as a sysadmin-type, I was surrounded by some incredibly talented developers, who were all working with PHP on Linux and Apache using Oracle. There were caching, using CDNs, and doing things that were still relatively new on the Web. I caught the development bug. I started writing code in my spare time, taking on little projects on the side. How could you not get totally infected in an intense, exciting environment such as this?

In early 2002, I received a call out of the blue from my boss (also our CTO), Mike Montero. On that call, he asked me if I'd be interested in moving to the CCI development team. There was only one way to answer: "YES!"

Thus, in early 2002, just about 10 years ago, I became a developer. The most lowly of the low -- "Associate Software Developer." Over the next three and a half years, I worked my way up to Technical Lead, learning a ridiculous amount from my colleagues. I had amassed this strong set of experience in systems administration and development. I was really growing my skills, and I loved every second of it. I worked many late nights and weekends...and it was an absolute thrill.

Our work was literally being seen by millions of users every day. We were building quality products, all on a home-grown internal framework of sorts. We were doing code reviews. We were writing unit tests. This was how software was built. I never knew any lifestyle but this -- it was my first development gig! This was just the way things were done. This period of time really shaped my personal stance on how to build quality software that was both performant and scalable. I consider myself so very fortunate to have started with this level of experience. It's what gave me such a strong base of experience as a software developer.

In mid-2005, I moved on from CCI and spent almost five years in an interactive agency, Schematic (now Possible Worldwide). During this time, I gained exposure to new, different technologies like Zend Framework and Memcached. This was my first foray into leading major technical projects for clients, but still rolling up my sleeves, diving into architecture and code. I was using my skills from CCI with PHP, sysadmin duties, and databases, and applying them to client work time and time again. I was working in a world that was very different from what I had known at CCI, but bringing so much of that experience forward with me. In mid-2007, we moved to Atlanta, where I stayed with Schematic.

After almost five years at Schematic, I moved on to Yahoo! for a little over a year. This allowed me to get back to my development roots, focusing solely on code and architecture. I had a great time.

In mid-2011, I made a move to Half Off Depot to build an internal development team and grow the technical side of the company as Lead Software Architect. Here, I've was using all of my skills: systems administration, PHP, MySQL administration, managerial duties, recruiting, and working with other departments, such as marketing and design.

Over the past eight months, I've made a huge impact at Half Off Depot in terms of stabilizing the application and its Production environment. I've branched out into using Git and GitHub, Capistrano and Amazon Web Services. I've also had the opportunity to continue sharpening my Objective-C and iOS development skills. Overall, Half Off Depot has challenged me, and I've enjoyed it. I've reaffirmed to myself that I've got a breadth and depth of skills, and that I'm still pretty sharp with all of them. It's also reminded me how much I enjoy a startup environment.

But about a month ago, Mike Montero came calling again -- this time, with an opportunity for me to join CrowdTwist, a New York City-based startup where he's a co-founder and CTO. CrowdTwist is an emerging, unique player in the loyalty space. Think "platform as a service." APIs, user-facing sites, large amounts of data. And an incredible team that's tapping into this data to provide real value for their clients.

When someone you trust and respect comes calling and seeks you out, you listen and explore. And that's exactly what I did. And let me tell you, the CrowdTwist team is INCREDIBLE. I could not be more excited for this career change, both for the opportunity to work with Mike once again, but also to work with all of the brilliant team members and their clients.

I'm in a unique position where I had almost five years of CCI-level experience, coupled with seven years of experience since then. Now I'm going back to work with Mike and the CrowdTwist team, where I'll be able to bring my strong foundation from CCI, along with all that I've learned in the years after CCI. My career has come full circle with respect to the last decade.

I typically like to make a job change, then stay there for at least four years as I did with CCI and Schematic. However, this opportunity with CrowdTwist is so rare that I had to take it. To be with this caliber of talent in such a promising space where they're truly a pioneer? You just don't say "no" to that. Or if you do, you regret it in a few years when they've been wildly successful.

So, on March 12th, I'm joining CrowdTwist full-time. I'll be working remotely from Atlanta, but traveling up to New York City from time to time. I'll be focusing on a mix of back end development and architecture, systems administration, and helping the team continue building quality software.

To my Half Off Depot colleagues, it's been incredible! We've done some great things together. I wish you all the best of luck. Also, this has easily been one of the best team of technologists I've ever worked with. Thanks, guys.

To my future CrowdTwist colleagues, thanks for welcoming me! I'm so thrilled at the opportunity to join you. This is going to be an incredible ride. I'm ready to rock.

See you soon, CrowdTwist! And if you've read this far, thanks. :)

Technical New Year’s Resolutions: 2012

I like to do this every year. It's a reflect and reset-type of thing for me. Here's what I accomplished from last year's resolutions:

I'll keep it short. This year, I want to:

  • Finally release FloodWatch for iPad and Mac. I've already started the static library. This should be done in the first half of the year.
  • Gain a deeper knowledge of PHP 5.3 and 5.4 features, such as namespaces, closures, and traits.
  • Beef up my front end development skills. I've done front end work for months at a time, but never for a long period of time. When I take on this kind of work, I enjoy it, but I want to do more of it in a focused manner. Front end development skills have been my area of weakness for my entire career. I'm a back end kind of guy.
  • Refocus my technical leadership skills. I've led a number of large projects during my career, and I'll get to do more of that in 2012. As a result, I look forward to really sharpening my technical leadership skills with respect to architecture, technical project management, and driving teams of incredibly talented developers.
  • Get back on the conference circuit. For real this time.
  • Blog more. I've started getting back to this recently. I'm going to stick with it.

From where I sit, 2012 is going to be incredible. 2011 was great, but I've got my work cut out for me this year. It's going to be a wild ride. See you around!

What are you going to do in 2012?

Speaking at BarCamp Charleston 2010

UPDATE: slides are now available at Slideshare; also see my recap of the event at the Yahoo! Developer Network I'll be speaking at BarCamp Charleston in Charleston, SC on November 13, 2010. I'll be giving an introduction to Yahoo! Query Language, Yahoo!'s SQL-like language allowing users to query data across web services. I've spent a bit of time with it over the past few months, so it's sure to be packed full of interesting demos.

This will be my first official speaking event where I'll be representing Yahoo!, my employer. I've been at Yahoo! for just over six months now and am loving every minute of it! I'm honored to join the ranks of my fellow Yahoo! Developer Network colleagues, such as Derek Gathright and Jonathan LeBlanc.

If you're an Atlanta-based reader, I know that a number of members of Atlanta PHP will be attending. Let's show Charleston how committed Atlanta is to technology here in the Southeast! See you all there.

Goodbye Schematic, hello Yahoo!

After four and a half years, I will be leaving Schematic for Yahoo!. My first day with Yahoo! will be April 5th, where I'll be working from their Atlanta office. I'm not at liberty to tell you what I'll actually be working on, though...sorry! I look forward to joining the ranks of former Schemers Robert Swarthout and Paul Amsbary, and fellow PHP community members such as Derek Gathright and Sara Golemon.

I'm sad to make this move as I've seen Schematic grow from ~120 people up to near 400. We've added offices around the globe and entire business units. I've had the opportunity to work with some incredibly talented developers, technology leaders, project managers, and account managers. I've worked on some amazing projects with some of the most appreciative, cutting-edge clients you could ever ask for.

Before joining Schematic, I worked for Community Connect Inc. (now Interactive One) for almost five years, building and maintaining functionality across various social networking sites, such as,, and I enjoyed this product-centric environment where any developer could take ownership of a product, then watch it grow and flourish over time. These opportunities are a bit more rare in the agency world, where you're generally building, delivering, then moving on to the next big effort.

I'm very excited to get back into a product-focused environment. I'll have the opportunity to sharpen my skills with client-side technologies, along with other languages and platforms. I'm very much looking forward to focusing 100% of my time on architecture and development as I might have gotten a little rusty over the past year or two.

So, thanks, Schematic! It's been fun, but it's time for me to perfect my Yahoo! yodel. Best of luck to you!

Technical New Year's Resolutions 2010

I try to do this every year by New Year's Eve, but I'm a little late this year! Reflecting on my 2009 PHP/technical New Year's resolutions, I ended up doing pretty well despite some unexpected challenges. Zend_Log_Writer_Mail made it into the standard library, so that takes care of my Zend Framework line item to some extent. I didn't propose anything new, though, but at least it's something!

My goal to write for php|architect was realized in October with the publication of "Make It Mobile with PHP and Open Source Tools."

I spoke at iPhone/Mobile Camp Atlanta 2009 with a modified version of “Rickroll To Go With WURFL, PHP, and Other Open Source Tools”, which was a great, low-stress speaking engagement. Hopefully it will take place again in 2010, because I'd love to participate again!

It's been a busy but productive year for work-related technical projects as I helped lead a team to re-launch a medium-scale B2B marketing site for a large cable television network. That went over with a great degree of success. In 2009, my project roles tended to lean more towards non-development leadership roles, such as Solutions Architect. Late in the year, I've been acting as the technical lead and a developer, which has been nice. It looks like I may get to do more architecture and development work in 2010, so that will be a nice shift in gears.

In June, our daughter, Madeline, was born, which was definitely the highlight of the year. Then in September, we were affected by the 2009 Georgia floods when our house in Austell, GA was flooded. Then came the reconstruction and all of the headaches that came with that. So, the last half of 2009 was a pun intended. :)

But, the horrible year of 2009 is now over! Looking forward to 2010, I've got a few things I want to tackle:

  • Get back on the conference circuit: I avoided travel in the first half of 2009 due to Madeline's arrival. I had planned to pick things back up in the last half of the year, but the flood kind of complicated those plans. Hence, I wasn't seen at ZendCon or php|works. I want to get back on the conference and speaking circuits in 2010 -- I need to write some new abstracts and manage to speak a few times. I'll be starting in May at Atlanta PHP, tentatively talking on profiling and optimizing PHP applications with JMeter and Xdebug.
  • Write another article: I'd like to maybe write another article, either for php|architect or some other development- or systems administration-centric magazine. Writing an article is relatively simple, and gratification comes much sooner than with, say, a large book. I enjoy using my learnings from the real world to help impart knowledge on the masses, even if it only helps a single person.
  • Branch out; learn a new language(s): I consider myself an advanced-to-expert PHP developer. I've focused on LAMP/OPAL development for eight years now. I'd love to dabble in other languages such as Java, Ruby, Python, and so on. I'm also very rusty with C and C++, and my Objective-C/Cocoa skills could use some more refinement. I need to set a goal to build a specific, simple application, and build it in as many languages as possible. The challenge with this is time -- I only have so much of it with work- and family-related commitments, but that's what late weekend nights are for, right? Right?
  • Release an iPhone app in the App Store: I've got at least a half a dozen iPhone apps at various stages of completion in my personal SVN repository. They're in need of more thorough ideas, or design, or a little bit of both. Once I hit a brickwall, I tend to lose momentum. This year, I need to barrel through those brickwalls and get something released to the public. I don't want to get rich; I just want to be able to take an app from start to finish. I dropped the ball on this in 2009, so it's time to commit to it and get serious. I may start off slow with a desktop app idea that needs to see the light of day.

So, here I am once again: starting a new year with a new set of resolutions. I can safely say that 2009 has been the most difficult year of my life, but I'm glad to see that it's over, even though it's been bittersweet.

With all of this behind me, I'm re-energized and looking forward to the new challenges that 2010 has in store. As long as they don't involve any natural disasters, I think I can get through this year.

Happy New Year to everyone! Thank you again for the support you have shown during the ups and downs of 2009, too. See you all in 2010.

“Publish or perish”

"'Publish or perish' refers to the pressure to publish work constantly to further or sustain a career in academia." Many years ago, my old boss at Community Connect Inc. (now Interactive One), Michael Montero, was having an article published in the September 2002 issue of Sysadmin Magazine. Around that time before the article was published, Mike enlightened all of us software developers on the "publish or perish" idea -- write articles, speak at conferences, etc. in order to enhance your development career.

I always took that advice to heart. It made sense to me. If you're good at something, you use your communication skills to better yourself and make yourself known. Whether it's writing an article, writing a book, or speaking at a conference, it's important to share your experiences and impart your knowledge to others.

So, that was one of my big goals for the year. I've done the conference thing for a while now, so I wanted to make 2009 the year of writing. By writing, I mean writing code, and writing an article. So, by the time this is posted, my php|architect article, "Make It Mobile with PHP and Open Source Tools" will have been published.

I started it early in the year and finished it in mid-April, many months ahead of the deadline. It's basically my "Rickroll To Go..." conference talk, but in a written form.

It's not some huge triumph of an's not going to win any awards...but it's representative of a goal I set out to accomplish and succeeded at.

So, if you're reading the issue, enjoy! If you're not, go subscribe to php|architect!

Also, special thanks to my php|architect crew for giving me this great opportunity.

I'd like to do some more writing in 2010 (maybe some non-PHP writing, too?), so maybe you'll see me in print again next year. Thanks for reading! Please send along any comments, questions or feedback via email or Twitter.

iPhone/Mobile Camp Atlanta 2009

This weekend, I attended iPhone/Mobile Camp Atlanta at the King Plow Arts Center. It was great to meet some new, non-PHP-specific faces in the southern iPhone and mobile communities. The crowd seemed to be quite tech-heavy, rather than business-heavy. As such, I learned some new things such as how to handle analytics on the iPhone (use Flurry), how to reduce latency when using Core Audio, and some new-to-me information on parsing XML on the iPhone.

I also dusted off my talk, “Rickroll To Go With WURFL, PHP, and Other Open Source Tools”, trimmed it down for a 30-minute timeslot, and presented it as "WURFL, Device Identification, and Mobile Media".

My talk seemed to go great because, hey, what talk with a little Rickrolling and Ice Ice Baby isn't going to be a hit, right? It was tough to keep it to that smaller timeslot, but it seemed to work well. I was followed by everyone's favorite Microsoft evangelist, Glen Gordon, who was speaking on all things Microsoft.

I definitely walked away with a continued motivation to actually produce a useful Cocoa and/or iPhone app sometime this year, so I'd better hop to it. It's the ideation part that's tough for me, though. And all of the graphic design can be a bit demotivating, too, but there are creative ways to handle that.

Anyways, it was a great event! Hopefully they'll conduct one again next year! Special thanks to Jonathan Freeman of Widgetpress (and all involved) for organizing the event!