Have you ever noticed that blogs are full of misinformation and lies? In particular, I'm referring to this blog. The one you're reading right now. For example, yesterday's post was so bad that it is conclusive proof that I've jumped the shark.
Again.
Apparently, according to one Reddit commenter, the information presented here is downright dangerous:
Jeff Atwood has always held the distinction of having the most dangerous programming blog, in that some young or aspiring developers may actually listen to some of his "advice", but now he's somehow managed to snag the achievement of having the most inane programming blog as well.To put it in more frank terms Jeff: What you've just written is one of the most insanely idiotic things I have ever heard. At no point in your rambling, incoherent response were you even close to anything that could be considered a rational thought. Everyone in this room is now dumber for having read this post. I award you no points, and may God have mercy on your soul.
I enjoyed the Billy Madison quote, but I'm not sure my blog has earned that particular distinction yet. If this blog is the most dangerous content that young, inexperienced developers have ever read then, well, I'd have to seriously question whether or not they've ever actually used this thing we call the "world wide web".
Allow me to illustrate with an example.
Today I happened across this blog entry from Mads Kristensen. In it, Mads explains that Deflate is faster than GZip.
First I tested theGZipStreamand then theDeflateStream. I expected a minor difference because the two compression methods are different, but the result astonished me. I measured the DeflateStream to be 41% faster than GZip. That's a very big difference. With this knowledge, I'll have to change the HTTP compression module to choose Deflate over GZip.
This was a surprising result to me, because the two compression algorithms are very closely related. On the other hand, we use GZip extensively and heavily to cache HTML fragment output strings on the Stack Overflow server, as Scott Hanselman explains. If Deflate really is that much faster, we need to switch to it!
But, like any veteran internet user, I never take what I read on a blog -- or any other site on the internet, for that matter -- as fact. Rather, it's a germ of an intriguing idea, a call to action. I fired up my IDE and built a small test harness to test for myself: is Deflate faster than GZip?
public static class StopwatchExtensions
{
public static long Time(this Stopwatch sw, Action action, int iterations)
{
sw.Reset();
sw.Start();
for (int i = 0; i < iterations; i++) { action(); }
sw.Stop();
return sw.ElapsedMilliseconds;
}
}
class Program
{
static void Main(string[] args)
{
string s = File.ReadAllText(@"c:\test.html");
byte[] b;
var sw = new Stopwatch();
b = CompressGzip(s);
Console.WriteLine("gzip size: " + b.Length);
Console.WriteLine(sw.Time(() => CompressGzip(s), 1000));
Console.WriteLine(sw.Time(() => DecompressGzip(b), 1000));
b = CompressDeflate(s);
Console.WriteLine("deflate size: " + b.Length);
Console.WriteLine(sw.Time(() => CompressDeflate(s), 1000));
Console.WriteLine(sw.Time(() => DecompressDeflate(b), 1000));
}
}
The results were surprising: on my box, GZip is just as fast as Deflate. For giant strings, for medium strings, for small strings. In every possible testing combination I can think of, Deflate is nowhere near 40% faster.
gzip size: 3125 242 171 deflate size: 3107 225 149
That's not exactly what Mads' blog entry tells me should happen. Do I think Mads is an idiot for posting this? Well, no. I don't.
Is this the type of dangerous misinformation that blogs are vilified for? Should I be angry at Mads for posting this? Not at all. I learned a bit more about Deflate and GZip. It provided an opportunity for me to refactor my compression code some. I even learned how to benchmark using lambda syntax. If I hadn't read this post, if it hadn't provided that impetus of an idea for me to ponder, I wouldn't have bothered.
I am a better programmer for having read that blog post. Even though, near as I can tell, it's offering inaccurate advice.
Update: I got a bit more curious about this, so I ran some more tests on different machines. Here are the results, in milliseconds, for a thousand runs each using the Google homepage HTML as the target (it's about 7 Kb):
How much faster is Deflate than GZip?
| Core 2 Duo 3.5 Ghz | Core 2 Quad 1.86 Ghz | Athlon X2 2.1 Ghz | |
| Compress | 8% faster | 8% faster | 50% faster |
| Decompress | 15% faster | 17% faster | 37% faster |
There's the 40% Mads was talking about. That is a little shocking when you consider that GZip is simply Deflate plus a checksum and header/footer! (You can download the source code for this test and try it yourself.)
So my point -- and I do have one -- is this: when you say that the information presented on a blog is "dangerous", you're implying the audience is too dumb or inept to read critically.
I, for one, have too much respect for my audience to ever do that. I am continually humbled by the quality of the comments and discussion on the blog entries I post. In fact, I'd say that has been the single most surprising thing I've learned in my four plus years of blogging: the best content always begins where the blog post ends. My audience is far, far smarter than I will ever be.
On second thought, maybe what I promote on this blog is dangerous: thinking for yourself.
But I'm pretty confident you can handle that.
I especially like the fact that the the most salient criticism from the reddit discussion author found swearing the only effective way to communicate his annoyance. Perhaps just a *little* marketing savvy wouldn't be so bad? No?
John Lopez on October 24, 2008 10:01 AMJeff,
I program in PHP and JAVA, you blog about .NET. I read your blog because you have short articles on general programming concepts and how they apply to your current project. The best way to learn programming is to have real world examples and situations. Its easier to see a problem or solution when it applies to something tangible. When you get specific about .NET I cannot use those specifics towards my own projects in JAVA, but I can take away some tid bits of programming concepts as discussion points and food for thought.
That is how a blog should be taken. If you are looking for truth, you should read the api and official documentation.
As well, I hardly see an article talking about improving communication skills and the overall ability to convey the worth of your project as dangerous. Now if you were preaching against best practice standards and had a loyal zombie army of programmers, then yes you are dangerous to newbies. But anyone who would view you as dangerous for just expressing an opinion on personality traits, they themselves have to question their expertise.
Your blog was one of the top 100 web sites in the current edition of PC Magazine. Congratulations!
Jeff, I thought yesterdays post was spot on. Unfortunately, many of the Grandma's Boy people just don't get it.
Mark S. on October 24, 2008 10:07 AMVery much agreed. If people come here just looking for validation of their already ingrained notions, then why on earth are they even reading your blog?
As for (new?) programmers who might take everything you write as gospel, that sounds like a personal problem to me. Someone forgot to learn how to think critically, and one can only hope they learn (perhaps even from your blog--oh, irony!) before they do too much damage. I'm not holding my breath on that one, but I still fail to see how you are the problem there.
Anyway, thanks for the great work!
Nathaniel on October 24, 2008 10:07 AMYou told people what they need to hear rather than what they wanted to hear.
People will always hate you for that.
However, the other half will be improved for it.
Reprove not a scorner, lest he hate you: rebuke a wise man, and he will love you. Give instruction to a wise man, and he will be yet wiser.
Thus the opposing responses to yesterdays post.
Practicality on October 24, 2008 10:09 AMI like how the comments totally prove your point. The fact that people considered the comment so insulting just proves how true it is. I love the way they take offense while at the same time making it perfectly clear that you are right. A little marketing never hurt anyone. Get over it, stop being insulted, and learn to talk to regular people.
Jasmine on October 24, 2008 10:14 AMI am a better programmer for having read that blog post. Even though, near as I can tell, it's offering inaccurate advice.
No... you're a better programmer because of what you did after you read it. Most people are not like that... they want the blog itself to do the magic - they don't want to work for it. Those people will never be good programmers anyway and it doesn't matter what blogs they read - they are lacking a basic skill and desire that is required for this job.
Jasmine on October 24, 2008 10:27 AMThe person that was that flamed yesterdays blog post needs to get their keyboard out of their ass and get out to have a broader view of the real world. You are absolutly correct in that every budding developer needs to understand marketing. Almost as moch as they need to understand coding.
Creating the best piece of software or website is nothing more than wasting time unless people know about it and use it. In other words MARKETING! Take 2 sites one great, the other mediocre. Guess which one is going to be successful - the one that ranks in Google. In other words MARKETING.
The really successful developers will be the ones who understand the business of software and the web. I hate to break it to all the young developers out their but it's equally about sales and marketing as it is about software. Read Seth Godin's blog - Learn to be exceptional - it's equally as important as the latest coding blog.
I would hire a marginal developer who understands Marketing over a propeller head wiz kid who only knows code any day of the week.
Keep up the great posts Jeff!!!
Mark on October 24, 2008 10:29 AMJeff, You didn't jump the shark. If the full analogy is taken from the Happy Days origins, it would mean you turned off so many readers your blog is dead. Far from it!
Most good programmers have the ability to think critically and skeptically. You can't be very good at maintenance programming without a little critical/skeptical thinking. Give us readers a little credit!
So, don't worry about jumping sharks. We won't drink all the kool-aid. We'll just mix the metaphors!
Charles on October 24, 2008 10:33 AMHey Jeff,
Maybe I'm just off my game today, but I cannot, to save my soul, get your code listed there to compile as is. Does it require VS 2008 and .NET 3.0/3.5 or can it be done unmodified in VS 2005 and .NET 2.0?
Sorry, C# is not my strongest language so I hope no one is put off if the answer to this is blindingly obvious.
Meis on October 24, 2008 10:34 AMJeff,
Thanks for writing the most dangerous programming blog!
Many of us need some extra danger in our lives, so keep up the good work!
Phil S. on October 24, 2008 10:36 AMJeff--
I only read one programming blog- yours. Keep up the great work.
--Rich
Rich on October 24, 2008 10:37 AMNo worries, Jeff - I still love the blog. I first found it when I did a Google Image Search for the CODING HORROR emblem from Code Complete a few years back, and have been hooked ever since.
One of the benefits- you got me hooked on Crazy Aaron's Thinking Putty.
Joe Attardi on October 24, 2008 10:41 AMJeff,
Not everything you post is correct (as if matters of opinion can be correct or or incorrect at all). That's not why I'm here, and that's not what I like about this blog. If being incorrect means you've jumped the shark, then you've done it many times in the past and will do it many times in the future. I'll still come back anyway.
What I like about this blog, is that you are not afraid to admit that you don't know everything. You are trying to better yourself, through code and through writing. And that learning process means making mistakes, discussion, and forming new opinions. It also means being humble about what you do and do not know.
Programmers are the biggest group of arrogant, know-it-all jerks. It's refreshing to see someone bucking that stereotype. We could all learn a little bit of humility from you in this regard, even if we don't agree on all technical matters.
Anonymous on October 24, 2008 10:49 AMPEDANTIC COMMENT:
Stopwatch.StartNew() is static, so you'd need to refactor your code a little bit, more than just s/Start/StartNew, if you wanted to use it.
Me, I just created a static class called MeasureDuration, with a static method called Of(), which returns a TimeSpan. Uses a Stopwatch internally, but I don't think the caller should care. Anyway it ends up looking like
var time = MeasureDuration.Of(() = x.DoStuff(123));
John on October 24, 2008 10:49 AMI personally read Jeff's blog because like him I want to open my mind towards different approaches to solving problems, I also read Jeff's blog because he is humble and knows his shortcomings.
I absolutely do not agree with people who say that bloggers should be held responsible for their post's, if you are looking for easy solutions through blogs and just copy+paste the code that is posted, it is your fault that you believed in it and not the poster's.
Also the responsibility was handed over to Jeff involuntarily, people assumed that whatever Jeff would post will be the word of god and the only way to go.
Programming blogs are more like diaries where you put your thoughts out with the added benefit of having a healthy conversation started with like minded people, they are not reference materials to be used by other developers to use blindly.
Amit on October 24, 2008 10:54 AMJeff has no responsibility to keep things accurate. I mean, nobody's going to toss him in jail if he claims three is bigger than two. But if he starts publishing garbage, his popular blog will quickly become an unpopular blog. The reason we stick around is because his stuff is generally accurate, and often prompts a rethink of how we do things professionally.
Izzy on October 24, 2008 11:02 AMDangerous? I'll admit that your blog can sometimes be random and obscure, and you frequently give a one-sided opinion - but isn't that the definition of a blog?
I have enjoyed your blog for years - keep up the good work!
Mark on October 24, 2008 11:05 AMDo any one of those trolls on reddit have a blog? Why don't we all have a look at what they've written, and try to pick apart every thing that they've ever written. Forget about those guys - they're absolutely pathetic in my opinion...
Matt on October 24, 2008 11:22 AMI think that the government, who invented the internet, would be outraged to know that Jeff Atwood is not doing our thinking for us. I imagine that God, who invented the government, would be pretty outraged too.
I am going to vote Jeff Atwood out of office. I'm sure that whoever replaces him will be much more interested in the well-being of his audience, and demonstrate it by self-censoring and doing our thinking for us.
Good lord, I sound like a slashdot newbie post desperate for upmods. Sorry. I'm not usually this bad.
Trav on October 24, 2008 11:31 AM... and I've really been enjoying the fact that this comment thread is still part epistemology and part code review ...
Trav on October 24, 2008 11:34 AM@Trav and I've really been enjoying the fact that this comment thread is still part epistemology and part code review ...
Wholeheartedly agree. I love this blog.
SteveJ on October 24, 2008 11:41 AMSo when you jumped the shark, were you wearing Fonzie's leather jacket? Is there video?
It seems to me that this is all about assumptions.
Jeff: (repeated frequently in different ways) I write what interests me, on any topic, as long as it relates in some way to programming or the business of programming. Sometimes the posts are focused, _to make a point_, at the expense of even-handedness, but you folks are plenty smart enough to handle it. And if I'm way off in something, I know you'll let me know--I value that. If you want a full picture of the topic in any given post, read the comments.
Some annoyed readers: This is a programming blog, and as such it's supposed to look the way I think a programming blog should look. It doesn't. So Jeff has lost it for me. Because a lot of programmers think they way I do, he's lost it for all of us--and with this one post that annoys me, he has jumped the shark and is now past it.
People sail right past you telling us exactly what you're trying to do, then get ticked because you've just done exactly what you've told us.
They want a different blog. This isn't the blog they want it to be, they're affronted, and they can't figure out why you don't turn it into the blog they want.
Me, I'm just amused....
El on October 24, 2008 11:45 AMLook at it this way - if you're in the public spotlight, someone is going to hate you. Just look at the comments present in any of the thousands of forums (fora? The grammar nazi part of me just woke up...) and news sites all over the internet that draw a substantial readership. I can guarantee an overwhelming majority of them are from lamers who post mindless flamebait drivel because it directly conflicts with their narrow viewpoint on the world; if you need an example, just look at any article on ZDNet from Mary Jo Foley.
Point being - whatever criticism you draw, it's because someone read your posts and felt compelled enough to tell other people about it. The ensuing bitch-off is really a discussion about the merits and demerits of what you wrote, which is the entire point of writing it.
Props and peace.
James on October 24, 2008 11:52 AMlame post in the last year. last blogs were advertisement for stackoverflow (links) and very sporadic. haven't you written a blog entry were you have said the most important thing on writting a blog is constant effort?
you lost get kicked from my start page.
offler on October 24, 2008 11:54 AMPeople, if you are unsatisfied with the product then you should ask for your money back. Er .... never mind.
JB on October 24, 2008 12:04 PMI'm one of these young inexperienced programmers who is, aparently, in danger.
I have to admit, I'm not really feeling it.
I read Jeff's blog because I respect Jeff's opinion, An opinion which he formulates from his experience.
After reading yesterday's post, I didn't burn all my programming referance books and enrol myself on a marketing course, but now I am aware of a potential problem that I can put my own thoughts into.
I'm glad to see that Jeff is unphased by such comments against him, as I like to hear Jeff's opinion but if he worries about what he is saying we will never hear his opinion, just what he feels safe talking about.
Chris on October 24, 2008 12:08 PMSometimes Jeff is full of baloney. Sometimes Jeff says something interesting. Such is the nature of reading blogs on the internet.
If you read blogs because you want people to provide the last word on programming topics, you are a novice mouthbreathing WTF generator. Read blogs, process the information, and test it if it seems interesting.
Sitten Spynne on October 24, 2008 12:27 PMThis is a dangerous idea, Think for yourself. I think I'd rather let Reddit do the thinking for me and just come here and flame you for yet another dangerous blog post. ;)
Haacked on October 24, 2008 12:28 PMIt has taken me 8 years as a professional developer to learn the hard way that marketing is extremely relevant to my happiness as a developer.
Developers tend to have a severe blind spot when it comes to marketing. The blind spot persists despite painful evidence to the contrary because of strong idealistic emotions that tell us that marketing is evil and the brilliance of our work ought to manifest itself entirely through our code. To suggest otherwise makes us very angry. But I'm here to tell you that it is 100% true.
If you want to continue working on stuff you care passionately about, you have to sustain the management and team mindshare that sustains your ability to continue working on it without being undermined.
If you and a team member have a difference of technical opinion or a different direction in mind for the product, your ability to market (not just sufficiently explain) your viewpoint is crucial.
In my opinion, understanding the importance of marketing (and other soft skills) is a sign of maturity in a developer.
AC on October 24, 2008 12:37 PMThe nature of your blog has changed, as all do.
But you should really blog about the art of building a readership, learning how to leverage that with an understanding of how SEO, self-linking, and *MOST* importantly -- posting topics that appear contraversial so that people can't wait to get their 2 cents in.
You've become something of an internet whore (will this get filtered)?
Pardeep on October 24, 2008 12:38 PMWell, the flamebait got a big whopper for sure! :)
anonymous on October 24, 2008 12:43 PMThis blog is one of the best sources of development wisdom I have ever seen. That doesn't mean I always agree with everything. It means that the blog reflects many of the non-obvious lessons I've learned -- the hard way -- over decades of programming. It means I'm always learning new things from it, even with those decades of experience. It means I recognize that Jeff GETS IT, unlike so many programmers, who are full of opinions and religiosity, but generally clueless about anything deeper than the zits on their nose -- ignorant of their own ignorance, in other words.
I'd list some examples here of my fairly broad and deep experience since 1975, to lend some credence to this opinion, but the little pinheads that are determined to diss Jeff wouldn't believe it anyway (or understand the significance).
Keep up the good work, Jeff -- you're doing it EXACTLY RIGHT.
I felt this post (and in fact, your followup comments) came off as more than a little defensive.
That was all I had to add today.
Justice~! on October 24, 2008 12:54 PMJeff,
Freedom of speech is good.
Freedom of thought is more useful.
Freedom to ignore is most apt.
Let me put it in his language and style:
Naysayers have always held the distinction of being the most dangerous users of the WWW, in that some young or aspiring developers often actually listen to some of their warnings, but now they've somehow managed to snag the achievement of becoming the most repulsive users as well.
To put it in more frank terms Mr.Naysayer: What you've just written is one of the most blatantly vitriolic things we have ever heard. At no point in your rambling, incoherent response were you even close to anything that could be considered a rational justification. Everyone in this room is now dumber for having read your comment. I award you no points, and may God have mercy on your soul.
There, fixed it for ya! :-P
I've had my share of disruptions with these people.
It is possible that they produce no content of use on the web or outside it.
It is possible that they do not contribute to any technical wikis.
It is possible that they do not distribute opensource or freeware programs.
It is possible that they do not write positive inspirational blogs.
It is possible that they do not write opensource or freeware code.
It is possible that they do not donate to good causes or opensource projects.
It is possible that they dont even play word games to help feed poor people for free.
Well, I speak only when I can say with proof that I do these things.
Mr. Naysayer, do you do any of the above?
If yes, do you do those by your own willing choice?
Even more dangerous are naysayers in positions of power.
Best strategy: Ignore most of them.
However, practcially, you cannot ignore trolls or naysayers in the boss/chief-stupidity-officer/chief-manipulation-officer category.
Many readers will take what you write as the last word in programming. You ought to write more responsibly.
In my opinion that is the same as calling the post dangerous. As Jeff said, you're implying the audience is too dumb or inept to read critically.
A couple of points to commenters like this...
1) The readers of this blog are people (JUST. LIKE. YOU.)
2) Those people aren't stupid
Criticism of the marketing post aside, I do like this blog and it's comment community and wouldn't comment from time to time if I didn't think it was worth adding to.
Keep up the good!
Clark on October 24, 2008 1:12 PMYou know, if it were me (and it has been) I'd just sigh and move on.
To put it bluntly, the more popular your blog, the more of this you will see. As my blog has increased in popularity, I've been amazed at how childish many people are.
It's your blog, post what you want.
Dave on October 24, 2008 1:31 PMWhat the hell are you doing reading Reddit or any other hip fad websites? Sheez. Just keep writing, I will keep reading and make what I want out of it.
Thank you for being you.
John A. Davis on October 24, 2008 1:50 PMMaybe you need a disclaimer on the bottom of each post.
Warning: Reading this blogpost might be dangerous and will make you dumber than you already are.
igge on October 25, 2008 2:33 AMRegarding your code blurb, did it occur to you to pub deflate before gzip? the results may surprise you. One of the reasons deflate seems faster is that the data is already cached from the gzip pass.
This is hardly the right way to conduct scientific experiments. shame on you.
I read many blogs, and reference sites in the course of trying to learn various aspects of software development, and I don't take ANY as being 100% accurate. (Not even MSDN, and similar)
I look for ideas and information to try out and more often than not, I find the information either not suitable, inaccurate to my situation, or irrelevant. BUT occasionally I find things that get me thinking and I'll try things out for myself, get a different view on the situation!
oh btw, RobDude, +1.
JoeBelowAverage on October 25, 2008 4:01 AMThe most common theme in your blog postings since I've started reading them is that you always enourage a developer to think on it's own. Test the code mentioned in blogpostings (wether it is coding horror or any other blog). Never just use code posted on the internet but think about what the code is doing and preferably test the applicability of the posting / code to you're own programming problem.
So I wonder how someone can declare you're blog postings 'dangerous' if they don't consider the advice given by you in most of you're postings.
Just my two cents
RobDin on October 25, 2008 4:09 AMI'm terribly confused here. Was this entire post some sort of proof that we should never trust what we read? Did you deliberately try to defame another blog in order to prove a point, that your readers are smarter than other blogs' readers?
I, for one, will not be returning here.
Will on October 25, 2008 4:41 AMIf you knew anything about marketing, you'd start calling this, the most dangerous programming blog.
roger on October 25, 2008 6:20 AMWhat you've just written is one of the most insanely idiotic things I have ever heard
Once again, I think someone has fallen into the same usual bug: Trying to undestand a concept by reading words literally.
Jeff said The One Thing Every Software Engineer Should Know, he explained it was marketing, and someone understood: Jeff says there is *no other important thing to know beyond marketing!!!!
We all know this man was not able to (or didn't want to) grasp the wider meaning of the phrase. If I say This box is black, many of us will understand it is very dark grey, because black doesn't exist as such in our universe. However we accept This box is black as a valid phrase without telling You are idiot, dumb, etc. We must read far from the literal meaning of words... It's so strange to recall such a well known truth...
Just for fun, look at these 2 words in his phase: What you've just WRITTEN is one of the most insanely idiotic things I have ever HEARD. If we play his game of literally reading, how can be said you *heard* something that was *written*? He should apply his own rules (discovering he is also idiot!), and start to write/speak properly, if he wants other people as refined as him to understand. The rest (we almost all) will understand anyway, without insulting anyone, as our mind seems to be more flexible.
When the wise man points the moon, the dumb man looks at his finger. It will always happen, sadly.
oscar on October 25, 2008 6:39 AMResponding to people who blog bad things about you? Your ego may be spirling out of control. Keep up the good work. =)
Patrick on October 25, 2008 9:44 AMSince you didn't provide your implementation of your compress / decompress methods, I wrote my own. They are probably slightly different as I don't want to time things like creating the byte array from the file - after all, we're trying to measure compression/decompression, not System.IO.
I used this blog post's HTML for input, and get:
deflate gzip delta
compress 13962.66667 15211.33333 -0.089428953
decompress 5815.333333 6952 -0.195460277
No where near 40%, but no where near the identical numbers you put up, either. Would you care to share the complete program so other people could run it and see what results they get?
Donny V.:
The issue you point out in Stopwatch in reality only hits few systems. Unless on your specific machine you get strange results from Stopwatch or QueryPerformanceCounter (which Stopwatch is just a wrapper for) it's perfectly reliable.
When we're misunderstanding each another: I like being viewed as dangerous!
So fellow Coding Horror reader's: You're dangerous!!!
Would you care to share the complete program so other people could run it and see what results they get?
Sure thing, here you go. Visual Studio 2008, C# project:
http://www.codinghorror.com/blog/files/deflate-vs-gzip-vs2008-solution.zip
Did you deliberately try to defame another blog in order to prove a point, that your readers are smarter than other blogs' readers?
Um.. no? Did you read the same blog post I wrote, above?
http://www.codinghorror.com/blog/archives/000549.html
Jeff, once you get to a certain level of authority no matter what you write, it is widely interpreted in multiple ways. I think your message that readers should look at things critically has a lot of merit. I've seen so many times people blindly copying code snippets from internet and using them without understanding what they actually are doing. It would have save a lot of trouble if they first used their brains a bit :)
Keep up with the posts Jeff, even though I see you like to be controversial and in some cases just spread a lot of manure. Fair enough! Nobody is perfect sometimes your blogs have some pearls of wisdom in them, sometimes not.
Anders on October 25, 2008 12:29 PMYour posts always rock (stackoverflow-induced silence notwithstanding.) Keep up the good work and /ignore t3h c0derZ!!
Gavin on October 25, 2008 1:02 PMThis post, with the graphs, is just as ridiculous as the original mentioned post.
gzip is deflage with a header and a checksum footer. period. end of discussion. Only extra overhead of gzip is the time to generate the header and calculate the CRC32 checksum. No fancy benchmarks and graphs necessary...
Jeff - long time reader, first time caller.
When I read the post in question, it made me think of my current position. One of our products is no longer as competitive in its niche market as it once was. You can be the world's best application developer, but if you can't get your program installed on someone else's computer, what's the point?
Chuck on October 26, 2008 5:33 AMUnfortunately, you also implicitly promote 'leaping to wrong conclusions.'
Witness where you assume SQL Server engineers know less about databases than you.
You write, I can't tell exactly what he's compressing in his benchmark. You, sir, are incompetent. Not only is it in the source code, you didn't even read the (only ten, prior to your pingback) comments on that blog! (It's 5000 byte array of clean memory, for what it's worth.)
(It beggars my mind that you seriously considered a blog post where the third comment is Are you serious? You're writing 1000 times 1000 zeros and call this a benchmark for compression methods? Sheesh, Mads Kristensen is as bad as you - and notice that Mads doesn't disagree with 'bfg' when this is pointed out?)
Yes, you are a salesman; blustering through and portraying yourself as having all the answers and speaking authoratitively - even when you don't actually know. It's what sales people do - and it's why they don't get any respect from engineers.
Amused on October 26, 2008 6:27 AMHey Jeff, would just like to say that if it wasn't for your 'dangerous' blog that I started reading three years ago, I would never be choosing to study Computer Science at University; I would never have got my first job working as a small network admin; I would never have landed a years work in a junior position at a local web-dev company.
Coming to blogs looking for empirical truth seems to me flawed from the outset. But if you come to blogs looking for ideas, looking for topics to make you think and experiment and appreciate the numerous facets of the world of programming... well, I hardly think you could classify Coding Horror as 'dangerous'.
Many thanks, and keep up the good work!
Peter Hughes on October 27, 2008 2:36 AMKeep jumping that shark Jeff.
Your mistake was you did not pls give dem teh codez, could not copy paste marketing stuffzors.
Reddit can be taken just as seriously as digg and 4chan
seanb on October 27, 2008 2:58 AMOne of my favorite comments in the Reddit thread:
This is Computer Science damn it, not Computer Philosophy. :)
Tim on October 27, 2008 3:04 AM
Well, I am happy and glad there are salespeople being able to market my products.
I assume those who doesn't respect salespeople are the one doing the selling of their products/skills.
Keneth on October 27, 2008 7:51 AMHello!
I am a bit new to C# so I was wondering what 'this' does in the following line:
public static long Time(this Stopwatch sw, Action action, int iterations)
VS2005 thinks it's an error, in fact.
All the other fuss... I care not so much. I find almost any post on here at least interesting, and as you mention yourself, they often give me incentive to try out things myself, to double-check facts and give me ideas that go beyond what I could have thought of myself. The comments are normally great as well... so keep up the good work!
Bucket on October 27, 2008 8:22 AMI, for one, will not be returning here. - Will
And the sun fell from the sky and mountains of fire rose from the earth...
Ash on October 27, 2008 9:28 AMThe percentages table doesn't seem to match the chart...
If Deflate is over 100% faster, I'd expect the graph to show bars half the size.
Gunther on October 27, 2008 9:31 AM-- Human being's make mistakes --
*doh*
What on earth goes through your head that you would go and read a blog like it's the word of god. Last I checked... Jeff neither claimed his god, nor acted like it. And neither do I :D
TrXtR on October 27, 2008 10:30 AMBucket
It is new for C# 3.0.
Jeff
Saying that something is 108% faster implies that it is over twice as fast. So, if GZip took 425(ish)ms, then Deflate would take 178ms.
Is dangerous supposed to be a bad thing?
According to the best, albeit unofficial, maxim of marketing and popularity: Any publicity is 'good' publicity - I'd say the writer who assigned the Dangerous moniker makes you (and your blog) a Must Read!
Keep up the good work.
SammyB on October 28, 2008 6:38 AMJeff said:
That is a little shocking when you consider that GZip is simply Deflate plus a checksum and header/footer! (You can download the source code for this test and try it yourself.)
Checksumming is NOT cheap - checksum algorithms can be cheap but the process involves visiting every byte/word in a payload to calculate a checksum.
For a cheap checksum algorithm (e.g. CRC32), the hit is almost the same as a memory copy (which from my experience is anywhere from 5% to 20% hit).
For instance, all your IP packets you send via UDP/TCP need to have checksum computed by the OS/kernel - where the kernel offloads this work to your Network Card.
I have a bit of a problem with your use of percentages. I don't think that you can say that something is 150% faster than something else, unless some kind of time travel is involved.
Not A Mathematician on October 28, 2008 9:50 AM@o.s.
Perhaps if I put it this way...
Task A takes 10 seconds. 150% of A is 15 seconds.
If B is 150% slower than A then it will take 10 + 15 = 25 seconds.
If B is 150% faster than A then it will take 10 - 15 = -5 seconds!
@igge
I think you mean the top of the post - most of the dumb ones won't read it to the end...
HB on October 29, 2008 7:22 AMI have a bit of a problem with your use of percentages. I don't think that you can say that something is 150% faster than something else, unless some kind of time travel is involved.
Not A Mathematician on October 28, 2008 08:50 PM
You really need to read this wikipedia article ao you can understand more how percentages work.
http://en.wikipedia.org/wiki/Percent
A 150% increase is totally valid. 3 *(1+1.50) = 7.5
Wow... you really ruffled some feathers with this.
Well done. You got your readers thinking...
Jonathan on October 30, 2008 2:03 AMHow could this blog be the most dangerous programming blog I think idiot ideas must be called just like that IDIOT. A blog is essentially an open book to new ideas the richest part of this blog is that Jeff generates ideas and the participation of visitors contributes to generate new knowledge, knowledge will never be dangerous in our profession.
If more people try to emulate Jeff work trying to share knowledge and honest opinions, creating communities, etc, we would have a better software and better people to making software.
Keep on the right track Jeff Danger Atwood
Rulas on October 30, 2008 2:48 AM@Not A Mathmatician
Aha! I think I found why the phrase 150% faster is so confusing to use. Its just a matter of the terminology used to report the comparision being imprecise.
How much faster is Deflate than GZip?
Core 2 Duo 3.5 Ghz Core 2 Quad 1.86 Ghz Athlon X2 2.1 Ghz
Compress 108% faster 108% faster 150% faster
Decompress 115% faster 117% faster 137% faster
Since we now know that any percent decrease greater than 100% to be impossible for time units it makes more since to flip the terms to use slower rather than faster. Therefore:
slower = percent increase in time units
faster = percent decrease in time units
So if we say Gzip is 150% slower than Deflate then the mathematics make since and we get rid of the negative results.
Oop^2: since = sense :-)
o.s. on October 30, 2008 3:28 AMDidn't Kathy Sierra run this you're not a programmer - you're a marketer thing about a year ago?
Andrew on October 30, 2008 5:38 AM@Not A Mathematician
Oh man you didn't read the Wikipedia link did you? Come on all those calculations you presented are wrong based on what Jeff was describing in the blog.
When someone says 150% faster they mean a 150% increase. How do you calculate a 150% increase? x * (1 + x%/100)
x = the number you wish to increase
1 = represents 100% of the number to be increased.
x% = this is the percent increase(in this case 150). Dividing it by 100 converts it to decimal.
When you said Task A takes 10 seconds. 150% of A is 15 seconds.
You actually did this 10 * 1.5 = 15
All you've done here is multliply 10 times 150%(converted to decimal). This IS NOT a 150% increase.
Your calculation should instead look like:
10 * (1 + 150/100) = 25
Wondering about a percent decrease? x * (1 - x%/100)
@o.s.
Exactly!
I'm happy with Jeff's maths. I was just objecting to his careless use of terminology.
It's not just him of course, you see this kind of mistake with percentages a lot.
Not A Mathematician on October 30, 2008 9:28 AMOops. Not A Mathimatician looks like you were right. On your final calculation a -5 doesn't make since for units measured in time. One of the first statements in your comment didn't seem to tie in with a percent decrease my fault. I tried for several diffent numbers and all of them lead to negative results so a 150 percent increase can work but 150 percent decrease doesn't seem right for time.
Oops no. 2 percent faster should've been percent decrease.
o.s. on October 30, 2008 10:05 AMAmused writes:
You write, I can't tell exactly what he's compressing in his benchmark. You, sir, are incompetent. Not only is it in the source code, you didn't even read the (only ten, prior to your pingback) comments on that blog! (It's 5000 byte array of clean memory, for what it's worth.)
(It beggars my mind that you seriously considered a blog post where the third comment is Are you serious? You're writing 1000 times 1000 zeros and call this a benchmark for compression methods? Sheesh, Mads Kristensen is as bad as you - and notice that Mads doesn't disagree with 'bfg' when this is pointed out?)
Yes, you are a salesman; blustering through and portraying yourself as having all the answers and speaking authoratitively - even when you don't actually know. It's what sales people do - and it's why they don't get any respect from engineers.
Amused +1.
Also, when you fixed your C# code (except for the remaining bug :), you left the numbers in the following table alone. Grep for 108% and 137% in the post, and then fix them. Or leave them; it's pretty obvious you don't care about correctness anymore (ever since you discovered Marketing).
Anonymous Cowherd on October 30, 2008 1:24 PMI'm so living on the edge right now, reading your posts and all.
Awesome!
I completely disagree Niyaz. A blog is an author expressing his or her thoughts/ideas, nothing else. If readers take what is written on a blog for a fact, well frankly that is not the authors fault.
It's as with every other type of media. Don't believe it just because you read/hear it. Think for yourself.
you people that hang around in programming blogs like these are probably the most boring programmers i've ever read from! [i was reading your text if you don't understand] you obviously program boring programs with boring code that do boring things. . . .ha the boring programmers of this world, you are the popular kind of programmers, all you do is sit around probably coding pranks, [if you even know how to do that] and mock people who don't know how to code, whereas we the real programmers. that sit at PCs all day and learn about new software make better versions, and most probably make programmers like you think. . .FUCK! wher the fuck does this guy get these ideas from?! cos you don't really understand the code even though you've learnt it, and you never thought a program like that could be made. all you people do is your work! like people filling gaps in the industry just code a program and get paid! why don't you guys code your own compressing program and see whos one works the best, then you guys can try reverse searching my IP and we'll play a bit of hack-n-crack.
don't reply cos i won't be back on this sad site ever again.
[i bet you stupid ass fucks are still going to reply]
Keep posting your opinion Jeff. That's all that matter.
I can't believe that someone in the 21 century labels information as dangerous... if you see flawed logic, you counter it with arguments, not with primitive terms like dangerous information or insulting the author.
Blogs are not supposed to be collage text books, so everybody should cut the crap.
Demian on January 5, 2009 6:26 AMWhat the article reveals is that while people have developed good tools for not doing most of these things, the current practice is that software in the wild still ships with stupid, silly mistakes that can cause a lot of problems. What's more is that consumers are fine with this.
The stupidity of some of these dangerous errors shows that something needs to change with the way people produce and consume software.
Go-Gulf on April 12, 2009 1:27 PMhttp://www.watchmvp.com/Breitling.html Breitling watches
zeng on August 12, 2009 5:37 AMI don't know which made me feel worse: discovering that there's a Stopwatch class in the .NET Framework, or realising that it's been there since version 2.0.
And there I was using Timers. Doh.
The Mighty Borkon on February 6, 2010 10:38 PMI am an engineer by training and only an occasional programmer, far from an application developer. I do read this blog because it is interesting and informative! I don't believe or embrace all of what I read here. But it often makes me think, and that's a good thing.
Every post I read is modest and often self-effacing. Jeff writes conviction, but the modesty will prevent the blog from being dangerous.
Bad programmers can make anything they read dangerous.
Jason B on February 6, 2010 10:38 PMJeff,
Just wanted to say I love reading your posts. Ignore people who take potshots at you. I am sure for every person who hates / criticizes your blog there are at least 10 people who love it. So keep up the good work.
BTW: hear it spoken for the captcha is a nice touch.
I am not professional in programming and this stuff blow my mind.
IN case to create a websites I am using website builders like www.site2you.com
The comments to this entry are closed.
|
|
Traffic Stats |