[HN Gopher] No dogs were harmed in the making of this app ___________________________________________________________________ No dogs were harmed in the making of this app Author : ShMcK Score : 347 points Date : 2023-11-03 13:47 UTC (9 hours ago) (HTM) web link (shmck.substack.com) (TXT) w3m dump (shmck.substack.com) | jjgreen wrote: | A good Friday story. | imchillyb wrote: | I read this on break and needed to hear these words of | encouragement and hope. | | Thank you for sharing your misadventure with us. | feintruled wrote: | That's quite a tale, a parable almost about how software | engineering differs from other jobs (I want to say 'real' jobs | but tongue in cheek). I like this one too, it's even snappier. | | A software engineer, a hardware engineer and a department manager | were on their way to a meeting in Switzerland. They were driving | down a steep mountain road when suddenly the brakes on their car | failed. The car careened almost out of control down the road, | bouncing off the crash barriers, until it miraculously ground to | a halt scraping along the mountainside. | | The car's occupants, shaken but unhurt, now had a problem: they | were stuck halfway down a mountain in a car with no brakes. What | were they to do? | | "I know," said the department manager, "Let's have a meeting, | propose a Vision, formulate a Mission Statement, define some | Goals and by a process of Continuous Improvement find a solution | to the Critical Problems, and we can be on our way." | | "No, no," said the hardware engineer, "That will take far too | long, and besides, that method has never worked before. I've got | my Swiss Army knife with me, and in no time at all I can strip | down the car's braking system, isolate the fault, fix it and we | can be on our way." | | "Well," said the software engineer, "Before we do anything, I | think we should push the car back up the road and see if it | happens again." | shadowgovt wrote: | The big advantage to software engineering is we deal in | abstractions. I liken it to building castles in the clouds; | everything down to the foundation is reshapeable. | | ... the big disadvantage to software engineering is we deal in | abstractions. Everything down to the foundation moves. | | http://thecodelesscode.com/case/154 | xkcd-sucks wrote: | Also, software is right now primarily a means of codifying | human thought, which means it embodies the whole spectrum of | human sanity and competence | hathawsh wrote: | That deep thought seems especially appropriate for XKCD, | yet your username curiously suggests you would disagree. | lostlogin wrote: | > I liken it to building castles in the clouds | | You're very positive. When you see a developer dealing with a | bug, it seems more like they are dealing with a turd palace | floating in a sewer. | qup wrote: | Turds are shapeable, too. Hard to polish, I've heard. | | But you control the poopy stack. | cgriswald wrote: | > [Turds are] hard to polish, I've heard. | | Mythbusters did it: | | > Adam and Jamie first visited the zoo to obtain a | variety of feces to try to polish. Poop collected, they | tried to pick the most polishable candidates, and then | baked them to remove the moisture. Adam tried to shine | his poop with a buffing wheel, while Jamie's tactic of | applying a furniture polish caused a philosophical | disagreement between the two. Adam eventually brought in | an outside expert to teach them dorodango, a Japanese art | form that allows a practitioner to apply a shine to dirt | using nothing but water and physical effort. Applying | this technique, Adam and Jamie were both able to polish | balls of poop without using any foreign materials as | judged by a gloss meter, exceeding a standard of 70 gloss | units for high gloss.[0] | | [0] - https://en.wikipedia.org/wiki/MythBusters_(2008_sea | son)#Epis... (Section: You Can't Polish Poop) | s1artibartfast wrote: | Is the moral of the story that the hardware engineer is simply | correct? - a mechanical engineer | lostlogin wrote: | No, it was a modern car and an unusual set of circumstances | lead to a software bug occurring in the regenerative | breaking. It needs further testing on that incline, at that | time, in that weather with that weight in the car. | bozhark wrote: | Was it pulling an F-150? | smt88 wrote: | It's mostly just a joke about how these roles do their jobs. | | But I think it's also partly illuminating the fact that | hardware engineers are true engineers, while software | engineers mostly aren't. | renewiltord wrote: | True. We're scientists. Replication is important! :) | fhd2 wrote: | "Empirical science" sounds better than "have you tried | turning it off and on again?", doesn't it. | monista wrote: | I read is as a reference to https://xkcd.com/242/ | tmpz22 wrote: | > True. We're scientists. Replication is important! :) | | Yes replication: | | Oops we got hacked. I wonder what happens if we write | insecure code again. | | Oops we got hacked. I wonder what happens if we write | insecure code again. | | Oops we missed a deadline. I wonder what happens if we | underestimate again. | | Oops we missed a deadline. I wonder what happens if we | underestimate again. | sophacles wrote: | When did software estimates ever factor into deadlines? I | have always found that my estimates + a bit of padding | are generally correct. Then management just picks an | arbitrary due date that has nothing to do with programmer | estimates. | mock-possum wrote: | Wow somebody's salty | alpaca128 wrote: | It isn't difficult to find non-software projects that | overshot deadlines by years and costs by tens of millions | or more, just to still have a leaky roof. Including, | whether you believe it or not, engineering work. | wruza wrote: | Why not hire hardware engineers to write software then? | smt88 wrote: | Software engineers are cheaper and more plentiful | s1artibartfast wrote: | Because software development isnt an engineering task. | | Engineers are good at building bridges, and artists are | good at making paintings. That doesnt mean it is a good | idea to have the engineers paint paintings. | ganzuul wrote: | To artists, engineers are artists who are good at math. | | Art is for everyone. Painting is a special form of art. | Math makes for beautiful art, so download LibreCAD and | free your mind. | | (Speaking as an ex. IT guy, ex. CNC machinist who is | attending art school at the age of 40 as a form of | rehab.) | stronglikedan wrote: | Software engineers for critical systems would like a | word. | gretch wrote: | Yeah it makes no sense. Like, you build an airplane and | clearly the airplane needs both it's software and it's | hardware in order to fly. | | Somehow the people who made the hardware are engineers, | but the people who made the software aren't engineers. | s1artibartfast wrote: | Nobody reasonable is saying that software isn't | important, technical, or valuable. It isnt a dig. | | It just has to do with the subject matter and definition | of Engineer. The clearest delineation is that an | Engineers work is the application the laws of physics. | Software developers are more akin to Scientists than | Engineers. They work in the arrangement of logic and the | semantic relation of abstractions. | | That is to say, Engineers work within a framework of | rules, and Computer scientists construct frameworks of | rules. | gretch wrote: | The definitions you just came up with are completely | arbitrary. Worst yet, your definitions aren't even | shared. | | It's hard to pin down exact agreed upon definitions in | English, but I searched many popular dictionaries and | none of them have "Engineers work is the application the | laws of physics". | | Fair enough if you want to have personal definitions of | words, but don't try to gaslight the rest of us into | thinking your understanding is the canonical one. | | Here's my facetious definition to illustrate how dumb the | discussion - I think an engineer is a person who works | with ENGINES (duh it's in the name). Obviously people who | build bridges aren't engineers; do bridges have engines? | toast0 wrote: | Some bridges do have engines, many more have motive | force. Of course, a lot of them just stand there, not | doing much at all. | | But, someone who isn't wearing a blue and white stripey | hat can't possibly be an engineer. | s1artibartfast wrote: | I brought up a definition shared by many people, and did | so without hostility. Do you have a real definition that | you can bring to the table? Is there a reason why you are | taking things personally? | | Can you articulate the difference between an engineer and | a scientist? | tom_ wrote: | Try it and report back! | QuadmasterXLII wrote: | Building as practiced by hardware engineers is not linear | in number of unique components. Building as practiced by | software engineers is, at a terrible price. | organian wrote: | I think "software engineers aren't really engineers" is | putting "real engineering" on a pedestal that is borne of | ignorance. Hillel Wayne's engineer interviews were eye- | opening on this: https://www.hillelwayne.com/post/are-we- | really-engineers/ | kd5bjo wrote: | Or perhaps that nobody had the common sense to _call a tow | truck_ , so that they can get down the mountain without | relying on a field repair to a safety-critical system. | tigen wrote: | NIH syndrome | s1artibartfast wrote: | Not invented here is the tendency to avoid using or | buying products, research, standards, or knowledge from | external origins. It is usually adopted by social, | corporate, or institutional cultures. Research | illustrates a strong bias against ideas from the outside. | slingnow wrote: | This makes a lot of assumptions about how far into the | wilderness they were, time of day, accessibility of the | roads, cell phone signal, and so on. To just hand wave and | call it "common sense" is silly without the rest of the | context. | | And for me, 100 times out of 100 I'm taking the capable guy | who can fix the brakes on a trip like this over someone | who's first and (likely) only instinct is to call a tow | truck. | atq2119 wrote: | As long as we're overanalyzing a joke, it's Switzerland. | There isn't really a lot of wilderness there ... | kridsdale3 wrote: | This is true. I spent a week hiking the mountains, where | I often could see exactly the same environment that has | existed for millions of years. But at all those times, a | hut serving beer and warm soup was always an hour's walk | away. | toast0 wrote: | Sounds like they were already down the mountain. Stopping | to call a tow truck while traveling down the mountain would | involve having working brakes, which the scenario suggested | wasn't the case. | FrankoDelMar wrote: | Turn the car backwards and use forward engine power to slow | the descent ;) or engine brake with the parking brake set and | hope for the best | wizzwizz4 wrote: | This story feels quite different without the context of the | story this thread is about. | frutiger wrote: | > "Well," said the software engineer, "Before we do anything, I | think we should push the car back up the road and see if it | happens again." | | Only the brakes don't work - the engine still does. Why would | they need to push the car uphill? | mewpmewp2 wrote: | It's preferable the fuel state stays as it is. How do you | know it's not the amount of fuel otherwise? | cgriswald wrote: | Presumably the engine was only idling during their decent | if the only thing that slowed their car was 'miraculously' | grinding the car against the mountainside. | | So, using previous records, they should estimate fuel usage | during the decent. Then they should walk to the nearest | fuel station, purchase fuel, and walk back. During that | time, they can calculate the amount of fuel that will | evaporate while they have the gas cap off and the amount of | fuel that will stick to the walls of the piping between the | gas cap and the fuel tank. This way when they return to the | car, they can put in almost exactly the amount of fuel that | was consumed during their harrowing stop. | | This presumes the fuel station has the same mixture as they | have in their tank. Otherwise all bets are off and they | should simply give up. | ganzuul wrote: | OBVIOUSLY, you could have solved the problem with motor | braking. The driver is not going to accept fault until | there is conclusive evidence of the their wrongdoing, but | you can't let the team know you are going to repeat the | test again but with a different driver because then they | will invent objections to pushing the car up the hill. | kridsdale3 wrote: | Turn the car around 180 degrees facing up. Coast down the | hill in reverse and control your descent with the | throttle. | ganzuul wrote: | "Magic", "More magic." | xboxnolifes wrote: | The brakes failed, but nothing claimed that they will fail | again. So, it's suggested to run the test again. | frutiger wrote: | Of course but they could run the engine instead of pushing | the car. | pests wrote: | Reminds me of the Family Guy episode (I think) when Peter and | Lous are both running for Mayor (or whatever) and were going | to a debate. Peter had his brakes cut and when he arrives | says "Sorry I'm late! Breaks failed" to which the response | was "Shouldn't you have gotten here sooner?" | kriro wrote: | Let me retell this tale... | | "I know," said the department manager, "Let's have a meeting, | propose a Vision, formulate a Mission Statement, define some | Goals and by a process of Continuous Improvement find a | solution to the Critical Problems, and we can be on our way." | | Knowingly the hardware engineer and the software engineer | looked at each other. "Actually the car is fine, but let's pick | a driver that knows what they are doing this time. You simply | don't know how to use the breaks and were randomly steering | left and right while thinking you're on track, management guy." | amelius wrote: | I think it is possible to end this story in three possible | ways, where each will be in favor of one of the professions. | geraldhh wrote: | please, go ahead | buttercraft wrote: | I would close all the windows and restart it. | mock-possum wrote: | If you could click 'relaunch' and the car would miraculously | reappear at the top of the hill and repeat the event, allowing | you to freeze time at the instant the brakes failed, then pull | apart every piece of the car so you could precisely observe the | failure in real-time, in slow mo, and in reverse - to pinpoint | exactly what the problem was | | You're saying the power to do that makes software engineers | ridiculous or impractical? | | Engineering inside a digital space gives the kind of debugging | abilities that would be straight up miraculous in a physical | disciple. If I have one thing, and I want to make ten more of | those to test in ten different ways, it's literally just | CTRL+C, CTRL+V. Let's see a mechanic do that. | brandensilva wrote: | Right with software we have abstractions and flexibility. | With hardware they are grounded more to the physical | capabilities of the hardware. | | Of course software is also limited by hardware capabilities | but we can code whatever we want on that hardware as long as | it fits within the provided specs. | acomms wrote: | Wow what incredible timing. I am currently working on an Image | Uploader component and the gotchas are hiding around every | corner. | rnicholus wrote: | This is one of those things I wouldn't suggest you solve with | the "roll your own" approach. There are some good libraries out | there that will handle this and more. Uppy is one that comes to | mind. I created and maintained another popular one for 7 years | that i sunset in 2017. | acomms wrote: | Currently using react-dropzone seems to solve most of the | major issues for me. Use that to get a signed URL via API, | then upload from client to image server directly. | uoaei wrote: | Many exploits involve running arbitrary code hidden in | encoded image and video files, notably Pegasus among | others. This should be treated as cryptography. | lamroger wrote: | Reminder that vets have it extra hard. | | And a reminder to myself to do good. | shadowgovt wrote: | I'm feeling the anecdote about the wasp nest. | | Landlord in our office complex installed a touchscreen interface | on the outside of the building to dial the various front desks, | all of which could buzz a person in. They did this because they | had no front-desk receptionist who could see the door. | | The thing lasted six months and then started to malfunction | badly. The culprit? The interface is running on essentially a big | black Android tablet and they installed it on the side of the | building that faces East. Mid-spring rolled around and it caught | enough sun every day to overheat and fry the touch electronics | and part of the screen hardware. | | As a software engineer, writing the kind of software I do, I | _never_ have to worry about thermal load. | philk10 wrote: | Which reminds me of he story of sun stopping trains - Services | at Lewisham, south-east London, were disrupted because of the | angle of the 'low winter' sun, train operator Southeastern | said. | | The rail firm posted on Twitter: 'We had severe congestion | through Lewisham due to dispatching issues as a result of | strong sunlight.' | | It added: 'The low winter sun has been hitting the dispatch | monitor which prevents the driver from being able to see.' | darkwater wrote: | A very nice post, well written and with a positive outlook on our | position. | | And while there are many developers that write software that | directly impact in one way or another the lives of other human | beings, generally speaking we need to recognize we are in a | fairly privileged position, as the author states. | castis wrote: | Thank you for this. Its lovely to be reminded that a lot of us | share some the same ups and downs whatever we're doing. | hasbot wrote: | As a software engineer I always kinda enjoyed debugging. It | allowed me to use a different skill and mind set than creating | designs and implementing them. | | Not to say I didn't get stressed out debugging. I had one demo | while developing software for AT&T's 5ESS telephone switch. We | had only one phone line in the test lab configured for our | feature. Attempt after attempt the software just wouldn't work. | Knowing the software worked, I checked everything I could all the | while stressing out. Finally I asked the lab tech to check the | line. Somehow our only configured line was disconnected. The | problem was a stupid hardware issue. | fatnoah wrote: | > As a software engineer I always kinda enjoyed debugging. It | allowed me to use a different skill and mind set than creating | designs and implementing them. | | Same here. I always enjoyed the challenge of it, especially in | complicated systems. | iainmerrick wrote: | I always feel that debugging is much more of a science than | normal software development. | | You need to spot unusual behavior, figure out ways to isolate | and reproduce it, come up with hypotheses as to what might be | happening, design tests for those hypotheses, run the tests, | find the solution, test the solution -- exactly like the | interplay of experimental and theoretical science. | kill_nate_kill wrote: | ... Detective work. | | (*_*) | | ( *_*)>[?]#-# | | ([?]#_#) | travisgriggs wrote: | Loved this story. A bit skeptical that that kind empathetic | manager really exists in the field, but maybe. | | Most telling that no sales/marketting/product managers showed up | to console the guy. Satire just couldn't plausibly stretch that | far. But maybe I'm too jaded. Would love to see the reply that | posited a section to this story where the empathetic individual | from one of those domains gave solace to the main character. | thedanbob wrote: | > I sent a message to my friend, "Cracked it at last. It was the | letter 'E'." | | Funny how the simplest, tiniest bugs are often the hardest to | find. Just this morning I burned an hour or two hunting down an | off-by-one error. Turns out it was an "index + 1" that I had | forgotten to change when I refactored (facepalm). | deredede wrote: | As the saying goes, there are two hard problems in computer | science: cache invalidation, naming things, and off-by-one | errors. | ohthatsnotright wrote: | You forgot Dates, Times and Timezones | wildzzz wrote: | Timezones: if you operate my code across timezones, you're | wrong. Date and time: %Y%m%d_%H%M%S. Don't you dare ask for | it to be shown any other way. | Robin_Message wrote: | Three ha you missed out rd problems;concurrency. | yafbum wrote: | A physicist friend used to quote Rutherford, all science is | either physics or stamp collecting. | | By which my friend meant, physics has a way of being checked by | physical reality in a way that math or computer science don't. | | His area of work was extreme magnetic fields. Experimenting meant | building giant copper coils, running enough current in them to | melt them in place, and then very quickly detonating explosive | around the coil so that, for a fraction of a second, the magnetic | field at the center of the coil became the most intense ever | built by mankind, before the whole setup was destroyed by the | splattering of liquid copper thousands of degrees hot. Errors and | miscalculations in that work environment meant that people could | die unpleasant deaths very quickly. | | So when he looked at math PhD students who at most got chalk dust | onto their sweater, calling themselves scientists, he disagreed. | computerfriend wrote: | Leave it to a physicist to misinterpret that quotation. | kwhitefoot wrote: | Perhaps you could enlighten us oh wise one. | civilitty wrote: | _> His area of work was extreme magnetic fields. Experimenting | meant building giant copper coils, running enough current in | them to melt them in place, and then very quickly detonating | explosive around the coil so that, for a fraction of a second, | the magnetic field at the center of the coil became the most | intense ever built by mankind, before the whole setup was | destroyed by the splattering of liquid copper thousands of | degrees hot._ | | Explosively pumped flux compression generators [1] are fun! | | That's how real EMPs are made, in case anyone is interested in | a career in super villainy but doesn't know where to start. | | [1] | https://en.m.wikipedia.org/wiki/Explosively_pumped_flux_comp... | skrebbel wrote: | I used to wonder why Dijkstra was so arrogant, and then I | learned that he graduated in theoretical physics. | kens wrote: | That's a rather unusual interpretation of the quote. According | to several books, the meaning of that quote is that science is | either mathematical and quantitative, or descriptive. In other | words, you're either attempting to understand the dynamics of | the subject or merely collecting interesting facts and naming | items of interest. | firefoxd wrote: | I giggled at the end. Just yesterday, we solved an issue that | plagued the company for 3 years. For us it was the letter 'A'. | | Someone had been doing manual fixes inserting and removing data | for the past 3 years. It became part of his job. He added a | recurring event in his calendar just to do that regular clean up. | Millions of customers depended on this one individual making sure | they had the correct data plan on their phone line. | | You can imagine the chaos when he forgets or goes on PTO. | | Turns out: if $line->status == STATUS_ACTIVE | | one was 'Active' the other was 'active'. No dogs were harmed, but | incalculable money was lost over the years. | A4ET8a8uTh0 wrote: | If this was a law case, the joke would have been: | | 'What have you done? You solved the case that put our entire | family through law school!' | | That poor soul is no longer indispensable. I am only half | joking. Software is about making things more efficient, but I | like to look at the human motivations. | tialaramex wrote: | So somehow in some parts of the code STATUS_ACTIVE is defined | wrong? | | I guess there is always a risk that some "helpful" contributor | will fix the typo in your definition of HttpHeader::REFERRER as | "referer" to make it "referrer" instead, thus completely | breaking all the software because nope, that typo is enshrined | in the HTTP standard, it's Phillip Hallam-Baker's fault while | he was at CERN. | Crespyl wrote: | > So somehow in some parts of the code STATUS_ACTIVE is | defined wrong? | | I would guess that some other part of the app doesn't even | use the constant at all, and just hardcodes "Active" as a | string on its own. Maybe taking the value of a dropdown from | the UI and never mapping that back to the actual constant. | lostlogin wrote: | A tricky one that I've seen cause harm is white space or | otherwise invisible characters (eg line breaks). | | Super frustratingly, Macs populating HL7 fields caused intense | pain. It turns out that the character ' when typed on a Mac | keyboard is not compatible with all versions of HL7, or perhaps | wasn't compatible with what the HL7 was passed off to. It's a | distant memory now but it was words like o'clock versus | o'clock, or something like that which broke radiology report | distribution. | | It went on for years before being caught. | | Edit: HN is displaying the ' differently to how it looks when I | type it, but it's still the same character. The fact that we | couldn't see the difference when debugging was half the | problem, so this is quite funny. | matsemann wrote: | Encoding is hard. Recently had a problem where some | proxy/load balancer (I think) in Go would crash, as it | couldn't handle aeoa in some headers which was returned from | some service doing ip lookups before passing on the request. | Which of course hit our workers in the city of Tonsberg. | | Another example I remember from earlier days is the BOM in | xml files. When it was wrong things could crash in all kind | of weird ways, and impossible to see. | swatcoder wrote: | > As software developers, it's easy to overlook the privileges we | enjoy. We have the unique ability to delve deep into intricate | processes, monitor real-time activities, log what's happening, | and even pause time with a debugger. This remarkable capability | is not only cheap but fast, bordering on thoughtless. | | > While many other professions struggle to understand and resolve | their issues, we have the advantage of being able to experiment | multiple times a day with just a few clicks. | | So much strained positivity, as if the author was tasked to find | something to be thankful for. Look, software engineering is a | great job if you enjoy the work. But even in this parable, the | problem is the author's week of distress and flailing. It has | nothing to do with the work and everything to do with the author. | | All the others he turns towards, no matter their discipline, | their tools for investigation, or the constraints they faced in a | dilemma, relate stories where they have a mature understanding of | how their industry works and how they navigate its system. They | encounter problems in the course of their work and they resolve | them in the course of their work. Maybe it takes a little while | to proceed with diagnosis. Maybe it takes a long while to | integrate improvements into a later product. Maybe they need to | forgo some procedure that they prefer to use. | | By the authors account, the embedded engineer, the hardware | engineer, the CEO and veterinarian all face greater challenges | when solving problems in their work, yet they all speak of their | road through those challenges with a confidence that the author | lacks. They try to soothe the author and empathize, but none of | their stories hint at a week of panicked flailing. | | So if they handle their work so much more confidently, is it true | that their dilemmas are worse and that the author is lucky to be | a software engineer? | | If the author listened to their own invented characters, the | realization to come to is not that the author is lucky to work in | a field with purported "privileges" and that everyone else has it | worse (gross!), but that _everyone_ faces dilemmas in their work | and that the real skill is in staying cool and confidently | relying on the processes of their discipline. And this has | everything to do with the person doing the work and nothing to do | with the discipline. The realization is that challenges arise in | all professions and that you can proceed through them without | distress and flailing if you allow yourself patience and | confidence. | | It's funny because they wrote this as a parable, but they missed | the real lesson in the very piece they wrote. Four people | reassure them that "We've been there! We all go through this!" | and their takeaway is "I need to remember that I'm lucky and that | everybody else has it even worse." | munchler wrote: | The dog's owner paid for surgery, but wouldn't pay for an x-ray? | pie420 wrote: | Don't let facts get in the way of a good blog post | harrymit907 wrote: | Cost to benefits probably. Vet X-rays are surprisingly | expensive and then surgery had to be done anyway. | gcheong wrote: | True but as the vet in the article states she couldn't be | sure that the extent of the problem was just the corn cob | without an x-ray so to me it would seem more logical to take | the x-ray once you've decided on surgery. | krallja wrote: | They're like $100... aren't they? | LastTrain wrote: | Something like that, should we get out out pitchforks now? | gcheong wrote: | Our cat had follow-up x-rays after radiation treatment for | a thymoma. Cost for the 3-view X-rays was $605.00, and the | consult with the radiologist was $189.00. Bay Area, but | still... | tialaramex wrote: | Even in human medicine some of the things on the "Do not do" | guidance are diagnostic steps which are pointless because you | will always do the same thing next regardless. | | A bunch of them are for infant minor injury where it's like | don't do an X-ray. If you can see a break on the image you'd | do A, but if you can't you'd figure the break might be too | small to show up and do A anyway. Kids don't need more | radiation, just do A immediately without requesting an X-ray. | | I have wondered if my cancer diagnosis is at the edge of this | case. There's a step where they do a needle biopsy. But, as | far as I can tell that biopsy always either says "Cancer" or | "Don't know" and I'm not sure what else they'd do for "Not | sure" beyond the next step in the cancer diagnosis... | ninju wrote: | Sorry to hear that...hope everything works out okay | tialaramex wrote: | Yeah, it went fine. I had Hodgkins, like 20+ years ago, | it's very curable and (I didn't know at the time) occurs | relatively often in young men. They fixed it. It's fun | because I'm a walking example of why universal healthcare | makes sense - even economic sense. I was a broke student, | if healthcare cost money there's no way I'd have even | gone to a doctor to ask about my weird symptoms - they | weren't even really annoying, just it seemed like it's | something doctors should check. If it cost money I'd have | waited until I was in serious pain, at which point it's | more likely they can't fix it or that if they can fix it | the fix is really drastic. | | I didn't stay a broke student. I got a job, bought a | home, I became a productive (tax revenue generating) | citizen, instead of a corpse as would happen with no | healthcare. | SoftTalker wrote: | There's also the cases where you don't do the test because | you do _not_ want to do the next step. E.g. the test | results would indicate a need for a very invasive surgery | or aggressive medical treatment, but you are 80 years old | and you don 't want to spend your remaining time recovering | from surgery or sick from side-effects. | ShMcK wrote: | My friend thought this was weird as well, but apparently | common. People think vet's are trying to rip them off when they | ask for a $70 x-ray, but they're okay with paying for a blind | surgery. | ryandrake wrote: | I always like to see upstream corrective action after something | like this. If there was adequate logging / error reporting, this | wouldn't have taken a week to fix. Whatever library he sent the | invalid "image/jpg" MIME type to should have thrown an exception, | crashed, or at the very least, logged loudly. I wonder if OP | filed a bug against it. | hathawsh wrote: | The relevant paragraph in the article bothers me a bit: | | "I re-uploaded a version with improved error handling, but | image uploads were failing without any feedback. You see, | normally code screams its errors at you in red text - silence | is the goal. Here silence was the problem." | | Silence is not quite the goal. Too many developers think | silence is the goal, but the goal is actually accuracy. If | there's no error, yes, it should be silent. If there's an error | that affects the user, there should be a big red alert box. I | believe developers should come to love error messages. Well | written error messages reveal causes quickly and save everyone | a lot of time. | | I hope this developer has learned to show error messages more | often. That would be a great outcome. | GrinningFool wrote: | I would say it should be a big red alert box with a simple | error code that the end user can reference when trying to | find help. | | The applications (CLIs, native, web, etc) I've seen that | present me with non-actionable errors is a perpetual source | of irritation. | | "Failed to open file" | | "File could not be uploaded" | | etc | | Not only are these useless to the user who can't do a thing | about them except try the same thing again, they're useless | to the developer or support engineer who might be trying to | help them. | gwbas1c wrote: | Yeah, at the end of the article I even wondered what kind of | environment Shawn (author) works in where it would take so long | to diagnose? | | Was Shawn able to access _anything_ on the server that would | confirm /deny that the image upload was coming through? Why did | the image upload work in the test environment but not in the | released version of the app? What was different about the test | environment? | | In theory, Shawn should have had enough access to the server | environment (either by running the servers himself or asking | someone to help him diagnose why an upload failed silently) | that he should have had a reasonably quick answer to "why is | this upload succeeding but not showing up?" | | IMO, those lessons (why the upload worked in test but not in | production) are significantly more important than "the image | mime type was set to 'jpg' but should have been 'jpeg'" The bug | is much more inconsequential to why the environment made it so | hard to find the bug. | | In my case, I had a situation where a desktop application was | severely malfunctioning, but errors were not being logged. It | took me multiple days to realize that the application was | running out of file handles, and that log4net wouldn't log if | it couldn't get a file handle. Even though the fix (reverting a | very small bugfix) was simple; the _real_ fix was to customize | log4net to always keep the log file open. This way, if the | application ran out of file handles, the error would be logged. | kr0bat wrote: | Yup, that one paragraph left me scratching my head. In my | mind the (very thinly described) image upload functionality | should have failed regardless of configuration. | | Maybe by "the images simply wouldn't upload." the author | meant "did not display", and the file was being uploaded to | the data store, was visible when viewed in the data store | directly, but would not be displayed in app when requested. | | I got the feeling that this is one of those 500-mile email[1] | stories, where technical details are omitted for easier | storytelling | | [1] https://news.ycombinator.com/item?id=9338708 | city41 wrote: | Several times throughout my career I've been hit with something | erroring and it just being silent and completely stumping us. No | error output, nothing. In a lot of these situations, we were able | to track it down to some low level third party library doing | `catch (e) {}`. The first one happened early in my career, and it | was a good lesson. I don't take any error for granted, at the | bare minimum I log it. You just never know, your software could | still be used 5 years from now and in a totally different | environment than you ever imagined. | csours wrote: | Oh this function is totally obvious to everyone on the team, no | need to comment it. | | 30 years later: | | /* X systems I modul body I 14.09.1990 */ | | void xxvcda(int *addr, int sizeof) | maxwelljoslyn wrote: | Ohhhhh yeah. I'm working on some code right now where the | previous drive-by author trapped the underlying library's | exceptions, then raised completely useless ones instead. He | also didn't know how to use the language mechanism where you | raise one exception "from" the previous one, to preserve | context in the stack trace. | | Fun stuff. At least this isn't for my job, which has its own | fun. | zoogeny wrote: | This reminds me of a colleague I had that would often say "we | aren't making air-traffic control systems here". The implication | being that no lives were on the line if we made a mistake. This | was when I was making games but it also applies to just about | every CRUD app I've written. | | Tangentially, one thing I often ask other senior technical | leaders (especially Director, VP or CTO) is: what is the most | costly mistake you have made? If you are a junior engineer, make | sure you do it sometime. Many/most high-level leaders in tech can | tell stories in the $100k to $1m range. I've seen people lose | millions of dollars on a project and get promoted immediately | after. It is important to understand why that can happen and why | it can even be a good thing. | knaidofngio wrote: | >The implication being that no lives were on the line if we | made a mistake. This was when I was making games but it also | applies to just about every CRUD app I've written. | | I don't agree. Maybe a failure won't result in people dying in | a ball of fire, but it can still cause harm. Even minor harm | can still add up at scale. | | Frustration from a buggy game could lead to real-world road | rage or shouting matches. People have killed themselves because | a computer sent them a bogus bill. Businesses have failed | because software lost valuable data. People have been murdered | because of silly social media apps. People have organized | pogroms on Twitter. People have been stalked and assaulted | using information leaked by Pokemon Go. | | Software has real power. If it didn't, there would be no point | in writing it. | zoogeny wrote: | It is fair to misunderstand what I was saying since all | things are ambiguous. Without context I could see this being | interpreted as permission for people to be lazy, incautious | or even negligent. | | But I urge you to consider the other side of the spectrum and | the pressures that people can put on themselves. For some, in | their search for perfection, they can ruin their own lives. | They can see every mistake they make as a personal failure. | It is useful to remember that in the vast majority of cases | people bounce back from these failures. | | You will hear over and over how many entrepreneurs fail in | their first businesses, often several times. Most often in | life you don't just get a second chance, you get many | chances. There a only a few places in life where a single | failure is truly catastrophic. | | So if you find yourself overwhelmed as a junior engineer, as | described in this story. If you feel your stomach in knots | and you are terrified your lead in going to eviscerate you in | front of a cheering audience - just know you have more | latitude to fail and try again than you might expect. | knaidofngio wrote: | I never thought you said that sloppiness is acceptable. I | edited my comment to try to make that clearer. | | But I think we should remember that _everything_ matters. | People 's lives are not mostly made of weddings and | funerals and gun fights and plane crashes. They're mostly | made of chores and small talk and dumb little mobile games. | Nothing is really trivial. You shouldn't beat yourself up | over mistakes, but that's not because they don't matter. | zoogeny wrote: | Sure, everything matters. But some things matter more | than others. If my internet fails for an afternoon that | seems to matter less than if my wedding is a catastrophe. | If my video game crashes that seems to matter less than a | plane crash. We call this "putting things into | perspective". | | I mentioned the word "humility" in another response and | that is the crux of what I'm trying to communicate. It is | often the case that we can exaggerate the importance of | our own work and it often helps to take a step back and | humble oneself. If you find yourself losing sleep over | your work, if you find your anxiety levels high, perhaps | you need some perspective. Perhaps you find it | distasteful for me to suggest that the engineering work | of air-traffic control software matters more than most | CRUD apps. That doesn't mean every other kind of software | has zero worth. It just provides an anchor for | perspective - a kind of software where literally | thousands of lives are at stake 24 hours per day. Most | developers are not under that kind of stress. | gwbas1c wrote: | > we aren't making air-traffic control systems here | | I also find that attitude troubling. | | I've worked on software that could loose peoples' cherished | data. Now I work on software that could cause flooding if it | misbehaves. | | Take a bit more pride in your work. | zoogeny wrote: | You can definitely take the comment in the worst way possible | if you desire. | | This was in the early 2000s in the games industry. I'm not | sure if you are familiar with that culture, but it was a time | when the engineers were working 12+ hour days for months at a | time. People were pouring their heart, souls and sanity into | shipping software, often working until they literally broke | down. I remember one engineer boasting that he had worked for | 2 months straight without taking a single day off. | | In that environment the stress was high and technical | discussions could often escalate into heated arguments. We | often had to remind ourselves that we were making _games_ and | many people working there were supposedly living their | childhood dreams. It was important to remember that. | | The idea that we didn't take pride in our work or didn't do | everything in our abilities to ship the highest quality | software is beyond incorrect. It was that excessive pride | that we needed to guard against by checking in to reality. It | wasn't a call to laziness, it was a call to humility. | stavros wrote: | I miss working on low-risk stuff like that. I now work in | healthcare, and a missing letter can mean that someone dies. | stavros wrote: | Wait, how was this not caught in testing? It's not like this | would differ between testing and production. | gardenhedge wrote: | And a roll back should have worked for this issue | ShMcK wrote: | I believe the mimetype check on Android must have only been | applied to production environments. It's an odd one. | failrate wrote: | I always dogfood my own software, but now I guess I also need to | corn cob dog my software, too. | nusl wrote: | Perhaps the jpg -> jpeg tidbit will save my ass someday. Thanks | teaearlgraycold wrote: | I now feel very validated for using TypeScript to statically | validate mime types. | jerf wrote: | I've developed a real distaste for the people whining about how | we aren't real engineers and we "just" need to solve that by | working more like real engineers and having all these massive up- | front design meetings and making tons more plans, etc. etc. | | It betrays a profound misunderstanding of the situation. The | other engineering disciplines don't work like that because | they're just soooo much more professional than us. They don't | work like that because it is a better way. They work like that | because for them, it is the _only_ way. You do not build a hotel, | and then realize the ceilings need to be six inches higher, and | tear the whole thing down and start over. | | If they _could_ work by running ceilingHeight += 6 and hitting | "Rebuild", see the hotel rebuilt and the automated unit tests | automatically double-check the usability of everything inside for | handicapped people etc., all for a grand total of about $2.82, | they absolutely would. | | Shed your inferiority complex. We are not squalling babies | drooling on our blocks while Real Men (with all the pejorative | connotations modern political sensibilities see in that term | fully intended) are building bridges and dams. We engineer with | better tools than they could dream of having, and it's completely | expected that that results in highly significant changes to our | processes. | | Do we sometimes fail to bring enough process to a problem? Yup. | But if you think that's a problem unique to programming, I | prescribe to you spending several hours with | https://www.imdb.com/title/tt4788946/ . | 4gotunameagain wrote: | > Shed your inferiority complex. We are not squalling babies | drooling on our blocks while Real Men (with all the pejorative | connotations modern political sensibilities see in that term | fully intended) are building bridges and dams. *We engineer | with better tools than they could dream of having, and it's | completely expected that that results in highly significant | changes to our processes.* | | I just want to add, that this comes off as originating from an | inferiority complex ;) | | Why is the term engineer so important to you ? Just do your | job, do it right, and ignore criticism. | jerf wrote: | I don't have the inferiority complex. I see it in others. | | They are, frankly, welcome to it, right up until they try to | ruin my job by adding negative-value processes because of | their complex. | dudeofea wrote: | you can certainly fix an engineering design in-situ, just look | at all the airplanes/jets designed pre-CAD software that were | made "just-so" with all the know how embedded in the brains of | those that made them/fixed them | https://www.youtube.com/watch?v=NPVT2lvMvOk | jerf wrote: | Of course you can... _sometimes_. | | And you can't always do it in software, either. I keep a | mental list of "things you can't really retrofit onto a | mature piece of software" that I keep kicking myself to turn | into a blog post sometime. I suppose a quick & trivial | example is that pretty much by definition switching languages | involves a rewrite. | | (Though that involves a bit of definitional footwork where I | declare using a compiler that goes from language A to B isn't | really "switching to B". Anyone who has tried that maneuver | in real life can attest it certainly isn't the same thing as | a real full rewrite in the target language, even if it does | sometimes have its utility.) | | Still, there's literally orders of magnitude difference in | how likely a given retrofit is to work and how easy it is for | us to add it, and proof of that is precisely in the enormous | signature this difference leaves on our processes. | gretch wrote: | I completely agree, it's 2 separate mediums with their own | optimized process/technique. | | It's like sculpting Clay vs Marble. If you make a boo-boo in | clay, it just takes you a second to readjust. If you are | working in Marble, and you took a piece out that you weren't | supposed to - well it's time to order a new marble block. | | Taking the techniques and processes of marble sculpting into | the world of clay would just make you a bad (or at least highly | inefficient) clay sculptor. | | And there's really no point to a dick measuring contest of | whether clay or marble sculpting is more worthwhile - they both | have their own place in our society. | zemvpferreira wrote: | I might be misreading but I think you're missing the forest for | the trees. It's not about the upfront planning, meetings or | whatnot, those are consequences of prior criteria. This is what | engineering is: | | 1-A practical problem is being solved in a scientific way. | | 2-The person solving the problem has been credentialed as an | engineer in both ethics and scientific rigour. | | 3-There is liability for the engineer signing off on the | solution. | | No whining or superiority intended, but if any of the three | criteria is missing, you're not practicing engineering. In my | experience most software development is missing all three. | That's not necessarily a bad thing, it's just that...most | software development isn't engineering. | NKosmatos wrote: | Besides the debuggers/analyzers/simulators/emulators... we have | at our disposal, a more powerful "ancient" mechanism exist: code | inspection/review/desk-check by a fellow programmer. | | I understand it's not applicable in all positions/companies and | heavily depends on the team and project size, but I've seen it | work too many times. | | Following this, the next best thing is testing (as others have | commented). | assimpleaspossi wrote: | We had a presentation of our new medical instrument to marketing | on Wednesday so there was a big push on Monday to get the display | up and running perfectly. There was a dot on the screen. I didn't | know why there was a dot but I was under pressure to finish | everything else. So I semi-ignored it. | | The the Engineering Manager walked by. "There's a dot," he said, | "Get rid of it before Wednesday." | | With all the other things going right with the project, why this | dot--a single pixel--was so important drove us all crazy. I ran | through the assembly code that handled all this over and over | again and couldn't see anything wrong. Never a reported error by | the assembler. Neither could the project manager. Stayed at work | all night to wrap it all up and, on Wednesday morning, everything | was done and working perfectly just as the Engineering Manager | walked into the room at 8am. | | "That dot is still there." | | Like the author of the article, I questioned whether I should be | in this line of work. I continued rewriting, assembling, and | testing every variation of the code I could. At 3:00PM on Friday, | I found the issue. | | MOVE B #0,D0 | | Do you see it? Imagine this is the 1990s, with a green screen | monitor and a PDP-11. | mandarax8 wrote: | No I don't see it. Are moving D0 into B? What's the #0 doing? | jaffee wrote: | wait... but why did it work in the development environment? | danwee wrote: | > By Thursday, I began to worry about my own job security. I had | been spinning on a feature I said I would ship 3 days ago. | | Off-topic: is it really like that in the US? (I'm assuming he's | from the US). Like, if you get stuck for a few days, you start to | worry about being fired or reprimanded? | tedunangst wrote: | As real as the rest of the story. | mgaunard wrote: | The article is nonsense from the first sentence. | | Software development has all of diagnoses, audits and | proofreading. | | It's an all-encompassing discipline. ___________________________________________________________________ (page generated 2023-11-03 23:00 UTC)