- Feature Articles
- CodeSOD
- Error'd
- Forums
-
Other Articles
- Random Article
- Other Series
- Alex's Soapbox
- Announcements
- Best of…
- Best of Email
- Best of the Sidebar
- Bring Your Own Code
- Coded Smorgasbord
- Mandatory Fun Day
- Off Topic
- Representative Line
- News Roundup
- Editor's Soapbox
- Software on the Rocks
- Souvenir Potpourri
- Sponsor Post
- Tales from the Interview
- The Daily WTF: Live
- Virtudyne
Admin
The frist time in a long time there no RWTF - business as usual for offshoring and smart programmer delivers.
Admin
The hardest part for me would be the PDF. I've lived a sheltered life in that I've never had to write code involving PDFs...but I know, one day, it will happen...
Admin
TRWTF is that Bobby didn't insert a wooden table in the process.
Bobby, insert, table... yeah that's deliberate.
Admin
Nope, I guess the PDF writing part is done by the reporting software. Just provide the data for the word cloud and you're done, done, done.
Admin
I might have tried to do it in LaTeX
The idea is simple, create a LaTeX file, using the tikz package with its automatical graph positioning library. Then compile the latex to pdf.
But actually that is not much away from the original solution. Because the graph positioning only requires lualatex. Now the turing complete latex (with is just a simpler interface to tex) calling Lua to calculate the positions
Admin
just had a though on this one here:
https://xkcd.com/327/
Admin
Who needs "Fast" and "Good" as long as "Cheap" is readily available?
And everyone knows the big advantages of monocultural farming, so everyhost should run a Windows with Internet Exploder and IIS.
Admin
I wonder if there's really no word cloud library these days, given they're so hipster and such. But the story might have taken place before they were as popular as they are today, so never mind.
Admin
Ok. I have made some convoluted Goldbergish 'solutions' in my time (mostly involving hardware wit boor software support), but this... WOW!
The only thing remotely similar to this was when I tried to create a label-printing system for our lab (for samples etc) and had to use OpenOffice to print the labels (as the Brother labelprinter only had support for printing from templates in either word or odf, but not simply from cmdline). I had to use my program to open and modify a special odf file, and then call openoffice with enough cmdline arguments to open the file, print it and exit again. Unfortunately it only worked if the process was started from within a gui session as although openoffice was started without graphics from an xterm window, somewhere in the bowels of it, it still needed graphical access...
Yazeran
Plan: To go to mars one day with a hammer.
Admin
The more terrifying part of this story is that if Bobby had decided to use a cross-platform browser with Selenium rather than IE, this probably would have snuck into production.
Still, it would have made an even more entertaining read when it eventually got posted here. Glad Brent was able to nip it in the bud, but it should never have even gotten that far!
Admin
You don't say.
Admin
I'm pretty sure putting Selenium in the actual application's code base is grounds for immediate termination of contract. Unfortunately this company's management may not understand what a giant red flag that it really is...
Admin
Re: "And everyone knows the big advantages of monocultural farming, so everyhost should run a Windows with Internet Exploder and IIS." -- yes, it causes the bees to starve and die (since other than when that particular crop blossoms they have no flowers to collect pollen), which in turn kills the food chain, which in turn kills all life on earth eliminating those pesky animals and humans...
Admin
Re ODF not working without xterm: A lot of Windows print drivers do the same thing without GDI/GDI+ available, even if they convert it to PCL/PS/XPS to communicate with the printer. Getting them to work on Server Core is a nasty chore.
Admin
I am actually please with how this story came out. I have never understood why but its always seemed to me that when LOB software meets report writing requirements, aggressive stupidity that would never be tolerated in any other system component becomes acceptable.
I can't even count the time I have seen processes that include an OCR step where all the data is coming out DBMS. Its as if someone says hey you know what this product really needs is an incredibly cpu intensive error prone process, we can repeat 100s of times for each of our thousands of customers! Just like this one where all it would have taken is for a system software update to change the browser handles some CSS or and the output would probably break.
I can sort of understand why someone would want to go about this by trying to produce and HTML representation as an interim step. HTML generation is a known quantity with lots of good tools available and lots and lots of developer experience available. I might have done the same, in fact. The part I can't understand is why this guy never though, "hmm I wonder if there is a way to render an HTML document and output a PDF without using web browser, writing interim disk files and the race conditions and environmental restrictions that implies?" I almost wonder if there is a library or two or 10,000 out there that do that....
Admin
What's a "story" ?
"Brent's latest software project contained a story for adding a word-cloud to a PDF report". "Then he realized, this was probably just a testing ticket that'd somehow gotten linked to the story by accident." "The story really is blocked."
Googling doesn't help as "story" is overwhelmingly reported as, well, the narrative process we all know. Is it some kind of IT tool ?
Admin
Is this thing actually real? I hope not all overseas developers are this dumb. An implementation that someone codes in minutes should never take you a month to do, and even then you do a sloppy job.
Admin
A certain trendy development methodology, to stupid do name. Has "user stories" which is a feel good name for functional requirements. The average users is to dumb to describe their needs and the average BSA is to incompetent to help them, so instead they are asked to tell stories about what they think their workflow should be.
Admin
This would require an HTML generator capable of JavaScript execution.
Admin
Did Cheryl just pop out of nowhere in the story? Is this Cheryl in accounting (who just don't GAF)? You'd think the person that solved the problem would get slightly more introduction/cred.t
Admin
My first thought on how to do this would be to find a word cloud library that generated an image and then embed that image in the PDF. Given I was able to find such a library and was already familiar with the PDF generating library I was working with, I still don't think I'd be able to get a working solution in just a few minutes. The article doesn't explicitly say the developer in the meeting came up with the solution completely without incorporating some word cloud library, but it's implied. Of course, the main point of the article is to highlight how crazy of a solution the first implementation was, but I can't help but wonder what the solution done in a few minutes actually was.
Admin
Is it my imogenation or ear them more spalloes than usule in pastings todie?
Admin
Well, duh, what did you THINK he was referring to?
Admin
You may be thinking of Janice . https://www.reddit.com/r/OutOfTheLoop/comments/3tafmu/who_is_janice_in_accounting/ Cheryl's actually very nice.
Admin
There's a CommitStrip relevant to this story but I can't seem to find it.
Admin
The amount of bullshit work that simple user story statements eliminate makes it worth the name
Admin
We must salute the real hero of the story: Cheryl. She is the go-to person. Way to go Cheryl.
As for the "overseas contractor", what can I say. They only know windows and their yellow brick road from Redmond is paved with good intentions, but it leads straight to hell!
It should be obvious to most readers that if you must rely on IE (in any form!) you have a real WTF that can be VERY difficult to repair.
Admin
This is the first time I've ever seen the word "story" used this way, and I very much hope it's the last.
Admin
It's hard to imagine that you're in IT and have never heard the word "story" used in this sense. I first heard it in 2005, and it had been around for a few years before that. I can assure you that you will hear it again unless you retire.
Admin
I found TRWTF: The meeting was actually productive!
Admin
Likewise. It's a kind of silly term, but it's been in fairly widespread use for over a decade...
Admin
I once had the fortune to work a bit with creating PDFs. In many ways, with the right library, it is not so bad. Unlike HTML for example, you can place any kind of text anywhere you want, and it will not (necessarily) move the rest of your document.
For a word cloud, that means all you need to do is calculate positions. You can already pick font-sizes beforehand and assign them in order to your words, what's left is an exercise in positioning. I know at least one PDF library that could give you the width of a given string, line-heights are easy, so if you keep track of your cloud boundaries you can simply position words around the nearest edge. I mean, it's not exactly trivial, but I will believe that a proficient dev could whip up a working version in half an hour, an hour maybe. This really should not take a month.
Mind you, I expect we have all been here: faced with what seems like a tricky problem, so we check if someone else solved it for us already, and once we go down that path, spend more time implementing the external solution than it would have taken to simply write something ourselves. This one just followed the rabbit hole a little deeper than most.
Admin
I'm surprised nobody has yet suggested writing the word cloud code in postscript and just appending it to every PDF so they can generate their own interactive word clouds at display time.
Admin
No, not just a little deeper.
Admin
The closest thing I did in the past in to implement "barcode with checksum" (so cannot just use "Free3of9" font directly) in PDF report without existing library. It takes me about one or two days to do it.
Admin
TRWTF: "He'd been hoping [...] that a solution would only require a download and a few lines of code."
If I had penny for every time a manager though this... :-(
Admin
That's not so easy for developers whose skillset relies on Googling for libraries someone else has written for their specific need; if it involves any actual programming on their part they're lost. Something something kids something something my lawn.
Admin
Let s/he who has not done something eerily similar in the past cast the first stone...
C'mon, we've all over-engineered solutions in the past, only to find out that there's a 2-line way to do it. Ignorance isn't a crime. And FYI, it's not as though the US is some kind of Coding Utopia and "overseas" is a hell-hole of coding schmucks. I know a bunch of "overseas" developers that can code circles around most home-grown programmers.
You want to see some real WTFs? Here they are:
The company outsources to an overseas firm. The company doesn't bother to take a look at the firm's track record. The company deserves what they're about to get.
Brent doesn't think the overseas team can do it. Brent then leaves the overseas team without any oversight for a whole month, apparently not bothering to ask them anything during that time. Good golly gosh, Brent, what did you think was going to happen? Brent then punts the problem back to his in-house team, because they should have to deal with his failure to manage a project. And while Brent is droning on, one of his team members (who has probably been through this cycle of pain with Brent before) hacks up a quick solution, and I'm guessing that she does this because it's the only effective way to shut Brent up. Brent should have nothing to do with project management, because Brent is The Real WTF.
Admin
http://i.imgur.com/RD3auhl.png
Admin
I am reminded of when we migrated from a legacy solution where we migrated our FORTRAN suite of report generation software, complete with its own language for defining the report structure, that we wanted to port our reports into an XL format (give us a break, XL didn't exist when this software was originally written). We had the choice: a) Convert the reports, in pdf format (generating that format was a task we had done some time back) into XL format using a bespoke 3rd party tool b) Write our own tool to convert our report structure definition files into XL templates in their internal XML format. The latter approach won out. It was a fun project to work on.
Admin
Would have worked better if you worded it slightly differently - something around dropping a wooden table in the product.
Admin
Nice word cloud. How much (if any) code did you write and how long to implement?
Admin
Quite a lot. It involve a browser, a vector image manipulation application, and a wooden table. A month. But it surely will go past the deadline.
Admin
"I can't help but wonder what the solution done in a few minutes actually was."
My bet is that it was fictional.
Admin
Ah, the joys of outsourcing.
I'd just started at one job when I was asked to do a code review of a script from an offshore dev. I though it was pretty unusual given that I was still completely green w/r/t their DB structure.
That wasn't the problem.
The "code" was full of lots of SQL structures that included "GROUP BY ROWID HAVING (some condition)". So I asked the c...omputer science graduate at the other end of the phone line what the fu...nctionality was meant by this. He was really proud, he'd been given some queries that used GROUP BY and HAVING, and upon needing to select a particular set of data had realised that instead of looping through looking for the appropriate results, if he could just group the data by something unique to each row, he could use HAVING to select just the needed data without needing to fetch and sort the entire table.
He was a little less upbeat after I initiated him into the heady possibilities of "WHERE" clauses.
Mind you, compared with the solution he was about to implement, his "reinvented wheel" was a triumph!
Admin
No, I don't think Brent is the WTF here. Most offshore projects I have been associated with the offshore group has their own Project Managers who are in charge of the programmers and they report to the onshore CTO. Onshore programming staff is, like in this story, just brought in at the start and end. I have worked with some good programmers from India who were totally crushed by the firms they were working for. The PMs at the firm demanded product (lines of code) over quality. When I requested in a review that the programmer gather all that repeated code up into a function and call it rather than doing cut-and-paste coding they were happy that they now had something to push back with (i.e. customer says to do it this way). Mostly the poor quality of work received from offshore is due to the consulting firms trying to put junior guys into senior roles. Since hey, if the customer will pay they get more money.
Admin
A "story" is a term for something larger than a task in agile development. So you have the following hiererchy: Epic > Feature > Story > Task. A story can typically be finished within a two-week sprint.
Admin
I agree with half of what "Nooby Son of Dooby" said. Yes, I've over-engineered solutions. But I don't think I've ever considered firing up an instance of Internet Explorer from a server process.
But I agree that Brent is the WTF. If Brent didn't trust the overseas developers, then why did he send just a requirement without a design, and expect an acceptable solution? He should have either designed it in-house, or required the overseas developers to send the first draft of the design for review before proceeding.
Admin
I would rather
Bobby; DROP TABLE Into_Process--
Admin
A quick google found me Kumo (https://github.com/kennycason/kumo), which looks like a nice free Java library for word clouds.