Abouta geek diggin' deep
SkillsJava dev, Linux/UNIX sysadmin, performance engineer
Joined devRant on 2/26/2018
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
Sorry, need to vent.
In my current project I'm using two main libraries [slack client and k8s client], both official. And they both suck!
Okay, okay, their code doesn't really suck [apart from k8s severely violating Liskov's principle!]. The sucky part is not really their fault. It's the commonly used 3rd-party library that's fucked up.
yeah yeah, here come all the booos. Let them all out.
1. In websockets it hard-caps frame size to 16mb w/o an ability to change it. So.. Forget about unchunked file transfers there... What's even worse - they close the websocket if the frame size exceeds that limit. Yep, instead of failing to send it kills the conn.
2. In websockets they are writing data completely async. Without any control handles.. No clue when the write starts, completes or fails. No callbacks, no promises, no nothing other feedback
3. In http requests they are splitting my request into multiple buffers. This fucks up the slack cluent, as I cannot post messages over 4050 chars in size . Thanks to the okhttp these long texts get split into multiple messages. Which effectively fucks up formatting [bold, italic, codeblocks, links,...], as the formatted blocks get torn apart. [didn't investigate this deeper: it's friday evening and it's kotlin, not java, so I saved myself from the trouble of parsing yet unknown syntax]
yes, okhttp is probably a good library for the most of it. Yes, people like it, but hell, these corner cases and weird design decisions drive me mad!
And it's not like I could swap it with anynother lib.. I don't depend on it -- other libs I need do!
Building a wheel is great.
Building a steering wheel is also great
Building a brakes pedal is amazing.
Making them work asynchronously - not that good of an idea is it...
Who the fuck thought separating data stream (copying bytes) from stream control (when does the stream start/end) is a good idea...?
- open a connection
- send data to the stream
- send() returns
- close the connection
Apparently, the send() does not copy the data and returns. Instead, it enqueues the data copying task end returns. When does the actual copying start? IDK. When does it end? IDK. Can I close the conn? NO!
This thing is UNUSABLE. And I'd riddle it with reflection-based workarounds if it weren't for the static methods.
Before I continue, I should mention that I have a quality: I observe, find repetitive patterns and find ways to automate them. It just happens naturally, hardly ever intentionally.
I have been in this role for quite a while now. Most of my colleagues are of nationality X (I guess we all know what X is in IT projects). Naturally, there are lots of repetitions all over the place. So I started the automation.
The Frontend of the automation is a slack bot. It's just like another member of our team. And my goal was to make it as human-like as I could.
I launched the bot a few months ago.
Today I start my shift and see other employees of nationality X persistently asking my bot to join the conference call. Apparently, they assumed that the bot is just another X fellow...
Took them a while to give up.
What does that tell us about X.....
P.S. I have coded human-like conversation capability to keep on chatting even when the bot doesn't understand what it's asked to do.27
* 10 app instances running
* 1 instance starts burning up 100% cpu
* we ask for a Thread Dump (stack traces)
* we get a TD taken after they manually restarted the instance
* they: "Please investigate. We need this fixed ASAP"
EVERY FUCKING TIME!!! Not once in recent years have they managed to take a TD correctly. What kind of a retarded monkey do you have to be for this to not sink in for YEARS!
Who tf put those idiot monkeys there in the first place...8
Chrome blocked TheGreatSuspender yesterday. All the Chrome installations got that extension removed.
300-400 tabs (in total): *poof*17
We are gating release of each sprint.
Today before 10:00AM I identified a major performance problem and asked devs to fix it (single if() will be enough as a hotfix). We're blocked until we have the fix deployed.
It's 5pm and we're still waiting for that 1 `if` clause to be added and deployed :)
A long day it was. Full of hopes and expectations, waiting for things to happen
When you convince your client to purchase a commercial thread-dump analysis tool, and that pies of soft gives you flamegraphs like this one [excerpt].
And then your own TD analysis tool works significantly better than that.
[P.S. I wonder how many of you will spot what's wrong here :) ]5
That nice feeling, when your laptop battery has 10% of charge left and you *know* you still have a good half an hour to do whatever you're doing before you have to worry about it.
You're more likely to finish your task than run out of juice.
This brings all kinds of satisfactory feelings 😌5
Watching a piece (a Belgian TV series) about hackers
- Police IT dpt takes a burned down computer (literally burned down -- black from the smoke), plug it into the mains and remove a graphics card. To collect evidence from.
- A policeman from IT dpt is browsing some company's website (while at the police station), looking at their clients. Address bar says: 127.0.0.1.
- The police hacker is browsing some forum. She got the post author's IP and MAC addresses from that forum post metainfo.
<img src="awkward.jpeg" alt="Awkward...">
<img src="confused_jackie.jpeg" alt="Awkward...">20
- Debugging some application locally (with debugger)
- 20-30 manual step-ins, tracking those values VERY closely
- debugger becomes a little sluggish
- move mouse to select a line to jump to
- cursor is lagging: all jumpy and everything
- everything freezes.
sooo...either reboot the laptop and lose all the work, or wait for OOMK to kick in, which could be hours, depending on the level of memory starvation.13
What are your resolutions for 2021? What mistakes do you promise to not make any more and what mistakes are you yet to make? What wrongs are you to right next year?7
"I'd say it was a trainwreck and a shitshow, but that would be unfair to trains and shit"
-- Death to 2020
A heads-up to whoever this is of interest to, Yourkit Java Profiler Personal licences are again available until mid-Jan. $100 per licence.
Some folks I cannot remember keep popping up with their 'i am back' posts and make me wonder: "should I know this lad? Was he here before me? Was he posting so little quality content that I didn't even notice him? Will I offend that person by saying idk who he is? Should I really care...?7
I'm torn apart by the upcoming new year. I can't wait forbthis horrible yearbto end, hoping the next will be better. But I'm afraid this year might be just an intro into what's coming.
Trying to stay positive. Let's hope for the best, but prepare for the worst.5
I think we all know who the Atlas really is.
I've had this feeling ever since I've started my IT career.11
unlimited time is not the only problem. During that time I'd get hungry, cold and tired -- I need to afford to buy food, have a home with roof and warmth. So with unlimited time, I'll also need unlimited funds.
And if I had unlimited funds I'd spend most of my time AFK: buying a house, making it pretty, setting up my own lab and a solar+wind powerplant, recruiting some folks to finish my project for me. Then travel all around the world, while my code monkeys are busy making me famous for introducing new tech to the world - so new, that it'll change the way we live, that it'll change our communication, interaction and other habits. And then I'll be ready for the EternalLife underground project, where another set of teams of bio-monkeys will be busy making my consciousness alive after my body wears out.
If only I had all those funds...
Care to chip in?
Has pretty much everything you may need, except for a TCP/UDP server functionality.
I mean, if it has a built-in TCP client -- why not create simplistic TCP server?
I was hoping to work on my project this weekend. Turns out, the kindergarten gave all the parents a task - to make a Christmas-y house with their child.
Well, I didn't work on my project, no doubt about that. But I found some other place to overengineer the shit out of it. And, frankly, I LOVED it.
2 days wasted. Not even sorry.
EDIT: all the materials are from the trash bin. That makes it even more fun!
EDIT2: Paint job is my wife's :) I'm too sloppy for it.13
Be a fellow who's distracted af. You just had a presentation in another city. You're driving home and a light lits up saying you need gas. You stop at the petrol station, pour in some gas, grab a cop of joe while you're at it, pay and leave. You're 15minutes away from the gas stop already and an unknown number is calling you. You pick it up. A male voice says
Voice: "hello, this is police. Did you just leave a gas stop 15 minutes ago?"
You: *wtf, what the fuck did I do now!* "yes, I sure did."
Voice: "you forgot to pay for the fuel"
you: *oh shit, he's right! I remember now - I only paid for the coffee! Shit! I'm in trouble now. *
"oh.. Right, you're right, I forgot... I'll turn around and come back to pay
Voice: "wait, don't rush, I may be able to help you. I'll call you back, keep your phone close" *hangs up*
5 minutes later phone rings again.
Voice: "can you pull over, please? Here's a phone number of that gas stop. Give them a call, I'm sure you'll sort it our. Have a nice day!" *hangs up*
you call that number. A woman picks up.
You: "hello, I forgot to pay you for the gas, gimme a few minutes - I'll turn around and get back to you"
Operator: "do not worry, I think I can help you! You can pay for it at your home town if you like, but I'm afraid they might not be working today. But they will tomorrow! Would that be OK for you?"
you: "umm, yeah, of course! It's my fault - anything is OK for me!"
operator: "ooorrr.. I could pay for you now and you would pay me back. Would that work? Here's my bank account, I'll pay for you when you send me those 50 something €"
a fantasy story? Made up story? Bed time stories? Dysney movie plot? Phishing? Canada?
No. This is Lithuania :) believe it or not, this is a true story, and there are more like this one.
Respect to the police!12
when you are at someone else's desktop/laptop and the screen is so dirty you can almost see what that person likes to eat.
And if that's a touch-screen, you are literally touching what that person ate weeks, months ago.6
Each time I come back to the npm-related parts of my project, the application won't start because of some dependencies nonsense. And I know for sure I left the project working perfectly last time.
Every time... every fucking time! Just leave the project unattended for a week and be sure you'll find it dead next time.
I mean I as a developer don't really have to do ANYTHING for my code to break.
it's a bit annoying when you, as a consumer, have to rev-engineer the temporal coupling among dozens of rest methods.
It's not fun. NOT fun at all2
If it's "knowing one's way around" - then yes, I guess I'm good in the context of some languages. How did I get there?
1. good night sleep (yes, #1; I've learnt from my mistakes during studies)
2. accepting/making up challenging tasks
3. toying around with the tools and abusing them heavily (like creating video games in bash or doing some metaprogramming)
4. when you find it hard to find any material about the tool/language that would be new to you - consider yourself good at it.
Building my own router was a great idea. It solved almost all of my problems.
Just recently have I started to build a GL CI pipeline for my project. >100 jobs for each commit - quite a bundle. Naturally, I have used up all my free runners' time after a few commits, so I had to build myself a runner. "My old i7 should do well" - I thought to myself and deployed the GL runner on my local k8s cluster.
And my router is my k8s master.
And this is the ping to my router (via wifi) every time after I push to GL :)
P.S. at least I have Noctua all over that PC - I can't hear a sound out of it while all the CPUs are at 100%14
Every time I read someone reply to a post with "lol" I stop for a moment and imagine myself actually laughing out loud to that post. I've got to say, only under ~1% of such posts were actually worth lol'ing. Other times laughing out loud to whatever is there would be retarded at best.
So either I'm a bum with only notions of a sense of humour OR there are far too many retards laughing out loud to basically anything.
Or perhaps there are too many idiots who use 'lol' without knowing what it means.
Or those people so desperately want others' attention that they lie to others pretending to like what they say/do/write by saying "what you did there made me feel so good that I burst in loud laughter".
This is stupid.
If you don't laugh OUT LOUD - then don't say that you do.
If you are not in immediate danger threatening to your life - then don't say you are LITERALLY DYING.
FFS, is it THAT hard?27
Next time you're using some FOSS soft, or bitching about it being buggy or the maintainer not responding to your tickets the same day - remember, that the author of that soft could be enjoying some nap time, playing with hie/her child(ren), having a fun time with fam/friends, playing PC games, going for a walk, cooking and choosing healthy food over fast snacks, doing anything he/she wanted.
But instead, the developer chose to spend that time building a tool, so you could have it, so you could do things faster/easier. So YOU could spend your free time the way you want.
So next time you're bitching about something not working, stop for a moment and first say THANK YOU to the author for that tool. If not for people like him/her, you would still be doing your chores with sticks and stones18