152
bahua
5y

A guy on another team who is regarded by non-programmers as a genius wrote a python script that goes out to thousands of our appliances, collects information, compiles it, and presents it in a kinda sorta readable, but completely non-transferable format. It takes about 25 minutes to run, and he runs it himself every morning. He comes in early to run it before his team's standup.

I wanted to use that data for apps I wrote, but his impossible format made that impractical, so I took apart his code, rewrote it in perl, replaced all the outrageous hard-coded root passwords with public keys, and added concurrency features. My script dumps the data into a memory-resident backend, and my filterable, sortable, taggable web "frontend"(very generous nomenclature) presents the data in html, csv, and json. Compared to the genius's 25 minute script that he runs himself in the morning, mine runs in about 45 seconds, and runs automatically in cron every two hours.

Optimized!

Comments
  • 30
    Other teams guy:
    "something 's fucky"
    Other teams lead:
    "sshhhh..
    .. You're promoted to customer"
  • 7
    @bahua
    I believe your intention and general behaviour does not match my previous comment.

    Sincerely,
    I'm yealous of your skills / ecosystem / surroundings.
    Keep it up.
  • 1
    Jealousy?
  • 5
    @scor

    Not trying to toot my own horn as much as I'm trying to point out that the guy who wrote the original script was so highly thought of, when his approach was so terrible.
  • 9
    @bahua .....
    perl???
  • 5
    @magicMirror

    It might not be as popular as other languages, but nothing comes close to it in terms of performance and efficiency for parsing text, other than compiled code.
  • 2
    @bahua Well - perl has it uses.
    When was this?
  • 2
    Early to mid 2019, thereabout.
  • 6
    \o/ Perl
  • 10
    Well, when the guys original code was named "breakmaker.sh" it should have clued you in. Especially when in the same directory it had compiling1hour.sh, compiling2hours.sh, and compilingallday.sh.
  • 1
    @theKarlisK

    Eyepatch..
    Viewed..

    ..ok.

    ='D
  • 1
    @ThatPerlDeb

    Perl \o/
    woopwoop \o/
  • 2
    perl made me throw up a little bit
  • 2
    @K-Hole

    I agree. He took the initiative. I'm just surprised that nobody saw anything wrong until I looked at his code.

    He's not an idiot, he just doesn't have much idea of or interest in best practices.
  • 3
    @bahua Some people get the idea that what they wrote is okay even when it is not. I worked with a guy that was feeding my daemon, written in python, a bunch of text data. I would process the data and send it back. He kept complaining that there was something wrong with my process. I had been testing my daemon with an automated test system that used the same interface. So out of curiosity I logged into the dev server and looked at his C code. He had a bunch of buffer overrun issues and pointer problems. I fixed them, compiled his code, and then informed him of the problem. He was very appreciative of the help, but I am not 100% sure he understood what was going on. So, while people may be capable, sometimes they don't verify their own systems or don't have the capacity to improve past a certain point. Or maybe it just comes down to experience. See enough shit and all problems look the same, for better or worse.
  • 1
    So... You're too awesome to do your job unless somebody else solves the issue and you get jealous of the fame they gained. How professional.
  • 2
    @cprn

    Nope, just telling a story about optimization.
  • 3
    @bahua People read into stories way too much on here.
  • 1
    @bahua well. as long as you used warning and strict while doing perl.

    Practice Safe Perl.
  • 2
    @magicMirror

    That's in my muscle memory.
  • 2
    I love stuff like this, as someone who loves perl and deals with the existence of python and its many many fanboys, this is great. 👍
  • 2
    Oh man I love me some perl. Glad to see it getting some good usage. Nice work!
Add Comment