Discover more from Robert Roskam's Newsletter
How small insights unlock progress
Another story of code horrors in my journeys
A few years back, I needed to migrate calendar data from one system to another. When I asked where the old data was, I was given an entire MySQL database backup and told, "Good luck."
After getting it restored, I began probing through the different tables figuring that one of them surely would have a datetime column for to begin to unravel this. I didn't find it on any of the obvious tables, and the quantity of tables was non-trivial. So I did the good ole
select * from information_schema.columns to try to find anything.
I got no where quick.
There were plenty of datetimes, but not the ones I was looking for.
So after a few hours of probing in and about, I decided to think on it for a minute: the system I was moving from had been a CMS. I contacted the original vendor, and they told it had been Drupal. This tiny piece of information was enough for me to follow up on.
I had a recollection that there were several options for how free-form data could have been stored in Drupal, so after some Googling, I came up with a keyword: taxonomies.
So I decided to see if evil things had been done with taxonomies by looking at the database tables associated with that.
Indeed...evil things had been. All the events had been shoved into one row and one column.
For those less familiar with such things, this would be equivalent of taking the entirety of an Excel workbook and shoving it into one cell.
I had many questions about how such a system ever worked, and initially, I wanted to ask my contact these questions, but I realized I didn't matter any more. And it likely was choices like this that caused them to switch vendors. Now that I understood what was going on, I could easily dump the data, and normalize into the new system. And I did.
Thanks for reading Roskam's Rambles! Subscribe for free to receive new posts and support my work.