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 - "super user"
-
A super creepy webcrawler I built with a friend in Haskell. It uses social media, various reverse image searches from images and strategically picked video/gif frames, image EXIF data, user names, location data, etc to cross reference everything there is to know about someone. It builds weighted graphs in a database over time, trying to verify information through multiple pathways — although most searches are completed in seconds.
I originally built it for two reasons: Manager walks into the office for a meeting, and during the meeting I could ask him how his ski holiday with his wife and kids was, or casually mention how much I would like to learn his favorite hobby.
The other reason was porn of course.
I put further development in the freezer because it's already too creepy. I'd run it on some porn gif, and after a long search it had built a graph pointing to a residence in rural Russia with pictures of a local volleyball club.
To imagine that intelligence agencies probably have much better gathering tools is so insane to think about.53 -
My last internship (it was awesome). A programmer developed a vacation/free day request application for internal use.
Asked if I could test it for security.
The dev working on it thought that was a very good idea as he wasn't much into security and explained how the authentication process worked.
I immediately noticed a flaw just from his explanation. He said it was secure anyways (with an explanation but his way of thinking was wrong in this case). Asked if I was allowed to show him. He said he was intrigued by this so gave me a yes right away.
For the record, user levels were normal user, general admin and super admin (he was the only super admin).
Wrote a quick thingy server side (one of my own servers/domains) for testing purposes.
Then I started.
Went from normal user to super admin (his account) through a combination of XSS and Session Hijacking within 15 seconds.
Explained him where he went wrong and he wrote a patch under my guidance 😃.
That felt so fucking awesome.5 -
The way 90% of the population wears their face masks really explains a lot about their approach to using software, apps & websites as well.
I feel like giving up.
I am not a developer for the salary, or just to solve analytical puzzles. Those are motivators, but my main drive is to make the world more comfortable and enjoyable, better optimized, build ethical services which bring happiness into people's lives. I want to improve society, even if it's just a tiny bit.
But if users invest absolutely zero percent of their limited brain capacity into understanding a product that already has a super-clean design and responds with helpful validation messages...
...why the fuck bother.
I used to think of the gap between technology and tech-incompetent people as an optimization problem.
As something which could be fixed by spending a fortune on UX research. Write tests, hire QA employees, decrease tech debt, create a bold but unified & simple design.
But the technologically incompetent just get more entitled with every small thing you simplify.
It's never fucking fool-proof enough.
Why can't I upload a 220MB PDF as profile picture? Why doesn't the app install on my 9 year old Android Froyo phone? Why can't I sign up if my phone number contains a  U+FFFC? Why does this page load so slowly from my rural concrete bunker in East Ukraine? WHY DO I HAVE PNEUMONIA, HOW DID I GET INFECTED EVEN THOUGH I WAS WEARING A MOUTH MASK ON MY FOREHEAD?
This is why I ran away from Frontend, to Backend, to DBA.
If I could remove myself further from the end user, I would.
At least I still have a full glass of tawny port and a huge database which needs to be normalized & migrated.
Fuck humans, I'm going to hug a server.25 -
I dont know why..But i laughed for 5 minutes after seeing the last comment . Maybe personal experience..6
-
It’s time.
FUCK YOU FRONTEND DEVELOPERS!!!
What the FUCK is wrong with you!?
Could you please STOP creating ”innovate” user interfaces….
Just FUCKING STOP!!!!!
Web after web after web and I can see 100 different fucking date pickers. I mean. WHAT-THE-FUCK!!!
And the menus. GIVE US A FUCKING CLEAR UNDERSTANDING WHERE THE FUCK I AM.
And clicking back SHOULD FUCKING WORK YOU RETARDS!!!
YOU IMBECILS!
And remember the scrolling position. WHAT THE FUCK!? I did that shit
15 YEARS AGO
YOU FUCKERS!!!
It is just… a sad, sad place. I wish the old web was back. Super quick. Simple. Clear.
I get it. It is better now but IT IS NO EXCUSE TO JUST SKIP THE FUNDAMENTALS!!! You bastards!!!
AND WHY THE FUCK THE LARGE IMAGES!? You should have solved this by now!!! Fucking MB!? Are you serious? Did your mother not love you enough?
Oh man that felt good…35 -
I wrote a database migration to add a column to a table and populated that column upon record creation.
But the code is so freaking convoluted that it took me four days of clawing my eyes out to manage this.
BUT IT'S FINALLY DONE.
FREAKING YAY.
Why so long, you ask? Just how convoluted could this possibly be? Follow my lead ~
There's an API to create a gift. (Possibly more; I have no bloody clue.)
I needed the mobile dev contractor to tell me which APIs he uses because there are lots of unused ones, and no reasoning to their naming, nor comments telling me what they do.
This API takes the supplied gift params, cherry-picks a few bits of useful data out (by passing both hashes by reference to several methods), replaces a couple of them with lookups / class instances (more pass-by-reference nonsense). After all of this, it logs the resulting (and very different) mess, and happily declares it the original supplied params. Utterly useless for basically everything, and so very wrong.
It then uses this data to call GiftSale#create, which returns an instance of GiftSale (that's actually a Gift; more on that soon).
GiftSale inherits from Gift, and redefines three of its methods.
GiftSale#create performs a lot of validations / data massaging, some by reference, some not. It uses `super` to call Gift#create which actually maps to the constructor Gift#initialize.
Gift#initialize calls Gift#pre_init (passing the data by reference again), which does nothing and returns null. But remember: GiftSale inherits from Gift, meaning GiftSale#pre_init supersedes Gift#pre_init, so that one is called instead. GiftSale#pre_init returns a Stripe charge object upon success, or a Gift (and a log entry containing '500 Internal') upon failure. But this is irrelevant because the return value is never actually used. Pass by reference, remember? I didn't.
We're now back at Gift#initialize, Rails finally creates a Gift object using the args modified [mostly] in-place by all of the above.
Another step back and we're at GiftSale#create again. This method returns either the shiny new Gift object or an error string (???), and the API logic branches on its type. For further confusion: not all of the method's returns are explicit, and those implicit return values are nested three levels deep. (In Ruby, a method will return the last executed line's return value automatically, allowing e.g. `def add(a,b); a+b; end`)
So, to summarize: GiftSale#create jumps back and forth between Gift five times before finally creating a Gift instance, and each jump further modifies the supplied params in-place.
Also. There are no rescue/catch blocks, meaning any issue with any of the above results in a 500. (A real 500, not a fake 500 like last time. A real 500, with tragic consequences.)
If you're having trouble following the above... yep! That's why it took FOUR FREAKING DAYS! I had no tests, no documentation, no already-built way of testing the API, and no idea what data to send it. especially considering it requires data from Stripe. It also requires an active session token + user data, and I likewise had no login API tests, documentation, logging, no idea how to create a user ... fucking hell, it's a mess.)
Also, and quite confusingly:
There's a class for GiftSale, but there's no table for it.
Gift and GiftSale are completely interchangeable except for their #create methods.
So, why does GiftSale exist?
I have no bloody idea.
All it seems to do is make everything far more complicated than it needs to be.
Anyway. My total commit?
Six lines.
IN FOUR FUCKING DAYS!
AHSKJGHALSKHGLKAHDSGJKASGH.7 -
Turning 18+ is like getting super user privileges!
Once a adult no more "permission denied" errors!8 -
Background: I'm not drunk yet, BUT I'M WORKING ON IT.
okay.
I just finished a second sprint on my React app. The first was to build a merchant onboarding flow. The second was to do substantial cleanup as I learned more about react/redux, and to create a "supply order" flow -- basically purchasing marketing materials and services. I finished that in a week, and I'm pretty proud. api-guy wanted it done in a day. i laughed. he probably could have, but it would have been a copy of the code in a new repo with some lines changed.
ANYWAY. it's all done and It's super pretty and works amazingly well. It has both the onboarding flow and the ordering flow, with a nice pop-out sidebar for navigation, namespaced actions, etc. Everything is pretty clean. I even added a cart to the ordering (despite everyone telling me not to) because wtf, what if someone wants to order TWO items? dumbasses. So I made that. it's sexy.
Anyway, it's all done and shiny and fancy and wonderful and I'd *love* to share screenshots if only it didn't give away where I worked. :<
... but the point of the rant!
After the first sprint, I made a copy of the repo so I could rework it and add more functionality without touching the original. (Hey! That's what a branch is for, right? Why didn't I branch it up?
well, read on)
I knew we were going to have multiple separate flows for this app: onboard, ordering, merchant tools, admin tools, support, etc. So, I wrote its server portion (the webpack builder + http server) so it would serve the same app at whatever url the user hit, and set a cookie containing that host+url. This allows the app to serve different content (basically showing/hiding content) based on the URL and future login roles. If someone hits /order, it would hide everything but the order flow. If they're a merchant, it would show all the merchant views plus ordering, etc.
tl;dr This way I can use the same codebase for multiple sites, drastically simplifying development, branding, and what have you. This new app could obv also be a drop-in replacement for the original onboarding project because of the above.
HOWEVER. this apparently isn't good enough for api-guy. He's terrified that adding/updating future components will affect all the existing content somehow.
so.
now we have three repos for basically the same codebase. 1) onboard aka "surfboard", 2) ordering, 3) merchant tools, aka "ferrari" (the "future" app).
Except.
1) "surfboard" is a very old version of the code. 3) "ferrari" is also old, since 2) "ordering" has newer content in it now.
... and somehow this is better?
fuck if i can figure out how.
His reasoning is "well, you won't be touching surfboard or ordering for 6 months, so now you don't have to worry about it." Sure, except, you know, it'll be a pain in the ass in 6 months now when I have a crapton of code and branding to redo. ffs.
Oh. We also have three Heroku pipelines for these three repos. for the same codebase.
and now you know why i'm drinking.undefined idiocy fucking hell fuck this noise api guy i'm just gonna replace everything later this codebase is as dry as the friggin ocean7 -
I have been gone a while. Sorry. Workplace no longer allows phones on the lab and I work exclusively in the lab. Anyway here is a thing that pissed me off:
Systems Engineer (SE) 1 : 😐 So we have this file from the customer.
Me: 😑 Neat.
SE1: 😐 It passes on our system.
Me: 😑 *see prior*
Inner Me (IM): 🙄 is it taught in systems engineer school to talk one sentence at a time? It sounds exhausting.
SE1: but when we test it on your system, it fails. And we share the same algorithms.
Me: 😮 neat.
IM: 😮neat, 😥 wait what the fuck?
Me: 😎 I will totally look into that . . .
IM: 😨 . . . Thing that is absolutely not supposed to happen.
*Le me tracking down the thing and fixing it. Total work time 30 hours*
Me: 😃 So I found the problem and fixed it. All that needs to happen is for review board to approve the issue ticket.
SE1: 😀 cool. What was the problem?
Me: 😌 simple. See, if the user kicked off a rerun of the algorithm, we took your inputs, processed them, and put them in the algorithm. However, we erroneously subtracted 1 twice, where you only subtract 1 once.
SE1: 🙂 makes sense to me, since an erroneous minus 1 only effects 0.0001% of cases.
*le into review board*
Me: 😐 . . . so in conclusion this only happens in 0.0001% of cases. It has never affected a field test and if this user had followed the user training this would never have been revealed.
SE2: 🤨 So you're saying this has been in the software for how long?
Me: 😐 6 years. Literally the lifespan of this product.
SE2: 🤨 How do you know it's not fielded?
Me: 😐 It is fielded.
SE2: 🤨 how do you know that this problem hasn't been seen in the field?
Me: 😐 it hasn't been seen in 6 years?
IM: 😡 see literally all of the goddamn words I have said this entire fucking meeting!!!
SE2: 😐 I would like to see an analysis of this to see if it is getting sent to the final files.
Me: 🙄 it is if they rerun the algorithm from our product. It's a total rerun, output included. It's just never been a problem til this one super edge case that should have been thrown out anyway.
SE2: 🤨 I would still like to have SE3 run an analysis.
Me: 🙄 k.
IM: 😡 FUUUUUUUUUCK YOOOOOU
*SE3 run analysis*
SE3: 😐 getting the same results that Me is seeing.
Me: 😒 see? I do my due diligence.
SE2: 😐 Can you run that analysis on this file again that is somehow different, plus these 5 unrelated files?
SE3: 😎 sure. What's your program's account so I can bill it?
IM: 😍 did you ever knooooow that your my heeeerooooooo.
*SE3 runs analysis*
SE3: 😐 only the case that was broken is breaking.
SE2: 😐 Good.
IM: 🤬🤬🤬🤐 . . . 🤯WHY!?!?
Me: 😠 Why?
SE2: 😑 Because it confirms my thoughts. Me, I am inviting you to this algorithm meeting we have.
Me/IM: 😑/😡 what . . . the fuck?
*in algorithm meeting*
Me: 😑 *recaps all of the above* we subtract 1 one too many times from a number that spans from 10000 to -10000.
Software people/my boss/SE1/SE3: 🤔 makes sense.
SE2:🤨 I have slides that have an analysis of what Me just said. They will only take an hour to get through.
Me: 😑 that's cool but you need to give me your program's account number, because this has been fixed in our baseline for a week and at this point you're the only program that still cares. Actually I need the account to charge for the last couple times you interrupted me for some bullshit.
*we are let go.*
And this is how I spent 40+ useless hours against a program that is currently overrunning for no reason 🤣🤣🤣
Moral: never involve math guys in arithmetic situations. And if you ever feel like you're wasting your time, at least waste someone else's money.10 -
Hello everyone, this is my first time here so hi! I want to tell you all a story about my current situation.
At 18 while in the military I was able to get my first computer, it was a small hp pavilion laptop with windows 7. The system would crash constantly, even though I would only use it for googling stuff and using fb to talk to people. 5 months after I got it and continuously hated it decided to find out why and who could I blame (other than myself) for the system making me do the ctrl alt del dance all the time....
Found out that there are people called computer programmers that made software. Decided to give it a go since I had some free time most days. Started out with c++ because it was being recommended in some websites. Had many "oh deeeeer lord" moments. After not getting much traction I decided to move to Java which seemed like an easier step than C++. Had fun, but after some verbosity I decided to move into more dynamic lands. Tried JS and since at the time there was no Node and I was not very into the idea of building websites I decided to move into Python, Ruby, PHP and Perl and had a really great time using and learning all of them. I decided to get good in theoretical aspects of computer programming and since I had a knack for math I decided to get started with basic computer science concepts.
I absolutely frigging loved it. And not only that, but learning new things became an obsession, the kind that would make me go to bed at 02:40 am just to wake up at 04:00 or 06:00 because the military is like that. I really wanted to absorb as much as I could since I wanted to go to college for it and wanted to be prepared since I did not wanted to be a complete newb. Took Harvard CS50, Standford Programming 101 with Java, Rice's Python course and MIT's Python programming class. I had so much fun I don't regret it one bit.
By the time I got to college I had already made the jump to Linux and was an adept Arch user, Its not that it was superior or anything, but it really forced me to learn about Linux and working around a terminal and the internals of the system to get what I want. Now a days I settle for Fedora or Debian based systems since they are easier and time is money.
Uni was a breeze, math was fun and the programming classes seemed like glorified "Hello World" courses. I had fun, but not that much fun, most of my time was spent getting better at actual coding. I am no genius, nor my grades were super amazing(I did graduate with honors though) but I had fun, which never really happened in school before that.
While in school I took my first programming gig! It was in ASP.NET MVC, we were using C#, I got the job through a customer that I met at work, I was working in retail during the time and absolutely hated it. I remember being so excited with the gig, I got to meet other developers! Where I am from there aren't that many and most of them are very specialized, so they only get concerned with certain aspects of coding (e.g VBA developers.....) and that is until I met the lead dev. He was by far one of the biggest assholes I had ever met in my life. Absolutely nothing that I would do or say made hem not be a dick. My code was steady, but I would find bugs of incomplete stuff that he would do, whenever I would fix it he would belittle me and constantly remind me of my position as a "junior dev" in the company saying things as "if you have an issue with my code or standards tell me, but do not touch the code" which was funny considering that I would not be able to advance without those fixes. I quit not even 3 months latter because I could not stand the dick, neither 2 of the other developers since the immediately resigned after they got their own courage.
A year latter I was able to find myself another gig. I was hesitant for a moment since it was another remote position in which I had already had a crappy experience. Boy this one was bad. To be fair, this was on me since I had to get good with Lumen after only having some exposure to Laravel. Which I did mentioned repeatedly even though he did offer to train me in order to help him. Same thing, after a couple of weeks of being told how much I did not know I decided to get out.
That is 2 strikes.
So I waited a little while and took a position inside another company that was using vanilla PHP to build their services. Their system was solid though, the lead engineer remains a friend and I did learn a lot from him. I got contracted because they were looking for a Java developer. The salary was good. But when I got there they mentioned that they wanted a developer in Java...to build Android. At the time I was using Java with Spring so I though "well how hard can this be! I already use Android so the love for the system is there, lets do this!" And it was an intense, fun and really amazing experience.
-- To be continued.10 -
This is not facebook, but somehow yhis site has attracted who are virtually, mentally incapable of differentiating between their script kiddy hacker facebook group and anything that can be called a social media platform.
Sorting by recent and daring to toggle on jokes/memes is a pure shitshow of freshly created accounts who post "memes" of the same purity as their mother. And to finish it off they add that super relatable comment "hahah", "funny" and a couple of emojis. Totally makes me wonder if I end up being called comedy god for posting "peepee poopoo" on the site they "shared" it from.
Yes, shared and not stolen for the sake of that little dopamine rush when they see that 4 other people who try to escape their shitty form of reality thought you deserve to be proud for those couple of finger movements you used to put this on devrant and not to jack off.
Not even that spares you from their awful humor, because thanks to their disability to red, they think they can just smash that big red button and post their garbage in the wrong category, yet somehow they have the obligation to add an absurd amount of tags telling you that they've tried to post a joke and I honestly feel sorry for the database table who has to store so variations of "jokes/meme" for this shit.
Thr quality of these memes degrades with each time I open devrant, just like my patience for these shitposters.
I've seen a couple of people who cancled their monthly subscription for devrant, to show their discontent with these user and my urge to do the same has gotten stronger recently.
DevRant as it is right now is on it best way to stray away further from what it meant to be every day12 -
Something I probably shouldn't talk about:
One of the projects at work has a specific path you can visit. The """security""" is that nobody should know the path. But I can guaran-fucking-tee you it's not difficult to guess.
On this page, ***without a login***, you can view some user information. Well, you can view all of it, but only certain fields.
And if you perform a specific action on this page, you can get their password, plaintext.
This project is not mine. But learning all of this made me super uneasy. I had to share it.14 -
> TeamLeader1: I just discovered SQL is actually super fast! The low responsiveness I've experienced comes from our ORM!
> IHateForALiving: well of course SQL is blazingly fast. SQL has been refined by the best engineers in the world for the past 50 years, its performances are unparalleled for everything you could possibly need, unless you want to scale REALLY big. Sequelize, instead, is an Active Record ORM, so it's bound to struggle with huge amount of data, because every single row will get attached a significant amount of black magic to make sure everything syncs correctly. Why is that?
> TeamLeader1: I have a problem with this frontend component, it doesn't allow pagination. I tried downloading the whole DB to bypass that, but the ORM is slow... so I will bypass the ORM and download the whole table with a raw query. Look at that! It works like a charm, it's super duper fast!'
This mf is downloading some 35 thousand rows every time some user loads a page because he doesn't know how to paginate the fucking table with Angular, there's no way these people are real.12 -
As one of the most important unspoken rules of devRant, I have to show my devSwag 😎
Yesterday I received my stickers and today my hoodie and devDuck :D
As the Linux Lover that I am, and Arch user, I shall name my duck Archie.
I'm super excited to use my hoodie tomorrow, I don't care if the weather says that we will be at 32°C.
Thanks @dfox @trogus9 -
Me: *Runs composer install on workstation then reads manga on phone*
Terminal: DO NOT RUN COMPOSER AS ROOT/SUPER USER
Me: *glances at computer screen, sees the words run and super user. Ctrl + C. type in, sudo composer install*
5 mins later
Me: *facepalm*3 -
Root gets ignored.
I've been working on this monster ticket for a week and a half now (five days plus other tickets). It involves removing all foreign keys from mass assignment (create, update, save, ...), which breaks 1780 specs.
For those of you who don't know, this is part of how rails works. If you create a Page object, you specify the book_id of its parent Book so they're linked. (If you don't, they're orphans.) Example: `Page.create(text: params[:text], book_id: params[:book_id], ...)` or more simply: `Page.create(params)`
Obviously removing the ability to do this is problematic. The "solution" is to create the object without the book_id, save it, then set the book_id and save it again. Two roundtrips. bad.
I came up with a solution early last week that, while it doesn't resolve the security warnings, it does fix the actual security issue: whitelisting what params users are allowed to send, and validating them. (StrongParams + validation). I had a 1:1 with my boss today about this ticket, and I told him about that solution. He sort of hand-waved it away and said it wouldn't work because <lots of unrelated things>. huh.
He worked through a failed spec to see what the ticket was about, and eventually (20 minutes later) ran into the same issues Idid, and said "there's no way around this" (meaning what security wants won't actually help).
I remembered that Ruby has a `taint` state tracking, and realized I could use that to write a super elegant drop-in solution: some Rack middleware or a StrongParams monkeypatch to mark all foreign keys from user-input as tainted (so devs can validate and un-taint them), and also monkeypatch ACtiveRecord's create/save/update/etc. to raise an exception when seeing tainted data. I brought this up, and he searched for it. we discovered someone had already build this (not surprising), but also that Ruby2.7 deprecates the `taint` mechanism literally "because nobody uses it." joy. Boss also somehow thought I came up with it because I saw the other person's implementation, despite us searching for it because I brought it up? 🤨
Foregoing that, we looked up more possibilities, and he saw the whitelist+validation pattern quite a few more times, which he quickly dimissed as bad, and eventually decided that we "need to noodle on it for awhile" and come up with something else.
Shortly (seriously 3-5 minutes) after the call, he said that the StrongParams (whitelist) plus validation makes the most sense and is the approach we should use.
ffs.
I came up with that last week and he said no.
I brought it up multiple times during our call and he said it was bad or simply talked over me. He saw lots of examples in the wild and said it was bad. I came up with a better, more elegant solution, and he credited someone else. then he decided after the call that the StrongParams idea he came up with (?!) was better.
jfc i'm getting pissy again.9 -
TL;DR :
"when i die i want my group project members to lower me into my grave so they can let me down one last time"
STORY TIME
Last year in College, I had two simultaneous projects. Both were semester long projects. One was for a database class an another was for a software engineering class.
As you can guess, the focus of the projects was very different. Databases we made some desktop networked chat application with a user login system and what not in Java. SE we made an app store with an approval system and admin panels and ratings and reviews and all that jazz in Meteor.js.
The DB project we had 4 total people and one of them was someone we'll call Frank. Frank was also in my SE project group. Frank disappeared for several weeks. Not in class, didn't contact us, and at one point the professors didn't know much either. As soon as we noticed it would be an issue, we talked to the professors. Just keeping them in the loop will save you a lot of trouble down the road. I'm assuming there was some medical or family emergency because the professors were very understanding with him once he started coming back to class and they had a chance to talk.
Lesson 1: If you have that guy that doesn't show up or communicate, don't be a jerk to them and communicate with your professor. Also, don't stop trying to contact the rogue partner. Maybe they'll come around sometime.
It sucked to lose 25% of our team for a project, but Frank appreciated that we didn't totally ignore him and throw him under the bus to the point that the last day of class he came up to me and said, "hey, open your book bag and bring it next to mine." He then threw a LARGE bottle of booze in there as a thank you.
Lesson 2: Treat humans as humans. Things go wrong and understanding that will get you a lot farther with people than trying to make them feel terrible about something that may have been out of their control.
Our DB project went really well. We got an A, we demoed, it worked, it was cool. The biggest problem is I was the only person that had taken a networking class so I ended up doing a large portion of the work. I wish I had taken other people's skills into account when we were deciding on a project. Especially because the only requirement was that it needed to have a minimum of 5 tables and we had to use some SQL language (aka, we couldn't use no-SQL).
The SE project had Frank and a music major who wanted to minor in CS (and then 3 other regular CS students aside from me). This assignment was make an app store using any technology you want. But, you had to use agile sprints. So we had weekly meetings with the "customer" (the TA), who would change requirements on us to keep us on our toes and tell us what they wanted done as a priority for the next meeting. Seriously, just like real life. It was so much fun trying to stay ahead of that.
So we met up and tried to decided what to use. One kid said Java because we all had it for school. The big issue is trying to make a Java web app is a pain in the ass. Seriously, there are so many better things to use. Other teams decided to use Django because they all wanted to learn Python. I suggested why not use something with a nice package system to minimize duplicating work that had already been done and tested by someone. Kid 1 didn't like that because he said in the real world you have to make your own software and not use packages. Little did he know that I had worked in SE for a few years already and knew damn well that every good project has code from somewhere else that has already solved a problem you're facing. We went with Java the first week. It failed miserably. Nobody could get the server set up on their computers. Using VCS with it required you to keep the repo outside of the where you wrote code and copy and paste changes in there. It was just a huge flop so everyone else voted to change.
Lesson 3: Be flexible. Be open to learning new things. Don't be afraid to try something new. It'll make you a better developer in the long run.
So we ended up using Meteor. Why? We all figured we could pick up javascript super easy.Two of us already knew it. And the real time thing would make for some cool effects when an app got a approved or a comment was made. We got to work and the one kid was still pissed. I just checked the repo and the only thing he committed was fixing the spelling of on word in the readme.
We sat down one day and worked for 4 straight hours. We finished the whole project in that time. While other teams were figuring out how to layout their homepage, we had a working user system and admin page and everything. Our TA was trying to throw us for loops by asking for crazy things and we still came through. We had tests that ran along side the application as you used it. It was friggin cool.
Lesson 4: If possible, pick the right tool for the job. Not the tool you know. Everything in CS has a purpose. If you use it for its purpose, you will save days off of a project.1 -
One of the biggest reality checks you will run into when starting your first dev related job - and which they don't teach you about in school - is that a lot of the time will be spent working with other people's code, and rewriting it into "your own" is rarely an option.
You might be super into making things, but not everyone manages to maintain that same spark while taking over a 15 year old project with fundamental issues that have to be triaged "for now" because you need a hotfix on this other specific thing out in prod before lunch.
There are no gods now. They left the company years ago and nobody knows why they used the windows registry as a user repo.3 -
SORRY JUST NEED TO RANT.....
JUST GOT OFF THE PHONE/WEBCHAT WITH SHITTY HR BLOCK CUZ THEIR SHITTY PAID SOFTWARE IS BUILT WITHOUT THE USER IN MIND AND NOW EFILED MY TAXES INCORRECTLY...
THEY CANT FIX IT SINCE ITS ALREQDY SENT TO THE IRS....
I SPENT 2 HOURS TRYING TO CONTACT A HUMAN BECAUSE THEIR WEBCHAT IS SUPER HIDDEN ON THEIR SHITTILY BUILT SITE THAT HIDES IT UNTIL I HAVE TO CALL THEIR PHONE NUMBER AND THE GUY WALKS ME THROUGH SOME SPECIFIC STEPS TO GET IT TO SHOW UP!!!!!!!!!
THEN WEBCHAT GUY ASKS FOR ALL MY INFO BUT THEN CONCLUDES THAT I NEED TO CALL THE IRS MYSELF BECAUSE THEIR SHITTY SOFTWARE ALREADY SENT THE INFO.... THE WRONG INFO....
FUCK!!!!!!!!!!!!!!!!!!!!!!!!! AND I OWE THE GOVERMENT $2500..... ALL THIS JUST TO PAY PPL MONEY.... FUCKITY FUCKITY FUCK FUCK FUCK....
AND THERE GOES MY WHOLE NIGHT.....14 -
Why is it that pretty much zero package & framework maintainers understand semantic versioning?
1. If you do a complete rewrite of your package, but the resulting API is identical, you don't need to bump to the next major version. As a user, I'm thankful for your increased performance or cleaner internal code, but it doesn't really affect my update process.
2. If your package required some-framework 6.0.0, and now ALSO supports some-framework 7.0.0 but is still compatible with 6.0.0, you don't need to bump to the next major version. As a user, I can now upgrade the framework, and know that the package will keep working, but otherwise it doesn't really affect me.
3. Following your versioning along with the framework/language version is super annoying, especially if your library really doesn't need to differentiate between framework versions because it's not actually utilizing new framework functionality.
4. On the other hand, if you stop supporting a certain language, framework or shared library version, or change the public methods, exceptions, fields, etc, you MUST bump to a new major version.
Yet everyone gets this wrong.
For example, many of Laravel's underlying subpackages (for collections, filesystem, database, config, http, mail, etc) do not change their code in a breaking way, or do not even change at all between major framework versions.
Yet they follow along with the major framework version.
Now if someone makes a library "laravel-elasticsearch" which uses the support libraries and collections from laravel, they need to update their package to move along with the versions as well, and often they choose to number their library along with the framework in turn.
This means that to update the framework, you also need to update over 9000 dependencies.
FOR NO FUCKING REASON. THE ONLY CHANGE IN THOSE FUCKING DEPENDENCIES IS TO UPDATE COMPOSER.JSON TO BE COMPATIBLE WITH THE FUCKING FRAMEWORK.
Meanwhile, Laravel itself breaks repeatedly on minor/patch version updates, because breaking changes slip through their review process.
Ugh.3 -
FR rant
Warning : Do not use devRant in the lavatory, especially the shower.
So i was browsing devRant in the lavatory like a normal human being (?) and saw a post super funny, laughed so hard, and dropped the phone. Now the bottom left of my phone doesnt work.
So i was browsing devRant in the lavatory like a normal human being (?), went inside a shower without noticing that i went into the shower, turned on the faucet without noticing that i turned in the faucet, and i was attacked by fierce water with the pressure level 10 (10 is the max). Then i found out my favorite snoopy t shirt, which i wore just before coming into the lavatory, is wet. Completely. And water is dripping from my phone's charging port, but works flawlessly for 5 days.
So i was browsing devRant in the lavatory like a normal human being (?), writing this rant, and just because i feel tired, i moved a little bit and got my bottoms all wet which feels so bad...
So the final thing i would like to say is a feature request. Please check whether the user is in the shower or not. Lavatory is fine. But shower is not. You can use thr data retrieved from thw humidity sensor.
List of phones with humidity sensor : https://phonegg.com/list/...
Android sensor reference docs : https://developer.android.com/guide...9 -
Working on another online pokemon game sort of thing and I'm super proud of myself because I just got the user registration, login, auth session, and logout done. Last time I tried making one of these damn things I didn't bother using a database and I tried making a complex user auth system using JSON files and God, I regret that now.
Now only a million steps to go (Including making the game)8 -
The developer's conundrum:
Do I fix the issue before a user encounters it...
Or do I wait for a user to contact me and then quickly fix it so they think I am super helpful.6 -
Merry Christmas everyone.
I passed this day alone, in another country, away from family, friends and without anyone to hang out with.
On top of that my gf (she lives in my country) posted a video dancing with her ex.
So, enjoy your time with your family and friends, even they're not perfect they love you and care about you.
I m kinda sad right now, but I will fight this. I m gonna be alone and when the year change so i believe its time to strengthen my character.
Happy holidays boys n girls. 🙂4 -
"Graphics don't matter."
I ranted a while back about gamedev being hard to get into for me, and, today, user @DOSnotCompute posted a similar experience.
I had a couple more thoughts, so thought should post them here (FUCK! It ended up being too fucking long! sorry!)
So I was watching the making of mortal kombat 3 on yt, which was pretty amazing btw because I got to see the actors of the sprites in game which were engraved in my and thousands of others kids minds.
Anyhow, the creators of the series, John Tobias and Ed Boon, were interviewed and what not. And it hit me that while both were the designers, John was the main artist and Ed was the programmer (at least for MK1). Another game that comes to mind Super Meat Boy, and I bet hundreds of others did the same.
And it got me thinking, maybe that's my problem, I just need an artist.
And I think the reason why I never thought of that is because of this idea that graphics don't matter.
"you don't need an artist. You don't need graphics. The most important thing is the gameplay."
What a load of shit.
A lot of people believe that because they got tired of polished AAA games with automatic and predictible gameplay.
People started parrotting this knee jerk of a conclusion since then.
It's dumb. Imagine if Infiminer, one of the games Minecraft was based on, which btw looks terrible, had all the same features Minecraft had.
I would still not touch that shit with a pole.
Graphics ARE important. Games are on the VISUAL medium.
That doesn't mean you're sucking Sony's dick on every AAA release or that every game should be made with UnreUnityCocksReloadedEngine.
Some level of visual craft is required for a game ro be considered such.
(btw, I think most of you guys here get this, not trying to pander, just that I want to make it clear that I'm not accusing this community of being guilty of this)
If a game looks bad (given, bad can be subjective), if it gives the impression that it wasn't seriously made, then you kinda lower your expectations.
People get hyped on games that look good, because it means that the game could be good. Games that look unoriginal or terrible won't get played, wether they're good or not. And I think it's a reasonable reaction.
How many times did I hear things like "Look at x video game from the 90s, the graphics are terrible but it's fun as hell".
That is an absurd statement. The level of production some NES games went through is insane. We're talking millions of dollars for games that today might look primitive.
The graphics weren't shit back then, and even today you could say that they are simpler but also of excellent craftsmanship.
I'm not into creating art, I hate it in fact because you can't quantify the success of produced art.
So, duh, find an artist. Ok, how? This is the part where I have no fucking idea how.
You start spamming shit like "I need an artist" online? I dunno, something for another post I guess.
I guess the most healthy thing I could do is making demos that might look like shit just to get experience so that when I get to find an artist, I have practice already.7 -
How could I only name one favorite dev tool? There are a *lot* I could not live without anymore.
# httpie
I have to talk to external API a lot and curl is painful to use. HTTPie is super human friendly and helps bootstrapping or testing calls to unknown endpoints.
https://httpie.org/
# jq
grep|sed|awk for for json documents. So powerful, so handy. I have to google the specific syntax a lot, but when you have it working, it works like a charm.
https://stedolan.github.io/jq/
# ag-silversearcher
Finding strings in projects has never been easier. It's fast, it has meaningful defaults (no results from vendors and .git directories) and powerful options.
https://github.com/ggreer/...
# git
Lifesaver. Nough said.
And tweak your command line to show the current branch and git to have tab-completion.
# Jetbrains flavored IDE
No matter if the flavor is phpstorm, intellij, webstorm or pycharm, these IDE are really worth their money and have saved me so much time and keystrokes, it's totally awesome. It also has an amazing plugin ecosystem, I adore the symfony and vim-idea plugin.
# vim
Strong learning curve, it really pays off in the end and I still consider myself novice user.
# vimium
Chrome plugin to browse the web with vi keybindings.
https://github.com/philc/vimium
# bash completion
Enable it. Tab-increase your productivity.
# Docker / docker-compose
Even if you aren't pushing docker images to production, having a dockerfile re-creating the live server is such an ease to setup and bootstrapping the development process has been a joy in the process. Virtual machines are slow and take away lot of space. If you can, use alpine-based images as a starting point, reuse the offical one on dockerhub for common applications, and keep them simple.
# ...
I will post this now and then regret not naming all the tools I didn't mention. -
Am I the only one who's getting more and more aggrevated about how the large youtube channels misinform and make out VPN providers (I am looking at you, Nord VPN, mostly) as the messiahs of the internet? How they protect our data that would otherwise be in incredible "danger" otherwise?
I understand they need clients, and I know most of the YT channels probably do not know better, but... This is misinformation at best, and downright false advertising at the worst...
"But HTTP-only websites still exist!" - yes, but unlike the era before Lets Encrypt, they are a minority. Most of the important webpages are encrypted.
"Someone could MITM their connection and present a fake certificate!" - And have a huge, red warning about the connection being dangerous. If at that point, the user ignores it, I say its their fault.
Seriously... I don't know if Nord gives their partners a script or not... But... I am getting super sick of them. And is the main reason why I made my own VPN at home...15 -
!dev but rant
Samsung
Samsung...
Samsung!! What the fuck is wrong with you?
Some longer time ago you earned forst red red flag called knox. What the fuck you mean there is physical diode in phone that will burn out when I do whatever I want with phone? Its my phone. My. I live in europe and european law is with me. Its **MY** stuff and Im allowed to be super user so fuvk off with knox bullshit.
Okay, now, more and more phone are missing critical feature to save few cents a phone. You were last bastion. You were **that** company who was loyal to audio jacks. And why the fuck you plan to remove it? You know what? That one thing brought your phones from one of best (becouse retained audio jacks and didnt do much of notch fuckupery) to literally worst one thanks to knox.
And before anyone tells me bullshit apple tried to say "thats space saving", no its not true to point where one of their very own Iphones had internally space and traces for audio jacks. Its to save pennies on phone for profit margins and to force us to use bluetooth stuff, that I dislike. I stick to my K518 few years now and I am super happy user of it. Why y'all want to take away good stuff?
Oneplus, your turn. Why the luving fuck your big bulletpoint of marketing was "yes, we will keep loyal to audio jacks" and later down the line you shown one big fat middle finger to all users.
Goos job, guys, well fucked up.
So any good modern alternatives for my OnePlus 5 when it becomes obstole in few years? Nope. Fuck nope.
OP7 pro is awesome but no audio jacks absolutely kills off this phone in my eyes to level of not existance and inability to be considered.17 -
Most succesful project was around this time last year.
A scary club of privacy haters made a 'webapp' to advise people what to vote for in the national elections.
The tool was really bad in multiple ways. For instance, if two parties would score the same amount of points, one would, at random take second place without conveying this to the user.
Oh and it also collected all the data people entered "for scientific purposes". A very sketchy practice, a non profit, funded by the government and George Soros (I kid you not, illuminatie confirmed ;) ).
The tool had this disclaimer on the bottom, saying this webapp needs cookies to function. So that triggered me to make a copy of the tool that works better and ... offline, and without cookies. You could download a html file and turn of your wifi (for the paranoid ppl among us), use the tool, delete the file. No trace.
It was a little bit of tung and cheek project, a gimick, the original was called stemwijzer, mine was called offline stemwijzer.
It was a one day build and a day after launching I got a call of the original stemwijzer project leader. Demanding to take the thing offline for infringing copyright (yeah sort of was). I tried to explain him why I made this and why privacy for such things should be held in high regard. He basicly told me I was talking shit and did not want to discuss, I told him I don't take stuff offline because of phone calls. I told him to email me a seist and desist.
So that guy prolly had a stressful day (because of the launch of his tool), had a few glasses of wine, and wrote an email. He wrote me I was a pathtic kid and I should do more useful stuff. He wrote that anyone could program a tool like that. And he wrote me I should do him a favour not share this email with my measly amount of twitter followers. Super professional email.
So I did him that favour, I did not share it with my twitter followers, I shared it with one of the largest political blogs in the country.
My tool sort of took of after that. To stop infringing copy right I changed the name and I removed their content from the script and wrote instructions on how to copy and paste in the json content yourself and "make your own tool".
The response was great, people actually emailed me job offers and I think that the current job I have is due to the succes of said project. So be balsy, challenge giants, start riots, it will get you places.2 -
YOU WANT ME TO TEST AND DEVELOP IN MOTHERFUCKING PRODUCTION?!!!
Whaaaaaat, I'm changing shit, what if somebody goes to buy this product and I've made it super-cheap? ATM, there's two fuckin options for shipping, both different costs. the best bit? RIGHT NOW, THE USER CAN CHOOSE TO PAY LESS FOR THEIR SHIPPING.
HOLY FUCK.1 -
I thought of posting this as a comment to @12bit float' post, but then decided it better goes out as a post by itself.
https://devrant.com/rants/5291843/...
My second employer, where I am on my last week of notice currently, is building a no code/low code tool.
Since this was my first job switch, I was in a dreamy phase and was super excited about this whole space. I indeed got to learn like crazy.
Upon joining, I realised that an ideal user persona for this product was a developer. Wow! No code tool for developer. sO cOoL...
We started building it and as obvious as it could get, the initial goal was adoption because we were still at top of the funnel.
We launched an alpha release shortly followed by a beta.
Nobody used it. Tech XLT/LT kept pushing product and design team to run a feature factory so that their teams can use this tool.
The culture set by those two leaders was toxic as fuck.
Now, I decided to do some research and some more product discovery to understand why folks were not using it. Mind you, we were not allowed to do any research and were forced to build based on opinions of those two monkeys.
Turns out that the devs were really happy with their existing tools and our tool was another tool being forcefully added into their toolbox by the said XLT/LT.
Not only that, even if they decide to use our tool, out of pressure, they still cannot because the product was missing key capabilities like audit control and promotion from one environment to another.
Building those would essentially mean reinventing Github aka version control and Spinnaker aka CI/CD pipeline.
My new boss (I got 3 managers in 4 months because of high attrition across levels due to the toxic culture), thinks that tech XLT/LT are doing great and we all suck as a product and design team.
He started driving things his own way without even understanding or settling down for first 90 days.
Lol, I put in my resignation got out of that mess.
So agreeing to what our boy said here, no code tools are a complete waste, especially for a developer, and even as a non tech person, I prefer keyboard over mouse.2 -
I just experienced near death because of high blood. Super strong blood pressure. Avoid coffee, playing games, and sleeping very late at night. This is my advice as a survivor developer. I want to share this to help you. For fast deadlines or hard user stories, always negotiate reasonably with your SM or PM or PO or client.
Thank God he have me a 2nd chance at life. Take care of your health. Don't worry about deadlines. Health is more important. Always pray. I deleted all of my games especially my beloved call of duty mobile and clash of clans. I'll forget all games that I know because those contributed to my high blood pressure.
When you have a headache or head pressure or eye twitching . Stop what you are currently doing and relax, measure your blood pressure and contact your family asap. Take it seriously. My wife saved me.10 -
Carmack: "Hi, I am Carmack, your AI artist today. I create high definition 3D interactive world by listening to your verbal request or brain-computer interface."
User: "Hey Carmack, create me an ideal cyberpunk world."
Carmack: "World created. Here are the main resources used to synthesize your defintion of 'Cyberpunk'. Done. Is that what you want?"
User: "Hey Carmack, can you make it less similar to Coruscant, but more vintage, and more like Blade runner more like Africa, mixing super Mario galaxy. Also add a mansion similar to this link and the hot girl in this link. Make her ideal. Make the world ten times bigger than GTA V"
Carmack: "Alright, bro. The definition of "ideal" has been data driven by the norm on internet.
Done. Is this what you want?"
user: "Yes, test it in VR"
Carmack: "Enjoy."3 -
This might not resonate with many ranters here... but FUCK Taylor Otwell & Graham Campbell.
Like, not on a personal level. Maybe they're great to drink a beer with. But as framework devs... fuck everything about them.
Laravel seems so nice, it takes away many annoyances of developing in PHP. Collections are the array object you've always needed. The route bindings, middlewares, request validation objects, it's all sweet.
But eventually your company serves a few million customers, you run into specific performance problems or missing features on a deeper level. You open the issue tracker... and see a few hundred issues about the problems you are encountering, they already exist.
Some just have a short paragraph with a request for a feature, some complete PRs with tests in the style of the framework. All of them closed.
Reasons?
"We don't think anyone will ever need this"
"This seems complicated, you can just do <super non-DRY hacky code>"
FUCK YOU WITH YOUR TODO APP SNIPPETS AND USER-POST-ARTICLE EXAMPLES. I'M NOT BUILDING THE NEXT WORDPRESS. I'M DEALING WITH THE REALITY OF GRAPH DATABASE CLUSTERS, COMPLEX AUDITING LOGS AND A GAZILLION QUERIES PER SECOND.
Sigh... the problem with all these "simple" and "elegant" languages & frameworks is that they don't fucking scale.
Not because the language, server or framework intrinsically can't do it, but because the maintainers are stuck thinking in terms of their retarded non-realistic example apps.
I think I'll go back to my cave and write some Haskell or Rust to calm down.2 -
(long post is long)
This one is for the .net folks. After evaluating the technology top to bottom and even reimplementing several examples I commonly use for smoke testing new technology, I'm just going to call it:
Blazor is the next Silverlight.
It's just beyond the pale in terms of being architecturally flawed, and yet they're rushing it out as hard as possible to coincide with the .Net 5 rebranding silo extravaganza. We are officially entering round 3 of "sacrifice .Net on the altar of enterprise comfort." Get excited.
Since we've arrived here, I can only assume the Asp.net Ajax fiasco is far enough in the past that a new generation of devs doesn't recall its inherent catastrophic weaknesses. The architecture was this:
1. Create a component as a "WebUserControl"
2. Any time a bound DOM operation occurs from user interaction, send a payload back to the server
3. The server runs the code to process the event; it spits back more HTML
Some client-side js then dutifully updates the UI by unceremoniously stuffing the markup into an element's innerHTML property like so much sausage.
If you understand that, you've adequately understood how Blazor works. There's some optimization like signalR WebSockets for update streaming (the first and only time most blazor devs will ever use WebSockets, I even see developers claiming that they're "using SignalR, Idserver4, gRPC, etc." because the template seeds it for them. The hubris.), but that's the gist. The astute viewer will have noticed a few things here, including the disconnect between repaints, inability to blend update operations and transitions, and the potential for absolutely obliterative, connection-volatile, abusive transactional logic flying back and forth to the server. It's the bring out your dead approach to seeing how much of your IT budget is dedicated to paying for bandwidth and CPU time.
Blazor goes a step further in the server-side render scenario and sends every DOM event it binds to the server for processing. These include millisecond-scale events like scroll, which, at least according to GitHub issues, devs are quickly realizing requires debouncing, though they aren't quite sure how to accomplish that. Since this immediately becomes an issue with tickets saying things like, "scroll event crater server, Ugg need help! You said Blazorclub good. Ugg believe, Ugg wants reparations!" the team chooses a great answer to many problems for the wrong reasons:
gRPC
For those who aren't familiar, gRPC has a substantial amount of compression primarily courtesy of a rather excellent binary format developed by Google. Who needs the Quickie Mart, or indeed a sound markup delivery and view strategy when you can compress the shit out of the payload and ignore the problem. (Shhh, I hear you back there, no spoilers. What will happen when even that compression ceases to cut it, indeed). One might look at all this inductive-reasoning-as-development and ask themselves, "butwai?!" The reason is that the server-side story is just a way to buy time to flesh out the even more fundamentally broken browser-side story. To explain that, we need a little perspective.
The relationship between Microsoft and it's enterprise customers is your typical mutually abusive co-dependent relationship. Microsoft goes through phases of tacit disinterest, where it virtually ignores them. And rightly so, the enterprise customers tend to be weaksauce, mono-platform, mono-language types who come to work, collect a paycheck, and go home. They want to suckle on the teat of the vendor that enables them to get a plug and play experience for delivering their internal systems.
And that's fine. But it's also dull; it's the spouse that lets themselves go, it's the girlfriend in the distracted boyfriend meme. Those aren't the people who keep your platform relevant and competitive. For Microsoft, that crowd has always been the exploratory end of the developer community: alt.net, and more recently, the dotnet core community (StackOverflow 2020's most loved platform, for the haters). Alt.net seeded every competitive advantage the dotnet ecosystem has, and dotnet core capitalized on. Like DI? You're welcome. Are you enjoying MVC? Your gratitude is understood. Cool serializers, gRPC/protobuff, 1st class APIs, metadata-driven clients, code generation, micro ORMs, etc., etc., et al. Dear enterpriseur, you are fucking welcome.
Anyways, b2blazor. So, the front end (Blazor WebAssembly) story begins with the average enterprise FOMO. When enterprises get FOMO, they start to Karen/Kevin super hard, slinging around money, privilege, premiere support tickets, etc. until Microsoft, the distracted boyfriend, eventually turns back and says, "sorry babe, wut was that?" You know, shit like managers unironically looking at cloud reps and demanding to know if "you can handle our load!" Meanwhile, any actual engineer hides under the table facepalming and trying not to die from embarrassment.36 -
VIM! ViM! vim! Vi Improved! Emacs (Wait ignore that one). What’s this mysterious VIM? Some believe mastering this beast will provide them with untold mastery over the forces of command line editing. Others would just like to know, how you exit the bloody thing. But in essence VIM is essentially a command line text editor at heart and it’s learning curve is so high it’s a circle.
There’s a lot of posts on the inter-webs detailing how to use that cruel mistress that is VIM. But rather then focus on how to be super productive in VIM (because honestly I’ve still not got a clue). This focus on my personal journey, my numerous attempts to use VIM in my day to day work. To eventually being able to call myself a novice.
My VIM journey started in 2010 around the same time I was transiting some of my hobby projects from SVN to GIT. It was around that time, that I attempted to run “git commit” in order to commit some files into one of my repositories.
Notice I didn’t specify the “-m” flag to provide a message. So what happened next. A wild command line editor opened in order for me to specify my message, foolish me assumed this command editor was just like similar editors such as Nano. So much CTRL + C’ing CTRL + Z’ing, CTRL + X’ing and a good measure of Google, I was finally able to exit the thing. Yeah…exit it. At this moment the measure of the complexity of this thing should be kicking in already, but it’s unfair to judge it based on today’s standards of user friendly-ness. It was born in a much simpler time. Before even the mouse graced the realms of the personal computing world.
But anyhow I’ll cut to the chase, for all of you who skipped most of the post to get to this point, it’s “:q!”. That’s the keyboard command to quit…well kinda this will quit the program. But…You know what just go here: The Manual. In-fact that’s probably not going to help either, I recommend reading on :p
My curiosity was peaked. So I went off in search of a way to understand this: VIM thing. It seemed to be pretty awesome, looking at some video’s on YouTube, I could do pretty much what Sublime text could but from the terminal. Imagine ssh’ing into a server and being able to make code edits, with full autocomplete et al. That was the dream, the practice…was something different. So I decided to make the commitment and use VIM for editing one of my existing projects.
So fired the program up and watched the world burn behind me. Ahhh…why can’t I type anything, no matter what I typed nothing seemed to appear on screen. Surely I must be missing something right? Right! After firing up the old Google machine, again it would appear there is this concept known as modes. When VIm starts up it defaults to a mode called “Normal” mode, hitting keys in this mode executes commands. But “Insert” entered by hitting the “i” key allows one to insert text.
Finally I thought I think I understand how this VIM thing works, I can just use “insert” mode to insert text and the arrow keys to move around. Then when I want to execute a command, I just press “Esc” and the command such as the one for saving the file. So there I was happily editing my code using “Insert” mode and the arrow keys, but little did I know that my happiness would be short lived, the arrow keys were soon to be a thorn in my VIM journey.
Join me for part two of this rant in which we learn the untold truth about arrow keys, touch typing and vimrc created from scratch. Until next time..
:q!4 -
Last night I had a very strange dream. I should point out in advance, all of this is fictional and none of it really happened.
I was looking at an answer I posted on Stack Exchange.. for the sake of argument, let's say it was Super User. I remember the question being about volume limiting, which is actually an issue I and many other iOS 14.2/14.3 users have been facing in the last few months. Apparently it has been partially addressed in 14.4.
In the real world I fixed the issue by jailbreaking the phone and unloading the healthd service, while in the dream that was the answer I had documented on Super User. In reality I have documented it in several other places, but not there.
Fast-forward a couple of days in the dream where the answer was posted, and I was now looking at a reply. I don't remember the exact details of it, but apparently in the answer I had posted something about my network.. a screenshot from the iPhone? And the comment on it basically said something along the lines of "your answer is shit, and you probably have a very basic internet connection with default settings". I was really upset by that, as my network is actually quite advanced (on account of being a sysadmin).
Then I woke up and realized that it was all just a dream...4 -
I just found a vulnerability in my companies software.
Anyone who can edit a specific config file could implant some SQL there, which would later be executed by another (unknowing) user from within the software.
The software in question is B2B and has a server-client model, but with the client directly connecting to the database for most operations - but what you can do should be regulated by the software. With this cute little exploit I managed to drop a table from my test environment - or worse: I could manipulate data, so when you realize it it's too late to simply restore a DB backup because there might have been small changes for who knows how long. If someone was to use this maliciously the damages could be easily several million Euros for some of our customers (think about a few hundred thousand orders per day being deleted/changed).
It could also potentially be used for data exfiltration by changing protection flags, though if we're talking industry espionage they would probably find other ways and exploit the OS or DB directly, given that this attack requires specific knowledge of the software. Also we don't promise to safely store your crabby patty recipe (or other super secret secrets).
The good thing is that an attack would only possible for someone with both write access to that file and insider knowledge (though that can be gained by user of the software fairly easily with some knowledge of SQL).
Well, so much for logging off early on Friday.5 -
- a split keyboard with a touchpad in the middle that will let you control all gestures on a computer
- a set of desk/monitors that adjusts perfectly for ergo for anyone
- a vertical laptop dock that is modular so you can add extra memory/video processing power and only using your laptop as a CPU/secondary graphics card
- a set of kitchenware and plates that would be so easy to clean and would never get stained
-an insect home alarm system that tells you where the fucking insect is so it doesn't take you by surprise/you can call someone to remove it
- a clothing brand that has a buy one gift one operation mechanic, where you buy a shirt and an article is donated to a local charity
- a restaurant
- a simple, yet robust database option that walks users through creating good databases that is super user friendly
- an app that takes tattoo designs in any format, converts them, allows for editing, and then can hook up to a special printer that gives you the transfer you will use on the client22 -
I am a mechanical engineer first and my companies go to sysadmin second. So software developing isnt really my main field of expertise buuttt:
WHY IS SLOOPY SOFTWARE WRITING A VIABLE EXCUSE?
Story:
Yesterday i started to migrate some stuff from our old Win 2008 Server to the new 2016. Turns out there are some MS SQL Express Servers running. Quick check for what they are turns out that they are activly used. So far so good. For other reasons we have a new MSSQL 2017 Core Licence. So i thought, hey it would be nice to just move those 2012, 2008 and 2014 Express Servers to a real one that can use the entire machines capabilities.
After some try & error with exporting one of the softwares (where i had to elevate one the user rights to sysadmin for reasons) the entire system stopped working. I didnt deleted anything or changed anything! Well, i elevated user rights. After 2 hours of support call it turns out that the software stopped working cause i gave the database user sysadmin rights. I dont know enough about MSSQL to judge wether that is logical or not, but it sounds super illogical and i suspect sloopy software writing on the manufacturers part. One way or another, the excuse from the telephone support was "yeah, our software is a very fragile child"
Okay.
After i told all that my coworkers two of them were also "yeah, that is just how the [company] software is, you have to be careful with it"
Apparently it broke in the past for other minor stuff.
As an engineer i cannot build bridges that collapse when you use the left and the right lane at the same time. For an architect it isnt okay to build an house where the front door explodes when you open a window. It is not okay for a power tool to go out in a fireball when you accidently drill plastic with it. But for some weird reasons its socially acceptable for programs to be sloopy, buggy and only working under specific conditions. Since when is it okay for a car only to work when you know specific steps to make it run? Like, throwing your spare key in the gas tank, the kick the left wheel exactly three times and finally tapping the steering wheel 5 times left, 4 times right. What? That would be ridiculous? But that is exactly how that software works. You have to follow a specific step guide to make it work, EVERY TIME.
I. JUST. DONT. GET. IT3 -
Way back, 20 or so years ago, when I went to the university, every student got an account so that we could work with the Unix machines. Every user got the same default password, -apollo-, still remember it until today, and one day I felt a little bit evil and I tried to login to the administrator account, of course the first password I tried was the default password and it worked!!! I got super scared and told an older student about it, who was brave enough to scare the administrators a little bit by leaving a message like "you have been hacked!!!" or something similar. I was just too scared to do anything about it. All I wanted to do was see IF I could login ☺️ my few minutes of being Mr. Robot... Guess hacking was not for me 😃
-
- A girl asks on FB how to deal with a problem in her Windows computer: the system is asking her to introduce the serial key.
- I comment her the possibility of using Linux in case her use cases are simple enough (web, music, videos).
- First reactions are even enthusiastic, some people who had good experiences join the thread to express their delight with Linux.
- Then a guy arrives to tell us how irresponsible we are, telling a poor girl who does not even know how to introduce the serial key... to use Linux (a super complex system!)
- So I tell the guy that Windows is not simple at all, and that most of the times, people just rely o knowing someone else with higher expertise than them, who always end up paying the price of solving the problems caused by Windows, so the users don't really feel how painful is Windows compared to other systems.
- The girl, who was enthusiastic at first, and seems to be not very bright, to say the least, completely misunderstands my answer. She interprets that I'm insulting the poor guys that act as IT service for free, and calls me a "know-all/smartass" (those words are not even close to their Spanish counterpart on pushing down people who know stuff, we are experts on that there, we didn't loose an empire in the 17th century by respecting the wise ones).
This is, in part, why I stopped helping those dumbasses 18 years ago. I forbid myself to learn anything new about Windows (at user level) so I couldn't help these ungrateful and ignorant people who don't make any effort to learn anything by themselves.19 -
One of our customers wants our mobile app to log out the user after 15 minutes of inactivity because of SeCuRiTy…
Why? The phones protect the apps with their hardware encryption from any malicious access.
And we are not dealing with super sensitive data here like some banking app or so.
Why do some people want to have bad UX for no reason?12 -
// first rant
So this isn't really a "dev" rant but I'm a developer taking my first ever design class. It's a senior level, group based class where we design a mobile OS from the ground up, using any inspiration we like. I love it because I'm the developer and designer for all of the Android apps I've worked on so far. I get to practice my design skills and have a portfolio addition. Neat! It's a pretty easy class too.
But my group. Oh God my group.
I spent a week and a half designing the style guide and it was jam packed with anything we'd need. Typography, icons, rationales, you name it!
But noooo, they can't use it because it's not in sketch. As a Windows user, this is infuriating. So three weeks go by and all this work is done that's SUPER INCONSISTENT. Bad colors, elements off by 3px... I mean even the font sizes are just 1 or 2 off. Seriously, I wish I could just be frank with them and tell them to put in the 1% effort to make it right. It's really not that hard. I just don't want to screw up the peace in my group..2 -
So today I found a file share containing some super super sensitive information accessible to what I think was our entire user base (6,500 users) if you knew the server name and had an interest in nosing around.
I reported it to our head of IT and heard nothing after, although 5 mins after reporting I could no longer access...
I suspect the infrastructure lead is going to be a dick (because his one of them awkward non team player kind of guys) and not thank me for preventing our company from being in national news papers... but try to spin it on why am I nosing around his servers in the first place..
I actually feel 50/50 about if I should of told or not.. but on flip side, I guess the access logs of me listing the files as I flick through to confirm my suspicions would of caused s bigger headache.
Fucking useless infrastructure engineers!9 -
An alternative OS for phones able to be installed super simply without flashing or unlocking the bootloader, similar to how easy it was to jailbreak am iPhone years ago. It would also have a focus on privacy and the ability to turn off and on as much functionality as the user wants1
-
I really hate PHP frameworks.
I also often write my own frameworks but propriety. I have two decades experience doing without frameworks, writing frameworks and using frameworks.
Virtually every PHP framework I've ever used has causes more headaches than if I had simply written the code.
Let me give you an example. I want a tinyint in my database.
> Unknown column type "tinyint" requested.
Oh, doctrine doesn't support it and wont fix. Doctrine is a library that takes a perfectly good feature rich powerful enough database system and nerfs it to the capabilities of mysql 1.0.0 for portability and because the devs don't actually have the time to create a full ORM library. Sadly it's also the defacto for certain filthy disgusting frameworks whose name I shan't speak.
So I add my own type class. Annoying but what can you do.
I have to try to use it and to do so I have to register it in two places like this (pseudo)...
Types::add(Tinyint::class);
Doctrine::add(Tinyint::class);
Seems simply enough so I run it and see...
> Type tinyint already exists.
So I assume it's doing some magic loading it based on the directory and commend out the Type::add line to see.
> Type to be overwritten tinyint does not exist.
Are you fucking kidding me?
At this point I figure out it must be running twice. It's booting twice. Do I get a stack trace by default from a CLI command? Of course not because who would ever need that?
I take a quick look at parent::boot(). HttpKernel is the standard for Cli Commands?
I notice it has state, uses a protected booted property but I'm curious why it tries to boot so many times. I assume it's user error.
After some fiddling around I get a stack trace but only one boot. How is it possible?
It's not user error, the program flow of the framework is just sub par and it just calls boot all over the place.
I use the state variable and I have to do it in a weird way...
> $booted = $this->booted;parent::boot();if (!$booted) {doStuffOnceThatDependsOnParentBootage();}
A bit awkward but not life and death. I could probably just return but believe or not the parent is doing some crap if already booted. A common ugly practice but one that works is to usually call doSomething and have something only work around the state.
The thing is, doctrine does use TINYINT for bool and it gets all super confused now running commands like updates. It keeps trying to push changes when nothing changed. I'm building my own schema differential system for another project and it doesn't have these problems out of the box. It's not clever enough to handle ambiguous reverse mappings when single types are defined and it should be possible to match the right one or heck both are fine in this case. I'd expect ambiguity to be a problem with reverse engineer, not compare schema to an exact schema.
This is numpty country. Changing TINYINT UNSIGNED to TINYINT UNSIGNED. IT can't even compare two before and after strings.
There's a few other boots I could use but who cares. The internet seems to want to use that boot function. There's also init stages missing. Believe it or not there's a shutdown and reboot for the kernel. It might not be obvious but the Type::add line wants to go not in the boot method but in the top level scope along with the class definition. The top level scope is run only once.
I think people using OOP frameworks forget that there's a scope outside of the object in PHP. It's not ideal but does the trick given the functionality is confined to static only. The register command appears to have it's own check and noop or simply overwrite if the command is issued twice making things more confusing as it was working with register type before to merely alias a type to an existing type so that it could detect it from SQL when reverse engineering.
I start to wonder if I should just use columnDefinition.
It's this. Constantly on a daily basis using these pretentious stuck up frameworks and libraries.
It's not just the palava which in this case is relatively mild compared to some of the headaches that arise. It's that if you use a framework you expect basic things out of the box like oh I don't know support for the byte/char/tinyint/int8 type and a differential command that's able to compare two strings to see if they're different.
Some people might say you're using it wrong. There is such a thing as a learning curve and this one goes down, learning all the things it can't do. It's cripplesauce.12 -
Multi User, One Account, and other shit
I'm gonna rant about something as a user, and someone who makes stupid web stuff.
My bank has been updating their web banking over time and they decided that every individual on an account, should have their own login. They really want to push this on their users, I suspect specifically folks like me and my wife who share one login for the joint accounts we have at the bank together.
Why share one login, because it's the only sure fire way I know that I and my wife can see all the same shit no doubt about it.
The banks never tell you what you can see or can't with joint accounts, I doubt it is even documented on their end, but in every damn case something is hidden or different in some weird way.
Messages to the bank people? If I send it, my wife often can't. I get that for security reasons that's a thing, but it makes no sense for a joint account.
ANY difference to me breaks online banking ENTIRELY. Joint accounts are supposed to be... well one account that is the same.
Other banks we used where we had different logins for the joint account, each login actually had separate bill pay accounts per user. So if I went to bill pay and scheduled something to be paid, my wife had no idea, same if she did.
Right fucking there, banking is just broken entirely!
So no Mr. Bank, fuck you we're both logging in via the same login.
Fast forward to N00bPancakes making a thing.
So my employer has a customer (Direct Customer). Direct Customer wants a thing that makes communication with their customer (Indirect Customer) easier.
The worst thing about making something for your customer's customer is that Direct Customer always imagines that Indirect Customer is gonna be super ninja power users....
But no, that's not the case... in fact almost nobody is a power user, and absolutely nobody WANTS to be a power users.
Worse yet in my case the only reason this tool exists is because Direct Customer and Indirect Customer can't communicate well enough anyway... that should tell you something about the amount of effort Indirect Customer is willing to expend.
So with that tool, this situation constantly comes up:
Direct Customer thinks it would be great if every user from Indirect Company had some sort of custom messaging, views, and etc in of Cool Communication Tool. The reason is because that's what Direct Customer loves about Ultra Complex Primary Tool that they use ....
Then I have to fight the constant fight of:
NOBODY WANTS TO BE A POWER USER, NOBODY EVEN WANTS TO DO MUCH OF ANYTHING ON THE INTERNET THAT ISN'T SCREAMING AT OTHER PEOPLE OR POST MEMES OR WATCH SHITTY VIDEOS. THE MOMENT ANYONE AT INDIRECT COMPANY LOGS IN AND SEES ANY INFO THAT IS DIFFERENT FROM THEIR COWORKER THEY'LL SHIT THEMSELVES, FLOOD EVERYONE WITH 'OH GAWD SOME NON SPECIFIED THING IS WRONG' AND RESPOND TO EMAILS LIKE A JELLYFISH DROPPED OFF IN NEW MEXICO... AND NOTHING WILL GET DONE!!!
God damn it people.
Also side rant while I'm busy fighting the good fight to keep shit simple and etc:
People bitch about how horrible the modern web is and then bitch at web devs like we're rulers of the internet or something.... What really pisses me off about that is other devs who do that.... like bro, do you make policy at your company? You decide not to sell some info or whatever shit your company sells? Like fuck off with your 'man I miss html' because you got scared by some shitty JS error and ran back to your language of choice and just poked your head out of the the basement and got scared... and you shit on another developer about that? Fuck you.1 -
I really don't understand this particular Government Department's IT Unit. They have a system and network to maintain except:
- They don't have a DBA
- They don't have a dedicated Network Engineer or Security Staff
- Zero documentation on all of the systems that they are taking care of (its all in each assigned particular staff's brain they said)
- Unsure and untested way of restoring a backup into a system
- Server passwords are too simple and only one person was holding this whole time and its to an Administrator account. No individual user account.
- System was developed by an in-house developer who is now retired and left very little documentation on its usage but nothing on how its setup.
But, the system has been up and operational for the past 20 years and no major issues whatsoever with the users using it. I mean its a super simple system setup from the looks of it.
1 App Server connected to 1 DB Server, to serve 20-30 users. But it contains millions of records (2GB worth of data dump). I'm trying to swing to them to get me on a part time work to fix these gaps.
God save them for another 20 years.3 -
No. I’m not going to take a 20 minute user-testing job disguised as a “survey” for you - for free, LinkedIn - and all your other super rich companies. You gotta pay people to work for you.
-
For some reason I keep over engineering stuff to the point I spend 2 hours thinking the best way to do something. I'm making the backend for a project of mine and I wanted somewhat decent error handling and useful error responses. I won't go into detail here but let's say that in any other (oo) language it would be a no-brainer to do this with OOP inheritance, but Rust does OOP by composition (and there's no way to upcast traits and downcasting is hard). I ended up wasting so much time thinking of how to do something generic enough, easily extendable and that doesn't involve any boilerplate or repeated code with no success. What I didn't realize is that my API will not be public (in the sense that the API is not the service I offer), I'm the only one who needs to figure out why I got a 400 or a 403. There's no need to return a response stating exactly which field had a wrong value or exactly what resource had it's access denied to the user. I can just look at the error code, my documentation and the request I made to infer what caused the error. If that does not work I can always take a quick look at the source code of the server to see what went wrong. So In short I ended up thrashing all the refactoring I had done and stayed with my current solution for error-handling. I have found a few places that could use some improvement, but it's nothing compared to the whole revamp I was doing of the whole thing.
This is not the first time I over engineer stuff (and probably won't be the last). I think I do it in order to be future-proof. I make my code generic enough so in case any requirements change in the future I don't have to rewrite everything, but that adds no real value to my stuff since I'm always working solo, the projects aren't super big and a rewrite wouldn't take too long. In the end I just end up wasting time, sanity and keystrokes on stuff that will just slow down my development speed further down the road without generating any benefits.
Why am I like this? Oh well, I'm just glad I figured out this wasn't necessary before putting many hours of work into it. -
My first job as a '"dev"' (I really need some kind of super quotation mark for this).
I was young and too stupid too know how stupid I really was, I jobbed at a small recruiting firm and one day my boss complained about her database system and that she needed to hire a student to remake it. Suffering from the problem to be too incompetent to even recognise I'm incompetent I obviously offered my services as a python wizard I mean I could write a program that saves fibonacci numbers to a csv file, how much more could there possibly be? Fast forward two months and I proudly presented a GUI written in VB (it had an wysiwyg GUI editor) that was loosely frankensteined onto a bunch of together copy pasted python scripts running on a Windows Server. No web interface just accessible via vnc. It was slow, sluggish and soo ugly but it worked and did exactly what she wanted it to do. Sure the database was a bunch of csv files but non the less, to say it in pm, it resolved the user story. I quit shortly after because of her tendency to not pay the last bill after something was done (and tbh i deserved it) but she never removed my account from the server. So I copied my "magnus opus" from there... Let's just say whenever I look back at it I feel ashamed and yet it serves as a reminder to never be content with how good you are. -
Yet another day at my company, Im rewriting some old code for client (rewriting old, php 4 system for vindications managment) and you know the moment when you are focused and someone comes to you to absolutely ruin your focus. Fine, whatever. Oh, for fuck sake. Again dev is doing as support becouse one moron with second can't login into zimbra admin panel and add fucking mailbox. I show them exacly how they login, remind them they are admins too, slowly show them, so you click "manage" than you click that gear icon and than you click "new", fill in email address and password. As simple as 1-2-3. Okay, fuck it, time to go for a cig. I just finish up few lines and stand, grab my vape and start walking towards door. In door I find my buddy with 2 random people. He told me that they are interns and that I should show them some basics and stuff around that. Oh god, fuck my life. If anything, Im definitely very bad teacher, mainly becouse I often have problems with saying what I mean in the way that somebody actually understans and knows what I am trying to say. Whatever. Fuck it all. I grab two of our old laptops that nobody used in like a year or so, and first thing I quickly figure out, is that one day for some what the fuck reason I dont even dont bothered to remember I installed Arch on both while I dont usually use Arch. I just needed it for some specific reason. Whatever. So I guess I will need to upgrade fucking system. Our network isn't really great so that was like... hour or so. In the meantime I figured what they know about coding in general etc, and holly shit. One of them (there was boy and girl), girl, apparently never ever in her life even touched code. Well... fuck. Why am I wasting my time? Becouse there was some programme or some shit like that... Someone could tell me before so I could mentally prepare.. fuck it. whatever. So while laptops are doing their pacman thing, I sit with them and slowly start to explain based on my machine some really basic concepts. Second guy actually had some expirience, he knew how to make some really really basic logic and stuff, so he had another world of problems, becouse it was PHP and, as we all know, everyone hates PHP, and... yeah.. You can probably imagine his approach. Yes, you get user input in super global array. I really wanted to say "Now shut the fuck up and write that fucking $_POST".
hour or so passed, I was close to giving up to not let my anger rise (im not really good teacher... I mentioned it. I suck at teaching others) but luckly machines upgraded. He wanted to use visual studio code, she didnt care too much, so I installed phpstorm in trial mode. whatever. Since that's linux and they were not comfortable with that, I walked them through installing LAMP stack, and when finally it started to look like LAMP stack, I requested them to google how to install xdebug, becouse xdebug is very usefull and googling skill is your best weapon on that field. I go for cig, come back and what I see boiled me a little bit. The girl was stuck looking at github page randomly looking through xdebug source code and idk... hoping for miracle (she admited she thought there will be instructions somewhere) and the guy was in good place, xdebug has a place to paste your phpinfo() for custom instructions. But it didn't work for him, he claims that wizzard told him it cant help him.. hmm intresting, you are sure you pasted in phpinfo? yes, he is sure. Okay, show me.
Again mindblown how someone can have problems with reading.
so his phpinfo() looked like that:
```<?php
phpinfo();```
I highlighted on the page the words "output of phpinfo". He somehow didn't see it or something. He didnt know, he thought that he needs to put in phpinfo so he did. OMG.
Finally, I figured out I can workaround my intern problem, and I just briefly shown them php.net, how documentation looks, said to allways google in english, if he uses tutorial to read whole fucking thing, not just some parts of it, and left them with simple task, that took them whole day and at which they ultimately failed.
To make 3 buttons labeled "1" "2" "3" and if someone presses one of them, remember in session that they pressed it and disallow pressing other ones.
Never fucking again interns. Especially those who randomly without apparent reason almost literally just spawn in front of you and here, its your fucking problem now.
Fuck it, I have some time to get back to my stuff. Time is running so lets not waste it.
After around 15 minutes my one of my superiors comes in and asks me if I can go on meeting with him and other superior. My buddy goes with us, and next 3 hours I was basically explaining that you cannot do some things (ie. know XYZ happened without any source of information) in code, and I can't listen for callbacks from ABC becouse it wont send anyc cuz in their fucking brilliant idea ABC can't even know that this script would even exist, not to mention it wants callbacks.
Sometimes I hate my job.4 -
I work for a particular tech company doing chat based support where I troubleshoot a certain email application.
And one of the most common phrases I get is: "Hey Mister IT Guy, I am suddenly missing all of my contacts and Calendars. This super sucks! I had to rebuild my email profile to make my email work again!".
I really wish when they teach computer literacy in school they drilled "Learn How To Back Up Your Junk" more so when stuff like this happens I can get them back up and running in 10 minutes instead of telling the user they are going to have spend hours rebuilding their calendar and contacts.1 -
after exploring a lot of ui frameworks and architectures, i am trying to go back to android dev but again with the curiosity for the one single question that i had at the start of my career 5 years back : why is it's ui so complex?
can anyone help me understand it?
like comparing with the most basic ui framework : html/css/js, why android is so different? we got activities, fragments and views. the worst thing in android is lifecycles, that each of these ui components have.
The view lifecycle is simple to get over with : whatever is the lifecycle of its parent, is the lifecycle of view.
a view's parent is another view, whose parent is another view, whose parent is... and so on until we reach the root view which is stored by either a fragment or activity
therefore a view's lifecycle = lifecycle of activity or fragment
till here its very clear. the fuckup is simply in the next part:
WTAF is activity ?WTAF is fragment? why are their various functions called in the sequence they are called? oncreate, on start, onstartview, ondestroy... why?
activity is still somewhat okay, but fragment is completey weird af : it can be a part of activity: basically it can cover your complete screen and behave as an activity itself (so you don't get to say that activity === screen and fragment === view) AND IT HAS ITS OWN FUCKING LIFECYCLES! So does that mean fragment's fucntions cna also be called by OS?
what's more mind fucking, is the fact that android activity can destroy/pause or recreate fragments on its own, by some "views" like viewpager , or even hold multiple fragments as "alive" at the same time, using something called a "backstack" ??!??!
and each of these fragments in the stack can be called by system at any time? like wtf???
all these stuff is super confusing and i haven't even scratched the surface. the newer , more complicated stuff like viewmodel, livedata and again "lifecycles" has a complete seperate behavior and functionality of their own. plus the various "reality-check" scenarios like: when a user is streaming a video in picture-in-picture mode while keeping your app in split screen with maps in the second split, when a call comes and the video keeps running, and user rotates the device, let me know the clusterfuck situation for the 3rd fragment in your 5 icon navigation view currently at the payment page with 2 fragments and 1 activity in backstack!!!
god bless thy soul for this shitty framework isn't going anywhere , rather its super strong and getting more clusterfucked with new beautiful shit everyday.
(if someone can ignore my gentle language, i would really like to know/get redirected to some resources where i can learn more on this)3 -
God, playing SoulSilver has made me remember an era (or two, but I wasn't alive for one and the other was my childhood) where games were actually fucking *GOOD.* Some games can be absolute home runs now on rare occasion, but if I name consoles from these periods, you can INSTANTLY tell me at least one game that is pretty universally regarded as a best-ever.
Examples and predicted responses:
-Gamecube: Too fucking many to even count. Instant answers vary immensely, but everyone who's played games on this thing have one.
-Original Xbox: Halo 2 is the one instantly on one's lips, or maybe CE for some. Also JSRF.
-Dreamcast: SA2 or Phantasy Star or JSR or...
-PS1/2: Resident Evil, Spyro, Final Fantasy, Ratchet & Clank...
-PS3: Lara Croft games, Uncharted, Infamous... (this one's right on the border, it seems)
-NES: The fucking birthplace of modernized gaming.
-Genesis: Sonic games, obviously. Some may answer with arcade titles, too.
-SNES: Mario games. Mario Paint, SMW, SMW2, SMAS, a couple like Super Metroid or Kirby's Dreamland or F-Zero may come up too.
-N64: Banjo Kazooie, F-Zero GX, Waveracer, 1080, Zelda games...
-Gameboy (all systems:) Pokemon is the instant answer.
Now, a harder one:
-Wii U? Maybe one of the Mii game things? U-less games? Not many people remember the games for this system.
-Xbox One? Halo 5, pretty much. You probably played everything else on PC.
-PS4? The PS3 lineup, but without any soul? You played pretty much everything here on PC, too.
Is there a point to this rant? Yes. Kind of.
Games used to be great, not just due to better hardware, but due to people putting some goddamn heart and soul into making games, and due to creativity stemming from working on such limited hardware. It seems the more powerful consoles (and PCs!) get, the more gaming becomes a soulless cash grab to drain cash from wallets on subpar products with paywalls every 20 feet you have to clear to get the "full experience." Gaming has become less about letting people have fun and being creative with games and more about the bottom dollar, whether that be through making games as fast and as cheap as possible with as much paid content dumped on top as possible, or the systematic erasure of archival efforts to preserve gaming history. From what I read here on devRant, that seems to be the moral of anything computer-related as well. Computers are made to slow down and fail far faster than normal via OEM bloat and shitty OSes, and are used to constantly empty one's wallets with constant licensing fees and free trials and deliberate consumer ignorance. None of it's about having fun anymore. Fun seems to no longer have a place in computing at all.
If you take anything from any of the madman-esque loosely-structured rambling i'm saying here, make it that "the enemy of creativity is the abscense of limitations... and the presence of greed." Another message i'd like to leave you with is "start having fun when making things whenever possible, as it improves not just the dev process, but user experience, too." You can't always apply this, and sometimes you can never do so, but always keep it in mind.14 -
I was building a super simple Laravel app for a client (forms APIs stuff)
For the frontend I used jQuery cuz why overkill it with react.
Now the sad part:
The app makes ajax calls to fetch the data from the database and update the view according. The code is very well written and the call is so quick that in a blink of an eye the data is processed from the controller and sent to the view -_-
Because the user doesn't gets to see what the fuck just happened when they clicked the action button, I had to add a setTimeout function before the Ajax call to slow down the process by 2000ms and added a freakin spinner.
I feel very sad when I can't show how awesome apps I can build but,
I killed my ego for the UX.
This was my sacrifice.
Anyone faced similar shits?3 -
I have just slept for a minimum of 5 hours. It is 7:47 PM atm.
Why?
We have had a damn stressful day today.
We have had a programming test, but it really was rather an exam.
Normally, you get 30 minutes for a test and 45 minutes for an exam.
In this "test" we have had to explain what 'extends' does and name a few advantages of why one should use it.
Check.
Read 3 separate texts and write the program code on paper. It was about 1 super class and 1 sub class with a test class in Java.
Check.
Task 3: Create the UML diagram of the code from above. *internally: From above? He probably means my code since there is no other code there. *Checks time*. I have about 3 minutes left. Fuck my life.*
Draws the boxes. Put the class names in each of them. A private attribute for the super class.
Teacher: Last minute!
Draw the arrow starting starting from the sub class to the super class.
Put my name on each written paper. And mentally done for the day. Couldn't finish the last task. Task 3.
During this "test", I heard the frustrations of my classmates. Seemed like everyone was pretty much pissed.
After a short discussion with the teacher who also happens to be the physics professor of a university nearby.
[If you are reading this, I hope that something bad happens to you]
The next course was about computer systems. Remember my recent rant about DNS, dhcp, ftp, web server and samba on ubuntu?
We have had the task to do the screenshots of the consoles where you proof that you have dhcp activated on win7 machine etc. Seemed ok to me. I would have been done in 10 minutes, if I would be doing this relaxed. Now the teacher tells us to change the domain names to <surnameOfEachStudent>.edu.
I was like: That's fine.
Create a new user for the samba server. Read and write directories. Change the config.
Me: That should be easy.
Create new DNS entries in the configs.
Change the IPv6 address area to 192.168.x.100-200/24 only for the dhcp server.
Change the web server's default page. Write your own text into it.
You will have 1 hour and 30 minutes of time for it.
Dumbo -ANGRY-CLIENT-: Aye. Let us first start screenshotting the default page. Oh, it says that we should access it with the domain name. I don't have that much time. Let us be creative and fake it, legally.
Changes the title element so that it looks like it has been accessed via domain name. Deletes the url and writes the domain name without pressing Enter. Screenshot. Done. Ok, let us move to the next target.
Dhcp: Change lease time. Change IP address area. Subnet mask. Router. DNS. Broadcast. Optional domain name. Save.
Switches to win7.
ipconfig /release
ipconfig /renew
Holy shit it does not work!
After changing the configs on ubuntu for a legit 30 minutes: Maybe I should change the ip of the ubuntu virtual machine itself. *me asking my old self: why did not you do that in the first place, ass hole?!*
Same previous commands on win7 console. Does not work. Hmmm...
Where could be the problem?
Check the IP of the ubuntu server once again. Fml. Ubuntu did not save when I clicked on the save button the first time I have changed it. Click on save button 10 times to make sure it really is saved now lol.
Same old procedure on win7.
Alright. Dhcp works. Screenshot.
Checks time. 40 minutes left.
DNS:It is your turn. Checks bind9 configs. sudo nano db.reverse.edu.
sudo nano db.<mysurname>.edu.
Alright. All set. It should work now.
Ping win7 from ubuntu and vice versa. Works. Ping domain name on windows 7 vm. Does not work.
Oh, I forgot to restart the bind9 server on ubuntu.
sudo service bind stop
" " " start
Check DNS server IP on win7. It looks fine.
It still doesn't work. Fuck it. I have only 20 minutes left. Samba. Let us do this!
10 minutes in. No result. I don't remember why. I already forgot why I have done for it. It was a very stressful day.
Let us try DNS again.
Oh shit. I forgot the resolver!
sudo nano /etc/resolv.conf
The previous edits are gone. Dumb me. It says it in the comments. Why did not I care about it. Fuck it.6 minutes left. Open a yt video real quick. Changes the config file. Saves it. Restarts DNS and dhcp. Closes the terminal and opens a new one. The changes do not affect them until you reopen them. That's why.
Change to win7.
Ping works. How about nsloopup.
Does not work.
Teacher: 2 minutes left!
Fuck it.
Saves the word document with the images in it. Export as pdf. Tries to access the directories of the school samba server. Does not work. It was not my fault tho. Our school server is in general very slow. It feels like they are not maintained and left alone like this in the dust from the 90s.
Friend gets the permission to put his document on a USB and give the USB to the teacher.
Sneaky me: Hey xyz, can you give me your USB real quick?
Him: sure.
Gets bombed with "do you want to format the USB?" pop-ups 10 times. Fml. Skips in a fast way.
Transfers the pdf. Plug it out. Give it back.
After this we have had to give a presentation in politics. I am done.6 -
The tale about our famous imbecile IT guy goes on.
After 7++ emails from the CXO and 4 emails from head of dev department, the IT guy has still, not provided the access I requested for our servers.
Do note, the head of dev department has been appointed by the Board of Directors to manage the infrastructure upgrade and merge.
The way everything has been done till now, is that one person controls everything and holds the usernames/ passwords. That’s going to change. At least 3 people will know it. And a super user will be created, and password given to the board of directors in a sealed envelope
I guess someone is at risk of loosing their job...
/me looks at IT guy1 -
I’ve got a great idea for an app.
So, it’s like the apps that allow you to pay rent or pay power bills or you know... order things... manage things... all the user interface apps out there that we use... but the twist is... that we could make apps like those / that don’t fucking suck! What do you think? Just make things... that aren’t super shitty and useless and beyond frustrating.
Who’s in?
I bet it would even make you more money than doing a super fucked half-assed job.10 -
So the saga of broken fucking everything continues at work, and I'm managing it, effectively, and doing it correctly on the first go-round. It's a long process though, because the two retards who preceded me were equally inept for completely different, yet equally disruptive and destructive reasons. The first dude was just plain psychotic, probably still is. I'd post some of his code, but I don't want anyone's face to melt off like those Nazi dudes at the end of Raiders of the Lost Ark. I can handle it because I'm constantly inebriated, which is not as fun as it sounds. If you have to ask yourself if you can handle it, you probably aren't, unless you've had to Uber to/from work due to still being fucking drunk. Anyway, enough about that, and it was only like twice. The rest of the times, I was more blazed than Jerry Garcia at a weed smoking contest. Moving along.
UPS shipping labels broke two weeks ago, I fixed it, but these fucking 10xers jointly decided to not only never implement anything resembling error handling, other than EMPTY GOD DAMN "try/catch"es (empty catch, wow so efficient), and instead of using COMMENTS, which I know are a new thing, they'd wrap blocks of code in something like: if 1 = 0 {} FUCK YOU DICKFACES. As I was saying before I got emotional again, they tied the success to all kinds of unrelated, irrelevant shit. I'm literally needle/haystacking my way through the entire 200GB codebase, ALONE, trying to find all the borked things. Helpfully, my phone is ringing all the time from customer service, complaining about things that are either nothing to do with the site, or due to user stupidity, 75% of the time.
A certain department at my company relies on some pretty specific documents to do their job, and these documents are/were generated from data in the database. So until I can find and fix all of the things, I've diverted my own attention as much as possible to the rapid implementation of a report generation microservice so that no one elses work is further disrupted while I continue my cursed easter egg hunt from fucking hell.
After a little more than two days, I'm about to lauch a standalone MS to handle the reports, and it's unfortunately more complicated than I'd like, because it requires a certain library that isn't available on Winblows, so I've dockerized the application. Anyway, just after lunch, I've finished my final round of tests, and I'm about ready to begin migrating it to the server and setting up (shitty fucking shit) IIS to serve it appropriately. At this point, this particular report has been unavailable by web for about 8 days.
A little after lunch, and with no forewarning of any kind, the manager of managers runs upstairs and screams at me to "work faster" and that "this needs to be back online RIGHT NOW", but I also know that this individual is going to throw a fit if things on this pdf aren't a pixel perfect match. So I just say "that's some amazing advice, I wish I'd had the foresight to just do it better and work faster". Silence for a good five seconds, then I follow up with "please leave and let me get back to my work". At that moment from around the corner, my "supervisor" suddenly, magically even, remembers that he has had the ability to print this crucial, amazingly super fucking important document all along, despite me directly asking him a week ago, and he prints it and takes it where it needs to go. In the time that it takes him to go to that other department and return, I deploy my service.
I spent the rest of the day browsing indeed and linkedin jobs, but damn this market is kinda weird right now, yeah?2 -
Hey guys, I need to implement a scripting ability on an app but with a tiny language that we build.
But I have no idea where to start and I got pretty confused after a google search.
Any ideas? -
I recently found out Trinity Desktop Environment(TDE) Project, which is a fork of KDE 3 and is still supported. I'm absolutely amazed and super excited by this, since KDE 3 was my childhood, and I didn't like the way KDE Plazma behaves, I got to try it next time I install Linux somewhere.
I'm mainly a Windows user(because gaming), but I like to dual boot, or install linux on non main devices, just that my current PC isn't dual booted.
Maybe if I buy a new PC I'm putting Linux on it for a few month for nostalgia's sake before switching back to Windows. Maybe by that time gaming is gonna be even more available and viable on Linux. -
Okay why in the world is Console.Readline() in C# such a bitch? So I was working on this small simple chat application using C# and I had a super-freaked-out-ugly-code-vending team mate who volunteered to build the server side code. After trudging through his elaborate and highly complicated plan of working for the server, I decided to make the client accordingly and for close to an hour I had no clue why the program was sending an empty password field. A few debug messages later I realised that a line of code was getting skipped. The compiler was happily ignoring the Console.ReadLine that asked for the password from the user. I swear I felt like one of those parents in the shopping mall with their really disobedient kids.
Btw, I still haven't figured out how to fix the bloody thing.
PS: First rant post woohooo!4 -
Me teaching my SO some coding:
"Oops permission error. Run the same command but start with `sudo`."
"What does `sudo` mean?"
"Super user"
"what about the -do?"
* confused pikachu face *2 -
I made a reminder application, with different sounds for different hours, but it's super primitive, as I'd never figured out how to use android intents that we'll, and the logic was barebones. I'd like to polish it up so it's a little more user friendly and intuitive.
-
This weeks a joke right 😂, the recent day 0 Microsoft bug that allows anyone to get hacked, and allow someone to do whatever the hell they want.(as you can pretend to be any program on the computer)
Or the super user hack on Linux recently patched... Day 0....
The fact 80% of devs implement oauth incorrectly... So their user accounts are hackable...
Need I go on?1 -
I have a couple of small ones, but one that stands out is actually fairly recent.
It was an independent project, more for practice than anything, but it involved fetching daily horoscopes from an RSS feed and showing it to the user upon request. I first just made it as a command line program,using some new modules I hadn't used before, and seeing everything work smoothly and neatly printed out made me super excited.
Not too long ago I even made a proper GUI for it using Tkinter, which also works nicely. :) Nothing so far has beaten that first excitement upon finishing the command line one, though. -
I have not used a lot of technology, but among the worst experiences was working with OR mapper. I don't think OR mappers are bad by themselves, but all the tutorials and entry level documentation drag the unknowing user slowly into a world of hurt. It looks super easy and super cool, but in fact if you don't know _exactly_ what's happening in the background you're about to deal with slow performance, terrible SQL statements, missing indices, etc. It makes shooting yourself in the foot a Starbucks-like experience, everywhere, all the time, and fast.
It's one of those promises that do not deliver the easy way despite most people advertising it like this. Except when you plan to write a book'n'author application with only 5 books and 3 authors. Yeah... -
Alright, I've got a confesstion. It's a confession and a question, combined, get it?
Anyway, I've been a happy Linux user for over 20 years now, and I've used all kinds of graphical envs, from tiling wms like dwm and xmonad (I didn't care for hyprland, sorry if that's weird) to full DEs like kde, cinnamon, gnome, etc.
The "question" here is why do people hate Gnome so much? It's the one environment that I keep coming back to, especially now that my main machine is a beast, and RAM usage is nary a concern. Even then, my system is sipping RAM compared to KDE (running two docker dev environments, three browser windows with several tabs - one of which is streaming music, slack, and steam is sitting on the fourth virtual desktop, chilling), and I'm still at just over 18 GB of ram.Being able to push one single key/key combo, and type anything at all that is vaguely relevant to what you want to accomplish, and having that thing be instantly available (including searching for individual files) is super nice. Easy virtual and multi monitor switching is intuitive; little to no effort needed.
Even when I want to do other stuff, like play a game, or edit a photo, video, or some of my shitty musical-aspirational material - GNU+Linux with Gnome has been and continues to be the easiest, most neato way to get shit done.
Why the hate, gnome haters? Maybe you’re using it wrong?12 -
At what point do you say a junior dev is no longer a junior? What metrics do you use? Like scope of knowledge, impact on team / code decisions, years experience, management skills, etc.?
I feel I'm qualified as a mid level developer now despite only being a junior for a little over a year. I had tons of internships in college and was kind of placed in a role where growing fast was required.
I broke a sweat for most of that ~1 year I worked as a junior and my contributions to my project aren't insignificant
I don't say that to toot my own horn here, I really do want to ground myself in reality. But I don't know if my standards are too low or my organizations standards are too high. FWIW, other devs on my team have commented privately / informally that the junior title isn't super fitting.
I'm still pretty dependent on my boss but that's more for final say of things. He'll often have some input to my work but I'll also be involved with design discussion and take up a large chunk of work without question. On light sprints I'm knocking out 20+ taskhours of work, going closer to 30/40 when things pick up. Not uncommon to kill 10 user stories in a sprint.
I don't know, what do you guys think?8 -
I think I have configuphobia.
When you need to setup configurations for like anything, it's always super loosely coupled and can break when you even breathe on it.
Database table columns? Configured once.
Authorization management? Create a user and configure the password and username in the application.
Backups? Configure the network path to backup to.
All these things are so EASY to break!
Maybe I'm overcautious, but I really dislike it.
There are ways around it of course, like documentation and automation, but it's all so much work. And even then it's still loosely coupled.
What do you all do to keep your configs working without getting nightmares?3 -
i always get sucked into this "cute code" hell whenever i am working with a b2c codebase, and especially with kotlin code.
here's a scenario:
task : build a debounce logic for an input view where each user input is currently triggerring an api call.
my steps
1. read what debouncing is.
2. see if any code is available on the internet
=> found a code piece on the internet with some level of abstraction ( basically a simple final class that implements the input event callback and encapsulates the debounce logic)
3) copy it, run it , it wokrs
------
for any sane coder, these steps are hardly 10-30 mins and they can move on with life. but its your truly that made this task into a 6hour research only to come up at similar solution. my curiosity led me to stupid places
1) why this class is final? what if someone else wanna use it but with a different behaviour? lets try open(non final class) .
2) why even use a class? it extends an interface, lets try to wrap the logic in interface itself (kotlin supports interfaces that don't require implementation)
3) umm , the interface works but it looks ugly, with all its global overridden variables. what about we make it extension?
4) yeah the extension approach is also not very good, lets go back to open class.
5) but extend is super nice to look! lets keep the extension and open class too
6) can we optimise the implementation? why it uses an additional handler? what if we provided everything in constructor? how about builder pattern?
FUCK MY BRAIN! there are so much fucking options that i forgot that i spent 4 hours on this small thing
the simplest approach would have been tk just shove all the listeners and everything in activity and forget about it :/
senior devs on this platform, how do you stop yourself from adding every concept that you know into the smallest possible task?6 -
Need some help,
I am setting up postfix and I need it to accept all emails, from any domain (without a domain list), and forward it to a local address on the machine (It pipes into PHP, toscript@).
I have a catch-all working where it is forwarding the emails to the toscript@ mailbox dispite of the to address. But if I send an email to it that is not in the domain list it gets rejected as it's not in the domain list, Is their a known way to force Postfix to accept all domain emails without having a list of the domains in the server.
I have searched but no luck of a working solution, I have looked at the following with no working solution
Server Fault: 133190
Server Fault: 422468
Server Fault: 179419
Server Fault: 105641
Server Fault: 161321
Server Fault: 318426
Server Fault: 514643
Server Fault: 410053
Stack Overflow: 4772229
Super User: 353488
Looking at the docs I do not see anything for it but making it an open relay but I can't figure what settings to update to make it the open relay to capture all of the mail.
I know I am missing something but I can't figure out what it is!
::Rant::
I'd like to use Postfix as it seems very stable and it's not a hack job as some of the projects that I have seen. It also can communicate with all of the proper channels for SMTP and the Protocol as well as some very easy configs.2 -
App Review – Zomato 2.0
Some apps are as essential as oxygen by example of https://apps.apple.com/us/app/... . Zomato, for sure, is one of them. If you love to eat outside and you’re not living in a cave, chances are that you’ve already gone through Zomato on the web or used one of their mobile apps. If not – Zomato is the place where you can locate eating joints, scan through their menus, check for home delivery numbers and a lot more than that. If you are diabetic you keep sweets in your pocket, similarly Zomato is something every food-loving person needs to keep in their mobile phones(I agree how PR-ish that sounds but it’s true).
Zomato had recently integrated social features on its website. That was followed by the much needed overhaul of their mobile apps. They’ve also updated their iOS app recently and I decided to give it a shot. Zomato 2.0 on the iPhone is super slick to say the least. The redesign brings a lot of character to the app. The Zomato app is now much more smoother, cleaner and powerful. The added social functionality adds more value to the app.
Design and Features
The 2.0 update completely changes the entire look and feel of the app. Everything from the app’s start screen to restaurant details has been changed. The default menu lets you explore and search eating places. Now there are icons for top 25 restaurants, reviews, favorites and more. The icons have been perfectly placed and it’s very easy to spot what you’re looking for.
Everything is just right. The app is highly responsive and there’s hardly any lag. If any, it will depend on your internet connectivity. Browsing menus is still a breeze and I personally love the way you can toggle between information, menu, photos and last but not the least, the reviews. Everything placed just perfectly to help you make that ultimate make or break decision – to eat or order from here or not?
Social
Everything is getting social. Even the next door Dolly-beauty-parlor apps are getting more social now. Zomato just integrated its social features on the web recently and they’re now a part of their mobile apps. On the iPhone app you need to login to access these social features. There’s a Top Foodies leaderboard that could prove to be a crucial game mechanic for the app. Browsing users’ profiles allows you to follow users. The profile pages tie up a user’s reviews and followers. This is all pretty neat and a part of a major plan at Zomato to take over the world.
With lists, network, user reviews etc. there’s a lot more to the app. I’m hearing that there’s still a lot more to come when it comes to social features on the Zomato iPhone app. I better start following up with people and posting reviews. This just kicked Foursquare where it hurts the most. And with that I’ve lost the little amount of motivation I had to check-in to places on Foursquare1 -
I finally got around to setting up my own cloud with nextcloud on my own dedicated server.
Just setting up Nextcloud alone was not really the challenge ( I've set up at least 2 Nextcloud instances in the past ).
The actual challenge was to install /e/ OS on my mobile phone and get it to work with my Nextcloud instance.
It's not all performant, buttery-smooth or super-fast yet, but for a one-person / user-cloud, I think it should be just fine.
There's still room for improvement in terms of server-side performance, but it's working fine with the basics at least.
I need to figure / iron out some issues like social federation via ActivityPub not working, Nextcloud SMS not syncing up my SMS, Mail app crashing because I used a self-hosted Nextcloud instance, etc; but those are things I could work on slowly, in the course of time.
No, the server is not physically controlled by me, yet ( it's a dedicated box server though. Still, hosted and physically controlled by a provider ).
I intend on setting up another 'replica' on a RaspberryPi which I will then make primary, connecting to the internet via DynamicDNS.
I'll probably keep the server as a fallback / backup server just in case my home server loses connectivity.
Taking back control from Big Tech is something I intend on pursuing actively this year. I've had the idea in my head for too long that it has started to fester.
This is only a first step, of many, that needs to follow, in order for me to take control back from Big Tech.
Yes, there still is some room for improvement, but I think for now ‒
Mission Accomplished!🤘3