https://thedailywtf.com/articles/The_Inner-Platform_Effect [wtf-logo] * Feature Articles + Most Recent Articles + Christmas in the Server Room III: The Search for Santa + Holiday Party + The Ghost of Christmas Future + The Spare Drive + Underwhelmed + The Modern Job Hunt: Part 2 + The Thanksgiving Shakedown + Classic WTF: Teleported Release * CodeSOD + Most Recent Articles + A Case of Old Code + Linguistic Perls + Duplicate Reports + Tis the Season(al Release) + The Article + The Magic Array + Pawn Pawn in in Game Game of of Life Life + The Destination Dir * Error'd + Most Recent Articles + Michael's Holiday Snaps + Anonymice + A Horse With No Name + On the Dark Side + Untimely + Will You Still Need Me? + What Goes Up + Once Is Never Enough * [forums-ico] [forums-ico] Forums * Other Articles + Random Article + Other Series + Alex's Soapbox + Announcements + Best of... + Best of Email + Best of the Sidebar + Bring Your Own Code + Coded Smorgasbord + Mandatory Fun Day + Off Topic + Representative Line + News Roundup + Editor's Soapbox + Software on the Rocks + Souvenir Potpourri + Sponsor Post + Tales from the Interview + The Daily WTF: Live + Virtudyne [ ] [mobile-men] * feature articles * codesod * error'd * forums * other articles * random article [bcf19c66c4] The Inner-Platform Effect by Alex Papadimoulis in Feature Articles on 2006-04-21 Edit [apx-square] Alex Papadimoulis Founder, The Daily WTF I'm sure that a lot of you have may heard about "antipatterns." They're more or less the converse of "software design patterns" in that they describe a frequently repeated problem in designing a commonly-occurring solution. I've observed quite of a few of these antipatterns in the real world, but noticed that one particularly egregious (though, thankfully, rare) antipattern wasn't documented: I call it the Inner-Platform Effect. The Inner-Platform Effect is a result of designing a system to be so customizable that it ends becoming a poor replica of the platform it was designed with. This "customization" of this dynamic inner-platform becomes so complicated that only a programmer (and not the end user) is able to modify it. This Inner-Platform Effect has been seen here before (most recently in the Enterprise Rules Engine), but it wasn't until I read Mario's submission that I thought it was time to name and identify the antipattern. The loan-origination system that Mario was dragged into was designed to be revolutionary: instead of relying on a programmer to make changes to the database, a user would simply need to make a few changes via the "Data Structure Modeler." I'll try to give you an idea of exactly how this ultra-dynamic storage system worked by showing a few snippets of code from the DSM: cmd.CommandText = "SELECT * FROM tblTable WHERE Name = '" + tableName + "'"; ... cmd.CommandText = "UPDATE tblFields SET DataType = '" + newDataType + "' " + " WHERE fieldId = " + fieldId.ToString(); ... cmd.CommandText = "SELECT fieldValueId, dataValue FROM tblFieldValues " + " WHERE fieldId = " + fieldId.ToString() + " ORDER BY defaultOrder"; As you may have gathered, the DSM organized data using a structure it called a "Table". These tables had one or more Fields, with each Field having a specific "DataType". A single datum was then stored as a FieldValue. All of these were stored inside of a relational database. Ironically, Mario was brought into the system because the client wanted to add a new Field to a form. [buildmaste] [Advertisement] BuildMaster allows you to create a self-service release management platform that allows different teams to manage their applications. Explore how! View all 126 comments >> --------------------------------------------------------------------- More Dynamic-er Than Yours >> << Outsourced Property Value Contact Privacy Policy RSS --------------------------------------------------------------------- Copyright (c) 2025 Inedo Publishing - v2024.9 Monitored by Panopta * Deployed with BuildMaster