There have been multiple accounts created with the sole purpose of posting advertisement posts or replies containing unsolicited advertising.

Accounts which solely post advertisements, or persistently post them may be terminated.

Taco Bell Programming

Taco Bell Programming

by Ted Dziuba on Thursday, October 21, 2010

Every item on the menu at Taco Bell is just a different configuration of roughly eight ingredients. With this simple periodic table of meat and produce, the company pulled down $1.9 billion last year.

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.

Here’s a concrete example: suppose you have millions of web pages that you want to download and save to disk for later processing. How do you do it? The cool-kids answer is to write a distributed crawler in Clojure and run it on EC2, handing out jobs with a message queue like SQS or ZeroMQ.

The Taco Bell answer? xargs and wget. In the rare case that you saturate the network connection, add some split and rsync. A “distributed crawler” is really only like 10 lines of shell script.

Moving on, once you have these millions of pages (or even tens of millions), how do you process them? Surely, Hadoop MapReduce is necessary, after all, that’s what Google uses to parse the web, right?

Pfft, fuck that noise:

find crawl_dir/ -type f -print0 | xargs -n1 -0 -P32 ./process

32 concurrent parallel parsing processes and zero bullshit to manage. Requirement satisfied.

Every time you write code or introduce third-party services, you are introducing the possibility of failure into your system. I have far more faith in xargs than I do in Hadoop. Hell, I trust xargs more than I trust myself to write a simple multithreaded processor. I trust syslog to handle asynchronous message recording far more than I trust a message queue service.

Taco Bell programming is one of the steps on the path to Unix Zen. This is a path that I am personally just beginning, but it’s already starting to pay dividends. To really get into it, you need to throw away a lot of your ideas about how systems are designed: 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.

If you don’t want to think of it from a Zen perspective, be capitalist: you are writing software to put food on the table. You can minimize risk by using the well-proven tool set, or you can step into the land of the unknown. It may not get you invited to speak at conferences, but it will get the job done, and help keep your pager from going off at night.

Kolanaki ,
@Kolanaki@yiffit.net avatar

So… When is someone going to start making logic gates out of taco bell ingredients?

TimeSquirrel , (edited )
@TimeSquirrel@kbin.melroy.org avatar

I think I thought of that in like, 2003, when developing my first web site. My lazy ass was just thinking of using PHP's ability to execute terminal commands to do all the heavy lifting on the backend for everything for me, because I sucked as a programmer. That would have been a terrible, terrible idea in hindsight.

This was way before I learned about form input sanitization too. I was working off of "For Dummies" books.

shalafi ,

Send this to my last DevOps team. Jesus. They got a Rube Goldberg machine in place of sane infra. Shit’s so complicated, I know only one guy with his finger on the pulse, and that’s because he built a ton of it over 18 years!

kungen ,

That guy: wow, these people are such suckers… keeping me employed for over 18 years despite not building better infra?

How much chaos is it gonna be for your company if he’s hit by a bus?

DocMcStuffin ,
@DocMcStuffin@lemmy.world avatar

And just like Taco Bell when something goes bad you get to deal with all the diarrhea.

But seriously, shouldn’t this be in !programminghumor and not technology?

TimeSquirrel ,
@TimeSquirrel@kbin.melroy.org avatar

I get the feeling like half the people here are programmers or in a related field anyway.

MajorHavoc ,

I mean some of us aren’t programmers…

I think…

… Looks around…

…yet.

geekworking ,

This is great until your job outgrows a single computer or you want to have redundancy. Also, chains of bash tools don’t have the best error management when something chokes in one of the middle steps in the pipe. You can still leverage simple bash tools for a lot of the under the hood stuff, but you start needing something more to act as the glue petty quickly when you scale. KISS should still apply.

lemmy_in ,

This works until you scale the team beyond 1 person and someone else needs to decipher the 30 line awk | sed | xargs monstrosity you created. Give me a real programming language any day.

Dran_Arcana ,

It’s fuckin’ art though

eager_eagle ,
@eager_eagle@lemmy.world avatar

I’ve hacked plenty of bash aliases, functions, and scripts using coreutils myself; but sometimes you need something a bit more robust when it comes to error handling, retrying, maintainability, and an actually distributed solution instead.

xargs on its own might be more resilient than a distributed crawler, as one would expect, but if I’m tasked with building a distributed data processing pipeline I want more guarantees from the system as a whole, not only from its individual building blocks.

The time and effort put into embedding these guarantees in hacked shell scripts running on a dozen machines might be better invested into building a more solid foundation instead.

False ,

Truly a Taco Bell-level take.

friend_of_satan ,

Related standup comedy from 1996, Jim Gaffigan: youtu.be/SLaltfyTEno

iltoroargento , (edited )
@iltoroargento@lemmy.sdf.org avatar

Love ol’ Jim. My stepdad and I caught him for his 2014 tour and it’s been one of the highlights of both our live entertainment experiences lol that and seeing Rush in 2012.

Edit: “live” entertainment lol… Gotta love mobile.

  • All
  • Subscribed
  • Moderated
  • Favorites
  • [email protected]
  • random
  • lifeLocal
  • goranko
  • All magazines