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 - "pain and suffering for all!"
-
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'm almost done, I'll just need to add tests!"
Booom! You did it, that was a nuke going off in my head.
No, you shouldn't just need to add tests. The tests should have been written from the get go! You most likely won't cover all the cases. You won't know if adding the tests will break your feature, as you had none, as you refactor your untested mess in order to make your code testable.
When reading your mess of a test case and the painful mocking process you went through, I silently cry out into the void: "Why oh why!? All of this suffering could have been avoided!"
Since most of the time, your mocking pain boils down to not understanding what your "unit" in your "unit test" should be.
So let it be said:
- If you want to build a parser for an XML file, then just write a function / class whose *only* purpose is: parse the XML file, return a value object. That's it. Nothing more, nothing less.
- If you want to build a parser for an XML file, it MUST NOT: download a zip, extract that zip, merge all those files to one big file, parse that big file, talk to some other random APIs as a side-effect, and then return a value object.
Because then you suddenly have to mock away a http service and deal with zip files in your test cases.
The http util of your programming language will most likely work. Your unzip library will most likely work. So just assume it working. There are valid use cases where you want to make sure you acutally send a request and get a response, yet I am talking unit test here only.
In the scope of a class, keep the public methods to a reasonable minimum. As for each public method you shall at least create one test case. If you ever have the feeling "I want to test that private method" replace that statement in your head with: "I should extract that functionality to a new class where that method public. I then can create a unit test case a for that." That new service then becomes a dependency in your current service. Problem solved.
Also, mocking away dependencies should a simple process. If your mocking process fills half the screen, your test setup is overly complicated and your class is doing too much.
That's why I currently dig functional programming so much. When you build pure functions without side effects, unit tests are easy to write. Yet you can apply pure functions to OOP as well (to a degree). Embrace immutability.
Sidenote:
It's really not helpful that a lot of developers don't understand the difference between unit, functional acceptance, integration testing. Then they wonder why they can't test something easily, write overly complex test cases, until someone points out to them: No, in the scope of unit tests, we don't need to test our persistance layer. We just assume that it works. We should only test our businsess logic. You know: "Assuming that I get that response from the database, I expect that to happen." You don't need a test db, make a real query against that, in order to test that. (That still is a valid thing to do. Yet not in the scope of unit tests.)rant developer unit test test testing fp oop writing tests get your shit together unit testing unit tests8 -
Yknow, I want to make an android app that I have in my mind for about half a year now and I already tried twice, both with Kotlin and with Java but everytime I try it's just pain and suffering and frustration...
No it's not because of the language, I like Java and I like Kotlin too and I'd say I'm at least decent at Kotlin and really good in Java...
No no.. the issue is the fucking Android SDK and the mix-and-match documentation available online!!!
Every fucking time I want to implement some sort of UI element, user action or a background service and I start googling how to do it It comes with with at least 3 different stack overflow solutions, all of them saying "that way of doing it is deprecated, instead you should X" and looking up the OFFICIAL FUCKING DOCS it will just make me roll up in the corner and cry because of how fucking inconsistent it is and the retarded domain language it uses... fucking transactions for fucking fragments inside fucking activities... because I guess the word "screen"/"view"/"template" or something similar natural just was too mainstream for the all knowing alphabet soup that google is...
And then you start looking up what the fucking difference even is and how to code it up only to find out there's at least 12 other opinions on how fragments should be used and what should be an activity and what should be a damn fragment...
But that's not all, that's just the base... I get a headache even thinking about how the fucking inflating of templates and the entire R. notation works. You want to open a fucking tiny corner menu with the settings options? WELL THEN YOU FUCKING BETTER REMEMBER TO IMPLEMENT IT THROUGH SOME SORT OF EVENT AND INFLATE THE MENU YOURSELF EVEN THOUGH ITS THE SAME FUCKING THING WITH STATIC STRINGS...
AND WHY THE FUCK DO I NEED LIKE 4 NEW FILES TO IMPLEMENT A FUCKING LISTVIEW...
also talking about ListViews... what was wrong with "ListView"... Why do we need a "RecyclerView"... oh right... because the fucks fucked the fuck up and all the legacy components were designed by a monkey and are next to useless! SO WE NEEDED A NEW NAME FOR THE FIXED VERSION, CANT NAME IT LISTVIEW AGAIN... FUCK YOU...
honestly... if I got a dolar for every "what the fuck android" I said during trying to understand that mess I'd be richer by a few hundred...
oh oh oh, but you know what? You don't like the android SDK? that's fine, you can use fucking React or Flutter or something... yeah.. because instead of torturing myself with the android SDK I want to torture myself with an abstraction of the same SDK and JavaScript as the fucking cherry on top... HAVE YOU FUCKING SEEN THE CODE FLUTTER SHOWS ON THEIR WEBSITE AS THE "Introduction" ?!!!
Look at this piece of shit:
[code in attached image, we could really use a proper Markdown support at least for rants]
THAT'S NOT EVEN THE ENTIRE THING, THAT'S JUST THE *REALLY* UGLY PART...
The fucking nesting... What is it with JS and all the fucking nesting everytime?! It looks like shit.... It reads like shit as well...
WHY, in the name OF FUCK, IS THERE MORE THAN 5 ANDROID FRAMEWORKS and ALL of them... used this FUCKING NOVEL idea of programming using A FUCKING BRACKET WALL
It always looks like:
(code(code[code{code(code{code()})}]));
If I wanted to make a fucking app or a website using fucking Haskell I'd do that.... at this point reading assembly code feels like heaven compared to this retardation... Why is this so popular?! WHAT DO YOU PEOPLE SEE IN IT?! Clearly it's not the aesthetics... it looks like a fucking frog vomit running down an emus leg, fuck that.... I don't even hate classic JavaScript, it's a good enough language and it does what I tell it to... but these ugly fucking frameworks like react, angular and whatever else uses this fucking format can go fuck right off. This is not the way JS is gonna get a better name for itself...
So:
Fuck Google
Fuck the marionette that designed the Android SDK
Fuck the Hellspawn the came up with the "functional-like" way of using JavaScript
Fuck everyone that thinks "JavaScript everywhere" is a good thing
And deeply future-fuck everyone that makes a new framework following any of these standards, stucks a .js at the end of the name and releases his hairball.js of an invention into the fucking world....
It's a mess... fuck everything android related...14 -
TLDR: Read the post.
Bare with me here, I am new to all of this jazz. But I wanted to tell a story.
I have been a programmer for a while now, working on various projects with various companies, doing various things. I know that sounds vague, but it's the truth.
I never work on the same thing, ever, I never work with any fancy IDE, because I don't need one. I personally believe no developer works with the massive huge code base all at once, but instead works on it in pieces. That's a story for another day.
I have seen the shittiest of the shittiest and some how survived, I have been beaten down by code bases that were out sourced yet some how managed to stand up and gain my baring and fight back. I have dealt with clients, bosses and idiots from A-Z. Watching them all scramble around for their pennies like greedy rich white men seeking more pennies to swim in.
Some how I survived all this. I started working from home almost 3 years ago, the freedom is exhilarating. The ability to fuck off for most of the day and work at night, or work all morning and fuck off. There's nothing better.
As you work from home you think, this will be amazing. Until the crippling loneliness takes over and even the 6th bottle of beer doesn't quench the thirst of human contact. The pain of being trapped in the four white walls of your office makes that bottle of tequila, to numb out the emptiness inside look more satisfying.
At some point, you crawl out of your space to find people to interact with, refusing to be beaten down by both shit code and loneliness only to find all your friends, family and significant others are working, in offices, where they cant just fuck off for a day with you. The silence of the house, the office, the what ever becomes deafening.
its crawling all over you like bugs that pick away at your mind, breaking you, hating you. So you decide that a coffee shop is the best place, only to sit there and people watch or check Facebook or what ever else people do at coffee shops that isn't actually work.
The point in all of this, is that working from home is both a positive and a negative. It has destroyed me, created a workaholic and, probably, an alcoholic. There isnt a day I dont wish that I could sleep away the deafening silence of the world around me as every one busies off to the office.
One might think: get an office job, but I have become accustomed to my misery, pain and suffering of working from home, isolated and medicated by vaping and alcohol. the freedom, from what I have found, is worth more then the sacrifice of it - to work around people I slowly begin to hate, people that make me want to overdose on anything rather then see their smug faces and be beaten down by their idiotic words, code bases and money grubbing hands...
I guess I'll get back to work now, in my house, with my cats, my vape and my beer. Here's to freedom and the sacrifices that go along with it.5 -
I'm sending my love to all the millions of people out there suffering in silence, ones with unfathomable trauma and pain, all fighting battles known to none. I respect those who decided to end it all rather than to keep waiting for help that will never come to them.
-
If you've ever tried using Go plugins raise your hand.
If you've ever tried doing plugins in Go, raise your hand.
If you think that the following rant will be interesting, raise your hand.
If you raised your hand, press [Read More]:
This is a tale of pain and sorrow, the sorrow of discovering that what could be a wonderful feature is woefully incomplete, and won't be for a very long time...
Go plugins are a cool feature: dynamically load pre-compiled code, and interact with it in a useful and relatively performant way (e.g. for dynamically extending the capabilities of your program). So far it sounds great, I know right?
Now let me list off some issues (in order of me remembering them):
1. You can't unload them (due to some bs about dlopen), so you need to restart the application...
2. They bundle the stdlib like a regular Go binary, despite the fact that they're meant to be dynamic!
3. #2 wouldn't be so bad if they didn't also require identical versions of all dependencies in both binaries (meaning you'd need to vendor the dependencies, and also hope you are using the right Go version).
4. You need to use -trimpath or everything dies...
All in all, they are broken and no one is rushing to fix it (literally, the Go team said they aren't really supporting it currently...).
So what other options are there for making plugins in Go?
There's the Hashicorp method of using RPC, where you have two separate applications one the plugin, one the plugin server, and they communicate over RPC. I don't like it. Why? Because it feels like a hack, it's not really efficient and it carries a fear of a limitation that I don't like...
Then we come to a somewhat more clever approach: using Lua (or any other scripting language), it's well known, it's what everyone uses (at least in games...). But, it simply is too hard to use, all the Go Lua VMs I could find were simply too hard to set up...
Now we come to the most creative option I've seen yet: WASM. Now you ask "WASM!? But that's a web thing, how are you gonna make that work?" Indeed, my son, it is a web thing, but that doesn't mean I can't use it! Someone made a WASM VM for Go, and the pros are that you can use any WASM supporting language (i.e. any/all of them). Problem inefficient, PITA to use, and also suffers from the same issues that were preventing me from using Lua.
Enter Yaegi, a Go interpreter created by the same guys who made (and named) Traefik. Yes, you heard me right, an INTERPRETER (i.e. like python) so while it's not super performant (and possibly suffering from large inefficiency issues), it's very easy to set up, and it means that my plugins can still be written in Go (yay)! However, don't think this method doesn't have its own issues, there's still the problem of effectively abstracting different types of plugins without requiring too much boilerplate (a hard problem that I'm actively working on, commits coming soon). However, this still feels to be the best option.
As you can see, doing plugins in Go is a very hard problem. In the coming weeks (hopefully), I'm going to (attempt to at least) benchmark all the different options, as well as publish a library that should help make using Yaegi based plugins easier. All of this stuff will go (see what I did there 😉) in a nice blog post that better explains the issues and solutions. But until then I have some coding to do...
Have a good night(/day)!14 -
O Friends, It Is Great To Be Writing To You Again. Let Me Share With You A Most Amazing A Tale! I Have Spent Some Time Now In CapitalizedCamelCaseLand. It Is A Glorious Land, Where All Written Word, Language, and Culture Is Governed By The Almighty CapitalizedCamelCase. The People Are Productive And Extremely WellTyped (A Phrase They Charish And Use To Mean General WellBeing).
The Honorable Citizens Of CapitalizedCamelCaseLand Have But Few Fears... And I Shrink To Speak Of Them Or Even Write Them Here, As It Is A Heinous Crime To Even Mention Or Write These Words... But I Must Report, As It Is My Duty... So, Their Fears: The Horrible And Most Repellant lowerCamelCaseJavaScriptianDevils, Or Even Worse, The Grisly And Ghastly snake_case_fiends_of_pythonia!!! O My Friends How It Fears Me To Even Form Such Foreign And Strange Characters And Symbols That Remind The Citizens Of CapitalizedCamelCaseLand Only Of Pain And Suffering!
Many Wars Have Been Fought Upon The Lands Of Both JavaScriptia and Pythonia (The Cultural And Correct Way To Refer To These Harsh Lands In Respectable Company), But To No Avail Or Final Stop To The Fighting. While CapitalizedCamelCaseLand Is Currently In A State Of General Peace And Prosperity, There Is Surely A FlareUp Of Conflict To Occur Against The JavaScriptianDevils Or The PythonianSnakeFiends!
For In DevWorldia (The Name Of This Strange Planet I Report From), There Has Rarely Been A Time Of Peace Lasting For More Than About 5 Minutes, Which The Citizens Of CapitalizedCamelCase Assure Me Is Already A Massive Length Of Time And Achievement To Be Cherished.
Alas, I Beleive In The Coming Days I Must Travel To The FarAway Lands Of JavaScriptia And Pythonia. I Can Only Hope That I Am Also Treated With Kindness And Respect In Those Lands By Attempting To Emulate Their Ways, Just As I Have Here In CaptializedCamelCaseLand. I Hope To Write To You Soon And Wish You Well.
Signed And Sincerely,
Language Traveler FullStackChris7 -
1) Learning little to nothing useful in formal post-secondary and wasting tons of time and money just to have pain and suffering.
"Let's talk about hardware disc sectors divisions in the database course, rather than most of you might find useful for industry."
"Lemme grade based on regurgitating my exact definitions of things, later I'll talk about historical failed network protocols, that have little to no relevance/importance because they fucking lost and we don't use them. Practical networking information? Nah."
"Back in the day we used to put a cup of water on top of our desktops, and if it started to shake a lot that's how you'd know your operating system was working real hard and 'thrashing' "
"Is like differentiation but is like cat looking at crystal ball"
"Not all husbands beat their wives, but statistically...." (this one was confusing and awkward to the point that the memory is mostly dropped)
Streams & lambdas in java, were a few slides in a powerpoint & not really tested. Turns out industry loves 'em.
2) Landed my first student job and get shoved on an old legacy project nobody wants to touch. Am isolated and not being taught or helped much, do poorly. Boss gets pissed at me and is unpleasant to work with and get help from. Gets to the point where I start to wonder if he starts to try and create a show of how much of a nuisance I am. He meddle with some logo I'm fixing, getting fussy about individual pixels and shades, and makes a big deal of knowing how to use GIMP and how he's sitting with me micromanaging. Monthly one on one's were uncomfortable and had him metaphorically jerking off about his lifestory career wise.
But I think I learned in code monkey industry, you gotta be capable of learning and making things happen with effectively no help at all. It's hard as fuck though.
3) Everytime I meet an asshole who knows more and accomplish than I do (that's a lot of people) with higher TC than me (also a lot of people). I despair as I realize I might sound like that without realizing it.
4) Everytime I encounter one of my glaring gaps in my knowledge and I'm ashamed of the fact I have plenty of them. Cargo cult programming.
5) I can't do leetcode hards. Sometimes I suck at white board questions I haven't seen anything like before and anything similar to them before.
6) I also suck at some of the trivia questions in interviews. (Gosh I think I'd look that up in a search engine)
7) Mentorship is nigh non-existent. Gosh I'd love to be taught stuff so I'd know how to make technical design/architecture decisions and knowing tradeoffs between tech stack. So I can go beyond being a codemonkey.
8) Gave up and took an ok job outside of America rather than continuing to grind then try to interview into a high tier American company. Doubtful I'd ever manage to break in now, and TC would be sweet but am unsure if the rest would work out.
9) Assholes and trolls on stackoverflow, it's quite hard to ask questions sometimes it feels and now get closed, marked as dupe, or downvoted without explanation.3 -
Rant!!!
Fuck!!!
Clowns!!!
And it is only Monday!!!!
Involved in a pretty large it project. Several years endevour. Global. Tens and tens of millions of dollar budget.
It is obvious for all that this waterfall approach will cause enormous pain. Pain and suffering.
Multiple consultant firms involved. Loads of management, leads and the likes. Several with no it background.
🙄
Yes. No real concept of a database or what not. I mean. It is an actual IT project.
Several leads. One of the managers have no idea what he is doing. None. One would guess he should have his shit together regarding NON-it stuff. But no. And they work with this full-time and can’t even setup a descent way of working in a sub-sub-sub-project.
Clowns.
One would imagine in a waterfall setup that things is…formal. But no. It’s just people doing their thing. Lots of words. Lots of words.
I think there are nice problems to solve at the end. When it is delivered and done. So I will plan to stay and learn as much as possible. But I have to do the clowns work. Which sucks so much I can’t believe. But there are so many people involved so I guess I can get away with it in one piece without too much effort.
I am not even going to write a single line of code. 😬
All is fine.
Fucking Monday.5 -
Why is there evil in the world?
"Because of free will 🤓🤓🤓"
---
🌌 Universe A (ours):
❌ today i can "use my free will", but its IMPOSSIBLE to imagine a new color
❌ today i can "use my free will", but its IMPOSSIBLE to grow wings and fly
❌ today i can "use my free will", but its IMPOSSIBLE to create a new planet
❌ today i can "use my free will", but if i use it for something God doesn't want me to, ill burn forever
---
✅ today i can "use my free will", but it IS POSSIBLE to commit evil
✅ today i can "use my free will", but it IS POSSIBLE to rape, kill, start wars
✅ today i can "use my free will", but it IS POSSIBLE to lie, deceive, suffer
✅ today i can "use my free will", but it IS POSSIBLE to get diseases
✅ today i can "use my free will", but it IS POSSIBLE to die of starvation
✅ today i can "use my free will", but it IS POSSIBLE to die of natural disasters
✅ today i can "use my free will", but I NEED TO suffer so i can build my character
---
What does this tell us about the creator of the existence?
By analyzing this, you can clearly see how:
The most HARMLESS things, are disabled for us to use with our "free will",
while the most HARMFUL things are allowed for us to use with our "free will"
What do YOU think:
What IF, An all-good, all-loving, all-knowing, all-powerful GOD of the existence created a universe:
---
🌌 Universe B (imaginary):
✅ today i can "use my free will", but it IS POSSIBLE to imagine a new color
✅ today i can "use my free will", but it IS POSSIBLE to grow wings and fly
✅ today i can "use my free will", but it IS POSSIBLE to create a new planet
✅ today i can "use my free will", but its IMPOSSIBLE to imagine doing evil
✅ today i can "use my free will", but its IMPOSSIBLE to rape, kill, start wars
✅ today i can "use my free will", but its IMPOSSIBLE to lie, deceive, suffer
✅ today i can "use my free will", but its IMPOSSIBLE to get diseases
✅ today i can "use my free will", but its IMPOSSIBLE to die of starvation
✅ today i can "use my free will", but its IMPOSSIBLE to die of natural disasters
✅ today i can "use my free will", but i do NOT NEED TO suffer and still build my character
✅ today i can "use my free will", but if i use it for something God doesn't want me to, i do NOT burn at all
---
Please tell me, non biased, rational objective answer, is Universe A or Universe B better?
Tell me why, and give a very Very good reason, why couldnt Universe B exist?
If God exists, why didn't God create Universe B? Why did he CHOOSE to create universe A?
"if God exists, he is either Not-All-Powerful, or Not-All-Good"
- Neil Degrasse Tyson
Im having a midlife existential crisis.
If God is real, WHO said he HAS TO be All-Good?
If God is NOT All-Good, would you believe in such God? Would you worship such God?
What if God is NOT All-Good? This would explain why Universe A was chosen over Universe B.
What do YOU think, why would an ALL-GOOD ALL-LOVING ALL-POWERFUL GOD CHOOSE TO CREATE UNIVERSE A, WITH PAIN, SUFFERING AND EVIL?13 -
#Suphle Rant 3: Road to PHP8, Flow travails
Some primer: Flows is a feature that causes the framework to bypass handling the request now but read it from cache. This cache entry is meant to be populated without warming, based on the preceding request. It's sort of like prefetching but done on the back end
While building Suphle, I made some notes on some chapters about caveats and gotchas I may forget while documenting. One such note was that when users make the Flow request, the framework will attempt to determine who user is, using authentication mechanism defined on the first module (of the modular monolith)
Now, I got to this point during documentation and started wondering whether it's impossible for the originating request to have used a different authentication mechanism, which would result in an empty entry for returning user. I *think* it's possible cuz I've got something else called "route mirroring", where web based routes can be converted to API routes. They'll then return JSON, get served under defined API path, use JWT, all automatically. But I just couldn't connect the dots for the life of me, regarding how any of this could impact authentication on the Flow request
While trying to figure out how to write the test for this or whether it was even necessary (since I had no use case), it struck me that since Flow requests are not triggered by an actual user, any code attempting to read authenticated user will see nothing!
I HATE it when I realize there's ambiguity or an oversight, after the amount of attention and suffering devoted. This, along with a chain of personal troubles set off despondency for a couple of days. No appetite for food or talk. Grudgingly refactored in this update over some days. Wrote some tests, not all passed. More pain. May have to convert them to unit tests
For clarity, my expectation is, I built this. Nothing should be impossible for me
Surprisingly, I caught a somewhat lucky break –an ex colleague referred me to the 1st gig I'm getting in 1+ year. It's about writing a plugin for some obscure forum software. I'm not too excited cuz it's poorly documented and I'll have to do a lot of groping, they use arrays instead of objects etc. There's no guarantee I'll find how to implement all client's requirements
While brooding last night, surfing the PHP subreddit, stumbled on a post about using Rector to downgrade a codebase. I've always been interested in the reverse but didn't have any incentive to fret over it. Randomly googled and saw a post promising a codebase can be upgraded with 3 commands in 5 minutes to PHP 8. Piqued my interest around 12:something AM. Stayed up all night upgrading it, replacing PHPSTAN with Psalm, initializing the guy's project, merging Flow auth with master etc. I think it may have taken 5 minutes without the challenge of getting local dev environment to PHP 8
My mood is much lighter than it was, although the battle is not won yet –image tests are failing. For some weird reason, PHP8 can't read generated test images. Hope I can ride on that newfound lease on life to study the forum and get the features working
I have some other rant but this is already a lot to digest in one sitting. See you in rant #4 -
!dev
Personal rant, but as one shouldn't bottle up emotions, probably not so bad idea....
Started with diet and exercise in the vacation, as finally a certain thing starting with C calmed down...
Its maddening how fucked up the world is. Now as a lil private info (that might not be so unknown, shared multiple times here) - my body is a train wreck.
Lungs are fucked, muscle distrophy, some other things are fucked.
I'm the kind of thing every gym trainer dreads - the client that needs not only a lot of ass whooping, but also has a lot of problems that need to be taken care of.
Which is why I rather do exercise at home, cause... My experiences with humans in gyms are bad. Most trainers behave like fucking chimpanzees screaming commands while not listening what one tells them...
First challenge: Find a low impact cardio training.
What one mostly finds is a female chick (which is sad cause I like men more for obvious reasons), that should gain some weight, screaming at ya how great sport is while jumping around like a bunny on ecstasy.
Low impact isn't really low impact when you jump around, lil bunny... And it isn't low impact when you just let yourself fall to the floor and start doing push ups.
If an obese person like me did that, it would end in pain, frustration and an empty fridge TM.
So one has to painfully look and skip through 20 min vids of "Non low impact low impact YouTube / ... vids" to find one that is doable without wrecking the body even further... Yaaaay. That makes one totally not feel depressed :-)
The other thing that I always hate is dieting. Note that I don't have to change much - I'm basically on a diet since years, holding weight the whole time.
The jolly fun is that I can't take off with just an diet. If you never heard that such thing is possible, a lil advice: It is possible. Nothing hurts more than being told that eating less solves all problems magically - cause it doesn't.
What I usually need is added protein, as I suffer from muscle dystrophy in my left side. (hence the low impact vids).
If you go to a grocery store, you most likely find *tons* of protein stuff.
The fun thing is that roughly 80 % of that are - like all things in a supermarket - completely bullshit.
I know one could avoid using protein powder / ... - but that makes dieting a very very very hard task, as one has to not only do a lot of planning, but cooking and eating becomes a depression palooza... It just doesn't make fun when you have to scale components for every meal or force yourself to eat e.g. 250 g of low fat curd cheese to gain the necessary proteins.
Why is supermarket stuff so shitty....
Added sugar / saccharides . When one has been dieting for long for health reasons, one finds out pretty quick that most products (especially those labeled as healthy / fat reduced / "weight loss") are perfectly made to lead to a sugar crisis and binge eating.
I've found protein drinks containing up to 25 g of sugar per drink (330 ml).
A coke has 27 g of sugar per 250 ml...
:) Now isn't that jolly...
I've found my stuff of joy not so long ago (not advertising here, but depending on flavor it has only up to 3 g (!)) of sugar per drink)...
It just annoys me and pisses me off how much money is made - in my opinion deliberately - on the suffering of other people...
Most laws by the way end up being blocked by lobbyists - most nutrient scores etc are just "wrong" or better to unspecific... Making exploitation pretty easy.
It's funny how everyone has an opinion on obese people, everybody is pointing fingers and explaining how stupidly easy it is to take off... And at the same time no one gives a damn about shit like that.
That's all folks. Feeling better now.
By the way, I'm doing fine. I lost 7 kg already, though the train wreck of body was pretty pissed the last two weeks as everything hurts.
Another reason why motivational speeches are dumb in videos: Pain isn't fun. :)1 -
My shitting streak has begun again. Fuck. Its cold where i live and in my house. Shitting liquid shit doesnt help because my asshole burns. Its not fun and not enjoyable. Im trying to hold shit inside me but it forces me to shit. And if i shit it burns. Imagine being in a cold -75° weather while your asshole is burning heat at +45°. Why is life such a constant stream of pain and suffering. I write this as i sit on the toilet and fight demons not to shit more in order to prevent pain
Why did our designer invent shitting and thought it was a good idea?
I can think of a better idea: whatever i eat gets dissolved into particles by acid that my body produces like an implosion inside a submarine and transforms into pure energy that my body absorbs and thus makes the body more powerful -- no need to shit it out because its now a bunch of fucking particles!
WHY wouldnt that be a better solution. Shitting is disgusting and makes no sense if this solution is also possible. And for an omniscient all-powerful all-knowing celestial being -- NOTHING is impossible to do.
what we perceive as "magic" is normal to an all-powerful celestial entity. Therefore any thought you can imagine, should be possible to do. Even the idea i just proposed because i proved i could imagine it so it must be possible to create such existence
And as i finish writing off this rant, my asshole burns less and everything is coming back to normal Thank God. The pain was bearly bareable. As a finishing touch of this rant imma go wipe my ass for 100th time today and continue working with nextjs on my project3