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 - "lets complain!"
-
I like how when you put a device in "Developer Mode", it doesn't complain anymore and lets you do (almost) whatever you want.
I wish there was a "Developer Mode" in society.
Neighbor1:"He's 25 and he has no proper job yet"
Neighbor2:"Oh, he's on developer mode".
Neighbor1:"Ah. Okay."
Random Street Guy1:"Look at her clothes. Kids these days don't have any values".
Random Street Guy2:"Oh, she's on developer mode".
Random Street Guy1:"Ah, Okay."6 -
Most satisfying bug I've fixed?
Fixed a n+1 issue with a web service retrieving price information. I initially wrote the service, but it was taken over by a couple of 'world class' monday-morning-quarterbacks.
The "Worst code I've ever seen" ... "I can't believe this crap compiles" types that never met anyone else's code that was any good.
After a few months (yes months) and heavy refactoring, the service still returned price information for a product. Pass the service a list of product numbers, service returns the price, availability, etc, that was it.
After a very proud and boisterous deployment, over the next couple of days the service seemed to get slower and slower. DBAs started to complain that the service was causing unusually high wait times, locks, and CPU spikes causing problems for other applications. The usual finger pointing began which ended up with "If PaperTrail had written the service 'correctly' the first time, we wouldn't be in this mess."
Only mattered that I initially wrote the service and no one seemed to care about the two geniuses that took months changing the code.
The dev manager was able to justify a complete re-write of the service using 'proper development methodologies' including budgeting devs, DBAs, server resources, etc..etc. with a projected year+ completion date.
My 'BS Meter' goes off, so I open up the code, maybe 5 minutes...tada...found it. The corresponding stored procedure accepts a list of product numbers and a price type (1=Retail, 2=Dealer, and so on). If you pass 0, the stored procedure returns all the prices.
Code basically looked like this..
public List<Prices> GetPrices(List<Product> products, int priceTypeId)
{
foreach (var item in products)
{
List<int> productIdsParameter = new List<int>();
productIdsParameter.Add(item.ProductID);
List<Price> prices = dataProvider.GetPrices(productIdsParameter, 0);
foreach (var price in prices)
{
if (price.PriceTypeID == priceTypeId)
{
prices = dataProvider.GetPrices(productIdsParameter, price.PriceTypeID);
return prices;
}
* Omitting the other 'WTF?' code to handle the zero price type
}
}
}
I removed the double stored procedure call, updated the method signature to only accept the list of product numbers (which it was before the 'major refactor'), deployed the service to dev (the issue was reproducible in our dev environment) and had the DBA monitor.
The two devs and the manager are grumbling and mocking the changes (they never looked, they assumed I wrote some threading monstrosity) then the DBA walks up..
DBA: "We're good. You hit the database pretty hard and the CPU never moved. Execution plans, locks, all good to go."
<dba starts to walk away>
DevMgr: "No fucking way! Putting that code in a thread wouldn't have fix it"
Me: "Um, I didn't use threads"
Dev1: "You had to. There was no way you made that code run faster without threads"
Dev2: "It runs fine in dev, but there is no way that level of threading will work in production with thousands of requests. I've got unit tests that prove our design is perfect."
Me: "I looked at what the code was doing and removed what it shouldn't be doing. That's it."
DBA: "If the database is happy with the changes, I'm happy. Good job. Get that service deployed tomorrow and lets move on"
Me: "You'll remove the recommendation for a complete re-write of the service?"
DevMgr: "Hell no! The re-write moves forward. This, whatever you did, changes nothing."
DBA: "Hell yes it does!! I've got too much on my plate already to play babysitter with you assholes. I'm done and no one on my team will waste any more time on this. Am I clear?"
Seeing the dev manager face turn red and the other two devs look completely dumbfounded was the most satisfying bug I've fixed.5 -
Remember my rant about having to write a newsletter which works with MS Outlook?
Remember that rant by @EclipseMain about teachers teaching how to build a website in MS word?
Well. The two just became united. I had finished the fking newsletter and was waiting for approval. They kept on introducing last minute changes, a commata here and there and whatnot. I literally was waiting for 2 weeks to send that shit out.
My boss gets the glorious idea that if I complain so much about Outlook and Microsoft, lets have the secretary design the newsletter from scratch, literally copying my design, in ms word... argument: one can send an html email out from word.
...
Then they ask me which one should be send out. I say I can apply the design suggestions to my newsletter but if we sent theirs, with all the weird fonts and being even less responsive then my suggestion, it would be even worse.
What the fuck.
Also: they let me waste a lot of time on this thing to tell me later oh we have money left lets hire a designer. Why not do that from the start? Ffs... <.<5 -
A friend has a small business and asked me if I could make him a small program. So why not, experience for me and I can help a friend out. (This started in ~mid 2016)
Started out as a WPF desktop application with many weird bugs and slow interface, into crashing the database on AWS (could not connect, could not get a backup). It was just hell and I kind of gave up on fixing it.
I always talked to him and said "yeah, I will do something better soon", but I was procrastinating and kept pushing it away from me. Then one day I said "f*ck it - lets go" and started coding on 2.0:
- WebApp with a complete new architecture (which I learned in the past few months)
- User authentication (JWT)
- ASP.NET Core Backend for web api
- Angular 4 Frontend w/ bootstrap
- Coded in like a week with 3-5 hours each day
Deployed around 6 months ago and he never had a complain. When I visited him I asked "how is your application doing?" - "great. it just works!".
My once most hated project turned into the most successful project in just a few months.2 -
My answer to their survey -->
What, if anything, do you most _dislike_ about Firebase In-App Messaging?
Come on, have you sit a normal dev, completely new to this push notification thing and ask him to make run a simple app like the flutter firebase_messaging plugin example? For sure you did not oh dear brain dead moron that found his college degree in a Linux magazine 'Ruby special edition'.
Every-f**kin thing about that Firebase is loose end. I read all Medium articles, your utterly soporific documentation that never ends, I am actually running the flutter plugin example firebase_messaging. Nothing works or is referenced correctly: nothing. You really go blind eyes in life... you guys; right? Oh, there is a flimsy workaround in the 100th post under the Github issue number 10 thousand... lets close the crash report. If I did not change 50 meaningless lines in gradle-what-not files to make your brick-of-puke to work, I did not changed a single one.
I dream of you, looking at all those nonsense config files, with cross side eyes and some small but constant sweat, sweat that stinks piss btw, leaving your eyes because you see the end, the absolute total fuckup coming. The day where all that thick stinky shit will become beyond salvation; blurred by infinite uncontrolled and skewed complexity; your creation, your pathetic brain exposed for us all.
For sure I am not the first one to complain... your whole thing, from the first to last quark that constitute it, is irrelevant; a never ending pile of non sense. Someone with all the world contained sabotage determination would not have done lower. Thank you for making me loose hours down deep your shit show. So appreciated.
The setup is: servers, your crap-as-a-service and some mobile devices. For Christ sake, sending 100 bytes as a little [ beep beep + 'hello kitty' ] is not fucking rocket science. Yet you fuckin push it to be a grinding task ... for eternity!!!
You know what, you should invent and require another, new, useless key-value called 'Registration API Key Plugin ID Service' that we have to generate and sync on two machines, everyday, using something obscure shit like a 'Gradle terminal'. Maybe also you could deprecate another key, rename another one to make things worst and I propose to choose a new hash function that we have to compile ourselves. A good candidate would be a C buggy source code from some random Github hacker... who has injected some platform dependent SIMD code (he works on PowerPC and have not test on x64); you know, the guy you admire because he is so much more lowlife that you and has all the Pokemon on his desk. Well that guy just finished a really really rapid hash function... over GPU in a server less fashion... we have an API for it. Every new user will gain 3ms for every new key. WOW, Imagine the gain over millions of users!!! Push that in the official pipe fucktard!.. What are you waiting for? Wait, no, change the whole service name and infrastructure. Move everything to CLSG (cloud lambda service ... by Google); that is it, brilliant!
And Oh, yeah, to secure the whole void, bury the doc for the new hash under 3000 words, lost between v2, v1 and some other deprecated doc that also have 3000 and are still first result on Google. Finally I think about it, let go the doc, fuck it... a tutorial, for 'weak ass' right.
One last thing, rewrite all your tech in the latest new in house language, split everything in 'femto services' => ( one assembly operation by OS process ) and finally cramp all those in containers... Agile, for sure it has to be Agile. Users will really appreciate the improvements of your mandatory service. -
OK, I think Ive figured out how I want to implement the core of my game.
Basic idea. Everything is made of sigils. What is a sigil? Lorewise, a representation of a concrete idea. Mechanically, it's a container for one or more ingame effects.
Again, anything you can think of, be it mundane or arcane, is a sigil. Every object attribute and method that causes a mutation of the game world state is composed of either a single or a sequence of sigils, known as a signa. You can do abstraction and have one thing encapsulate others, all that good stuff.
We go turnbased because tabletop rules. In your turn, you choose what to do with the sigils available to you. Common stuff like walk, talk, crouch, attack, et cetera are available to everyone.
You choose which effects to use, keeping in mind that order matters, and these effects either clash against or boost each other according to internal rules. Any relevant environmental modifiers around you or status effects apply here as well. Theyre also made of sigils, so theyre just implicitly components of the spell.
Finally, we get the result. An aura. It is simply the aggregate of all the sigils, containing the final transaction that will be applied to the game world, with dicerolls, if any are needed, already performed.
So here's the crucial bit. We record the aura for each turn, taken by either the player or the game itself, which includes the sequence of sigils used. Because each of these are words, or a series of words, it can be used narratively.
Let me give you an example. You are in a swamp, you use your turn to move around. This gives you an aura like so.
src: player, location: swamp, status: ok, walk.
We push that to a stack the game can see.
Now the game has to take its turn, and will look at the stack to get ideas. So lets say this swamp hindered your movement, gave you some trouble getting around. This is noteworthy enough as it affected something in the game world, and theres nothing else going on, so its made into a topic. The game will now pay attention to it and make it available for talking about.
topic: swamp-slow on player-party.
Everything is sigils, remember? Speaking is an effect, as is giving you something to talk about. Adding a topic results in an aura, push that to the stack.
Maybe then the game decides have the players companion make a comment on this topic. OK, just pair speak with other sigils to make an expression. The current topic is simply about a single negative effect, so one or two should be enough for a comment.
Factoring in the companions traits, also sigils, and the fact that for now this only a minor annoyance, we end up with an aura.
speak: topic -> complain about.
Do you see where this is going yet? The spellmaker gives us the means for text generation. The key here is instead of processing natural language like a bunch of dumbasses we just have an array of structures meant specifically for this purpose.
Anyway, the player now takes their turn. They can keep silent and continue moving, or say something as well. So let's say you pick the speak sigil too because why not, the current topic is also available to you, so you can reply. Depending on what the last message (aura) was, you get a range of options, and why not, let's factor in the player's chosen traits as well.
speak: shutdown -> complain about topic DOT change-topic -> mcguffin-quest.
We're on a mission to recover some plot stuff so shut up.
This results in further state changes, albeit behind the scenes. Our companion isn't happy, and we have a sequence of structures to prove it. Actions taken in relation to a topic can be associated with it if they're deemed significant, id est they caused a mutation of the game world's state.
speak: remind -> topic-name.
Thats right. Companion dude WILL remember that, you son of a bitch, and you bet your ass hes gonna bring it up if you keep acting like youre his boss or some shit. You dont even pay him!
You may say its such a small thing, but it all matters in a story. So we keep track of it, see what we can make this branch off into once a little more time has gone by.
What do you mean crazy, Im a fucking patrician of tenebrous arcana. You solve the problem by not solving the problem, obviously. Fuck natural language processing, all my homies use Litechnics to make narrative-driven programmable representations of the human condition.
Further rules include breaking gameplay down into scenes and acts as if it were theatre, because why not, and having baddies cooking shit up behind the scenes. Mechanism for that is the same, read the current stack and output structured wordsoup based on it.
We can even have a chorus narrating.
Or an audience reacting lmao.
OH GOD.
BUT I'M SO FRIGGIN SLOW OF A DEV.
WHAT IF I DON'T LIVE LONG ENOUGH TO IMPLEMENT THIS?
SHIT.
WORST SHOULD COME TO PASS,
PLEASE AVENGE MY DEATH.2