Domain: thedailywtf.com
Stories and comments across the archive that link to thedailywtf.com.
Comments · 952
-
Re:Toyota:
And more examples of how wrong things can get can be found here: http://thedailywtf.com/
There are some good examples there, but you'll find more on comp.risks.
-
Re:Toyota:
There will always be another bug.
And even more important - the bug may be a combination of software and hardware. Just ask what may happen if the code suddenly jumps to the wrong address. Do they use ECC memories in the electronics? What about a voltage spike? Driver has wrong socks/pants causing a spark that jumps to the OBD-II connector and messes up the CAN bus?
If anything can go wrong - it will. Think outside the box of how bad it can be, then multiply with PI to get a value closer to reality.
And more examples of how wrong things can get can be found here: http://thedailywtf.com/
-
Re:the dotcom boom
Basically, after the
.bomb, the only people left were the good ones.HAHAHA no...
-
Re:the dotcom boom
Heh, I was only partly serious. The boom did weed out some of the codemonkeys, of course, but you only need to look at thedailywtf.com to see there are still some real idiots in our profession.
-
Re:I want to slap the author
IMHO every programmer should read Apple's Human Interface Guidelines even if they don't work on interfaces directly or never touch a Mac.
Computers can't be made "easier" just by hiding levels of abstraction - the key is understanding how people react to the things in the world that they need to interact with. There are some well-studied principles that make computers much more pleasant to deal with, such as:
1. direct manipulation when possible
2. modelessness when possible
3. principle of least surprise
4. forgiveness (undo; default options least likely to cause damage)
5. maintain perception of stabilityThe guidelines aren't a cure-all and they aren't bullet-proof (otherwise they'd be rules instead of guidelines), but they give developers an idea of the kinds of issues they're likely to encounter when their software comes face-to-face with an end user.
For a good idea of what happens when these principles are ignored, see:
-
Re:Glad it didn't fry mine.
or some intern optimized a complicated piece of logic by noticing it's essentially an idle loop---a very important idle loop.
You mean it wasn't a Speed-up Loop?
-
Re:My apologies for a threadjack.
Yah I know, except at the time I took that screenshot:
1) The font color and background color were nearly identical, making it impossible to see the !. (Unless YOU can see it in that screenshot, maybe you have a better monitor than mine.)
2) The rollover was implemented in such a way that it was completely impossible to click it. The instant you moved your mouse towards it to click it, it would disappear.Like I said, some of those bugs have been fixed (although the bugs in the bugtracker have never been *marked* as fixed.) Slashdot development is basically a classic Developmestuction Environment: http://thedailywtf.com/Articles/The_Developmestuction_Environment.aspx
-
Re:Tell us your project?
There is such a thing as a generic solution to a problem.
There is no generic solution to this problem (or, equivalently, there are many useless ones). The problem is so open-ended and poorly defined that there are dozens of solutions that strictly speaking meet the requirements, yet the chances of them actually working for his project are slim. If you think you can provide a solution, you're making many assumptions about the project.
I bet you're someone who writes an expert system instead of actually solving the task you set out to do.
-
Sounds familiar
So it will basically be this on a larger scale?
-
Re:Obligatory TheDailyWTF
-
READ Code
Grab a piece of open source code that interests you and walk through it. In fact, in contradiction to what some others have posted here, it's better to read other people's code -first- before starting to write it yourself. You'll end up with a much better appreciation for the language and the structure of a program.
You want to look for both 'patterns' in the small ("What does this little chunk of code do?") and structure in the large, e.g. class layout, etc.
Too many people out there produce 'write-only code', just check out http://thedailywtf.com/
-
Re:Yeah, right.
"didn't anybody at Widget Co. even try this software out before shipping?"
No.
http://thedailywtf.com/Articles/Test-No-Software-Before-it-Ships!.aspx
-
Paula Bean was working there?
Paula Bean was working there? May be?
-
Re:Yes and No
http://thedailywtf.com/Articles/Jurassic-Programmers-.aspx
Some fun reading. I just read it while going through old Daily WTF posts no more than 2 minutes ago. -
Re:Who cheats who
I think your ex-colleague is still developing code
-
Re:Who cheats who
You must be talking about the guy who wrote this code:
-
So is this a /vertisement or a serious rant?
Because seriously:
a) quiz-advert is stupid. I'm sorry, subvert my browser and change who's in control of the flow of information before either I or the information provider can have a say in the process? I would write the firefox plugin to stop that one post haste.
b) this sounds like a
/vertisement.c) does this REALLY solve a problem? I submit to you "gloves". http://thedailywtf.com/Articles/Classic-WTF-The-Complicators-Gloves.aspx
-
Re:GUI applications
Hopefully he has upgraded to the "once in a while" switch replacement technique.
That struck me as weird, because as a programmer you usually start with conditionals and then move on to loops. I had a hard time believing that someone would know of "while(true)" and not "else if".
So I decided to run some tests over dinner. I'm no C++ programmer but here's how I went with this.
First I wrote a tests.cpp that looks like this:
#include
int main () {
int subType, mainType = 11;Slashdot_Filter_Sucks
// Editable section
while (true) {
if (mainType == 7) {
subType = 4;
break;
}
if(mainType == 9) {
subType = 6;
break;
}
if(mainType == 11) {
subType = 9;
break;
}
break;
}
Slashdot_Filter_Sucks // End of editablestd
:: coutI compiled that and it resulted in a 8120 bytes binary that ran in 0.005ms.
I thought about other obvious and simple ways to write this code and I created four more versions that are identical except for the code between the dividers (I had pretty asterisk lines but Slashdot's junk filter made me take it off). They are:
testif.cpp (test using an if/else statement):
if (mainType == 7) subType = 4;
else if (mainType == 9) subType = 6;
else if (mainType == 11) subType = 9;testifonly.cpp (no else, only ifs):
if (mainType == 7) subType = 4;
if (mainType == 9) subType = 6;
if (mainType == 11) subType = 9;testswitch.cpp (using a switch statement):
switch(mainType) {
case 7: subType = 4;
case 9: subType = 6;
case 11: subType = 9;
}testp.cpp (subtract 3 from mainType since that seemed like a pattern):
subType = mainType - 3;
I compiled everything using g++ then I ran time
./output. All the versions ran on average in 0.005ms, however, the binary sizes were different:#ls -l (ordered by size)
8072 testp
8109 testifonly
8120 tests
8121 testif
8125 testswitchOk, no case here in terms of size. So I tried compiling again with -O3, and the results were:
#ls -l (ordered by size)
8024 testp_o3
8024 tests_o3
8025 testif_o3
8029 testifonly_o3
8029 testswitch_o3Here it seems that the subtraction and the weird while/break method have the smallest file size. Without code context, one can imagine that subType was to be left alone if mainType was not 7,9 or 11. Which would mean the subtraction code wouldn't work in that scenario.
Now, I don't know the intricacies of C++ or Assembly, but I have to wonder if this was the work of a moron or someone who knew exactly what they were doing and did so for a reason.
Again, without context, none of this matters.
-
Re:GUI applications
Hopefully he has upgraded to the "once in a while" switch replacement technique.
-
Re:GUI applications
Do you use the for-case paradigm too?
That should take about 20 lines not 60... Is that what you were trying to say?
-
Re:GUI applications
I prefer php because it's a nice compromise between being easy to read, and being easy to find code to copy.
Congratulations. You have just explained half the code snippets on The Daily WTF.
Do you use the for-case paradigm too?
-
Re:GUI applications
I prefer php because it's a nice compromise between being easy to read, and being easy to find code to copy.
Congratulations. You have just explained half the code snippets on The Daily WTF.
Do you use the for-case paradigm too?
-
Re:Bullshit Bullshit Bullshit
this stuff doesn't just put itself together (at least, not yet.)
-
Re:Not fast
Obligatory thedailywtf.com link: http://thedailywtf.com/Articles/The_Inner-Platform_Effect.aspx
-
Re:Not the master password
It's not Facebook's fault: it's not like they actually set the master password to "Chuck Norris".
The real WTF is that "Chuck Norris" works as a password into anything: Facebook, your online bank account, your sister's pants...
You're getting your forums mixed up... I think you're looking for http://thedailywtf.com/
-
Re:Actually yes -- in some cases
Given the cost-cutting trend we've seen in IT over the past decade, would the image of someone that spends additional money/time on unnecessary technology be appealing?
Good thinking. We should all try to cut costs wherever possible, without worrying about possible consequences.
-
Re:Do Not Want
AFAIK the Maemo browser will not run java applets, but Iceweasel will.
A bank's java applet doesn't have to be nefarious per se, but in the case of a bank site it shows such poor design vs. plain html that you should expect other things to be wrong too. Also, read this.
-
Re:Yes but...
Video processing in general is a complete minefield. Even mplayer/mencoder, the best of the bunch imho, has many, many options that won't work together, and can produce output that itself cannot read. How the developers even manage to keep that massive jumble of libraries from bursting into flames I can't imagine.
If you really think about it, the fact that anything on a computer works is amazing. At a low level, magnets read and write ones and zeros on ridiculously fast rotating platters, and then are assembled into files, which then is stored in memory, which is then passed through a video card and converted into some format that can be displayed on a screen. Throw in networked computers and the potential for signal loss over long distances and the probability that something at some point in the process will fail, and the potential for failure increases exponentially. Maybe I'm alone, but I'm in awe of the fact that my computer doesn't just randomly catch fire and explode. (source)
-
Re:PulseAudio
Which means yes, it will be in what is supposed to be their standard for production systems.
Brilliant.
I think you mean brillant.
-
Re:Thread != Process
While generally I agree with you on the OP confusion on many accounts a good GUI does *NOT* need threads, event driven programming is very capable of powerful and responsive UI.
For trivial apps, this is true. But when you add any kind of complexity, whether or not this is possible depends on your definition of "responsive". If you're willing to pop up an hourglass every time a long-running operation must occur, I guess that might fit - after all the application reacts immediately, albeit with no feedback as to how long the operation will take, and regardless of whether the operation *needs* to be delaying the user. Or perhaps you think something like this is a good idea?
-
Re:More verbose == less readable?
What is unfortunately also annoying with "functionifying" a method is that it clogs up the class methods, I wish there was a keyword like "foohelper() helps foo();" which would mean foohelper() is only in scope inside foo(). If something is complex and consists of several long operations, it's usually cleaner to have a supermethod which only calls helpers.
Ideally, those methods/subroutines/functions, i.e. foohelper() should be declared and defined inside the method/sub/function they're helping, i.e. foo():
function foo(input):
function preprocess(input): ...
end function function process(input): ... end function intermediary = preprocess(input) result = process(intermediary) return result end functionThere are two kinds of helper functions, those that serve only one function and those that are useful in general (which can also become a problem) - and if your helper function is only useful in one scope, it should only be defined in that scope.
-
Re:As always, make yourself known
Or you could just hold them hostage: Maybe I Needing This Later.
-
Re:Negative LOCs
This belongs in here. Writ up a story and submit it!
-
Re:Marshall, TX
Seriously, reading a patent thread on Slashdot is like watching a couple of MBAs argue heatedly about whether it's better to write Linux drivers in AJAX or SCSI.
I have tried JavaScript, and haven't looked back since!
-
Re:How would it work?
if done wrong will result in Hulk-like rage.
I doubt it. Much more likely, it will result in hilarity, much like contextual ads. I don't know, I can see how that would inspire rage, but it just makes me laugh.
-
Re:Read Dilbert
And don't forget the Daily WTF.
-
Re:IIS?
-
A timestamping overflow error
hoses up the camera autofocus?
Is this Slashdot, or The Daily WTF?
-
Re:Slashdot could use the help
Like maybe they can remove the sleep() statements.
The technical term for that is a Speedup Loop. All good software developers use them... for certain values of 'good'.
-
Re:Penalties
Hmm, now where have I heard "brillant" before...
http://thedailywtf.com/articles/the_brillant_paula_bean.aspx
-
Re:Random figures
A sorta similar situation was discussed over at the daily WTF.
-
AI done poorly
-
Re:I hope that will be a non browser client
Many wrongdoings don't make another wrongdoing right.
The wrongdoing here is, that it's another inner platform. Which is a failure in software design. (Notice especially the "poor" in "poor replica", and the pointless slowness of yet another layer. As opposed to good abstraction.)
In the Haskell community, we nowadays even go in the opposite direction. Allowing to automatically transform a multi-layer functionality into one single efficient function (aka. "fusion").
Basically, the browser is more like a virtual machine nowadays. So why not use an actual virtual machine with full desktop integration, while retaining security?
-
Slashdot and this company ...
Just roll them into one. It's even got a catchy name.
-
Re:.NET comes preinstalled
I swear to God, I'm going to pistol-whip the next guy who says 'shenanigans'!
-
Re:Personally I'd rather you were honest with me
I'm actually not familiar with this...what exactly IS a cover letter, and what would make it a good one?
Cover letters look something like this.
It's up to you to decide if that's a good one.
-
Re:I'm gratefulThat was a recent daily WTF post.
"I have just one thing that makes me uneasy about this whole thing," he said, "when we mail these documents to our customers, I don't want them to be able to click on that link to go to our site."
-
Re:Just Remember.
Clearly we need a Shenanigans Handler
-
Re:Such dependancies annoy nLite users!
Amen brother, bad coders re-making existing functions or API's is what fills up The daily WTF
-
Front-Ahead Design
I think I've seen this before.