John Kary


I sometimes speak at conferences and user groups about software development topics. Below are presentation slides and video recordings from most talks, in reverse chronological order.

Last Month in PHP

Recurring talk at most Kansas City PHP User Group meetings. I summarize important news stories and happenings in the PHP community from the previous month before the presentation was delivered. Gives special attention to issues relevant to most of our regular attendees.

July 2018
June 2018
November 2017
June 2017
February 2017
April 2014
September 2013
August 2013
March 2013
February 2013
December 2012
November 2012
September 2012
July 2012
June 2012

Rethinking Loops

You likely learned about loop constructs very early in your programming career and use them every day--so often you don't think twice! The problem is for() and foreach() are so fundamental developers use them for everything! Even worse almost every developer will use them differently to accomplish the same goal. So what would intention-revealing, expressive PHP code look like without using for() and foreach()? Let's explore some functional programming concepts and find out.

Knowing basic functional programming concepts will improve your PHP code. Your new mindset will favor writing code with better separation of concerns and decreased complexity: clean code. We will explore some poor examples of using loops to process data, then ease into learning functional concepts like map, reduce, filter and collection pipelining. We'll even use our newfound knowledge to refactor a few loops. Lastly we'll explore some existing libraries and even experimental PHP RFC features to make our code even more concise. Beware: after this talk you'll never look at for() and foreach() loops the same again!

Time Travel is Here!

June 2015, Lawrence Free State Festival

This talk (not about software development) discusses how time travel is possible today. Science fiction didn't lie to us, it simply set our expectations too high. We explore how modern technology has reached this point, and how time travel will change in the future (pun maybe intended) as fields like Artificial Intelligence, Augmented Reality and Virtual Reality inevitably become mainstream.

Functions in PHP: Writing Your Own Functions

February 2015, Kansas City PHP User Group

Attendee Feedback

This talk is geared towards developers comfortable using PHP's native functions and are curious how to write better custom functions. John presents 4 guidelines that if followed will result in clear, focused functions that are easy to read, reason about and reuse.

Working with dates and times in PHP

January 2015, Kansas City PHP User Group

No slides or video. Most of presentation was done in a REPL and editor.
Attendee Feedback

Modeling dates and times in programs is tricky. After this presentation you'll learn how PHP's built-in DateTime library helps you avoid the most common pitfalls. You'll also find recommendations on open-source libraries to work with things like date recurrence and calendar logic.

Keeping Software Soft

January 2015, Lawrence Coders


Software provides continual value when it can evolve with the business. But without proper care it's easy for software to become rigid and difficult to change--it stops being soft. In this talk John introduces ways to think of software and systems we build as independent, replaceable components.

Scratch: An On-Ramp to Programming

August 2014, Lawrence Coders


Learning to program computers in the traditional sense has many pitfalls that are barriers for newcomers. The future job market for programmers is bright and kids should be taught to control technology rather than only consuming it.

John talks about Scratch, the visual programming language from MIT, and how he thinks it's the best "first" programming language for the next generation of developers. Scratch hits the sweet spot to overcoming introductory pitfalls and provides a safe environment for kids to learn, explore and share their digital creations.

Refactoring: Less Code, Less Problems (Part 1)

April 2014, Kansas City PHP User Group


John talks about guidelines and code smells for improving object API design. He takes an existing class and demonstrates refactoring it to a leaner more focused version of its previous self. Most importantly, what questions to ask yourself as you're writing new classes.

Pass 1 (and a future Part 2) will approach refactoring a class from the outside as opposed to the inside. We discuss topics like breaking apart bigger classes to make smaller classes that do one thing, programming without getters and setters, consistent entry and return points, and guidelines for object instantiation. This talk focuses less on in-function refactoring and more on API-level refactoring.

Writing Extensible Code Using Event Dispatcher

October 2012, Kansas City PHP User Group

Demonstrate refactoring a typical Controller to using Symfony2 EventDispatcher component to make writing decoupled code easier.

Attendee Feedback

Git In It: Beginning to Use Git

June 2012, Kansas City Drupal User Group

Covers common misconceptions about version control, how to setup your environment to work with git, how to get up and going with git in your daily development workflow, and where to go to learn more.


Vagrant + Drupal + Drush: Automating setup of a Drupal development environment

May 2012, Lawrence Coders

Repeatable development environment for teams looking to do collaborative Drupal development. Major props to Chris Escalante for his role in technically implementing this solution for our team.


Everyday Effectiveness With git

April 2012, Lawrence Coders
April 2012, Kansas City PHP User Group

Working effectively with git on a daily basis is a lot easier with a few tips on setting up your environment and making common commands faster to type. I also cover different code-sharing models and common workflows for working in a collaborative environment.


Scared Straight: Mitigating OWASP Top 10 with PHP

January 2011, University of Kansas Web Developers monthly meeting

Overview of the most common security threats facing modern web applications and how to mitigate them when using PHP.


YUI Graded Browser Support

November 2010, University of Kansas Web Developers monthly meeting

Current state of YUI Graded Browser Support. Please note, much of the information in this talk is outdated as of September 2011. Yahoo Graded Browser Support no longer grades browsers, and instead advocates for supporting a list of certain browsers, but ultimately pushes developers to do their own analytic testing and support browsers most-used by their user base.

Yahoo Graded Browser Support

Beyond Arial: Using @font-face to unleash web typography

September 2010, University of Kansas Web Developers monthly meeting

Current best practices advice on using @font-face, history of fonts on the web, browser support and font format support and challenges of @font-face.


Using Virtual Machines in Web Development

January 2010, University of Kansas Web Developers monthly meeting


Intro to Debugging PHP with Xdebug

January 2010, Lawrence Programmers Hack Day