Slashdot Mirror


Explaining The Windows/UNIX Cultural Divide

giampy writes "Joel Spolsky writes a review-like article on the last book of Eric S. Raymond (The Art of Unix Programming). His views on the cultural differences among Windows and Unix programmers are well explained. Overall, an interesting read." Also on the topic of Windows, badriram writes "Microsoft is reorganizing the windows team, it seems the are separating the OS core development. Seems like things heading in the right direction in creating a more secure OS, and making it more business oriented. Read the article here."

108 of 673 comments (clear)

  1. to sum it up... by KingRamsis · · Score: 3, Funny

    Windows programming is like playing golf, UNIX programming is like pig wrestling, after years of development on both platforms I feel that UNIX programming gives me the satisfaction of sport achievements, the unforgiveness of UNIX makes very thrilled.

    1. Re:to sum it up... by Anonymous Coward · · Score: 4, Interesting

      Exactly. UNIX gives you enough rope to hang yourself, and a few extra feet just to make sure. To people that take the time to use learn how to use it properly, this IS a good thing.

    2. Re:to sum it up... by Motherfucking+Shit · · Score: 5, Funny
      Windows programming is like playing golf
      Exactly. There are always at least 18 holes.
      --
      "BSD: Free as in speech. Linux: Free as in beer. Windows 10: Free as in herpes." --Man On Pink Corner in #52607549.
  2. That's too bad by osgeek · · Score: 4, Funny

    Joel Sposky writes a review-like article on the last book of Eric S. Raymond

    I hadn't heard that he died. My condolences to his friends and family. He will be sorely missed.

    1. Re:That's too bad by dillon_rinker · · Score: 5, Funny

      He will be sorely missed.

      Sourcely missed! SOURCELY! He was an advocate of open SOURCE, you idiot, not open...oh. Nevermind.

    2. Re:That's too bad by Uma+Thurman · · Score: 2, Funny

      Yep. However, his ego is still very much alive. We can all look forward to his next book entitled "The bizarre Cathedral: How a dot-com millionaire built a large church to house his gun collection." The book after that will be "Eric vs. Darl: The Last SCOFighter." Truly an open-source icon.

      --
      This is America, damnit. Speak Spanish!
    3. Re:That's too bad by metamatic · · Score: 2, Insightful

      I was hoping maybe he was going to stop writing. That way we wouldn't get any more wingnut rants about how the way to achieve safety on planes is to give guns to all the passengers.

      --
      GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
    4. Re:That's too bad by peterb · · Score: 2
      the last book of Eric S. Raymond


      We should be so lucky.
  3. Does the story start with... by XiChimos · · Score: 4, Funny

    Does the story of how the divide between windows and Unix came about start with fallen angels?

    1. Re:Does the story start with... by AndroidCat · · Score: 4, Funny

      Didn't Milton write something about "Better to reign on desktops than servers in Heaven"?

      --
      One line blog. I hear that they're called Twitters now.
  4. windows users are the problem... by timmarhy · · Score: 4, Insightful

    forget the programmers, until general knowledge of computers improve and stuborn idoits don't need to have things like " why do i need a password to run a program on MY OWN computer" explained the state of computer security will not improve.

    --
    If you mod me down, I will become more powerful than you can imagine....
    1. Re:windows users are the problem... by Peganthyrus · · Score: 5, Interesting

      Well... why do you need a password to run something on your own computer?

      It's sitting right there in your home office. Behind at least one locked door. Maybe even a couple.

      I mean, I have my machine set up to automatically log me in; I turn it on and there it is, ready to go. There's me, my room-mate, and nobody else. I trust my room-mate to stay off my machine; she trusts me to stay off of hers.

      --
      egypt urnash minimal art.
    2. Re:windows users are the problem... by Zoop · · Score: 4, Insightful

      Joel's theoretical explanation for the divide hinges on the user--his thesis? Windows programmers care about users, UNIX programmers don't.

      My immediate reaction was, "If so, how come Windows programs have suck sucky UI most of the time?"

      A colleage of mine had an insightful comment, "Windows programmers don't program for the user; they program for the buyer."

      I think that explains more about Windows from MS to the end-VBScript-monkey than anything else.

    3. Re:windows users are the problem... by goodviking · · Score: 2, Insightful

      But do you trust the janitor? What about the security guard? What about the 16 year old kid who came in to work with Mom and is bored and wandering the halls?

    4. Re:windows users are the problem... by Anonymous Coward · · Score: 2, Informative
      Well... why do you need a password to run something on your own computer?

      Although some people may attack you, this is insightful. Sometimes security zealots get out of hand and recommend practices that are ill-suited for particular situations.

      However, I'll give you a reason why your desktop computer should have a password: you're not protecting it from other people, but you're protecting it from unknown code.

      Newer versions of Windows have a "runas" feature (which I believe is activated by default). If you make your main account a non-privileged account and use "runas" whenever you need to run a privileged operation (install software, modify system settings), your computer will be safer from various malicious programs. MacOS X already does this for you.

      This isn't great protection since you probably care more about the data on your computer rather than the integrity of the OS (and one would assume your data is writeable by your main account), but it does help nonetheless.

  5. bad reflexes by Janek+Kozicki · · Score: 2, Insightful

    Eric S. Raymond has just written a long book about Unix programming called The Art of UNIX Programming

    oh, he has just written it? How could it be that I was reading this book for over a year now?

    --
    #
    #\ @ ? Colonize Mars
    #
    1. Re:bad reflexes by erlenic · · Score: 5, Funny
      How could it be that I was reading this book for over a year now?

      Don't worry, plenty of slow readers have gone on to lead successful lives.

  6. Re:It's all about the shell! by bheer · · Score: 5, Informative

    Check out Monad, the OO extendable command shell for Longhorn. Quite interesting.

    Btw, on 2000 and XP (maybe 9x too), you can assign a shortcut to the command prompt, say Ctrl+Alt+S, so hitting that will get you a command prompt quickly. And enabling autocomplete to and QuickEdit and Insert modes on cmd.exe adds a lot to productivity too.

  7. Re:It's all about the shell! by KingDaveRa · · Score: 2, Informative

    They've buried it even deeper in Windows XP (it's now in Programs...Accessories rather than just Programs).

    Or Start --> Run, CMD, enter.

    Hardly call that buried.

  8. about cultural divide. by Lord+Kholdan · · Score: 2, Interesting

    Only thing I know about Windows/UNIX cultural divide is that I cant use the computer in the *nix world the way I like.

    And yes, that means I prefer GUI over commandline by far and would never touch commandline. To those who think it's a fault: It might be only a personal preference but trying to debate it is like trying to debate whether apples (fruits, not the computers) taste good. In that sense, Windows offers me greater freedom to do with my computer what I want to.

    1. Re:about cultural divide. by Talthane · · Score: 4, Insightful

      The fact that you can't use a *nix machine the way you want isn't a reflection of the Windows/Unix divide - it's a reflection of your personal preferences, experience and background. It's not remotely cultural.

      I can't make my Windows machines work in the way I like to (mix of command line and GUI), whereas I can make my iBook and my G4 work wonders because I know OS X / Unix well. That's not cultural either - it's a reflection of the fact that my computing experience has always been some distance from the Windows world.

      Just because you don't like something or don't feel comfortable with it doesn't necessarily mean it's a fault with the system as a whole. It can equally easily be a "fault" with your own experience.

      --
      "This is why men never share their feelings; because women always remember." -Just Shoot Me.
    2. Re:about cultural divide. by Hatta · · Score: 2, Insightful

      What is it that microsoft gives you the "freedom" to do that you can't under unix? Besides running 95% of commercially available software. It's ok that you like GUI apps, I use mozilla, gaim, and xchat frequently myself. But linux has a GUI too, and for my purposes at least it's better than windows. Why? Network transparancey.

      But I don't mean to get into a bunch of feature comparison here. We're talking about cultural differences. So here's an example. When I don't know how something works in linux, I can run the program with the -h flag, use 'man' or grep through the config files and figure things out pretty easily. If I can't figure out how something works in windows, I'm presented with a control panel full of dialogs with subdialogs and submenus under that. How do you ever find anything?

      So really, I don't understand why people consider windows so easy to use. But there are two parts to the mantra "simple things should be easy, complex things should be possible" Windows fails on this part too, but mainly because it shuns the command line. Suppose I want a program that will take all the files on a cd, check them against an md5sum file or create one if there isn't one, and burn them all to a new cd. That's just a few lines of bash, but with a gui app you're stuck doing all that manually.
      Is that really the way you want to use your computer?

      --
      Give me Classic Slashdot or give me death!
    3. Re:about cultural divide. by xdroop · · Score: 4, Insightful
      In that sense, Windows offers me greater freedom to do with my computer what I want to.

      Good. Great. Bully for you.

      I'll give you the benefit of the doubt that you truely limit your comments to your wants and needs. The problem is that the standardization naz^Wadvocates (oops, almost invoked Godwin's Law, sorry about that) always extend their needs as trumping everyone else's needs. This is just as much a crime when it comes from those whining that Linux needs a standard GUI (or whatever) because the unstated subtext is always "the one I am using".

      My needs are different from yours -- I find that I cannot use a Windows system the way I want to, and am much more at home on a unix system. I find I cannot use a KDE inteface the way I can use a olvwm interface. With a modular system like unix, I can use the interface I want, even as other users on the same system use a completely different one, and all without causing undue problems between them.

      --
      you should read everything on the internet as if it had "but I'm probably talking out of my ass" appended to it.
    4. Re:about cultural divide. by kmilani2134 · · Score: 2, Interesting
      I had a job in the marketing department of a large management and strategy consulting firm. I was in charge of their intellectual capital database as well as an alumni database and direct marketing database.

      The company had standardized on MS Office and didn't officially support anything else. The technology group was in a different city and used Oracle on the database side, but I did not have access to those resources.

      I spent well over a year trying to get things to work with MS Access and whatever else was available to me on my workstation for handling data and information.

      Eventually I found an old unused computer, put Linux on it and was then able to accomplish things which before had been either hard or impossible. A mixture of Perl, MySQL and PHP for interfaces made a lot of things possible which were otherwise very difficult.

      For large datasets Excel is worthless and Access does not give you the flexibility you might need to do massive changes or comparisons between two data sets. Perl and MySQL were far superior for manipulating large data sets.

      If I need to get things done I will use whatever tool is best for the job out of what is available to me. In a lot of cases, that means working on the command line or writing a script. I would be severely limiting my capabilities by restricting myself to fancy GUIs.

      --
      Those who trade freedom for security will lose both, and deserve neither" -- Ben Franklin
  9. windows bigots vs unix bigots by Frubjub · · Score: 3, Insightful
    I've encountered too many Unix programmers who sneer at Windows programming, thinking that Windows is heathen and stupid. Raymond all too frequently falls into the trap of disparaging the values of other cultures without considering where they came from. blah blah blah
    Well, if you've ever encountered a windows zealot, from the point of view of a unix person (I don't consider myself a zealot, I just think unix makes my job easier/possible), you'll know that they are even more zealous than the unix zealots. It seems pretty clear what the author's views are.
  10. The usual "C or Perl" thing, then... by Anonymous Coward · · Score: 4, Informative

    ESR: "Whenever possible, prototype in an interpreted language before coding C."

    Hello, Mr Raymond, there are actually quite a number of high-level compiled languages, that will give you most of the convenience of an interpreted language with most of the speed of C. Write your prototype - and then deploy it, because it's already fast and robust enough for everyday use.

  11. Re:How to tell if you are a linux fanatic. by timmarhy · · Score: 4, Interesting

    who's the troll? 1.yes linux has vunerabilities, but how many have been exploitable to the extend of the windows holes? ahh silence... 2. which windows emulator costs $300??? 3. i plug in my camera's usb... it works perfectly i didn't touch a thing, well except to browse my photos of course. the windows software that came with my camera is utter crap and doesn't work 1/2 as well. 4. there is plently of professional usage of linux outside of servers, your talking to one right now, and when was the last time you tried linux' printing abilities, they are excellent. 5. yes windows is hard to understand becuase it's closed source and poorly documented. 6. used K3b? it's easily as good as any win based cd recorder. 7. lets have a race, you install, configure and setup a mailserver/dns/fileserver/ftp server on win2003 and i'll do it on mandrake 9.2. i'll beat your ass becuase i have done both and mandrake takes 1/2 the time. 8. terminal services? x11 is built on a client server model from the ground up, unlike "terminal services which is tacked on, and thats not even getting into the horrendous cost of ms.... however some of your other points i agree with.. ( i am ignoring the obvious troll comments )video, games and multimedia are not as mature on linux. but this is hardly the fault of linux distro's as these technologies are held back by patents and copyright holders who don't have a clue. microsoft had better be careful or they will shut themselfs out and end up as the sad and lonely one looking in.

    --
    If you mod me down, I will become more powerful than you can imagine....
  12. Re:It's all about the shell! by SenseiLeNoir · · Score: 2, Informative

    or if you have a "windows" keyboard:
    + R
    cmd

    takes.. hmm about 2 secs

    --
    Have a nice day!
  13. ha ha by koekepeer · · Score: 4, Interesting

    The very fact that the Unix world is so full of self-righteous cultural superiority, "advocacy," and slashdot-karma-whoring sectarianism while the Windows world is more practical ("yeah, whatever, I just need to make a living here") stems from a culture that feels itself under siege, unable to break out of the server closet and hobbyist market and onto the mainstream desktop.

    i think the article shows a bit of a polarised image. okay, i see the point of OS advocates being too tech-oriented, but we also have some efforts that really try to aim at end users, more or less succesfull. allright, it's not as easy as using MacOSX, but it's quite close in many aspects. and quite usable for the novice, especially in the distributions that try to make it simple (xandros, lindows, etc)

    linux on the desktop? very possible. a lot more likely than the writer of this article would like us to believe IMHO

  14. Re:Bubbling frustration by jonhuang · · Score: 2, Insightful
    The problem that Mr. Sposky doesn't address is... and there is absolutely no evidence that a GUI is an efficient way to handle those problems. Yet rather than use the best currently available tool (the command line and scripts), or devise a better one, Mr. Sposky and the Windows advocates would have us shoehorn every task into a GUI + complex API world.

    If you read the article, you would notice that the ENTIRE POINT was that there isn't one true way of doing things. The secondary point is that some *nix people are pulled into some sort superiority complex.

  15. Re:Separation by js7a · · Score: 4, Insightful
    harder work for "interoperation" etc...

    Interoperation is something Microsoft fundamentally doesn't get.

    Instead of interoperating with published standards, they try to interoperate with Microsoft legacy methodologies (e.g., everything must bee visual basic scriptable.) This is a terrible source of security worm-holes. I wish they would reorganize their visual basic scripting fanatics to Antarctica.

    I make it a point to return any base64-encoded text/plain email to the Outlook-using idiot who sent it, explaining that Outlook is obscuring their email text, along with a list of reasons to switch to another email client and instructions for doing so.

  16. reasons behind attitude by musikit · · Score: 4, Interesting

    some of what i believe is behind this Unix/Windows cultural divide is the elitist attitude. you have to be elite to use unix which just isn't true. as i've seen other people post and i agree with Apple put a pretty picture in front of unix and users aren't complaining why can't other people?

    i personnally don't care what OS i'm using. at home i'm using my computer for video games and sound engineering, so i have 1 up2date windows box for games, and a mac for sound engineering. Why'd i get a mac? because while i'm in the middle of recording a band session i can't turn to the band and say "sorry guys computer crashed i lost the last 3 hours of your work" if windows was stable enough i would be using that. At work is another story though. i write stupid docs and java code so they put me in front of a windows machine. i personnally don't care. although i worry less about my mac then my windows machine.

    My family recently decided to get DSL first thing i did was lock that computer down. i almost went so far as to remove IE with some ie removal tool (XPlite for example) but then i realize this would cause more calls to me then it would solve.

    i also find that people want a brand name. i was asked to "buy" my own machine for work and i went to one of the lesser known computer builders and the price difference was several hundred dollars compared to what they wanted me to buy from Dell. Take a guess what's on my desk.

    A lot of windows users don't care. if you gave them a mac as their first computer they wouldn't switch because they wouldn't know. the example i use alot is "how many people continue to buy automatic tranny cars over stick shift?" neither one is better or worse just a different interface but sticks are slowly getting phased out.

    a lot of people (myself included) need to stop saying "windows is for morons" or "windows is less secure use unix" and start to change our "marketing focus" to something more like "building a more structured and secure tomorrow" like it or not "Where do you want to go today" sold computers, it sold windows and increased his market share. unix needs a "where do you want to go today" why? because no normal computer gives a crap about where the source came from.

    BTW side story i was on a project where the dev team used exclusively solaris boxes. i had to write a code review document. with no MS office on my computer i wrote it in the other thing available StarOffice. i got hounded for several months by a stupid Q&A team because they couldn't find evidence that this "StarOffice Product" even existed. like just goto google and type "Staroffice" in the freaking search box.

    Again just to reiterate my point. people don't care about which OS they run. they want their computer to be like their cars. "if i got someplace else and sit in a car i should be able to drive it". We need to change the marketing strategy of UNIX.

    mod me whatever you like but some of you will think i'm flaming which i'm not. some of you will agree with me. i've said all i wanted to say. thank you for reading

  17. Re:THE WINDOWS/UNIX PATRIOTISM DIVIDE by LordBodak · · Score: 2, Insightful

    Great, but this article is about ESR, a vocal libertarian.

    --
    LordBodak's journal.
  18. Re:It's all about the shell! by jhines0042 · · Score: 2, Informative

    Or just move the darn thing... you're allowed to you know.

    I move my command line shortcut out to the main start menu on every computer that I use (with permission of the owner if that isn't me)

    --
    42 - So long and thanks for all the fish.
  19. both are, actually... by holy_smoke · · Score: 5, Insightful

    Although I understand and agree with your basic point, I would ask that you consider the "product" of a computer and how that relates to average "consumers" need for a tool to make their lives easier/more entertained (because that is, after all, the basic reason why average consumers purchase computers).

    Consumers want a tool to use, whether it be for games, email, finances, or just internet surfing. Quite frankly they don't want to spend a ton of time learning about how to use it, and many don't care how or why it works just as long as it does work.

    The tug-of-war that exists is that computers by their nature are complex and flexible. Consumers by their nature are very insistant on their desires which in include simplicity, flexability, safety, cost, and utility.

    Calling them "stubborn idiots" only highlights the divide of understanding between the computer literate that understand and desire ultimate flexibility, and the average consumer that just wants to use their computer, like a toaster or a vcr or a Sony playstation, without a lot of hastle.

    Somehow the creators (programmers and hardware vendors) need to accomodate for that, because I assure you that the average consumer won't change.

    Although I despise Microsoft's business ethics, I appreciate their dedication to the principle that I mentioned above.

    Linux is in a very good position to make headways in this regard as well, but it will take a fundamental understanding by the programmers and harware teams of said principle to make real headways in the desktop market.

    Anything less will ultimately limit the adoption of Linux to, for example, server, web, and corporate applications.

    "The masses" are what they are, and deriding them for it won't influence them to change, however it will influence them to avoid the product.

    Lets find a way to meet them where they are while preserving the fundamentals.

    --
    Is the juice worth the sqeeze?
    1. Re:both are, actually... by MegaHamsterX · · Score: 2, Informative

      The computer as a typical consumer uses it today will soon cease to exist. It's all going to be embedded devices, just like toasters, but like toasters they need to work everytime.

      MicroSoft's main revenue will come from embedded devices to surf the web, type documents, order pizza (like the iopener), play movies and games, etc(like the home theater stuff)...if they do the correct things in the next few years

      Joe Average, when they live with a TiVo, they like it, they don't know it runs Linux and don't really care one way or another, this is Billys problem, in the end no one really cares what it runs so long as it works, for a recent lesson look at the pull back of Ultimate TV, the supposed TiVo killer.

      Linux (or Unix)has never been the problem, it works the way it should, it can be hidden from the consumer completely, the problem has always been X, its inconsistancies are its problems, they will never be fixed, just another kludge added to the rest making it ever more complicated.

    2. Re:both are, actually... by AJWM · · Score: 2, Insightful

      Precisely. Mod parent up.

      Unix's core value of writing programs for other programmers is precisely because, when the software is intended for the end user, the end user should never realize he's running Unix. The user shouldn't have to care what OS is running, it should just work, transparently. TiVo is an excellent example of this. Numerous point-of-sale systems are other examples. MacOS X for another -- although it makes its underlying Unix available to those that want it.

      Way back in the early days of the BIX (BYTE Information Exchange) conferencing system, when Jerry Pournelle would sometimes go off on a rant about how hard Unix was to use, I would gently remind him that he was actually using a Unix system to post that rant and read my response. (That he was later able to use the Windows-based "Galahad" front-end (one of several) to BIX is a testament to the worth of the Unix value of text interfaces. Try slapping a different GUI over top of one you don't like!)

      --
      -- Alastair
  20. Re:can this guy actually code? by Entrope · · Score: 3, Insightful

    I am not sure why people bother reading Joel Sporsky's weblog -- half of what he writes is tripe, and half is heavily biased by his ego. Someone else quoted Joel's jab at how "the Unix world is so full of self-righteous cultural superiority;" apparently he does not realize that he is an exemplar of the Windows version of the same.

    If I wanted to follow his lead and oversimplify the differences between Windows and Unix programmers, I would say that Unix programmers care about code (period) and Windows programmers care about the quick buck. Mr. Sporsky's crass and half-informed self-promotion is an excellent example. (Ever notice how often he plugs his company and software while griping about software development practices?) I have seen the insides and outsides of commercial applications for both Windows and Unix, and the quality under Unix is generally higher than under Windows.

  21. Maybe, Maybe not... by djbckr · · Score: 2, Informative
    We may be the exception, but our Windows program is written so that us developers can understand our code. Sure, our product is geared toward the end-user, but without solid code it would just fall apart.

    We're in our 14th year of our product. Maintenance and enhancements are the norm. No product is bug-free, but for the complexity of our Windows program, it's relatively easy for one developer to take another developer's code and work with it. We have about 20 developers in our company.

  22. Windows programmers less ideological? I think not. by harmonica · · Score: 2, Interesting

    Most of the article is dead-on when it comes to the different cultures of development. However, the following

    I've encountered too many Unix programmers who sneer at Windows programming, thinking that Windows is heathen and stupid.

    [...]

    It's rather rare to find such bigotry among Windows programmers, who are, on the whole, solution-oriented and non-ideological.

    does not quite relect my personal experience, and I am mostly working in the Windows world (at the moment). The bigotry can be found everywhere, and I've given up on trying to explain the advantages of one culture to people who are claiming the superiority of the other one.

    Let me emphasize what an interesting read the Raymond book is. Very much recommended. Certain issues are too often considered 'common knowledge', although they're not, and the book explains the Unix culture well to those who are interested in technology, regardless of ideology. After all, a lot of things can be used on Windows, too, although they may not be the usual way to do it.

  23. Crossing the Chasm by gargle · · Score: 4, Informative

    For anyone who has ever wondered why more people don't use linux, staroffice, etc, I recommend the classic on technology marketing "Crossing the Chasm" by Geoffrey Moore. It describes the "chasm" which technology companies face in crossing from the early adopter market to the pragmatic, mainstream market.

    The consumers on the left side of the chasm - what Moore terms the innovators and early adopters - enjoy using new technology, enjoy putting things together, have the vision to see the potential of new technology, and are willing to put up with inconveniences in the iterim.

    The mainstream market is pragmatic. It prefers to bet on clear market leaders (so as to minimise risk and benefit from the supporting ecosystem which inevitably grow around the market leader), is willing to wait and see, and needs complete, fully functional, headache-free solutions for their specific needs. Consumers in the mainstream market rely on references within the mainstream market to drive their buying decisions.

    A technology company which wants to transition from the early adopter market to the mainstream market therefore has to bridge this "chasm", and in the process, change the focus of its marketing efforts and adjust its product accordingly. As far as the desktop market is concerned, Unix (with the exception of Mac OS X) is a product which clearly has not bridged the chasm.

    1. Re:Crossing the Chasm by swillden · · Score: 2, Funny

      needs complete, fully functional, headache-free solutions for their specific needs

      So they use Windows?????

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
  24. Documentation??? by nickyj · · Score: 3, Interesting

    MS products and APIs have some of the WORST documentation I have ever seen. They make a point of pointing out the obvious stuff and not even telling you the important stuff. I have been spending time using the MS VSS command lines to write scripts for automation of builds and such. Well the VSS docs are VERY incomplete. They fail to meantion that output may be multi-line for commands that SHOULD come back with a single line. There is also very little information on some of the important behaviours of some of the VSS commands and the errors that come up.

    Some of the best docs I have seen are from Open Source projects. Yes sometimes the docs are incomplete, but at least you have the fall back of being able to LOOK AT THE CODE when it's necessary.

    --
    Causing Chaos Everywhere,
    Nik J.
    The strange world of a loner, in a populous city, drowning in society
  25. I am clairvoyant, and I predict... by Bob+Cat+-+NYMPHS · · Score: 4, Insightful

    This story will be duped at some distant point in the future.

  26. The "silence is golden" rule : Spolsky's error by moranar · · Score: 2, Insightful

    A point I noticed is when Spolsky talks about the Silence is golden rule and gets it all wrong. The rule is complemented by "If a program fails, it should do so in the quickest and noisiest way possible". This rule is also complemented by the possibility of someone else to write a GUI or a text interfase specifically for showing the results of a command.

    This goes without saying that the rule actually means "When a program finishes successfully it should'nt output anything but its normal output. If you say

    ps -ax
    you see all that output, but not a "command finished successfully" afterwards. If you say
    tar -jxvf dir/
    you see the file.tar.bz2 done, not a "hey, here I am!" message. This is well, and does not mean "The program doesn't say anything. And it is possible to add a "clarifying" interfase on top of it.
    --
    "I think it would be a good idea!"
    Gandhi, about Internet Security
  27. notepad by trick-knee · · Score: 2, Insightful

    > but for the most part it comes down to one thing: Unix culture values code which is useful to
    > other programmers, while Windows culture values code which is useful to non-programmers.

    no, the REAL difference between these cultures is that Windows programmers feel that Notepad (even with syntax highlighting) is a perfectly good text editor for source code.

  28. Re:Bubbling frustration by Azghoul · · Score: 4, Interesting

    I think you missed Sposky's point completely, but...

    I believe we need to have "end-user focused" programmers, and I think there are a few sneaking into our world (H Pennington, Miguel de Mono come to mind). They'd be folks who know the "unix way" but focus on the "final" solution: The end app that will be used without piping off to other apps, without having to support connections to 15 other things, whatever. Just what the user needs right then and there.

    There's a dearth of those kinds of apps now, but they seem to be arriving more and more.

  29. Re:It's all about the shell! by telekon · · Score: 2, Insightful

    No, what makes it wrong is the fact that directory separators are used more frequently than switches, and the positioning of "/" on keyboards is way more consistent than the positioning of "\"

    --

    To understand recursion, you must first understand recursion.

  30. Haughtyness by xdroop · · Score: 3, Interesting
    This haughtiness-from-a-position-of-weakness is the biggest flaw of The Art of UNIX Programming (...)

    You know, I had a similar thought when reading this review. Mr. Spolski brings up many of the compare-and-contrast points of unix vs windows programming, and while (in my unix-centric view) most unix points stand on their own, the windows points are rather fluffed up with artificial and (in my unix-centric view) rather unconvincing hand waving. Most of his points seem to boil down to

    • windows does it this way because it is better for users; and
    • problems in windows are due to bad windows programmers mis-using the api
    ...without really being able to explain or justify either statement. So we use the Evil Registry instead of Elegant .rc Files because we want to sell millions of copies of our word processor? Why?

    In the end, Mr, Spolski's review falls into the same category that he would like to pigeon-hole Mr. Raymond's book -- an attempt to be balanced and fair defeated by the author's self-inflicted blinders.

    --
    you should read everything on the internet as if it had "but I'm probably talking out of my ass" appended to it.
  31. My Conversation with Eric Raymond by Ilan+Volow · · Score: 4, Interesting
    About 9 months ago, Eric Raymond came to speak at my LUG. No matter what else I think of him, he's really intersting and a really good speaker. I wouldn't for a moment knock his entertainment value, no matter what else I might have to say about the guy.

    However, there was this one point during this discussing at the dinner before his speech where me and several of the LUG members were talking with him about linux GUI's and the future of the Linux Desktop. Eric Raymond said something about the whole unix system of creating back ends first and then grafting GUI's on to those later.

    My response: "But Eric, most usability experts recommend you design the interface first and then write the code".

    His response: "then they're wrong."

    My response: "But what if there's something that the backend folks didn't think of when they wrote there code that the GUI really needs? Or what if there's something in the back-end that just doesn't work once you add a GUI?"

    His response: "then it needs to be fixed."

    My response: "But what if so much code has already been written that no programmer wants to go back and make all the changes necessary to make it really work?"

    His response: "then we've got a problem."

    It was at this moment I realized two things:
    1. The Open Source leadership is just stuck in command-line land as your typical rabid, BOFH linux zealot, and is just as clueless about designing desktop software and user interfaces. They leaders of Open Source are as desktopically bankrupt as their followers, and it is unbelievably disturbing that people like this are placed in charge of leading efforts to make alternatives to windows for non-technical users.

    2. For Free Software/Open Source to succeed in being a viable alternative for non-programmers, it must be once and for all divorced from the Unix Culture. The concept of freely distributable and modifiable code must be seperated from the concept of The Unix Way.
    --
    Ergonomica Auctorita Illico!
    1. Re:My Conversation with Eric Raymond by Daniel · · Score: 3, Insightful

      Or could you maybe give an example what that should be:
      "But what if so much code has already been written that no programmer wants to go back and make all the changes necessary to make it really work?"


      I can give you one. The APT library (the backend to Debian's apt tools) uses a built-in download manager to fetch packages and other files. So far so good.

      Now, say I'm in the middle of a long download, and I decide I changed my mind about some packages. For instance, I want to install some packages I hadn't thought of or cancel some downloads. There is no way to do this in any interface without cancelling the whole download and setting it up again, and that's because the backend library does not support this functionality. You can access the list of individual download jobs, but there's no way to cross-reference between jobs and the packages to which they refer (aside from decoding URIs to guess what the package is).

      I asked the authors about this, and they said (essentially) that they didn't want to go back and make all the changes. This is probably reasonable -- it's a fairly esoteric feature and could be a pain to get working perfectly -- but it is one example of a place where the backend can limit the frontend.

      I do find it amusing, though, that the author of the article just implicitly assumes that the reverse is not true: ie, that designing the frontend first will never result in arbitrary limitations for the backend.

      Daniel

      --
      Hurry up and jump on the individualist bandwagon!
    2. Re:My Conversation with Eric Raymond by Anonymous Coward · · Score: 2, Interesting

      One thing I've discovered is that end users can rarely explain (1) without thinking in terms of (2).

      For example, I'll generally do a simple screen mockup on a whiteboard (or sometimes static HTML), About 50% of the time the users will say "There should be a button there, and when you press it, [blah blah blah] happens". And it turns out that [blah blah blah] is significant functionality that requires a very different back-end design that I was envisioning.

      There's no way you are going to get that sort of business user feedback from a set of class diagrams or commandline switches. It requires some sort of whiteboarding or "prototype".

      So, I dunno about a Windows programmer (I do web, mainly), but the POV of the Windows User is the GUI and therefore solutions are conceptualized in terms of GUI elements. Makes you understand why VB is so popular.

    3. Re:My Conversation with Eric Raymond by Godeke · · Score: 2, Insightful

      This comment is just silly... point #2 is totaly unrelated to his prior comments as many open source projects are *not* command line oriented. If you think FOSS somehow equals command line, you have not explored very far.

      Point #1 may be valid for your speaker, but most of the open source tools I work with are web based PHP projects. Surely you are not claiming that Open Office is "desktopically (making up words is fun!) bankrupt", and the result of "BOFH" mindsets. Or Gnome and KDE exist because all FOSS creaters hate GUIs.

      If you are going to troll by creating a straw man argument, at least attack one that is credible.

      --
      Sig under construction since 1998.
  32. Wanna see Unix on the Desktop? by dacap · · Score: 3, Interesting

    The cultural values approach produces some interesting insights.

    The obvious stuff:

    1) Coding for other programmers promotes code reuse. Code reuse promotes productivity.

    2) Security is affected by code reuse. It propagates bugs resident in the reused code but avoids bugs that would be introduced should the user have to recode that functionality. The net gain is that, so long as the reused code is in a common library, fixing it once fixes multiple applications. Available source means that more (and fresh) eyes review the common code, improving the possibility of finding the bugs in the first place.

    3) Writing for end users, when done well, produces applications with better usability. Naturally it tends to sell better.

    4) Writing only for end users tends to produce inflexible applications. The user must use the program exactly as the author intended and no other way, unless the programmer takes the higher road. In the first-to-market commercial business environment, taking the higher road is as hard as pushing a rope.

    5) Literate end users is not only a contradiction in terms, it is an unreasonable expectation. Programmers cannot expect end users to learn more than the minimum needed to operate the computer because (1) they see it as a tool to to accomplish their real goal, and (2) The inner workings of the hardware and software do not interest them. Is it reasonable to expect all drivers to understand the inner workings of an automobile, or kitchen users to understand the inner workings of their dishwashers?

    6) If Unix is to succeed on the desktop, it must cater to end users.

    My conclusions:

    1) If we really want Unix to succeed on the desktop, it seems to me like we need cultural fusion. We must pay more attention to end users but without losing the values in the Unix community that produce modular, reusable, secure, reliable code.

    2) This fusion alone is necessary but not sufficient, else Apple would have more market share than it does.

    3) The cultural fusion discussed so far is in the technical world. But IT vendors' companies rest on three pillars: the technical pillar, the business pillar, and the merchandising/marketing pillar. Every company that hopes to put Unix on the desktop would be well-advised to rethink their business processes, standard contracts, and advertising so as to cater to home end users and to give business end users more visibility and consideration. First on my list of business processes to review would be the help desk metaphor. What a universally negative experience!

    What say you, technical literati?

    --
    English -- gotta love it! / The engineers refuse to refuse the rocket until the refuse is removed from the launch pad.
  33. Bottom-up AND Top-down learning together? by Cragen · · Score: 2, Interesting
    I am a "Top-Down" learner. I was able to learn HTML in nothing flat cuz I knew or could see what was I was trying to do. C++, on the other hand, had to be drilled into my head by a prof. over 3 semesters cuz I never got a feel, even yet, for what the heck I am trying to do with it in the real world. (I have yet to use it at work. I look forward to the day.)
    I am now trying to learn Perl (for work) and most sources, again, teach it bottom-up [This is a $calar. This is an @rray.] I wish they would start with [This is how to get perl use a form to ask for a password, submit the form and check the userid/password in a database, return something, and generate the next page, depending on whatever]. I know I gotta understand the foundation but I also have to generate product. I wish I could find somewhere that the two ways of teaching merge so I can generate good stuff AND, eventually, (gasp! maybe by explaining in short phrases even I can get) understand the underpinnings. It's good to have a goal.

    *cragen

  34. Where's the sequel? by biljir · · Score: 3, Interesting

    Excellent article. Now will someone do the sequel, explaining to both sides the much greater rift between the UNIX culture and the (IBM) mainframe culture?

    The world will be a better place when the UNIX partisans understand exactly why the "Those who do not understand UNIX are doomed to revinvent it, badly" quote makes IBM mainframe guys go ballistic. Compare mainframe security to UNIX security sometime for just a hint of what I'm going on about.

  35. Documentation vs Slim to none by Chanc_Gorkon · · Score: 3, Insightful

    I just had a Windows programmer/sysadmin type tell me that all he does is play with the program in question until he figures out how it works. He told me that help files are useless. I on the other hand live by the documentation and everything better damn well be documented or I ain't trying it.....not on my production system. I don't mean the easy stuff either. the more touchy something is, the more I want to read befor I attempt it. Man pages can and do suck, but everyone I have come across pointed me in the right direction. Windows likes to hide things even from the programmer. I don't think thats a correct way even if your writing a program focusing on the end user. If something goes wrong, how do you track it down?

    The registry would not be as bad as it is if it was better documented. I know I know....if you subscribe to MSDN or some other microsoft money scheme, you can read the documentation. Well, users should have access to that if they so want.

    Things like this is why OS/X does well on both fronts. You don't HAVE to look at the commandline ever if your just using it. If you want to write a little script or automate something, the command line is there if you need it. Microsoft on the other hand went so far as to say that Windows ME had no access to the DOS prompt, yet with in a minute of installing it, I had a DOS prompt.

    I happen also to disagree with this guy that UNIX programmers typically write a command line program first. Some do, but I have seen others which are useless without a GUI program.

    Commandline is valued because you can take different command line programs and pipe it here, append to a file there and have a script or program that does what the original writers of each module never dreamed. There's something to be said for that!

    Just one tiny example where the UNIX way ends up being better for users:

    The gpsd project is a project that takes the gps data collected by a serial port and makes it availble not just to apps running on the local machine, but also across a network. The advantage is that if you have programs wrote to work with gpsd, you can use MULTIPLE map programs at the same time each showing your current position. You don't have to juggle the serial port between 2-3 programs if you use one map program because of one reason and another map program for another reason. This has not even been dreamt of yet on Windows and the only way to accomplish it on Windows is using 2 GPS's each on their own serial port. To make the data available to any application that want/needs it, you just configure the daemon to look at the serial port your GPS is connected to and then other programs can get the data from the daemon instead of the serial port.

    UNIX programmers program to work around limitations in the platform and are able to make the platform do what they want to do. Windows programmers will just say that it's not possible or Microsoft does not support it. UNIX programmers say: Nonsense! You are a programmer right? Then write a program or API that does what you want. Some say that this is a weakness, but I say it's a strength that makes UNIX a tool that actually makes it easy to make it do what you want. Some users don't want or need this kind of power, so they are happy with Windows. The ones that need it turn to Linux or UNIX.

    --

    Gorkman

  36. *nix bears a double burden that MUST be dealt with by DoraLives · · Score: 3, Insightful
    Until some "benevolent dictator" comes along and FORCES ALL *nix's to look and act sufficiently similar to an end user of average or even less than average intelligence, *nix will be going more or less nowhere in the grand scheme of things.

    Is this bad enough news? No.

    Furthermore, until the same "benevolent dictator" FORCES ALL *nix to employ the use of focus groups, user feedback, and other methods of optimising the UI to suit the needs and wants of the AVERAGE JOE, ALL *nix will continue to suffer a host of maladies from merely looking clunky up to and including full incomprehensibility to the guy we're trying to promote this stuff to.

    Apple came a gnat's whisker from pulling this double burden off, but because they run a MORE EXPENSIVE machine that is NOT COMPATABLE with the Great Shoal of Computers, they failed.

    Proceed with the downmodding children, I can take the hit.

    --
    Is it fascism yet?
  37. Know Them By Their Injuries by 4of12 · · Score: 4, Funny

    that Windows programmers hurt their arms and wrists after clawing their way through one too many pull-down menus while Unix programmers hurt their pinky fingers after a heavy emacs session in the world of Control Meta.

    As a result, Windows programmers have spastic arms from all this GUI action, looking like zombies from Night of the Living Dead, while UNIX programmers have hands curled up like Igor from Frankenstein's Lab.

    --
    "Provided by the management for your protection."
  38. Re:Binary libraries by GbrDead · · Score: 3, Insightful

    Three years ago I had to do something very simple with Microsoft's Crypto API. It has two layers: high and low. The high level functions did some common tasks, though totally non-customizable. So I had to use the low level ones. The documentation was vague. Only if they have published the high level functions source, me and the company I worked for would have saved a month. Or maybe I'm mentally retarded. So here is another example: IFS kit. It costs $1000, and it comes with 0/zero/none/not a single line of documentation about writing network file system drivers! Don't get me wrong - I don't like reading Microsoft code (the MSDN "examples" are just enough!) but if I had the source code of the relevant parts of the IFS kit, I would have finished that stupid task a month ago. Now, we're waiting for some preliminary documentation which is to come after 2 months. And 6 years after the first version of the kit... So, poorly documented open-source libraries may suck, but poorly-or-not-documented-at-all Microsoft libraries sick a lot more!

  39. It's time for a change. by hey! · · Score: 3, Insightful

    I agree.

    That is not to say however that my home machine doesn't need security, especially as the world becomes more networked.

    Password based security is the most nightmarish of security scenarios: a partial success. Successful enough for people to rely upon, successful enough to impede the adoption of better approaches, but not successful enough to provide the security and convenience people need. Some people do OK with them but they're a tiny minoritt. Upgrading humanity is not an option. Indeed I suspect that the majority of computer "experts" would fail if audited according to strict password management standards.

    The problem is that passwords are an ugly hack that were adopted when the problem was less severe and the stakes were lower. They're a huge Achilles' heel.

    Personally, I think a key like device like an iButton would be much better. It's intrinsically more cryptographically secure than a memorizable password, as well as practically more convenient to manage in a secure manner. In high security apps the key device could be enhanced with biometrics or even password protection, approaches that are insufficient on their own but could thwart casual, opportunistic reuse and buy time for privilege revokation if the hardware key is stolen. The very fact the hardware key must be physically taken away from its users is a huge advantage. Passwords can be "stolen" without their owners knowing.

    --
    Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
  40. Re:can this guy actually code? by awol · · Score: 4, Interesting

    "They don't like GUIs much, except as lipstick painted cleanly on top of textual programs, and they don't like binary file formats. This is because a textual interface is easier to program against than, say, a GUI interface"

    This is so naive as to be laughable. The thing that soooo many windows programmers do not understand is that the "text" based paradigm of the UNIX world is exactly that a paradigm and the metaphysics of that paradigm are so deeply ingrained in the approach to programming that the real benefits are often underestimated. If I write a command line program, I need only understand 4 interfaces stdin, stdout, stderr and argv and only half of them are readable! Within that, we have lines and whitespace as standard concepts, again trivial to grok.

    As a programmer it is up to me to present my output in the format understood by the stdin/argv scanner of the program I want to call and the process by which I can discover that format is of varying difficulty based on the complexity and quality of the program I wish to call, but generally pretty simple process nonetheless.

    The next generation of interaction between programs (or lets call them objects) requires a huge leap in complexity. It is this next generation paradigm that many windows programmers would claim to use. But for it to work, the self discovery of those input and output formats and some standard nomenclature to allow them to communicate with each other to make the discovery is required. For example, my spreadsheet program may have many different inputs, a clipboard, a file interface, a dynamic data interface etc etc and its outputs might be equally complex, but the critical thing is that it must be able to tell my data capture program that it is a spreadsheet stlye application and that phrase "spreadsheet" style application must make as much sense as a "stdin/stdout" style application makes today. Whilst I agree with this posters point about creating an object, and then using a GUI to call it, the point is somewhat moot since the discovery process means that in the Object focused world there is no capacity for this communication to take place and so the programmer is left with the task of doing all the mapping between objects since a "data capturey" type object doesn't really grok the metaphysics of how to present to a "spreadsheety" type application. Now, don't misunderstand, I am not suggesting that UNIX can do this any better, but the paradigm under which a unix programmer operates understands something about the metaphysics of how applications talk to each other and so the UNIX programmer will think in a reuse/talking to other programs kinda way to a level, even if it is at, overall, a lower level of functional richness, that a windows programmer cannot really hope to emulate.

    $0.02

    --
    "The first thing to do when you find yourself in a hole is stop digging."
  41. Article ~= tiny subset of ESR's book by Medievalist · · Score: 3, Informative


    Read the article (I know, it will be hard to force yourself to do so if you are a slashdot regular :)) and then read this chapter from TAoUP.

    I don't know if Spolsky didn't read this far, or if he's just a weak plagarist, or maybe this is the only part that made a big enough impression on him to merit rephrasing for his own column.

    The only difference I see is POV, and substitute "mac" for "windows".

  42. Re:Separation by GlassUser · · Score: 2, Informative

    Instead of interoperating with published standards, they try to interoperate with Microsoft legacy methodologies (e.g., everything must bee visual basic scriptable.) This is a terrible source of security worm-holes. I wish they would reorganize their visual basic scripting fanatics to Antarctica.
    It's called automation. It's not visual basic, it's WSH (which encompasses vbscript, but not visual basic). You would do well to learn about something before you decide to hate it.

  43. Re:The essential difference by heironymouscoward · · Score: 2, Informative

    Yes, you guessed correctly, it was a clustering environment.

    It was a _huge_ project, trying to deliver a web-based front-end to an existing system. The ticket was around 150m Euro.

    The architecture basically fell apart about 75% through the project. I guess around the time they stopped making use cases and actually tried to scale the prototypes up to work on their clusters. The support calls to Microsoft went very high and it was an engineer from the bank who finally discovered the real problem, apparently. The COM+ developers and the MSMQ developers knew their own products very well but were unable to figure out what was happening between the two.

    The project was cancelled and I believe it was not redesigned - the economic crisis meant that the company had to cut back.

    Needless to say this kind of experience made the company somewhat cautious about using MS products for anything serious after that. I don't know whether they tried an alternative, most of the business runs very successfully on the classic mainframe model (COBOL, CICS, MVS, etc.)

    --
    Ceci n'est pas une signature
  44. Re:can this guy actually code? by 11223 · · Score: 4, Insightful
    Ugh, no. Your approach leaves out the single most important factor in designing a GUI interface to a program - error handling. When your backend program gets confused, or goes off into an infinite spinloop, your GUI frontend simply becomes confused too - it won't pop up an error; instead, it may pretend to work, or it might hang waiting for a response from the program.

    There are two ways to solve this - bring the functionality into the same address space as the GUI (so if it hangs, force quitting won't leave the confused backend around), or use a network-style protocol with a defined ping/pong approach, and when the backend fails to ping, kill it.

    But text-based interfaces are always fragile. Just look at any of the millions of cdrecord frontends out there. They never quite work properly, because cdrecord-of-the-week always has some new diagnostic message, or error, and the program gets confused.

  45. Re:Bubbling frustration by sphealey · · Score: 3, Insightful
    I think you missed Sposky's point completely, but...
    If you read the article, you would notice that the ENTIRE POINT was that there isn't one true way of doing things. The secondary point is that some *nix people are pulled into some sort superiority complex.
    The cultural schism is so sharp that Unix has never really made any inroads on the desktop. Aunt Marge can't really use Unix, and repeated efforts to make a pretty front end for Unix that Aunt Marge can use have failed, entirely because these efforts were done by programmers who were steeped in the Unix culture.
    Well, I actually did read the article. Although over breakfast, and of course not as deeply as I would have like. Then again, reading deeply is against the Slashdot Code of Posting anyway ;-).

    However, as the snippet from the original article above shows, I don't think my interpretation is entirely (if at all) incorrect. Mr. Sposky seems to me to be saying that the Unix metaphor is "less usable" to "Aunt Minnie" (pretty insulting, BTW: my Aunt Minnie was programming calcuating machines before Mr. Sposky was born, but that's another topic) due to its inherent nature.

    I am observing that the Windows metaphor works great for the first 2-3 years, but then the end user runs into a brick wall where he can't do what he wants, doesn't know why, and has no tools or path at his disposal to move forward. I have seldom seen a person who grew up in the Unix (or VMS, or TOPS-20) metaphor hit that same wall and not be able to figure out a way around it. It was primarly my Unix and VMS background that allowed me to figure out how to make Microsoft LAN Manager 1.1 actually work, for example, when the Microsoft technicians were clueless (another long story).

    sPh

  46. Re:Separation by js7a · · Score: 4, Interesting
    It's called automation. It's not visual basic...

    Yeah, it's also called Melissa and several other names.

    Why automation is considered more important than security is one thing, but why do people feel the need to defend that wierd choice of values? Do people who grow up on this stuff and never learn software tools (unix) methedologies really think WSH is an interesting technology?

  47. Re:Crossing coming to a Chasm near you ... by gargle · · Score: 2, Interesting

    but if you forgive me mixing my metaphors the Innovators Dilemma tells us that you can cross the chasm in a series of steps ...

    it raises its profile on emedded devices home users will become more comfortable with the idea of a Linux desktop. Similarly as corporates become comfortable with Linux in their server racks, more and more of them will consider the possibility of deploying Linux desktops, perhaps starting with places like call-centres where they don't need a fully-fledged Windows rollout.


    Certainly, the chasm can and should be crossed in a series of steps. This is exactly what Moore recommends. More precisely, he recommends establishing a beachhead by gaining control of a niche market. However, this niche market has to have certain characteristics - most crucially, it has to be part of the mainstream market in the first place i.e. other mainstream buyers must reference, trust and rely upon the recommendations made by buyers in this niche market in their purchasing decisions.

    Is the embedded device market or server market a market which desktop users will reference in their purchasing decisions? I don't think so.

    I'm probably oversimplifying the approach laid out in "Crossing the Chasm". Again, I highly recommend this book.

  48. Related topic: UNIX and Mac users by ziggyboy · · Score: 2, Insightful
    I can relate to this article though not just with Windows programmers but with OS X users as well.

    I'm both a UNIX programmer/user and a Mac user. I have a friend who's the average Mac advocate around...which means NOT a UNIX programmer. Though we both love OS X, we do have conflicting views about UNIX. I see UNIX among all things as an excellent development platform and he sees Darwin as just a secure foundation for Aqua. He also looks at open source from a regular users' point of view...and not as a programmer...which really makes all the difference if you think about it. The open source movement is a pro-programmer movement.

    I think Apple has recently been trying to get more developers for OS X (though ProjectBuilder or XCode) because traditionally Macs aren't programmer-friendly. I'm a programmer. I love programming and once in a while I make small applications for UNIX and the Windows prompt (if they're ANSI and easily portable to Dev C++). Sufficive to say (man that sounds too Star Trek), I've only started compiling these small apps to the Mac now that they have Darwin (and GCC!!!). There are now 2 major cultures using the Mac at the moment. The UNIX people, and the "I'm just better than you are because I use a Mac" people (the classic Mac crowd). When I first got my iBook a few months ago, I registered in a local Mac forum. I eventually stopped posting simply because of cultural differences.

    Apple is attempting to bridge these two cultures mentioned below (taken from the article).

    How did we get different core values? This is another reason Raymond's book is so good: he goes deeply into the history and evolution of Unix and brings new programmers up to speed with all the accumulated history of the culture back to 1969. When Unix was created and when it formed its cultural values, there were no end users. Computers were expensive, CPU time was expensive, and learning about computers meant learning how to program. It's no wonder that the culture which emerged valued things which are useful to other programmers. By contrast, Windows was created with one goal only: to sell as many copies as conceivable at a profit. Scrillions of copies. "A computer on every desktop and in every home" was the explicit goal of the team which created Windows, set its agenda and determined its core values. Ease of use for non-programmers was the only way to get on every desk and in every home and thus usability uber alles became the cultural norm. Programmers, as an audience, were an extreme afterthought.

  49. Various slashes, a history lesson by Medievalist · · Score: 2, Interesting


    The slashes go "the wrong way" (hmm, any explicit biases there?) because the switch syntax was copied from CPM, the dominant microcomputer OS at the time. CPM in turn copied it from DEC's PDP operating systems (like RSX-11, TSX-11, RT-11, etc. etc. etc - the VAX/VMS system also inherited this syntax, incidentally, along with DCL (Digital Command Language) which is the direct descendant of CCL (Concise Command Language) and RSX Indirect).

    A stupider paradigm is Unix's re-use of the directory separator as the name of the root directory; there are some efficiencies of notation and processing that this provides but it's really profoundly counter-intuitive. It's actually worse than the exposed numeric MFD of VMS (which is also stupid, but at least it forces one to understand the mechanics of the filesystem).

    1. Re:Various slashes, a history lesson by Aidtopia · · Score: 3, Informative
      VAX/VMS system also inherited this syntax

      I don't recall slashes of either variety in VMS file specifications. They used square brackets and dots, like: "DEVICE:[AIDTOPIA.SLASHDOT]COMMENT.TXT;3". I know lots of people hated this syntax, but I found it quite expressive. For one thing, it was easy to distinguish between a directory listing ([FOO]) and the file which stored the directory information (FOO.DIR).

      Perhaps they started allowing slashes for POSIX compliance. That was about the time I (sadly) left the VMS world. I recall DEC claims at a DECUS symposium that VMS was the first OS to achieve POSIX compliance, which was quite a feat since it was so non-UNIXy to begin with.

    2. Re:Various slashes, a history lesson by pHDNgell · · Score: 2, Insightful

      The slashes go "the wrong way" (hmm, any explicit biases there?)

      In how many programming languages is \ not a special character in strings? MS uses C++ quite a bit, where you can't type stuff like ``/usr/local/etc'' in your apps.

      URLs use /

      / is generally found in the same place and is otherwise typed less frequently.

      Hell, slash is easier to say than backslash.

      Combine those, and you get the confusion I've seen many times of people typing ``http:\\blah'' or trying to read out some large path on a Windows system, usually starting with \\ to access a remote share and having to say ``backslash backslash data backslash stuff'' vs. ``slash slash data slash stuff.''

      That it's even called ``backslash'' should be an indicator. When was the last time you saw a document use backslash as a separator for anything?

      --
      -- The world is watching America, and America is watching TV.
    3. Re:Various slashes, a history lesson by rduke15 · · Score: 3, Interesting
      The slashes go "the wrong way" [...] because the switch syntax was copied from CPM [...]. CPM in turn copied it from DEC's PDP operating systems [...]

      Reminds me of the the famous story about the origins of the US railroad gauge:

      The US standard railroad gauge (distance between the rails) is 4 feet, 8.5 inches...an exceedingly odd number.

      Why was that gauge used?

      Because that's the way they built them in England, and English expatriates built U.S. railroads. Why did the English build them like that?

      Because the first rail lines were built by the same people who built the pre-railroad tramways, and that's the gauge they used. Why did "they" use that gauge then?

      Because the people who built the tramways used the same jigs and tools that they used for building wagons, which used that wheel spacing.

      Okay! Why did the wagons have that particular odd wheel spacing?

      Well, if they tried to use any other spacing, the wagon wheels would break on the old long-distance roads in England, because that's the spacing of the wheel ruts.

      So who built those old rutted roads?

      Imperial Rome built the first long-distance roads in Europe (and England) for their legions. The roads have been used ever since.

      And the ruts in the roads? Roman war chariots formed the initial ruts, which everyone else had to match for fear of destroying their wagon wheels. Since the chariots were made for Imperial Rome, they were all alike in wheel spacing.

      The U.S. standard railroad gauge of 4 feet, 8.5 inches is derived from the original specifications for an Imperial Roman war chariot. And bureaucracies live forever.

      So the next time you're handed a specification and wonder what horse's ass came up with it, you'll be right, because the Imperial Roman war chariots were made just wide enough to accommodate the back ends of two war horses.

      Now an additional irony to the story...

      When you see a Space Shuttle sitting on its launch pad, there are two big booster rockets attached to the sides of the main fuel tank. These are solid rocket boosters, or SRBs. The SRBs are made by Thiokol at their factory in Utah. The engineers who designed the SRBs would have preferred to make them a bit fatter, but the SRBs had to be shipped by train from the factory to the launch site. The railroad line from the factory happens to run through a tunnel in the mountains. The SRBs had to fit through that tunnel. The tunnel is slightly wider than the railroad track, and the railroad track, as you now know, is about as wide as two horses' behinds.

      So, a major space shuttle design feature--of what is arguably the world's most advanced transportation system--was determined over two thousand years ago by the width of a horse's ass. ...and you thought being a horse's ass wasn't important.


    4. Re:Various slashes, a history lesson by Mr+Z · · Score: 2, Interesting

      Given that so many things end up with non-relative paths, I find device roots to be rather annoying. A program shouldn't care if "\Program Files\FooBarBaz" is on C: today and D: tomorrow, or that "\Program Files\Foo" is on C: and "\Program Files\Bar" is on D:, or F: for that matter.

      Real symlinks would go a long way here, but only as a kludge. They'd allow you to simulate a single-rooted file hierarchy inside of a multi-rooted hierarchy. Fundamentally programs should not care where their physical storage is, only where it is in the namespace. Exposing the physical devices in the namespace requires programs to take note of it, and makes it harder for you to upgrade or change configurations later.

      --Joe
    5. Re:Various slashes, a history lesson by dkemist · · Score: 2, Funny

      Thankfully slashdot wasn't spawned from the VAX world.



      Think of colonbracketsemicolondotcom.com

  50. X is not the problem by oddtodd · · Score: 2, Informative

    X is a protocol, you are referring to the programs
    written that use X, ie. Gnome/KDE.
    try running fluxbox for a window manager and watch
    your machine r0x!

    --
    I have plenty of common sense, I just choose to ignore it. -- Calvin
  51. Because, of course, all boxen are networked by krysith · · Score: 3, Insightful

    I don't believe the grandparent post referred to their computer as being attached to a network. It has become a pernicious assumption that all computers are networked these days. I have a non-networked computer, and although it is behind locked doors, I use a password on it just for peace of mind. However, I find the recently common assumption that all computers are networked to be a real pain. Ever tried working on a program where all the documentation is html links? Not easy when you are on an isolated computer. It has become so bad that software boxes have as the computer requirements something like: Pentium 200 Mhz or better, 128MB RAM, at least 1 GB Hard Drive space, etc. but neglect to mention that Internet connectivity is required for use. Not everybody uses their computer as a websurfing device. It is still true that the most secure computer is one which is not attached to a network. You can try to tunnel into the computer I am typing this from, but I dare you to get the data on my other one!

  52. Re:can this guy actually code? by Khazunga · · Score: 3, Insightful
    i would say that textual interfaces were more popular before bandwidth started becoming readily available. the rise of bandwidth has seen a rise of GUI applications because it is quite feasible to VNC from home->work and to run GUI. before ADSL it was a pain in the arse and using textual interfaces was fast and convenient.
    That completely misses the point of a textual interface. When Unix people talk about textual interfaces, the important interface isn't the user-interface. It's inter-application interfaces that really matter. Unix applications don't talk to each other via strange, binary, unreadable protocols such as Corba, COM, DCOM, COM+ or whatever MS is selling these days. They talk text. Simple, human readable, text. Stuff that I can probe and poke and dismantle. Stuff I can disassemble and assemble together again. I can pick and match little utilities to process data the way I want to.

    Take cdrecord. cdrecord does the same stuff that the windows cd-rom recording libraries do: write a cd-rom. How do you feed the windows libraries data to write? I don't know. Are they self-documented? Nope. How do you feed cd-record? The most obvious way: give it an image to write via stdin:

    cat image.iso | cdrecord

    If I didn't know this, cdrecord --help tells me what to do. man cdrecord has a longer explanation with examples. I can get the application, usable by end users, and place it inside my backup scripts. Do this with the windows libraries or Nero or some other burning application. Tell me how long do you have to sift through documentation to do this: Find a way to backup a disk partition to a cdrom using the windows libraries. In any unix, this is something like:

    cat /dev/sda1 | cdrecord

    Will a end-user have trouble using command line cdrecord? Naturally. But cdrecord is a core application, which shouldn't be used by end users. That's what the Rule of Separation is about. Grab krecord or something like that, and use it.

    --
    If at first you don't succeed, skydiving is not for you
  53. Joel is off base. by Lodragandraoidh · · Score: 3, Interesting

    The very fact that the Unix world is so full of self-righteous cultural superiority, "advocacy," and slashdot-karma-whoring sectarianism while the Windows world is more practical ("yeah, whatever, I just need to make a living here")... - Joel Spolsky

    I have subscribed to Joel's mailing list for several years, and have programmed on both sides of the fence. Joel paints a black and white picture of the differences between Unix and Windows - which I must say, is not true. I have to disagree with Joel's oversimplification because he has made the same mistake that he accuses ESR of making: namely that his own monoculturalism has clouded his view of Unix programming. Anytime someone makes a statement that starts with 'the very fact', you can be sure there is less fact and more conjecture than the writer is willing to admit.

    The key error in his analysis is narrowly defining the Unix program as being a command-line 'mostly' affair that doesn't tell 'Aunt Madge' when it succeeds. This is not exactly true; while it is true of strict command line applicatioins (which Aunt Madge will not use anyway) - the GUI interfaces do not follow that formula - and programmers are free (not constrained as he would suggest) to build interfaces that meet whatever needs an end user may have - whatever their skill level.

    Just because 99% of the end users are familiar with and resist change from the Microsoft GUI does not mean that it is the best UI - it just means that people did not have much of a choice from the beginning (there were only one GUI for PCs back in the late 80s - Windows; the other major GUI was tied to the Apple Macintosh). While the Windows GUI stagnated over the 1990s, the Linux world exploded and a plethora of user interface ideas have surfaced that are effecting the new Windows interface. Same story (DOS - a rip of CP/M), different day ("yeah, whatever, I just need to make a living here").

    He also touches on, but does not explore with a self critical eye, the limitations imposed by not having source code. The dependence of Windows programmers on Microsoft APIs provides too many limitations, and increases the likelyhood of unforseen interactions that cause bugs. He whitewashes these issues by simply focusing on the size of the Windows desktop deployments vs. *nix.

    The reality is a *nix developer has all of the options available to him; he is not constricted by artificial barriers; a Windows programmer is at the mercy of Microsoft - who can change APIs at the drop of a hat.

    His quote above really hits the nail on the head: the Microsoft monoculture is about money above and beyond any moral considerations. I would much rather be a "slashdot-karma-whore" than a Microsoft-whore. From his writings over the years it is plain that he absorbed the 'money is good no matter how you get it' mentality during his stint at the company.

    --

    Lodragan Draoidh
    The more you explain it, the more I don't understand it. - Mark Twain
  54. Re:Command line? Hell, how about process? Security by markcic · · Score: 2, Funny
    ...(we print checks dammit!)...


    Would you mind sending me your IP? I'll send you a check.
  55. Effort to refactor the back end? by tepples · · Score: 2, Insightful

    "Or what if there's something in the back-end that just doesn't work once you add a GUI?"

    His response: "then it needs to be fixed."

    I think the point of his response here is that it can be fixed by refactoring the back end and that he finds the effort to refactor the back end not nearly as great as you imagine.

  56. Re:Command line? Hell, how about process? Security by KilobyteKnight · · Score: 2, Funny

    My only hope is that slowly, without forcing him, he will see that there is something behind my comments and tips. Maybe a light will go on, and he will decide to take a look.

    It sounds to me like you are trying to get fired. But, since I am looking for a job at the moment, what company are your working for?

    I'm willing to get paid to sit around letting the system fall apart -- then heaping all the blame on the boss. That works for me... it's a built-in promotion.

    Once the boss is out of the way, I can fix the stuff... built-in raise + respect from upper management.

    Once I have acheived that state, then I can coast to retirement... built-in retirement plan. This part, of course, requires hiring people to do the actual work... and you'll need a job. I could probably talk them into rehiring you.

    --
    When will Windows be ready for the desktop?
  57. Re:Separation by Zeinfeld · · Score: 2, Insightful
    Why automation is considered more important than security is one thing, but why do people feel the need to defend that wierd choice of values?

    The problem has nothing to do with automation. The problem is that some idiot made a program that would execute an arbitrary script sent in email.

    This type of idiocy is not unique to windows. I have seen people do exactly the same thing in UNIX. They just did not make it to the UNIX core because that has barely changed in twenty years.

    So the argument that UNIX is good security wise starts to look remarkably like the argument that a stopped clock is right twice a day.

    UNIX has a set of security pathologies all of its own. The UNIX designers did not take security seriously, they were developing a single user computer with multi-tasking capabilities. The main features they left out from MULTICS were the security core. Heck, before Dennis Riche and C, buffer overrun bugs basically did not exist. There is no O/S before UNIX that was vulnerable to smashing the stack.

    Eric seems to understand that there is a culture gap between UNIX and Windows but he really does not understand the Windows side of it. The point of Windows is that it is deomocratizing computing, making it available to the masses. This is of course precisely the reason why so many die-hard UNIX priests hate windows.

    We got the same attitude with the Web. There were a lot of IETF people who really hated the idea of the Web because it was bringing AOL users and other worthless beings to the Internet.

    I have seen plenty of folk clinging to the most ludicrous O/S imaginable. There are few enviroments more pathetic than MVS, but you will find lots of aged COBOL types defending it.

    One of Freuds ideas was projection, highly ideological groups project their own internal failings onto the percieved enemy. The big problem with OSS is that it has spent the past ten years copying an O/S that was obsolete when they started so they attack Microsoft for their own sin - copying.

    --
    Looking for an Information Security student project suggestion?
    Try http://dotcrimeManifesto.com/
  58. Sucky... compared to what? by Moraelin · · Score: 5, Insightful

    No, seriously? Windows GUIs suck... compared to what?

    Compared to X? The same X where every single programmer just _has_ to use a different layout, different shortcuts, different menu structure, and for bonus points his own widgets? And where 90% of the GUIs were never even tested in any other resolution or font size than what the developper had? (Here's a hint: 100 DPI fonts are an X standard for a long time now.) And where every app is configured in a different way? And in some cases (e.g., IceWM), contrary to common sense, the changes you do through the menus aren't even saved, and you have to launch a different application to configure your start menu?

    Sorry, from the end user point of view, it's the Unix GUIs that suck big time. They suck like an industrial vacuum cleaner. They suck like an expensive hooker.

    They're made by geeks, for geeks. And religiously defended by hordes of flaming trolls, ready to insult everyone who dares doubt their idol's wisdom.

    What a non-geek user expects is to learn some skills once, and apply those skills again and again. It doesn't matter if you have some cute unique idea. He just doesn't want to have to learn a whole new set of skills for every single program.

    He wants that if in Word CTRL+X is "cut", then in every single program it's still "cut". He wants that if F1 is "Help", then by God, it better be "Help" in all programs. And if one program's scrollbars behave in one particular way, then it better be the same way in all programs.

    For you discovering how yet another widget set works might count as fun. For Joe Average, it counts as a waste of his time. He'd rather do something else in that time. Like be done sending that e-mail, grab a beer and watch TV, instead of still being at discovering how it works.

    And yes, the Windows developpers know that it pays to care about the paying customer. That means, yes, caring about Joe Average who's using those programs. Thinking how you can help Joe Average do what _he_ wants, instead of making it all an exercise in programming for your own ego.

    And until more of the Linux crowd discovers the same thing, I just can't see Linux making it big on the desktop. Sorry.

    --
    A polar bear is a cartesian bear after a coordinate transform.
    1. Re:Sucky... compared to what? by waveclaw · · Score: 3, Informative

      No, seriously? Windows GUIs suck... compared to what?

      Compared to X? The same X where every single programmer just _has_ to use a different layout, different shortcuts, different menu structure, and for bonus points his own widgets?


      Not to make you sound like a newbie in the world of computing, but what you are railing against isn't the 'ease of use' of UNIX/GNU/Linux GUIs.

      Many, many people fall into this trap. What you are proposing is the adoption of something both unessecary (and in many cases) Evil, Bad and Wrong. This thing is called an SAA CUA. They were practically invented by IBM in the 50s and 60s. These ideas are simple: do something one way and only one way.

      From the user's perspective, this is okay. I only have to learn quaduple-double-bucky-shift-Q to print once.

      From the UI designer's point of view this is crap. Look at video games. Many custom, learn once and use once indterfaces. Games deal with this by being on the cutting edge of computer-assisted education. They have dollars and reputations staked in 'playability' and 'ease of use' so they do the Right Thing.

      Wrong Thing: pick standard, crappy global contants, enforce those on everyone. Aribitrary user interfaces are just as bad as random interfaces.

      Right Thing: common core behavior in frameworks that act AS EXPECTED, customized application interfaces to the TASK that the application SOLVES or DOES. Show and Walk users through the non-standard parts with HOW-TOs, demos and trainers.

      The Right Way is more work for the lazy, boring person who wouldn't write documentation anyway. The Wrong Way means that you probably will guess correctly on the first try, but the application programmer still didn't do his job.

      This is a very important sticking point with the Aunt Mable newbie computer user argument as well. If good ol' Auntie has never used a computer, learning a KDE (GNOME) desktop or the UNIX command line will be as EQUALLY challenging as learning a WIMP like Windows. MACs were/are easily learned because of some UI choices that favor new users without bothering experienced users (of those UI's).

      Finally, like in the world of video games, with the diversity of UIs in Linux/GNU/Unix I can select those features/interfaces that work best and use them. With a system like Windows, some people won't buy/sell your software unless is meets the criteria in the SAA CUA.

      I appologise for the grammar. I need more sleep and less Trolls.

      --

      "You cannot have a General Will unless you have shared experiences. You cannot be fair to people you don't know."
  59. Re:can this guy actually code? by Permission+Denied · · Score: 2, Insightful
    cat image.iso | cdrecord

    cat /dev/sda1 | cdrecord

    UUOC. Instead,

    cdrecord < image.iso
    cdrecord < /dev/sda1
  60. Re:Separation by tntguy · · Score: 2, Funny

    Hey now, less works on Windows, too.

  61. from a former windows nut by 1eyedhive · · Score: 3, Interesting

    I used to be a 100% windows user, ntil i put together, with the help of the local linux guru/LAN party hosting guy, a linux based file server, i needed RAID, didnt have a controller card and had no use for a gui on a headless box.
    the box was red hat 8.
    in the past 9 months i've become much more intimatly familiar with *nix. My router is linux, and i just deployed two new boxes, one of them a dual boot with Win2k (for gaming). Only one of the three nix boxes has a GUI, and that right now is KDE. Granted it's a bit klunky compared to Win2k's, in fact ir reminds me more of Windows 95's desktop. Win2k's file manager/web browser/ftp client combo is nice, just type in a different address, but it has many, many, many bugs and holes.

    I toyed with the idea of setting up a nix box for my parents, just mozilla, evo and OO.o. until i found out that they needed Quicken 2003 (Crossover didnt deliver).

    In any case, I like nix better for some things, windows for others. Is nix suitable for use by the general population? no. it took me 6 months to shake windows logic, the gneral populus would keel over and die, at the least they'd be screaming mad.

    --
    Logistical Chaos Officer http://www.slagg.org - LAN Gaming in Sarasota FL,USA
  62. Windows vs. UNIX programming by luwain · · Score: 3, Insightful

    I have extensive experience "programming Windows" and programming "UNIX" [ I live and work "without prejudice"], so I've moved between and am comfortable in both "cultures". Interestingly enough, I find that the cultural divide is much more pronounced now than 20 years ago (20 years ago, did anyone program exclusively for Windows? -- the platform was a joke...). I think that because the Windows SDK is controlled by Microsoft, it's more difficult to do really insightful programming for that platform. So much Unix and Linux stuff is "open", that programmers involved in that culture are exposed to more "inner workings", etc... Where programmers have ONLY used Microsoft's Visual Studio and have ONLY produced end-user, non-programmer apps, their skills I feel are limited. UNIX programmers can certainly produce apps for non-programmers (Open Office, Gimp, KDE etc...), but I think that "Windows Cultured" programmers cannot as easily develop "programmer's tools". I don't think it has as much to do with "culture" as much as "depth and varity of knowledge."

  63. My estimation of ESR has gone up by Anonymous Coward · · Score: 2, Interesting

    I agree with ESR here. In fact, my estimation of him as a programmer has gone up a good deal based on his answer.

    If you design the UI before you write the program, chances are you are writing the wrong program. It is not possible (except in trivial circumstances) to find all your requirements up front. Any attempt to do so will result in oddly behaved programs. By thoroughly understanding your problem domain (using less than finished UIs) you have the best chance of eventually creating a decent UI.

    If you get the problem domain wrong when you are creating the back end, you have less cultural baggage to contend with when you change it. Changing UI is difficult, because people get used to what they had. Even if it is arguably wrong, chances are people won't want you to change it. They could care less if you change the back end. Therefore, if the back end is broken, fix it. Easy as pie. If the front end is broken, you're in a world of hurt.

    Now for the last point, which indicates that ESR really knows what he's talking about. If you've already written so much shit in your back end that no-one wants to look at it, you may as well go shoot yourself. You are well and truely fucked. Because if you can't change your back end, your program is dead. This is true of all programs. If you are afraid to change it, you can no longer work on it. The solution? Create a culture where change is good.

    Don't know why I'm writing this. The story's old enough that no-one will probably look at it. Oh well.....

  64. Re:Separation by DrSkwid · · Score: 2, Interesting

    A Universal Computing Machine is a white elephant.

    The idea that there is one true O/S is ludicrous.

    I cling to plan9. 256 colours, no multi-media, I can't even play mpegs on it.

    It doesn't have a web browser worth using.

    It has no RDBMS or a dedicated file browser.

    No icons. No buttons.

    http://www.proweb.co.uk/~matt/screeny_dec_03.gif

    But it suits my computing needs for doing work.

    Windows isn't reviled because it is used by common people.

    --
    There are places where the networks are not touching,and there are places where they are-Boeing's Lori Gunter
  65. Re:The essential difference by The+Bungi · · Score: 2, Insightful
    The architecture basically fell apart about 75% through the project.

    Translation: We didn't know what we were doing, so we fucked it up. And now when I remember, I blame it on the vendor. It's so much better that way.

    I guess around the time they stopped making use cases and actually tried to scale the prototypes up to work on their clusters.

    See above. Because I surmise you're concluding that the same group of people with the same design using some CORBA implementation and MQSeries or some other IBM software would have actually managed to finish the project.

    [...] it was an engineer from the bank who finally discovered the real problem, apparently.[...]

    Do you or do you not know what actually happened? "Apparently"? I thought you were talking as a sort of authority on why COM+ and MSMQ couldn't talk to each other.

    The COM+ developers and the MSMQ developers knew their own products very well but were unable to figure out what was happening between the two.

    Statistics are a bitch. Especially when they come in a single data point. You know, because I've successfully designed and implemented extremely complex systems using these two technologies. Yes, using clusters (AC2K) actually. In fact you could say they're my bread and butter. I think you're just like everyone else who has a chip on their shoulder and a dubious anecdote to tell to anyone who will listen. After all, you don't get the code and Microsoft is evil, so ergo whatever technology they produce can be reasonably expected to suck. There's always the very valuable "well I can't see their code so I can't fix mine" argument. Oh and, of course the whole debacle made the company cautious about using any other Microsoft technologies. Classic.

    So I'd suggest that in the future, unless you have some technical backing and cold hard facts to go with it, to just keep this little story to yourself. Not because I fear FUD, but because it simply proves that, if you're an idiot, you won't be able to design decent systems or write good code, no matter what the platform or middleware technologies happen to be. Seems to me that this is quite evident from your case study.

  66. Re:The real reason behind "silence is golden" by po8 · · Score: 2, Insightful

    Spolsky: "Aunt Madge might be justified in observing that a program that produces no output because it succeeded cannot be distinguished from a program that produced no output because it failed badly or a program that produced no output because it misinterpreted your request."

    Except on UNIX, even Aunt Madge will rapidly learn that programs just don't silently fail. If you can trust program failures to produce diagnostics, then you don't need diagnostics for program success.

    IMHO, the biggest divide between the two camps is this: In UNIX, I am surprised when something is broken. In Windows, I am surprised when something works.

  67. Re:Separation by Zeinfeld · · Score: 2, Interesting
    security == simplicity complexity == insecurity

    On that score the most secure O/S would be CP/M or MSDOS...

    Shaddow passwords are more complex than the original UNIX design,. they are empirically substantially more secure.

    Unix is a very complex operating system. There are dozens of different formats for configuration files. A large part of the operating system is written using scripting languages and for some reason these will typically be written in four or five different variants of the same scripting language. There is little or no consistency in the architecture, where there is consistency (everything is a file) it causes strange contortions as an object that is clearly not a file is crammed into the same impoverished data model.

    You can bolt on an encrypting file system to Linux, but the crypto layer used as a result will be entirely disjoint with any crypto for messaging, single sign on etc. As a result almost no Linux users have an encrypting file system even installed on their laptop. This has been standard on Windows for some time.

    Complexity is certainly to be avoided in security systems. But not at the expense of functionality. If you took an original UNIX machine and stood it up on the net it would be rooted in minutes.

    --
    Looking for an Information Security student project suggestion?
    Try http://dotcrimeManifesto.com/
  68. Re:Bubbling frustration by peterb · · Score: 5, Insightful

    If more GUIs are really what's needed in the UNIX world, then writing them is not a problem.


    Y'know, people keep saying that this is such a trivial little matter of implementation, but I can't help but observe that 20 years after the Macintosh came out, cut and paste in X windows is still completely fucking broken.

    At some point, you have to abandon the excuses and admit that it's not just an implementation problem, it's a broken paradigm.

    DEVELOPER: "Here's our GUI! Enjoy!"
    USER: "Wow, thanks! This sure is pretty. So, how do I cut and paste?"
    DEVELOPER: "Well, that depends on which toolkit the app you're running uses."
    USER: "Uh, OK. Thanks." [user turns off computer, goes back to his Windows or OS X machine.]

    In the above scenario, the user is right, and the developer is wrong, wrong, wrong, wrong, wrong.

  69. Re:The essential difference by heironymouscoward · · Score: 2, Informative

    Keeping little stories to ourselves would kind of ruin the whole point of Slashdot, no?

    Cold hard facts:

    - very large bank spending large amount of money
    - web application built on COM+, MSMQ, and MS clustering
    - application failed because of incompatibility in MS's own software layers
    - assistance from Redmond failed to solve problem
    - project eventually deemed unworkable and killed

    Now, you may be right that there was, somewhere, a solution to this, perhaps even an obvious one. However it escaped the people at the time, all competent, all professional.

    My story may even be false, it's possible. IT is so complex that the real story is often hard to uncover.

    But the conclusion that MS products are heavily vertical and often interoperable only within tight margins (specific OS, specific SP) remains, and is well-known to anyone who has developed for Windows.

    Attacking my credentials is not a response. Showing me the well-defined Microsoft APIs that have been used by Microsoft's own application development teams without compromise... now that would be a worthy response.

    --
    Ceci n'est pas une signature
  70. Re:Separation by EvilTwinSkippy · · Score: 4, Interesting
    This type of idiocy is not unique to windows. I have seen people do exactly the same thing in UNIX. They just did not make it to the UNIX core because that has barely changed in twenty years. So the argument that UNIX is good security wise starts to look remarkably like the argument that a stopped clock is right twice a day.

    Um, yes that lunacy IS unique to windows. Unix as a practice does not allow email apps to operate as root. A web server running with wheel privilages is considered a design flaw. While it is possible to create an environment where a script could enter a Linux box and infect the system, you would have to have the perfect storm of inept sysadmins running deliberately loose settings, exploiting a bug in the software.

    All that comes free with Windows.

    The chances of that same script being able to infect a second machine is near zero. The other machine would have to be a near clone of the first.

    As far as Unix being locked in time, I would like to point out that we have been using Kerberos and Ldap long before Windows thought it was a good idea. (For your edification, Active Directory is an adulterated implementation of Kerberos and LDAP.) NT and it's ilk are also POSIX complient, meaning they strive to be unix-like.

    I should also add that Unix does not have a giant world writable configuration system. Regedit is all I need to access the security files, system configuration settings, even policies. Show me a Windows setup that operates without the GUI, without Visual Basic, and without the registry. Then talk to me about security.

    --
    "Learning is not compulsory... neither is survival."
    --Dr.W.Edwards Deming
  71. esr oversimplifies a bit by doom · · Score: 3, Insightful
    Okay, a lot of people here seem to be pointing out that Sposky is being too easy on the Windows culture (which he certainly is... the problem isn't just bugs in the APIs, the problem is also intentionally deceptive APIs so that you can pretend you're supporting third party developers and retain the ability to undercut them at will).

    But I haven't seen a lot of people pointing out that esr is also taking it too easy on the Unix culture.

    I started reading the draft of esr's "Art" a while back, and was immediately struck that he was repeating the "do one thing and do it well" slogan as if anyone ever really worked that way. Has he ever seen the man page for "tar"? How about "find"? The Unix Way is more like "do one thing sort-of-okay, and then trick it out with options and modifiers and run command files and embedded scripting languages until you can't tell when it's going to fry eggs or flush the toliet."

    You might want to balance out esr's idealized view with the half-serious ranting of The Unix-Hater's Handbook (pdf).

    I think the chapter on X is one of the better X-windows tutorials around (though unreasonable people may disagree).

  72. Re:Separation by CondeZer0 · · Score: 3, Interesting

    Unix originally didn't even have a network stack, so you would have a hard time finding a way to "root it in minutes", not to mention that TCP/IP didn't even exists at the time.

    Shadow passwords are more complex than the original UNIX design
    Shadow passwords are not a solution, shadow passwords are an ugly hack. Of course the most secure solution is not the simplest. In the this case, shadow passwords were barely enough for stand-alone systems; in a networked environment you need a different kind of distributed authentication framework, and that is what factotum/secstore provide with a relatively low complexity keeping in mind the implicit complexity of the problem domain.

    As for problems with how in Unix "everything is a file", the problem is not with the original Unix ideas, but with how some misguided souls(*cough* USL, *cough* BSD, *cough* SUN, *cough* RMS/GNU, *cough* Linux, *cough* GNOME, ...) didn't have a clue what they were doing(not to mention they even did a pathetic job at fucking up the original Unix ideas... hell, at least VMS had technical quality and some consistency!).

    Who added most of the networking functionality to Unix? a bunch of clueless undergrads in Berkeley, really, who is surprised about the result(BIND, sendmail, etc..)?

    Unix, in it's original and "pure" form, evolved, and most if not all the original problems where *fixed*, and so Plan 9 was born, more than 10 years ago, but the "UNIX community"(read, "bunch of misguided clueless religious fanatics") never even understood what Unix was supposed to be like, and more than 30 years later they keep repeating the same mistakes again and again, but now they don't have enough with their own mistakes, that they need to copy others mistakes too(see GNOME...).

    There is nothing wrong with the original Unix ideas; yes, there were some horrible mistakes(*cough* suid, /etc/passwd, ...) but the basic ideas were solid(and in good part based in the best of MULTICS), the problems is people that _never_ understood those ideas, the people that really understood them fixed the problems and kept moving forward(until Lucent killed them anyway).

    None of the problems you mention applies to Plan 9(and some of them nor to the last version of Research Unix), and in most cases neither to what Unix was originally.

    BTW, Plan 9 doesn't even have the concept of "root" or "Administrator", so it can hardly be rooted, as for buffer overflows, all you need is sane libs to deal with string manipulation, which it's true the original Unix didn't have, but the problem is people that in more than 30 years is incapable of fixing a broken lib design, the original Unix designers fixed the "problem" *long* ago.

    Best wishes

    uriel

    --
    "When in doubt, use brute force." Ken Thompson
  73. Re:Separation by Afty0r · · Score: 2, Insightful
    Why automation is considered more important than security is one thing, but why do people feel the need to defend that wierd choice of values?


    It's pretty simple really, automation has a much higher value than security - people are willing to pay more.
    If we went back in time, and made all MS products ultra-secure, but removde the ability to automate anything, most businesses using MS software would not be as productive as they are... a (very) few might still be around because they didn't have to fold after a security incident, but almost every single one would be worse off, that makes the economy worse off, which makes you and me worse off in the long run.
  74. Re:Without realizing it... by a1englishman · · Score: 2, Insightful

    It doesn't matter what OS I'm using, if I'm word processing I save at every paragraph. If I'm developing, I save before executing. I trust no machine, no OS. They will all let you down some time, for some reason.

    I develop for a living -- yes on and for Windows. I create a variety of applications: Web, desktop GUI, and command-line. It all depends on the audience. End users don't want to remember what list of switches and piping which into what will create the output they need. That's stuff's for techies and background processes. Users need a clean GUI that gives useful feedback.

    Some days I ride in the font of the commuter train. From there, you can watch the engineer and take in the opperation of his interface. It makes all kinds of noises. This is called feedback, and is essential to good user design.

    Sure, you can write a UI that merely displays a wait icon while the application performs the requested action, but that doesn't tell anyone whether anything is really happening. On the other hand, most users don't want to be bombarded with minutia about what the program is doing.

    I think this whole discussion about programming culture is a load of bollocks. If you'd like Joe Blow to use your program, you're going to have to break-down and develop a GUI. This just isn't the day and age of the computer hobbiest anymore.

    When developing a GUI app, you have to take the GUI into consideration, just as much as what the applicaiton's supposed to be doing. If your back end can't support your front end, then you've wasted your time, and your employer's money.

  75. End Users Are Not Morons! by digital_franciscan · · Score: 2, Interesting
    Where does this notion come that any human activity other than programming computers is second-rate and only worthy of scorn? The "end-user" is not always some stupid moron. In fact, this vast category of "end-users" will display the usual bell curve for logical intelligence (the usual measuring rod for computer aptitude). That means that a lot of people using computers but who are not programmers will also be extremely intelligent -- but they have other tasks toward which they prefer to devote their intelligence. There are only so many hours in the day, after all.

    There are also other people who, while scoring low on logical intelligence, score extremely high on social intelligence, kinetic intelligence, musical intelligence, etc. These people are just as talented as any UNIX programmer, only in another domain.

    Are all these people, regardless of their intelligence in whatever domain, unworthy of being offered a computer experience that is straightforward and consistent? Must the whole world become programmers at a professional level? Because that's the underlying message of a lot of the RTFM crowd.

    There's a reason so many creative people gravitate toward the Macintosh, with its (theoretically, at least) "every program works like every other program" paradigm. They simply have other things to do with their lives than read "man" pages on building drivers, thousand-page tomes on UNIX programming, and memorizing 15 different and sometime contradictory GUIs and keyboard command sets.

    The next time you are being given an injection by a nurse, enjoying a dance performance, or benefiting from the skills of an office peacemaker, remember that they are also computer users. If that nurse spent all of her time programming the myriad instruments she uses to monitor your health, she probably wouldn't have time to actually ... well, monitor your health -- probably wouldn't even pay attention to all the nonverbal (and non-instrument) cues that tell her how you are doing.

    It takes all kinds of people to make a world. We all need each other. Non-programmers need programmers to give us these potentially marvelous tools. Programmers need other programmers to create tools that are useful for programmers. And someone must intervene between the programmer and the "end user" to ensure that these tools are actually useful to a general population. (Hence the Macintosh, as Joel pointed out.) And you, Mr. Programmer Guru, need nurses and dancers and musicians and cooks and, well, friends and family who's skills are in being your friend and your family. It's not a question of which culture is superior. It's more: how can the best of all cultures mesh?

  76. Re:Separation by drsmithy · · Score: 3, Insightful
    Unix as a practice does not allow email apps to operate as root.

    "Unix" doesn't have a choice in the matter - it's purely an end user decision.

    While it is possible to create an environment where a script could enter a Linux box and infect the system, you would have to have the perfect storm of inept sysadmins running deliberately loose settings, exploiting a bug in the software.

    Or you need a typically inexperienced and ignorant end user running as root for convenience.

    Not every unix box is managed by a sysadmin (and the proportion that are is only going to get smaller).

    Added to that, with the typical scenario of a single-user desktop machine that spreads these "email viruses", it doesn't *have* to infect the entire machine to have a negative impact and propogate.

    The "well at least under a properly configured unix box a virus can only wipe out the user's files" argument is irresponsible and specious when applied to a typical PC configuration.

    NT and it's ilk are also POSIX complient, meaning they strive to be unix-like.

    No, they implement a POSIX layer for compatibility and to help software migration. If you think NT is striving to be "unix like" you're sadly mistaken.

    I should also add that Unix does not have a giant world writable configuration system. Regedit is all I need to access the security files, system configuration settings, even policies.

    The registry (in NT) is subject to ACLs. It isn't world writable by arbitrary users any more than /etc is.

    Show me a Windows setup that operates without the GUI, without Visual Basic, and without the registry. Then talk to me about security.

    But for some reason a unix box with X, perl (or sh) and /etc can be secure ?

  77. Re:Sucky... something is. by Anonymous Coward · · Score: 2, Insightful
    What a non-geek user expects is to learn some skills once, and apply those skills again and again. It doesn't matter if you have some cute unique idea. He just doesn't want to have to learn a whole new set of skills for every single program.

    He wants that if in Word CTRL+X is "cut", then in every single program it's still "cut". He wants that if F1 is "Help", then by God, it better be "Help" in all programs. And if one program's scrollbars behave in one particular way, then it better be the same way in all programs.

    Having dealt directly with hundreds of 'non-geek users' in the course of nearly two decades, I can assure you that the consistency you proclaim as valuable goes unnoticed. I've heard the question "You mean that will work here, too?" so many times that I am laughing at your comments, and those who found you insightful.

    In fact, the real evidence supports a totally different conclusion. Consider that all k3w311 web pages have to mangle your precious scroll bars, either eliminate them or at least change the color. If there were comands to make them flip orientation, you could bet that everybody would be using them. Then consider something like winamp. Oooooh, skinable... translate, devoid of all OS supplied consistency. But that isn't a productivity tool, like say, Nero. That one just tries to make the application act like a high-school student's javascript-of-the-week-club web page with pretty clicky buttons instead of using the OS native menus and interface controls.

    'Joe Average' learns to repeat single tasks. That's why he doesn't blink when you tell him to click on "start" to "shutdown" or show him a deeply buried directory at the top of his world and call it his desktop. He will click past the "critical update available" message as routinely as he will click on a virus laden nude celebrity attachment. Sure there are exceptions, but if you want to go for average, that is it. Is Microsoft better that Linux for the average? No, it is simply there.

  78. plus ca change, plus ca meme chose by jbaltz · · Score: 4, Interesting
    It's all been said before by more famous Unix haters (links to Microsoft, 'natch).

    I'm surprised Joel didn't take on some other major differences:
    • Monolithic versus small parts
    • Just works versus elegant (but might not work)
    • GUI-oriented versus service-oriented
    • et cetera
    Joel is right on the money here, though: there is a major "cultural" difference between Windows and Unix programmers -- my workplace hires both types and they're quite a different group of folks.
    I'd like to lock the Joel and Eric in a room and see what becomes of it...
    --
    I am the Lorvax, I speak for the machines.
  79. Re:How to tell if you are a linux fanatic. by fingusernames · · Score: 2, Insightful

    Where I once worked, all the developers worked in UNIX. HP-UX to be exact. All had either X-terminals to a server, or preferably Linux boxes on their desks. We all also had Windows boxes, because the business used Exchange/Outlook for email. Many of the developers NEVER used the Windows PC for anything other than email. We therefore decided to see about handling our email under Linux or HP-UX, and getting rid of the useless, space-wasting, heat-generating other computer and monitor.

    We could receive the email, no problem. Exchange did IMAP (sort of). But we had issues sending email, as we needed to do SMTP. We spoke with our email system admin, Dan. His official title was something along those lines. Dan knew nothing whatsoever about SMTP. Basically didn't know what it was. He was a Windows person, 100%. So we attempted to educate him a bit. That was a mistake. See, Dan was like a lot of Windows people. Windows and Microsoft enabled him to do his job, without having to know a lot technically. He was, to management, the email expert. We learned that by showing that he is not the expert (only to him and us even, initially), we endangered his view of himself as the email expert, and his role in the organization I suppose. We then became the enemies, because we presented him with something we needed, which he should have been able to provide, but was unable to due to his ignorance.

    Windows has done this for a lot of people, such as the parent's author. It has enabled them. They are able to buy a PC, install software, learn how to click here and there, play games, do all the other cool stuff that comes pre-packaged for them. But when they are confronted by other users, ostensibly the same as them, who are able and willing to use a technically more challenging system such as Linux or other *nix systems, they see that as a challenge to their own view of themselves as a knowledgeable "power user." When the other users then heap scorn on the tool which has empowered them to use a modern computer, they see that in a less than rational way. They see it as a threat. And they respond as the author did. Or as Dan did. Or as countless other users of technology who don't really understand that technology, yet believe they do.

    Sure, there are tons of Linux users who bait the Windows users and make stupid inflamatory comments. And sure, there lots of Windows users who do really understand Windows and computers deeply. But in general, a Linux user is a far more technically proficient person than a Windows user, by necessity, and that is a threat to the Windows "power user" who sees himself as a technically elite person, when he really isn't. And if you are going to bring up exceptions, remember: the exception proves the rule.

    Larry

  80. Re:Without realizing it... by grotgrot · · Score: 2, Insightful

    The Windows API designed decided to do EVERYTHING in one call. If they add new features in the future, then there will need to be yet another variant of the call. (As someone who has lived through Win286 to XP, this has been both predictable and the API design inflexible).

    The UNIX approach was to make simple calls, and yes, it does amount to the same thing. You can make up 14 system calls (to set up "security", current directories, handle inheritance etc), and if you leave any out, you get sensible defaults.

    The difference is the UNIX api designers went for simplicity and elegance. The Windows API designer went for a one shot function does all, and if new features appear in the future, you have to make a new API call. The UNIX api for making a new process has not changing since 1970 because it was simple and elegant. The Windows ones constantly change with new Windows features.

    I will certainly grant you that exec* look like a mess, but in reality it is actually all one function with different calling conventions. There is actually only one system call. We certainly won't start on calling conventions :-)

    This doesn't mean that you can't have bad design, good design, simplicity, elegance etc on any platform. My general point was just that Microsoft tends to overcome stuff by brute force. Make more APIs, make more versions of them. The UNIX tendency has been for elegance and simplicity. Neither is perfect.