Do all the things like ++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatarSign Up
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple APILearn More
New subscribed feed!
We just launched an activity feed of users you subscribe to + recommended users!
Tap here to read
I used to be a sysadmin and to some extent I still am. But I absolutely fucking hated the software I had to work with, despite server software having a focus on stability and rigid testing instead of new features *cough* bugs.
After ranting about the "do I really have to do everything myself?!" for long enough, I went ahead and did it. Problem is, the list of stuff to do is years upon years long. Off the top of my head, there's this Android application called DAVx5. It's a CalDAV / CardDAV client. Both of those are extensions to WebDAV which in turn is an extension of HTTP. Should be simple enough. Should be! I paid for that godforsaken piece of software, but don't you dare to delete a calendar entry. Don't you dare to update it in one place and expect it to push that change to another device. And despite "server errors" (the client is fucked, face it you piece of trash app!), just keep on trying, trying and trying some more. Error handling be damned! Notifications be damned! One week that piece of shit lasted for, on 2 Android phones. The Radicale server, that's still running. Both phones however are now out of sync and both of them are complaining about "400 I fucked up my request".
So yeah. I started writing my own implementations out of pure spite. Because I hated the industry so fucking much. And surprisingly, my software does tend to be lightweight and usually reasonably stable. I wonder why! Maybe it's because I care. Maybe people should care more often about their trade, rather than those filthy 6 figures. There's a reason why you're being paid that much. Writing a steaming pile of dogshit shouldn't be one of them.
The debugging process is often complicated.
There are often many factors involved in troubleshooting an error, but usually I have a hunch.
Sometimes I'll ignore my hunch and try other, smaller fixes first. This will irritate me for a while until I actually go after my hunch, run the program, and INSTANTLY everything works again.
Found myself relating that to real life today when I had a slight belly ache and eventually decided to take a massive shit and INSTANTLY felt better. The relief was so quick that I actually looked up and paused in surprise.1
It is very hard to make me mad.
But if you imply I "didn't do anything" or that my job is "easy" because all I do is just ”sit in front of a computer” 9 to 10 hours a day then you can go fuck yourself.3
A regular russian trolleybus (electric bus, a really old and popular way of public transportation). A ticket is ~70 cents, fixed fare, accepts Apple Pay / Google pay / Samsung pay6
Dependency injection is the most useless piece of crap ever invented. Convention over configuration my ass.
It simplifies nothing a good architecture and pattern can't solve. It's just the current trend but it's the hugest pain in the ass I've ever experienced. It just adds complexity to the project.
I think it's just a thing for masochists and lazy devs, but then why not sticking a huge dido up your ass it's the same fucking thing.3
C++ or Python for coding interviews?
I used to do a lot of developments in Python and JS/TS. But now I have been doing a lot of back-end stuff in Golang at work (1+ year) and C++ for some of my side projects. So when I started grinding leetcode, I used C++ all the way.
Today this question struck me and I keep thinking if I should continue with C++ or use Python, which will help me focus more on the question than the language.5
because i saw the potential ((and) power) of games since the first moment i ever moved my joystick in one, and i wanted to be a creator of such powerful magical universes.
How could one write a parser for BNF without causing and infinite loop in the following case:
Something ::= AnotherThing|Something
I find it weird that for C floats, -0<+0 is not true. Had to write a little bit of extra code to enforce this.
-0 could represent an incrementally small number below zero but greater than the next lower quantisation level.5
Architecture for Java REST API going to build/port from existing NodeJS one.
So Spring Boot + *
Lots of concurrent requests and large MongoDB calls. Current APIs use like 4GB memory for each instance because they don't use stream/pipe the response. Hold all data in memory and then return it all at once to user.
And well we expect more load in the future, so want to do this the right way.
So my understanding since this morning, is there's the blocking? MongoClient, (find* returns List) and now a Reactive MongoClient which is very async and like JS promises. Based on Pub, Sub model.
But the downside of JS promises was callback hell.
So actually 2 questions.
1. For each request, the db call done using the same MongoClient/db connection such that if there are 2 requests one would block the other?
2. Reactive Mongo would be non-blocking by design so would be better to support streamed responses?7