- Feature Articles
- CodeSOD
- Error'd
- 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
Admin
The real WTF seems to be that the author doesn’t realize that file based queueing systems have a long history on Unix and are one of the reasons that Unix systems where processing huge volumes as Mail Transfer Agents while “properly” implemented systems fell over. Doesn’t absolve Björn from doing a proper coding job, of course :)
Admin
This is an excellent example of the primary reason I read TDWTF: to check whether I see myself as the antagonist. Like "Bjorn" today, I too maintain a queueing system I developed, and it too uses cron and shell scripts. Fortunately it still works fine and will almost certainly not scale any bigger, but after reading this article I at least know I should read up on RabbitMQ to learn about proper queueing, and decide whether I need to upgrade.
Admin
A bunch of things that individually might or might not become WTFs, compounded into a big yarn ball of a WTF.
I've done stuff in bash (and DOS!) scripts before, and it only makes me more wary about using them for actual projects.
(I'm still kind of proud of my mini-make DOS script from the late 90s that only needed a few helper apps, like a Turbo Pascal program to compare file dates. But it was so much better than the individual build scripts that were being used before. Did you know that a side effect of DOS command parsing was two colons made a comment line? Maybe you should be happy that if didn't know that.)
Admin
Another WTF where the issue is not using technology that wasn't available at the time.
Admin
The only WTF I really see is that he did not clean it up and left a bunch of disused junk laying around. There is nothing wrong with file based queuing and cron, (to a certain scale). Its been the center of all sorts of mission critical processes from the 90s on. The way the mainframe world does things is still nearer to that in most cases than it is to the latest popular methods in the micro realm; and that is where the BIG dollars move.
I would also argue when it comes smaller shops who might only have one operations person and does not keep the developers on call at all times, cron and some shell scripts might be a lot simpler to troubleshoot, restart, fix by say removing one malformed item from the batch, than other solutions would be for that person. Provided of course its clean, commented, and documented - nothing like what we have in this story in other words.
Admin
It's a good approach for projects by RabbitMQ to model some of their first tutorials as replacements for common paradigms, while pointing out the benefits. Doing so would help convince and enable developers to switch over.
If I zoom through the RabbitMQ tutorial for Work Queues and I'm thinking about how to apply it to my 100 MB files that I'm passing around currently, I'd either think of it as redundant (I already have the file, so why do I need a message telling me that?) and slow (30 minute timeouts for consumer ack's) or as just being another part that can break (too much memory usage) and requires potentially difficult equations and research into how to handle growing queues (Erlang formulas). If I just have one worker and one producer, it's formal, but also potentially overkill.
Admin
I use RabbitMQ extensively and can say that it is fabulous. However it does not handle Very Large messages gracefully. So handling file loads by pushing everything into a message is not a good option...Rather: just queue the file path and then have the worker process the file.
Admin
In batch files, One colon makes a jump label. Two colons are not special (except in the syntax higlighting of some editor), it is just not possible to jump to jump labels that start with a colon (after the colon that marks the jump label).
You will learn this the hard way when you try to add "comments" in places that do not allow jump labels, like inside IF blocks. REM works fine, but :: will break.
Admin
Speaking of comments and Microsoft software: In DISKPART scripts you can shorten all commands to their first three letters, e.g. you can write "cre par pri" instead of "create partition primary". Except for one: "remove letter=Y" will remove drive letter y, but "rem let=y" is just a comment/remark...
Admin
I knew someone that was still using
lpq
in the early ’00 too keep batch jobs from overwhelming the system. Worked well in the limited, un-upgradable environment that he was in.Admin
TDWTF is edutainment for programmers basically, and posts where people disagree in the comments are where I'm getting the most edu out of it :)
Admin
Also where I get the most tainment from.
Admin
I'm not sure what image slicing has to do with script files and how the whole thing is a queue operation anyway, but I've seen rabbit mq being used elsewhere and the results were crap.
Admin
Guy got the job done without custom libraries.. that didn't exist when he made them, and the average developer has never heard of... not WTF. Sounds more like a good dev doing his job.
Admin
DPH Engineering is an authorized Material Handling Equipment suppliers. We have specialized in providing high-quality Material Handling Solutions to customers. DPH is a prominent distributor for the Indian Market for various global brands who are leaders & pioneers in their industries.
Admin
Also, DPH Engineering seems to be the first spammer I've ever seen pass through moderation...
Admin
It was a solution that worked. Not well documented, not standard (for some people), maybe not lightning fast. But to label it as nonsense, it's a little harsh.