- 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
I've always disliked people like Mike. Someone writes a little thing, for their own reasons, then they put it out for the public to use once they see that there's no other tool available. And then some smartass like Mike comes along, at a later date, and gets all high and mighty.
Who cares that a tool wasn't done the best way - when there are no other tools available. Mike is just a whiner for complaining.
Admin
Why in the hell would an Amiga coder need a third-party library to generate screenshots from his own program? Everything was bare metal access back then, so the hardest part would have been implementing an IFF compressor, which has nothing to do with reverse-engineering the OS or anything hackish like that.
Admin
I guess that the term "code review" wasn't around back then. How do you blindly put code into your program without reviewing it when you have the source?
TRWTF is definitely Mike.
Admin
The real WTF is that Mike was an asshole.
Admin
Admin
TRWTF in this (fictitious?) story is definitely Mike...
Before his arrogant response everything was well, no problem laughing (in private) at an incredible inefficient code.
But shaming the creator of the code you're using?! That's too much of ingratitude. And to make things worse, Dr. John was so sad (and shamed) that he never went public again, and stopped releasing his free programs... Way to go =p
Anyway, it's necessary to grow a tough skin to be a programmer because those things always happen (specially if you work with Linus - great programmer but a little too much aggressive).
Admin
Admin
This reminds me of the time when I wanted to print out screenshots and other things from games that I'd written. Except my story doesn't have any crusty guy on some BBS providing free code for me to use, or asshole letters criticising people who did most of my work for me. I pored over the dot-matrix manual, figured out how to use the escape sequences to put it into pixel mode, and did my own damn screenshot code. Then I modified it to overstrike each pixel twice because the ribbon on my dot-matrix printer was getting so low on ink that the printing was hardly visible anymore.
Admin
Admin
I like reading the comments.
If someone didn't do something he's an idiot and should have done it. If someone did something then he's an arse and shouldn't have done it.
Rather than arguing about how shit Dicksourcer is or how comicly appalling CS is maybe comments should just be turned off?
captcha: who the fuck cares
Admin
How to save TDWTF:
Step 1) bring back MFD Step 2) let people comment on it / post their own creations based on it (i.e. write the content for you - for free!) Step 3) ???? Step 4) Profit.
Admin
Could have skipped your strawman comment that's for sure.
The only thing people are complaining about is how Mike abused the guy who's free work he exploited. Not the exploiting. Not even the not doing it himself. Not the giving back his improvements. The being a total dick and humiliating the original author for no good reason.
Admin
What?!?!?!
I have to disagree with this whole article.
A curious perversion is some code going way out of its way to accomplish (or fail to accomplish) a simple task. Or maybe having business procedures that hinder development to the point of absurdity. A curious perversion is not a program that does a simple task in exactly the way a human would THINK to do it. The code doesn't take the steps to pervert the ideal in order to more efficiently operate on a machine.
Dr. John is guilty of not knowing the nuances of an OS, and optimizing his code. This is not a perversion. This is a lack of polish. The only WTF I could possibly see here is how an industry can let a person get so many accolades without having adequate polish.
Then, to top the cake, Mike acts unprofessionally and bashes the Dr. by looking a gift horse in the mouth.
Then people wonder why no one wants to contribute to open source projects.
So if Dr. John is guilty of not having the polish to make efficient code. Mike is guilty for not having the polish of acting civil.
So, by extension, TRWTF is how an industry can allow such an unprofessional programmer to work on such an important project.
Admin
I'm sorry, "burning hundreds of floppies?" One did not burn floppies. "Burning" was a new term that came about for CD-Rs, because making those involved actually burning dye with a laser.
Fie on you and your anachronisms.
Addendum (2014-06-19 14:56): Also I recently came across a similar WTF in production code where I work, written by a skilled senior developer who must have had a brainfart that day. Shit happens.
Admin
TRWTF is writing a letter.
Admin
The initial version of the first usable word processor for the BBC-B was a bit slow and clunky because it wrote strings one byte at a time. It was only the mark 2 version which worked more efficiently and quickly -- and that was a direct result of a more efficiently-written OS and more memory (64k in total, that's ROM and RAM and includes the space taken up by BASIC and the rest of the OS) to play with.
I suspect that the screenshot program may also have been written at a time where there were such severe memory constraints that there was no such 1kB buffering capability. By the time Mike turned up, the OS had evolved such that the buffering was now available, but Dr John had not gone back through all the software he had written just in order to make more efficient use of the better I/O.
This puts Mike's crassness into the same league as the people who ridicule Robinson Crusoe for not using his mobile phone to call for help.
Admin
Dear Paul Neumann,
When you see "^^This" comment or similar one, without appropriate quote, you assume it was directed at comment just before it. Unless your education about commenting has been entirely confined to theory and not practice, I suspect you may be exaggerating your credentials.
Admin
What I don't understand is how the screenshot toolkit code was so well written, but the first time you try to actually integrate it into a working application, it's almost unusably slow.
So Dr. John has the skills to design and write a very functional toolkit, but never used it in a single application that would make it obvious that it was practically unusable without disk buffering?
Admin
What I don't understand: Why would anyone need to resort to some third-party screenshot kit? It was included! With every Amiga, there came a disk with AmigaBasic (ok, some TRWTF in its own) together with some very instructive sample programs. And IIRC one of the programs did show how to write and read ILBM files, which was the main Amiga graphics format at the time. Though that was Basic, it was easy to understand, and anybody should have been able to convert this into straght and fast C code in an moment. Strage.
Admin
Sounds like Dr.John's very functional toolkit was a proof-of-concept and optimization was left as an exercise for the reader. No wonder Dr.John went incommunicado after it became apparent that his very generous work was unappreciated by asshats like Mike.
Admin
How do you know that someone didn't insert a comment or two before "^^This" was added?
Admin
Admin
More troublesome is storing a value in a char or any datatype shorter than the memory word size, forcing the controller to do a read-modify-write operation. Well over 50% of programmers do stuff like this.
Admin
Admin
(But sometimes you'd better not fflush because Japanese toilets have sync built in:
[image]http://www.geocities.jp/hitotsubishi/suzushii.jpg)
Admin
An undergraduate course might have around 60 students. Around 40 students deserved to pass the course. But the prof couldn't fail 33% of the students, so the prof manipulated some grades to let around 58 students pass.
Then computer science became popular.
An undergraduate course might have around 250 students. Around 40 students deserved to pass the course, same as before. The prof had to manipulate some grades to let around 240 students pass.
80% of graduates are not decent or better programmers. They provide the material that makes this site exist.
Admin
No WTF here. Move along.
I learned early on that most software written by most people is crap. Sharing software as listings to be typed in was common in books and magazines early on. But I learned early on that most were hardly worth typing in, they were so bad. But they were good for education and inspiration.
So when adopting just about any software, it's a good idea to look it over and try it out, to see how well it works. It's crazy to assume that some other person or organization just happened to write just the software you wanted, just the way you'd like it done.
Admin
What are you, some kind of GPL argument Hitler?
Admin
So you know what a copper is, and what it does, how that can change the operation of the display hardware, when it can do so, and what services related to the display the copper helps Workbench to provide?
Answer: display list processor, stores values to chipset registers, modes/planes per pixel/colors/video pointer/etc, at any point while drawing the display, and you can have multiple independent apps on the screen at once, stacked vertically, each with their own screen parameters.
For that last one you need to know the OS intimately and scrape a lot of information out of the bits the OS designers never thought you'd need to touch, because saving the copper list isn't really an option. You don't need to know that your OS treats all disk writes as synchronous (spoiled kids never walked sixteen bits uphill both ways, spending all their CPU time and RAM fiddling with weak caches and going blind) -- but it helps.
Admin
If Mike made a public post to "thank" Dr. John and then immediately take a verbal swipe at him over an application he had nothing to do with, that is certainly TRWTF.
Hey writers, do you think you could maybe not glorify the bad guys?
Admin
Admin
OMG, I have seen this. Not in some shareware library or cheap off-the-shelf program. In a fairly expensive (mid-6 figure $$$) ERP system. I was tasked with finding out why invoices were taking so long to generate. This was on some fairly fast hardware (for the time) - analysis of the infrastructure (my domain) showed RAM, CPU, and disk latency were all at awesome levels. I had no source code, so I used the always-awesome SysInternals tools to capture disk I/O calls to see WTF. Turns out, when generating PDFs it would always output the graphics portions... one... byte... at... a... time.
I still get to deal with this company on a regular basis, and while they still insist on putting patches into production without testing at least I've shamed them into using source control. One of these days maybe ... just maybe ... they'll learn that it's OK to use ACLs to protect files. I'm not holding my breath, though.
Admin
I never wrote my output byte-by-byte because I started on punched cards. Everyone know that that God intended records and buffers to be 80 bytes each.
Admin
Admin
The real WTF here is that we're not all using Amigas. Still reckon the Amigas wre the best computers I ever owned. And the A500 still works.
Admin
The Java class RandomAccessFile from the offical JDK has a readLine() method that reads lines byte by byte...so it is basically unusable fro that task.
Admin
agree. HE could have just informed the original creator of his improvements without being an ass about it.
Admin
Well, apparently it wasn't "practically unusable" for Mike since he happily shipped it out knowing it was slow.
Admin
Burning up the drives. From the ridiculous activity they were being asked to perform. Not an anachronism at all.
Addendum (2014-06-20 17:11): Nevermind. Stupid assumption. They said it killed the drives.
Burning floppies - IS the Daily WTF
Admin
Admin
And it's entirely reasonable if your standard library buffers IO for you. The professor may have assumed it already did.
Admin
In a decent language on a decent operating system you don't have to care. You should be able to write byte by byte and the let the system decide how it will buffer it.
Admin
It still happens - in 2006 I came across a similar piece of code written in C# which used pixel-by-pixel rendering of an image (direct to the the screen no less) written by an "expert". A few hours work to use arrays and off-screen rendering before transferring the final image to the screen and I had one very happy customer who could now page through the images as fast as they liked rather than wait several seconds per image - I didn't milk it as much as I should have done :)
Admin
I remember the function call overhead for putchar being significant back in those days, even if you had a buffered stdio library.
Admin
Here's one way to destroy a hard drive, probably involving some burning: http://www.ebay.com/itm/Computer-hard-drive-melted-down-Novelty-Yes-its-real-Paper-weight-/121058269308?pt=US_Internal_Hard_Disk_Drives&hash=item1c2fa2987c
Another way is to use a degausser to completely demagnetize a drive. Since this destroys the servo tracks, the drive can't be reused afterwards. The IRS was a customer of my employer before I joined this company, so they probably use my co-workers' products to destroy records proving what their identity thieves did to me.
Another way is specialized erasure by software, so the drive can be repurposed afterwards, but this isn't accepted if the drive had stored documents above the level of top secret, such as photos of torture or proof of identity theft.
It is standard practice to issue certificates documenting secure destruction of drives. I suppose those certificates went into a highly secure paper shredder.
Admin
Admin
Maybe Dr. John did his testing on an Amiga that had a hard disk? Being a doctor, he could probably afford one.
Admin
10+ years ago, I was writing code to copy raw bits from certain location of harddisk to another harddisk (think it's something like "dd" in *nix). In the first version I also use byte-to-byte copy and the performance is extremely slow, it goes way better after I changed to buffer approach to use 256kB copies.
Admin
Admin