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 - "automagically"
-
A sidebar.
Literally just a sidebar.
And yes, this was in Hell.
Its code was spread across at least 40 files, and it used a bunch of freaking global variables to unfurl accordion sections, hide other sections/items, highlight the active item, etc. These were set (and unset!) in controller actions, so if you didn’t unset one, it remained open and highlighted until another action unset it.
Some of the global variable checks (and permissions checks) were done in the individual views, some outside of the `render` statements that include them. Some of them inherited variables from the parent, some from the controller, some from globals. Getting a view to work was trial and error. Oh, and some had their own inline css, some used css classes.
Subsections were separate views, so were some individual items, both sometimes rendered using shared templates, and all of the views and templates had the exact. same. filename. (They were located in different directories, and thus located automagically via implicit relative paths.) So, it was a virtually endless parade of`render partial => “sidebar”`. Which file does that point to? Good luck figuring it out!
Also, comments in several places said adding a new section required a database migration. I never did figure out why.
Anyway, I discovered this because I had an innocuous-sounding ticket to rearrange the sidebar, group some sections/items under different permissions, move some items to another menu, and nest some others differently.
It took me two bloody weeks, and this was when I was extremely productive every day.
Afterward, I was so disgusted by it that I took a day and removed every trace of the sidebar I could find, and rewrote it. I defined the sidebar in a hash, and wrote a simple recursive builder to generate the markup. It supported optional icons, n-level nesting, automatic highlighting of the current item and all parent nodes, compound and inherited permissions, wrapping of long names, hover and unfurl animations, etc. Took me a couple hundred lines of Ruby at the most, plus about the same of css.
Felt so good to remove that blight.5 -
! a Rant
Dear fellow devRanters!
I have an announcement to make. After we shared Programmer’s Music (www.programmersmusic.com) on devRant, we had so many awesome user started using our service and they still do. We love you all for that and thank you for you continuous support and use.
Now that our team has become more focused and productive, we took upon a new problem to tackle a few months back. The problem we chose is about increasing email productivity and ability to comprehend knowledge hidden in emails in a more effective way. We are excited to introduce ‘Altmail’! (https://www.altmail.in)
We believe that there’s a hidden treasure in your inbox waiting to be explored. All those newsletters and blog updates, all those deals, all those Medium digests and LinkedIn alerts, contain keys to becoming a better version of yourself. So we have made it Altmail’s mission to help you spend less time organising and more time acquiring knowledge. Altmail transforms your cluttered inbox into the source of knowledge, automagically.
We are currently in private beta and have limited invites left, to be specific 33 out of 100. Please check it out here - http://at.altmail.in/devRant!
We are looking forward to your honest feedback! :)
Thanks a ton!
Cheers!20 -
Okay, so this is my first rant and I have no idea how to make an avatar. Everyone else has nice image with person next to desk with it's laptop open - I want too ;D Or is it some kind of badge and it automagically updates by itself?21
-
fuck you, man. eat a bag of dicks, a bag of shit and a shit load of dead animals.. you dumb fucking cunt ... go and die ... who the fuck modifies state of 3rd party object and think it is ok to do so.. the fucking prick deserves to get castrated with rusty, old school, gardening scissors...
through some mysterious, obfuscated, buried deep in the asshole code, the fucker decided to set a user-specific value in the default query params of guzzle so that every fucking object using it passes the fucking thing around like a cheap hooker at a dorm party... causing the API calls to misbehave because of the fucking thing.
you send the parameters you want to send but mister sucking-dick-up-the-ass-smarty-pants decided you don't want to do that and because of that I almost broke a core library a week before a fucking major feature release because half the functionality got broken automagically, worst thing is I have no fucking clue where the bloody thing gets inserted ...
I swear if you do that I will find you and I will get a rusty razor to cut your balls into paste and rectally infuse them untill your shit start to come out of every oriphise of your fucking empty head8 -
Rant!
Been working on 'MVP' features of a new product for the past 14 months. Customer has no f**king clue on how to design for performance. An uncomfortable amount of faith was placed on the ORM (ORMs are not bad as long as you know what you are doing) and the magic that the current framework provides. (Again, magic is good so long as you understand what happens behind the smoke and mirrors - but f**k all that... coz hey, productivity, right?). Customer was so focussed on features that no one ever thought of giving any attention to subtler things like 'hey, my transaction is doing a gazillion joins across trizillion tables while making a million calls to the db - maybe I should put more f**king thought into my design.' We foresaw performance and concurrency issues and raised them way ahead of the release. How did the customer respond? By hiring a performance tester. Fair enough - but what did that translate into? Nothing. Nada. Zilch. Hiring a perf tester doesn't automagically fix issues. The perf tester did not have a stable environment, a stable build or anything that is required to do a test with meaningful results. As the release date approached, the customer launched a pilot and things started failing spectacularly with the system not able to support more than 15 concurrent users. WTF! (My 'I told you so' moment) Emails started flying in all directions and the hunt for the scapegoat was on (I'm a sucker for CYA so I was covered). People started pointing in all directions but no one bothered to take a step back and understand what was causing the issues. Numero uno reason for transaction failure was deadlocks. We were using a proprietary DB with kickass tooling. No one bothered to use the tooling to understand what was the resource in contention let alone how to fix the contention. Absolute panic - its like they just froze. Debugging shit and doing the same thing again and again just so that management knew they were upto something. Most of the indexes had a fragmentation of 99.8% - I shit you not. Anywho, we now have a 'war room' where the perf tester needs to script the entire project by tonight and come up with some numbers that will amount to nothing while we stay up and keep profiling the shit out of the application under load.
Lessons learnt - When you foresee a problem make a LOT of noise to get people to act upon it and not wait till it comes back and bites you in the ass. Better yet, try not to get into a team where people can't understand the implications of shitty design choices. War room my ass!3 -
I just made my own implementation of a scraper for NASA's Pic of the Day. It should have automagically changed my wallpaper at 4 AM to the new pic of the day.
Today's "pic of the day" is a video. It broke my shit.... So much for the excitement of seeing my automation work.4 -
Oh I have quite a few.
#1 a BASH script automating ~70% of all our team's work back in my sysadmin days. It was like a Swiss army knife. You could even do `ScriptName INC_number fix` to fix a handful of types of issues automagically! Or `ScriptName server_name healthcheck` to run HW and SW healthchecks. Or things like `ScriptName server_name hw fix` to run HW diags, discover faulty parts, schedule a maintenance timeframe, raise a change request to the appropriate DC and inform service owners by automatically chasing them for CHNG approvals. Not to mention you could `ScriptName -l "serv1 serv2 serv3 ..." doSomething` and similar shit. I am VERY proud of this util. Employee liked it as well and got me awarded. Bought a nice set of Swarowski earrings for my wife with that award :)
#2 a JAVA sort-of-lib - a ModelMapper - able to map two data structures with a single util method call. Defining datamodels like https://github.com/netikras/... (note the @ModelTransform anno) and mapping them to my DTOs like https://github.com/netikras/... .
#3 a @RestTemplate annptation processor / code generator. Basically this dummy class https://github.com/netikras/... will be a template for a REST endpoint. My anno processor will read that class at compile-time and build: a producer (a Controller with all the mappings, correct data types, etc.) and a consumer (a class with the same methods as the template, except when called these methods will actually make the required data transformations and make a REST call to the producer and return the API response object to the caller) as a .jar library. Sort of a custom swagger, just a lil different :)
I had #2 and #3 opensourced but accidentally pushed my nexus password to gitlab. Ever since my utils are a private repo :/3 -
"yeah, we want bundled products in our store, but we don't want to fill them in like such. Instead, you have to look at the product attributes, their values added in which sub sub sub category they're stored to automagically make such combinations. Also: of these combinations (that have no actual entity in the database) we want to be able to save images, descriptions, related products, etc."
I managed to fix it, but more than 50% of the time spent on this project was to explain to the customer why their combination wasn't working (they misconfigured the products), and writing a whole testing interface that showed the inner working of the algorithm, so they could debug their own products...
The worst part: we advised from day 1 not to take this road, but they had one "developer" who insisted on this approach because it would "prevent pollution in the database". in the end, we had to add 50-100 product attributes/values just to get the damn thing to work. -
Spam assassin kills most of the spam I get before I see it. It works pretty well. However, I started getting a fuck ton of spam from some asshole on a Turkey server. You cannot forward spam to the gov anymore so what to do (They use a honeypot. Apparently it doesn't catch everything.)? Well I got the abuse email account address for the server. Then I went into my servers spam filter for the email address I am having issues with. Then I redirect the email to this abuse email address. Then I delete it from the server. This makes it so my email client never sees the message and I automagically notify the abuse account. If the abuse account is owned by the spammer then he is just filling up his own server with shit.
Anybody else have fun or interesting ways with dealing with spam the regular filters don't catch?3 -
Productivity automagically increases as the deadline approaches. There is nothing one can do about it.
Stop trying, Seriously! -
Any email I receive mentioning SharePoint is unsubscribe to and blocked. I should really setup a rule to do this for me automagically.2
-
Requests to a soap server were failing randomly. In order to contact the API provider, I tried to provide an curl example with the same payload and the error response. Yet when sending the payload over curl, the request worked just fine. When my application was building the request, it failed.
What. The. Fuck.
I checked and double-checked the request body and headers. They were identical.
Of course, no error response was returned by the API provider and, of course, they could not tell me how what error I caused in my request.
So I created a basic dummy server, installed wireshark and compared the payload when sending a request from my application and from curl to my dummy server.
It turns out: curl, if called in a certain way, automagically strips out newlines. The soap client kept them.
So that that shitty soap server crashed due to newlines in the message body!
Stripping out the newlines was rather easy.
Shame on you, your house, and entire family for letting it crash due to them!1 -
Fuck you Spring and your stupid cryptic, useless, no relevant information error messages.
"Oh I am crashing violently because some of my internal component cannot automagically talk to another my internal component" says spring.
Well shit, why do I let you manage your own dependencies if I still need to hunt down what garbage transitive dependency you bring in 5 time.
YOU HAD ONE JOB!!!3 -
I've been writing on this TCP server the last few days to integrate our software with some services used by the rest of the company.
Noticed the company service keeps making a new connection for every single message, and closes this at client side (without signifying the server).
So I contact the team who wrote these services and ask them what's happening. Team lead of that team doubts that I know what I'm talking about and tells me TCP automagically signals the server on disconnect, and this probably is a .Net only problem.
5 seconds of googlefu: half open tcp connection.
Apparently, the application doesn't care about dropped connections and losing connection states even though every service should be checked for licensing when connecting to the server. With this set-up everyone can just send a message other than the registration and pass through any 'validation' due to the fact there can be no connection state.
F*CKING INEPT IDIOT(S) OF TEAM LEAD/DEVELOPER TEAM! -
Spring boot does very much automagically.... but to find every possible configuration is hard....
I found out that it has an automatic config for Scheme Server... but how the fuck to configure it 😑
And do I still need avro made domain objects 🤔 it's hard to fight through all these documentations and versions of spring. 😖 -
rant & question
What am I supposed to do to finally get log4j working?? It just doesn't want to log in my project. Or it simply hates me. However many tutorials and documentation I've followed, even copy pasting simplest examples with ConsoleAppendet, setting the xml config to classpath.
It starts with default fallback logging.
How do all the tutorials automagically work??1 -
tried to pick some smart dude's brain about my problem cuz I'm just screaming internally being unable to think about it myself and have no ability to write it out in pseudocode without confusing myself or on paper so I need someone to bounce around with this
proceed to have to teach him basics of how computers work...
... realize he's slow at it and that I know a lot
I will take this self-compliment. I might be on a journey of self-compliments now, since he actually wanted to learn to code for a while. not a bad potential reality tunnel actually. I guess this is ok
guess I'll just keep screaming internally about my problem until I birth the requisite neurons automagically. no pain no gain 😭
literally no clue how to think or plan stuff out without having to put the whole thing in my head. always been a problem for me. grrrrr