Law student 'who "took pleasure in killing" fatally poisoned four people in five-month murder spree'
Harry Enfield defends his decision to 'black up' and portray Nelson Mandela as a crack dealer in disastrous comedy sketch as he blames 'cultural imperialism' for ensuing backlash
NASA Unit JPL To Lay Off About 550 Workers, Citing Restructure
Read more of this story at Slashdot.
Harvard expert shares gut-health boosting 'checklist' to carry out every morning
Mum and workout coach who lost first two babies during pregnancy to rare conditions says fitness ‘saved’ her
Israeli 'Juliet' and her secret commando lover are reunited after being captured by Hamas on October 7 before he hid his identity for two years
Paedophile who planned to rape girl, 6, caught at Stansted Airport
CodeSOD: The Bob Procedure
Joe recently worked on a financial system for processing loans. Like many such applications, it started its life many, many years ago. It began as an Oracle Forms application in the 90s. By the late 2000s, Oracle was trying to push people away from forms into their newer tools, like Oracle ApEx (Application Express), but this had the result of pushing people out of Oracle's ecosystem and onto their own web stacks.
The application Joe was working on was exactly that. Now, no one was going to migrate off of an Oracle database, especially because 90% of their business logic was wired together out of PL/SQL packages. But they did start using Java for developing their UI, and then at some other point, started using Liquibase for helping them maintain and manage their schema.
The thing about a three decade old application is that it often collects a lot of kruft. For example, this procedure:
CREATE OR REPLACE PROCEDURE BOB(p_str IN VARCHAR2) AS BEGIN dbms_output.put_line(p_str); END;Bob here is just a wrapper around a basic print statement. Presumably, the original developer- I'm gonna go out on a limb and guess that dev was also named Bob- wanted a convenient debugging function while tracking down an error, and threw this into the codebase.
As WTFs go, the function isn't that interesting. But you know what is interesting? Its legacy. This procedure is older than any source control history the company has, which means it's been in the codebase for at least twenty years, but probably much longer. Nothing invokes it. It's survived a migration into SVN then into Git, countless database upgrades, a few (unfortunate) disaster recovery events, and still sits there, waiting to help Bob debug a problem in the database.
Joe writes:
I still don't know who Bob is. Nobody knew who Bob was when I asked around. But Bob, if you're still out there, just know that you are now cemented into a part of the software that hundreds of companies used to manage loans.
[Advertisement] Plan Your .NET 9 Migration with ConfidenceYour journey to .NET 9 is more than just one decision.Avoid migration migraines with the advice in this free guide. Download Free Guide Now!