Midwest PHP 2014

MidwestPHP - Day 1

I recently attended the Midwest PHP conference and it was a truly great experience. I went last year and while the location changed this year the quality of the conference was right on par. This year it took place at the University of St. Thomas (Minneapolis Campus) which proved to be a perfect venue for the event. All of the sessions had plenty seating and with only three active rooms it was easy to navigate between sessions.

Day 1 kicked off with a keynote titled "Sending a billion text messages" by Even Coury. It was a very enjoyable talk and was very inspiring. The big takeaway was to always have a side project that you are working on because you just never know where it might take you and who might become interested in it.

The next session I went to was "How I learned to Stop Caring and Made Better Software" by Eli White. I am a big fan of Eli and his talk was very interesting. He has a fascinating background and has worked on a ton of really cool projects. Definitely a cool guy.

Next up was one that I was very excited about, "DOs and DON'Ts of MongoDB" which was put on by the one and only Jeremy Mikola. I was particularly excited about this because I recently implemented MongoDB for a huge data collection project and I had several questions about the approach I took. Fortunately I was able to speak one-on-one with Jeremy after the talk and he answered all of my questions and gave me some good takeaways.

After that I went on to a talk titled "Code Reviews: The 'Secret' to Building Quality Software" by Patrick Schwisow. Unfortunately this talk was very basic and didn't really give us anything to take back to our environment because we already have a very well defined way that we do code reviews. Perhaps I will use that as a topic for a future blog post.

The last session I attended on day 1 was called "Building Rock Solid Software in the Real World" by Omni Adams. This was one of my favorite talks of the day because it had great content and also a lot of humor, Omni is a really funny guy. We discussed a wide variety of tools to help ensure that code stays solid (PHPLint, PHPUnit, PHPCode_Sniffer, PHPMD, PHPCPD, PHPDCD, etc) along with a number of code review tools, topics and style guides. Definitely an awesome session.

MidwestPHP - Day 2

The Day 2 keynote was titled "7 Things I Wish Somebody Told Me" and Aaron Saray killed it. He was funny, well spoken and had a some great points. Here are the seven things he wished somebody had told him:

  • Learn from EVERYTHING.
  • Find somebody smarter than you and use them as a mentor.
  • Log EVERYTHING.
  • Test EVERYTHING.
  • We (as developers) are customer service.
  • There are two development paths: 1) Innovation, 2) Stabilization.
  • Do something different. If you are stuck on something in code, get outside and clear your head.

The next session was probably my favorite of the entire conference. Paul Jones is not only an amazing speaker but wow is brilliant. The talk was called "It Was Like That When I Got Here: Steps Toward Modernizing a Legacy Codebase" and it was filled with great information. The gist of it was to refactor incrementally by consolidating classes, converting globals to injected dependencies and converting functions to classes / class methods. He encouraged all of us to check out the following reading material:

Next up was "From SQL to noSQL" by Derick Rethans from the MongoDB team. We learned quite a bit about the various types of noSQL implementations, CAP theory and some Mongo-specific approaches. All-in-all, a good talk abut I would have liked to dig a bit deeper.

"Professional-grade Software Design" by Brian Fenton was an excellent talk. He talked a lot about the concepts of SOLID design, naming conventions, comments, source order, dependency injection and object calisthenics. I have a ton of notes on this talk so check out the link to the "raw notes" below.

The last session I attended was by one of my favorite speakers, Josh Broton. Josh is hilarious, smart, witty and a real joy to listen to. This session was called "Sticks, Spit, and Duct Tape: Advanced Responsive Techniques", I know what you are thinking, what is a back-end developer doing at a responsive talk!? The honest answer to that is simply that I wanted to hear Josh speak but it was a really good talk that opened my eyes to a lot of things that we have to look forward to with new CSS3 features that will be rolled out soon. The 'flexbox' model is incredibly cool and could actually allow back-end developers like me to lay out content without pulling my hair out. Again, more information in the "raw notes" below.

In summation, this was a great conference and I really have to hand it to the organizers, sponsors and speakers. I can't wait to attend again next year.

Here are a few additional links on this topic that you might find interesting: - My reviews of all of the talks from MidwestPHP 2013 and MidwestPHP 2014 - My blog post from last year's MidwestPHP - My raw notes

Lollapalooza 2013

Lollapalooza - Tickets This was our first year attending Lollapalooza so we really didn't know what to expect other than a lot of people and a lot of really great music. For those who aren't familiar with the event it was conceived in 1991 by Perry Farrell (lead singer of Janes Addiction) as a farewell tour for his band. In 2005 the festival platform was re-worked a bit and since then it has happened annually in Grant Park, Chicago. This year there were roughly 100 acts over the course of 3 days and 100,000 attendees each day. Considering the number of people attending and the general nature of festivals I was expecting complete chaos but fortunately it was organized chaos and somehow things worked very well.

The food this year was surprisingly good thanks to Chef Graham Elliot who had a part in selecting all of the vendors and menus. We were quite surprised that the best food we ate while in Chicago was in the park and not at nearby restaurants. The drink selection was fairly limited and only featured Bud Light products, Thorny Rose wines and a variety of juices / teas. People were encouraged to bring Camelbak's to the park which had a number of free refill stations that offered very good filtered water. We were very glad to have had one with us because we stayed well hydrated and didn't have to carry water bottles around with us. Another cool benefit to the Camelbak refill stations is the fact that just this year alone enough water was dispensed to save almost 320,000 water bottles. Since 2010 (when they added the refill stations) over 1,000,000 water bottles have been saved which in and of itself is pretty amazing.

Lollapalooza - Crystal Castles      Lollapalooza - Nine Inch Nails

We managed to see 15 bands in 3 days which for us was perfect. Certainly enough to justify the time/money spent but not so many that we were completely burnt out and miserable by day three. I am going to do a quick run down of the bands that we saw along with some brief thoughts about each one.

Day One (Friday): Emeli Sande: Solid vocals and good crowd interaction. Icona Pop: Fun and upbeat but the music/vocals were a little disjointed at times and I couldn't tell if they were having technical difficulties or not. Crystal Castles: Incredibly intense performance both in terms of the music and the on-stage antics, hugely entertaining. Imagine Dragons: A little too low-key and slightly difficult to hear. Modestep: Very high energy, huge bass and a lot of fun. Nine Inch Nails: As always a spectacular show, both from a visual and auditory standpoint. Trent Reznor never disappoints.

Day Two (Saturday): 360: Honestly this was one of the big surprise hits of the show. He was a lot of fun to watch and the music was great. Ellie Goulding: As expected she put on a great performance and sounded amazing. The Lumineers: They put on a solid show but I wasn't blown away. Mumford & Sons: They were definitely headline worthy and really sounded spectacular. Kendrick Lamar (After party): This was supposed to start at 10PM but Kendrick didn't get on stage until 1AM. The majority of the performance involved him holding the mic out in front of him and having the crowd sing most of the songs, I was less than impressed.

Day Three (Sunday): Tegan and Sara: We didn't catch all of their performance but what we did see was very good and a lot of fun. Alt-J: I didn't really know what to expect but Alt-J was decent. Not a band I would have seen outside of the festival but they were still entertaining. Vampire Weekend: I really enjoyed this show, they were excellent live and definitely a band I would like to see again. The Cure: This was by far the best show of the weekend. They put on an amazing show and the crowd was so engaged that it was nothing short of magical.

Lollapalooza - Katie & I

Since this was our first year at Lolla and our first big festival we learned a lot about how to best take advantage of the experience. Here are a few tips on how to make the most out of your time at Lollapalooza:

  • Bring a backpack. Keep it small but make sure it has enough room to hold any swag that you might pick up and/or a blanket / sweater.
  • Don't over do it. Prioritize which bands you want to see and don't try to see everything. You will get burnt out and by the time the headliner rolls around it will be hard to enjoy it.
  • Get to headliners early. If there is a particular headliner you really want to see get to the stage at least 1 hour before their performance. We did this for The Cure on the last night and ended up getting very close and by the time the show started there were so many people behind us we couldn't even see where the sea of people ended.
  • Hydrate. I can't stress this one enough, keeping the fluids going (sorry but beer doesn't count) is absolutely essential to being able to stay for long periods and enjoy yourself. We averaged about 150-200 ounces of water between the two of us each day and it proved to be invaluable. There is nothing worse than being at the festival with 100,000 other people and having a headache or feeling like crap because you haven't had enough water.
  • Sit. For bands that you are okay with seeing from a distance, consider sitting down. The hardest thing on my body was standing in one place for long periods so being able to break things up by sitting for an hour here or there was huge for me.

I hope this info comes in handy for any future first timers at Lollapalooza, it is an amazing festival and we are definitely planning to go again. I'd love to hear about others experiences at the festival and any tips/tricks you may have so please don't hesitate to leave comments!

Developer Portability

Be Portable As you may or may not know (see: here ) I recently switched jobs. I went from a cutting edge marketing firm to the world leader in automotive/aerospace/structural testing systems. Both places are top notch in their respective areas but as you can probably imagine they both operate very differently and utilize very different technologies. At my previous job we used nothing but Macs and other Apple products. At the new place we are strictly a Windows shop (except for our servers which run a LAMP stack) and as a result I have had to be quite agile and adapt to a using new tools, technologies and of course Windows.

I was a huge fan of Windows 95 since it was in early beta back in 1993-94. I had a friend who worked w/ Microsoft so I had a legit beta copy from Day 1. It was the first time I had used Windows because in the Windows 3.1 days I refused to use it and instead used a combination of DOS and Slackware. Even at the age of 13 I was incredibly stubborn about which operating system I used. In 2005 I switched completely to Apple-based solutions and fell completely in love with OSX. Since 2005 up until a couple of weeks ago the only time I used Windows was through a VM (to access Windows test/dev servers or do cross-browser testing) so it has definitely been a big change. Much to my surprise I am not minding it _too_ much and figured it might be worthwhile to document some of biggest differences between the two platforms and why they matter to me.

The number one thing that feels like it is 'missing' from Windows is a linux terminal. I know that sounds stupid because Windows != Linux but it's easy to forget sometimes that OSX is built on top of that and having access to that bash shell is truly something magical. It will be interesting to see how long it takes me to stop typing 'ls' when I am in a Windows command prompt. Having things like 'ssh', 'top', 'curl', etc readily available is extremely nice and while I know it is possible to install Windows-equivalents it just isn't the same.

As a developer who works primarily with PHP one of the biggest things I miss in a Windows environment is readline support. Readline support is required for the interactive PHP terminal ('php -a') and without it the interactive terminal becomes essentially worthless. Yes there is a way to get it to function but it's hardly interactive and honestly more trouble than it is worth.

Before I even say this, I am aware that Windows 7 includes the "Snipping Tool" but I hate it! Being able to hold CMD+Shift+4 and selecting what I want for a screen grab is just something I have become accustomed to and opening up an application to do it just seems inefficient. It sounds like a small thing but as a developer I do take a lot of screen grabs for demos, tickets, etc so being able to do this with a hot key is kind of a big deal.

This isn't as big of a point but something I love about OSX is that I can drop my cursor over a window, use the mouse wheel and it scrolls the window without me having to click on it. This sounds like a small thing but over the course of the day it happens to me quite a few times.

On the plus side I do have to say that Windows 7 is a solid operating system, definitely Microsoft's best since XP and I think it fits the corporate world quite well. I now only have one computer at home which is my 27" iMac and I still enjoying coming home to it at the end of the day. Perhaps someday I will completely switch over to Windows for both work and home but that time certainly isn't now.

Back to the point of this post, being agile & portable. I think good developers are ones who aren't married to their tools/platforms but rather ones who enjoy and excel at the actual work. At the end of the day writing code is writing code and whether I am in a Vim session on a Unix machine, working in Coda on a Mac or using NetBeans in Windows I am ultimately trying to accomplish the same thing, write the best code possible in the most efficient manner.

Thoughts? Arguments? Words of Wisdom? Leave them in the comments!