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 - "caches"
-
I have been a mobile developer working with Android for about 6 years now. In that time, I have endured countless annoyances in the Android development space. I will endure them no more.
My complaints are:
1. Ridiculous build times. In what universe is it acceptable for us to wait 30 seconds for a build to complete. Yes, I've done all the optimisations mentioned on this page and then some. Don't even mention hot reload as it doesn't work fast enough or just does not work at all. Also, buying better hardware should not be a requirement to build a simple Android app, Xcode builds in 2 seconds with a 8GB Macbook Air. A Macbook Air!
2. IDE. Android Studio is a memory hog even if you throw 32GB of RAM at it. The visual editors are janky as hell. If you use Eclipse, you may as well just chop off your fingers right now because you will have no use for them after you try and build an app from afresh. I mean, just look at some of the posts in this subreddit where the common response is to invalidate caches and restart. That should only be used as a last resort, but it's thrown about like as if it solves everything. Truth be told, it's Gradle's fault. Gradle is so annoying I've dedicated the next point to it.
3. Gradle. I am convinced that Gradle causes 50% of an Android developer's pain. From the build times to the integration into various IDEs to its insane package management system. Why do I need to manually exclude dependencies from other dependencies, the build tool should just handle it for me. C'mon it's 2019. Gradle is so bad that it requires approx 54GB of RAM to work out that I have removed a dependency from the list of dependencies. Also I cannot work out what properties I need to put in what block.
4. API. Android API is over-bloated and hellish. How do I schedule a recurring notification? Oh use an AlarmManager. Yes you heard right, an AlarmManager... Not a NotificationManager because that would be too easy. Also has anyone ever tried running a long running task? Or done an asynchronous task? Or dealt with closing/opening a keyboard? Or handling clicks from a RecyclerView? Yes, I know Android Jetpack aims to solve these issues but over the years I have become so jaded by things that have meant to solve other broken things, that there isn't much hope for Jetpack in my mind 😤
5. API 2. A non-insignificant number of Android users are still on Jelly Bean or KitKat! That means we, as developers, have to support some of your shitty API decisions (Fragments, Activities, ListView) from all the way back then!
6. Not reactive enough. Android has support for Databinding recently but this kind of stuff should have been introduced from the very start. Look at React or Flutter as to how easy it is to make shit happen without any effort.
7. Layouts. What the actual hell is going on here. MDPI, XHDPI, XXHDPI, mipmap, drawable. Fuck it, just chuck it all in the drawable folder. Seriously, Android should handle this for me. If I am designing for a larger screen then it should be responsive. I don't want to deal with 50 different layouts spread over 6 different folders.
8. Permission system. Why was this not included from the very start? Rogue apps have abused this and abused your user's privacy and security. Yet you ban us and not them from the Play Store. What's going on? We need answers.
9. In Android, building an app took me 3 months and I had a lot of work left to do but I got so sick of Android dev I dropped it in favour of Flutter. I built the same app in Flutter and it took me around a month and I completed it all.
10. XML.
If you're a new dev, for the love of all that is good in this world, do NOT get into Android development. Start with Flutter or even iOS. On Flutter and build times are insanely fast and the hot reload is under 500ms constantly. It's a breath of fresh air and will save you a lot of headaches AND it builds for iOS flawlessly.
To the people who build Android, advocate it and work on it, sorry to swear, but fuck you! You have created a mess that we have to work with on a day-to-day basis only for us to get banned from the app store! You have sold us a lie that Android development is amazing with all the sweet treat names and conferences that look bubbly and fun. You have allowed to get it so bad that we can't target an API higher than 18 because some Android users are still using devices that support that!
End this misery. End our pain. End our suffering. Throw this abomination away like you do with some of your other projects and migrate your efforts over to Flutter. Please!
#NoToGoogleIO #AndroidSummitBoycott #FlutterDev #ReactNative16 -
I befriended a much-older dev who's notoriously known for cursing in source code comments.
His best comment was F.I.S.H., which is his cursing acronym for "fucking incredible shitty hack"6 -
My school stores everyone's username and passwords (including admins) in plain text on a Windows 2007 server that they remote desktop into.8
-
Still trying to get good.
The requirements are forever shifting, and so do the applied paradigms.
I think the first layer is learning about each paradigm.
You learn 5-10 languages/technologies, get a feeling for procedural/functional/OOP programming. You mess around with some electronics engineering, write a bit of assembly. You write an ugly GTK program, an Android todo app, check how OpenGL works. You learn about relational models, about graph databases, time series storage and key value caches. You learn about networking and protocols. You void the warranty of all the devices in your house at some point. You develop preferences for languages and systems. For certain periods of time, you even become an insufferable fanboy who claims that all databases should be replaced by MongoDB, or all applications should be written in C# -- no exceptions in your mind are possible, because you found the Perfect Thing. Temporarily.
Eventually, you get to the second layer: Instead of being a champion for a single cause, you start to see patterns of applicability.
You might have grown to prefer serverless microservice architectures driven by pub/sub event busses, but realize that some MVC framework is probably more suitable for a 5-employee company. You realize that development is not just about picking the best language and best architecture -- It's about pros and cons for every situation. You start to value consistency over hard rules. You realize that even respected books about computer science can sometimes contain lies -- or represent solutions which are only applicable to "spherical cows in a vacuum".
Then you get to the third layer: Which is about orchestrating migrations between paradigms without creating a bigger mess.
Your company started with a tiny MVC webshop written in PHP. There are now 300 employees and a few million lines of code, the framework more often gets in the way than it helps, the database is terribly strained. Big rewrite? Gradual refactor? Introduce new languages within the company or stick with what people know? Educate people about paradigms which might be more suitable, but which will feel unfamiliar? What leads to a better product, someone who is experienced with PHP, or someone just learning to use Typescript?
All that theoretical knowledge about superior paradigms won't help you now -- No clean slates! You have to build a skyscraper city to replace a swamp village while keeping the economy running, together with builders who have no clue what concrete even looks like. You might think "I'll throw my superior engineering against this, no harm done if it doesn't stick", but 9 out of 10 times that will just end in a mix of concrete rubble, corpses and mud.
I think I'm somewhere between 2 and 3.
I think I have most of the important knowledge about a wide array of languages, technologies and architectures.
I think I know how to come to a conclusion about what to use in which scenario -- most of the time.
But dealing with a giant legacy mess, transforming things into something better, without creating an ugly amalgamation of old and new systems blended together into an even bigger abomination? Nah, I don't think I'm fully there yet.8 -
"Hmm, I wonder if Cloudflare has a limit to the amount of data I can store in the CDN"
*Uploads a shitton of crap to a Nextcloud server and caches everything via cloudflare*
So far - 300GB stored.3 -
I like memory hungry desktop applications.
I do not like sluggish desktop applications.
Allow me to explain (although, this may already be obvious to quite a few of you)
Memory usage is stigmatized quite a lot today, and for good reason. Not only is it an indication of poor optimization, but not too many years ago, memory was a much more scarce resource.
And something that started as a joke in that era is true in this era: free memory is wasted memory. You may argue, correctly, that free memory is not wasted; it is reserved for future potential tasks. However, if you have 16GB of free memory and don't have any plans to begin rendering a 3D animation anytime soon, that memory is wasted.
Linux understands this. Linux actually has three States for memory to be in: used, free, and available. Used and free memory are the usual. However, Linux automatically caches files that you use and places them in ram as "available" memory. Available memory can be used at any time by programs, simply dumping out whatever was previously occupying the memory.
And as you well know, ram is much faster than even an SSD. Programs which are memory heavy COULD (< important) be holding things in memory rather than having them sit on the HDD, waiting to be slowly retrieved. I much rather a web browser take up 4 GB of RAM than sit around waiting for it to read the caches image off my had drive.
Now, allow me to reiterate: unoptimized programs still piss me off. There's no need for that electron-based webcam image capture app to take three gigs of memory upon launch. But I love it when programs use the hardware I spent money on to run smoother.
Don't hate a program simply because it's at the top of task manager.6 -
I recently interviewed for a job at company where I had 20 minutes to code a solution in python (whose standard library I know nothing about) to a question, which also included googling certain finance-related APIs, with not one but two technical interviewers looking over my shoulder THE ENTIRE TIME.9
-
> pic related
This is what I've been putting up with on my personal machine for months.
tl;dr: Suggestions for a wlan card/adapter for Debian9? My current RealTek wnic is barely functional, and my replacement (a TPLink... something) is completely incompatible.
I don't need anything super fancy, though I would ofc love support for AC/AD if at all possible.
I don't care (too much) about price, since I'm only going to buy one and very likely won't replace it for years.
------
I'm running Debian9 and have a have a RealTek card. Even when it's not arbitrarily dropping packets like in the screenie, it randomly caches them for up to 90 seconds and dumps them hilariously out of order. I can't play games like that. I can barely even browse devRant. Steam goes offline about once every 30 seconds, and therefore spams all of my friends with online/offline notifications. Streaming "works" on good days. Git works fine, however, so most days I don't notice the connection issues.
And yes, I'm using a community-patched driver (rtl8188ce) that's supposed to fix some of RealTek's more major screwups and increase the transmit power by ~20x. The driver helps, but only a little.
I've done some reasearch on wlan linux support, but haven't found anything very reassuring. Mostly just forum posts saying things like "Intel cards usually work fine!" I don't want to gamble. I just want to buy a card that will work and be done with it. :(
Suggestions? Insight?10 -
I am much too tired to go into details, probably because I left the office at 11:15pm, but I finally finished a feature. It doesn't even sound like a particularly large or complicated feature. It sounds like a simple, 1-2 day feature until you look at it closely.
It took me an entire fucking week. and all the while I was coaching a junior dev who had just picked up Rails and was building something very similar.
It's the model, controller, and UI for creating a parent object along with 0-n child objects, with default children suggestions, a fancy ui including the ability to dynamically add/remove children via buttons. and have the entire happy family save nicely and atomically on the backend. Plus a detailed-but-simple listing for non-technicals including some absolutely nontrivial css acrobatics.
After getting about 90% of everything built and working and beautiful, I learned that Rails does quite a bit of this for you, through `accepts_nested_params_for :collection`. But that requires very specific form input namespacing, and building that out correctly is flipping difficult. It's not like I could find good examples anywhere, either. I looked for hours. I finally found a rails tutorial vide linked from a comment on a SO answer from five years ago, and mashed its oversimplified and dated examples with the newer documentation, and worked around the issues that of course arose from that disasterous paring.
like.
I needed to store a template of the child object markup somewhere, yeah? The video had me trying to store all of the markup in a `data-fields=" "` attrib. wth? I tried storing it as a string and injecting it into javascript, but that didn't work either. parsing errors! yay! good job, you two.
So I ended up storing the markup (rendered from a rails partial) in an html comment of all things, and pulling the markup out of the comment and gsubbing its IDs on document load. This has the annoying effect of preventing me from using html comments in that partial (not that i really use them anyway, but.)
Just.
Every step of the way on building this was another mountain climb.
* singular vs plural naming and routing, and named routes. and dealing with issues arising from existing incorrect pluralization.
* reverse polymorphic relation (child -> x parent)
* The testing suite is incompatible with the new rails6. There is no fix. None. I checked. Nope. Not happening.
* Rails6 randomly and constantly crashes and/or caches random things (including arbitrary code changes) in development mode (and only development mode) when working with multiple databases.
* nested form builders
* styling a fucking checkbox
* Making that checkbox (rather, its label and container div) into a sexy animated slider
* passing data and locals to and between partials
* misleading documentation
* building the partials to be self-contained and reusable
* coercing form builders into namespacing nested html inputs the way Rails expects
* input namespacing redux, now with nested form builders too!
* Figuring out how to generate markup for an empty child when I'm no longer rendering the children myself
* Figuring out where the fuck to put the blank child template markup so it's accessible, has the right namespacing, and is not submitted with everything else
* Figuring out how the fuck to read an html comment with JS
* nested strong params
* nested strong params
* nested fucking strong params
* caching parsed children's data on parent when the whole thing is bloody atomic.
* Converting datetimes from/to milliseconds on save/load
* CSS and bootstrap collisions
* CSS and bootstrap stupidity
* Reinventing the entire multi-child / nested params / atomic creating/updating/deleting feature on my own before discovering Rails can do that for you.
Just.
I am so glad it's working.
I don't even feel relieved. I just feel exhausted.
But it's done.
finally.
and it's done well. It's all self-contained and reusable, it's easy to read, has separate styling and reusable partials, etc. It's a two line copy/paste drop-in for any other model that needs it. Two lines and it just works, and even tells you if you screwed up.
I'm incredibly proud of everything that went into this.
But mostly I'm just incredibly tired.
Time for some well-deserved sleep.7 -
Less rant, more mildly interesting Java trivia.
Integer i0 = 3; Integer i1 = 3;
Integer i2 = 300; Integer i3 = 300;
i0 == i1 is true as expected
i2 == i3 is actually false
Java caches -128 to 127 Integer objects for faster perf so when you're inside that range, the objects are indeed the same, but because == checks object equality, the Integer outside of the range is not cached and had to be initialized, so i2 and i3 are two different objects.
You can totally break some tests this way :)9 -
Every time someone compares Golang to Rust an angel falls, a unicorn dies and a Java developer writes another class.
Please stop doing that.8 -
Long but hilarious:
I was deeply concerned about how we have a single, non-paginated call to a backend service, returning hundreds of entries, which has to be enriched with constant data fetched from our db for each entry. FOR EACH ENTRY. AND FOR EACH REQUEST.
I voiced my concerns to my PM, who called me a "rage prophet" for it.
As expected, the call took 20-something seconds to complete.
Ten minutes before the CEO comes over to have a look, another dev changes his loosely-related service, and the entire super-heavy, sprawling abyss of enrichment pipeline returns in sub-second timing!!!
CEO: guys, this is too fast. You have to slow it down a bit. It doesn't seem reliable that we're able to get all this data immediately.
PM: you see, rage prophet, it all worked out in the end
Me: #$@%$&!!!!!2 -
“I suck as a coder. I have no business writing a single function. None of what I’m doing is working. I should be fired and nobody should ever hire me again.”
*Remembers to clear caches and it works right the first time*
“I’m a pretty great coder.” -
Too many night shifts.
But it's done.
After the last migrations my emotional state is... Questionable.
VM migrations between different CPU vendors and generations leading to segfaults because of unsupported X86 extensions.... Thx for doing that at 23 o'clock after 8 hours of work....
Forgetting a left over NIC in a virtual machine, creating a routing loop, leading to very erratic behaviour and fun things.
Someone forgot to check the '"Unique" box, mass spawning a cluster of VMs with same MAC adresses....
DNS fuckery since someone thought that reboot would flush the cache of an DNS server.... Nope most DNS servers have persistent caches. You'll have to flush manually.
And let's not forget the joy of the 12 plus pages of when and where to move VMs, harddrives and VLAN configuration.
Oh migrations are such a festival of joy.
Finally done with that shit -.-4 -
Hey, we need a service to resize some images. Oh, it’ll also need a globally diverse cache, with cache purging capabilities, only cache certain images in the United States, support auto scaling, handle half a petabyte of data , but we don’t know when it’ll be needed, so just plan on all of it being needed at once. It has to support a robust security profile using only basic HTTP auth, be written in Java, hosted on-prem, and be fully protected from ddos attacks. It must be backwards compatible with the previous API we use, but that’s poorly documented, you’ll figure it out. Also, it must support being rolled out 20% of the way so we can test it, and forget about it, and leave two copies of our app in production.
You can re-use the code we already have for image thumbnails even though it’s written in Python, caches nothing and is hosted in the cloud. It should be easy. This guy can show you how it all works.2 -
I think I made someone angry, then sad, then depressed.
I usually shrink a VM before archiving them, to have a backup snapshot as a template. So Workflow: prepare, test, shrink, backup -> template, document.
Shrinking means... Resetting root user to /etc/skel, deleting history, deleting caches, deleting logs, zeroing out free HD space, shutdown.
Coworker wanted to do prep a VM for docker (stuff he's experienced with, not me) so we can mass rollout the template for migration after I converted his steps into ansible or the template.
I gave him SSH access, explained the usual stuff and explained in detail the shrinking part (which is a script that must be explicitly called and has a confirmation dialog).
Weeeeellll. Then I had a lil meeting, then the postman came, then someone called.
I had... Around 30 private messages afterwards...
- it took him ~ 15 minutes to figure out that the APT cache was removed, so searching won't work
- setting up APT lists by copy pasta is hard as root when sudo is missing....
- seems like he only uses aliases, as root is a default skel, there were no aliases he has in his "private home"
- Well... VIM was missing, as I hate VIM (personal preferences xD)... Which made him cry.
- He somehow achieved to get docker working as "it should" (read: working like he expects it, but that's not my beer).
While reading all this -sometimes very whiney- crap, I went to the fridge and got a beer.
The last part was golden.
He explicitly called the shrink script.
And guess what, after a reboot... History was gone.
And the last message said:
Why did the script delete the history? How should I write the documentation? I dunno what I did!
*sigh* I expected the worse, got the worse and a good laugh in the end.
Guess I'll be babysitting tomorrow someone who's clearly unable to think for himself and / or listen....
Yay... 4h plus phone calls. *cries internally*1 -
XCODE WINDOW COMPLETELY BLACKED OUT. RESTART COMPUTER. SPINNING WHEEL OF DEATH. CANNOT OPEN PROJECT. RESTART XCODE. STACKOVERFLOW. DELETE CACHES. RESTART COMPUTER. REPLACE PROJECT FILES. PROJECT BROKEN. CRIY FOR HOURS. PUSH FILES TO GITHUB. PULL TO NEW FOLDER. SUDDENLY WORKS. XCODE SUCK1
-
I think I still have a 64MB HDD somewhere on a shelf at my late grandpa's house.
Now they make CPUs with caches of that capacity...
o tempora..
EDIT:
FFS! This CPU cache contains >44 floppy disks! I've never even had that many!!!11 -
Yesterday, I started a new job yesterday (yay!), and all of us new employees have gotten a laptop and a docking station.
Today, I was standing by the coffee machine, chatting with a fellow dev about different kinds of automation and efficiency techniques , when he suggested swapping-out coffee for caffeine pills, as a means to promote efficiency.
I immediately suggested we use the mouse as a docking station through which caffeine is pumped directly into the bloodstream, as a means to promote automation :)1 -
fuck javascript
node.js module system sucks. Like its module system is trash, who will want to download some fucking 1GB worth of packages to create a new project.
People keep on just creating other package managers. Yarn is good enough because it caches your packages but still, i am just from deleting some 2.2Gb node modules from my computer and just whyy ?
An area where internet connection us shitty and expensive it is just not very well.
Fuck javascript is everywhere so i have to use it,
typescript just adds another layer to the heavy lifting. You write some typed code to 'reduce bugs' but you generate much more heavy code. I could write in 1kb js file but i end up getting some 3kb js because what - i used typescript-ügvjpiahdjb
fuck javascript14 -
I explained last week in great detail to a new team member of a dev team (yeah hire or fire part 2) why it is an extremely bad idea to do proactive error handling somewhere down in the stack...
Example
Controller -> Business/Application Logic -> Infrastructure Layer
(shortened)
Now in the infrastructure layer we have a cache that caches an http rest call to another service.
One should not implement retry or some other proactive error handling down in the cache / infra stack, instead propagate the error to the upper layer(s) like application / business logic.
Let them decide what's the course of action, so ...
1) no error is swallowed
2) no unintended side effects like latency spikes / hickups due to retries or similar techniques happens
3) one can actually understand what the services do - behaviour should either be configured explicitly or passed down as a programmed choice from the upper layer... Not randomly implemented in some services.
The explanation was long and I thought ... Well let's call the recruit like the Gremlin he is... Gizmo got the message.
Today Gizmo presented a new solution.
The solution was to log and swallow all exceptions and just return null everywhere.
Yay... Gizmo. You won the Oscar for bad choices TM.
Thx for not asking whether that brain fart made any sense and wasting 5 days with implementing the worst of it all.6 -
I fucking hate printers. And printers hate me too.
I've been working as a software engineer for almost seven years now, and not a single day as a printer technician, which does not stop my mother from calling me each time a printer breaks down, as she did today. I hop over to her place, the printer is connected via usb into the ethernet socket, but she swears it's been printing an hour ago, and she hasn't moved a thing. - "weird", I think, "it must be connected wirelessly". Suddenly my sister, who's an Arts major, comes over, saying her printer broke down too - "cool so they're both wifi printers". I reset the router and my sister's printer springs back to life.
But my mom's printer, which is old and in bad shape (the printer, not my mom! assholes...), doesn't. It keeps on displaying a weird error message, and fails to receive any print job, whether wired or wireless.
I spent 15 seconds resetting the router, and 15 minutes troubleshooting mom's printer. Nothing worked.
I finally give up and leave the house.
Not a minute goes by and I receive a "your sister fixed the printer" text from mom.
I fucking hate printers.5 -
FUCK WORDPRESS
FUCK WORDPRESS
FUCK WORDPRESS
FUCK WORDPRESS
FUCK WORDPRESS
Who the fuck thought "Oh lets put all caches in the options table". This is so incredible dumb. The options table has nearly 8GB and is just unusable. The query for the "real options" takes about 3s. To export this fucking shit I had to block the prod server for 20 minutes to get a db dump. I want to womit in the mouth of the fucking idiot who did this.6 -
Randomly reviewing a coworker's c++ codebase revealed he was locking at the beginning of a critical section, but explicitly calling unlock for each and every error-handling branching within it. And yes, he forgot to unlock at several places.
That's just not RAIIght. -
I have a first date tonight, but production is smoldering and about to catch fire, and it was my doing. I get 5 people coming to my desk every minute asking when's it gonna be fixed. my supervisors think I'm enjoying this because It's delaying a feature. I'm not. I feel like crying, and it shows.3
-
This was originally a reply to a rant about the excessive complexity of webdev.
The complexity in webdev is mostly necessary to deal with Javascript and the browser APIs, coupled with the general difficulty of the task at hand, namely to let the user interact with amounts of data far beyond network capacity. The solution isn't to reject progress but to pick your libraries wisely and manage your complexity with tools like type safe languages, unit tests and good architecture.
When webdev was simple, it was normal to have the user redownload the whole page everytime you wanted to change something. It was also normal to have the server query the database everytime a new user requested the same page even though nothing could have changed. It was an inefficient sloppy mess that only passed because we had nothing better and because most webpages were built by amateurs.
Today webpages are built like actual programs, with executables downloaded from a static file server and variable data obtained through an API that's preferably stateless by design and has a clever stateful cache. Client side caches are programmable and invalidations can be delivered through any of three widely supported server-client message protocols. It's not to look smart, it's engineering. Although 5G gets a lot of media coverage, most mobile traffic still flows through slow and expensive connections to devices with tiny batteries, and the only reason our ever increasing traffic doesn't break everything is the insanely sophisticated infrastructure we designed to make things as efficient as humanly possible.11 -
Putting every file, even SHADER CACHES (that huge cyan flower here (this illustration was made with "gource"), yes, every of those tiny little dots is a file) or even complete libraries into their git repository.2
-
Wrote some code. Didn't work.
Cleared all build caches, deleted project files and re-opened the project from scratch. Code still doesn't work.
Copied the same code over to a new project. Works.
I FUCKING HATE DAYS LIKE THESE!!!2 -
Android studio's pro tip:
1)While installing it for the first time, just edit idea.properties(open it in notepad,its a text file with instructions already there) and change the system and caches directory to your custom defined directory with space > 8gb before installing
(Yeah that's the amount of cache generated when you have 5 projects open in parallel and when its being created in your root folder, your system hangs{personal observations, can't assure})
2) similarly click on "set custom location" and don't go with the "set recommended location" when asked where to install android studio's sdk. -
As you grow older, both professinally as a dev and as a team player, you realise that a complete rewrite is rarely the better answer to the problem at hand.
With that being said, I'm rewriting the glorified-mass-of-infernal-human-feces-with-corn-bits-masquerading-as-mere-shit out of a production service right now. Wish me luck.2 -
If ever there was something like dark ages, then we are living it: which programmer still knows what his statement does through the whole software stack down to the CPU (and could also account for what a modern CPU does with all its cores, caches, pipelines and -1, -2, -3 rings). Piled higher and deeper. I know nothing. So it's like being a cargo cult sorcerer, conjuring copy&pasted spells from SO to invoke Bjarne's, Linus' or whomevers forlorn spirit, so this shit won't break.2
-
So I spent 2 hours trying to debug my HTML form with data pulled from database. I kept updating the data in the database but the forms weren't changing. Then it finally struck me, Firefox fucking caches form fields on page reload. I use to think this was a convinient feature but now it's just a pain in the ass.1
-
Stores uploaded files in the cloud to save space on server. Caches them locally to save accessing cloud..1
-
Managing a small team - poorly.
I was in charge of testing a legacy calculations engine together with two scientists, for whom I set up a python and interop environment so they could test the engine easily.
The two were very excited at the thought of validating the calculations and in fact found many bugs.
I was very supportive, told them to fix the bugs and gave them a pet on the back.
All three of us were happy the legacy engine is shaping up, that's until my boss heard of it, and boy did he grill me hard for it.
Turns out our efforts were highly unappreciated by the client, whose only request was that we test the engine and report the bugs. Not to fix them. My goodwill cost the company a lot of money, since the client paid by the hour, and was now due a refund. Crap.
It took me a year to finally understood the moral of the story. Which is to always respect the client's wishes and convey maximum transparency to him. -
Magento Debugging Horror!
Changing lots of things in magento with no problem. Continuing development for quite sometime. Suddenly decide to clear cache to see affect of a change on a template in frontent. Suddenly magento crashes! There's no error message. No exception log. No log in any file anywhere on the disk. All that happens is that magento suddenly returns you to the home page!
Reverting all the changes to the template. Clear the cache. Nope! Still the same! Why? Because the problem has happened somewhere in your code. Magento just didn't face it, because it was using an older version of your code. How? Because magento 2 even caches code! Not the php opcache. Don't get me wrong. It has it's own cache for code, in a folder called generated. Now that you cleared all the caches including this folder, you just realized that, somewhere something is wrong. But there is no way for you to know where as there is absolutely no exception logged anywhere!
So you debug the code, from index.php, down to the deepest levels of hell. In a normal php code, once the exception happens, you should see the control jumps to an exception handler, there, you can see the exception object and its call stack in your debugger. But that's not the case with magento.
Your debugger suddenly jumps to a function named:
write_close();
That's all. No exception object. No call stack. No way to figure out why it failed. So you decide to debug into each and every step to figure out where it crashes. The way magento renders response to each request is that, it calls a plugin, which calls a plugin loop, which calls another plugin, which calls a list of plugins, which calls a plugin loop, which calls another plugin.....
And if in each step, just by accident, instead of step through, you use the step over command of your debugger, the crash happens suddenly and you end up with the same freaking write_close() function with no idea what went wrong and where the error happened! You spend a whole day, to figure out, that this is actually a bug in core of magento, they simply introduced after your recent update of magento core to the latest STABLE version!!! It was not your mistake. They ruined their own code for the thousandth of time. You just didn't notice it, because as I said, you didn't clear the `generated` folder, therefore using an older version of everything!
Now that after spending 7 hours figuring out what has failed with absolutely no standard way of debugging and within a spaghetti of GOTO commands (Magento calls them plugin), why not report it to github? So you report it with a pull request. This also takes 1 hour of your time. Just to next day get informed that your pull request is rejected because another person already fixed the bug and made the same pull request. It was just not on the latest stable version yet!
So you decide to avoid updating magento as much as possible. Because you know that the next Stable version will make your life and career unstable. But then the customer complains that the Admin Panel is warning him of using old Magento version which might pose SECURITY THREATS! -
Sometimes i would really like caches to be f*ck*d in the arse untill they refresh themselves out of self pity so i dont need to search for the f*ck*ng problem for an hour!!!2
-
Name two production service, metrics and logging included, after a famous woman and an armored vehicle.
Dude, no. When those services go down in the middle of the night some poor soul on call duty will have to handle it without the faintest idea wtf is going on.1 -
When you think you suck something it's NOT your fault - learn how it's done in a different language or framework, then come back to it.
When you think you mastered something, it IS your fault - learn how it's done in a different language or framework, then come back to it. -
I recently logged into my care provider's online services for the first time, to schedule a doctor's appointment.
The login form requested the usual: username and password - but also a birth date. Which their developers implemented with the default Android datepicker control.
Meaning I had to click 'back' 339 times to get to December 1989.
fuuuuck.2 -
I find still very funny that Desktop outlook (So Microsoft) doesn't support MFA from Office 365.
I'm kind of tired to tell user go and geerate "app specific" pass which bypasses MFA.
Specially when even default Windows 10/11 mail client supports MFA just fine and fucking faster than outlook.
This is the part of my job I hate : Administrating users, search how to make thier PC/MAC work (Btw Mac client does suppoort MFA ironicly).
Can I just get back to Infrastructure, redis caches, step in Q# ? .4 -
Just some free knowledge that I'd like to pass around:
I wanted to free up some space in my MacBook. I checked out different methods.
Here are some methods that helped:
- Go to ~/Library/Caches and try to clean shit up.
- If you have Homebrew, (if you don't, just quit dev already) run `brew cleanup` -- only for people with Macs.
- There's this app called Omnidisksweeper. Check that out.
- Also, indexing Spotlight is something I've heard of but never tried.3 -
I spent about an hour today working on getting an arduino board working before discovering that my IDE wasn't the latest version. In fact, it was outdated by several years.
Why are the apt caches so old? I keep my machine updated constantly but what's the point if it's locked at an old package forcing me to circumvent apt in the first place?1 -
Well, a combination of DXVK, wine and dxvk-cache-pool was used to try and play Path of Exile. The problem seems to be that I can't have any pre-built caches due to them not existing. Seems like a GTX 660 isn't really used anymore and if I want to play a game I will have to have DXVK build its own cache.
Until then, I'm stuck with a stuttery mess of a game due to Path of Exile having a rather many levels. A full playthrough will be necessary until it starts working smoothly.7 -
!rant, so I'm trying to decide on what caching system I should use. It's for a PHP app, using Symfony as framework, tlgether with Doctrine for DB. The caches in Question are memcached, APCu or redis.
The goal: speed shit up.
The app currently uses Symfony 2.8 and is hosted on a single server (so no distributed system is needed). I'd currently opt for APCu, but more since it's not distributed, there won't be an overhead from that. A nice thing about memcached would be the abillity to store user seeions, even if we would decide to have multiple servers in the future.
What would you reccomend and why?3 -
I love the goddamned app. You all seem like lovely individuals with a large dose of sweet developer attitude. Reading some of these posts definitely made my tired ass chuckle.
Just got off a call with my wife, she might join the site too at this rate. Glad to be in a relationship with another dev who really caches my heart like this.6 -
Roses are red
I'm gonna cry
"can't read function 1 of undefined"
when your trying to use someone else code, but they have it very unoptimized, so you fix it up, only to refresh your editor to see Type-error hell and the editor tells you to fuck off by not telling you what line it's on...
I mean what the fuck man. Why do editors do this shit. They don't clear their caches sometimes, so you don't know if a type-error occurs, so your just FUCKED and you have to start all over. I've spent 5 hours just trying to edit one fucking program so I can import it into mine. The code itself is just fine, but the amount of sloppy variables is good damn outrages, I legit have to leave non-critical variables or else the program just breaks, even though those variables aren't even being fucking used for the purpose I have the program for anyways. And I can't just leave the code as it is because it would cause to much of a performance drop in a program that involves music. Like I would let that happen. The worse part is, is that I got so close one time, it was almost done, no type-errors, 2 hours in, I get a little excited and delete some more useless code without checking for type errors. Well guess I'll go fuck myself. Oh? I can't seem to find the most likely most useless unrelated variable? Shucks, oh boy, oh gee. Fuck off with this shit, I didn't start learning JavaScript only to be fisted in the ass if I want to use code from someone else program. Literally it would be so much better if the editor could tell me where this error is, but noooooooooooooooo, it's literally an internal error and that means I can go fuck myself two ways to Sunday2 -
The lack of a meta-language in c# can be a pain in the ass, I have to jump through hoops to generate something like python's decorators, not to mention having to generate il to overcome some limitations of reflection when dealing with value types.
-
So I did this little experiment PWA caching and service worker which caches entire website (js/css/html) [It's a small website]. Now I do not understand the concept of PWA caching entirely because when I 'Add it to Home screen' it becomes an app as expected but when I turn off the internet and then open the app it requires the internet.
What in fucking ass, why won't you just render those html pages which are cached ?15 -
Fucking stupid spring-boot-devtools dependency !!!
Started work at 11AM and was working on a Rest API system using Spring Boot. Got to know about Spring Boot dev tools and added it to my project.
Later in the evening my endpoints started throwing exceptions for no god damn reason. Invalidated the caches, restarted my IDE and laptop. Rolled back my code to almost vanilla branch !!! YET THE ENDPOINTS KEPT THROWING RANDOM EXCEPTIONS.
This went on till 1:30 AM (I live in a country where work-life balance is not a thing for software developers :)). Frustrated, the last thing I tried was to rollback the devtools dependency from my POM file. AND MY ENDPOINTS STARTED WORKING AGAIN 🤬
What the actual ffffuhkkk !!!!
To all those who contribute to spring-boot-devtools, you guys are doing a great job and it isn’t a personal attack towards you (I really mean it). It just messed up my project in some way and I was extremely frustrated. -
Do you recommend hiring junior or mid-level dev for a python role that involves mostly data transformations with pandas, growth and marketing projects like social media bots, consuming APIs for data and some experience with Azure SQL db? I’m worried if we hire too senior then they will leave as the role doesn’t involve any advanced software engineering, like caches, web apps, rest apis, etc. It’s more of a handyman that can automate and hack a solution to a business problem: for example, learning openCV to automatically crop thousands of images extracting only the text3