- Building an MCP Server for My Lab
- Just You Wait
- Good products begin with good decisions
- 2025 Recap
- Studioworks
- 2024 Recap
- Email Authentication
- 2023 Recap
- Introducing Matter
- Pelé’s Soccer
- Two Years
- Monday in Boulder
- 2019 Highlights
- Black Lives Matter
- Leaders Wanted
- Domain Registrars
- 2018 Highlights
- Sponsoring New Adventures
- Tweet Only Links
- 2017 Highlights
- Faculty
- 2016 Highlights
- 2015 Highlights
- PHP Community
- Indie Web Movement and IndieAuth
- Social Sharing Links
- 2014 Highlights
- Brooklyn Beta Opening Remarks
- The Motherfuton News
- Breakfast in the Sunshine
- 2013 Highlights
- What Does Block Mean?
- Web Advent 2013
- Dark Patterns
- Ideas of March
- XSS Is Still Tricky
- 2012 Highlights
- PHP Advent Renamed to Web Advent
- Election Coverage
- Goodbye, Sandy
- Lessons from Brooklyn Beta
- Sync No More
- Apple Botches "Save As…"
- Discovering Favicons
- Good People Good Work
- LeakedIn
- Link Blog and Planet Chris
- JavaScript Study Guide
- Brooklyn Beta 2012
- Svbtle Versus Obtvse
- Ideas of March
- Hacking Rails (and GitHub)
- URL Encoding and Hashbang Hell
- Speaking at Boston PHP
- Learning JavaScript
- 2011 Highlights
- PHP Advent 2011
- Stop SOPA and Save the Internet
- Brooklyn Beta Opening
- Steve
- Renewing My Commitment
- Fake Google SSL Certificate
- Domain Registrars
- Sorting Multi-Dimensional Arrays in PHP
- The Accept Header
- Brooklyn Beta
- April What?
- PHP Session Debugging
- Ideas of March
- Our First PHPCon
- Using Twitter for Comments
- JavaScript and URLs
- 2010 Highlights
- Merry Xmas!
- Christmas Lights
- Christmas Conundrum
- PHP Advent
- Brooklyn Beta
- Twitter OAuth
- Mozilla Account Manager
- PHP Anthem
- Auto Increment with MongoDB
- Change Blindness and Zooming Out
- URL Sentences
- CSS Naked Day
- Conferences Galore
- Webstock
- 2009 Highlights
- Hello, Analog
- PHP Advent 2009
- Facebook, MySpace, and crossdomain.xml
- Git on Snow Leopard
- Learning HTML and CSS
- CodeWorks and Beer (Table)
- CodeWorks Tour
- South by Southwest
- PHP Quick Reference
- Goodbye, OmniTI
- A rev="canonical" HTTP Header
- Save the Internet with rev="canonical"
- CSS Naked Day
- Smashing PHP
- Migrating from FeedBurner to Google
- Twitter Don't Click Exploit
- Putting the Bow on OmniTI
- Seven Things
- 2008 Highlights
- PHP Advent 2008
- Facebook Worm
- Web Fonts
- ZendCon
- Inspecting and Hacking HTTP
- Security 2.0 in Cincinnati
- End of Life for PHP 4
- OSCON Wrapup
- Miscellaneous
- Who Created PHP?
- OpenID with myVidoop
- CSS Naked Day
- URLs Can Be Beautiful
- Kiwi Foo Camp
- CIO Magazine Trolls for Publicity
- Security and User Experience
- 2007 Highlights
- PHP Advent Calendar 2007
- PHP Advent Calendar Day 24
- PHP Advent Calendar Day 23
- PHP Advent Calendar Day 22
- PHP Advent Calendar Day 21
- PHP Advent Calendar Day 20
- PHP Advent Calendar Day 19
- PHP Advent Calendar Day 18
- PHP Advent Calendar Day 17
- PHP Advent Calendar Day 16
- PHP Advent Calendar Day 15
- PHP Advent Calendar Day 14
- PHP Advent Calendar Day 13
- PHP Advent Calendar Day 12
- PHP Advent Calendar Day 11
- PHP Advent Calendar Day 10
- PHP Advent Calendar Day 9
- PHP Advent Calendar Day 8
- PHP Advent Calendar Day 7
- PHP Advent Calendar Day 6
- PHP Advent Calendar Day 5
- PHP Advent Calendar Day 4
- PHP Advent Calendar Day 3
- PHP Advent Calendar Day 2
- PHP Advent Calendar Day 1
- PayPal Groks Security?
- Remember, Remember
- PHP Comes to DC
- The Internet is the New Unix
- Delicious PHP
- I Almost Get Twitter
- The Unexpected SQL Injection
- Paul Jones Joins OmniTI
- OmniTI Turns 10
- Logic
- php|works Recap
- Catching Up and Keeping Up
- Women in Technology
- Upcoming Conferences
- CSRF Redirector
- iPhone Security Concern
- Planet Web Security
- HTML Purifier
- Character Encoding and XSS
- Terry Chay on Rails
- Back from php|tek
- In Chicago for php|tek
- Learning from Digg (DeCSS 2.0)
- Ajax Is Not an Acronym
- Luke Welling Joins OmniTI
- Anurag Agarwal's Reflections
- Upcoming PHP and Open Source Conferences
- JavaScript Hijacking
- My First CSS Naked Day
- Digg's Eli White Speaks at PHP Meetup
- My Amazon Anniversary
- Allowing HTML and Preventing XSS
- A New Beginning
- Paying for Answers
- OWASP Spring of Code 2007
- Columbia PHP Meetup
- Ambient Signifiers
- Consulting Rates
- URL Vanity
- Adobe PDF XSS Vulnerability
- 2006 Highlights
- JavaScript Login Check
- YouTube Fixes Security Vulnerability
- Google Web Accelerator Debate
- Ajax Security
- Web Builder 2.0 Recap
- Security 2.0 at Web Builder 2.0
- Stealing Saved Passwords
- ZendCon Wrapup
- Mashery API Management Service
- Installing LWP on a Mac
- Damien Seguy Catalogues phpinfo() Statistics
- Formatting and Highlighting PHP Code Listings
- PHP Tidbits
- Firefox 2.0 First Impressions
- DC PHP Conference Recap
- Using CSRF for Browser Hijacking
- DC PHP Conference Is Next Week
- Google Code Search for Security Vulnerabilities
- The Best City in America for PHP Developers
- The crossdomain.xml Witch Hunt
- CakePHP Visits New York
- Breach Security Acquires Thinking Stone
- Cal Evans Interviews Theo Schlossnagle
- The Dangers of Cross-Domain Ajax with Flash
- EuroOSCON Recap
- Belated php|works Recap
- A Day of Remembering
- OWASP Autumn of Code
- Zend Gets Another $20 Million
- Web APIs with PHP
- Social Design Patterns
- Interesting Security Blogs
- Blood, Sweat, and Swear: Terry Chay on Pro-PHP Podcast
- PHP Gets HttpOnly Cookies
- Cal Evans Interviews George Schlossnagle
- Rails Security and Nondisclosure
- Cross-Domain Ajax Insecurity
- Kevin Yank Discusses CSRF
- Six Reasons PHP Sucks
- OSCON People and Random Tidbits
- Cal Evans Interviews Laura Thomson
- OSCON 2006 Redux
- OmniTI Seeks Junior Security Analyst
- PHP Security Hoedown at OSCON
- The OWASP PHP Top 5
- PHP Security by Example
- Are Happy People Smarter?
- PHP 5 Statistics
- Mob Mentality and Web 2.0
- ApacheCon Early Bird Ends Soon
- Reporting Vulnerabilities
- OmniTI Acquires Brain Bulb
- PHP Lightning Talks
- PHP 5.1.4 Fixes Critical Bug
- Renkoo Launches Beeta
- php|tek Recap
- Boston PHP and the Zend Framework
- LinuxWorld Recap
- Storing Sessions in a Database
- Zend Framework License
- PHP News Catchup
- PHP Blogs Not on Planet PHP
- PHP and Scalability (Again)
- Looking for a Job?
- PHP Quebec Recap
- Windows on Mac
- Zend_Filter Reviewed on SitePoint
- OSCON 2006
- Who Practices Test-Driven Development (TDD)?
- Easy Cookie Hacking
- del.icio.us RSS Feeds
- Agile PHP Testing at PHP Quebec
- php|architect: March 2006 Edition
- Scalable Internet Architectures
- IBM's PHP Reading List
- SERVER_NAME Versus HTTP_HOST
- ZF Tutorial Update
- Gosling Didn't Get the Memo
- Zend Framework Tutorial
- Zend Framework Preview
- Another Google XSS Vulnerability
- Brain Bulb Webcasts
- php|architect Magazine
- Ask Chris Is Back
- PHP News Roundup
- Mac OS X Annoyances and Resolutions
- Spammer Wins Gold
- Security: Digg Versus Furl
- RSS Feed Enhancements
- Essential PHP Security Slashdotted
- Top X List of Mac OS X Annoyances
- OSCON and NYPHPCon Call for Papers
- Luke Welling to Speak at Waterfall 2006
- Tragedy Strikes One of PHP's Own
- Test::Harness for PHP
- PHP Easter Eggs
- Ruby on Rails Fans
- PHP Security and SABSA
- PHP Security Architecture
- Test::Simple for PHP
- Secure Logins
- PHP Insecurity
- addslashes() Versus mysql_real_escape_string()
- Technical Vocabulary and Grammar
- Pro PHP Podcast
- 2005 Highlights
- Happy Holidays
- Essential PHP Security: Forms and URLs
- Google XSS Example
- Google's XSS Vulnerability
- Power PHP Testing
- JApacheCon Wrapup
- CodeSnipers.com Interview
- JApacheCon
- PHPSecurity.org Launches
- Zend Framework Webcast
- PHP Magazine December Issue
- PHP Testing Tutorial at ApacheCon
- Zend Framework Update
- Computer Associates Steps Up
- Richard Davey Has a Blog
- Convert Smart Quotes with PHP
- Zend Framework Wishlist
- ZendCon Day Four
- ZendCon Day Three
- ZendCon Day Two
- ZendCon Day One
- Essential PHP Security Lives!
- Myspace CSRF and XSS Worm (Samy)
- PHP Quebec Call for Speakers
- Linux IM Clients
- Pro-PHP on iTunes Top 100
- Teach a Man to Fish
- More Free Articles
- Ning Launches
- PHP Stripping Newlines
- PHP 5's Adoption
- eDonkey's Retirement
- Terry Chay on Remote Scripting (Ajax)
- User Group Tour
- My Google?
- Chris Cornutt Has a Blog
- New Design
- PHP Security by Example
- Essential PHP Security Is Finished!
- Zend PHP Conference and Expo
- Quoting PHP Strings
- Google Talk
- PHP Job Market Webcast
- smugMaps
- Ammar Ibrahim in Linux Journal
- PHP 6.0 Excitement
- Terry Chay on PHP Security
- Episode One
- OSCON 2005 Recap
- Ask Chris
- ApacheCon EU 2005
- php|works Schedule Posted
- Stefan Esser Discusses Security Guide
- Ethics and Security
- PHP Security Forum
- PHP Security Makes OSCON Top Ten
- Laura Thomson Has a Blog
- PHP Security Audit HOWTO
- PHP Security in Vancouver
- Happy Birthday, PHP!
- PHP Podcast: Hot or Not?
- Google Web Accelerator and PHP
- PHP at OSCON 2005
- PHP in Cancun
- PHP Security Briefing at NOAA
- Zend Certification Self Test
- PHP Quebec Recap
- PHP Quebec
- ApacheCon Europe, Here I Come
- Mastering PHP Security Reloaded
- Where Are Your PHP Includes?
- The [phpsec-news] Mailing List Launches
- Magic Quotes are Worthless
- Community Support for Brain Bulb
- Apache-Test and SimpleTest
- Brain Bulb, The PHP Consultancy
- Writing a Technical Specification
- The Birth of a PHP Consultancy
- Sign Up for Mastering PHP Security
- Phishing
- SHA-1 Broken
- More on Filtering Input and Escaping Output
- Filter Input, Escape Output
- Referer Buys You Nothing
- PHP Security Consortium Redux
- PHP Security Consortium Official Launch
- Zend's Marketing Controversy
- Apache-Test for the PHP CLI
- XSS Cheatsheet
- Session Riding
- OSCON Call for Proposals
- 2004 Highlights
- PHP and Apache 2 Slashdotted
- PHP and Apache 2
- PHP Security Announcements
- Character Type Functions
- Holiday Greeting
- Free Security Corners and a Guru Speak
- PHP Security Consortium
- Testing PHP
- ApacheCon 2004
- Installing PHP and Apache
- Election Reflection
- PHP Security Experiments
- Handling 404 Errors with PHP
- Guru Speak
- Foxylicious - Firefox Finally Groks del.icio.us
- Preparing for the Zend Certification
- The Race Continues
- ApacheCon Early Bird
- Shared Hosting with PHP
- php|works
- PHP Session Security
- In Toronto for php|works
- Zach Braff has a Blog
- DataLibre
- Securing PHP Code with Zend
- Foo Camp and Electronic Voting
- HTTP Developer's Handbook Feedback
- Yahoogle and Flickr
- del.icio.us
- Steve Mallett on "Infoware"
- Fired for Blogging
- PHP at ApacheCon
- The Race Begins
- Security Corner
- Securing PHP Sessions
- OSCON Slides Available
- PHP Security Workbook
- OSCON Bound
- Zend PHP Certification
- Upcoming Conferences
- Planet PHP
- PHP Scales
- PHP Security Seminar
- A PHP Guy at YAPC: Part II
- A PHP Guy at YAPC: Part I
- Adam Trachtenberg's New Blog
- Gmail and Spam
- CD Baby and George
- Google Blog
- PHPCommunity.org Article
- Foiling Cross-Site Attacks
- FOSS Planet
- PHP Community Logo
- MySQL Speaker Guidelines
- PHP Security at OSCON
- PHPCommunity.org Logo Contest Ends
- Atlanta PHP
- Phundamentals
- Advanced PHP Programming
- PHP Blogs
- Microsoft Leak
- PHP Security Articles
- Redesign and Writing
- MySQL Licensing
- PHP Community Logo Contest
- 2003 Highlights
- PHP Magazine and Sessions
- Localfeeds
- PHP Community Site
- On Being Quoted
- ApacheCon Wrapup
- Tuesday at ApacheCon
- Monday at ApacheCon
- Sunday at ApacheCon
- PHP Security Handbook
- mod_perl Sucks
- Virtual Machine War
- What Is Scalability?
- Article Errata
- RAMP Training
- RSS Feed
- Slashdotted
- PHP Panel
- US Open
- ApacheCon
- HTTP Developer's Handbook
- A New Beginning
Blog
I’ve been blogging since 2003 about design, technology, and business. Subscribe to my blog or Find me on LinkedIn.