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 - "progress indicator"
-
Boss comes in and gives me some js code for syncing data (he hacked it together the other day, really messy with like 5 callback lamdas stacked into each other)
Boss: Make it faster and more reliable and add some progress indicator
So i look at the code and he literally pulls all the data as one json (20+ MiB). Server needs multiple minutes to generate the response (lots of querys), sometimes even causing timeouts....
So i do what everyone would do and clean up the code, split the request into multiple ones, only fetching the necessary data and send the code back to my boss.
He comes in and asks me what all this complexity is about. And why i need 5 functions to do what he did in one. (He didn't -.-). He says he only told me to "make it faster and show progress" not "to split everything up".
So I ask him how he wants to do this over HTTP with just one request...
His response: "I don't care make it work!".
Sometimes i hate my job -.-11 -
I could bitch about XSLT again, as that was certainly painful, but that’s less about learning a skill and more about understanding someone else’s mental diarrhea, so let me pick something else.
My most painful learning experience was probably pointers, but not pointers in the usual sense of `char *ptr` in C and how they’re totally confusing at first. I mean, it was that too, but in addition it was how I had absolutely none of the background needed to understand them, not having any learning material (nor guidance), nor even a typical compiler to tell me what i was doing wrong — and on top of all of that, only being able to run code on a device that would crash/halt/freak out whenever i made a mistake. It was an absolute nightmare.
Here’s the story:
Someone gave me the game RACE for my TI-83 calculator, but it turned out to be an unlocked version, which means I could edit it and see the code. I discovered this later on by accident while trying to play it during class, and when I looked at it, all I saw was incomprehensible garbage. I closed it, and the game no longer worked. Looking back I must have changed something, but then I thought it was just magic. It took me a long time to get curious enough to look at it again.
But in the meantime, I ended up played with these “programs” a little, and made some really simple ones, and later some somewhat complex ones. So the next time I opened RACE again I kind of understood what it was doing.
Moving on, I spent a year learning TI-Basic, and eventually reached the limit of what it could do. Along the way, I learned that all of the really amazing games/utilities that were incredibly fast, had greyscale graphics, lowercase text, no runtime indicator, etc. were written in “Assembly,” so naturally I wanted to use that, too.
I had no idea what it was, but it was the obvious next step for me, so I started teaching myself. It was z80 Assembly, and there was practically no documents, resources, nothing helpful online.
I found the specs, and a few terrible docs and other sources, but with only one year of programming experience, I didn’t really understand what they were telling me. This was before stackoverflow, etc., too, so what little help I found was mostly from forum posts, IRC (mostly got ignored or made fun of), and reading other people’s source when I could find it. And usually that was less than clear.
And here’s where we dive into the specifics. Starting with so little experience, and in TI-Basic of all things, meant I had zero understanding of pointers, memory and addresses, the stack, heap, data structures, interrupts, clocks, etc. I had mastered everything TI-Basic offered, which astoundingly included arrays and matrices (six of each), but it hid everything else except basic logic and flow control. (No, there weren’t even functions; it has labels and goto.) It has 27 numeric variables (A-Z and theta, can store either float or complex numbers), 8 Lists (numeric arrays), 6 matricies (2d numeric arrays), 10 strings, and a few other things like “equations” and literal bitmap pictures.
Soo… I went from knowing only that to learning pointers. And pointer math. And data structures. And pointers to pointers, and the stack, and function calls, and all that goodness. And remember, I was learning and writing all of this in plain Assembly, in notepad (or on paper at school), not in C or C++ with a teacher, a textbook, SO, and an intelligent compiler with its incredibly helpful type checking and warnings. Just raw trial and error. I learned what I could from whatever cryptic sources I could find (and understand) online, and applied it.
But actually using what I learned? If a pointer was wrong, it resulted in unexpected behavior, memory corruption, freezes, etc. I didn’t have a debugger, an emulator, etc. I had notepad, the barebones compiler, and my calculator.
Also, iterating meant changing my code, recompiling, factory resetting my calculator (removing the battery for 30+ sec) because bugs usually froze it or corrupted something, then transferring the new program over, and finally running it. It was soo slowwwww. But I made steady progress.
Painful learning experience? Check.
Pointer hell? Absolutely.4 -
How comes that people can write such fucking shitty code?
Because I mean, why the hell would I want a progress indicator while the form is loading?
Actually, let's just not disable the form while it's loading. Let the user get mad when it's data's overwritten.
And best of all. Let's use inconsistent naming and fucking metadata tables so that we don't have any structure and make queries slow.
Yes. I fucking love incompetent consultants. Fucking love them. Good thing he never got hired...2 -
I, after a very long time, had to use Windows.
My Ubuntu system died yesterday with faulty hard disk. Good for me that all my data is on cloud and I dont lose anything apart from the software installations. I have ordered a new hard disk and it will come in 3 days time.
In the meanwhile, I wanted to continue my work and I have my wife’s Windows 10 laptop. She doesnt use it often ever since she got a Tablet last year. It was a good chance for me to try out Windows after a while.
The laptop hadnt been used for a while now(probably Dec 2020) and when I started it, I got all sorts of notifications for updates - Windows update, Browser Updates, other Application updates. Coming from Ubuntu world which has a single notification for all software updates, this was just too many notifications. Plus, for some applications you dont get the update notification till you open them.
And by far the biggest frustrating part of this is the Windows update which takes like forever to first install update after all applications are closed, and then installing and configuring some more when the system boots up. And all you do while this happens is watch the screen with progress indicator moving 1% every minute. The system is not usable and even more so, I dont know what application or package is updated.
I started this activity today at 10AM and its 11:53am now, and I still havent been able to use the system to actually do the work. Its a half an hour work on a Google Doc and I have been waiting for it for about 2 hours now.
Its so amazing that Windows system is so screwed still. I dont know what will it take for Windows to have a consistent package and release management. Its so frustrating to update each application on its own.10 -
Front end developer is still getting a ticket even though the security flaw lies in the back-end.
Today, every click of the UI has an overlay of circular progress indicator indicates that there will be a synchronous actions in an asynchronous requests.
1 click = 1 loading state -
Google decided to deprecate the ProgressDialog class in Android O (26). Now I have to deal with all those deprecation messages in Android Studio!
From the docs: "ProgressDialog is a modal dialog, which prevents the user from interacting with the app. Instead of using this class, you should use a progress indicator like ProgressBar, which can be embedded in your app's UI. Alternatively, you can use a notification to inform the user of the task's progress."
They also bugged the Toolbar! Nice.3 -
Stop screen on a widget test
I have a screen which contains a button,
Pressing the button will
1. call a function showloader() to show progress indicator,
2. then awaits to perform some logic.
3. Then calls function hideLoader() to hide the progress indicator.
My question is how do I perform widget test on loader, the problem is when I do tester.pump() it gives timer error and when I do tester.pumpAndSettle() it will go ahead and call hideLoader() and the indicator gets lost and finder cannot find any widget and test fails?
Is there any way of stopping a screen on execution, so that finder can find a widget?1