Join devRant
Do all the things like
++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatar
Sign Up
Pipeless API
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple API
Learn More
Search - "plumbing"
-
Three days ago I wrote a comment:
"It's weird how the internet shifted from protocols to platforms.
Devs still know the plumbing, but for most people IRC became Whatsapp, FTP became Dropbox, RTSP became Netflix, SIP became Zoom and RSS became Google Now... so people might eventually forget about SMTP and this whole "email" hype.
In a decade or two we'll have forgotten about URLs and HTTP and the "internet" as well. You just pay your monthly $10 sub to Google or Amazon or Apple to have your condensed streams of memes & bait funneled right into your eyeballs."
And now Chrome devs are considering removing URLs just like in Safari, just showing the domain you are on....
Enjoy your retard web, people.
What's next, new Macbook & Chromebook standardized designs to prevent people from being confused?43 -
For a week+ I've been listening to a senior dev ("Bob") continually make fun of another not-quite-a-senior dev ("Tom") over a performance bug in his code. "If he did it right the first time...", "Tom refuses to write tests...that's his problem", "I would have wrote the code correctly ..." all kinds of passive-aggressive put downs. Bob then brags how without him helping Tom, the application would have been a failure (really building himself up).
Bob is out of town and Tom asked me a question about logging performance data in his code. I look and see Bob has done nothing..nothing at all to help Tom. Tom wrote his own JSON and XML parser (data is coming from two different sources) and all kinds of IO stream plumbing code.
I use Visual Studio's feature create classes from JSON/XML, used the XML Serialzier and Newtonsoft.Json to handling the conversion plumbing.
With several hundred of lines gone (down to one line each for the XML/JSON-> object), I wrote unit tests around the business transaction, integration test for the service and database access. Maybe couple of hours worth of work.
I'm 100% sure Bob knew Tom was going in a bad direction (maybe even pushing him that direction), just to swoop in and "save the day" in front of Tom's manager at some future point in time.
This morning's standup ..
Boss: "You're helping Tom since Bob is on vacation? What are you helping with?"
Me: "I refactored the JSON and XML data access, wrote initial unit and integration tests. Tom will have to verify, but I believe any performance problem will now be isolated to the database integration. The problem Bob was talking about on Monday is gone. I thought spending time helping Tom was better than making fun of him."
<couple seconds of silence>
Boss:"Yea...want to let you know, I really, really appreciate that."
Bob, put people first, everyone wins.11 -
Biggest challenge I overcame as dev? One of many.
Avoiding a life sentence when the 'powers that be' targeted one of my libraries for the root cause of system performance issues and I didn't correct that accusation with a flame thrower.
What the accusation? What I named the library. Yep. The *name* was causing every single problem in the system.
Panorama (very, very expensive APM system at the time) identified my library in it's analysis, the calls to/from SQLServer was the bottleneck
We had one of Panorama's engineers on-site and he asked what (not the actual name) MyLibrary was and (I'll preface I did not know or involved in any of the so-called 'research') a crack team of developers+managers researched the system thoroughly and found MyLibrary was used in just about every project. I wrote the .Net 1.1 MyLibrary as a mini-ORM to simplify the execution of database code (stored procs, etc) and gracefully handle+log database exceptions (auto-logged details such as the target db, stored procedure name, parameter values, etc, everything you'd need to troubleshoot database errors). This was before Dapper and the other fancy tools used by kids these days.
By the time the news got to me, there was a team cobbled together who's only focus was to remove any/every trace of MyLibrary from the code base. Using Waterfall, they calculated it would take at least a year to remove+replace MyLibrary with the equivalent ADO.Net plumbing.
In a department wide meeting:
DeptMgr: "This day forward, no one is to use MyLibrary to access the database! It's slow, unprofessionally named, and the root cause of all the database issues."
Me: "What about MyLibrary is slow? It's excecuting standard the ADO.Net code. Only extra bit of code is the exception handling to capture the details when the exception is logged."
DeptMgr: "We've spent the last 6 weeks with the Panorama engineer and he's identified MyLibrary as the cause. Company has spent over $100,000 on this software and we have to make fact based decisions. Look at this slide ... "
<DeptMgr shows a histogram of the stacktrace, showing MyLibrary as the slowest>
Me: "You do realize that the execution time is the database call itself, not the code. In that example, the invoice call, it's the stored procedure that taking 5 seconds, not MyLibrary."
<at this point, DeptMgr is getting red-face mad>
AreaMgr: "Yes...yes...but if we stopped using MyLibrary, removing the unnecessary layers, will make the code run faster."
<typical headknodd-ers knod their heads in agreement>
Dev01: "The loading of MyLibrary takes CPU cycles away from code that supports our customers. Every CPU cycle counts."
<headknod-ding continues>
Me: "I'm really confused. Maybe I'm looking at the data wrong. On the slide where you highlighted all the bottlenecks, the histogram shows the latency is the database, I mean...it's right there, in red. Am I looking at it wrong?"
<this was meeting with 20+ other devs, mgrs, a VP, the Panorama engineer>
DeptMgr: "Yes you are! I know MyLibrary is your baby. You need to check your ego at the door and face the facts. Your MyLibrary is a failed experiment and needs to be exterminated from this system!"
Fast forward 9 months, maybe 50% of the projects updated, come across the documentation left from the Panorama. Even after the removal of MyLibrary, there was zero increases in performance. The engineer recommended DBAs start optimizing their indexes and other N+1 problems discovered. I decide to ask the developer who lead the re-write.
Me: "I see that removing MyLibrary did nothing to improve performance."
Dev: "Yes, DeptMgr was pissed. He was ready to throw the Panorama engineer out a window when he said the problems were in the database all along. Didn't you say that?"
Me: "Um, so is this re-write project dead?"
Dev: "No. Removing MyLibrary introduced all kinds of bugs. All the boilerplate ADO.Net code caused a lot of unhandled exceptions, then we had to go back and write exception handling code."
Me: "What a failure. What dipshit would think writing more code leads to less bugs?"
Dev: "I know, I know. We're so far behind schedule. We had to come up with something. I ended up writing a library to make replacing MyLibrary easier. I called it KnightRider. Like the TV show. Everyone is excited to speed up their code with KnightRider. Same method names, same exception handling. All we have to do is replace MyLibrary with KnightRider and we're done."
Me: "Won't the bottlenecks then point to KnightRider?"
Dev: "Meh, not my problem. Panorama meets primarily with the DBAs and the networking team now. I doubt we ever use Panorama to look at our C# code."
Needless to say, I was (still) pissed that they had used MyLibrary as dirty word and a scapegoat for months when they *knew* where the problems were. Pissed enough for a flamethrower? Maybe.6 -
We're digital plumbers.
90% of this job is figuring out what thing to connect to what thing and then figuring out how to connect them.
Writing the code that goes in-between both ends of the pipe is easy if not trivial 90% of the time.
Meaningful change in this industry is centered around endpoints: contracts, deployments, etc. Nobody needs yet another way to organize and import their leftpad().10 -
!Dev
So today I got a gig for plumbing. So I did it anyway. Here are the picture of what I did. Now they can flush their shit down to the sewer. (Where most of my former bosses are)6 -
When a client wants java, c, PHP, Ruby, Javascript, html, css, data mining, AI, bot development, Android development, iPhone development, Amazon services, masonry, Kung Fu, cooking, driving, flying, deployment, mechanic, electrician, plumbing as required skills.
-
I wish I knew some basic carpentry/plumbing stuff. Working with physical tools and creating/fixing something that you can actually touch and feel is oddly satisfying.11
-
So we need a plumber, but first, show me some plumbing that you had do just for fun
-if every job would be like a developer -
In reference to Berkmann18's complaints about his flat.
https://devrant.com/rants/4644209/...
1. found a business that does apartment listings in the style of social media.
2. focus on helping people find less-shit room mates. Like yelp, but for assholes.
3. make your money on helping millennials and gen-z manage and automate rental payments, because both those generations HATE having to look people in the eyes, having to ask for money, or anything involving negotiation. Automate the pain, monetize their avoidance habits.
4. Dashboard for splitting bills, handling rental and sub-let agreements, and divying up rental payments.
5. Get paid by geolocated advertisers for small business services, e.x. roof repair, plumbing, lawn mowing, pool cleaning, etc.
6. That positions you to do strategic partnerships with companies that provide platforms for small business providers, like angieslist.
Had this idea a while back but pursuing something else and just wanted to put it out there for people more capable than me. Lot of great developers out there that beat around for good ideas, and then there are a lot of people with good ideas who don't have the skills to implement.
Call it flattmates, or snagahome, or something like that.
On the offchance anyone decides to go for it, and you get funded, hire me to do grunt work, thats all the thanks I want.
Also I accept payment in blowjobs and beer.3 -
I just experienced a new level of wut at my job. Web Engineering has a Google group email. This morning someone at work sent us an email about canceling a work order (and he didn’t know how to cancel it)…for a plumbing issue 😑Wrong engineering department, my dude. And you can cancel your work order by going to the request system where you submitted it or the email receipt of you request, which was certainly not to this Google group email. You have the work order number, so you must have an email somewhere about your request. And how’d he get this email?? I’m seriously wondering if this is a weird phishing attempt.2
-
We have an internal nuget package that wraps up the IConfiguration+ConfigurationBuilder for various .net core console/service apps (TL;DR, because people got creative), and it has a dictionary property for the common sections we use. AppSettings (for backward compatibility), ConnectionStrings, and ServiceEndpoints. If the need arises, I can add methods to return any type of object (no one has requested yet, we try to keep configs dead simple)
ex. var myDatabaseConnectionString = ConfigurationManager.ConnectionStrings["MyDatabase"];
Code review for someone who updated a .net framework app to .net core and they wrote their own IConfiguration wrapper for accessing the appsettings.json file, so I pointed out that we already had a library for that.
In the reply, he said he couldn't use our library because it had an 'AppSettings' property and since his appsettings.json file didn't have that section, he didn't want to cause a runtime exception.
OK, WTF...I even sent him a link to the documentation (includes explaining the backward compatibility part)...why the frack would you think because a property exists and you don't use it, that would cause some kind of runtime exception?
We have dozens of .net framework apps migrated to .net core with zero code changes and no one ever brought this up as a concern (because, why would they?)
Deep breath...ahhh...I respond that not having an AppSettings section in the appsettings.json file won't cause an exception, if you don't have one, don't need it, you don't have to use it.
He went ahead merged+committed his code anyway with his own IConfiguration+ConfigurationBuilder plumbing.
Code addiction is real kids...it's real.2 -
If in future promoting yourself on IG to land a job as some soydevs are doing will become the norm I'll go back to school to learn indoor plumbing.
-
Hunter Kitchen & Bath, LLC
We are a boutique renovation firm that will custom design your kitchen, bath, library, outdoor kitchen or other home project. Come to our brand-new showroom in Bryn Mawr to select from cabinetry, countertops, tile, wood, hardware, & plumbing fixtures.
Address: 1042 W Lancaster Ave, Bryn Mawr, PA 19010
Phone: (484) 872-8801
Work Hours: Mon-Fri: 9:30AM-4:30PM-Sat:10AM-2PMrant kitchen remodeling bathroom remodeling kitchen desinger kitchen cabinet contractors bath remodeling -
Alessandro Demarinis Yonkers
Address: New York, USA
Alessandro Demarinis of Yonkers owns and operates a reputable plumbing company in New York. Alessandro Demarinis of Yonkers provides top-notch plumbing services tailored to meet individual residential and commercial business needs. Alessandro Demarinis of Yonkers employees a team of highly skilled and experienced plumbing professionals, dedicated to delivering exceptional results in a timely and professional manner.
#Plumbing #Alessandro Demarinis Yonkers