Slashdot Mirror


Taco Bell Programming

theodp writes "Think outside the box? Nah, think outside the bun. Ted Dziuba argues there's a programming lesson to be learned from observing how Taco Bell manages to pull down $1.9 billion by mixing-and-matching roughly eight ingredients: 'The more I write code and design systems, the more I understand that many times, you can achieve the desired functionality simply with clever reconfigurations of the basic Unix tool set. After all, functionality is an asset, but code is a liability. This is the opposite of a trend of nonsense called DevOps, where system administrators start writing unit tests and other things to help the developers warm up to them — Taco Bell Programming is about developers knowing enough about Ops (and Unix in general) so that they don't overthink things, and arrive at simple, scalable solutions.'"

394 comments

  1. 8 keywords? by lalena · · Score: 1, Funny

    So if I limit myself to 8 keywords my code has less defects and is more maintainable?

    1. Re:8 keywords? by Anonymous Coward · · Score: 5, Insightful

      exactly.

      Those 8 keywords are + - > [ ] . ,

    2. Re:8 keywords? by the_macman · · Score: 1

      For EXTREME challenge limit yourself to 8 bits!

    3. Re:8 keywords? by hardburn · · Score: 4, Insightful

      Ook! Ook?

      --
      Not a typewriter
    4. Re:8 keywords? by Anonymous Coward · · Score: 0

      So if I limit myself to 8 keywords my code has less defects and is more maintainable?

      Yes. Look at your English as an example, with its thousands of keywords. Reduce your vocabulary and you'll have fewer defects in what you produce.

    5. Re:8 keywords? by Anonymous Coward · · Score: 0

      I try to limit myself to a 1 or a 0.

    6. Re:8 keywords? by EdIII · · Score: 1

      I don't get that either, but the summary said 8 ingredients. Which made me wonder if all of Taco Bell's food is made from 8 basic ingredients. That seems to be what it is saying... right?

      Either way, now I am confused and hungry.

    7. Re:8 keywords? by toastar · · Score: 1

      exactly.

      Those 8 keywords are + - > [ ] . ,

      Pfft... Real programmers only need NAND gates.

    8. Re:8 keywords? by Anonymous Coward · · Score: 0

      Get the brain outta here!

    9. Re:8 keywords? by tompaulco · · Score: 2, Insightful

      I find that most defects in the English that is produced is due to the use of words that are not in the vocabulary. A sufficiently intelligent compiler (listener) is able to successfully compile the code even though the programmer(speaker) did not write it correctly, which unfortunately only reinforces the bad habit of the programmer.
      I saw this same behavior in Internet explorer a few days ago. Someone complained that "Firefox isn't working", because an ASP page had a malformed link in it. IE was "smart" enough to unmangle it and display it. Firefox chose not to try to outthink the programmer and reinterpret the mess that had been passed to it. The users assumption was that Firefox was broken. I would argue the opposite.

      --
      If you are not allowed to question your government then the government has answered your question.
    10. Re:8 keywords? by TangoMargarine · · Score: 1

      1 +
      2 -
      3 >
      4 [
      5 ]
      6 .
      7 ,

      What? Is a space a keyword now?

      --
      Unity? Screw that: XFCE. Slashdot Beta? Screw that: SoylentNews. Australis? Screw that: Pale Moon. UX developers DIAF
    11. Re:8 keywords? by BanditCat · · Score: 1

      http://en.wikipedia.org/wiki/Brainfuck is not Taco Bell programming.

      --
      Passionately pushing pixels since 8086 =)
    12. Re:8 keywords? by Anonymous Coward · · Score: 0

      Lol. A slightly fluorescent greenish yellow purple operator?

    13. Re:8 keywords? by Anonymous Coward · · Score: 0

      Oh, I don't know. I don't think you've chosen words outside the English Lexicon. What happened to that first sentence mush have some other explanation!

    14. Re:8 keywords? by Anonymous Coward · · Score: 0

      Yes, but it'll get the runs afterwards.

    15. Re:8 keywords? by arth1 · · Score: 0, Troll

      Yes. Look at your English as an example, with its thousands of keywords. Reduce your vocabulary and you'll have fewer defects in what you produce.

      I'm uncertain whether you just made an ironic reference to Minitrue, or believe the drivel you just posted.

      More nuances in your vocabulary might have let us know.

    16. Re:8 keywords? by Hylandr · · Score: 1

      And you will sound like the cat in the hat.

      - Dan.

      --
      ~ People that think they are better than anyone else for any reason are the cause of all the strife in the world.
    17. Re:8 keywords? by Anonymous Coward · · Score: 0

      I program in ones and zeros via magnetically flipping individual bits on the harddrive, you insensitive clod!

    18. Re:8 keywords? by newcastlejon · · Score: 1

      Who needs debuggers when you have a bunch of bananas?

      --
      If God forks the Universe every time you roll a die, he'd better have a damned good memory.
    19. Re:8 keywords? by Suzuran · · Score: 2, Interesting

      I think programming on an old machine should be required for any sort of programming course. It would teach people to conserve resources and think about how the machine works.
      He who cannot program in 64K cannot program in more.

    20. Re:8 keywords? by Nursie · · Score: 3, Funny

      You had 1s?

      Luxury! When I was a lad we had to program everything using only zeros!

    21. Re:8 keywords? by iamnobody2 · · Score: 4, Informative

      8 ingredients, no. i've worked at a taco bell, there's a few more then that. this is most Hot Line: beef, chicken, steak, beans, rice, potatoes, red sauce, nacho cheese sauce, green sauce (only used by request), cold line: lettuce, tomatos, cheddar cheese, 3 cheese blend, onions, fiesta salsa (pico de gallo, the same tomatos and onions mixed with a sauce), sour cream, gaucamole, baja sauce, creamy jalapeno sauce. plus 5 kinds/sizes of tortillas (3 sizes of regular, 2 sizes of die cut) nacho chips, etc etc here's an interesting fact, those Cinnamon Twists you may or may not love? they're made of deep fried rotini (a type of pasta, usually boiled)

      --
      nobody's perfect
    22. Re:8 keywords? by Shadow+of+Eternity · · Score: 2, Insightful

      "When you work in a monkeyhouse you're more used to having shit thrown at you".

      --
      A bullet may have your name on it but splash damage is addressed "To whom it may concern."
    23. Re:8 keywords? by williamyf · · Score: 1

      Beat ya, I programmed in 40K, that's what's left to the programmer in a Verifone OMNI 390 credidcard POS. --- Offtopic Bragging

      We need a -1 Brag Mod. ---- Insightful Part

      Salud!

      --
      *** Suerte a todos y Feliz dia!
    24. Re:8 keywords? by Anonymous Coward · · Score: 0

      I think programming on an old machine should be required for any sort of programming course.
      He who cannot program in 64K cannot program in more.

      Correction. He who cannot programme in 3.5KB user available RAM cannot programme in more. The Commodore 64 began the steady decline in programme quality within limited space; Commodore VIC-20 was for real programmers. ;)

    25. Re:8 keywords? by TheLink · · Score: 1

      Just more evidence that Ted Dziuba does not know what he is talking about.

      He should move to top management or write management books and spout his "8 ingredients for success".

      Programmers on the other hand know that it's often the mastery of the details which is important for getting things to work and _keep_ working reliably, and management of complexity. Not saying crap like "different configuration of _roughly_ eight ingredients".

      Now if you don't care about accuracy, reliability and error handling then most problems become very simple :).

      --
    26. Re:8 keywords? by J+Isaksson · · Score: 1

      *phew* Until I saw that you were missing $, I was sure you meant Perl.

    27. Re:8 keywords? by Anonymous Coward · · Score: 0

      As much RAM as 3.5KB is sure to lead to laziness in the programmer. I cut my teeth on the 1KB (including screen, of course) available in a ZX81.

    28. Re:8 keywords? by Meski · · Score: 1

      Watching the program run is fun. Kind of like a CAT scan video of a brain.

    29. Re:8 keywords? by Meski · · Score: 1

      Yes. Look at your English as an example, with its thousands of keywords. Reduce your vocabulary and you'll have fewer defects in what you produce.

      I'm uncertain whether you just made an ironic reference to Minitrue, or believe the drivel you just posted.

      Minitrue being a lower-level version of english, I'd suspect it's like comparing assembly language with c++.

    30. Re:8 keywords? by Anonymous Coward · · Score: 5, Funny

      Noli strepere.

      Per tempus mei, "zero" non habemus. Numerorum Romanorum usi eramus.

    31. Re:8 keywords? by Nursie · · Score: 1

      *applause*

    32. Re:8 keywords? by badran · · Score: 1

      Pfft... Real programmers only need minecraft.

    33. Re:8 keywords? by badran · · Score: 1

      Did you use butterflies?

    34. Re:8 keywords? by davester666 · · Score: 1

      I hit you over the head with my VIC-20 with special memory-reducing board [yes, you could plug in a memory add-on and actually wind up with less memory than you would without it].

      --
      Sleep your way to a whiter smile...date a dentist!
    35. Re:8 keywords? by Kilrah_il · · Score: 1

      Damn, I need my mod points. +5 Funny (and thanks god for Google Translate's Latin alpha).

      --
      Whenever in an argument, remember this.
    36. Re:8 keywords? by Rysc · · Score: 1

      Slashdot likes to strip out begin-tag characters like <, unless you are careful to use HTML entities.

      --
      I want my Cowboyneal
    37. Re:8 keywords? by mjwalshe · · Score: 1

      yep try being a 20 year old billing systems developer and the guy responsible for running the billing system and at a celebration for our company hitting its first £1,000,000 month having your CTO nudge you and ay this had better be right or we are both out of a job.

      BTW this was back in the 80's when £1,000,000 was worth a lot more and I had one of the largest instalations of super mins running this system as a mix of Fortran 77 and Pl/1 code.

    38. Re:8 keywords? by Anonymous Coward · · Score: 0

      So then... utter genius?

    39. Re:8 keywords? by mcgrew · · Score: 1

      The GP was wrong if he's talking about the Sinclair, it came with 4k expandible to 20k, not 1k.

      But even with its 1mHz clock speed (he may be confusing RAM with clock speed), if you wrote tight assembly (which had to be assembled into machine code by hand) you could write a snappy game. I had my Battle Tanks game going so fast I had to add loops to slow it down enough for it to be playable.

    40. Re:8 keywords? by mcgrew · · Score: 1

      I wrote an AI program in 16 megs that could fool people into thinking it was intelligent, which actually defeated my purpose in writing it (to show that AI was smoke and mirrors).

      Later on I ported it to Clipper, a dBase language compiler. The source code was still less than 16k, but the EXE file was 640k! So do you mean 64k of source code, or 64k of compiled binary?

      At any rate, I agree with you. Give them a machine based on a Z80 or a 6502 processor with 64k or less, and if they can write a solitaire or battle tanks game that runs decently, they're programmers.

    41. Re:8 keywords? by mcgrew · · Score: 1

      So that's why three year olds are so eloquent?

    42. Re:8 keywords? by drjzzz · · Score: 2, Informative

      So if I limit myself to 8 keywords my code has less defects and is more maintainable?

      ... fewer defects. Never mind.

      --
      to err is human, to forgive is divine, to forget is... umm...
    43. Re:8 keywords? by operagost · · Score: 1

      Having once had a VIC-20 with the 3K Super Expander, I can safely say, "you're doing it wrong."

      --

      Gamingmuseum.com: Give your 3D accelerator a rest.
    44. Re:8 keywords? by VolciMaster · · Score: 1

      Beat ya, I programmed in 40K, that's what's left to the programmer in a Verifone OMNI 390 credidcard POS. --- Offtopic Bragging

      We need a -1 Brag Mod. ---- Insightful Part

      Salud!

      And my first machine had 21446 bytes of SRAM.

  2. My order by Wingman+5 · · Score: 4, Funny

    Can I get a server logging system, hold the email notifications. Can I get extra rotating log files with that?

    1. Re:My order by phantomfive · · Score: 1

      Doesn't Unix already do that by default?

      --
      Qxe4
    2. Re:My order by Anonymous Coward · · Score: 0

      woooshhhh

    3. Re:My order by WeatherGod · · Score: 0, Offtopic

      Can I also get a "whoooosh" with that, or is that extra?

    4. Re:My order by Anonymous Coward · · Score: 0

      It depends on whether that is just "whoooosh" or if it is whooossuuuuuoooooouuuuoooosssshhhshshs. That latter is called a "Latte" (or rather the sound the machine makes as it does some steaming of the milk or some crap) and they are not free. The simple "whoooosh" is free though.

    5. Re:My order by Thelasko · · Score: 1

      Can I get a server logging system, hold the email notifications. Can I get extra rotating log files with that?

      All dispensed with a caulk gun.

      --
      One of our competitors trademarked the term "hypothesis". From now on, we will call them "boneheaded ideas".
  3. which language is best? by phantomfive · · Score: 5, Insightful

    Reminds me of a job interview I did once with an old guy, he had around 30 different programming languages on his resume. I asked him which programming language was his favorite, expecting it to be something like Lisp or Forth, but he said, "shell script." I was a bit surprised, but he said, "it lets me tie pieces in from everywhere and do it all with the least amount of code."

    I wasn't entirely convinced, but he did have the resume. Seems Mr Dziuba is from the same school of thought. I read the full introduction to the DevOps page and I'm still not entirely sure what it's about. We should work together and deliver on time, or something like that.

    --
    Qxe4
    1. Re:which language is best? by visualight · · Score: 4, Insightful

      The DevOps thing is yet another crock of shit on par with 'managing programmers is like herding cats' and web2.0

      --
      Samsung took back my unlocked bootloader because Google wants me to rent movies. They're both evil.
    2. Re:which language is best? by Anonymous Coward · · Score: 5, Funny

      The DevOps thing is yet another crock of shit on par with 'managing programmers is like herding cats' and web2.0

      I volunteer at a cat rescue. Herding cats is much easier than dealing with programmers.

    3. Re:which language is best? by Anonymous Coward · · Score: 0

      You've posted this story before, I believe. Is that so?

    4. Re:which language is best? by oldhack · · Score: 1

      Damn and blast them. What we need is to automate away all the asinine programmers. You know, like with those Rational stuff. :-)

      --
      Fuck systemd. Fuck Redhat. Fuck Soylent, too. Wait, scratch the last one.
    5. Re:which language is best? by martin-boundary · · Score: 4, Insightful
      Sadly, Mr Dziuba has the right idea but uses terrible examples in his blogpost.

      Wget for crawling tens of millions of web pages using a 10 line script? He doesn't understand crawling at scale.

      There's a lot more to it than just following links. For example, lots of servers will block you if you start ripping them in full, so you need to have a system in place to crawl sites over many days/weeks a few pages at a time. You also want to distribute the load over several IP addresses, and you need logic to handle things like auto generated/tar pits/temporarily down sites, etc. And of course you want to coordinate all that while simultaneously extracting the list of URLs that you'll hand over to the crawlers next.

      His other example is also bullshit. Tens of millions of webpages are not that much for a single PC, it hardly justifies using MapReduce, especially if you're only going to process pages independently with zero communication between processes.

      MapReduce is all about cutting the dataset into chunks, then alternating between 1) an (independent) processing phase on each chunk, and 2) a communication phase where the partial results are combined. And where this really pays off is when you have so much data that you need a distributed filesystem.

    6. Re:which language is best? by ShakaUVM · · Score: 4, Insightful

      >>I asked him which programming language was his favorite, expecting it to be something like Lisp or Forth, but he said, "shell script."

      Shell script is awesome for a large number of tasks. It can't do everything (otherwise we'd just teach scripting and be done with a CS degree in a quarter), but there's a lot of times when someone thinks they're going to have to write this long program involving a lot of text parsing and you just go, "Well, just Cut out everything except the field you want, pipe it through sort|uniq, and then run an xargs on the result." You get done in an hour (including writing, args checking, and debugging) what another person might spend a week doing in C (which is spectacularly unsuited for such tasks anyway).

    7. Re:which language is best? by phantomfive · · Score: 1

      Yes sir, that is correct. It was a long time ago, you have a good memory.

      --
      Qxe4
    8. Re:which language is best? by rolfwind · · Score: 1

      Oh, I don't know. Taco Bell is based on the Mexican Kitchen (I say this very loosely). Compared to other kitchens, the Mexican kitchen itself (or by the "authentic" restaurants I go to) is very limited one with the same limited variations the article talks about, and one I would get tired of really quickly if that's all I could eat.

      Being able to tie things together easily and having limited ingredients is not a great analogy, imo.

    9. Re:which language is best? by gangien · · Score: 2, Insightful

      (otherwise we'd just teach scripting and be done with a CS degree in a quarter)

      because the programming language has so much to do with CS?

    10. Re:which language is best? by Anonymous Coward · · Score: 2, Interesting

      Uhh, what? I can do everything you just mentioned in shell, using standard UNIX utilities and cron for retries. You do not need a magical distributed application to simply crawl websites. You can even have it crawl from multiple boxes if you really want, I can think of very simple UNIX solutions to that too. Web crawling isn't that magical.

    11. Re:which language is best? by Kiaser+Zohsay · · Score: 1

      That's what makes the t-shirt funny.

      --
      I am not your blowing wind, I am the lightning.
    12. Re:which language is best? by MightyMartian · · Score: 2, Interesting

      And for real age, it's something that's been known since Unix went into wide-scale usage in the 1970s. The original Bourne shell with the toolset of the time, while obviously limited in some respects, was pretty damned powerful. Pop in some of the newer updates like bash and you have a helluva an environment.

      --
      The world's burning. Moped Jesus spotted on I50. Details at 11.
    13. Re:which language is best? by itlurksbeneath · · Score: 5, Insightful

      Bingo. CS has nothing to do with programming languages. It's about PROGRAMMING. Lots of CS grads still don't get this. They are typically the mediocre programmers that move on to project management (or something else that doesn't involve programming) fairly quickly. Or they end up doing horrible ASP web apps and Microsoft Access front ends.

      --
      Have you ever considered piracy? You'd make a wonderful Dread Pirate Roberts.
    14. Re:which language is best? by nedlohs · · Score: 1

      CS shouldn't even involve touching a computer in the first quarter, so no.

    15. Re:which language is best? by agrif · · Score: 1

      Sadly, Mr Dziuba has the right idea but uses terrible examples in his blogpost.

      Wget for crawling tens of millions of web pages using a 10 line script? He doesn't understand crawling at scale.

      Not that I necessarily disagree with you, but wget is an extremely powerful and configurable web client (just check out its man page). I never thought it was so versatile until I started using it for more than just downloading tarballs on the command line.

      It's not inconceivable that the right combination of simultaneous downloads, link processing, bandwidth throttling, and per-download waits could do the job just fine.

    16. Re:which language is best? by nu1x · · Score: 1

      > Herding cats is much easier than dealing with programmers.

      Don't you mean "dealing with cats is much easier than herding programmers" ?

      --
      I have nothing to lose but my bindings.
    17. Re:which language is best? by Anonymous Coward · · Score: 0

      You prolly should pipe through uniq before sort. You'll get the same results, but sort will be passed less ata leading to faster execution and smaller memory footprint.

    18. Re:which language is best? by ShakaUVM · · Score: 1

      >>because the programming language has so much to do with CS?

      In an engineering discipline, you always want to be hands-on, so yeah. My first two quarters with Savitch at UCSD were a combination of learning theory (data structures, algorithms), programming languages (I had him for C++ before he wrote his Java textbook) and abstract models of a machine.

    19. Re:which language is best? by ShakaUVM · · Score: 2, Insightful

      You prolly should pipe through uniq before sort. You'll get the same results, but sort will be passed less ata leading to faster execution and smaller memory footprint.

      IIRC, uniq only collapses adjacent lines that are identical. So hence sort|uniq.

      Maybe there's a flag or something that will change that behavior? It'd probably have to do something on the order of sort anyway, though.

    20. Re:which language is best? by Anonymous Coward · · Score: 0

      >>Bingo. CS has nothing to do with programming languages. It's about PROGRAMMING.

      Hell yeah! Speak truth to power.

      I have a doctorate in computer science and I NEVER had anything to do with programming languages! Never wrote a program once! It's about PROGRAMMING baby, KNUTH, yeah!

      Pseudocode should be good enough for everyone!

    21. Re:which language is best? by Steauengeglase · · Score: 2, Funny

      Meh, as long as you have a hunk of meat and a fishing pole, both tasks are the same.

    22. Re:which language is best? by flnca · · Score: 2, Interesting

      what another person might spend a week doing in C (which is spectacularly unsuited for such tasks anyway).

      A skilled C programmer also needs less than 1 hour for something like that. The standard C library has a lot of text processing functions (like sscanf()), plus it has a qsort(). Ever wonder why the C I/O library is suitable for managing database files? All the field functions in fscanf()/fprintf() etc. are suitable for database management.

      Also, C is still one of the prime choice languages for writing compilers, which do a lot of text processing.

    23. Re:which language is best? by Anonymous Coward · · Score: 0

      Wrong. CS has very little to do with PROGRAMMING. Did you even ever take a computer science course?

    24. Re:which language is best? by Anonymous Coward · · Score: 0

      If you'd study the xargs command closely, you would see that the -n1 handles one argument at a time, your 1 above, and if you knew xargs better, you'd realize that the all the output would go to standard output, there by combining your results, your 2 above. The ./process could also create a bunch of files that would be handled by the next command line (your alternating above).

    25. Re:which language is best? by sjames · · Score: 1

      DevOps = If we all join hands and work together we can build more and taller steaming piles faster than ever.

      Taco Bell programming = Quit re-inventing the wheel damnit!

    26. Re:which language is best? by ShakaUVM · · Score: 5, Insightful

      >>A skilled C programmer also needs less than 1 hour for something like that.

      Hmm, well if you want to time yourself, here's a common enough task that I automate with shell scripts. I just timed myself. Including logging in, doing a detour into man and a 'locate access_log' to find the file, it took a bit less than 4 minutes.

      tail -n 100 /var/log/apache2/access_log | cut -f1 -d" " | sort | uniq

      Grabs the end of the access_log and shows you the last few ip addresses that have connected to your site. I do something like this occasionally. Optionally pipe it into xargs host to do DNS lookups on them, if that's how you prefer to roll.

      I'm honestly curious how long it will take you to do it in C, with/without the DNS lookup. Post source if you don't mind.

    27. Re:which language is best? by dkf · · Score: 1

      Wrong. CS has very little to do with PROGRAMMING. Did you even ever take a computer science course?

      When I did CS, all the programming bits were covered in about a semester (and that included structured, object-oriented, functional, and logical programming languages, plus an introduction to scripting and assembly). The rest of the course focussed on the interesting bits of computer systems, from chip layout to formal software verification methods to parallel databases. Programming's just what you do to make the computer do what you want.

      --
      "Little does he know, but there is no 'I' in 'Idiot'!"
    28. Re:which language is best? by BrynM · · Score: 1

      Why not just `sort -u`?

      --
      US Democracy:The best person for the job (among These pre-selected choices...)
    29. Re:which language is best? by Anonymous Coward · · Score: 0

      like herding cats' and web2.0

      I didn't know cats even had "and web2.0".

    30. Re:which language is best? by wrook · · Score: 0

      Show me a new grad who is good at programming and I'll bet they didn't learn programming at university. A lot of new grads *think* they are good at programming. But apart from a handful here and there that cut their teeth on other projects, a new grad writing good code out of the gate is virtually unheard of. Hell, most people with 5 years working experience are crap.

      Honestly, I don't know what CS is "for", but it certainly isn't programming. It seems to be some wildly misguided attempt to introduce programming (using toy problems) with no attempt at cultivating a deeper understanding of how to communicate using code. Then they throw in some random theory (depending on the fetish the profs currently have) and a handful of math that you may or may not ever use (and strangely often leaving out the most practical math subjects such as statistics). Half the people graduating don't even remember *any* theory when they graduate and do insane things like write save files with a context sensitive grammars.

      And then when you think about it, CS stands for Computer SCIENCE and you start to wonder, where was the science in my degree... Or maybe you were in the math department and you graduated with an honors degree but never once took a math course above 2nd year level difficulty (and all the real math students laugh at you behind your back). Or maybe you got an engineering degree and started wondering why the mechanical engineers know all this stuff to pretty much guarantee that bridges won't fall down, but that computer engineers write software that crashes when someone looks at it funny.

      And even given the complete failure to actually learn anything that could be called science in their computer science degree 95% of the graduating class hasn't written more than 10K lines of code in their entire life.

      Who the hell know what CS is "for"? Personally I think it's for getting your foot in the door at a job interview because nobody bothers to check if you can actually program (like looking at a non trivial piece of your code) before they hire you.

    31. Re:which language is best? by martas · · Score: 1

      CS has nothing to do with programming languages. It's about PROGRAMMING.

      Uhhh... No. Saying CS is about programming is like saying engineering is about soldering, IMHO. Go to the cs graduate program page of any good uni, and dig through the faculty list. See how many work on software engineering.

    32. Re:which language is best? by flnca · · Score: 1

      Well, this code does the same as yours. I wrote it in 46 minutes, using only the ANSI C library.

    33. Re:which language is best? by flnca · · Score: 1

      Ah, I forgot to mention that fseeko() and ftello() are POSIX functions, but needed to process 64 bit files on 32 bit systems (when _FILE_OFFSET_BITS 64 is used).

    34. Re:which language is best? by meyekul · · Score: 5, Funny

      tail -n 100 /var/log/apache2/access_log | cut -f1 -d" " | sort | uniq
      ...
      I'm honestly curious how long it will take you to do it in C, with/without the DNS lookup. Post source if you don't mind.

      Not long at all...

      system("tail -n 100 /var/log/apache2/access_log | cut -f1 -d' ' | sort | uniq");

    35. Re:which language is best? by Anonymous Coward · · Score: 0

      Sadly, Mr Dziuba has the right idea but uses terrible examples in his blogpost.

      Wget for crawling tens of millions of web pages using a 10 line script? He doesn't understand crawling at scale.

      There's a lot more to it than just following links. For example, lots of servers will block you if you start ripping them in full, so you need to have a system in place to crawl sites over many days/weeks a few pages at a time. You also want to distribute the load over several IP addresses, and you need logic to handle things like auto generated/tar pits/temporarily down sites, etc. And of course you want to coordinate all that while simultaneously extracting the list of URLs that you'll hand over to the crawlers next.

      His other example is also bullshit. Tens of millions of webpages are not that much for a single PC, it hardly justifies using MapReduce, especially if you're only going to process pages independently with zero communication between processes.

      MapReduce is all about cutting the dataset into chunks, then alternating between 1) an (independent) processing phase on each chunk, and 2) a communication phase where the partial results are combined. And where this really pays off is when you have so much data that you need a distributed filesystem.

      looks like someone missed the point. ...could be the same type that goes to taco bell and thinks he can make the same meal at home cheaper, but first he'll need to buy a house, get a working kitchen, pots, pans, ingredients, etc...

    36. Re:which language is best? by vlm · · Score: 1

      Wget for crawling tens of millions of web pages using a 10 line script? He doesn't understand crawling at scale.

      There's a lot more to it than just following links. For example, lots of servers will block you if you start ripping them in full, so you need to have a system in place to crawl sites over many days/weeks a few pages at a time. You also want to distribute the load over several IP addresses, and you need logic to handle things like auto generated/tar pits/temporarily down sites, etc. And of course you want to coordinate all that while simultaneously extracting the list of URLs that you'll hand over to the crawlers next.

      Guess what wget can do?

      http://www.gnu.org/software/wget/manual/wget.html

      Its a little more advanced than "cat" with a http interface, in the same way that a 777 is a little more advanced than the Wright Flyer.

      (In all fairness, the point that you need a little iptables magic to fake your multiple ip addresses in addition to wget, if anything, proves his point further that multiple little tools work best)

      --
      "Science flies us to the moon. Religion flies us into buildings." - Victor Stenger
    37. Re:which language is best? by ShakaUVM · · Score: 1

      Yeah, that's about what I thought it would look like. =)

    38. Re:which language is best? by moonbender · · Score: 1

      Eh, CS doesn't necessarily have much to do with programming, either, it's certainly not "about" it. For instance, discussing the complexity of a problem is not programming, even algorithm design can only be called programming in a stretch.

      --
      Switch back to Slashdot's D1 system.
    39. Re:which language is best? by ShakaUVM · · Score: 1

      >>Why not just `sort -u`?

      Functionally equivalent. Doesn't change the fact that you can't uniq before the sort, AFAIK.

    40. Re:which language is best? by ShakaUVM · · Score: 3, Interesting

      Show me a new grad who is good at programming and I'll bet they didn't learn programming at university. A lot of new grads *think* they are good at programming. But apart from a handful here and there that cut their teeth on other projects, a new grad writing good code out of the gate is virtually unheard of. Hell, most people with 5 years working experience are crap.

      Most "real" CS people have been playing around with writing code since a young age. I'd written motion prediction code for a robot, an Axis and Allies simulator, a full AI suite, and a bunch of other stuff before I started college, but I think the university classes really polished my skills. Finite math taught me how to think about structuring loops so they always run correctly, my Theory class let me think about FSMs, CFGs, and Turing machines in a more logical manner, my programming languages and compilers classes really made me understand what was really happening when I hit cc (and also helped explain some of the bizarre compiler errors I'd seen over the years when my own compiler did the same thing), and most importantly, the UCSD CS TAs were absolute Nazis about proper coding technique. Not arbitrarily so, but if you've ever seen some code that made you want to punch someone, that's the sort of thing they knock 25% of your grade off for. Honestly, it really helped.

      You're right, though - Computer Science is a very weird mismash of different stuff all jumbled together.

      >>And even given the complete failure to actually learn anything that could be called science in their computer science degree 95% of the graduating class hasn't written more than 10K lines of code in their entire life.

      Mmm, just looking at my class assignments (that I saved) across 16 classes (quarters, not semesters), I wc at 20k lines of code. This doesn't count stuff that I wrote for fun, for work, or stuff that I deleted because it doesn't matter any more. The actual number should be several times that, that I wrote for school.

      IMO, if you're not writing software as a CS student, you're doing something wrong.

    41. Re:which language is best? by Anonymous Coward · · Score: 0

      The lesson is still, "don't reinvent the wheel unless you need a VERY special-purpose wheel!"

    42. Re:which language is best? by itlurksbeneath · · Score: 2, Insightful

      Actually, I have a masters in CS. I was trying to make a lexical pun of sorts saying it's not about "programming languages" but about "programming", which, in my mind, is more about the problem solving and design than the actual implementation of a particular program. Once you learn how to program - how to solve problems and design a solution - implementing it in any particular language is just a matter of getting the syntax right.

      The programming language itself is a tool. Any particular problem can have solutions in any number of languages, and certain languages are more suited than others for particular problem classes.

      --
      Have you ever considered piracy? You'd make a wonderful Dread Pirate Roberts.
    43. Re:which language is best? by Anonymous Coward · · Score: 0
      FWIW it took me about 45 seconds to write it in python. I'm using periods for indent here since leading space gets eaten.

      ips = []
      for x in open('/var/log/httpd/access_log').readlines()[-100:]:
      ....x = x.split()[0]
      ....if x not in ips:
      ........ips.append(x)
      print ips

      Still, it makes more sense to do it as a shellscript. The Unix credo has always been "tools, not solutions".

    44. Re:which language is best? by Schadrach · · Score: 2, Funny

      The problem being when the "piece of meat" in one case sues for sexual harassment. =p

    45. Re:which language is best? by bigrockpeltr · · Score: 2, Interesting
      what most people fail to realise is that tail,cut,sort,uniq are most likely written in C so why reinvent the wheel? that is the only reason to use shell scripting (when there are existing tools) but surely good luck implementing your command from scratchpurely in bash. technically in C you can just write

      system("tail -n 100 /var/log/apache2/access_log | cut -f1 -d\" \" | sort | uniq");

      and achieve the same result in 1 line as well :P

      --
      $ unzip, strip, touch, finger, grep, mount, fsck, more, yes,fsck,fsck,fsck,umount, sleep
    46. Re:which language is best? by Coryoth · · Score: 1

      You can save yourself a little code there with list comprehensions and the built in set type:

      print Set([x.split()[0] for x in open('/var/log/httpd/access_log').readlines()[-100:]])

      and python3 has set comprehensions which would save you the call to Set.

    47. Re:which language is best? by Anonymous Coward · · Score: 0

      Exactly. In his world he might be fine with the basic Unix set, but nobody with a brain would want to work with him as it is a recipe for killing ones career by not following latest trends in a smart and unique way, whether it is map reduce, percolator, GPGPU etc.

      MapReduce pays off only when you have huge amount of data (>10TB), you can exploit locality of data (n-dimensional space filling curve fit for your data?) and your computation is transfer speed limited, not seek-bound. You would like to decrease communication complexity between the nodes, hence the reason for combiners in Hadoop. It's nevertheless only a batch processing system and for real-time tasks you can't afford that.

    48. Re:which language is best? by Anonymous Coward · · Score: 0

      As a guy who's done DevOps for the past 10 years, I can tell you it's certainly not a crock of shit. It's also not mutually exclusive of this Taco Bell thing; in fact it's basically what DevOps is all about. The very idea of it is that sysadmins who can code are better than programmers who don't know how the OS works. I don't see how this could be considered a bad thing.

    49. Re:which language is best? by gstoddart · · Score: 1

      I asked him which programming language was his favorite, expecting it to be something like Lisp or Forth, but he said, "shell script." I was a bit surprised, but he said, "it lets me tie pieces in from everywhere and do it all with the least amount of code."

      Having known and learned from some wizened old UNIX geeks ... it's actually astounding how much functionality you can slap together with a well crafted bit of UNIX shell scripting.

      Now, sometimes it's not so great from a performance perspective -- all of those processes and pipes gets expensive. But, in terms of chewing through some data and performing a bunch of manipulations on it I'd say those old command-line tools that have been around for 30 years or so can be combined to do some remarkable things.

      Even if it's not the only thing in your toolkit, you could do worse than having some rudimentary working knowledge of shell scripts and at least grep, sed, tr and a couple of the other basic ones. The tools are stable, and to write the equivalent functionality from scratch would be big, error prone undertaking.

      --
      Lost at C:>. Found at C.
    50. Re:which language is best? by donscarletti · · Score: 1

      Are we all convinced that "DevOps" is not some kind of parody site or straw man? Surely nobody could write such non-sensical waffle and mean it.

      Seriously though, I think what he's trying to say is for individuals to take responsibility for solving the whole problem, from implementation to deployment. I personally do not like working in a niche all day anyway and I like to make sure that what I do is being used effectively and is working well, otherwise there is not much point of doing it to begin with. If I didn't care whether something I did was designed right, implemented right, tested right and deployed right as long as I did my bit, that would be my cue to find a new job. No point spending half my waking hours doing something that I don't care about.

      But seriously, I don't think he could have written it worse if he tried. I hope his code is better than his prose or he should get back into his sysadmin niche.

      --
      When Argumentum ad Hominem falls short, try Argumentum ad Matrem
    51. Re:which language is best? by Andrew+Cady · · Score: 2, Informative

      Wget for crawling tens of millions of web pages using a 10 line script? He doesn't understand crawling at scale.

      Wget is made for crawling at scale.

      There's a lot more to it than just following links. For example, lots of servers will block you if you start ripping them in full, so you need to have a system in place to crawl sites over many days/weeks a few pages at a time.

      wget --random-wait

      You also want to distribute the load over several IP addresses

      The way I do this with wget is to use wget to generate a list of URLs, then launch a separate wget process with varying source IPs specified with --bind-address. It would, however, be trivial to add a --randomize-bind-address option to wget source.

      and you need logic to handle things like auto generated/tar pits/temporarily down sites, etc.

      What makes you think you can't handle these things with wget?

      And of course you want to coordinate all that while simultaneously extracting the list of URLs that you'll hand over to the crawlers next.

      Again, why do you think wget is inadequate to this? It's not.

      Any custom-coded wget alternative will be implementing a great deal of wget. Most limitations of wget can be avoided by launching multiple wget processes, putting a bit of intelligence into the glue that does so. If that isn't enough, it probably makes sense to make minor alterations to wget source instead of coding something new.

      My point here is just that wget is way more awesome than you give credit.

    52. Re:which language is best? by BrynM · · Score: 1

      True. It will save you from invoking another binary though and having the ambiguity in the first place.

      --
      US Democracy:The best person for the job (among These pre-selected choices...)
    53. Re:which language is best? by greg1104 · · Score: 1

      Interesting bit of code, and well done to hash that out so fast. But tail doesn't work like that. It seeks to the end of the file, and works backwards from there in blocks. Like most re-implementations of the seemingly simple UNIX utilities, the one you've done here will be thrashed in a head-to-head performance test on real-world sized files, because you're reading forward from the beginning by character. That's actually demonstrating exactly why "Taco Bell Programming" can be deceptively powerful. The actual implementation details under the hood and feature sets of some of the basic UNIX and GNU tools are much more sophisticated than they appear. Had I been throwing you down a "beat this in C" example, it would have been one of the common ways I use egrep to find things in log files, and there you'd be hard harder pressed to match either the feature set or the performance of the shell result even given days of coding. That thing is way more sophisticated in how it works than any simple implementation could reinvent without a whole lot of work.

    54. Re:which language is best? by flnca · · Score: 1

      Yup, I know that. S/he wanted me to demonstrate it could be written in less than 1 hour, and that's what I did: I intentionally didn't try to reimplement the UNIX tools, only the essential functionality. So, my code doesn't seek backwards (I do have written code before that does just that), instead I keep line positions in a cycling buffer and scroll through them. Also note the setvbuf() call, which speeds things up by reading 10 megabytes at a time. The getc() call is a macro that expands to code that is executed in the cache of the CPU, so the result will be pretty fast. Granted, I haven't tested it with overly large files, but the performance won't be too shabby. But it certainly won't be as fast as tail.

    55. Re:which language is best? by flnca · · Score: 1

      But it's proof that a functional equivalent can be written by a C programmer in less than 1 hour! :)

    56. Re:which language is best? by flnca · · Score: 1

      With a 1 gigabyte file of random data, my program needs 21 seconds, while the tail version naturally completes within 0.011 seconds, so in this case, it'd be roughly 2000 times slower! :)

    57. Re:which language is best? by marcosdumay · · Score: 1

      "you need to have a system in place to crawl sites over many days/weeks a few pages at a time"

      You mean something like wget builtin systems?

      "You also want to distribute the load over several IP addresses, and you need logic to handle things like auto generated/tar pits/temporarily down sites, etc. And of course you want to coordinate all that while simultaneously extracting the list of URLs that you'll hand over to the crawlers next."

      Take a look at wget documentation sometime. Doing that only takes something to break files into pieces, wget, and a very very small amount of logic. That is probably what those other 9 lines of code are for.

    58. Re:which language is best? by flnca · · Score: 1

      However, with this little change, which I completed in less than 5 minutes, the program completes in only 0.056 seconds and makes it only 5 times slower than the tail version. ;)

      The setvbuf() in this case has the effect, that the fseek() will fetch a 10 megabyte-sized chunk upon the first read backwards from the end of file. This makes the inefficiency of repeated fseeko() calls for every character almost negligible. :)

    59. Re:which language is best? by flnca · · Score: 1

      Of course, but this was about whether it can be done by a C programmer in less than 1 hour.

    60. Re:which language is best? by duggy_92127 · · Score: 1

      UCSD's CS program was particularly good, I always thought.

      Also, I was a UCSD CS TA at one point... what year were you?

    61. Re:which language is best? by Krigl · · Score: 1

      Still one pipe more than necessary (if you have GNU tools):

      tallis:/home/krigl# tail -100 /var/log/apache2/access.log.1 | cut -f1 -d' ' | sort -u

      GNU sort has uniq's functionality implemented.

      --
      Troll 2.0 Fear my asocial networking!
    62. Re:which language is best? by gizmod · · Score: 1

      Never did a CS degree, but I thought they were mostly about a subset of Mathematics called Discrete Mathematics? At least to a large degree anyway. It's all about boolean logic, boolean algebra, data structures and algorithms. The "Programming Language" is largely immaterial. Most people who consider taking a CS degree, think, ah "computers and programming" where as they would be closer if they just thought, mathematics (perhaps a bit of philosophy ;) )

    63. Re:which language is best? by ShakaUVM · · Score: 1

      >>Of course, but this was about whether it can be done by a C programmer in less than 1 hour.

      Sure, and I give you kudos for it. But it does serve very nicely to show why I prefer to do things in shell script for things that shell script is good for. =)

    64. Re:which language is best? by ducky101 · · Score: 1

      A good analogy I read somewhere is that CS is as much about programming languages as Astronomy is about telescopes. Both are tools you use to perform the work and research in your respective field. That's why the professors at my uni never really cared what language we used to do the assignments as long as we could justify the techniques used.

  4. More crap from Ted Dziuba. by Anonymous Coward · · Score: 3, Insightful

    Good grief, I think this is yet another useless article from the Ted Dziuba/Jeff Atwood/Joel Spolsky crowd. They spew out article after article after article with, in my opinion, bullshit "insights" that don't hold any water in the real world. Yet they've developed such a large online following, mainly of "web designers", "JavaScript programmers" and "NoSQL DBAs", that it tricks a lot of people in the industry into thinking what they say actually has some usefulness, when it usually doesn't.

    Yeah, it's great when we can write a few shell or Perl scripts to perform simple tasks, but sometimes that's just not sufficient. Sometimes we do have to write our own code. While UNIX offers a very practical and powerful environment, we shouldn't waste our time trying to convolute its utilities to all sorts of problems, especially when it'll be quicker, easier and significantly more maintainable to roll some tools by hand.

    1. Re:More crap from Ted Dziuba. by moonbender · · Score: 1

      Yeah, it's great when we can write a few shell or Perl scripts to perform simple tasks, but sometimes that's just not sufficient. Sometimes we do have to write our own code. While UNIX offers a very practical and powerful environment, we shouldn't waste our time trying to convolute its utilities to all sorts of problems, especially when it'll be quicker, easier and significantly more maintainable to roll some tools by hand.

      Nice three sentence rebuttal!

      --
      Switch back to Slashdot's D1 system.
    2. Re:More crap from Ted Dziuba. by tompaulco · · Score: 1

      I had about a decade hiatus from programming but stepped back in about a year ago having picked up Java. After seeing me write quite a lot of code, some of my coworkers basically poo-pooed what I was doing saying that for anything that you want to do in Java, someone has already written it, and that ideally I shouldn't be writing any code at all. Well, I didn't want to argue with them, but to me, my time is worth more than that. I have started down the road of adding some libraries into my code that already did what I wanted, but i usually found that they did a heck of a lot more than what I wanted, and figuring out how to get them to do just what I wanted would take me longer than just writing my own classes and methods to do what I want. Of course, I am not about to go and redo imagio or anything like that, but I have to draw the line when downloading, reading the instructions and integrating someone elses library takes longer than just writing my own.

      --
      If you are not allowed to question your government then the government has answered your question.
    3. Re:More crap from Ted Dziuba. by Blakey+Rat · · Score: 1

      Yeah, it's great when we can write a few shell or Perl scripts to perform simple tasks, but sometimes that's just not sufficient. Sometimes we do have to write our own code. While UNIX offers a very practical and powerful environment, we shouldn't waste our time trying to convolute its utilities to all sorts of problems, especially when it'll be quicker, easier and significantly more maintainable to roll some tools by hand.

      What bugs me more is the assumption that there's some huge divide between "shell scripts" (no debugging! easy piecing together of tools!) and a modern language with a large library. At best it's a continuum.

      Look, if you have a 20 line shellscript doing something bug-free, that's going to be 20 lines in C# or Ruby or (insert your favorite) as well. There's no difference between one and the other... if anything, writing your 20 line of shellscript takes a significantly longer time to learn and requires tons of rote memorization.

    4. Re:More crap from Ted Dziuba. by Anonymous Coward · · Score: 0

      but I have to draw the line when downloading, reading the instructions and integrating someone elses library takes longer than just writing my own.

      Quite frankly, it sounds like those who looked down on your style were right.

      In this day and age, being a software engineer isn't so much about what languages you know and how well you know them, but about how well you know the libraries available to you and how well you know those.

      Languages are easy. They are all built on the same basic concepts. Libraries, not so much.

    5. Re:More crap from Ted Dziuba. by theshowmecanuck · · Score: 1

      And we wonder why we have bloat.

      --
      -- I ignore anonymous replies to my comments and postings.
    6. Re:More crap from Ted Dziuba. by Anonymous Coward · · Score: 0

      Who the hell modded this up? Ted Dziuba hates NoSQL.

    7. Re:More crap from Ted Dziuba. by Alex+Belits · · Score: 1

      No.

      "Library-based programming" is among the same diseases as "bug-driven development". A programmer should use libraries because they do what he needs, not because he can't do it and needs someone else to do it for him.

      --
      Contrary to the popular belief, there indeed is no God.
    8. Re:More crap from Ted Dziuba. by donscarletti · · Score: 1

      A hammer is better than a screwdriver. Firstly, it is faster to hammer in a nail than screw in a screw. Secondly a hammer can be used to shape hot metal, you can forge a screwdriver with a hammer but not forge a hammer with a screwdriver. Thirdly, a hammer can be used with a chisel as a substitute for a mallet (another useless tool). Thusly, anyone using a screwdriver (apart from unfastening legacy screwed-together systems) is obviously inexperienced or trying to show off.

      --
      When Argumentum ad Hominem falls short, try Argumentum ad Matrem
    9. Re:More crap from Ted Dziuba. by marcosdumay · · Score: 1

      That is why Unix phylosophi of "do only one thing and do it well" is so important.

  5. Software is not food by BSAtHome · · Score: 1

    You can easily have a little more or less salt, sugar or flour in your food. However, software is not so forgiving. Change one character and you screw up badly. Lets face it, software is hard to write and it is even harder to write good software.

    Although re-use is a good thing and scripting many common problems instead of coding in [insert low-level language] is also good. But this should be common sense for any /good/ programmer. Good tools make bad programmers look slightly less bad, but fuck up anyway. Good tools make good programmers gurus.

    1. Re:Software is not food by Anonymous Coward · · Score: 5, Funny

      "Compilers are like boyfriends, you miss a period and they go crazy on you."

    2. Re:Software is not food by TeknoHog · · Score: 1

      Change one character and you screw up badly. Lets face it,

      (I'd like to respond with something clever, but I'm afraid I'll negate my entire argument a'la Muphry.)

      --
      Escher was the first MC and Giger invented the HR department.
    3. Re:Software is not food by GiveBenADollar · · Score: 4, Insightful

      You can easily have a little more or less salt, sugar or flour in your food. However, software is not so forgiving. Change one character and you screw up badly..

      Just try substituting a tsp with a tbsp of salt in your favorite recipe and then tell me food it forgiving.

    4. Re:Software is not food by Anonymous Coward · · Score: 0

      I cook more often than most, and I never use recipes. You can't go very far in developing software with the same approach. Baking is closer to the strictness of software.

    5. Re:Software is not food by sakdoctor · · Score: 2, Interesting

      Had a friend confuse bulbs of garlic with cloves of garlic. Niiice.

    6. Re:Software is not food by T+Murphy · · Score: 3, Funny

      Had a friend confuse bulbs of garlic with cloves of garlic.

      My uncle made that mistake once. It resulted in everyone asking him for the recipe (true story).

    7. Re:Software is not food by vxice · · Score: 1

      and analogies are like people none of them are perfect, but some are good enough. They are used for their similarity in a few cases to demonstrate an idea. For if software was like food it would not be called software it would be called food and there would be no need for comparison.

      --
      every anarchist is a baffled dictator. Benito_Mussolini
    8. Re:Software is not food by Anonymous Coward · · Score: 0

      I did that once. Not a good experience.

    9. Re:Software is not food by Anonymous Coward · · Score: 0

      That sounds like a bad time. In fact, ENGLISH TRY SCROTUM STAB PARCEL!

      Sorry, went a little Tourette's there.

    10. Re:Software is not food by PatMcGee · · Score: 1

      My wife did that once with mustard powder when making deviled eggs. They came out ... a little on the warm side. So, we called them Szechuan Deviled Eggs, and now we do them that way all the time.

    11. Re:Software is not food by Anonymous Coward · · Score: 0

      Change one character and you screw up badly. Lets face it,

      (I'd like to respond with something clever, but I'm afraid I'll negate my entire argument a'la Muphry.)

      Nice try ;)

      (unless you were being factious, of course)

    12. Re:Software is not food by furbearntrout · · Score: 1

      facetious
      sorry

      --
      Crap. What did the new CSS do with the "Post anonymously" option??
    13. Re:Software is not food by NetNed · · Score: 1

      Well I would certainly substitute Trisodium Phosphate out of any recipe. They clean walls with that crap for pete sakes!

    14. Re:Software is not food by Anonymous Coward · · Score: 0

      So that they could find an antidote?

    15. Re:Software is not food by dkf · · Score: 1

      Had a friend confuse bulbs of garlic with cloves of garlic.

      My uncle made that mistake once. It resulted in everyone asking him for the recipe (true story).

      A lot of people don't put enough garlic in their food when cooking, so his recipe was probably just how it was originally intended to be. Whether the under-use is through being afraid of garlic or just through not using fresh enough bulbs, I don't know.

      --
      "Little does he know, but there is no 'I' in 'Idiot'!"
    16. Re:Software is not food by Jorl17 · · Score: 1

      I meant parent, of course, but at least I see he got modded funny!

      --
      Have you heard about SoylentNews?
    17. Re:Software is not food by snookerhog · · Score: 1

      either we have the same friend, or this is quite a common mistake.

    18. Re:Software is not food by Kiaser+Zohsay · · Score: 1

      Just wash it down with a little Holy Water, and everyone will be OK before sunrise.

      --
      I am not your blowing wind, I am the lightning.
  6. I write all my code in brainfuck by MyDixieWrecked · · Score: 1

    ...you insensitive clod!

    8 commands. period. no more, no less. Super maintainable, cross platform and...

    bah, who am I kidding?

    --



    ...spike
    Ewwwwww, coconut...
  7. What a relief! by macraig · · Score: 1

    When I saw the title I thought it was a book review of a new O'Reilly release of that name.

  8. Once again, The Onion shows us the way by Anonymous Coward · · Score: 0

    From over a decade ago: Taco Bell's Five Ingredients Combined In Totally New Way

    I think of that article every time Taco Bell adds a "new" item on their menu.

    1. Re:Once again, The Onion shows us the way by antifoidulus · · Score: 1

      Bill Hicks was making that joke even before the inion(and I wouldn't be surprised if domeone was doing it before him). It goes something along the lines of "Why does taco bell even have a menu? Wouldn't it just be easier if they asked you 'How do you want your beams and flour arranged?""

    2. Re:Once again, The Onion shows us the way by williamyf · · Score: 1

      Nope, Hammer and Champy (Reengineering the Corporation. ISBN 0-88730-687-X Chapter 11 "One Company's Example: Taco Bell") showed us the way.

      Salud!

      --
      *** Suerte a todos y Feliz dia!
  9. I limit myself to 2 bits by topham · · Score: 2, Funny

    I limit myself to two bits. A 0 and a 1.

    Why would I need 8?

    1. Re:I limit myself to 2 bits by The_mad_linguist · · Score: 2, Funny

      I limit myself to two ones, very carefully timed.

    2. Re:I limit myself to 2 bits by Anonymous Coward · · Score: 0

      To count to 2.

    3. Re:I limit myself to 2 bits by martas · · Score: 1

      i limit myself to a butterfly.

  10. Code reuse, junk food example? by syousef · · Score: 1, Interesting

    Seriously, what's going on with the articles here? "My code is like a Taco"? Is that flying because of CmdrTaco's username?

    Nothing new here:
    1) Code reuse. Woopdeedoo. The whole industry has invested heavily in many paradigms for reusing code: The reusable library, module reuse, object reuse etc.
    2) Stringing Unix commands together is news? Did I just take a Deloriane back to 1955? (Well that's a slight exaggeration. Unix has only been around since the 70s)

    Finally, who wants to compare their code reuse to a crappy junk food chain? I'd rather think of myself as a professional that earns commensurate pay than a junk food server who needs to be trained to ask "would you like fries with that?".

    --
    These posts express my own personal views, not those of my employer
    1. Re:Code reuse, junk food example? by Tablizer · · Score: 5, Interesting

      I've found the best reuse comes from simple modules, not from complex ones that try to do everything. The one that tries to do everything will still be missing the one feature you need. It's easier to add the features you need to the simple one because it's, well, simpler. With the fancier one you have to work around all the features you don't need to add those that you do need, creating more reading time and more mistakes.

    2. Re:Code reuse, junk food example? by syousef · · Score: 4, Insightful

      I've found the best reuse comes from simple modules, not from complex ones that try to do everything. The one that tries to do everything will still be missing the one feature you need. It's easier to add the features you need to the simple one because it's, well, simpler. With the fancier one you have to work around all the features you don't need to add those that you do need, creating more reading time and more mistakes.

      Agreed. With most complex frameworks there is also the additional overhead of having to do things in a particular way. If you try to do it differently or need to add a feature that wasn't designed for in the original framework, you often find yourself fighting it rather than working with it. At that point you should ditch the framework, but often it's not your decision to make, and then cost of redoing things once the framework is removed makes it impractical.

      --
      These posts express my own personal views, not those of my employer
    3. Re:Code reuse, junk food example? by seebs · · Score: 1

      About twenty years ago, I was dating someone who was working on what she called the "Taco Bell theory of fashion", which was that you have a smallish number of items of clothing which all go together.

      I think it's just that they're a particularly impressive example, familiar to a lot of people, of an extremely broad variety of foods made from a very small number of ingredients. ... And yes, stringing commands together is, empirically, news to many people, because I keep finding people who can't do it.

      --
      My blog: http://www.seebs.net/log/ --- My iPhone/iPad app: http://www.seebs.net/seebsfrac/
    4. Re:Code reuse, junk food example? by Anonymous Coward · · Score: 0

      I think the point is that "crappy" food chain is more successful and has more money than you will ever have or see in your life and they did it with only a couple ingredients. If you can't see that then you are as lost as the rest of the sheeple.

      With that said, I'm not sure this article makes any sense. Basically I think it boils down to "make things as simple as possible, but not simpler." -- Einstein, Ockham, et al

    5. Re:Code reuse, junk food example? by aztracker1 · · Score: 2, Insightful

      I think this is one of the reasons why jQuery has become so popular... it does "just enough" in a consistent (relatively) way, with a decent plug-in model... so stringing things together works pretty well, and there is usually a plugin for just about anything you'd want/need. Though it's maybe a bit heavier than hand crafted code, stringing jQuery and plugins is less debt, with more reuse. I do have a few things in my current js toolbox... namely some JS extensions, json2 (modified), date.js, jquery, jquery templates and jquery validation... from there I tweak the ui with PIE and wire up the validators... jquery is about 70k (min uncompressed), with 60k for my js/browser extensions, and 60k for jquery extensions... another 20K in site/app scripts... usually dead cache load is around 400k on a page (around 220k with gzip) and in about 12-16 http requests... using deferred script calls, under a second for initial load, and under another 1.4 seconds for js & binding... A bit thick, but works very well.

      --
      Michael J. Ryan - tracker1.info
    6. Re:Code reuse, junk food example? by jmt9581 · · Score: 1

      Seriously, what's going on with the articles here? "My code is like a Taco"? Is that flying because of CmdrTaco's username?

      Nothing new here: 1) Code reuse. Woopdeedoo. The whole industry has invested heavily in many paradigms for reusing code: The reusable library, module reuse, object reuse etc. 2) Stringing Unix commands together is news? Did I just take a Deloriane back to 1955? (Well that's a slight exaggeration. Unix has only been around since the 70s)

      Finally, who wants to compare their code reuse to a crappy junk food chain? I'd rather think of myself as a professional that earns commensurate pay than a junk food server who needs to be trained to ask "would you like fries with that?".

      Maybe you didn't read the article, but you've totally missed the point. The point is that these duct-taped solutions with shell scripts are often good enough for the first draft of an application. The contrast is with many people trying NoSQL and MapReduce systems because they're the flavor-of-the-day. The point is that the Unix paradigm is powerful enough for the first draft of many systems, and depending on your needs might be enough for the final draft. Also, you can be anyone you want in the analogy. Maybe you invented Taco Bell. Maybe you're the person who invented the 4-ingredient Chalupa, which probably makes millions of dollars per year. I never thought that I would be a junk food server. That's clearly a job for a script. :)

      --

      My blog

    7. Re:Code reuse, junk food example? by syousef · · Score: 1

      ... And yes, stringing commands together is, empirically, news to many people, because I keep finding people who can't do it.

      I don't know how to do surgery, but that doesn't mean basic surgical technique is news.

      --
      These posts express my own personal views, not those of my employer
    8. Re:Code reuse, junk food example? by alienzed · · Score: 1

      Software with a side of fries.... I think you're on to something!

      --
      Never say never. Ah!! I did it again!
    9. Re:Code reuse, junk food example? by yndrd1984 · · Score: 1, Flamebait

      ... And yes, stringing commands together is, empirically, news to many people, because I keep finding people who can't do it.

      I don't know how to do surgery, but that doesn't mean basic surgical technique is news.

      This is what's in my newspaper:

      Politician is corrupt!
      Priest molested kids!
      People celebrate holiday!
      Religious people ignore science!
      Flood plain gets flooded!

      If that counts as news, so does this.

    10. Re:Code reuse, junk food example? by Anonymous Coward · · Score: 0

      This is what's in my newspaper:

      Politician is corrupt!
      Priest molested kids!
      People celebrate holiday!
      Religious people ignore science!
      Flood plain gets flooded!

      If that counts as news, so does this.

      You must have missed the 'news' about the strikes in France.

    11. Re:Code reuse, junk food example? by syousef · · Score: 1

      This is what's in my newspaper:

      Politician is corrupt!
      Priest molested kids!
      People celebrate holiday!
      Religious people ignore science!
      Flood plain gets flooded!

      If that counts as news, so does this.

      Prefix each sentence with "Particular" or "A particular" and it becomes news. Particular instance of event is news even if event is common. The general case is not. This is not news.

      --
      These posts express my own personal views, not those of my employer
    12. Re:Code reuse, junk food example? by sco08y · · Score: 1

      Finally, who wants to compare their code reuse to a crappy junk food chain? I'd rather think of myself as a professional that earns commensurate pay than a junk food server who needs to be trained to ask "would you like fries with that?".

      TFA has it backwards; the whole point of UNIX utilities is that there are thousands of them, not a handful.

      If you just combine just a few primitive operations you get something like LISP, a wonderful thing to be sure, but it's the opposite of what the article is advocating.

    13. Re:Code reuse, junk food example? by scourfish · · Score: 2, Insightful

      Your argument is terribly flawed; Taco Bell doesn't serve French fries.

    14. Re:Code reuse, junk food example? by mini+me · · Score: 1

      Not exactly true. From Wikipedia:

      The Dominican Republic, Puerto Rico, Costa Rica, Canada, and Spain are the only countries where Taco Bell offers French fries. Having this product in 2 varieties: Fiesta Fries (Topped Fries in Spain) (Like Nachos Supreme, changing nachos for fries) and regular French fries.

    15. Re:Code reuse, junk food example? by Anonymous Coward · · Score: 0

      A problem with code reuse is that really good code can stick around for years and easily exceed the longevity and memory of the people using it.

      A long time ago, we had a very odd process that required a bizarre couple of coding backflips while blindfolded. It worked through a particularly strange data problem and gave us a pretty odd output. Many systems later came directly from that code and other support systems were written to expect input in this weird format.

      But the original strange process that inspired this stuff is long gone. Most of the people here have never heard of it. The closest they get to it are seeing comments in the code that say things like "Nobody remembers why this has to be this way, but it has to stay this way for things to work properly!"

      So even though we no longer use it and no longer need it, we'd have to scrap and recode a lot to get rid of it. Meanwhile leaving it alone is not hurting anything particularly. Stuff works. We get the results we expect.

      But while this ancient and no longer needed stuff stays in production, every month there are fewer and fewer people left working here who remember why it was ever used to begin with.

    16. Re:Code reuse, junk food example? by Anonymous Coward · · Score: 0

      I've found the best reuse comes from simple modules, not from complex ones that try to do everything. The one that tries to do everything will still be missing the one feature you need. It's easier to add the features you need to the simple one because it's, well, simpler. With the fancier one you have to work around all the features you don't need to add those that you do need, creating more reading time and more mistakes.

      Agreed. With most complex frameworks there is also the additional overhead of having to do things in a particular way. If you try to do it differently or need to add a feature that wasn't designed for in the original framework, you often find yourself fighting it rather than working with it. At that point you should ditch the framework, but often it's not your decision to make, and then cost of redoing things once the framework is removed makes it impractical.

      I've found myself on this conundrum a few times - often times its easier to rethink what you are trying to do than to change the tool that you are trying to do it with. After time I tend to develop a larger view of the task at hand and identify that there are requirements I had early on that I either implemented incorrectly or did not fully understand the big picture at the time. Frequent self assessment has often times corrected my development course sufficiently that I find that the existing tools are more than sufficient to fill my needs, I just need to be willing to bend myself to work with them. Often, I find requirements I thought I had were false and when dropping those I can significantly simplify and advance my efforts much more efficiently.

    17. Re:Code reuse, junk food example? by Anonymous Coward · · Score: 0

      Seriously...I've worked with a number of developers that balked about being sysadmins. I just quit the place so posting A/C. One guy before me basically quit b/c of that reason. Another guy is terrified of it.

      And the thing is, the guys that don't know unix tools spend *HOURS* reimplementing them. And then they think they're special because they have a library. The number of times I saw them reimplement uniq by just adding things to a set was terrifying. Don't get me started on cut/awk/sed in text processing...people pulling up CSV parsers and shit...

      Code Reuse is good. But you've got to avoid "Not Invented Here" disease.

    18. Re:Code reuse, junk food example? by ajlitt · · Score: 1

      Did I just take a Deloriane back to 1955?

      No, but DJ Delorie will take your source back to 1986.

    19. Re:Code reuse, junk food example? by Anonymous Coward · · Score: 0

      Finally, who wants to compare their code reuse to a crappy junk food chain? I'd rather think of myself as a professional that earns commensurate pay than a junk food server who needs to be trained to ask "would you like fries with that?"

      The first thing I thought was "If this guy is comparing his coding advice to how Taco Bell operates, I'm not interested at all".

      If his ideas hold up to the analogy, they will be very cheap, use sub-standard components which are starting to turn bad, it will be assembled by sub-minimum wage workers, and poorly, make the management a lot of money due to high volume, and leave the customer feeling as if they've been kicked in the stomach by a Mule. Oh, and then about an hour after you start running it, all your 'data' is going to come rocketing back out in a horrible, aweful mess, and you find out the hard way nothing was done to standards.
      There's nothing about how Taco Bell operates that I want to use in my code. Great, they recombine the same 5 lowest-grade-possible-under-FDA-guidelines ingredients, IT SHOWS. In fact, I'm pretty sure they used the same ingredients yesterday that they were using last week, because the inspector only checks them once a month.

    20. Re:Code reuse, junk food example? by Kiaser+Zohsay · · Score: 1

      Not exactly true. From Wikipedia:

      The Dominican Republic, Puerto Rico, Costa Rica, Canada, and Spain are the only countries where Taco Bell offers French fries. Having this product in 2 varieties: Fiesta Fries (Topped Fries in Spain) (Like Nachos Supreme, changing nachos for fries) and regular French fries.

      Taco Bell test marketed french fries in the south eastern US several years ago. The fries themselves were basic and kind on run-of-the-mill. They didn't last very long.

      --
      I am not your blowing wind, I am the lightning.
  11. Once again, The Onion shows us the way by sootman · · Score: 3, Funny

    From over a decade ago: Taco Bell's Five Ingredients Combined In Totally New Way

    I think of that every time Taco Bell adds a "new" item to their menu.

    --
    Dear Slashdot: next time you want to mess with the site, add a rich-text editor for comments.
  12. From TFA by Jaime2 · · Score: 3, Interesting
    From the article:

    I made most of a SOAP server using static files and Apache's mod_rewrite. I could have done the whole thing Taco Bell style if I had only manned up and broken out sed, but I pussied out and wrote some Python.

    It seems that only software he knows counts as "Taco Bell ingredients". I'd trust Axis (or any other SOAP library) much more than sed to parse a web service request. Heck, if you discount code that you don't directly maintain, SOAP requires very little code other than the functionality of the service itself. I had a boss like this once. He would let you do anything as long as you used tools he was familiar with, but if you brought in a tool that he didn't know, you had to jump through a thousand extra testing hoops. He stopped doing actual work and got into management in the early 90's, so he pretty much didn't know any modern tool. He once made me do a full regression test on a 50KLOC application to get approval to add an index to a Microsoft SQL Server table.

    1. Re:From TFA by metamatic · · Score: 2, Interesting

      Heck, if you discount code that you don't directly maintain, SOAP requires very little code other than the functionality of the service itself.

      However, any time you change the API--even to make a change that no client should notice--you have to regenerate the glue code from the WSDL and recompile all your client programs. Which is why these days, I build REST-based web services.

      --
      GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
    2. Re:From TFA by Anonymous Coward · · Score: 0

      It seems that only software he knows counts as "Taco Bell ingredients".

      Or in other words, software which is only barely adequate, maintained by a group of monkeys, and which dumps your entire database in a massive uncontrollable flood resulting in a horrific mess that will take you days to recover from.

      I don't think comparing ANY piece of code to an ingredient at Taco Bell is a Good Thing.

  13. Simplicity by SimonInOz · · Score: 5, Insightful

    The complexity people seem to delight in putting into things always amazes me. I was recently working at a major bank (they didn't like me eventually as I'm bad at authority structures). Anyway the area I was working on involved opening bank accounts from the web site. Complicated, right? The new account holder has to choose the type of account they want (of about 7), enter their details (name, address, etc), and press go. Data gets passed about, the mainframe makes the account, and we return the new account number.

    Gosh.

    So why, oh tell me why, did they use the following list of technologies (usually all on the same jsp page) [I may have missed some]
    HTML
    CSS
    JSP (with pure java on the page)
    Javascript (modifying the page)
    JQuery
    XML
    XSLT
    JDBC with Hibernate
    JDBC without Hibernate
    Custom Tag library
    Spring (including AOP)
    J2EE EJBs
    JMS

    Awesome. All this on each of the countless pages, each custom designed and built. Staggering. In fact, the site needed about 30 pages, many of them minor variations of each other. The whole thing could have been built using simple metadtata. It would have run faster, been easier to debug and test (the existing system was a nightmare), and easily changeable to suit the new business requirements that poured in.

    So instead of using one efficient, smart programmer for a while, then limited support after that, they had a team of (cheap) very nervous programmers, furiously coding away, terrified lest they break something. And yes, there were layers and layers of software, each overriding the other as the new programmer didn't understand the original system, so added their own. Palimpsest, anyone?

    And yet, despite my offers to rebuild the whole thing this way (including demos), management loved it. Staggering.

    But I still like to keep things simple. And yes, my name is Simon. And yes, I do want a new job.

    --
    "Cats like plain crisps"
    1. Re:Simplicity by MichaelSmith · · Score: 5, Insightful

      Complexity creates bugs

      Bugs create employment

    2. Re:Simplicity by swamp+boy · · Score: 3, Interesting

      Sounds like your coworkers are busily filling out their resumes with all the latest fad software tools. Like you, I despise such thinking, and it's why I pass on any job opportunity where 'web apps' and 'java' are used in the same description.

    3. Re:Simplicity by Anonymous Coward · · Score: 0

      That's why I pass on any job opportunity where "web apps" or "java" are mentioned.

    4. Re:Simplicity by SanityInAnarchy · · Score: 1

      Out of curiosity, what would you use to write a web app in?

      --
      Don't thank God, thank a doctor!
    5. Re:Simplicity by Anonymous Coward · · Score: 0

      Simon, like the BOFH? Maybe you should take a hint from the stories and find creative solutions to management problems :)

    6. Re:Simplicity by bmo · · Score: 1

      "A bucket of scrap a day keeps the overtime on its way"

      --
      BMO

    7. Re:Simplicity by NorbrookC · · Score: 3, Insightful

      It seems to me that the point is that programmers have a variant of "if all you have is a hammer, every problem is a nail" saying. In this case, they have a huge toolbox, so every time they need to drive a nail, it means that they must design and use a methodology that will, eventually, cause the nail to be pushed into place, instead of just reaching for the hammer and getting the job done.

    8. Re:Simplicity by SixDimensionalArray · · Score: 1

      Hello, devil's advocate here... I totally agree with the sentiment that keeping things simpler is preferable, and that there are problems created by programmers who either don't care, are trying to preserve their job security (or pad their resumes with buzzwords), don't know better, or don't take the time to think out the design/maintainability of what they are doing.

      On a recent project to provide real-time, asynchronously updating, data-driven, interactive graphs and gauges on a modern web application, I had no choice other than to make use of: HTML, CSS, jQuery, Javascript, XML, Flash, PHP, CodeIgniter framework, SQL (MySQL), SimpleUnit, etc. It is always frustrating to realize that we basically have to program in 6 or so different languages/tools (or more) to accomplish something. As you pointed out, even I probably omittted a plethora of other little utilities, supporting infrastructure or OS functionality that was used to support this app.

      So, I know your circumstances might have been specific, but, how else do you propose one to meet such a requirement, given today's bag of technology options? The complexity today is just the nature of the beast........ which is why it's ever more important to try darn hard to K.I.S.S.

      -6d

    9. Re:Simplicity by swamp+boy · · Score: 1

      Really, I don't see anything wrong with using Java to write web apps. The problem is when all the 30 different libraries, frameworks, extensions, etc. get thrown in. I steer clear of anything that even mentions Hibernate, Spring (esp. AOP), and any mix of more than about 4 different technologies.

    10. Re:Simplicity by antifoidulus · · Score: 1

      Part of it is how managers get paid. In a lot of organizations theore people you have under you the higher your salary. So it behooves the manager to make the requirements as complicated as possible in order to rationalize a large head count.

    11. Re:Simplicity by Anonymous Coward · · Score: 0

      There are many reasons this could have happened. The most common one I have seen is that software was evolved. Because software is changeable, deviation from any simple initial design happens quickly. It is easy to see a complex system that has been developed over 15 years and think about how much simpler you could make it. Naive young programmers often think that their predecessors were incompetent. Dealing with changing requirements, integration with systems that no longer exist, problems with older versions of APIs and development tools all effect decisions made in the past.

      The book: The Psychology of Computer Programming has a great example of this happening. It is often impossible to determine a program is overly complex due to limitations of the designers or due to factors you don't know about.

    12. Re:Simplicity by SimonInOz · · Score: 1

      What should you write web pages in?

      Where possible, I generate them from metadata using Java beans in simple JSP pages.

      If you have lots of static pages, what's wrong with HTML + CSS ?

      However, we seem to be an incredibly long way from the ideal. Graphic designer ought to be able to format pages so they look great. Programmers ought to be able to code pages so they do the right stuff. We are doing, in my opinion, a miserable job of simplifying development. I have been developing code for almost 40 years, and it has become drastically more difficult - certainly complex - in the last 10-15 (I am reasonably sure it isn't me).

      But your point is well made - what's actually good, as opposed to trendy? We have a flurry of frameworks, each more bizarre than the next, each claiming to be the solution to all problems, then fading.

      Survivors include Java, JSP, SQL, HTML/CSS, SQL (I am not too keen on Hibernate, personally, it seems to hinder as much as help). Spring seems to be doing really well and I quite like it - used with restraint. I avoid AOP like the plague, because you can never tell what code you are working with, it's too confusing.

      We really need to remember the simple rule: if you code something that is at the limits of your understanding, you won't be able to debug it. (That's a misquote from someone, can't remember who).

      --
      "Cats like plain crisps"
    13. Re:Simplicity by fotbr · · Score: 1

      I've always heard it as "If you write your code as cleverly as possible, then you're not capable of debugging it" -- which I'm sure is also a misquote.

    14. Re:Simplicity by Migala77 · · Score: 1

      Complexity creates bugs

      Bugs create employment

      Bugs create work.
      work != employment

    15. Re:Simplicity by SimonInOz · · Score: 3, Interesting

      “Debugging is twice as hard as writing code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it. - Brian Kernighan”

      --
      "Cats like plain crisps"
    16. Re:Simplicity by Darinbob · · Score: 1

      It used all those technologies because they're all fashionable - somewhere at sometime someone decided they needed the new cool thing out there, and because they had a little bit of power or persuasion you got stuck having to follow along.

    17. Re:Simplicity by eeyoredragon · · Score: 1

      I was always impressed by one tried and true patterns I discovered at one location of employment: the (jsp -> XML using a jsp -> XSL) -> html/javascript held together with a jsp -> html frameset trick. Toss in liberal doses of "pure Java" plus the action for the form from the page being another jsp with a bunch of pure Java and one jsp tag to do a redirect to another jsp consisting of again pure Java and a redirect back to the original page (or a Struts action).

      And just to keep you from being bored, toss in several include files and external .js files. And make sure it outputs obviously incorrect HTML that I.E. manages to somehow render anyway (and only I.E.).

      And of course, your IDE won't know WTF to do with it, so you might as well view it in a text editor.

    18. Re:Simplicity by ignavus · · Score: 1

      Complexity creates bugs

      Bugs create employment

      Employment creates complexity.

      (Ever since the first program, the IT industry has just been looping.)

      --
      I am anarch of all I survey.
    19. Re:Simplicity by MichaelSmith · · Score: 1

      My god. Thats how that one gigabyte (of code) java application was created. I am not kidding, we really do have a one gig app. There is a lot of (I think) generated UML generating java in there. Nobody is really sure how it hangs together, only that it does.

    20. Re:Simplicity by Anonymous Coward · · Score: 0

      ...instead of just reaching for the hammer and getting the job done.

      Some computer science luminary a while back was saying something to the effect that if you ask a programmer to write some simple program; the beginning programmer will promise something by the end of the day but won't even have something that compiles by the end of the week, the intermediate programmer will promise something by the end of the weak and the basic features working by the end of the week but it will be a long way from a polished program, and the expert programmer will say that it's not worth his time because such programs already exist.

    21. Re:Simplicity by HyperQuantum · · Score: 1

      Let's call it the "reverse hammer-nail syndrome": they want to get the nail in place, but they think 'ooh, that hammer is soo outdated, gotta use something new and shinier', and they use some weird combination of other tools. And then the result isn't pretty.

      --
      I am not really here right now.
    22. Re:Simplicity by rwa2 · · Score: 1

      fortune -m "cleverly as possible"

      (Don't have an install for fortune nearby to test, tho :/ )

    23. Re:Simplicity by bored · · Score: 1

      The complexity people seem to delight in putting into things always amazes me.

      I'm with you there, but having been involved in wedging (is there a better description?) a real-time management and monitoring app into a web application, I'm here to tell you that shit is necessary. We didn't use JSP, instead PHP, so you can replace the JSP specific technologies with the PHP ones. The end result is the same, it was a huge fsking stack of mismashed technologies. In the beginning it was simple, but pretty soon we needed prettier graphics, better ways to allow the user to continue interacting with the web pages while we were running some complex operation, etc. In the end for web development it ends up being necessarily to have a big collection of languages/libraries/technologies because non of that crap really fits together.

      Basically, at a minimum you need the server side processing, a data storage engine, a marshaling engine to get the data to the web client. A client side display interface (HTML), something to unmarshall the data, UI interaction and styling. Its pretty disgusting. As someone who does a lot of C++ programming, I have great respect for "real" web developers. The ones that flip between SQL/PHP/Javascript/HTML/CSS/etc, a dozen different helper libraries/frameworks and a good graphics editor (cause frankly graphic artist never give you shit that can be directly used).

      The problem isn't the web developers its the fsking web, which is a giant goddam mess of evolved technologies that don't fit together, and sure as hell weren't designed for creating rich web applications.

    24. Re:Simplicity by Anonymous Coward · · Score: 0

      Complexity creates bugs

      Bugs create employment

      Employment leads to suffering?

    25. Re:Simplicity by SanityInAnarchy · · Score: 1

      If they're truly static, HTML+CSS is good, though I find I prefer Haml syntax to HTML, or just a template in general. Even "static" pages, and even with CSS, having the ability to loop or refactor a repetitive bit of markup into a partial or method makes it massively better than straight HTML.

      Of course, if they're truly static, I'd cache them...

      But I think my point stands -- passing on something merely because it has the words "Web app" and "Java" in the job description doesn't make a whole lot of sense. I would avoid anything with "Java" in the name, but that's only because I can think of other languages I'd much rather be using -- Ruby, Python, Lisp, or at the other end, C or assembly. If the problem is the number of technologies combined, it seems you'd avoid web apps in any language, not just java. I don't see anything particular about the combination of "Java" and "Web app" that makes it worse than either by itself.

      --
      Don't thank God, thank a doctor!
    26. Re:Simplicity by SimonInOz · · Score: 1

      No more than 4 different technologies ... so you aren't going to work for that bank I worked for, where, as has been pointed out, successive programmers had been resume mining, each adding a new layer of dubiously helpful "technology".

      The sad thing is this is what we are doomed to currently. When you go into an existing project, you have no control over what happened before, and if there has been no control (I'm looking at you, software architects) then passing geeks will have gone wild with the "latest and greatest" technology.

      You know, I wrote my first code (in FORTRAN) in 1970. I can't believe we are still hacking away at for loops 40 years later. What have we been smoking?

      --
      "Cats like plain crisps"
    27. Re:Simplicity by Anonymous Coward · · Score: 0

      Complexity creates bugs

      Bugs create employment

      Employment creates Complexity

      And it cycles forever until the inevitable day where the code is so broken and fragmented that nothing can be fixed without breaking something else, and the program declines into uselessness because there are so many people trying to save their jobs that poorly written, useless, unneeded code gets implemented and just makes it worse. Eventually everybody is fired and they hire 1-5 good programmers to re-do it right, or they close their doors.

  14. Reference ? by dargaud · · Score: 1, Funny

    So now Taco Bell is a reference for both cooking and programming ? I ate there exactly once and it tasted like sucking ass off a dead donkey. I pity the people who've been forced to eat there since a young age and now think this is 'food'. Yeah, flamebait, etc...

    --
    Non-Linux Penguins ?
    1. Re:Reference ? by Anonymous Coward · · Score: 1, Funny

      So now Taco Bell is a reference for both cooking and programming ? I ate there exactly once and it tasted like sucking ass off a dead donkey. I pity the people who've been forced to eat there since a young age and now think this is 'food'. Yeah, flamebait, etc...

      We should all be thankful we do not have your culinary experiences.

    2. Re:Reference ? by lostmongoose · · Score: 2, Insightful

      I'm more disturbed by the fact that you know what dead donkey ass tastes like...

    3. Re:Reference ? by multipartmixed · · Score: 1

      If you had paid attention in shell class and Taco Bell -- you would know that the Taco Bell ingredients are great for quickly passing through your pipeline.

      Just - try to pipe it through tail instead of head.

      --

      Do daemons dream of electric sleep()?
    4. Re:Reference ? by SixDimensionalArray · · Score: 1

      We are one step closer to idiocracy! I for one welcome my new "AOL Time Warner Taco Bell US Government Long Distance" overlords.

      Mmmm.. foamy lattes.

      -6d

    5. Re:Reference ? by Anonymous Coward · · Score: 1, Funny

      I ate there exactly once and it tasted like sucking ass off a dead donkey.

      Err...So there is a qualitative difference between sucking ass of a live and a dead donkey - and you know this difference?!

    6. Re:Reference ? by Anonymous Coward · · Score: 0

      It's what they serve at Taco Bell?

      *ducks*

    7. Re:Reference ? by couchslug · · Score: 2, Funny

      That post is worthless without pics!

      --
      "This post is an artistic work of fiction and falsehood. Only a fool would take anything posted here as fact."
    8. Re:Reference ? by msaavedra · · Score: 2, Funny

      Taco Bell ingredients are great for quickly passing through your pipeline

      That's why one of my friends calls the place Taco Bowel. It's much more descriptive than the commonly-heard Taco Hell.

      --
      "Any fool can make a rule, and any fool will mind it."
      --Henry David Thoreau
    9. Re:Reference ? by baegucb · · Score: 1

      Would a "whooosh" be an appropriate comment now?

    10. Re:Reference ? by NetNed · · Score: 1

      I just don't want to think about how he is coming upon the experience of not only knowing the difference, but knowing it well enough to compare it to a Taco Bell meal. I also don't want to know how much alcohol it took to ascertain such discerning taste buds.

    11. Re:Reference ? by Anonymous Coward · · Score: 0

      No.

  15. Unexpected by DWMorse · · Score: 3, Interesting

    Unexpected comparison of trained coders / developers, many with certifications and degrees, to untrained sub-GED Taco Bell employee... well... frankly, knuckle-draggers.

    Also, I don't care if your code is minimal and profitable, if it gives me a sore stomach as Taco Bell does, I'm opting for something more complex and just... better. Better for me, better for everyone.

    I get the appeal of promoting minimalistic coding styles with food concepts, and it's a refreshing change from the raggedy car analogies... but come on. Taco Bell? Really??

    --
    There's a spot in User Info for World of Warcraft account names? Really?
    1. Re:Unexpected by Marcika · · Score: 1

      Unexpected comparison of trained coders / developers, many with certifications and degrees, to untrained sub-GED Taco Bell employee... well... frankly, knuckle-draggers.

      >

      Oh my, aren't we thin-skinned today?

      I think you missed the point. The equivalent of the "blank-slate" Taco Bell employee is the blank-slate computer that only executes instructions given to it. The persons who get compared to good developers are the Taco Bell recipe writers, who managed to deliver instructions that yield quick, cheap, consistent and idiot-proof solutions. Many coders with degrees can't say as much.

    2. Re:Unexpected by The+Clockwork+Troll · · Score: 1

      I think it's an apt analogy. Nowhere does Ted comment on the quality of the software per se, just its maintainability/robustness, and ability to make money. Generations of (insert your favorite crappy vendor here) software have taught us that the two are not related.

      --

      There are no karma whores, only moderation johns
    3. Re:Unexpected by publiclurker · · Score: 1

      Well, they could have referred to Rico's tacos, the truck down the street from me, but then nobody would get the reference. Most people, on the other hand, know about taco bell, even if the Hispanics in the area refer to it as American food.

    4. Re:Unexpected by Anonymous Coward · · Score: 0

      ... but come on. Taco Bell? Really??

      I like Taco Bell.

      Granted, I've probably eaten a lot of their employees' spit over the years (hopefully they'll eventually be able to replace much of their workforce with machines - less likely to spit in food). And a while back there were some troubling reports of mistreatment of immigrant workers who harvested their produce.

      But, as a low tier scientist, Taco Bell is pretty much the only restaurant I can afford to take my family to: just a bit over a dollar for a cheesy bean and rice burrito - feed the whole family for under $10. Taco Bell is not without their problems but at least they don't break the bank like Burger King or Carl's Jr. - and, as someone on a science salary, I really appreciate that.

    5. Re:Unexpected by Anonymous Coward · · Score: 0

      Taco Bell is the perfect analogy. Taco Bell proves that even simplicity can lead to lousy outcomes. Taco Bell also proves that there are plenty of people who are satisfied with junk.

    6. Re:Unexpected by Reziac · · Score: 1

      Especially when you consider that Taco Bell produces tacos filled with meat analog...

      --
      ~REZ~ #43301. Who'd fake being me anyway?
    7. Re:Unexpected by Anonymous Coward · · Score: 0

      Think of it more as comparing you to the food scientists and industrial designers who are allowed 8 ingredients and told to make them into as many different food items (and create the serving utensils used to make them) as they can that can be put together from scratch in less than 10 seconds by the knuckle draggers you mention. I'd say that's more appropriate. You and they, the coders and the scientists, are building the tools that everyone else must be able to use simply and without fail.

    8. Re:Unexpected by enrevanche · · Score: 1

      The recipe writers may be indeed smarter than the average Taco Bell employee, but the result is still garbage. Using Taco Bell as an analogy is a bad choice unless you're assuming that the outcome is of poor quality.

    9. Re:Unexpected by Francofille · · Score: 1

      Yeah it's not a good analogy, Taco Bell as an image has too much baggage to do justice to the idea.

      Taco Bell is barely food and if you ate it for every meal it would destroy your body over time resulting in all kinds of internal systems going more and more haywire. Moreover it has the reputation for being crap but is popular because it's cheap. In the software world even crap isn't cheap. Somehow it survives by corporate or government mandates. More like the school cafeteria. Taco Bell also thrives because, disgusting as their food is conceptually, it can be yummy. Crap software is not yummy to use.

      Software designed from simple, powerful, well-written, well-tested, well-understood tools is supposed to be like the organic, hormone free, free-range minimalist menu, right? They should've chosen from among the plethora of national chains that serve that kind of food ... like ... um ...

  16. Right! by Anonymous Coward · · Score: 0

    Well, actually left, left, left.

  17. Chalupa++ by Anonymous Coward · · Score: 0

    If the goal is to provide high level primitives that can be aggregated to meet the requirements of a specific task ... It would seem to me this boils down to being so obvious as to not be worth stating.

    Is it not always in the best interests of the designer to seek to use the best tool for the job?

    Using a shell script is not better than writing a perl program to accomplish the same goal. There are only syntatic differences in how the solution is encoded. Architecturally there is zero difference.

    I am wary of examples derived to fit nicely into a pardigram.

    Shell programming tends often to break down very rapidly when there is a need for domain specific data processing. It is great for sorting, filtering or aggregation of results unfortunatly not so much beyond that.

    I would agree with the statement high level RAD design tools are underused and undervalued in general.

  18. It's easy to overthink even in the simplest cases by Meriahven · · Score: 3, Insightful

    I once had a pair of command line tools that both printed lists of words (usernames, actually, one per row), and I wanted to find out how many unique ones there were. Obviously, the right hand side part of the pipeline was going to be something along the lines of " | sort -u | wc -l", but then I got utterly stuck by the left hand side. How can I combine the STDOUTs of two processes? Do I really need to resort to using temporary files? Is there really no tool to do the logical opposite of the "tee" command?

    You are probably thinking: "Oh, you silly person, that's so trivial, you must be very incompetent", but in case you aren't, you might want to spend a minute trying to figure it out before reading on. I even asked a colleague for help before realizing that the reason I could not find a tool for the task was quite an obvious one: such a tool does not exist. Or actually it kinda does, but only in an implied sense: what I was hoping to achieve could be done by the humble semicolon and a pair of parens. I only had to put the two commands in parens to run them in a subshell, put a semicolon in between, so one will run after the other is finished, and I was done. I guess it was just that the logical leap from "This task is so simple, there must be a tool for this" to "just run the commands one after another" was too big for my feeble mind to accomplish.

    So I guess the moral of the story is, even if you want to use just one simple tool, you may be overthinking it :-)

  19. What is Devops? by hawguy · · Score: 3, Insightful

    I read the linked Devops article and know even less about than before I read the article. It's full of management buzzwords and I'm sure a CIO would love it, but what does it mean?

    How does Devops help?

    The Devops movement is built around a group of people who believe that the application of a combination of appropriate technology and attitude can revolutionize the world of software development and delivery.

    ...

    Beyond this multi-disciplinary approach, the Devops movement is attempting to encourage the development of communication skills, understanding of the domain in which the software is being written, and, crucially, a sensitivity and passion for the underlying business, and for ensuring it succeeds.

    oh yeah, that clears it up. All it takes is a passion for the underlying business and it's sure to succeed!

    1. Re:What is Devops? by zort · · Score: 0

      Devops is about dissolving the line between developers and system administrators. The dissolving of the ITIL model to a more lean organization.

      In a closed source environment, devops cant exist. So devops perhaps becomes the evolution of IT shop as a result of open source.

      Yes lots of management words - which may put off some people who like to rage against the corporate overlord.

      Ted Dziuba in his blog has very clearly expressed his disgust for anyone who cares about their career other than in the 8 hours between 9-5.

      He very much likes the divide between developers and administrators, which as a contract programmer is his bread and butter.

      But if you’ve worked in a company with strict developer/administrator divisions, you will know how much animosity there is the different management enforced factions point fingers at each others.

      In terms of criticism of devops, there is plenty from developers (in this case) and plenty from system administrators. IOM most of it boils down to fear and not wanting to learn new things. I.e. developers who just want to keep tossing code in to production and never seeing it again, and system administrators who want to shove problems back to developers.

      I support devops because it emphasizes the ability of people to solve problems, rather than a management structure.

    2. Re:What is Devops? by moonbender · · Score: 1

      Wow, that last sentence you quoted sure needs an analytical mind to parse.

      --
      Switch back to Slashdot's D1 system.
    3. Re:What is Devops? by DaMattster · · Score: 1

      Yikes, that article quote sounds like something the PHB would say.

    4. Re:What is Devops? by DragonWriter · · Score: 1

      I read the linked Devops article and know even less about than before I read the article. It's full of management buzzwords and I'm sure a CIO would love it, but what does it mean?

      Never heard of it before, but after doing some quick reading -- the linked page, the Wikipedia page, and some of the pages linked from the Wikipedia page -- it seems like DevOps is just this: just as agile methodologies focus on frequent small releases with close and frequent interaction between developers and business end users, DevOps promotes frequent small releases with close and frequent interaction between the developers building the software and the technical operations staff that will be responsible for the operation of the software once it is live (also, QA as well as operations.)

      Underneath the buzzwords, it seems to just be the recognition that technical operations, like business, needs to be involved early and often with the development process, since if they aren't you lose many of the benefits that agile methods are intended to provide.

    5. Re:What is Devops? by HyperQuantum · · Score: 1

      Reminds me of today's Dilbert comic: http://dilbert.com/2010-10-25/

      --
      I am not really here right now.
    6. Re:What is Devops? by visualight · · Score: 1

      The problem with "DevOps" is that that it is a large complicated re-articulation of common sense. In the environment you described (not in mine) developers have not enough perspective on managing systems because of this cultural divide. The solution is to hire and train some of your sysadmins from the dev pool begin cross training. Eliminate the divide. What these guys want to do instead is write books and give talks to phb's.

      --
      Samsung took back my unlocked bootloader because Google wants me to rent movies. They're both evil.
  20. Generalized experts by Anonymous Coward · · Score: 1, Interesting

    This is why I hire generalised experts, not specified experts. The wider the knowledge set of a developer, the better holistic solutions they can provide. Have an oracle dba? Every problem is solved with oracle. Got a java-only dev? Everything solved in java.

    Tool sets and solutions on a large/broad project are often solved best with a broad range of technologies understood and built by a team.

  21. The cause of bloatware. by w0mprat · · Score: 1

    If your software project is comparable to crappy fast food then your doing something wrong. Code obesity is killing our kids! On a more serious note, if you're reusing code you may be bringing along a lot of unnecessary fat that you really didn't need to. If you really want a lean mean program you will not be bringing in feature-laden libraries, you'll have to rewrite some stuff yourself.

    The very top chefs and cooks will use 5-8 ingredients at the most to make dishes, they understand the importance of simplicity. A few really good ingredients combined expertly is by far the winning strategy. Something like a McDonalds hamburger will have dozens of ingredients when you count all the additives, without which it would be unpalatable.

    I've seen some pretty impressive meals with even less ingredients. I worked in a restaurant that perhaps had no more than 20 ingredients on the entire menu at a time, if you exclude condiments.

    Seasoned programmers will cook code with color and flavor, not coloring and flavoring.

    --
    After logging in slashdot still does not take you back to the page you were on. It's been that way for 20 years.
    1. Re:The cause of bloatware. by multipartmixed · · Score: 1

      > The very top chefs and cooks will use 5-8 ingredients at the most to make dishes

      Curry, rice, chicken, oil, salt.

      That's eight, and boring!

      --

      Do daemons dream of electric sleep()?
    2. Re:The cause of bloatware. by The_mad_linguist · · Score: 1

      Chicken, flour, salt, pepper, MSG.

      Oh, wait, that's the recipe for KFC chicken*.

      *Now that KFC no longer is an acronym, I don't have to worry about PNS syndrome. Yes, those are the actual ingredients.

  22. Robustness by Timmmm · · Score: 1

    Shell scripting is fine for stuff that *only you* are going to use. It's just not robust enough for use in anything important, that more than one person might actually use. For example, handling paths with spaces is pretty damn hard - loads of scripts can't handle them.

    1. Re:Robustness by Anonymous Coward · · Score: 0

      For example, handling paths with spaces is pretty damn hard - loads of scripts can't handle them.

      \

    2. Re:Robustness by rcp · · Score: 1

      The problem's not with the tool...

      If you (or the people supplying you with shell scripts) are having problems with spaces in pathnames, use double-quotes around your path references. Or backslash-escape the spaces if you must. And use the -0 arguments where appropriate (like with find and xargs).

      If this (or another type of difficult input) gets too tedious, substitute perl - its quoting operators can make awkward backslash-escaping disappear.

      - Richard

    3. Re:Robustness by Timmmm · · Score: 1

      Wait, so your solution to "spaces are hard in bash" is: 1. It's not a problem with bash, 2. Use perl?

      The most hideous example of spaces in bash is trying to send a file with spaces using scp. You have to manually escape them using sed.

    4. Re:Robustness by rcp · · Score: 1

      My solutions do include using the right tool for the job - if you're getting tripped up by a few references to paths containing spaces then you're doing it wrong. If you'd need to do _lots_ of path manipulation and thus lots of escaping, then doing it in bash makes no sense. With mastery of the tools, the question of "which tool?" is "where is this easier to type?"

      Sending with scp works easily, all you need are some quotes - the following will work fine:
      scp "A File Called Wanda" remote:/tmp

    5. Re:Robustness by Timmmm · · Score: 1

      If you'd need to do _lots_ of path manipulation and thus lots of escaping, then doing it in bash makes no sense.

      Exactly my point. Pretty much all code involves path manipulation, and *robust* code will have to escape it properly. Since that is a hassle in bash, it's not the best choice for robust code.

      And re scp, I meant:

      scp some_file remote:"/tmp/Directory With Spaces"

      I doubt most people would remember to run that path through sed unless they happened to notice it not working.

  23. Taco Bell® tasty fake food, anyone?! by Type44Q · · Score: 1

    ...by mixing-and-matching roughly eight ingredients

    Funny thing, there: it's more like hundreds of ingredients, if you count an ingredient as... well, an ingredient. Hell, even their "tortillas" alone probably have at least three different kinds of preservatives in them. Sure they'll kill you... but hey, in theory your corpse won't need as much embalming if you need enough 7-Layer burritos!

  24. Jim Gaffigan's experience: by gblackwo · · Score: 3, Funny

    Mexican food's great, but it's essentially all the same ingredients, so there's a way you'd have to deal with all these stupid questions. "What is nachos?" "...Nachos? It's tortilla with cheese, meat, and vegetables." "Oh, well then what is a burrito?" "Tortilla with cheese, meat, and vegetables." "Well then what is a tostada?" "Tortilla with cheese, meat, and vegetables." "Well then what i-" "Look, it's all the same shit! Why don't you say a spanish word and I'll bring you something." - Jim Gaffigan

    1. Re:Jim Gaffigan's experience: by KingAlanI · · Score: 1

      +1 Funny.
      I had long since noticed that a taco was just a hard-shell tortilla/burrito. :)
      (I often just crush the taco into taco salad, since the thing's probably going to break on me anyways. That becomes even closer to nachos. :P)

      --
      I listen to both RIAA and non-RIAA stuff if I like the music, tangential business/politics nonwithstanding.
    2. Re:Jim Gaffigan's experience: by FatAlb3rt · · Score: 1

      Exactly what I was thinking - here's the video.

    3. Re:Jim Gaffigan's experience: by sootman · · Score: 1

      From the show "Silver Spoons" in the mid/late-1980s:
      "What's not to like about Italian food? It's meat, cheese, tomatoes, pasta..."
      "Exactly! That's all it is--meat, cheese, tomatoes, and pasta!"

      --
      Dear Slashdot: next time you want to mess with the site, add a rich-text editor for comments.
  25. Please stop the metaphors by Anonymous Coward · · Score: 1, Interesting

    Software development is a craft with already half-a-century of knowledge, full of characteristics of its own. We should stop trying to adapt examples of other craft/engineering/whatever and focus more on ours. We already have some good ideas of what works and what doesn't, and running to the methodological fad of the week is one that doesn't.

    Frankly, getting ideas on how to program from how Taco Bell cooks its food? I wonder if I would ever bother to ask cooking tips from RMS.

    1. Re:Please stop the metaphors by Sulphur · · Score: 1

      If RMS wrote a software cookbook, I would be interested in reading it.

  26. Let me tell you a story by Giant+Electronic+Bra · · Score: 5, Interesting

    Once, about 20 years ago, I worked for a company who's line of business generated a VERY large amount of data which for legal reasons had to be carefully reduced, archived, etc. There were various clusters of VMS machines which captured data from different processes to disk, from where it was processed and shipped around. There were also some of the 'new fangled' Unix machines that needed to integrate into this process. The main trick was always constantly managing disk space. Any single disk in the place would probably have 2-10x its capacity worth of data moving on and off it in an given day. It was thus VITAL to constantly monitor disk usage in pretty much real time.

    On VMS the sysops had developed a system to manage all this data which weighed in at 20-30k lines of code. This stuff generated reports, went through different drives and figured out what was going in where, compared it to data from earlier runs, created deltas, etc. It was a fairly slick system, but really all it did was iterate through directories, total up file sizes, and write stuff to a couple report files, and send an email if a disk was filling up too fast.

    So one day my boss asks me to write basically the same program for the Unix cluster. I had a reputation as the guy that could figure out weird stuff. Even had played a small amount with Unix systems before. So I whipped out the printed Man pages and started reading. Now I figured I'd have to write a whole bunch of code, after all I'm duplicating an application that has like 30k lines of code in it, not gigantic but substantial. Pretty soon though I learned that every command line app in Unix could feed into the other ones with a pipe or a temp file. Pretty soon I learned that those apps produced ALL the data that I wanted and produced it in pretty much the format that I needed. All that I really had to do was glue it together properly. Pretty soon I (thank God it starts with A) I found awk, and then sed. 3 days after that I had 2 awk scripts, a shell script that ran a few things through sed, a cron job, and a few other bits. It was maybe 100 lines of code, total. It did MORE than the old app. It was easy to maintain and customize. It saved a LOT of time and money.

    There's PLENTY to recommend the KISS principle in software design. Not every problem can be solved with a bit of shell coding of course, but it is always worth remembering that those tools are tried and true and can be deployed quickly and cheaply. Often they beat the pants off fancier approaches.

    One other thing to remember from that project. My boss was the one that wrote the 30k LoC monstrosity. The week after I showed her the new Unix version, I got downsized out the door. People HATE it when you show them up...

    --
    "Malo periculosam, libertatem quam quietam servitutem." -- Jefferson
    1. Re:Let me tell you a story by oldhack · · Score: 2, Funny

      You had it coming, smart ass.

      --
      Fuck systemd. Fuck Redhat. Fuck Soylent, too. Wait, scratch the last one.
    2. Re:Let me tell you a story by 19thNervousBreakdown · · Score: 3, Interesting

      How, exactly, are they brittle? I've heard this term used a number of times, but never actually seen a prediction of brittleness be an accurate predictor of any amount of bugs, maintenance issues, or really any negative outcome. As far as I can tell, it's just a weasel word to be used when you don't like something for aesthetic reasons or understand it fully.

      So, prove me wrong. Explain exactly what's bad about using code that's been more heavily used and tested in production systems than just about anything else for more than 20 years.

      --
      <xml><I><am><so><damn>Web 2.0</damn></so></am></I></xml>
    3. Re:Let me tell you a story by Jaime2 · · Score: 2, Insightful

      BTW, awk is a programming language. Really, all you did was to write their process in a different language, not convert it from a custom program to some built in tools.

      As a side note, I have a hard time with the concept that it took the VMS guys 30000 lines of code to do what could be done with a handful of regular expressions. They were either really bad at it, or it had grown for years and nobody had the guts to purge the dead code.

    4. Re:Let me tell you a story by rolfwind · · Score: 1

      One other thing to remember from that project. My boss was the one that wrote the 30k LoC monstrosity. The week after I showed her the new Unix version, I got downsized out the door. People HATE it when you show them up...

      Not knowing your situation, it's just possible you made her look bad to her superiors as her 30k line program probably was an investment of money on the company' part and now seemed to be a waste of money. Perhaps by taking a bit longer and somehow crediting your boss for the inspiration, you could have saved your job.

      It may sound like brownnosing and dishonesty, and that her superiors would like the honesty, but from a boss's perspective, if you aren't willing to mutually scratch the last bosses back, what is the likelihood you'll do it with the next boss?

    5. Re:Let me tell you a story by Anonymous Coward · · Score: 1, Insightful

      Yeah I've heard it before too. The trick is that he's either trolling or, more likely, coming from the Windows world.

      The perception is that point-and-click administration in Windows is more "professional" and less buggy than "lowly" scripts. Of course anyone who is a true admin knows that's the polar opposite of the the truth. And why one well-paid Unix admin can outperform 10 MCSEs struggling to keep their servers afloat. Microsoft has gotten better lately wrt tools, but overall Windows servers still are light years behind a *nix server with solid hardware. That's the root of the issue imho.

    6. Re:Let me tell you a story by Anonymous Coward · · Score: 0

      Yeah, Unix is great but I think pipes and awk are a bit brittle for production.

      Dude, there are some big important systems on Wall St, with pretty high uptime requirements and multi-million dollar consequences for failure, that depend on piped unix utils. Just sayin'....

    7. Re:Let me tell you a story by Giant+Electronic+Bra · · Score: 1

      Oh, it was office politics. I was doing a decent job, but my boss was definitely the insecure type, lol.

      I think they honestly just couldn't wrap their heads around the fact that I could reduce their code bloat to a few 100 lines of scripting. I didn't do it to make anyone look bad, I did it purely because it was the logical way to execute a task I was assigned.

      Now, I may not be the MODEL employee in every respect, but I'm a pretty good team player. That particular team had its issues though, lol. Ah well, it was all good. Haven't really had to work for anyone since then pretty much, consulting suites me fine.

      --
      "Malo periculosam, libertatem quam quietam servitutem." -- Jefferson
    8. Re:Let me tell you a story by Giant+Electronic+Bra · · Score: 3, Informative

      Sure, awk is a programming language. It is also a command line tool. A bit more flexible than most, but you can't really draw a line between something that is a programming language and something that is a 'built in tool'.

      I really have no idea WHY their code was so large. It was all written in FORTRAN and VMS is honestly a nightmarishly complicated operating environment. A lot of it is probably related to the fact that Unix has a much simpler and more orthogonal environment. Of course this is also WHY Unix killed VMS dead long ago. Simplicity is a virtue. This is why Windows still hasn't entrenched itself forever in the server room. It lacks the simple elegance of 'everything is a byte stream' and 'small flexible programs that simply process a stream'. Those are powerful concepts upon which can be built a lot of really complex stuff in a small amount of code.

      --
      "Malo periculosam, libertatem quam quietam servitutem." -- Jefferson
    9. Re:Let me tell you a story by symbolic · · Score: 2, Insightful

      This kind of story makes me laugh when I see/hear anecdotes that have management talking about metrics like LoC.

    10. Re:Let me tell you a story by Eskarel · · Score: 0

      They're brittle in that the conditions they operate in must not change. If any single one of the tools you're running on changes its input or output even slightly the whole thing can fall apart in a rather spectacular manner. The same is true if you change the specification even a little bit. There's also no real debuggers for shell script so it's going to be a serious pain the rear to actually fix it if it does break. Metaphorically if you try to bend them at all they shatter rather spectacularly, they are brittle.

      Now certainly the unix tool set is a fairly mature product, so the likelihood of inputs or outputs changing dramatically isn't huge, and system APIs can and do change as well, but generally speaking, a program can be tweaked a little more easily than a shell script.

      Now you can of course write brittle programs, but it's easier to write non brittle ones than in shell script.

    11. Re:Let me tell you a story by Blakey+Rat · · Score: 1, Interesting

      And why one well-paid Unix admin can outperform 10 MCSEs struggling to keep their servers afloat.

      Speaking of weasel-words, why are you setting up an unfair comparison? Why if the Windows admins are "well-paid" as well? What happens if the Windows admin is good, but doesn't have an MCSE?

      What universe are you living in where there are no good Windows admins and no bad Unix admins? I can tell you from experience: there are good and bad of both. (The worst, however, are Lotus Notes admins. Ugh.)

      Microsoft has gotten better lately wrt tools, but overall Windows servers still are light years behind a *nix server with solid hardware.

      Ok I'll bite: how? In what way are they behind? What tools do they lack?

      Please make sure your argument applies in 2010, i.e. don't give me examples from Windows NT 4 like so many *nix fans usually do.

    12. Re:Let me tell you a story by interval1066 · · Score: 1

      "The week after I showed her the new Unix version, I got downsized out the door. People HATE it when you show them up..."

      I thank the digital gods I never worked for such a person. I can't think of a instance where some one above me considered me a liability because I did something clever.

      --
      Python: 'And then suddenly you have a language which says "we're all stuck with whatever the whiniest coder wants".'
    13. Re:Let me tell you a story by Darinbob · · Score: 1

      I found a lot of long-term VMS programmers tend to be somewhat "inside the box" in their thinking. They may have spent a lot of time doing one problem really well. Not to paint them all this way, but I just happen to see more of this sort of corporate suit-and-tie programmers on mainframes or VMS, and more the the laid back hippie types on Unix.

      Plus you have additional issues with VMS. You need to worry about batch processing, managing your io/cpu usage. You don't have nice filename globbing, you don't have simple bytestream files (copying even one file can be more complex than "copy a b"). It's just harder in VMS. Though it's likely to be more efficient on VMS at the same time (especially during the time frame when VMS was popular).

    14. Re:Let me tell you a story by Securityemo · · Score: 3, Insightful

      The likelihood of pipe I/O changing in the basic UNIX toolkit is near zero. Or is it just that you (and/or managers and other "people-person" types) need someone to sign the dotted line for you to feel certain that things are as they should?

      --
      Emotions! In your brain!
    15. Re:Let me tell you a story by Americano · · Score: 4, Insightful

      This seems to be an odd criticism.

      It's like calling perl/python/C subroutines "brittle" because if you change the arguments or return values of any of them, all hell can break loose.

      'Brittle' to me means that ridiculous assumptions don't hold true *often*, leading to breakage, like this gem I found the other day in a developer's installation script:

                envfile = `ls -1tr /tmp/*.tar | tail -1`
                cp ${envfile} /apps/prod
                tar -xvf /apps/prod/${envfile}

      In other words - the envfile is "the single most recent tar file in the /tmp directory," with no checks or verification to ensure that it was the right one before you blasted it on into production.

      That's what I'd call 'brittle' programming, anyway - likely to break, and break spectacularly because you haven't thought through your requirements clearly, or bothered to verify that inputs are reasonable and sane.

    16. Re:Let me tell you a story by Giant+Electronic+Bra · · Score: 1

      Yeah, for some types of applications VMS was quite well suited.

      I know what you mean about the VMS guys. Back in the 80's I was in a LARGE engineering group. They had a cluster of VMS machines that supported around 1000 interactive users. Getting them to do ANYTHING, like set up a file share with our OS9/68k testing platforms was a nightmare, lol.

      Then again most of the users were running huge engineering simulations in FORTRAN batch jobs too, so it was wonderful for them.

      Overall I'll take Unix. It may not make everything dirt simple, but it is far more likely your problem can be solved easily and quickly.

      --
      "Malo periculosam, libertatem quam quietam servitutem." -- Jefferson
    17. Re:Let me tell you a story by Jaime2 · · Score: 1

      This is why Windows still hasn't entrenched itself forever in the server room. It lacks the simple elegance of 'everything is a byte stream' and 'small flexible programs that simply process a stream'. Those are powerful concepts upon which can be built a lot of really complex stuff in a small amount of code.

      Windows has 'everything is an object' instead of 'everything is a byte stream', with PowerShell it's more like 'everything is a stream of objects'. Neither is really any easier. I can replicate the features of sed and awk that you used in any one of five technologies on Windows, most of them free (as in beer) and two come pre-installed. Windows has a higher penalty for spawning processes than *nix variants, so streaming between stand alone utilities can be slow. However, Windows has excellent support for using shared memory to load the same library in several processes, so the whole object oriented approach works well on Windows.

      UNIX is dying a quick death, mostly at the hands of Linux, but partly to Windows. At work, our official primary platform is AIX, secondary is iSeries, and the third platform is Windows. Yet, we have fifty times as many Windows servers as the other two combined and more Linux than AIX.

      I hear a lot of people say that Windows is having a hard time entrenching itself in the server room, but I know a lot of companies that have thousands of Windows servers. The building where I work has a ratio of about 1 production Windows server for every four employees. If you count non-production servers, we have more Windows servers than people.

    18. Re:Let me tell you a story by MightyMartian · · Score: 1

      First point - Generally speaking everyone uses the GNU toolset nowadays, and even there there has been some effort to maintain a level of compatibility with older variants ala BSD. Frankly I haven't had an issue like that in 20 years.

      Second point - Generally shell scripts are fairly discrete in size. I don't know too many people who thousand line shell scripts. The point of shell scripts is that you're using the toolset and the script is just doing some branching and exits. You're not writing a whole damned program here, just something to do some conditional tests and control flow. If you're getting so big you need a debugger, then you've probably passed the point where use of Bourne shell and its descendants is advised.

      Third point - What can be easier than opening up your favorite text editor, making a couple of changes and ./myawesomescript.sh?

      --
      The world's burning. Moped Jesus spotted on I50. Details at 11.
    19. Re:Let me tell you a story by 19thNervousBreakdown · · Score: 2, Funny

      It's like you've purposefully made an entire post full of weasel words, and even sentences! "Metaphorically if you try to bend them at all they shatter rather spectacularly, they are brittle." Well done, sir.

      --
      <xml><I><am><so><damn>Web 2.0</damn></so></am></I></xml>
    20. Re:Let me tell you a story by Jaime2 · · Score: 1

      Sure, awk is a programming language. It is also a command line tool.

      perl and javac are command line tools too. I'd say it's pretty clear that awk is a programming language and using it constitutes creating code that has to be maintained rather that using a tool that will be maintained by someone else. If you put together your script with bash, find, and ls, that would meet the spirit of the article linked in the summary.

    21. Re:Let me tell you a story by badboy_tw2002 · · Score: 2, Insightful

      Why would you assume he's talking about pipe I/O. If you're talking portability and dependencies, then yes, I'd say something that uses a bunch of smaller tools might have more brittleness than something that is entirely contained in code controlled by the maintainer. Its really not that far a stretch to say that you upgrade a machine and a newer version of some utility changes some output your script depends on, and boom, your process now comes to a halt. That's what brittle means in this situation.

    22. Re:Let me tell you a story by Eskarel · · Score: 1

      How brittle something is and how likely it is to actually break are two totally separate things.

      Shell scripts are brittle because as a whole, and as far as their individual parts go, they assume a certain input set and generate a certain output set. If these assumptions turn out to be incorrect they will fail, sometimes spectacularly, and often it will take a serious amount of time and effort to determine exactly where the problem is.

      That doesn't mean they're actually going to break, or that their brittleness is actually a problem. As I said, the GNU toolset is very mature and there isn't an awful lot of change. The likelihood that your script is going to be required to bend in such a way that it breaks is almost non existent.

      That doesn't mean that the scripts aren't brittle.

    23. Re:Let me tell you a story by LingNoi · · Score: 4, Insightful

      and how is that any different from a python library being updated and changing your program. Completely pointless argument.

    24. Re:Let me tell you a story by LingNoi · · Score: 1

      That's just shitty programming and has nothing to do with anything.

    25. Re:Let me tell you a story by LingNoi · · Score: 2, Insightful

      C++ libraries are brittle because as a whole, and as far as their individual parts go, they assume a certain input set and generate a certain output set. If these assumptions turn out to be incorrect they will fail, sometimes spectacularly, and often it will take a serious amount of time and effort to determine exactly where the problem is.

      Fixed that for you. In other words your argument can be applied to any programming anywhere.

    26. Re:Let me tell you a story by MightyMartian · · Score: 1

      You can't claim they're brittle because of conflicts due to altered arguments and then admit that the GNU toolset has been stable for years.

      And as another responder to you pointed out, library changes creating incompatibilities is far worse in some languages.

      At any rate, I'll wager if I dug up the awk scripts I'd written fifteen years ago, they'd work just fine.

      --
      The world's burning. Moped Jesus spotted on I50. Details at 11.
    27. Re:Let me tell you a story by Anonymous Coward · · Score: 1, Insightful

      Yeah, Unix is great but I think pipes and awk are a bit brittle for production.

      One reason I would tend to stay away from shell scripts is that they're not brittle enough. I do scientific programming and I would rather have a program crash hard and obvious than have it silently "fix" an error and give the wrong result.

      If I use a language like Java then I can write a program where unless everything is exactly as I expect then there's a full crash (array out of bounds, etc.). But that seems to be harder with shell scripts.

    28. Re:Let me tell you a story by Kjella · · Score: 3, Insightful

      LOCs is roughly as meaningless as valuing a document by its word count. You could spend tons on research on something summed up in a few pages, or get an endless word diarrhea of mindless babble spewed out at 300 WPM. But people need to measure progress. Yes, I've seen how it gets when nobody measures progress and everyone pretends the last 10% of code will suddenly turn a turd into a gem, if so expect the people with survival skills to disappear some 80% into the project. Another disastrous variation is to leave it entirely up to the subjective opinion of the manager, which in any sizable company means your career depends on your favor with the PHB and his lying skills compared to the other PHBs.

      Saying it's bad is like shooting fish in a barrel. Coming up with a good system of objectively measuring code design and quality that works in a large organization is ridiculously hard. Particularly since everybody tries to wiggle out of the definitions and go with what you measure, if you made avoiding LoC a metric then the lines would compacted to the point of obfuscation with hideous cross calling to save lines. You want people to hit a sane level of structuring and code reuse, neither LoC bloat nor 4k compos.

      --
      Live today, because you never know what tomorrow brings
    29. Re:Let me tell you a story by Americano · · Score: 1

      Thanks for that insightful comment. Would you care to explain what YOU consider to be 'brittle' programming, if you don't think the sample qualifies? Or did you just come here to underscore our understanding that brittle code is shitty?

    30. Re:Let me tell you a story by cratermoon · · Score: 3, Informative

      Well, Linux IS Unix, just without the trademark, but I didn't really come here to correct your misconception on that.

      What I wanted to highlight was the reality behind your statements "we have fifty times as many Windows servers as the other two combined" and "The building where I work has a ratio of about 1 production Windows server for every four employees. If you count non-production servers, we have more Windows servers than people."

      This is most certainly not because Windows is so much better or more popular than the other platforms at your place of work. Any experienced sysadmin who is not a Microsoft apologist will confirm that for any typical datacenter server function, it's necessary to have more instances of Windows to get the same capacity, reliability and uptime as few instances of other server operating systems. It's just the nature of the Microsoft stack that effective load-sharing and failover are a necessity in capacity planning. Anyone who argues that a single instance of Windows is equal to a single instance of AIX or Linux has simply never been part of real world datacenter administration.

      In short, your employer may have a lot more Windows servers than anything else, but that certainly doesn't mean Windows is better or more popular -- it just demonstrates how the TCO of Windows is terrible.

    31. Re:Let me tell you a story by Anonymous Coward · · Score: 0

      I hear a lot of people say that Windows is having a hard time entrenching itself in the server room, but I know a lot of companies that have thousands of Windows servers. The building where I work has a ratio of about 1 production Windows server for every four employees. If you count non-production servers, we have more Windows servers than people.

      I don't see why number of servers in a particular company means much. You frequently find a company with a single *nix server that does the work being done by a thousand Windows servers at a different company. That doesn't mean Windows is taking over, it means Windows servers are being poorly managed or are incapable of meaningful consolidation.

    32. Re:Let me tell you a story by SpaghettiPattern · · Score: 1

      ...a VERY large amount of data which for legal reasons had to be carefully reduced, archived, etc. There were various clusters of VMS...

      It's the freekin' "standardised" options buddy for you. And the prompt, displaying the nice volume names. VMS was the main reason we needed wide screens.

      --

      I hadn't the slightest objection to his spending his time planning massacres for the bourgeoisie... (P.G. Wodehouse)
    33. Re:Let me tell you a story by dkf · · Score: 3, Interesting

      something that uses a bunch of smaller tools might have more brittleness than something that is entirely contained in code controlled by the maintainer

      Not necessarily. The unix tools are very well specified by comparison with most libraries used in nearly any language you care to name (they're in the POSIX spec) so there's a substantial amount that you can rely on, and rely on long-term. They can be composed poorly, of course, but bad programmers can write bad programs in anything so it's (close to) a null argument.

      Brittleness in shell scripts typically refers to assumptions of particular filesystem layouts or that nobody will be silly enough to put odd characters in filenames (if only that were true!) but piped IO is very stable and well tested.

      --
      "Little does he know, but there is no 'I' in 'Idiot'!"
    34. Re:Let me tell you a story by dkf · · Score: 2, Informative

      How, exactly, are they brittle?

      The principal brittleness of shell scripts is their assumption that filenames do not contain odd characters like spaces. Most other languages don't do auto-splitting of every argument and so won't break when some user insists on creating a directory called "Documents and Settings"...

      (You can write armored shell scripts that cope just fine with this - I've done that quite a bit over the years - but a lot of people don't.)

      --
      "Little does he know, but there is no 'I' in 'Idiot'!"
    35. Re:Let me tell you a story by Hognoxious · · Score: 2, Insightful

      If any single one of the tools you're running on changes its input or output even slightly the whole thing can fall apart in a rather spectacular manner.

      One, that very rarely happens with the common unix utilities.

      Two, ever heard of change management, testing and QA? If you're the kind of idiot who flings patches and updates willy-nilly onto a production box then sorry, but you deserve to have the sky fall on your head.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    36. Re:Let me tell you a story by LingNoi · · Score: 1

      Sure. You claim brittle to be "ridiculous assumptions don't hold true *often*".

      The assumption is made by the programmer. You could rewrite that script you posted to not make those assumptions but instead you are using it as an example of why bash scripting is no good compared to compiled code.

      In reality this is a factor that is found in both scripting and compiled code, hence irrelevant to the discussion at hand. I'm surprised I have to spell it out for you.

    37. Re:Let me tell you a story by Americano · · Score: 1

      I'm not sure why you don't seem to understand that what I put in as an example was just that - an example of brittle code.

      You see, code has to be written by someone, and it doesn't matter what language you use, you can write stupid, brittle code in any language.

      In light of that, the point is that brittle code is more of a problem of developer skill and process, rattier than some intrinsic property of "shell scripting," which was more or less what Eskarel opined above. I disagree with his definition of brittle coding, which says that if you change inputs or outputs from one piece of the tool, other pieces may break, because that is a property of ALL pieces of code, shell or script; if you change the way your components interface, you will have to adjust the pieces that depend on that output, or provide the inputs.

      In my opinion, that has nothing to do with "brittleness," so I provided an example of what I think of when somebody uses the term "brittle."

      Would you care to try again and tell me why I'm wrong? Or are you going to insist on violently agreeing with me some more?

    38. Re:Let me tell you a story by Anonymous Coward · · Score: 0

      There is no honor among females.

    39. Re:Let me tell you a story by Giant+Electronic+Bra · · Score: 1

      The problem with "everything is an object" is that there are a LOT of different ways an "object" can be laid out in memory. If the consuming program hasn't exactly the correct idea of how that works then you're SOL.

      Now, that would be true of BINARY byte streams as well, but any record-oriented format can be processed by tools like grep, awk, sed, etc. They use a high enough level data abstraction that the details of exactly what the data MEANS doesn't have to be agreed between utilities for many purposes. I can grep out records in a stream that all contain a specific value I want to deal with, etc and not have to know a THING about the data except that pattern X will appear and when it does what to spit out, for which I just need to know a record delimiter. MANY utilities don't even need to know that much.

      As others have said, I'd consider Linux to be 'Unix' for purposes of this discussion and it certainly is the same operating environment with the same characteristics.

      Other advantages of Linux/Unix will include a highly unified namespace for instance which lets me use the same tools on almost ANY source of data and direct it to almost any sink. That simply isn't possible in the Windows environment.

      I don't know about the numbers arguments. My anecdotal experience is that Unix/Linux systems just run reliably pretty much forever and it is easy to run a lot of stuff on one box.

      Look at the latest numbers for planned deployments of Linux in the datacenter. Practically everyone is expanding their Linux usage and Windows server deployments have peaked and seem to be shrinking at larger organizations. I'm sure they will both be around for a LONG time to come, but it sure seems like the long term trajectory is Linux is the standard ubiquitous server OS. I know in my organization Windows servers exist PURELY for legacy applications that can't be migrated. That seems to be true for my clients as well at least for line-of-business applications.

      --
      "Malo periculosam, libertatem quam quietam servitutem." -- Jefferson
    40. Re:Let me tell you a story by runbadscott · · Score: 0, Offtopic

      Taco Bell always gives me the shits...

      --
      0100111001100101011100100110010000100001
    41. Re:Let me tell you a story by rolfwind · · Score: 1

      Ah, well I guess you made out in the end anyway. I try to treat my bosses well and got burned a few times anyway.

    42. Re:Let me tell you a story by Jaime2 · · Score: 1

      The problem with "everything is an object" is that there are a LOT of different ways an "object" can be laid out in memory. If the consuming program hasn't exactly the correct idea of how that works then you're SOL.

      No you're not SOL. No reasonable object oriented client depends on in-memory layout, they all use properties and methods to access member data.

      I know in my organization Windows servers exist PURELY for legacy applications that can't be migrated.

      Mine too. But, no matter how hard we try, we need more Windows servers every year. Windows is the third platform, but most new software is still deployed on it, mainly because we have a buy-over-build philosophy and most commercial software requires Windows.

      I don't know about the numbers arguments. My anecdotal experience is that Unix/Linux systems just run reliably pretty much forever and it is easy to run a lot of stuff on one box.

      I've never had a problem running a lot of stuff on Windows and maybe one in a hundred servers crash due to software in a given year.

    43. Re:Let me tell you a story by Jaime2 · · Score: 1

      I never said it was better. I was replying to "This is why Windows still hasn't entrenched itself forever in the server room". Windows has no problem getting entrenched in the server room, mostly becuase of the reasons you mentioned. Thank you for making my point for me.

    44. Re:Let me tell you a story by Giant+Electronic+Bra · · Score: 1

      The problem with "everything is an object" is that there are a LOT of different ways an "object" can be laid out in memory. If the consuming program hasn't exactly the correct idea of how that works then you're SOL.

      No you're not SOL. No reasonable object oriented client depends on in-memory layout, they all use properties and methods to access member data.

      Yes, actually you ARE, because you have to know that you are dealing with a stream of objects of type X and write a piece of software that specifically deals with type X. The grep program will work on ANY bytestream. Furthermore on the VAST majority of them a specific invocation of grep will behave in logically the same manner. Thus I don't have to know ANY exact details of what the input I'm handling is. Thus there is a LARGE degree of decoupling. Each Unix command line program is a very flexible independent module of functionality which can be deployed with very little change (the command line parameters) and is loosely coupled with the other components of the system it is being used as part of.

      Now, that can breed problems. If you have a very specific task that you need done over and over again with high confidence that the code behaves in a specific way regardless of updates and changes to the system, then you MIGHT want to compile a program to do that specific thing.

      On Windows you generally have no other choice. You HAVE to write a program because the data you're processing pretty much has to be accessed via a specific procedure that won't work with any other kind of data. It will also require a lot more glue logic and etc. than a shell script would.

      The power of bytestreams and small modular programs that do one thing well, plus a reasonably intelligent set of conventions for how programs represent their output in that environment is what makes Unix so great, and the OP is pointing out a pretty well-known fact, that you can create a lot of really good and highly reliable software that way.

      I know in my organization Windows servers exist PURELY for legacy applications that can't be migrated.

      Mine too. But, no matter how hard we try, we need more Windows servers every year. Windows is the third platform, but most new software is still deployed on it, mainly because we have a buy-over-build philosophy and most commercial software requires Windows.

      Eh, it really depends on the business you are in. There is basically one application we run Windows for in our organization. If that application were to become obsolete it would probably be replaced by something that runs on Linux.

      The vast majority of places that are on the Windows bandwagon on the server side got themselves locked into some proprietary technology back in the day. That may well drive Windows server upgrades and deployments for years to come, but the niche gets smaller every year. People may have literally in raw numbers more Windows every year, sure, but it is a smaller percentage of all deployed systems.

      I don't know about the numbers arguments. My anecdotal experience is that Unix/Linux systems just run reliably pretty much forever and it is easy to run a lot of stuff on one box.

      I've never had a problem running a lot of stuff on Windows and maybe one in a hundred servers crash due to software in a given year.

      Yeah, not my experience. IME rolling out Windows patches to servers is a huge pain in the ass that is OFTEN associated with the server becoming inoperable for whatever obscure reason. I can think of one instance of this happening with a Kernel upgrade on a Linux server, ever.

      It seems like basically we provision Linux like "we need one of this, it won't fail" and Windows like "we need 2 of this because one of them WILL fail". I guess if that sells 2x as many Windows licenses, well good for them, lol!

      --
      "Malo periculosam, libertatem quam quietam servitutem." -- Jefferson
    45. Re:Let me tell you a story by Anonymous Coward · · Score: 0

      The problem with "everything is an object" is that there are a LOT of different ways an "object" can be laid out in memory. If the consuming program hasn't exactly the correct idea of how that works then you're SOL.

      No you're not SOL. No reasonable object oriented client depends on in-memory layout, they all use properties and methods to access member data.

      Yes, actually you ARE, because you have to know that you are dealing with a stream of objects of type X and write a piece of software that specifically deals with type X. The grep program will work on ANY bytestream. Furthermore on the VAST majority of them a specific invocation of grep will behave in logically the same manner. Thus I don't have to know ANY exact details of what the input I'm handling is. Thus there is a LARGE degree of decoupling. Each Unix command line program is a very flexible independent module of functionality which can be deployed with very little change (the command line parameters) and is loosely coupled with the other components of the system it is being used as part of.

      Now, that can breed problems. If you have a very specific task that you need done over and over again with high confidence that the code behaves in a specific way regardless of updates and changes to the system, then you MIGHT want to compile a program to do that specific thing.

      On Windows you generally have no other choice. You HAVE to write a program because the data you're processing pretty much has to be accessed via a specific procedure that won't work with any other kind of data. It will also require a lot more glue logic and etc. than a shell script would.

      The power of bytestreams and small modular programs that do one thing well, plus a reasonably intelligent set of conventions for how programs represent their output in that environment is what makes Unix so great, and the OP is pointing out a pretty well-known fact, that you can create a lot of really good and highly reliable software that way.

      You have no idea how COM or .Net work. You are arguing for the unix way but using Windows of 1992 as a comparison. Trust me, both ways have their advantages. I have scripts in my "bag of tricks" that are fifteen years old and work today with no modifications. One of our database guys asked me why I wrote a script a certain way and I had to stare at it for a while to remember what the issues were back then I had to deal with. I wouldn't write it that way today, but Microsoft is very good at maintaining backwards compatibility, so I haven't had to think about maintaining the script for over ten years. On the other hand, upgrading my MythTV box is always a several day project due to the number of problems that always arise. It's usually easier to dump the database and start over.

      As for patching being a huge pain, we roll out patches to six thousand Windows servers within ten days of their public release. We rarely have any problems.

  27. Ronald McDonald by mcneely.mike · · Score: 1

    So what does McDonalds programming look like?

    --
    soylentnews.org Go there to enjoy the people!
    1. Re:Ronald McDonald by Dr_Barnowl · · Score: 1

      Workflows.

      McDonalds based their success on de-skilling the burger kitchen, carefully making sure that they had a rigidly defined process for each menu item, removing any trace of individuality or freedom from their employees so that they would efficiently produce a consistent product anywhere you walk into a McDonalds.

      The current fashion for programming systems that guide people through a set workflow like sheep is McDonalds programming.

  28. 8? I thought it was 3 ... by Zero__Kelvin · · Score: 2, Funny
    I thought there were three basic ingredients:
    • Protons
    • Neutrons
    • Electrons
    --
    Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
  29. Brainfuck by istartedi · · Score: 1

    Brainfuck has just eight commands. Coincidence?

    In all seriousness, in pondering the success of In-n-out, a number of things have come up. The simplicity of the menu is part of it; but other things too.

    Simply selling few items won't help you if those items are absolute crap. Otherwise, we'd all be eating at Taco Bell every night, discussing our latest Brainfuck coding project.

    --
    For all intensive purposes, "whom" is no longer a word. That begs the question, "who cares"?
    1. Re:Brainfuck by Anonymous Coward · · Score: 0

      Well, in the future we will be eating at Taco Bell.

    2. Re:Brainfuck by RyuuzakiTetsuya · · Score: 1

      I'm a VB.net developer who eats taco bell every night you insensitive clod!

      --
      Non impediti ratione cogitationus.
  30. write it in bash... by Anonymous Coward · · Score: 0

    ... or write a tiny ruby script that does the same in the same amount of code, but resembling English instead of random stuff.

  31. Taco Bell is not innovative. by Anonymous Coward · · Score: 0

    It's not Taco Bell. It's mexican food. Nearly all mexican food is made from just a few ingredients, mixed different ways.

  32. can i haz taco bell by Anonymous Coward · · Score: 0

    yo quiero taco bell

  33. Re:8? I thought it was 3 ... by dakameleon · · Score: 2, Insightful

    I thought there were 6 - up, down, strange, charm, top and bottom?

    --
    Man who leaps off cliff jumps to conclusion.
  34. Re:8? I thought it was 3 ... by digitig · · Score: 2, Funny

    No, it's up, down, sideways. sex-appeal and peppermint.

    --
    Quidnam Latine loqui modo coepi?
  35. Real Programmers crap by Anonymous Coward · · Score: 0

    I could have done the whole thing Taco Bell style if I had only manned up and broken out sed, but I pussied out and wrote some Python.

    Sums up well where this comes from. Who's going to maintain that mess? Or to pick up your genderized metaphor, who's going to clean up after you, chef? There's a reason these tools with their arcane interfaces have become unpopular.

  36. Weak error handling by Animats · · Score: 4, Informative

    A big problem with shell programming is that the error information coming back is so limited. You get back a numeric status code, if you're lucky, or maybe a "broken pipe" signal. It's difficult to handle errors gracefully. This is a killer in production applications.

    Here's an example. The original article talks about reading a million pages with "wget". I doubt the author of the article has actually done that. Our sitetruth.com system does in fact read a million web pages or so a month. Blindly getting them with "wget" won't work. All of the following situations come up routinely:

    • There's a network error. A retry in an hour or so needs to be scheduled.
    • There's an HTTP error. That has to be analyzed. Some errors mean "give up", and some mean "try again later".
    • The site's HTML contains a redirect, which needs to be followed. "wget" won't notice a redirect at the HTML level.
    • The site's "robots.txt" file says we shouldn't read the file from a bulk process. "wget" does not obey "robots.txt".
    • The site is really, really slow. Some sites will take half an hour to feed out a page. Maybe they're overloaded. Maybe their denial of service detection software has tripped and is metering out bytes very slowly in defense. You don't want this to hold up the entire operation. Last week, for some reason, "orbitz.com" did that.
    • The site doesn't return data at all. Some British university sites have a network implementation which, if asked for a HTTPS connection, does part of the SSL connection handshake and then just stops, leaving the TCP connection open but sending nothing. This requires a special timeout.
    • The site doesn't like too many simultaneous connections from the same IP address. We limit our system to three simultaneous connections to a given site, so as not to overload it.

    That's just reading the page text. More things can go wrong in parsing.

    Even routine reading of some known data page requires some effort to get it right. We read PhishTank's entire XML list of phishing sites every three hours. Doing this reliably is non-trivial. PhishTank just overwrites their file when they update, rather than replacing it with a new one. (This is one of the design errors of UNIX, as Stallman once pointed out. Yes, there are workarounds they could do.) So we have to read the file twice, a minute apart, and wait until we get two identical copies. Then we have to check for 1) an empty file, 2) a file with proper XML structure but no data records, and 3) an improperly terminated XML file, all of which we've encountered. Then we pump the data into a MySQL database, prepared to roll back the changes if some error is detected.

    The clowns who try to do stuff like this with shell scripts and cron jobs spend a big fraction of their time dealing manually with the failures. If you do it right, it just keeps working. One of my other sites, "downside.com", has been updating itself daily from SEC filings for over a decade now. About once a month, something goes wrong with the nightly update, and it's corrected automatically the next night.

    1. Re:Weak error handling by Anonymous Coward · · Score: 1, Informative

      There's a network error. A retry in an hour or so needs to be scheduled.

      Echo, cron.

      There's an HTTP error. That has to be analyzed. Some errors mean "give up", and some mean "try again later".

      If, else if, else.

      The site's HTML contains a redirect, which needs to be followed. "wget" won't notice a redirect at the HTML level.

      ‘--max-redirect=number' Specifies the maximum number of redirections to follow for a resource. The default is 20, which is usually far more than necessary. However, on those occasions where you want to allow more (or fewer), this is the option to use. ...lol, wat?

      The site's "robots.txt" file says we shouldn't read the file from a bulk process. "wget" does not obey "robots.txt".

      'To ignore robots.txt and no-follow, use something like: wget -e robots=off...' ...lol, wat?

      The site is really, really slow. Some sites will take half an hour to feed out a page. Maybe they're overloaded. Maybe their denial of service detection software has tripped and is metering out bytes very slowly in defense. You don't want this to hold up the entire operation. Last week, for some reason, "orbitz.com" did that.

      You can't write a simple timer? It's not like you're being asked to write memory management in C.

      The site doesn't return data at all. Some British university sites have a network implementation which, if asked for a HTTPS connection, does part of the SSL connection handshake and then just stops, leaving the TCP connection open but sending nothing. This requires a special timeout.

      ...And requires special handling with any tool, for that matter.

      The site doesn't like too many simultaneous connections from the same IP address. We limit our system to three simultaneous connections to a given site, so as not to overload it.

      ...Okay, I'm done.

      There must be something in the water, cuz all I see is a code monkey who can't handle the command line.

    2. Re:Weak error handling by Eskarel · · Score: 2, Informative

      That was HTML redirects (well likely more specifically javascript redirects), not HTTP redirects.

    3. Re:Weak error handling by arth1 · · Score: 4, Informative

      The site's HTML contains a redirect, which needs to be followed. "wget" won't notice a redirect at the HTML level.

      Actually, it does. But in any case, this is why you parse the HTML after fetching it with wget -- how else can you get things like javascript generated URLs to work?

      The site's "robots.txt" file says we shouldn't read the file from a bulk process. "wget" does not obey "robots.txt".

      From the wget man page:

      Wget can follow links in HTML, XHTML, and CSS pages, to create local
      versions of remote web sites, fully recreating the directory structure
      of the original site. This is sometimes referred to as "recursive
      downloading." While doing that, Wget respects the Robot Exclusion
      Standard (/robots.txt).

      The site is really, really slow. Some sites will take half an hour to feed out a page.

      And you still haven't looked at the wget(1) man page, or you'd know about the --read-timeout parameter.

      Maybe they're overloaded. Maybe their denial of service detection software has tripped and is metering out bytes very slowly in defense. You don't want this to hold up the entire operation. Last week, for some reason, "orbitz.com" did that.

      Not holding up your operation is why you use multiple tools that can run concurrently. A wget of orbitz.com taking forever won't prevent the wget of soggy.com that you scheduled for half an hour later, and neither will stop the parser.
      Of course, if you design an all-eggs-in-one-basket solution that depends on sequential operations, you deserve what you get.

      The site doesn't return data at all. Some British university sites have a network implementation which, if asked for a HTTPS connection, does part of the SSL connection handshake and then just stops, leaving the TCP connection open but sending nothing.
      This requires a special timeout.

      Yes, the --connect-timeout.

      The site doesn't like too many simultaneous connections from the same IP address. We limit our system to three simultaneous connections to a given site, so as not to overload it.

      wget limits to a single connection with keep-alive per instance. (If you want more, spawn more wget -nc commands)

      Even routine reading of some known data page requires some effort to get it right. We read PhishTank's entire XML list of phishing sites every three hours. Doing this reliably is non-trivial. PhishTank just overwrites their file when they update, rather than replacing it with a new one.

      That's no problem as long as you pay attention to the HTTP timestamp.

      (This is one of the design errors of UNIX, as Stallman once pointed out. Yes, there are workarounds they could do.) So we have to read the file twice, a minute apart, and wait until we get two identical copies. Then we have to check for 1) an empty file, 2) a file with proper XML structure but no data records, and 3) an improperly terminated XML file, all of which we've encountered.

      Oh. My.
      I'd do a HEAD as the second request, and check the Last-Modified time stamp.
      If the Date in the fetch was later than this, and you got a 2xx return code, all is well, and there's no need to download two copies, blatantly disregarding the "X-Request-Limit-Interval: 259200 Seconds" as you do.

      It'd be much faster too. But what do I know...

      The clowns who try to do stuff like this with shell scripts and cron jobs spend a big fraction of their time dealing manually with the failures.

      The clowns who do stuff like this with the simplest tools that do the job (

    4. Re:Weak error handling by Anonymous Coward · · Score: 0

      Our sitetruth.com system does in fact read a million web pages or so a month. One of my other sites, "downside.com"

      What the other guy who replied quite well regarding the wget man page said plus: Dreamweaver 6? Tables for everything? Inline styles everywhere? Blue on blue? And you're calling people clowns. Really? You're wasting bandwidth you insensitive clod, and you're doing it with no style! Well, there are styles, but you're doing them wrong.

    5. Re:Weak error handling by Anonymous Coward · · Score: 0

      >One of my other sites, "downside.com"

      Comic Sans, really?

    6. Re:Weak error handling by jklovanc · · Score: 4, Insightful

      It is interesting that wget does not handle errors other than ignoring them and trying to continue. The original poster's first and second point are not addressed. Does that mean the operator has to manually monitor the crons and restart the ones that failed?

      The site is really, really slow. Some sites will take half an hour to feed out a page.

      And you still haven't looked at the wget(1) man page, or you'd know about the --read-timeout parameter.

      Maybe they're overloaded. Maybe their denial of service detection software has tripped and is metering out bytes very slowly in defense. You don't want this to hold up the entire operation. Last week, for some reason, "orbitz.com" did that.

      Not holding up your operation is why you use multiple tools that can run concurrently. A wget of orbitz.com taking forever won't prevent the wget of soggy.com that you scheduled for half an hour later, and neither will stop the parser.
      Of course, if you design an all-eggs-in-one-basket solution that depends on sequential operations, you deserve what you get.

      How do you schedule orbitz.com to go off and then soggy.com to go off later? What of you are handling hundreds of different web sites? Hundreds of crons? How do you retry later on sites that are very slow at the moment? How would you know that wget timed out due to slow download?

      The site doesn't return data at all. Some British university sites have a network implementation which, if asked for a HTTPS connection, does part of the SSL connection handshake and then just stops, leaving the TCP connection open but sending nothing.
      This requires a special timeout.

      Yes, the --connect-timeout.

      The connection has been made so it is not --connect-timeout it is --read-timeout. That is the problem, there is no different timeout when you are slowly getting data vs getting no data.

      The site doesn't like too many simultaneous connections from the same IP address. We limit our system to three simultaneous connections to a given site, so as not to overload it.

      wget limits to a single connection with keep-alive per instance. (If you want more, spawn more wget -nc commands)

      You missed the point; it is not more connections it is limiting connections. Say I am crawling five different sites using host spanning and they all link to the same site. Since there is no coordination between the wgets it is possible for all of the to connect to the same site at the same time. What if I have 100 crawlers at the same time?

      The original poster is right; using wget ignores errors (timesout) and does not report them so there is no way of programaticly figuring out what went wrong and react to it.
      Things wget does not do: avoid known non responsive pages, requeue requests that have timed out or log them so that are not tried again, coordinate multiple crawls so they do not hit the same server simultaneously, handle errors itself. There are probably more.

      This is a perfect example of the 80/20 rule. The "solution" may cover 80% of the problem but that final 20% will require so much babysitting as to make it unusable. Wget is not an enterprise level web crawler.

    7. Re:Weak error handling by Andrew+Cady · · Score: 1

      Does that mean the operator has to manually monitor the crons and restart the ones that failed?

      Here's the thing. Either you're writing code to monitor wget processes, or you're writing code to monitor your custom coded wget-replacement (or equivalent logic within an application not divided into processes). Or you're doing it manually, which may be reasonable.

      How do you schedule orbitz.com to go off and then soggy.com to go off later?

      Write code that launches wget on your schedule... Why do you think this is hard to do with wget?

      What of you are handling hundreds of different web sites? Hundreds of crons? How do you retry later on sites that are very slow at the moment? How would you know that wget timed out due to slow download?

      Having done this, I'll tell you how I did it. I don't claim it's exactly pretty, but it works, it's easy to do, and it won't cause problems if you're careful:

      I enabled wget's logging facilities and scanned the logs for failures. I kept a queue of wget processes to run, and kept a fixed number of wget processes running at a given time. (I changed the number of processes as necessary by hand, although this might have been handled heuristically to maximize resource usage.)

      I'm totally confident this approach could be scaled up to the size of the whole internet, because the task is so easily divided into small sections and you're going to hit bandwidth limits long before number-of-processes limits. First assume that you're using a separate process for each host (not a wget process, but the glue process that runs wget). Are there too many hosts for that many processes? No. Are any hosts too big to be handled by a wget-coordinating script? You may think so, but I know you're wrong because I've seen it...

      This is a perfect example of the 80/20 rule. The "solution" may cover 80% of the problem but that final 20% will require so much babysitting as to make it unusable. Wget is not an enterprise level web crawler.

      You're right that there is a lot of "babysitting" required; you're wrong that the solution to certain of these problems must be "unusable" -- I know because I've seen them solved. My intuition says the others would be similarly solved.

      One thing you might have to do is edit wget source.

    8. Re:Weak error handling by dublin · · Score: 1

      While wget isn't capable of doing quite a lot of the "nice" work, curl definitely is capable of far more- I'm still amazed at how many people assume that wget is the best tool to use for grabbing web pages from the command line - I suppose it's a combination of ignorance and GNU bias.

      Don't get me wrong, wget is not a bad program, but it's not even in the same league with curl. Curl is is not only far more capable, but also has a far more active developer community.

      Curl is to web processors what ImageMagick is to image processors - the one indispensable command line tool you just don't want to be without, and a truly awesome tool to leverage in Taco Bell style development.

      BTW, Taco Bell development is important for another reason as well - I am not a "real" programmer, but I can build real, solid apps very quickly using a set of well-chosen tools based on Unix text processing tools and the stream/operator paradigm. With modern hardware, it's surprising how well these "Taco Bell" apps can work - often well enough for production use in Fortune 500 environments.

      --
      "The future's good and the present is nothing to sneeze at." - Roblimo's last ./ post
    9. Re:Weak error handling by jklovanc · · Score: 1

      So according to your solution we need the following:
      1. Code to monitor processes,
      2. Code to keep track of sites we are interested in
      3. Code to launch wgets.
      4. Code to parse error logs and handle errors
      5. Code modifications to wget

      That looks like quite a bit of code. Point 5 means that we are no longer using wget but our own version of wget.

      The assumption that we are using a separate process for each host is invalid as when host spanning is used a crawl can jump from host to host.

      It also does not fix the multi connection when host spanning is used. It also does not handle sites that we do not want to crawl that may be connected to sites that we do want to crawl.

      Therefore wget + lots of code still does not cover everything we want to do.

      Sure a system can use wget but there is still a great deal of code required around it to make things work. I am all for using system components where possible but sometimes they do not have the required functionality.

    10. Re:Weak error handling by Andrew+Cady · · Score: 1

      That looks like quite a bit of code.

      The definition of "quite a bit" is matter of opinion, but I'm talking about 147 lines of perl (including comments and blanks) and 88 lines of shell scripts serving misc. ancillary functions.

      Point 5 means that we are no longer using wget but our own version of wget.

      Sure, but so what? It's free software.

      It also does not fix the multi connection when host spanning is used. It also does not handle sites that we do not want to crawl that may be connected to sites that we do want to crawl.

      The problem can be solved.

    11. Re:Weak error handling by jklovanc · · Score: 1

      "147 line of code" which does not cover most of what we are talking about. Does your system handle hundreds of sites without hand editing a config file or script? Does your system monitor runs to see if they complete and figure out what to do if they do not? Does your system tell the difference between a no data timeout and a slow data timeout? Have you solved the problem of coordinating multiple wgets with host spanning? There may not be a solution or it may take a lot of code. I go back to the 80/20 rule; 80% of your code will be required to handle 20% of the issues.

      The original poster posited that everything can be done using generic unix functions with a little glue. That is patently false considering that there are many features that are part of system requirements that are not covered by standard Unix calls.

      To use the ingredient analogy. If wget is equivelant to a tomato and you change the wget code it is no longer a tomato but a genetically modified tomato that can only be used in that one recipie. It is now a ninth ingredient. Do that enough times and your ingredient list explodes.

      The biggest failing of the Taco Bell analogy is that no matter how you combine the eight ingredients you still come up with crappy pseudo Mexican food; you do not create French Food, Itallian Food, Chineese food, etc. The same thing applies to Unix utilities; they do almost way you want but rarely everything.

    12. Re:Weak error handling by Andrew+Cady · · Score: 1

      "147 line of code" which does not cover most of what we are talking about.

      It does some of what someone (maybe you) said couldn't be done with this approach, thus proving its possibility...

      To use the ingredient analogy. If wget is equivelant to a tomato and you change the wget code it is no longer a tomato but a genetically modified tomato that can only be used in that one recipie.

      Again, so what? (And who says it can only be used in that recipe? I use the feature I added to wget all the time.)

      Does your system handle hundreds of sites without hand editing a config file or script? Does your system monitor runs to see if they complete and figure out what to do if they do not? Does your system tell the difference between a no data timeout and a slow data timeout? Have you solved the problem of coordinating multiple wgets with host spanning?

      I already answered the last question (don't use host spanning). With regard to the others, it doesn't matter. More requirements mean more coding, but the general approach of starting with wget instead of coding from scratch is going to get shit done as quickly as possible without reinventing the wheel. You can come up with features X Y and Z that aren't already simple switches (although, notice that others in this thread are listing features that are already simple switches) -- but that in itself is a poor argument for coding A, B, C... from scratch, when there's a lot already done for you.

      Now, frankly, the issues you are listing seem pretty damn trivial to me. I just don't see what the big problem is. Still, I don't want to address them point by point in this thread. (I also recognize that, in principle, more difficult features to implement could be thought up.)

      I think the real point underlying the article (IIRC...) is that perfectionism (and implementing everything yourself is a form of this) sure can waste a lot of time. If you're trying to make the most of your effort -- instead of trying to make the best piece of software possible -- you need an attitude that searches for a lazy "good enough" solution. If your business model depends on having a better web scraper than anyone else, then you might write one -- but if you're not selling a proprietary web scraper, then it probaly doesn't, and you're wasting your time, losing sight of the big picture.

      BTW, the code I'm talking about retries failures infinitely, but only when specifically instructed to do so. Certainly good enough for my purposes at the time I wrote it. It would be trivial in that code to continually devote, say, x% of processes to retrying errors, if you wanted more automation. Just need to decide on x.

      The original poster posited that everything can be done using generic unix functions with a little glue. That is patently false considering that there are many features that are part of system requirements that are not covered by standard Unix calls.

      (NB. when you say OP, you mean the article; when I say OP, I mean the OPon slashdot, who disagreed.) My point is much more specific: that wget can do a lot more than OP said. I agree that 'xargs' won't suffice to drive wget for this purpose -- unless it does. Depending on your purpose, maybe you should just run it and use the results you get, accepting limitations -- at least you would get results, and without debugging any code.

      Anyway, like I say above, although the limitations you list here are real, they still seem surmountable to me, and not with all that much effort. I certainly don't find the possibility of doing so "patently absurd", although the definition of "a little" glue is of course arbitrary. I originally got into the thread because I saw people saying things were not possible which I had already seen done.

      The biggest failing of the Taco Bel

  37. Re:8? I thought it was 3 ... by Zero__Kelvin · · Score: 1

    The premise is to use the fewest number of ingredients, thus conceptualizing it in my terms is more efficient ;-)

    --
    Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
  38. YOU CAN'T BUY A BURGER AT TACO BELL !! by Anonymous Coward · · Score: 0

    Now can you? 'Nuff said !!

    When Taco Bell says make a Run for the border, what that means is make a run for the toilet !!

    RidinTheStormOutWaitinForTheFallout !!

  39. Re:8? I thought it was 3 ... by Anonymous Coward · · Score: 0

    I bet you think you're some fucking clever, don't you?

  40. 8 ingredients by PrimeNumber · · Score: 1

    Taco Bell may only use 8 ingredients, but their food tastes like shit.

    Personally I would advocate making a quality product, using only the best ingredients/techniques required for each particular menu item.

  41. Work smarter not harder by Anonymous Coward · · Score: 0

    Over the years I've seen a lot of effort put into creating apps to do things that existing apps already do very well. It's done to learn how to write code in some select language or because someone thinks they can improve on older stuff by writing it in whatever language they fall in love with, adding a GUI, annoyingly verbose debug messages (and ZERO documentation) or add some annoying and recurring "Are You Sure You Want To Do Blah?" dialogs, or just because they grew up on Windows and the command line scares them. But in most cases the reinvented wheels do poorly, are too complicated, waste more resources, have more bugs, take more time to do stuff or have too many, um, "features". There is no need to waste time and effort to reinvent everything and stuff them into some all-in-one, monolithic app. Just need a bit of intelligence to make use of what is already there and already works. Work smarter, not harder. Stop wasting time and money on doing the same things over again and move on to something new.

    Bugs do indeed create employment. One has only to look at the whole industry that sprung up around Microsoft and all it's crap products.

  42. Weak! by KingAlanI · · Score: 1

    Yeah, while this may be a viable methodology in some cases (I'm certainly no expert, so I won't say for sure), the Taco Bell analogy seemed weak.

    --
    I listen to both RIAA and non-RIAA stuff if I like the music, tangential business/politics nonwithstanding.
  43. Being Successful! Like Taco Bell? by Anonymous Coward · · Score: 0

    ..but on the other hand, Taco Bell makes taste-less, repetitive crap. The author is probably unaware of this, but part of the reason that Taco Bell is a successful company is because of the near-slavery conditions and pay that keeps their supply-chain costs extremely low: http://www.ciw-online.org/2004-05news.html If there is a lesson to be learned here, I think it's that you can be *economically* successful by exploiting lots of people and cranking out low-quality, low-cost products. That lesson works for programming as well - and that dynamic is part of the changing global market in that field. I think life (and programming) can be about more than just KISS Principles and profitability - right?

  44. Re:It's easy to overthink even in the simplest cas by _LORAX_ · · Score: 3, Informative

    Psst,

    " | sort | uniq -c "

    Will sort and then count repetitive lines and output count, line. You can pipe the result back through sort -n if you want a frequency sort or sort -k 2 for item sorting.

  45. more than 8 by rubycodez · · Score: 1

    Really it's components rather than ingredients, but Taco Bell does have more than 8

    corn tortilla (variations)
    cilantro
    lime
    sour cream
    flour tortilla (a few variations)
    chicken
    beef
    pork (at some locations)
    refried beans
    rice
    tomatoes
    cheese
    lettuce
    the four salsas (mild, hot, fire, verde)

    and if one is forced to eat fast food, one can do better there than McD's shit

    1. Re:more than 8 by rubycodez · · Score: 1

      dang, forgot the onions!

  46. Whoosh by KMSelf · · Score: 1
    --

    What part of "gestalt" don't you understand?

  47. Re:It's easy to overthink even in the simplest cas by _LORAX_ · · Score: 1

    Oh, and to output a pipe to multiple processes you just need to use tee.

    tee >(process1) >(process2) >(process3) | process4

    After which you could use something to join the files back together. I've used such a syntax to pipe the output of an application over ssh while also taking a sha1sum without the need to save it locally.

  48. Oh, God, here we go again... by PhilipTheHermit · · Score: 1

    Let me rephrase this concept from a programmer's perspective:

    Unix Beard: "We don't need any programming staff! Anything requested by the business units can be done with a small shell script. GUIs are unnecessary. Analysis is unnecessary. All you need is a sysadmin!"

    You old UNIX farts aren't the only people guilty of this sort of nonsense, either. I know a certain DBA that thinks all programming should be done in the database itself, BY DBAs, using stored procedures.

    In BOTH cases, the subtext of the message is "Nobody should use any tools that are not provided on the command line, nobody should ever try to improve on what already exists, all this modern stuff programmers work with is scary and we old timers want everyone to stop using it and do things in a way we understand."

    Pretty ridiculous if you ask me.

    Let's make a new rule: We should all stick to what WE do, and leave everyone else alone to do what THEY do without constantly pestering them to let us expand our turf.

    --
    Thus spake the master programmer:
    "When the program is being tested, it is too late to make design changes." (Tao)
  49. My code is Taco Bell food at its finest by rwwyatt · · Score: 3, Funny

    It leaves results in your shorts.

  50. Why are shell commands news on Slashdot? by dirkdodgers · · Score: 1

    His examples are find, xargs, and wget.

    It's a sad day when "man discovers UNIX command line" is a headline on Slashdot.

    Just wait until he discovers perl.

    But it's true. Too many young and not-so-young programmers lack basic UNIX command line and Perl skills. If you get asked to perform a backend data processing, network, or system task, and lack these skills, the best thing you can do is admit that you lack these skills and ask someone else to assist. The worst thing you can do is to built an elaborate multi tier POS to solve such a problem, but I've known no shortage of contractors and hot shot developers who take this as an opportunity to do just that.

  51. this topic is subjective by Anonymous Coward · · Score: 0

    and it's about how ppl use their brain and knowledge
    it's not about sth else......

  52. Excellent Point by DaMattster · · Score: 1

    Ted makes an excellent point. I once needed a tool to synchronise a text file which had transactional profile data. Simply using scp and some shell scripting I was able to achieve this. Only 25 lines of code too. There is a lot to be said for using the tools at hand versus re-inventing the wheel.

  53. Re:It's easy to overthink even in the simplest cas by Anonymous Coward · · Score: 0

    This task is so simple, there must be a tool for this

    the tool is the shell. the tool is evidently so natural for you to use, that you forgot you were using it

  54. Re:8? I thought it was 3 ... by nu1x · · Score: 1

    I bet you think you some clever bot.

    --
    I have nothing to lose but my bindings.
  55. Reminds me of Macro Magician . . . by npsimons · · Score: 1

    This reminds me of an amusing text I read a while back, Academic Programmers - A Spotter's Guide, particularly the Unix Macro Magician. That being said, I think far too many people are far too willing to reinvent the wheel and wallow in complexity. It's as if some people think they won't be taken seriously or not be considered valuable if they create simple systems from pre-existing components. I always like to point out that Physicists get paid to make models as simple as possible; that's why they make some of the best coders.

  56. Re:It's easy to overthink even in the simplest cas by waveclaw · · Score: 1
    Lets say you have two programs that print to standard out. You want to send their standard outputs to the standard input of a third program in UNIX.

    In sh and derivatives, you type:

    { program1; program2; } | program3

    The { and } enclose a block of commands that are executed in order. The block acts like it glues the standard output, error and input together. So you can do odd things like:

    cat useless_use_of_cat.txt | { sort -u | sed -e 's/waste not/want not/g'; } | tail -1

    This also works with the while and for loops. So you can write a loop that reads from a file with the "<" operator and pipes that to something else.

    Don't forget that last ; before the }. It's an annoying one to forget.

    --

    "You cannot have a General Will unless you have shared experiences. You cannot be fair to people you don't know."
  57. been there by luther349 · · Score: 1

    toco bell units are 486 dx systems. and they charge a arm and a lag for replacement parts. what there parts provider charges for a motherboard replacement toco bell can go buy new machines off store shelf's. in fact when i worked at toco bell me and the tec had a long chat bought how there provider was overcharging for parts. he said they where proptery and couldent get them elseware. so i pointed them to microatx towers that costed far less and where mutch more powerful then 486 machines. the store i used to work at closed due to it being in a dieing mall. and i think later the entire mall. but i have been in toco bells and notced they systems all have been replaced with modern touch screen interfaces. makes you wonder if they took what i said to hart and relised they where getting ripped off.

  58. Re:It's easy to overthink even in the simplest cas by rrohbeck · · Score: 1

    How about
    ( ( process_a &); process_b ) | sort | uniq
    ?

  59. Most programmers I've known already follow this... by Anonymous Coward · · Score: 0

    Mix a bunch of stuff together and the only thing that it results in is a exploding stream of shit.

  60. Give my team 6 months by OrangeTide · · Score: 1

    We can write those features in Java for you. But it might take another 6 months for you to work out all the bugs in a production system.

    --
    “Common sense is not so common.” — Voltaire
  61. Lacking fundamentals by OrangeTide · · Score: 1

    I develop exclusively on Unix & Linux, and I find that my peer developers have little understanding of the Unix way. They want to force things the hard way by writing a lot of code, rather than learning a bit about the utilities and services already provided. It is especially bad at places I work because there is a lot of kernel development going on, and it is often the case that there are kernel developers who can barely operate a Unix system. They often want to fix a problem by changing the kernel, which in a normal universe should make everyone nervous, but in my universe they get a pat on the back!

    --
    “Common sense is not so common.” — Voltaire
  62. Re:It's easy to overthink even in the simplest cas by Anonymous Coward · · Score: 0

    that only works if the two processes are writing to stdout a line at a time. otherwise their output will get mumbled together. the standard unix programs do write line-at-a-time, but you still need to be careful

  63. Re:8? I thought it was 3 ... by Eudial · · Score: 1

    Will be a pretty boring universe without leptons.

    --
    GAAH! MY PRINTER IS ON FIRE!!! PUT IT OUT! PUT IT OUT!
  64. There is that, and then there is the rest by RAMMS+EIN · · Score: 1

    ``The more I write code and design systems, the more I understand that many times, you can achieve the desired functionality simply with clever reconfigurations of the basic Unix tool set.''

    I am glad he figured that out. Unix contains a lot of useful commands and functions. Every programmer would do well to learn them, so they can use them when needed.

    What also helps a lot is knowing your programming language well. By that, I mean not just the standard library, but also the fundamentals of the language. Know how things fit together, which things are efficient and which things are costly, and how to design good APIs in that language. Better yet: know this for multiple languages - different languages for different tasks. It's easy to learn a new programming language when you already know how to program, and doing so will provide you with new insights, so go ahead and learn another language.

    It is also useful to know tools and libraries that aren't a standard part of the operating system. Of course, there are very many of those and learning them all might be a bit much. Still, knowing a handful and having heard of others can help a lot. No need to write, debug, and maintain your own code for parsing CSV, XML, YAML, or whatever the file format of the season is. Beware of bugs and misfeatures, though. Many libraries, even commonly used ones, contain bugs. Many libraries also contain choices that may or may not be a good idea for what you want to do.

    All in all, you can get a long way by just knowing what other people have already done for you. Thanks to free software, you can often use this work in your projects. The world wide web has made it fairly easy to find things that you may use. A lot of software can be made by taking a bunch of libraries and writing some code to stitch it together and make it do stuff. Or, as Mr. Dziuba found out, by mixing together some command-line tools. I am glad he is discovering the strengths of Unix and getting excited enough about them to tell the world about it.

    Stitching things together from existing components is not all there is to programming, however. You can go a long way doing just that, and many people make a living that way, but there are some things which are best solved or can only be solved by thinking hard and coming up with some clever code to do exactly the right thing. And somebody needs to write those tools and libraries, too. Compared to putting some existing components together, it's hard work for small results, but I find this to be the most rewarding part of programming. You're really coming up with something new here, making something clever and useful that wasn't available before.

    --
    Please correct me if I got my facts wrong.
  65. You finally made it! by SpaghettiPattern · · Score: 1

    Summary: Bourne scripting can be pretty effective.

    You finally made it! Welcome to the 70ies.

    (Try building a system with simpleton commands like you show and you will eventually find yourself alone at night at the coffee maker. Trying to keep awake while solving yet another scaling problem. "Friends" feeling very sorry for you in their sleep.)

    --

    I hadn't the slightest objection to his spending his time planning massacres for the bourgeoisie... (P.G. Wodehouse)
  66. When 'taco bell' fails by mcrbids · · Score: 1

    Taco Bell programming fails when your needs extend beyond 'putting food on the table'. I love syslog, I use it every day. But it has numerous limitations:

    1) each log entry has a very limited size. For most needs, syslog is enough. But what happens when you want to svae 100,000 characters of input? At this point, syslog fails.

    2) You need High Availability - Unix is all about a single system, when you have a cluster of operations that scale in need beyond a single system, you have trouble.

    That said, the point is well taken! Use the appropriate tool for the job!

    --
    I have no problem with your religion until you decide it's reason to deprive others of the truth.
    1. Re:When 'taco bell' fails by marcosdumay · · Score: 1

      Last time I looked, syslog was good enough to send your logs to any HA log cluster you have around. (Ok, that was just kidding, but I really don't get the problem of using syslog on a HA environment.)

    2. Re:When 'taco bell' fails by badkarmadayaccount · · Score: 1

      SSI clustering.

      --
      I know tobacco is bad for you, so I smoke weed with crack.
  67. I knew it! by Anonymous Coward · · Score: 0

    So you admit to being a 2-bit programmer? :)

  68. Sysops writing unit tests? by rossz · · Score: 1

    Who thought of that stupid idea? My job is to keep the servers running. My job is NOT to make sure the developers write good code.

    --
    -- Will program for bandwidth
    1. Re:Sysops writing unit tests? by leuk_he · · Score: 1

      Whenever the mission software fails at 3 AM due to bad tested software you might disagree. If the same people responsible for the software have a responsible task in developing it there will be far less outage, because it is in their interest to have software that keeps running.

    2. Re:Sysops writing unit tests? by DragonWriter · · Score: 1

      Who thought of that stupid idea? My job is to keep the servers running. My job is NOT to make sure the developers write good code.

      Developers writing good code that gets deployed to your servers makes the job of keeping the server running easier than developers writing bad code that gets deployed to your servers. For the same reason business users being involved in developing test scenarios is important, system administrators of the systems to which code is to be deployed need to be involved in developing test scenarios that verify that their needs are being met.

      This may or may not mean "writing unit tests", specifically, of course.

    3. Re:Sysops writing unit tests? by mxyzplk · · Score: 1

      I think the point is more to write unit tests of *your own* stuff.

      I project managed a huge core network upgrade at our company. As we put together the plan, we had to take everything down in layers and then once the network was swapped out, bring it all back up. So the plan the various admin teams presented me with were "Storage team brings up the SAN and filers, then the UNIX team brings up all their systems, then the Windows team brings theirs up, then app admin teams bring up app servers and whatnot, and then after we've done all that for three hours, we'll have end users test. If their apps don't work, then something went wrong."

      I said, "Shouldn't you test your own layer yourself? You know, before inflicting it upon someone else?"

      Their response: "Huh?"

      So we had to work together for a while, and finally all the ops teams had the equivalent of "unit tests." All the unix boxes would do a many-to-many ping sweep to make sure every box had connectivity to every other box, for example. The storage team tested that you could connect to the storage, and looked at NFS error rates. It took a bit to get to this point because of an odd embedded opinion that "testing is for other people. Admins don't test." Which I think we might recognize as not being all that helpful.

      So yes, operations folks should write unit tests. According to the DevOps "infrastructure is code" belief, your new UNIX build is just like some guy's Java code, and should have unit tests (and be in source control and other such best practices).

  69. Re:Being Successful! Like Taco Bell? by Anonymous Coward · · Score: 0

    Your link is to them ENDING their boycott... in 2004... so not sure what your point is there.

  70. we need a return to "REAL" programming :-) by mjwalshe · · Score: 1

    and get rid of this namby pamby hippy OO crap :-)
    and replace all this bloated xml - what wrong with Holerith statements.

  71. Re:It's easy to overthink even in the simplest cas by vlm · · Score: 1

    How can I combine the STDOUTs of two processes? Do I really need to resort to using temporary files? Is there really no tool to do the logical opposite of the "tee" command?

    You are probably thinking: "Oh, you silly person, that's so trivial, you must be very incompetent", but in case you aren't, you might want to spend a minute trying to figure it out before reading on. I even asked a colleague for help before realizing that the reason I could not find a tool for the task was quite an obvious one: such a tool does not exist.

    Google for the term "named pipe". Shove both files into the hole, pull one file out.

    --
    "Science flies us to the moon. Religion flies us into buildings." - Victor Stenger
  72. Strawman by NuShrike · · Score: 1

    Wow, programming strategies based on a strawman (re Taco Bell) argument. Has "win" written all over it.

  73. Ant instead of shell scripts by roskakori · · Score: 1

    The gist of article seems to be that for many tasks people should combine the powerful Unix standard commands like find, grep, xargs, sed, etc instead of writing dedicated programs in lower level languages such as Ruby, Python, Java etc. This idea is not new, and many of the people around here have heard it 15 or more years ago. Being a developer, I always liked the perspective of having to write lesser code.

    However, the Unix command line and shell script approach never really worked for me, especially if other people in the team wrote them. The main reasons for that are:

    • missing error handling (no checking for "$?", broken pipes, ...)
    • lack of consideration for special cases such as file names with blanks in them
    • difficult post-mortem analysis if the data causing an error got lost in a pipe instead of being available in an intermediate or temporary file
    • possible configuration nightmare to get non-ASCII characters working (depending on the actual platform you're on; it can be easy, too)
    • terse syntax with a tendency to "write only" code (which makes sense for a direct input command line but less so for code that should be maintained for years to come)

    All of this could be overcome by measures such as checking $?, redirecting stderr, using temporary files, configuring encodings properly, documentation comments and so on. However, this rarely ever happens in practice.

    For the past couple of years I have been using ant for many tasks formerly delegated to shell scripts. Its main advantages are:

    • provides many standard tasks to copy/move/delete files, search and replace in files, filter files, download files, send mails etc.
    • provides many ways to limit commands only to certain files depending on name, date, contents etc.
    • most tasks fail on encountering any error and consequently terminate the whole script (though this can be disabled for a certain task if needed be)
    • generic <exec> task to execute shell commands in case ant does not provide a standard task; you have to be careful with this one though and set failonerror="true" or it will continue even if it fails
    • pretty legible due to using english words instead of abbreviations for most things
    • many simple typos are already detected when ant parses your script and not only when a task gets executed.
    • platform independent syntax for file paths so your script can work on Unix and Windows.
    • takes care of all escaping and non-ASCII issues with files names.

    Of course it's not perfect. For example, it uses XML and consequently contains some syntactic noise, it lacks advanced string operations, there are no pipes and sometimes seemingly trivial things result in a lot of messing around with properties. Nevertheless I rarely see a need to write shell scripts anymore except for simple launchers. YMMV but despite ant initially being a build tool for Java developers, we use it for many sysadmin-like tasks with great success and a small amount of development time.

  74. Re:8? I thought it was 3 ... by Kyont · · Score: 1

    No no no, you're still thinking procedurally!

    --
    You shall see a cow on the roof of a cotton house.
  75. Re:8? I thought it was 3 ... by Liquid+Len · · Score: 1

    I thought there were 6 - up, down, strange, charm, top and bottom?

    Try to build an electron with that...

  76. 8 simple ingredients? by DaPhilistine · · Score: 1
    what, like has already been done with enterprise integration?

    Channels, Adapters, Routers, Filters, Transformers, Splitter/Aggregator, Delayer, Bridge?

    Very original.

    There's some things shell scripting can do well, and there many things it can't do well - writing large complex programs that make it easy to drop in new functionality without changing existing code is one of them.

  77. Re:8? I thought it was 3 ... by gknoy · · Score: 1

    I thought it was up, down, left, right, B, A, select and start?

  78. Bingo. by abulafia · · Score: 1

    That's exactly right.

    In related news, I believe that people don't like shell scripts for what amounts to aesthetics. If you think a custom-rolled 30K-line C app built by some in house programmer is somhow inherently more robust than what an experienced unix geek throws together, please explain which is more likely to change in the next apt-get:

    • glibc
    • libmysqlclient.so.*
    • Some fucking thing in that import com.sun.jndi.* statement
    • The commandline params on split

    The original article by this Dziuba guy is typical of new geeks that suddenly discover the wisdom of Unix design - he knows he's clever, and thinks he's now way more clever because he noticed that pipelines make sense. In ten more years, he might learn to be a bit more humble. Old bearded unix geeks who seem really smug to new hotshot coders who are going to change the world are smug for a reason.

    --
    I forget what 8 was for.
    1. Re:Bingo. by Eskarel · · Score: 1

      Note I didn't say that scripts weren't the right solution, at least for some problems, or that any of these things were actually likely to break, merely that they were brittle. Glass is fairly brittle, but that doesn't mean it's not the right solution for putting in windows, or that it's likely to break every day. The OP was merely arguing against the idea that shell scripts were brittle.

      That said a hundred line shell script is one hell of a complicated beast, and I'd bet dollars to doughnuts that the 30k program probably not only reinvented the wheel a few hundred times but might possibly have reinvented wood. Even accounting for the fact that properly formatted C code has a lot of whitespace, 30k lines is an awful lot of logic, and it's not really all that uncommon for people try try and roll their own parsers rather than using any of the many readily available libraries.

  79. Well, it IS a metric of sorts. by HeckRuler · · Score: 1

    Lines of code is a rough measurement for the amount of work you put into a project. There are coefficients for which language you use, and some minor adjustment for coding policy.
    But more importantly, it's a measurement of FAILURE. The more work you put into a project to get it done, the worse you are as a programmer.

  80. Re:8? I thought it was 3 ... by marcosdumay · · Score: 1

    Do they use strange, charm, top and botton at Tacobel now? Those literaly blow!

  81. I adore it by whitroth · · Score: 1

    I love it, someone after my own heart.

    Yes, I'll skip the kewl k1ds who make jokes about 8 bits, and read what he's saying.... In the early nineties, I was helping a sr. staff scientist where I worked pick a GIS for the company. One was something called APE 3, from several universities. I cracked up when I saw it running: there was a window on one side, and you could drag and drop... and all it was doing was GUI-ifying std. Unix pipes and filters.

    These days, I'm sure you need Sup3rK3wl with GUIness, which can only run an a graphics card suitable for the next generation of games....

    Too many just don't pay attention to what tools are already there, just like folks didn't (and still don't) look at what functions are in the std. libraries.

    Say it, brother.

                      mark

  82. Wouldn't be the first time Tech is like Taco Bell by xyleen · · Score: 1

    Comparing the OSI model of networking to a 7 layer Taco Bell burrito
    http://pablotron.org/files/7_layer_burrito.html

    --
    This is not my sig
  83. Re:8? I thought it was 3 ... by StikyPad · · Score: 1

    Left, Right, Left, Right, B, A, Select, Start

  84. Re:It's easy to overthink even in the simplest cas by eap · · Score: 2, Informative

    Psst,

    " | sort | uniq -c "

    Will sort and then count repetitive lines and output count, line. You can pipe the result back through sort -n if you want a frequency sort or sort -k 2 for item sorting.

    The problem was not figuring out how to count the unique items. It's the part before the pipe that was difficult. The poster needed to combine the results of two different commands and then compute the unique items. The solution would have to be, logically, "command1 + command2 | sort | uniq -c".

    Unless you can find a way to pass the output from command1 through command2, you will lose command1's data. The solution he/she found was elegant: (command1):(command2) | someKindOfSort. My syntax is probably wrong. If you were simply pointing out a better way to sort, then please disregard.

  85. Re:It's easy to overthink even in the simplest cas by As_I_Please · · Score: 1

    Correct syntax would be (command1; command2) | command3, which is what was described in Meriahven's post.

  86. Ted Dziuba is an idiot by Anonymous Coward · · Score: 0

    he was an idiot when he was sewing his nonsense on The Register

    Now he's here.

    Another nail in /.'s coffin

  87. Yay UNIX, but remarkably uninformed about DevOps by mxyzplk · · Score: 1

    I agree with the general sentiment of "you can solve a lot of problems just using UNIX and not big fancy things." That doesn't really have much to do with the random DevOps swipe and shows a fundamental lack of understanding of it.

    DevOps grew out of a couple major needs. The first is for developers and sysadmins to collaborate more. Do you like the old practice of "developers make it all happen, and toss their demented creation over to you a week before go live and say 'figure out how to make this run in production'"? As developers have largely uptaken agile development methods, it's gotten even harder for traditional sysadmin teams to work with them to make sure that the end system is going to have good availability, performance, security, etc. I don't think a desire to have operations folks engaged from conception with products/projects to be "sucking up to the developers."

    The second is to advance the state of the sysadmin practice. It has stagnated somewhat in recent years. It's not old tools that are the problem (again, yay UNIX) but the processes and practice - structured process turned into the huge unusable beast called ITIL and so many admins have apparently decided that the way they do business really shouldn't change from the 1970s. But Visible Ops, the agile systems administration movement, the growth of automation tools like Chef/Puppef/cfengine, etc. mean that we need to bring system administration up to the same level of professionalism as programming can achieve. Why exactly should your sysadmin scripts not be source controlled? Why should you not write tests - not for others' code, but for yours? Why shouldn't you automate system builds like code builds, even moving to continuous build cycles? In the increasingly virtualized/cloud world, "infrastructure as code"

    Here at National Instruments we have a DevOps implementation to develop some new SaaS products. It's a single team with developers and sysadmins on it. Provisioning and monitoring are built into the apps from scratch. All our sysadmin stuff is kept in source control. We script things rather than doing them by hand. Developers write unit and integration tests for their code; admins write unit and integration tests (we call them "monitors") for our assets. We all work in iterations and work tasks on a burndown chart. Bugs in the systems are tracked in the same system the developers use. All of our systems get built and booted and have software and apps loaded on them completely automatically. And that's awesome! Sure, it's not the good old "lurk like a troll in the back room and make developers cry when they come around" model, but you know, different strokes I guess.

  88. Yes, it is easy to over think them. by VxJasonxV · · Score: 1

    diff -uN file1.out
    sort -u file2 > file2.out
    diff -uN file1.out file2.out

    1. Re:Yes, it is easy to over think them. by VxJasonxV · · Score: 1

      What the heck? That got TOTALLY munged, take two:

      diff -uN <(cat file1 |sort -u) <(cat file2 |sort -u)

      I think? Possibly also |wc -l but that admittedly wouldn't be 100% accurate.

      The traditional way is three commands:
      sort -u file1 > file1.out
      sort -u file2 > file2.out
      diff -uN file1.out file2.out

  89. Taco Bell programming...really? by atomic-penguin · · Score: 1

    I read both the articles, and this is what I gathered...

    The guy who preaches the Taco Bell model, in his own words, he is using a few simple components strung together to make complex applications. The utilities he refers to are probably not news for anyone who ever read Slashdot. He comes off very much like the guy who would re-invent a square wheel, rather than learn and use newer tools that might just be even better suited for the job. The irony is, he isn't really thinking outside the box. Nor does he have the experience to even comment on software development or systems management, as he points out "this is a path that I am just beginning."

    I've got nothing against the thousand of simple Unix tools which can be chained together. But I also know there are limits to what you can do with those tools. The DevOps guy calling for a shift of thinking in I.T., in my opinion is hitting close to home. Read both articles, and seriously tell me who you would rather have on your team? On the one hand, you've got Taco Bell dude who just wrote his first Shell script. On the other hand, you've got the more experienced guy who you may not agree with, but just maybe he's on to something.

    --
    /^([Ss]ame [Bb]at (time, |channel.)){2}$/
  90. Clever!? by BlueRaja · · Score: 1

    Clever is a taboo word in programming. Anyone who's spent hours debugging a bash script, or hours searching google trying to figure out how to do something in SQL that would take 3 minutes to program in a programming language, would know this.