Tom H Anderson
Intellectual Architect Software Engineer

Tom has worked in PHP for 25 years. Tom has worked in PHP and GraphQL for the past 6 years. His application template, ldog.apiskeletons.dev is a vehicle for his open source library, GraphQL Type Driver for Doctrine ORM

Tom is an open source contributor and a member of the Doctrine Core team for the Doctrine Project. Tom's responsibility is to the Zend and Laminas supporting repositories.

Tom has contributed to the Laravel and Laminas frameworks.

Tom is a leading expert with Skipper and has a specialty creating Entity Relationship Diagrams with this tool. Tom keeps a close relationship with the lead developer of this fantastic tool.

GraphQL
Tom created API-Skeletons/doctrine-orm-graphql . This is a type driver for Doctrine ORM for GraphQL in PHP. This library is extensively documented and in use on several production websites.

Example GraphQL applications:

Altruism

Tom's first PHP application is still running at etreedb.org. This project is his altruistic magnum opus. Through this site, and constant work on this site, Tom is able to practice his trade and try new ideas in a live environment. Tom is proud to have a way to give back to the world in a way that doesn't benefit him directly. Expressing altruism in his life is important and this flows nicely to his open source work.

The continuation of this site is being built at lcdb.org. The Live Concert Database will continue the database created at etreedb.org but with all the niceties of modern development tools. This site is built in Next.js and uses a GraphQL schema written in PHP.

Upwork

Since 2017 Tom has taken all his projects through Upwork. His profile there has a many items of note:

A 100% success rate. This is a calculated field based on many factors including the feedback he receives from clients.

Expert-vetted. In order to achieve this certification Tom had to pass tests through Upwork. This puts him in the top 1% of upwork contractors.

Feedback received: All of these quotes are listed on Tom's profile at Upwork but here are a few highlights:

Tom brought professionalism and competency beyond what I expected. Often pointing out issues we didn't not even know existed in our legacy ZF2/Doctrine/MySQL systems. We will most definitely be moving on to future projects with Tom, to modernize our legacy solutions, as his insights and knowledge in our stack are formidable.
stockinstore
WOW! All I can say is wow. Tom is a professional's professional. He is on his game and knows his game inside and out. I tried desperately with two other developers to solve an issue. After two months and much $$$ with no results I found Tom. He solved the problem in less than 3 hours. WOW! Tom is now my goto guy. If you are reading this I highly suggest you make him your goto guy as well. You won't be disappointed."
Local Immersion
I can't rate Tom highly enough. He is extremely honest, trustworthy, helpful, and provides great informed guidance and assistance with all the projects he works on.
CMS

Organizations

API Skeletons - github - upwork
This is Tom's comany's organization. He has released many open-source projects through this organization and contines to support them, when appropriate. This organizaiton takes on clients through Upwork where Tom has as 100% success rate.

etreedb.org - github
Tom started what is now etreedb.org in 1999. Since then he has constantly maintained this website as the "head head" of this database of live concerts. At one time the site received 20M hits per month and boasted over 300 volunteers. Because people have changed the way they collect music, etreedb.org has become less popular but it is still the canonical resource for live concert recording information.

Doctrine Project - github
Tom was invited to become a member of this open-source organization and serve the project maintaining Zend and Laminas libraries.

PHP Meetup Groups
Tom regularly attends meetups in PHP and has talked at Utah Laravel Meetup, UPHPU Meetup, and SFPHP Meetup.

Docker Experience

Docker has changed the way we develop applications today. Tom is accomplised with experience in writing Dockerfile for production deployment. All his applicaitons are deployed with Docker. Tom prefers Cloud Run over Kubernetes. Tom uses docker-compose for all his development environments.

PHP Experience

Tom has worked in PHP since 1999. During the entirety of that time he have actively programmed in PHP. Today Tom works in Laravel and has contributed to the core libraries and documentation. Tom builds databases using Skipper entity relationship diagrams for Doctrine ORM and Eloquent.

Tom was part of the team that built Apigility in Zend Framework. Tom built the Doctrine in Apigility integration as well as contributions to many other parts of the project. His role ended before Laminas was created. During the time Tom was developing Apigility, he created a dozen open-source projects around Zend and Doctrine. Immediatly after his time with Apigility ended, Tom was invited to join the Doctrine core team. Tom's work with these developers has brought a new level of programmatic excellence to his work.

In 2011 Tom created Enhantsy which was a Javascript injection engine for Etsy. The application rewrote Etsy web pages as you downloaded them to add enhancements such as one-click add to cart. This application pre-dated Apigility and was an excellent example of an API centric application.

In 2010 Tom studied the Entity-Attribute-Value database schema and tried to write an application using it. He brought this application to his employeer's largest client in 2011 and they studied it for two months. In all Tom had spent 10 months working in that rabbit hole. The client came back with a decision that "this is not something [we] want to use, ever". This expereince is why Tom doesn't program in Wordpress.

In 2007 and ending in 2008 Tom created a custom analytics application for a customer who had a $2B USD sales program. He really enjoyed this work and that was a contributing factor for how he creates applications for clients on Upwork today through API Skeletons.

From 1999 through 2007 Tom worked professionally in PHP but the language was young and no proper frameworks existed. During this time Tom was a "developer" and not an engineer or architect.

Database Experience

Tom's first database was on the Commodore 128. Tom next worked with dBASE IV which he converted to MS Access. He then got his first programming job using Visual FoxPro. Tom's next career move brought experience with Oracle, MSSQL, Sybase, and SQL Anywhere.

In 1999 Tom started working with MySQL. Since then Tom has also worked with PostgreSQL, Firebase, MongoDB, MariaDB, and SQLite, and others.

When developing ORM applications in PHP his unit tests use SQLite for each unit test, recreating the database from the schema for each test.

Tom has written open source libraries for auditing of Doctrine ORM installations using a different database and triggers to create the audit data. His work in database auditing began in 2007 and he has studied it ever since.

Tom has studied many approaches to schema design and he is a leading expert on Skipper. Designing ERDs is something he's done since 1997. Today Tom teaches ORM design and how to create ERDs with Skipper.

Projects

This list of projects does not contain Tom's customer's projects. These are a selection of open source and public projects of his own.

Tom's Blog
This blog is about programming and specific issues he's found while programming. There are some articles which are not strictly technical but most of it is discussing a specific problem. He really likes the article on data fixtures because it brings together years of experience and discusses using them in other [non-zend] frameworks.

API-Skeletons/doctrine-orm-graphql
This project joins Doctrine ORM (a data-mapper pattern ORM) to GraphQL. Express entities as types while extending types globally or per-use. With events covering the lifecycle of generating a type, introspection of the processes is supported. This is a very complex library that makes implementing GraphQL in a Doctrine ORM project simple.

etreedb.org
This project was started in 1999 and is still running today. Every live concert in circulation is listed on this website. Bands who allow recording of their concerts, and those concerts which circulate in the trading commmunity, their metadata is listed here. Beginning with Walt Whitman recorded by Thomas Edison, this music resource is the canonical resource for sources in circulation. With over 300 volunteers, this site runs itself day-to-day.

Live Concert Database
This is the future of etreedb.org. Thanks to an GraphQL api-centric approach, this project will work for years into the future to keep the etreedb project running for decades more. It uses the exact same database as etreedb.org but remaps the old schema in code using Doctrine metadata.

DoctrineModule
This module was created before Tom became a curator. He has maintained this module, with help from the rest of the Doctrine team, for some time.

DoctrineORMModule
This module was created before Tom became a curator. He has maintained this module, with help from the rest of the Doctrine team, for some time.

Speaking Engagements
Conference or Meetup Date Title Slides Audio/Video
Utah Laravel 2021-09-09 Entity Relationship Diagrams in Laravel Slides
Utah Angular Meetup 2019-09-24 Angular Directory Structure
UPHPU 2019-08-15 Entity Relationship Diagrams for Eloquent Slides
UPHPU 2018-10-18 GraphQL Implemented for Doctrine Slides
Nomad PHP 2018-09-20 Build of a Modern ORM Enabled API with Apigility Slides
SF PHP Meetup 2018-08-15 GraphQL Implemented for Doctrine Slides
Utah Angular Meetup 2018-07-31 GraphQL and Doctrine for the Javascript Developer Slides
UPHPU 2018-04-19 Code Smells Slides
Utah JS 2018-04-17 Consuming Modern REST APIs Slides
UPHPU 2017-10-19 git in the real world
Zendcon 2016-10-19 Doctrine in Apigility Slides
UPHPU 2016-09-18 ORM and APIs Slides
SDPHP 2016-03-15 Doctrine in Apigility
- Designing Entity Relationships
Slides
UPHPU 2015-05-15 Doctrine in Apigility Slides
SFPHP 2014-02-11 Roll'n API Video
Zendcon 2012-10-23 Enhantsy
Slide Decks

Doctrine in Apigility - slides
An intermediate to advanced introduction to best practice technologies for building an API based on Doctrine using ZF2, Apigility, Doctrine 2, and Skipper.

Designing Entity Relationships - slides
A beginner to intermediate how-to for building best of breed databases by using canonical naming end-to-end from entity fields to database tables.  Correct naming principles for all field types are explained as well as why canonical naming in an application eases coding and overall maintenance and development of an application.

Doctrine QueryBuilder - slides
On the importance of building queries right in Doctrine.  Even behind DQL poor programming can result in catastrophic data leaks.  Also discusses data collection and the importance of taking in what the user gives you and filtering on the way out. 

Consuming Modern REST APIs - slides
Written for a Javascript audience, this walks through a history of APIs building up to an understanding of the Richardson Maturity Model and examples of consuming a Level 3 API.

Code Smells - slides
How to use phpcs for correcting and finding code smells and how to create your own company standard.

GraphQL and Doctrine for Javascript Developers - slides
An introduction to GraphQL and how to use filters when they are provided such as GraphQL and Doctrine.

GraphQL Implemented for Doctrine - slides
Front and and backend development with GraphQL and detailing the implementation of Doctrine in GraphQL.

Entity Relationship Diagrams for Eloquent - slides
Creating an ERD for Laravel's Eloquent in Skipper

In Summary

Since building crosswords on an Epson, Tom been involved in computers. Tom attended Comdex for 7 years because he didn't know what he wanted to do but Tom knew that he loved computers. When PHP 3.0 came around in 1999, Tom knew that's how he wanted to spend his career.

Tom supports mhprompt.org  and has an article on their site On Being a Bipolar Programmer .