Sunday, December 30, 2012

2012 - What A Year

Well, 2012 is wrapping up. What a year it has been! Here's a partial recap of some of the things that happened to me and that I did this year:

Top 5 Blog Posts (By Page View):

  1. PHP Sucks, But I Like It
  2. The True Problem With PHP
  3. Anatomy Of An Attack: How I Hacked StackOverflow
  4. OOP vs Procedural Code
  5. The Secure Programmer's Pledge

Bottom 5 Blog Posts (By Page View):

  1. Upcoming Presentations - Fall 2012
  2. The True Power of Open Source
  3. The Grass Is Always Browner
  4. Programming With Anthony - Responsive Web Design
  5. Programming With Anthony - Boolean Logic

Top 5 Blog Post Referring Sites:

  1. Reddit
  2. Hacker News
  4. PHP Developer
  5. DZone

Presentations Given:

  2. Password Hashing in PHP - PHPNW
  3. Cryptography For The Average Developer - True North PHP
  4. Don't Be STUPID, GRASP SOLID - True North PHP
  5. Cryptography For The Average Developer - PHP Master Series vol 1

Conferences Attended:


New GitHub Repositories (notable):


  1. Implemented: Simplified Password Hashing
  2. Implemented: PBKDF2 Hash Function
  3. Draft: Scalar Type Hinting (with casts)
  4. Draft: Scalar Type Casting Magic Methods
  5. Withdrawn: Parameter Type Casting Hints

Some Interesting Numbers (Blog):

  • New Blog Posts: 70 (including this one)
  • Comments: 700
  • Subscribers: 695
  • Google Plus +1's: 582
  • Unique Visitors: 178,000
  • Unique Page Views of Blog Posts: 500,500
  • Estimated Total Time Writing: Over 300 Hours
  • Total Ad Revenue: $110

Some Interesting Numbers (YouTube):

  • New Videos: 8
  • Comments: 21
  • Likes: 186
  • Subscribers: 195
  • Unique Video Views on YouTube: 7,200
  • Estimated Total Time Producing: Over 30 Hours
  • Total Ad Revenue: $11

Some Interesting Numbers (Me):

  • New Twitter Followers: About 800
  • Mailing List Posts: About 400
  • Commits To Public Repositories: About 450
  • Age Change: + 1 Year
  • Miles Traveled: 22000 (12,000 by airplane)
  • Emails Received (personal): 15,000
  • Apocalypses Survived: 2
Thank you to everyone for making 2012 such a great year! Let's hope 2013 is at least as good as 2012 was...

Have a GREAT New Year, and I'll see you all again in 2013!

Wednesday, December 26, 2012

Programming With Anthony - Responsive Web Design

This week we are joined by Responsive Design thought leader Sam Richard. He introduces us to the concept of responsive web design, tells us a little bit about its history and talks about best-practice and the future of the web! Check out the video:

Monday, December 24, 2012

The Brain Is A Muscle

The brain is a muscle, and as all muscles, it needs regular exercise to keep sharp. Or at least that's what the old adage says. This is a post that I've been meaning to write for a long time now, but never got around to (until now that is). Sparked by a twitter conversation with Mr Grumpy himself (Chris Hartjes), I decided that the time was right for it. So, here's my method for staying sharp and exercising my brain...

Wednesday, December 19, 2012

Programming With Anthony - Logic

This week's Programming With Anthony video is up! In it, we discuss the foundations of Boolean Logic and introduce some very interesting tools for analyzing logical constructs (including Truth Tables and De Morgan's Laws). So without any further ado:



Monday, December 17, 2012

Seven Ways To Screw Up BCrypt

There are numerous articles on the web about how to properly use bcrypt in PHP. So this time, rather than write yet-another-how-to-use-bcrypt article, I'm going to focus on the mistakes that are commonly made when implementing bcrypt. So, let's dive right in:

Friday, December 14, 2012

Contribute to Contributors

The holidays can be a trying time of year for everyone, with all the gift buying and stress and all. I wanted to take this time to make a plea. The open source software that all of us use is powered by volunteers! Show them your support by donating! I'm compiling a list here of prominent contributors to donate to, and I strongly urge you to consider saying "thank you" to people who work hard to give you the tools and knowledge that you use every day! So, without anything further:

Thursday, December 13, 2012

Upcoming Appearances - Winter 2012/2013

I've got a few talks coming up in the near future, so if you can make one of these events, be sure to come say hi to me!

Wednesday, December 12, 2012

Programming With Anthony - Prepared Statements

The fourth video in the Programming With Anthony series is live! In this video, we'll explore the basic principles of prepared statements, and why you should use them instead of using escaped input directly in queries.

I'm still playing around with the approach and style of these videos (as well as content structure), so your feedback is extremely valuable! Please let me know what you think!



And as always, thanks for watching!

Tuesday, December 11, 2012

Response: Private Methods Considered Harmful

Brandon Savage has recently posted two blog posts portraying his opinion that using private visibility on class methods can be considered harmful in a lot of situations. While I understand the point he is trying to make, I can't say that I agree with it. I do like private visibility and think that it's actually under-used in a lot of software. But it's not because I think Brandon is wrong...

Monday, December 10, 2012

On Templating

I've been playing around with tempting engines a lot lately. For a recent project, I needed the ability to re-use the same template set in both JS and PHP (coupled with the History API, providing seamless dynamic behavior, yet still having raw content pages). Realistically today, there's only one choice for that sort of requirement: Mustache. I've learned a lot while playing with Mustache, and it's really changed my entire viewpoint on presentation layer construction.

Wednesday, December 5, 2012

Programming With Anthony - References

The third video to my Programming With Anthony series is up! In this video, I talk about variables in PHP and how they work under the hood. I explain the difference between variable references and object references, along with the semantics of each. Give it a watch!

This is the culmination of my trial at these YouTube videos. I have done a high-level one (focusing on abstract concepts), a mid-level one (focusing on the theory behind a concept) and a low-level one (focusing on implementation details). So my question to you all, is where would you like to see this go? Would you like more high-level concept videos? Or would you like more hands-on theory? Or would you like deeper dives into more technical areas?

Of course the series will continue with a mixture of the three, but I'd like your feedback on the direction of the series, so that you can get the most out of it! Leave a note in the comments with your thoughts!



And as always, thanks for watching!