Do all the things like ++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatarSign Up
Get a devDuck
Rubber duck debugging has never been so cute! Get your favorite coding language devDuckBuy Now
Search - "another fail"
One year ago, I quit my job in order to "make life easier". And by that I mean work+home in the same city. I went from 40 minutes commute - to 3 minutes. I had a blast the first week.
Then I realized that it was actually a mistake. I did not like working with "that kind of systems" and "that kind of tasks". It was tedious, stupid, and I was angry every, single day because the previous ones had built a system on 10-15 year old hardware because "it is cheaper".
That continued for a year. I discovered new stupid "solutions" every week that was potentially dangerous for the company. It built up a huge pile of shit and I started to feel that my mental health was disappearing, fast.
And equipment such as servers, switches, routers, storage started to fail because of age. Despite my warnings from day 0 to the CEO who only kinda laughed it off and said "you can to solve that", but I never got the approval to actually buy the equipment that was needed. Because "the company did'nt have the money for it". Somehow, the company had the money to buy expensive cars for the CEO - I can't really figure out that equation.
So today, one VERY old UPS died at our office. It caused some powerspike that killed off some switches and a NAS.
"Whatever" I thought, I just have to find the backup of the files and get a new one.
Then I discovered, that the NAS that acted as a iSCSI target for VM's and document storage was backed up using VEEAM on another server - that was configured to backup everything to the same NAS. I just wanted to cry, because I could not take anymore shit.
So I picked up my phone, called my old employer and asked if I could start working for them again. My old boss got insanely happy and gave me a great offer which I immediately accepted.
So tomorrow, is the day that I am going to walk into my current boss and say that I will quit. My last day will be on Christmas day. And I will start my new year with a few weeks off, and then back to the job that I actually loved.
Life is to short to work with something you hate.13
You know what's the difference between
- static page written purely in HTML with inline styling
- dynamic page generated in PHP, that actually loads data from MySQL database and is correctly styled in separate CSS document
on national level exam necessary to earn a title of technician?
ONE HACKING PERCENT!
Ok, backstory. So, few days ago I got results from that exam. To be honest, it was very, very easy so I wasn't worried at all, unlike some of my classmates who just don't understand programming at all (you need at least 75% to pass). Our task was to create database, write website in PHP that shows contents of that database and use CSS to give it a look that of example web page and run it on XAMPP. I've got result of 96% and while I was wandering what I've done wrong i hear my colleague almost screaming with joy "I passed! And I haven't even touched PHP. I was soooo sure I'll fail." So I asked him what's his result and he says 95%. And then another colleague said he got 95% without PHP. So, in other words what I thought to be the main task was worth 1%. Apparently, what was more important was for the page to look identical to the example, so I guess some examiners didn't even look into the source. And don't get me wrong, I don't wish my classmates had failed. That's not why I'm ranting. But why in the name of Ada Lovelace the task said to use PHP and all that if it weren't supposed to check our knowledge of programming in PHP? Sometimes I think the people who design these tests don't even know what they're doing.10
Interviewer: (asks technical question)
Me: (answers correctly)
Interviewer: Oh thank God, most of the people we interview fail to answer that. So, on another note do you believe in rubber duck debugging?
Me: yes, ofc
Interviewer: but it's just a toy you know
[I was kinda taken aback]
Me: God is imaginary too you know
Interviewer: (he just laughed)
(So I laughed with him) 😅12
Rashly say to a web developer colleague that you'd quite like to learn to code. Feel too awkward to decline the subsequent invitation. Meet for coffee, discuss basics. Understand nothing. Go home and Google extensively. Start trying code out at home. Cry. Swear. Make a thing that does a thing. Try to make another thing. Fail. Give up. Try again. Start an online tutorial. Work through said online tutorial. Start contributing on Github. Discuss Laravel. Play with Laravel. Set out your own Laravel project. Get engaged to the colleague who said they'd teach you. Get sent a technical test. Stare at the test blankly for days on end. Have an idea. Try to implement the idea. Cry some more, swear some more. Enjoy it. Get hooked. Hate it. Enjoy it. Finish it. Stare at the screen in amazement and wonder what has gone wrong because you are getting the result you were expecting. Rinse, repeat.5
1. Find bug
2. Try 3 methods of fixing
3. All fail
4. Tell yourself you're trying for the LAST time then you'll go on to something else
5. End up trying 5 more times
6. Repeat step 4 20 times
8. Finally take a break
9. Return next day, try another method, it works instantly
--- GitHub 24-hour outage post mortem ---
As many of you will remember; Github fell over earlier this month and cracked its head on the counter top on the way down. For more or less a full 24 hours the repo-wrangling behemoth had inconsistent data being presented to users, slow response times and failing requests during common user actions such as reporting issues and questioning your career choice in code reviews.
It's been revealed in a post-mortem of the incident (link at the end of the article) that DB replication was the root cause of the chaos after a failing 100G network link was being replaced during routine maintenance. I don't pretend to be a rockstar-ninja-wizard DBA but after speaking with colleagues who went a shade whiter when the term "replication" was used - It's hard to predict where a design decision will bite back and leave you untanging the web of lies and misinformation reported by the databases for weeks if not months after everything's gone a tad sideways.
When the link was yanked out of the east coast DC undergoing maintenance - Github's "Orchestrator" software did exactly what it was meant to do; It hit the "ohshi" button and failed over to another DC that wasn't reporting any issues. The hitch in the master plan was that when connectivity came back up at the east coast DC, Orchestrator was unable to (un)fail-over back to the east coast DC due to each cluster containing data the other didn't have.
At this point it's reasonable to assume that pants were turning funny colours - Monitoring systems across the board started squealing, firing off messages to engineers demanding they rouse from the land of nod and snap back to reality, that was a bit more "on-fire" than usual. A quick call to Orchestrator's API returned a result set that only contained database servers from the west coast - none of the east coast servers had responded.
Come 11pm UTC (about 10 minutes after the initial pant re-colouring) engineers realised they were well and truly backed into a corner, the site was flipped into "Yellow" status and internal mechanisms for deployments were locked out. 5 minutes later an Incident Co-ordinator was dragged from their lair by the status change and almost immediately flipped the site into "Red" status, a move i can only hope was accompanied by all the lights going red and klaxons sounding.
Even more engineers were roused from their slumber to help with the recovery effort, By this point hair was turning grey in real time - The fail-over DB cluster had been processing user data for nearly 40 minutes, every second that passed made the inevitable untangling process exponentially more difficult. Not long after this Github made the call to pause webhooks and Github Pages builds in an attempt to prevent further data loss, causing disruption to those of us using Github as a way of kicking off our deployment processes (myself included, I had to SSH in and run a git pull myself like some kind of savage).
Glossing over several more "And then things were still broken" sections of the post mortem; Clever engineers with their heads screwed on the right way successfully executed what i can only imagine was a large, complex and risky plan to untangle the mess and restore functionality. Github was picked up off the kitchen floor and promptly placed in a comfy chair with a sweet tea to recover. The enormous backlog of webhooks and Pages builds was caught up with and everything was more or less back to normal.
It goes to show that even the best laid plan rarely survives first contact with the enemy, In this case a failing 100G network link somewhere inside an east coast data center.
Link to the post mortem: https://blog.github.com/2018-10-30-...7
fork() can fail: this is important
Ah, fork(). The way processes make more processes. Well, one of them, anyway. It seems I have another story to tell about it.
It can fail. Got that? Are you taking this seriously? You should. fork can fail. Just like malloc, it can fail. Neither of them fail often, but when they do, you can't just ignore it. You have to do something intelligent about it.
People seem to know that fork will return 0 if you're the child and some positive number if you're the parent -- that number is the child's pid. They sock this number away and then use it later.
Guess what happens when you don't test for failure? Yep, that's right, you probably treat "-1" (fork's error result) as a pid.
That's the beginning of the pain. The true pain comes later when it's time to send a signal. Maybe you want to shut down a child process.
Do you kill(pid, signal)? Maybe you do kill(pid, 9).
Do you know what happens when pid is -1? You really should. It's Important. Yes, with a capital I.
Here, I'll paste from the kill(2) man page on my Linux box.
If pid equals -1, then sig is sent to every process for which the calling process has permission to send signals, except for process 1 (init), ...
See that? Killing "pid -1" is equivalent to massacring every other process you are permitted to signal. If you're root, that's probably everything. You live and init lives, but that's it. Everything else is gone gone gone.
Do you have code which manages processes? Have you ever found a machine totally dead except for the text console getty/login (which are respawned by init, naturally) and the process manager? Did you blame the oomkiller in the kernel?
It might not be the guilty party here. Go see if you killed -1.
Unix: just enough potholes and bear traps to keep an entire valley going.
I realize I've ranted about this before, but...
First the fact that external services can throw back 500 errors or timeouts when their maintainer did a drunk deploy (but you properly handled that using caching, workers, retry handlers, etc, right? RIGHT?)...
Then the fact that they all speak a variety of languages and dialects (Oh fuck why does that endpoint return a JSON object with int keys instead of a simple array... wait the params are separated with pipe characters? And the other endpoint uses SOAP? Fuck I need to write another wrapper class around the client...)
But the worst thing: It makes developers live in this happy imaginary universe where "malicious" is not a word.
"I found this cloud service which checks our code style" — hmm ok, they seem trustworthy. Hope they don't sell our code, but whatever.
"And look at this thing, it automatically makes database backups, just have to connect to it to DigitalOcean" — uhhh wait...
"And I just built this API client which sends these forms to be OCR processed" — Fuck... stop it... there are bank accounts numbers on those forms... Where's that API even located? What company?
"We can not guarantee the safety of your personal data, use at your own risk [...] we are located in Russia".
I fucking hate these millennial devs who literally fail to get their head out of the cloud.
Somehow they think it's easier to write all these NodeJS handlers and layers around some API, which probably just calls ImageMagick + Tesseract on the other side.
If I wasn't so fucking exhausted, I'd chop of their heads... but they're like hydra, you seal one privacy breach and another is waiting to be merged, these kids just keep spewing their crap into easy packages, they keep deploying shitty heroku apps... ugh.
Managers are an interesting breed.
Yeasterday I took part in one of the most confusing meeting I havr ever had.
It was supposed to be with two managers and another coleague to discuss an undefined topic ( it was market internal discussion ). The coleague was on leave so it was just me and them. So...
I get to the meeting room on the dot, it was deserted. I proceed to sit down and open devRant :p
They finally show up, come in, sit down on the opoaite side of the table from me, discuss some bussiness items, their wifes and children and tell a couple of jokes and then they say we're done.( my presence was not really aknoledged so far apart from a hello)
Out of sheer confusion I ask: "So why was my presence actually necessary?" The answer did not fail to confuse me even more than the actual meeting: "Because your coleague also had to be here"
Just to make it clear, they wanted to assign him some stuff and that's it.
I am still confused. Interesting creatures these managers. I should disect one's brain some day to find out how it works.7
Me: Enters SQL class
Prof: We will draw ERD diagram on awwapp
Me: (In my head - I hate ERD diagrams) start drawing the first ERD diagram
Prof: That diagram is wrong
Prof: opens SQL Activities_Solution.pdf on his PC
Me: Tried to change the file name on aws to get solution file - fail
Copy SQL Activities.pdf file url (https://url/courses/6429/...). Adds 1 to 1100726 = 1100727 and downloads SQL Activities_Solution.pdf
Open PDF in one tab and awwapp on another and just draw the solution
Prof: Are you sure this diagram is corect?
Me: (In my head - I copied the solution so yes) ...
Prof: Let me check the question
Me: (In my head - seriously? you don't know the answer)
Prof: Checks the correct answer on his PC and then checks the answer on my PC
Me: (In my head - completed another boring uni class) pack up and go home8
I finally did it. I finally got rid of that client in a positive, respectful manner.
So basically, my dad has a freelance colleague. For a side project that person asked me to make him a website. My dad mentioned to said person that my sister's boyfriend does web design (he's trained to use autocad for designing the structure of furniture, nothing fancy just straight lines and upside down doors that fail after a while..
So my brother in law charged the guy 400 money for the design. I charged the guy 200 for the programming because my dad forced me to drop down my price to fit the budget because business relationship and he obviously couldn't let my sister's boyfriend not make more money than he deserves.
In the end after waiting on the design for weeks (I literally saw him do it in photoshop all in 2 layers on his laptop in half an hour) I had to rush the project because the due date was coming up. I already had most of it done but I had to redo a good part of the front-end to fit the design structure. I also had to re-do the design in photoshop to get the images and colors I needed, then cut it up into html. So realistically, my sister's boyfriend barely did anything.
Now the deal was that I'd develop the website and perform any updates/upgrades to it. I'd also host it on my webserver for a monthly fee. My sister's boyfriend was to handle any and all content related support.
At first it was all good, I only ever spoke with the guy when he needed a feature added and he paid me well for it. Overall the hit I took in initial development was paying off. As time went by, my sister's boyfriend started ignoring the guy's calls and the guy started calling me instead.
Now, he had this deal with my brother in law where he could charge his time at 35 money an hour. That's about 4 times minimum wage for not doing much.
Then I started to basically take over all support, but I was only allowed to charge 30 an hour. Pretty reasonable still and I wasn't too busy so it was all good.
As time went by I ended up getting asked to do more and more minimal changes. At some point I had done so many minimal changes I had to charge the guy about 2 hours extra that month and he went completely mental saying I can't just work for hours without telling him beforehand. We decided I had to discuss a price before any change. I charged my time on the phone with him twice after that and both times he bitched about me being expensive and once he even said he wanted to leave.
Now comes the fun part. A week ago he had an issue that was 100% support related. He tried calling my sister's boyfriend but the guy obviously didn't pick up. He called my dad about it, and my dad ended up calling my my sister's boyfriend. Now this guy is so slimy, he purposely didn't hang up the phone knowing my dad would use his cell and assume the other party would hang up because calls cost money. The guy heard my dad call my sister's boyfriend and heard him pick up immediately. He went completely mental saying how he wants both of us to always reply and call him back immediately.
This guy was always my lowest priority. He didn't really make me money and his calls and requests were annoying and unnecessary. Add to that that I specifically didn't want to handle support and was forced into it anyway, while all 'design' things (up to figuring out where and how to display a visitor counter) absolutely had to go to my sister's boyfriend..
But regardless of that, I generally replied to his emails within 10-20 minutes and rarely more than 25 hours.
My dad agreed (for us) that we now both had to reply to him within 24 hours. I was now stuck checking my voicemail every couple hours because my sister's boyfriend sucks at life.
During his rant he threatened to leave me, again. That was the point where I said fuck it.
For the past week I've been ignoring his calls. When he emails me I don't take more than 5 minutes replying. This morning I found an e-mail with 4 requests;
He wanted me to make a content-related change;
He wanted me to give him access to the site's Google analytics;
He wanted me to add a feature and write a guide on how to use it;
And fucking finally, he wanted a 'token to transfer his website'.
I promptly emailed him back saying I added his email a week ago and that he'd gotten an email from Google about it then, that I'd changed the content he wanted me to, a price for the last dev task and a token for his domain name, adding that its valid for 35 days and that his new host can contact me to receive a backup file of his website.
Sadly, I do have this on 10-minute dev job to do, but then I'm invoicing him all jobs I haven't invoiced yet and he can find another host willing to deal with his insanity.
The best part is I lose a webhosting client but I'm sure he'll still ask my sister's bitched parasitic boyfriend whenever he needs a photo resized and he'll still pay him 35 money for 2 minutes of work.
Long Story time!
Tl;dr just because he's a teacher doesnt mean he's right
So a little bit of background on me, before I started walking the path of dev I worked freelance in another branche for 3 years, when I decided it was time to go back2skool
Halfway through the year we got a new teach, only 2 years older than me and man (I'm 23) and man was be full of himself. Let's call him Mr Bob. Mr Bob started his class with the classic "I'm not your run-of-the-mill teacher" (oh yeah we've never heard the before Mr original) "and for this class we're gonna simulate a real working environment where I'm the client and you're a freelancer". Alright. Sounds decent let's do this.
Mr Bob seemed to have actually done his part pretty well and gave us stylesheets, technical details, deadline, everything seemed pretty alright. It wasn't anything special some PHP database connections, some jQuery and a bit of CSS, it didn't have to be mobile ready either, just full screen desktop.
Fast forward a couple of classes. I'm done with the assignment and go to turn it in, where it turns out Mr Bob is quite a bit of a toothless knob gobbler..
I turned in the assignment webpage and he's reviewing it for feedback, some remarks of things I could improve later he says
"oke that looks alright, now I want the top navigation bar to scroll with the page, and I want it to be reactive and mobile ready"
Me: "Sorry sir but the scope only included a static bar on the top, and it said it just had to be desktop ready, without a need for mobile support"
Him: "well I'm the client so I expect you to do this now"
Me: "well sir that is outside of the agreed upon scope, you'll have to pay extra for that to widen the scope of the project, for which I need to plan in extra hours"
Him: "if you keep having such a bad attitude I'll fail you this class"
Me:"but sir it was your idea to pretend we're a real client and freelancer, those work with scopes and paid hours, you can't just demand free extras"
Him:"What do you know about work, I've had a company for 2 years and I spent hours in the night adding features for clients"
Me:"Well maybe you should've agreed on a set scope beforehand, and not accepted extra work for free"
Him:"with such a shitty attitude you'll never make it in the business world"
Me:"Well I've been a successful freelancer for 3 years before I wanted an extra education, and I never worked for free. So I think I'll be alright. Besides if you were so successful what's the name of the company and why are you a teacher now?"
Him:"I don't accept such disrespectful speech from students, you're expelled from class"
Seem to have hit quite the sensitive nerved when I asked about his company.
To his credit he did play his role as the douche bag client that wants everything free well.
There's more to the story that happened the following class I'll post later of you like.
Got to hop off the train now and find myself some new transport because some idiot called in a bomb on Rotterdam Central station..8
The worst tech day if my life... In terms of broken things.
I went to London... For a meeting with a new client.
I missed the train being me I made sure I got the early one so I could get another if I missed it...
1st tech fail, the machine didn't print off my tickets just the receipt which is why I was late
Got to London thought I'd try uber I didn't want to be late...
25 minutes till destination ... Ok
2nd tech fail... Was 45 minutes 😔
Now I'm 10 minutes late!
So I rush out of the uber to try and get to the meeting ....
3rd tech fail 😔 I drop my laptop ... Screen was ok I got lucky .
Went to meeting it was in a coffee shop ! I was alone meeting 5 people in this charity.
This company didn't occur to them I'd need internet to show them websites 😐
4th tech fail no internet
Needless to say I didn't get the job. Sad because I would of done a good job . At least I got to chill in London. For a few hours.
They put me on a hot seat as such all asking me questions
I was 19 terrified stressed. And it's only been a year... I'm doing the same tomorrow!
I was recuited to do devops work for a client. The project started in late '14. Until mid '15 I was forced to just sit there and do nothing. And I mean nothing. The ops team needed my help but the project lead didn't allow that (endless discussions). Somewhere around the end of '15 I could start to work and quickly learned that I had to report to two leads that couldn't disagree more on what to do and how to do it. I also learned that the companies mentality is "Clean me but don't get me wet". So the ops team demands a lot but is really uncooperative with everything. So I am currently sitting between three grindstones and everything I do is worthless. Because nobody agrees with anybody and I cannot fulfill my job for which I have been hired: Make ops more efficient because they are drowning in manual work. My job is further complicated by the following facts: This company uses no standard whatsoever but their own. Thru this they have created a Rube-Goldberg-Machine. But they think their system is the greatest in the world and the only one that makes sense. Which makes automation pointless because it is not maintainable. They call it diversity and they say that it is the clear reason why automation is not for them even though they schedule meeting after meeting in which they discuss about how to automate things. But in general they do just block everything useful and sabotage my work. And behind my back they make me the reason for the fail. Every real decision is blocked anyway. Also the ops guys think they are the leetest in the world. And everything they invent is above and beyond. If you ask them why they have over 400 VLANs for example (in a company of unter a thousand employees) they stutter and stumble because they cannot explain their complicated shit. They also change their decisions like underwear. Another really "kewl" thing they just did: They hired a devops engineer and everybody loves him. During the interview he said that he has no prior experience with devops whatsoever and it will take him around six month to get started on the basics of devops. I could go on for hours here about the insanity of this company that in my opinion will cease to exist within the next 5 years, if you ask me.
Long story short I am getting out of there by the end of march and will be on sabbatical shortly after because I am burned out. And I mean burned out. Not like "Oh I am burned out". I mean really burned out, with health problems and everything. Another external guy got out here last month because of the same health conditions.5
Best part about the covid19 manufactured crisis?
Liquor stores deliver. Worst part about liquor stores delivering? Needing to use their shoddy websites.
I've been using a particular store (Total Wines) since they're cheaper than the rest and have better selection; it's quite literally a large warehouse made to look like a store.
Their website tries really hard to look professional, too, but it's just not. It took me two days to order, and not just from lack of time -- though from working 14 hour days, that's a factor.
Signing up was difficult. Your username is an email address, but you can't use comments because the server 500s, making the ajax call produce a wonderfully ambiguous error message. It also fades the page out like it's waiting on something, but that fade is on top of the error modal too. Similar error with the password field, though I don't remember how I triggered it.
Signing up also requires agreeing to subscribe to their newsletter. it's technically an opt-in, but not opting-in doesn't allow you to proceed. Same with opting-in to receiving a text notification when your order is ready for pickup -- you also opt-in to reciving SMS spam.
Another issue: After signing up, you start to navigate through the paginated product list. Every page change scrolls you to the exact middle of the next page. Not deliberatly; the UI loads first, and the browser gets as close as it can to your previous position -- which was below that as the pagination is at the bottom -- and then the products populate after. But regardless of why, there is no worse place to start because now you must scroll in both directions to view the products. If it stayed at the very bottom, it would at least mean you only need to scroll upwards to look at everything on the page. Minor, but increasingly irritating.
Also, they have like 198 pages of spirits alone because each size is unique entry. A 50ml, 350ml, 500ml, 750ml, 1000ml, and 1750ml bottle of e.g. Tito's vodka isn't one product, it's six. and they're sorted seemingly randomly. I think it's by available stock, looking back.
If you fancy a product, you can click on it for a detail page. Said detail page lists the various sizes in a dropdown, but they're not sorted correctly either, and changing sizes triggers a page reload, which leads to another problem:
if you navigate to more than a few pages within a 10 or so second window, the site accuses you of using browser automation. No captcha here, just a "click me for five seconds" button. However, it (usually) also triggers the check on every other tab you have open after its next nagivation.
That product page also randomly doesn't work. I haven't narrowed it down, but it will randomly decide to start failing, and won't stop failing for hours. It renders the page just fine, then immediately replaces it with a blank page. When it's failing, the only way to interact with the page is a perfectly-timed [esc], which can (and usually does) break all other page functionality, too. Absolutely great when you need to re-add everything from a stale copy of your signed-out cart living in another tab. More on that later. And don't forget to slow down to bypass the "browser automation" check, too!
Oh, and if you're using container tabs, make sure to open new tabs in the SAME container, as any request from the same IP without the login cookie will usually trigger that "browser automation" response, too.
The site also randomly signs you out, but allows you to continue amassing your cart. You'd think this is a good thing until you choose to sign in again... which empties your cart. It's like they don't want to make a sale at all.
The site also randomly forgets your name, replacing it with "null." My screen currently says "Hello, null". Hello, cruft!
It took me two days to order.
Mostly from lack of time, as i've been pulling 14 hour shifts lately trying to get everything done. but the sheer number of bugs certainly wasted most of what little time i had left. Now I definitely need a drink.
But maybe putting up with all of this is worthwhile because of their loyalty program? Apparently if you spend $500, you can take $5 off your next purchase! Yay! 1%! And your points expire! There are three levels; maybe it gets better. Level zero is for everyone; $0 requirement. There are also levels at $500 and $2500. That last one is seriously 5x more than the first paid level. and what does it earn you? A 'free' magazine subscription, 'free' classes (they're usually like $20-$50 iirc), and a 'free' grab bag (a $2.99 value!) twice per month. All for spending $2500. What a steal. It reminds me of Candy Crush's 3-star system where the first two stars are trivial, and the third is usually a difficult stretch goal. But here it's just thinly-veiled manipulation with no benefit.
I can tell they're employing some "smarketing" people with big ideas (read: stolen mistakes), but it's just such a fail.
The whole thing is a fail.9
Another 20 hours of my life writing LaTeX "code" so one lecturer can look at it for five seconds and tell me I've passed. Why are we even required to write these reports? It not like I'll fail my degree without it... Oh wait.9
So I'm back from vacation! It's my first day back, and I'm feeling refreshed and chipper, and motivated to get a bunch of things done quickly so I can slack off a bit later. It's a great plan.
First up: I need to finish up tiny thing from my previous ticket -- I had overlooked it in the description before. (I couldn't test this feature [push notifications] locally so I left it to QA to test while I was gone.)
It amounted to changing how we pull a due date out of the DB; some merchants use X, a couple use Y. Instead of hardcoding them, it would use a setting that admins can update on the fly.
Several methods deep, the current due date gets pulled indirectly from another class, so it's non-trivial to update; I start working through it.
But wait, if we're displaying a due date that differs from the date we're actually using internally, that's legit bad. So I investigate if I need to update the internals, too.
After awhile, I start to make lunch. I ask my boss if it's display-only (best case) and... no response. More investigating.
I start to make a late lunch. A wild sickness appears! Rush to bathroom; lose two turns.
I come back and get distracted by more investigating. I start to make an early dinner... and end up making dinner for my monster instead.
Boss responds, tells me it's just for display (yay!) and that we should use <macro resource feature> instead.
I talk to Mr. Product about which macros I should add; he doesn't respond.
I go back to making lunch-turn-dinner for myself; monster comes back and he's still hungry (as he never asks for more), so I make him dinner.
I check Slack again; Mr. Product still hasn't responded. I go back to making dinner.
Most of the way through cooking, I get a notification! Product says he's talking it through with my boss, who will update me on it. Okay fine. I finish making dinner and go eat.
No response from boss; I start looking through my next ticket.
No response from boss. I ping him and ask for an update, and he says "What are you talking about?" Apparently product never talked to bossmang =/ I ask him about the resources, and he says there's no need to create any more as the one I need already exists! Yay!
So my feature went from a large, complex refactor all the way down to a -1+2 diff. That's freaking amazing, and it only took the entire day!
I run the related specs, which take forever, then commit and push.
Push rejected; pull first! Fair, I have been gone for two weeks. I pull, and git complains about my .gitignore and some local changes. fine, whatever. Except I forgot I had my .gitignore ignored (skipped worktree). Finally figure that out, clean up my tree, and merge.
Time to run the specs again! Gems are out of date. Okay, I go run `bundle install` and ... Ruby is no longer installed? Turns out one of the changes was an upgrade to Ruby 2.5.8.
Alright, I run `rvm use ruby-2.5.8` and.... rvm: command not found. What. I inspect the errors from before and... ah! Someone's brain fell out and they installed rbenv instead of the expected rvm on my mac. Fine, time to figure it out. `rbenv which ruby`; error. `rbenv install --list`; skyscraper-long list that contains bloody everything EXCEPT 2.5.8! Literally 2.5 through 2.5.7 and then 2.6.0-dev. asjdfklasdjf
Then I remember before I left people on Slack made a big deal about upgrading Ruby, so I go looking. Dummy me forgot about the search feature for a painful ten minutes. :( Search found the upgrade instructions right away, ofc. I follow them, and... each step takes freaking forever. Meanwhile my children are having a yelling duet in the immediate background, punctuated with screams and banging toys on furniture.
Eventually (seriously like twenty-five minutes later) I make it through the list. I cd into my project directory and... I get an error message and I'm not in the project directory? what. Oh, it's a zsh thing. k, I work around that, and try to run my specs. Fail.
I need to update my gems; k. `bundle install` and... twenty minutes later... all done.
I go to run my specs and... RubyMine reports I'm using 2.5.4 instead of 2.5.8? That can't be right. `ruby --version` reports 2.5.8; `rbenv version` reports 2.5.8? Fuck it, I've fought with this long enough. Restarting fixes everything, right? So I restart. when my mac comes back to life, I try again; same issue. After fighting for another ten minutes, I find a version toggle in RubyMine's settings, and update it to 2.5.8. It indexes for five minutes. ugh.
Also! After the restart, this company-installed surveillance "security" runs and lags my computer to hell. Highest spec MacBook Pro and it takes 2-5 seconds just to switch between desktops!
I run specs again. Hey look! Missing dependency: no execjs. I can't run the specs.
Fuck. This. I'll just push and let the CI run specs for me.
I just don't care anymore. It's now 8pm and I've spent the past 11 hours on a -1+2 diff!
What a great first day back! Everything is just the way I left it.6
Story: Password hashing and UTF-8
Context: PHP 5.6, 270kloc 15+ years legacy project. ~3 years ago. tl;dr at bottom.
Password hashing & verification was done with an obsolete way of hashing passwords. I was given the task to update our password handler to from now on generate passwords with PHP's good built-in password hashing function.
It was decided that old passwords still needed to work, instead of prompting users to set a new password. The old password verification still had to function in conjunction with the new.
The previous password handler was split into multiple classes, due to (I assume) poor structuring and shoehorning in an object oriented approach. Furthermore, it abused global variables.
A new password handler had to be created.
I implemented the new password verification and creation methods (which now used PHP internal password functions), and it worked perfectly. Then to get the old password verification to work.
I removed all obsolete methods from the old handler, and was left with a hashing function which took in a password, salt, and a secret key. I copied this code into the new handler.
It failed. It returned "Password does not match" for old passwords. I was unsure what had happened here. I did all sorts of shotgun debugging. I ended up with two versions of the login page next to each other, which used the old and new code respectively. I started modifying the original code, extracting variables, logging, you name it. I ended up with exactly the same snippets of code in both password handlers, and yet it failed.
The culprit? The character encoding.
Because this project was over a decade old, the .php-file had the encoding 'windows-1252'. When I created the new password handler, my IDE set the file encoding to 'UTF-8'. Then when I copied the secret, my IDE converted the string to 'UTF-8', effectively changing the value of the secret and causing any password verifications to fail. The solution was to manually create a string using the byte values in the old secret.
It is these extreme, obscene, scenarios which makes working with legacy projects a living hell. In this scenario, it was my IDE at fault for changing the character encoding.
But my IDE is not the root problem. No, I blame it on the lack of maintenance from previous developers. Not keeping the codebase up to standard causes problems like this in the long run.
tl;dr: copied hash secret to a file with another encoding. IDE changed the byte values for those characters, causing password verification to fail. fml.2
Tl;dr younger people on here, especially passionate ones, don't worry about comparing yourself to people who appear to have tremendous laurels, those people are probably completely full of shit.
I say kids because you may be like me and more likely to underestimate your ability or more likely to be modest about your accomplishments, and you're too young to know you're doing that.
Either way. I've been doing a web development boot camp the last six months. It's been quite good with the teachers, and some of the classmates. Hell career services is now run by this woman who really actually seems like she knows what she's doing. It's pretty awesome.
That said, my teammates on the group projects have been a different story. I've primarily stuck with some of them out of loyalty and friendship. But one guy in particular has pissed me off to no end. He said he was a computer scientist going for masters. I thought I could learn from this guy. Now I wonder if he's a pathological liar.
Our first project he made one commit. Ripped straight from the homework. It was a simple api mash-up so alright. Fair enough. Next project was when he really started to piss me off.
He didn't do shit the first week and a half. No PM, no design, no programming. Nothing. Comes in two days before project is due, and me one other guy are fucking scrambling. Because of course no one else is there.
I live significantly further than my teammates mind you. We're busting ass. This fucking guy, this dumbass pick who is convinced he's a genius that will work in higher academia clobbers our whole fucking repo.
Why you ask? To put in an unrelated commit that replicated homework from the week before. Why you ask, again? Because this person is a borderline sociopath trying to appear busy in the commit logs.
We're onto the third project now. I spend days designing something original. Side note: I fucking hate design.
So I design my heart out come up with something awesome. This fuck ass, disappears. And another group member. This was the end of November, I hear from this prick last week about refactoring to ES6. But here's the kicker-fucker, our shit ALREADY WAS IN ES6!
I go in Saturday, slack a message I'll be late. I see this fucking "genius dedicated computer scientist" leaving the fucking university shadily checking to see who was watching. He saw me see him. Coward tried to shrug it off.
Here we are, end of semester. He gets the same certification as I do. The difference? I actually know what I'm taking about, I haven't paid in full to fail.
So never, ever fucking ever take what someone says on their resume or LinkedIn as truth. The better it sounds, the more full of shit they may very well be.
And as for our presentation on Saturday? I plan on handling that but letting him do all of the talking. Let's even see if he knows what the project is about :).6
Still at uni, last semester of junior year. Required to take Intro Python II course, which is still language basics + intro to OOP and a thing called "graphing". Been coding in Python for 5 years, hold job at uni coding Python, can't skip. It's whatever. My friends and I coordinated our schedules to take it together because they aren't coders and wouldn't have passed Intro Python I class without me.
Instructor is foreign, thick accent, English is a bit broken, only second semester here. It's ok. I know the instructor who helped design the class and she's good. We'll work through the speech. As long he can teach kinda decent and we have good assignments, we'll be good. I'm staying positive.
We were wrong.
Not only can he barely teach, he can't explain anything. He only knows one way to explain something and it's barely correct. Everyone is lost on day 1. The first two lectures were reviewing the 15 weeks of material from Intro I that we just finished literally a month ago. Doesn't actually finish the review by end of second class.
He gives us PowerPoints! Except he's modified them. Syllabus says that ppts are "not enough to study with. You must take notes in class and be here for every class or you will fail." Ohhhh... kaay. I understand note taking and the importance of class attendance, but setting it up to make students fail if they don't learn like you teach? *raises eye brow*
He opens PyCharm on the projector! He says "these are the notes you take. Once I type and run, I delete and not put back. If you don't have, oh well." He runs as much code as possible in the interactive prompt, once. His explanations are poor and don't make sense. We can't understand much of what he's saying because the accent and broken words is making it so much worse.
He pulls up the ppts on the projector! His copies have more slides, aka, the very thing we as a student would like to have to, you know, study well! But he goes through them quickly so ahaha so long note taking. Don't you dare have your phone out! He'll call you out if you try to take a pic of the screen. He'll walk back to your seat, stand over you in an intimidating manner, and stay there until you delete it.
Did I mention the class atmosphere? Silence. Suppressing. Almost suffocating. He's in control. He's demanding, snappy, short, rude. "OK, what about [this thing]? I give you five minutes then I call name." (Literally a minute and a half later. We timed it). "[Name]. Do you know why [thing]? Why not. I explain it. You should know." Don't dare ask for an re-explanation. Even if you're polite and genuinely confused. He'll be even more short with you. He'll be visibly annoyed. You should have already understood it. "Check your notes!"
As for assignments, he took the assignments the other (good!) instructor made and was modifying them to the point of literal technical impossibility when read literally. I had to come up with some creative solutions to solve a few of them. He didn't seem to run most of the bi-weekly submitted code, though, so most people got 100s on everything.
I had the foresight to make a GroupMe group and send the link to both sections. Overwhelmingly negative. Nobody understands at thing. They ask after class, no help. Office hours, no better. People are going to fail. I'm ok only by virtue of experience. By class demand, I'm known as Professor in the group all semester. They even call me this before and after class when he's not there. Most of the class passed because of the countless explanations I gave in 15 weeks, be it one-on-one, group, or in chat. Good thing I've been a tutorial writer and tutor.
Class continues, never gets better. To shorten this already long story, 75% of the class ends with a C after a curve administration forced him to apply. Other instructors were informed of the issues and got involved for our saked. Someone began filing a formal complaint (unknown if finished). It was really, really bad. We had people graduating that semester who were in danger of graduating. And it wasn't the class' fault. Literally every person was doing their absolute best. They passed Intro I with an A or B and same for all their other courses (which were much harder than this class) but were failing this one class.
He may or may not have been fired, currently unsure. Dept is already understaffed, overworked, and been jilted of funds and resources (another rant!). We lost a (good!) instructor a few weeks ago. We 're adding new classes and programs and still trying to work out classes involving the "new" campus. Some people dropped the class and will retake. They may just get him again.
And yes, all of this 100% happened. There is no exaggerating or making this class up.
There's many more rants and stories from this class. Take your pick and I'll write it next.
* Exam 1
* Post Exam 1 review
* Exam 1 results fallout
* Pop quizzes
* Final exam
Android really gets on my goat. They are moving things so far that they are actually doing more damage than good.
Upgrade my build tools to v25? sure! Now all my BLE code is borked, thanks for nothing.
Go to the documentation? Lol, that's deprecated fool!
At least now it can all fail to function in Kotlin, a wrapper for Java 6. Instead of keeping your tools up to date you just create another layer of obfuscation. Well done, so proud.3
Oh fucking Huawei.
- Honor 6x (BLN-L22C675)
- Has EMUI4.1 Marshmallow
- Cousin brother 'A' (has bricking XP!)
- Uncle 'K'
- Has Mac with Windows VM
- Stock as LineageOS / AOSP
Procedure (fucking seriously):
- Find XDA link to root H6X
- Go to Huawei page and fill out form
- Receive and use bootloader code
- Find latest TWRP
- Flash latest TWRP
- TWRP not working? Bootloops
- XDA search "H6X boot to recovery"
- Find and try modded TWRP
- TWRP fails, no bootloop
- Find & flash TWRP 3.1.0
- Yay! TWRP works
- Find and download LineageOS and SuperSU
- Flash via TWRP
- Yay! Success.
- Attempt boot
- Boot fails. No idea why
- Go back to TWRP
- TWRP gives shitload of errors
"cannot mount /data, storage etc."
- Feel fucked up
- Notice that userdata partition exists,
but FSTAB doesn't take
- Remembers SuperSU modded boot
image and FSTABS!
- Fuck SuperSU
- Attempt to mod boot image
- Doesn't work (modded successfully
but no change)
- Discover Huawei DLOAD
Installer for "UPDATE.APP" OTAs
Note: Each full OTA is 2+ GB zipped
- Find, download, fail on 4+ OTAs
- Discover "UPDATE.APP Extractor"
Runs on Windows
Note: UPDATE.APP custom format
Different per H6X model
- Uses 'K''s VM to test
- My H6X model does not have
a predefined format
- Process to get format requires
TWRP, which is not working
- FAIL HERE
- Discover "Firmware Finder"
Windows app to find Huawei
- Tries 'K''s VM
- Fails with 1 OTA
- Downloads another firmware ZIP
- Unzips and tries to use OTA
- Boots successfully?!
- Seems to have EMUI 5.0 Nougat
- Downloads, flashes TWRP
- TWRP not working AGAIN?
- Go back to XDA page
- Find that TWRP on EMUI 5 - NO
- Find rollbacks for EMUI5 -> EMUI4
- Test, fail 2-4 times (Massive OTAs)
- DLOAD accepts this one?!!!
- I HAVE ORIG AGAIN!!!
- Re-unlock and reflash TWRP
- Realise that ROMs aren't working on
EMUI 4.1; Find TWRPs for EMUI5
- Find and fail with 2-3 OTAs
Note: Had removed old OTAs for
space on Chromebook (32GB)
- In anger, flash one with TWRP
instead of DLOAD (which checks
- Works! Same wasn't working with
- Find and flash a custom TWRP
as old one still exists (not wiped in
- Try flashing LineageOS
- LineageOS stuck in boot
- Try flashing AOSP
- Try flashing Resurruction Remix
- Realise that need stock EMUI5
- Realise that the firmware I installed
wasn't for my device so not working
- FUCK NO MORE LARGE DLs
- Try another custom TWRP
- Begin getting '/cust mounting' errs
- Try reflashing EMUI5 with TWRP
- Doesn't work
- Try DLOADing EMUI5
- Like before, incompatability
- DLOAD EMUI4
- Reunlock and reflash TWRP
- WRITE THIS AS A BREAK
A discussion about writing tests for frontend applications.
Context: my frontend coworkers don't write tests, at all. Yeah, really. Our testing process is very manual. We test manually when developing. We test manually when reviewing code. After merging, the application is deployed to a staging server and the design team does a QA Sprint. Lots of manual testing and some bugs still crawl by.
So I decided to start pushing my coworkers to start writing tests. One of the reasons I constantly hear them say to not write tests in the frontend is: "It's not worth the time, because design keeps changing, which means we have to take time to fix the tests. Time that we usually don't have."
I've been thinking about this a lot and it seems to me that this is more related to bad tests than to tests in general.
Tests should not break with design changes (small changes at least). They should test funcionality, not how things look. A form should not break if the submit button's style changes, so why should its tests fail? I also think that tests help save time, as they prevent some back and forth because of bugs.
Writing good tests is the hard part. Tests that cover what's really important and aren't frail and break with things that shouldn't break them. What (and how) should we test? And what shouldn't be tested?
Writing them fast is another hard thing. Are you doing it right if they take more time to write than the actual code?
What do you think about this? Do you write tests for your frontend applications? What do you test? How much time do you spend writing tests? What are your testing tools/frameworks?6
The worst thing I've seen another developer do is not give constructive criticism where needed, as well was fail to accept constructive criticism when offered.1
"200 Internal Server Error"
Yep, I did that. Because the lousy crapheads I work with were too lazy to handle any other HTTP status so anything else breaks the whole thing. And it's a pain to roll out another release of their part of the backend so "this isn't a priority". Also, they don't feel the need to check the JSON body of the response for the "status":"ok"/"fail" because what could ever go wrong, right? I effectively have no way of conveying to them that there was an error on this end of the API so they show success toast on the frontend irrespective of what really happened.6
This is getting annoying.
For the past >half a year I've been chasing windmills. This is what my BAU day looks like:
- We login to client's network
- We start running some Sanity tests before the actual runs (actual runs are hell of an expensive (financially and time-wise) thing to launch) to make sure environment is OK.
- Sanity tests fail. wtf? Nothing's been changed since y-day!
- Spend ~3-4 hours digging logs, code, more logs,... Apparently some genius decided to change a single parameter.
- Spend another 1-2 hours trying to work around that parameter (since apparently that genius did have a task to do that, so we'll most likely have to find a way to live with it)
- Restart the whole env (~30min).
- Launch a Smoke, Sanity tests to verify env state.
- Launch the actual test
- Go home.
- We login to client's network
- We start running some Sanity tests before the actual runs to make sure environment is OK.
- Sanity tests pass.
- Run the actual test
- Concurrency on RDS database is sky-rocketing! WTF did that come from??? Nothing's been changed since y-day!!
- Spend ~1-2 hours looking for anything changed, dig some logs for anything unusual. Nothing.
- Escalate to DBA. 2 hours later DBA says "fix the app". thanks for nothing mate....
- Spend remaining 2 hours analysing AWR. Give up, restart the whole RDS instance. Another hour wasted.
- Time to go home. Out of curiosity run Sanity test -- all good. Run the actual test -- all good. wtf??
- Go home
- We login to client's network
- We start running some Sanity tests before the actual runs to make sure environment is OK.
- Sanity tests fail. wtf? Nothing's been changed since y-day!
- Spend ~3-4 hours digging logs, code, more logs,... Apparently some genius decided to change a single parameter.
- Spend another 1-2 hours trying to work around that parameter
- ..... I think you know where this is going.
And this keeps going on and on, day by day. Spending the better half of the day chasing windmills and doing our actual work on the last hour of the working day or even after that.
We have plenty of interesting tasks in our Jira but we're squirels spinning in the wheel and never being able to touch them.
It feels like I'm wasting my time. I could do so much more with my time!
[just needed to vent ]1
There is a company providing a very speciffic service. And it has a core application for that svc, supported by a core app team.
That company also has other services, which are derivations of the core one. So every svc depends on core.
Now that we're clear on that... I was working in a team of one of the subservices. We very strongly depended on core. In fact, our svc was useless if integration w/ core broke down.
The core team had an annoying habbit. They refused to version their webservices and they LOVED to push api updates w/o any warnings. Our prod, test, other envs used to fail bcz of core api changes quite often. Mgmt, IT head was aware of the problem and customers' complaints as well.
So as a result, once core api changes we're all in a panic mode: all prior priorities are lowered and revival of prod is to be our main focus. Core api is not docummented, the changes are not clear, so we have to reverse engineer the shit out of it. We manage to patch our prod up w/ hotfixes, but now we have tech debt. While working on the debt, core api changed again, in test env. Mgmt pushes debt back and reallocates us to hotfix test. Hotfix is 80% done when another core api breaks. Now mgmt asks us to drop wtv we're working on and fix that new break. By the time we're to deploy the hotfix, another api breaks in another env. The mgmt..... You get the picture :)
2 years go by, nothing has changed so far.6
I work for a bank and every production release date it's a chaos... Like, for real, devs running to get their stories approved by the testing team and last minute scope changes that, if not made, would make the whole app fail (real shitty management as you can see).
Longstoryshort, a dev didn't finished one of his stories and create 7 major bugs with another... Today that was my breakfast, took me 4 hours and get it all done and approved... We didn't make the release tho, but I scored some major points with this.
Funny thing, tomorrow I'm telling my PM I'll leave the company for a better job, so that will be their breakfast.6
I provide hosting for my clients. About 3 months ago I discovered that the hosting company that I'd been using had been swallowed up by EIG, which explained why the tech support had gone downhill.
So, I jumped to another hosting company. Same shit different company!
Apparently the fact that my browsers sit at "connecting" for up to 30 seconds, and I get a "could not connect to" message half the time while I'm trying to fucking work on a deadline is the fault of some plug-in in a WordPress installation!
Oh yeah? Why then does this shit happen when I'm working on a pure html/css site?
Why then did it start happening after they "updated" my shared server?!
Oh, but the bastards suggest that I buy Cloudflare or pay for more space!
You fuckers made my work take 3 times as long, and you made an important migration fail!
Network places make mistakes. We all do. That's cool. Fucking own up to it, talk to me like a techie, and DON'T TRY TO BLAME IT ON ME OR MY TOOLS!
Fuck you! I think I'm gonna give Google Cloud a try, and do this shit myself!7
Boss: "do you have a minute?"
Boss: "I have this problem, can you just stop doing whatever you are doing and fix it for me?"
Me internally: *no I don't, what I'm doing right now is fixing another one of your problems for which you've interrupted other work already"
Me: "Yeah sure, gimme some time"
Can't afford to fail my internship and I don't want a shitty work environment which I why I don't speak my mind...
But man this is tiring...2
I'm a fan of writing tests right after you write every module. I actually think it's doable.
But I'm not a big fan of traditional TDD, which is defined as: first writing the tests, making them fail, writing code until tests don't fail.
My experience with traditional TDD when writing library code is that you start with this very naive idea of what is needed, so you write classes and functions and a lot of times they look like overly simplistic pseudocode.
So what do you do? You scratch that, you delete those classes/functions several times.
I think this discovery process that your code is naive is slowed the fuck down by doing TDD.
I'd rather write a theoretical API in a readme file, then write code, and then write the tests, you can even withhold writing the tests, but never leaving them for another day, just so that you don't waste time writing tests that you're going to scratch.
There's always a time constraint, and most of us can't afford bikeshedding.
Traditional TDD feels like an esoteric thing, it tries to make programming a series of steps, it actually sounds like an infommercial.
"FOLLOW THESE 3 SIMPLE STEPS AND WRITE THE BEST CODE EVER"11
Just wanna to share my story:
I just quit my job 2 months ago to ramp up my own startup. I will be funded with 2k Euro per month for 1 year to prepare the founding of my startup. Basicly that means i got one year to build backend/frontend/app. I have a friend that is doing some nontech related stuff like business development and shit. Sounds good until now i guess.
Developing all that stuff in a one man show as a junior-like developer is really hard. I did not find another dev who wanted to join me as a sideproject or something.
Do you guys think thats even possible to ramp up all this by myself or am i to optimistic? I mean, i learn a lot atm, but i am a bit scared to fail too.
That should not be whining or shit, just gathering some input of you guys.
(excuse typos and stuff as i am not a native speaker :) )18
This is going to take a second to get dev related, please bear with me.
So, I'm from a pretty small (and poor) town. Like most small towns, not many give a damn about computer science/IT (that shows by the fact I'm the only CS major. And there's one IT major).
Now, my high school offers a few "career prep" classes. There's (no exaggeration) almost 5 or 6 classes for medical majors to prepare themselves; like 4 different agriculture based classes; 2 business major classes; and surprise surprise...not a damn Computer Science or IT class.
Yes, we have a computer class. But can you even call a "How to Use Microscoft Products" class an computer class? Finally by my senior year, I got pissed off by this.
I had/have relatives that have worked/are working in the school system, so it wasn't hard to get a meeting with the superintendent and the assistant superintendent to discuss my thoughts. They were both open to and even supported my ideas. But due to funding, it wasn't a feasible idea at the time. (Especially since not many care about CS or IT.)
This is where I get really really pissed off. Being that the town is small, the people with money/a name tend to control things. So, a former principal retired with the expectations to work in another county. However, this job fail through. But there was a "magical" opening for a job that didn't exist before this job fail through.
This pisses me off. We can create a job for someone and afford a full time salary for them, but we cant get an actual CS class. (And this isn't the first time a job was created for someone.)8
devRant is nice.
If you move rant feed to "Recent" and saw a bunch of rant u already read but you keep scrolling down hoping to see new rant but u fail cause rant policy keep people from posting new rant for 2 hour and not many new rant has been post.
This is a nice feature. It make u self aware that "crap, maybe too much time on devRant". Even if you addict to devRant but by this policy -> It force you to really close its app and checking it on another free time. (more healthy than another social media I guess 😂)2
Never buy crappy, consumer-grade SSDs for use in production servers/RAIDs. This might sound obvious but at the company I used to work for, through a series of bad decisions by management and cheapness, we ended up with the cheapest consumer SSDs you can imagine powering all of our storage.
This turned into a nightmare spanning years of failed hard drives and a continues cycle of ridiculousness. Drive failed after a few days, gets taken out, sent back to manufacturer and then replaced with another equally crappy drive destined to fail within days/weeks.
Our ops people were going to the data center multiple times per week to replace failed drives. Lesson I learned: cheaping out on system-critical hardware and software can have long standing consequences and in the end usually doesn't end up actually saving money when you account for time employees have to spend dealing with issues that result from it.
My current job at the release & deploy mgmt team:
Basically this is the "theoretically sound flow":
* devs shit code and build stuff => if all tests in pipeline are green, it's eligible for promotion
* devs fill in desired version number build inside an excel sheet, we take this version number and deploy said version into a higher environment
* we deploy all the thingies and we just do ONE spec run for the entire environment
* we validate, and then go home
In the real world however:
* devs build shit and the tests are failed/unstable ===> disable test in the pipeline
* devs write down a version umber but since they disabled the tests they realize it's not working because they forgot thing XYZ, and want us to deploy another version of said application after code-freeze deadline
* deployments fail because said developers don't know jack shit about flyway database migrations, they always fail, we have to point them out where they'd go wrong, we even gave them the tooling to use to check such schema's, but they never use it
* a deploy fails, we send feedback, they request a NEW version, with the same bug still in it, because working with git is waaaaay too progressive
* We enable all the tests again (we basically regenerate all the pipeline jobs) And it turns out some devs have manually modified the pipelines, causing the build/deploy process to fail. We urged Mgmt to seal off the jenkins for devs since we're dealing with this fucking nonsense the whole time, but noooooo , devs are "smart persons that are supposed to have sense of responsibility"...yeah FUCK THAT
* Even after new versions received after deadline, the application still ain't green... What happens is basically doing it all over again the next day...
This is basically what happens when you:=
* have nos tandards and rules inr egards to conventions
* have very poor solution-ed work flow processes that have "grown organically"
* have management that is way too permissive in allowing breaking stuff and pleasing other "team leader" asscracks...
* have a very bad user/rights mgmt on LDAP side (which unfortunately we cannot do anything about it, because that is in the ownership of some dinosaur fossil that strangely enough is alive and walks around in here... If you ask/propose solutions that person goes into sulking mode. He (correctly) fears his only reason for existence (LDAP) will be gone if someone dares to touch it...
This is a government agency mind you!
More and more thinking daily that i really don't want to go to office and make a ton of money.
So the only motivation right now is..the money, which i find abhorrent.
And also more stuff, but now that i am writing this down makes me really really sad. I don't want to feel sad, so i stop being sad and feel awesome instead.1
My daily life with Eclipse. Story #0:
Me: browsing SVN repo with Eclipse (double fail, I know)
Me: waiting for ages
Me: killing eclipse
Repeated the process several times. Solution:
Me: browsing SVN repo with Eclipse (double fail, I know)
Me: hover over another view
Eclipse: isn't frozen anymore
Thanks for wasting my time ...
The reason I liked Captain Marvel, is because it wasn't about defeating something or someone. It was about remembering who you are, picking yourself up, and moving forward with what you've always wanted to do.
This is a similar situation with most designers and developers.
If you watch it again, notice that she was always falling hard. From riding a bike to completing an obstacle course, she would try something and fail.
But she kept trying.
After losing sight of her goals by being distracted and derailed by someone else with another agenda - she was slowly reminded of them, and eventually remembered what she forgot.
Then, not only was she was able to what she originally set out to do - but, ended up doing them better than she ever expected.
If that's not a great story for boys and girls to grow up with - and, for adults to learn from (including some of my peers) - I honestly don't know what is.2
Well... I once accidentally deleted a classmates entire assignment. Basically we were working together on one and we had the code in Github, I had named the repo after the module code.
He was having some weird git issues and I thought it would be easier to just delete and re-clone on his machine. You can probably see where this is going.
Me: rm -rf <DIR NAME> Enter
Him: wait, which folder did you just delete
Turns out he had the repo cloned inside another directory with the EXACT SAME NAME, which also contained his previous assignment, the only copy of it in the entire universe (it was a group project and they did it all on his laptop with no source control, which i found hilarious).
It wasnt so bad since that assignment was already submitted and graded, but a bit of a fail on both our parts.
Most obnoxious company process: The newly introduced promotion process at my ex-employer.
Originally they had a run-of-the-mill process. You and your boss reviewed your performance independently, then spent an hour to compare results. If you agreed to have proven yourself, your boss did some remaining paperwork (iow he did his job) and done.
Under the guise of transparency, fairness and autonomy of employees this was changed to:
You had to find three coworkers willing to review you (favorably). You collected their feedback, processed that (strengths, "opportunities for improvement", etc) and presented it to your boss for review. These were the first two steps of four in total, of which I've forgotten the other details tbh. It became pretty ridiculous with you defining "progress indicators", your boss's boss involved in another review round and what not.
The true purpose was clear: Delaying promotions as long as possible, making the employees do all the work, and being able to just say "no" at any point. I don't know how intellectually superior managers and HR viewed themselves, because literally none of my coworkers bought this as an improvement.
But, yeah, that became the new process at a company too big to fail.1
I had semi-jokingly changed my username from dextel2 to nothappy, because of that one bad day.
But, it is now when I realized that I am actually NOT HAPPY, things are lately rough, I am constantly scared for no reason, I doubt my skills, I doubt myself for no reason, and top of that there's always a chance for another epileptic attack.
I tried and keep trying to distract myself from negative thoughts but the more I try the more I fail, I've become distant with my younger brother, for the record I'm very overprotective about him. I don't even know if he feels the same, as this year ends or every day passes by I feel changed from my past self (not in a good way).
Switched my first job to get another good job, turns out they don't even have any projects and I'm just a guy they are showcasing like they have ONE amateur developer and we are looking for an entire project and it did work for one client which I'm gonna deny personally because the client is not clear about the project itself, I do not care about the consequences, my heart lies in academics and I'll put my 100% in academics, shall I'm kicked.
A lot has happened in this year, but this one is/was unique and very hard to process. I've always been joyful, sarcastic, funny, you name it, but all of it has just vanished, don't know why. I'm also becoming distant from my ONLY 3 friends and parents.8
Rant rant rant!
Le me subscribe to website to buy something.
Le register, email arrives immediately.
*please not my password as clear text, please not my password as clear text *
Dear customer your password is: ***
You dense motherfucker, you special bread of idiotic asshole its frigging 2017 and you send your customer password in an email!???
They frigging even have a nice banner in their website stating that they protect their customer with 128bit cryptography (sigh)
Protect me from your brain the size of a dried pea.
Le me calm down, search for a way to delete his profile. Nope no way.
Search for another shop that sells the good, nope.
Try to change my info: nope you can only change your gender...
Get mad, modify the html and send a tampered form: it submits... And fail because of a calculation on my fiscal code.
I wanna die, raise as a zombie find the developers of that website kill them and then discard their heads because not even an hungry zombie would use that brains for something.1
# Retrospective as Backend engineer
Once upon a time, I was rejected by a startup who tries to snag me from another company that I was working with.
They are looking for Senior / Supervisor level backend engineer and my profile looks like a fit for them.
So they contacted me, arranged a technical test, system design test, and interview with their lead backend engineer who also happens to be co-founder of the startup.
## The Interview
As usual, they asked me what are my contribution to previous workplace.
I answered them with achievements that I think are the best for each company that I worked with, and how to technologically achieve them.
One of it includes designing and implementing a `CQRS+ES` system in the backend.
With complete capability of what I `brag` as `Time Machine` through replaying event.
## The Rejection
And of course I was rejected by the startup, maybe specifically by the co-founder. As I asked around on the reason of rejection from an insider.
They insisted I am a guy who overengineer thing that are not needed, by doing `CQRS+ES`, and only suitable for RND, non-production stuffs.
Nobody needs that kind of `Time Machine`.
After switching jobs (to another company), becoming fullstack developer, learning about react and redux.
I can reflect back on this past experience and say this:
The same company that says `CQRS+ES` is an over engineering, also uses `React+Redux`.
Never did they realize the concept behind `React+Redux` is very similar to `CQRS+ES`.
- Separation of concern
- CQRS: `Command` is separated from `Query`
- Redux: Side effect / `Action` in `Thunk` separated from the presentation
- Managing State of Application
- ES: Through sequence of `Event` produced by `Command`
- Redux: Through action data produced / dispatched by `Action`
- ES: Through replaying `Event` into the `Applier`
- Redux: Through replay `Action` which trigger dispatch to `Reducer`
The same company that says `CQRS` is an over engineering also uses `ElasticSearch+MySQL`.
Never did they realize they are separating `WRITE` database into `MySQL` as their `Single Source Of Truth`, and `READ` database into `ElasticSearch` is also inline with `CQRS` principle.
## Value as Backend Engineer
It's a sad days as Backend Engineer these days. At least in the country I live in.
Seems like being a backend engineer is often under-appreciated.
Company (or people) seems to think of backend engineer is the guy who ONLY makes `CRUD` API endpoint to database.
- I've heard from Fullstack engineer who comes from React background complains about Backend engineers have it easy by only doing CRUD without having to worry about application.
- The same guy fails when given task in Backend to make a simple round-robin ticketing system.
- I've seen company who only hires Fullstack engineer with strong Frontend experience, fails to have basic understanding of how SQL Transaction and Connection Pool works.
- I've seen company Fullstack engineer relies on ORM to do super complex query instead of writing proper SQL, and prefer to translate SQL into ORM query language.
- I've seen company Fullstack engineer with strong React background brags about Uncle Bob clean code but fail to know on how to do basic dependency injection.
- I've heard company who made webapp criticize my way of handling `session` through http secure cookie. Saying it's a bad practice and better to use local storage. Despite my argument of `secure` in the cookie and ability to control cookie via backend.18
TL;DR despite 0 year professional programming I am lead of a large travel booking web-app, this is new to me and my boss, who has repeatedly ignored my advice and moved me on before finishing work. Client is not happy, project is way overdue, and yet has just sent NEW FUCKING DESIGNS.
Client has sent some redesigns of core search functionality on a project that is overdue and over budget.
DO YOU ACTUALLY *WANT* THIS PROJECT TO FAIL?5
Last rant was about games and graphics cards (admittedly not received too well), time for a rant about game development houses.. especially you EA.
So yesterday a friend of mine showed me in one of our Telegram chats that he'd modified some cheats in an old FPS game by editing these scripts (not Lua for some reason) that the game used as a.. configuration language I guess? He called the result a tank cemetery 🙃
Honestly the game looked a lot like Medal of Honor to stoned me at the time, so I figured, well why not fire up that old nx7010 I had laying around for so long, get a new Debian installation on that and rip the Medal of Honor: Allied Assault war chest that I still had, and play it on one of my more modern laptops? Those CD's are now very old anyway, maybe time to archive those before they rot away.
So I installed Debian on it again, looked up how to rip CD's from the command line, and it seemed that dd could do it - just give /dev/cdrom as the input file, and wherever you want to store your copy as the output file. Brilliant! Except.. uh, yeah. It wasn't that easy. So after checking the CD and finding that it was still pristine, and seeing another CD in that war chest fail just the same, I tried burning and then ripping a copy of Debian onto another CD.. checksummed them and yes, it ripped just fine, bit for bit equal. So what the fuck EA, why is your game such a special snowflake that it's apparently too difficult to even spin up the drive to be copied?
So I looked around on plebbit and found this: https://reddit.com/r/DataHoarder/... - the top comment of that post shattered all my hopes for this disc to be possible to rip. Turns out that DRM schemes intentionally screw up the protocols that make up a functioning disc, and detecting those fuck-ups is part of the actual DRM.
"I also remember some forms of DRM will even include disc mastering errors/physical corruption on the actual disc and use those as a sort of fingerprint for the DRM. The copied ISO has to include them at the exact same place in the ISO as on the IRL disc and the ISO emulator has to emulate the disc drive read errors they cause."
So yeah. Never mind that I already own this goddamn game, and that it's allowed by law to make one copy for personal use, AND that intentionally breaking something is very shady indeed.. apparently I don't really own this game after all. So I went onto the almighty search engines, and instantly found a copy of this game for download. You know EA.. I wanted to play nice. You didn't let me. Still wondering why people do piracy now? Might take your top suits that suggested these fucked up DRM schemes another decade to figure out maybe.. even given the obvious now.
But hey I wouldn't even care that much if the medium these games are stored on wouldn't be so volatile (remember these discs are now close to 20 years old, and data rot sets in after 30 years or so). You company decided to publish these on CD. We've had cartridges in many forms before, those are pretty much indestructible and inherently near impossible to duplicate. And why would you want to? But CD is what you chose because you company were too cheap to go to China, get someone to make some plastic molds and put your board and a memory chip in that. Oh and don't even get me started on the working conditions for game devs.. EA and co, aren't you ashamed of yourselves? No wonder that people hate game development houses so much.
Yay, almost finished downloading that copy of Medal of Honor! Whatever you say EA.. I've done everything I could to do it legally. You are the ones who fucked it up.10
The agency I own built a WordPress plugin for a client using a freelancer developer. The client, out of ambivalence, withheld information that would have drastically changed the design of the plugin, but by the time we found out it was much to late to start over. The developer moved overseas in the middle of it all and from then on was not very responsive to communications about the project which delayed things by months. I tried to find a replacement developer but nobody else had experience with the third-party API. The live version of the API ended up not being able to support what we were trying to get it to do with the plugin even though the test version of the API was fine and the vendor was unhelpful. And because we spent so much time and money on the plugin, we weren’t able to even begin on another part of the project. The client complained of over $30,000 in lost revenue due to these issues. Complete fail all around. I’m never doing another custom software project again. It’s all just website design from here.2
//Another 3D printer rant
So as many know im student.
And i have been 3D printing for years now.
And like 2 months ago i have decided to buy 3D touch (BLTouch shit clone).
BLTouch is like 40-50$
and 3D touch is 15$.
Yes its a clone but from what i heard the accuracy is not that bad really.
I plug it in and try the accuracy test in marlin.
Standard deviation of 0.25mm
That is 1 freaking fucking layer.
Heck 0.05mm more then 1 layer.
So i read how it works.
OK its not that complicated.
Basically a hall sensor.
So i unscrewed the sensor and magnetized the screw and probe.
I put it together again but now with only 0.6mm gap between the screw and the top of the sensor. (Before it was really deep in there).
I try the accuracy test again. (Yes i have run the tests multiple times and got an average of them in the past tests and future tests too).
Still horrible but better.
So i go around internet and i find one guy saying turn on debugging in marlin.
OK i mean i might just as well.
That is better then some old original BLTouch probes.
I hope to get BLTouch v3.1 in future but this will do for now i guess.
So would i recommed the shit cheap clones ?
They are unrealible pieces of shit and you have to spend hours upon hours to make them work properly and even then they wont get to the accuracy of new BLTouch.
Yes there is also the point that Z motor isnt really perfect either and 1/16 micro stepping is also shit and you cant go that precise.
Oh and while typing this the fucking shit probe decided it would be a great idea to fail and failed.
Resoulting in a deep hole in my printing bed.
So if you think the 15$ is a great value NO.
DONT BUY THE CLONE.
I have learnt my lesson.10
The ridiculous and shameful story of how simply "installing Windows" saved my hard drive from the garbage.
(Also update on https://devrant.com/rants/3105365/)
It started with my root partition turning read-only all of a sudden. Some quick search suggested that I should check the sanity of my hard drive, by running a SMART test, which failed of course. I backed up my data using ddrescue and ran a badblocks over the whole thing, which found around 800 unreadable blocks in a row. I was ready to bid farewell to my drive, but as a last resort, instead of the trash, I brought it to this place where they claimed they can repair the damaged hard drives by "surgery".
To my surprise, they returned my drive the next week, saying it is all well now, and charged me 1/8 the price of a new drive, with a refund guarantee if there was a problem in two days. There was a problem right there: I ran another SMART test which failed again, and also the faulty blocks were still unreadable! So I stormed the place and called for my refund, showing the failed SMART report. The only answer I would get from the staff was "Have you tried installing Windows?".
I usually try to be patient in such situations; I really don't like to declare publicly that "not everyone uses that stinky piece of rotten software you call an OS", but their suggestion seemed totally irrelevant! I got all types of IO errors all over the damn thing and they told me to install Windows. Why? Because this was the only test they would rely on. At last I managed to meet the "technician" there and showed him the IO errors: tried to read the bad sectors with dd and failed. He first mumbled somethings like "Have you checked the connector?" or "Are these the same blocks?", but after he ran out of bullshit, he said "Why don't you just install Windows first and see if that helps?" and I was ready to explode in his face!
"You test drives by installing Windows, just because it will make a nasty NTFS partition and probably does an fsck? If you shut your mouth for a sec and open your eyes you'll see this is a shit load of IO errors we got here: You can't install Windows, you can't even make an NTFS here, because it will try to zero-the-fuck-out the damn partition and it will face the same fucking IO error that I'm showing you right now in almost one single fucking system call!"
"I don't know this kind of test you are using. We have our own tests and they've passed successfully. So all I can do is to give you a Windows CD if you want."
"I don't need a Windows CD. I will just try to make an NTFS partition on the error spot and I will fail."
"Ok. Then call me when your done."
I was angry, not only because I felt they're just trying to avoid a refund, but also because I knew I've lost my drive. But just with hope that I could get my money back, I made a small partition over the error spot and ran `mkfs.ntfs` on it. I was ready to show the failure to the guy, but I looked more precisely and saw that "the filesystem was created successfully!" I was sure something is nor write. I then successfully mounted the new partition, write over it and read it again. I even dd'ed the blocks again, and this time there was no IO error. All of a sudden everything was fine.
I didn't know what happened. Maybe it just needed a write, while I'd just tried to read from those blocks. But anyway, I didn't called the technician guy again. I just thanked one of the staff there and said that my problem was solved. I then ran a successful SMART test and then restored my backup. Ridiculous like that.
I'm still not sure if my drive will continue to live with no more problems. I also have no explanation for what happened. (I appreciate any help on this https://superuser.com/questions/...) But I really like to see the look on the poor guy's face when he finds out that trying to install Windows just saved my ass!11
Well well well.
Since we are working from home for the past 4 months, I finally decided to install a Microsoft SQL server on my home server. (Mostly was using Azure)
My server is running Windows Server 2012 R2.
Tried installing SQL 2019 : fail, 2016 : Fail, 2012 : Fail. Some obscure message about some DLLs not being at right version. (And a warning that it is no recommended to install SQL server on domain controller, but I know, it is my home setup, not roduction)
“Ok fine, I’ll install it on my PC instead”. Windows 10 PC. NOPE. “Cannot install on a compressed drive”. Welp, wtf ? (Of course you cannot select destination install folder, I could’ve put it on another drive).
So here I am. Working 100% on Windows, installed Ubuntu server 20 LTS in Hyper-V, Installed Microsoft SQL server on it (BTW, install is very easy compared to windows). And that shit is working. And new “Terminal” app does support SSH out of box, no need to add Putty !
So as a Windows user, I needed Linux to make Microsoft SQL techno work.
Nothing will ever surprise me anymore. (BTW it’s fucking fast. I like SQL server on Linux)2
Tldr: I failed a test and was sad about jt
So a while ago I had a python exam for my study, nothing special like a certification or anything, just the basics. We are not allowed to use internet because they want to prevent people from communicating from one another. Usually im fine with this rule, but this time it screwed me over so much.
The exam is setup in 3 main assignments each of which has 5 subassignments. Hence, if you cant do subassignment 1, you fail the entire main assignment and lose 33% of your grade. I completely blacked out during the exam and couldnt remember how to simply get a number from a string interpreted as an int and forgot how to work with json. Because we weren't allowed to use internet I wasn't able to figure this out and have now failed the test.
I'm so sad and mad at myself for not acing such an easy test and for a day I felt unworthy of being a programmer. Thank God I got over that and have a resit somewhere next week.2
i fucking hate that professor for whom i have to work on laboratory project right now.
well that wouldn't be not so bad if...
we wouldn't have to fucking debug his mistakes he put into the fucking prepared code AND his fucking useless instructions how to set up the project for eclipse the first time. not to mention his fucking requirements which make no sense
oh yeah im a student. i can always go and ask him for help if i need any...
i have another 70% mandatory course at the same time and that fucker refuses to upload hos sheets in moodle and answer even one fucking question via mail. not to mention no support if I am there unless i have eclipse setup. even through the projects should be build using gradle...
and all that wont even give us a grade. no ita simply a pass or fail part of the module which the course is part of.
have i also mentioned that the whole shit should be done in 20 hours according to the schedule9
I think mine had to be when I was working with SQL and Lua. I was attempting to store some ints into the database but kept having it fail randomly. It was a 50/50 chance that it would succeed or fail. I tried reading errors (Limited on what I could see) after a while (Almost 3 days, since everything I could think of didn’t have issues and was completely lost) I realized the system another developer setup returned either string or int, thus it causing it to error out when I gave it a string. Once I added a tonumber statement, all my headaches went away.
TLDR: I didn't & still not sure if it is..
I love bug hunting & fixing & figuring out how stuff works, but many will argue this is not even real programming..
Long version how I ended up programming:
Back in highschool, I was deciding between english and mathematics & computer science.. I filled in the form for the latter. Got a change of hearts but I already gave the extra/backup empty form to schoolmate..
Figured it's for the better because it's a hell to get a job as an english teacher/prof anyways + I dislike comunications with people + documentation (if any) is in english etc..
At the end of first year, I didn't even apply for all the exams because you had to have both programming 1&2 to pass or even be eligible to take the year again.. I figured I'd fail them, so once I actually passed both (& actually not with bad grades), I was fucked.. had to retake the year, which means I lost time + still had to pay the rent etc.. decided to drop out and return home and do the IT engineer course instead to at least have some formal education to help me find a job. Finished that without problems, I 'specialised' in network administration.
I got a job straight out of school as a web developer.. the irony.. got some conflicts with the boss and was terminated (material for another rant).
Later I sought out admin jobs, but got declined because I was overqualified and had programming experince. FML, right?
Ended up sending out mandatory job applications for IT administration & programming to not lose the bonuses & got called up to a meeting in the company I work for since then.
No qualifications for .net & MS technologies, but they liked my CV so the ended up setting up the interview anyway. I didn't know half of the technologies and concepts by proper name, but they figured I understand enough of the content to give me a try. A few years later, I got the most fucked up project they have because of my love for new thigs and trying to understand everything. It's aaaalmost bearable now.. still needs a lot of work, but I'm happy where I am. Saddly, I'm still second guessing if I'm doing a proper job as a dev, but they seem to be very ok with my work. (:7
My experience with Fedora:
1. Copy to thumb drive
2. Find out the thumb drive wasn't good enough
3.copied to another thumb drive
6.Shit forgot to partition my NTFS drives
7.Back to Windows to do it
8.back to install again
9.Start installation, setup partitioning
10. Didnt notice that my EFI partition wasn't detected
11.Fedora tries to install its bootloader in God knows what place
12.bootloader install fail
14. Missing operating system
15. Spend my whole fucking night repairing the boot partition and the problem was a fuckin missing BOOT flag
16. No grub
17.spent another decade trying to fix it
18. Give up and get some sleep
Probably Fedora will have to wait for another day, tiring experience7
Lua users, have you used moonscript?
It's a little language that has it's own interpreter or can be compiled down to Lua and it's absolutely lovely (currently using it with Love2d).
Of course, as with most things, what I love about it also royally pisses me off sometimes.
For starters local has to be declared for variables, unlike lua.
Otherwise the variable goes to _
Also note, that some tutorials literally tell you the opposite.
all variables are local by default
unless you don't declare them
then they go to _ (throwaway)
Some tutorials get this wrong too.
all variables have to be declared local
except tables. failure to declare a table WITHOUT a local will cause things like
table.insert to fail with "nil" values for no god damn reason.
No tutorial I could find mentioned this.
Did you know we call methods with '\'?
By the way, we call methods with '\'.
Why? Who the fuck knows.
Does make writing web routes more natural though.
Variables in the parameters of new are declared and bound for you. Would have loved to know this before hand instead of trying
to bind to them like a fucking idiot.
Fat arrows are used to pass in self for methods.
Unless you're calling a method. Then you use backwards slash. This fact is unhelpful when you're a beginner and dealing with the differences between the *other* arrow, the backslash, the fat arrow, and the fact that functions can be called with or WITHOUT parenthesis.
And on that note..
While learning all this other shit, don't forget parenthesis are optional!
Except when they're not!
..Like when you have a function call among your arguments and have to disambiguate which args belong to the outer call and to the inner call! Why not just be fucking consistent?
But on the plus size, ":" is now used for what it should have been used for in the fucking beginning: binding values to keys.
And on the downside, it's in a language thats built on top of another language that uses it for fucking *method calls*, a completely
different fucking usage.
And better still, to add to that brainfuckery thats lost in the mental translational noise like static on a fucking dialup modem, you define methods with the fat arrow. Wait, was that the single arrow or fat one? Yeah the fat one. Fuck. But not before you do THIS shit..
yeah, you STILL include the god damn colon just so when you're coming from lua you can do a mental double take. "Why am I passing self twice? Oh right, because fuck me, I decided to use moonscript." It's consistent on that front but it also pisses me off.
A lot of these are actually quality of life improvements disguised as gotchas, but when you're two beers in to a 30 minute headscratcher it sure doesn't fucking feel like it.
Nevertheless, once I moved beyond the gotchas, it was like night and day. Sure moonscripts takes a giant steaming dump all over the lua output, like a schizophrenic alcoholic athena from the head of zeus, but god damn, when it works it just WORKS.
Locals that act like locals? Check.
Sane OOP? Check.
Classes, constructors, easy access to class methods, iterators? Check, check, check, check, check.
I fucking hate ceremony. Configuration over convention is for cunts. And moonscript goes a long ways toward making lua less cunty.
If you've ever felt this way while using lua, please, give moonscript a try.
You'll regret it, but in a good way!6
The year was 2006. During the first half of my career, I use to work in the NOC. This was before I made my transition to software engineer. I worked on the third shift for a bank services company. The company was on a down turn. Just years earlier they just went public, and secured a deal with a huge well known bank. Eventually they entered a really bad contract with the bank and was put into a deal they couldn't deliver on. The partnership collapse and their stock plummeted. The CEO was dismissed, and a new CEO came in who wanted to "clean things up".
Anyway I entered the company about a year after this whole thing went down. The NOC was a good stepping stone for my career. They let me work as many hours as I liked. And I took advantage of it, clocking in 80 hours a week on average. They gave me the nick name "Iron Man".
Things started to turn around for the company when we were able to secure a support contract with a huge bank in the Alabama area. As the NOC we were told to handle the migration and facilitate the onboarding.
The onboarding was a mess with terrible instructions that didn't work. A bunch of software packages that crashed. And the network engineers were tips off, as they tunnel between our network and the banks was too narrow, creating an unstable connection between us and them. Oh, and there were all sorts of database corruption issues.
There was also another bank that was using an old version of our software. The sells team had been trying to get them off our old software for over a year. They refuse to move. This bank was the last one using this version, and our organization wanted to completely cut support.
One of the issue we would have is that they had an overnight batch job that had an ETA to be done by 7 AM. The job would often get stuck because this version of the software didn't know how to fail when it was caught in an undesired state. So the job hung, and since the job didn't have logging, no one could tell if it failed unless the logs stopped moving for an hour. It was a heavily manually process that was annoying to deal with. So we would kill the JVM to "speed" the job up. One day I killed the JVM but the job was still late. They told me that they appreciated the effort, but that my job was only to report the problem and not fix it.
This got me caught up in a major scandal. Basically they wanted the job to always have issues everyday. Since this was critical for them, all we needed to do was keep reporting it, and then eventually this would cause the client to have to upgrade to our new software. It was our sales team trying to play dirty. It immediately made me a menace in the company.
For the next 6 months I was constantly harassed and bullied by management. My work was nitpicked. They asked me to come into work nearly everyday, and there was a point I worked 7 days with no off days. They were trying to run me so dry that I would quit. But I never did.
On my last day at the company, I was on a critical call with a customer, and my supervisor was also on the line. My supervisor made a request that made no sense, and was impossible. I told her it wasn't possible. She then scalded me on the call in front of customers. She said "I'm your supervisor, you're just a NOC technician, you do what I say and don't talk back". It was embarrassing to be reprimanded on a call with customers. I never quite recovered from that. I could fill myself steaming with anger. It was one of the first times in my adult life that I felt I really wanted to be violent towards someone. It was such a negative feeling I quit that day at the end of my shift with no job lined up.
I walked away from the job feeling very uncertain about my future, but VERY relieved. I paid the price, basically unable to find a job until a year and a half later. And even was forced to move back in with my mother. After I left, the company still gave my a severance. Probably because of the supervisor's unprofessional conduct in front of customers, and the company probably needed to save face. The 2008 crash kept me out of work until 2009. It did give me time to work on myself, and I swore to never let a job stress me out to that degree. That job was also my last NOC job and the last job where did shift work. My next few jobs was Application Support and I eventually moved into development full time, which is what I always wanted to do.
Anyway sorry if it's a bit long, but that's my burnout story.
Hey, up for a challenge?
Upgrade to iOS 12 beta 2,
When all of your apps fail to open and u can only use apple safari, notes & other apple apps, start regretting the decision and downgrade your phone to iOS 11.4 when your phone starts up in data recovery mode and fails to recover data and then u need to send mom a sms of that picture of your family and explain the reason for why all of your data got deleted send me a picture so I can see how I did😤...
I deleted my jailbreak for this shit?!
(I understand it's a beta, but cmon on beta 1 haw of my apps didin't work, and on beta 2 I needed to restart my phone for 6 times before apps might start working and u need to wait 2 weeks before another beta releases, fuck off appl. With this beta shit, I guarantee there were thousends of users with same issue fix tht.)2
So I bought 2 dvd packed with old rpg games.
I didn’t know my first quest will be to get those games working.
To make my life more miserable I decided to convert those dvd to iso.
First I needed to find computer with dvd because those I use apparently don’t have dvd anymore.
Found one with windows 7 inside.
Yeah first mission complete.
Now just find dvd to iso software and burn those bastards.
I need to update date / time to be able to use internet over https.
Started looking for the dvd to iso software. Microsoft answers giving links to bloatware with detailed instructions how to install desired things without crap. The link to download doesn’t work but at least I have the name ImgBurn.
They have website so I click on first mirror and run setup.
First fail they’re linking to bloatware that downloads another bloatware that installs some search plugin for firefox.
Uninstalling search plugin.
1 hour passed by.
Clicking last link. Success.
Now time to click it smart to omit any unwanted software and get only what I want. Reading trough install instructions and checking out not wanted checkboxes is like great quest.
Finally I have what I want and I can backup my dvd.
What a great evening.5
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.18
You ever had a boss that made you feel like his bitch but he never really earned the title
You also know from a technical skill perspective you’re more competent.
And the only job he seems to do is micromanaging you. He just puts things under a microscope looking for a flaw. He always finds a flaw so in the off chance it breaks he’s always in the clear.
He’s the guy who sticks with the programs the he was taught when he was still at school and never really tried something new out of the box. He gives the reasons the he wasn’t formally trained in the other programs . I’m not talking cinema 4 here. I’m talking Matlab preference over python. Using lab-view as a production level development platform instead of going to something more approved by the industry.
He doesn’t take risk but he pushes those risks on you so if you fail he can say it wasn’t him
He’s never wrong but he’s never right either.
You’re sitting there doing the cunt work and breaking the sweat and he passes the achievements as under his management. You never really get the credit because “he guided you “. You go through hell fixing bugs and he disappears. He says he’s always a call away when what you really needed is someone taking the heavy tasks not throwing the entire project on your back.
I never call that piece of shit bcz he just throws some other bullshit that doesn’t make sense and emphasizes that might be the problem.
I once had a problem with the com port on a pc and was trying to figure out the problem. I asked him and he said that it might be bcz I’m connecting to the PC via VNC. I was like what the hell. What does that have to do with anything. I just ended up restarting the port and it bloody worked.
The saddest part is that I’m scared is that I might end up like him. In the same dead end job. Even though he guides me we work in a place where the job title doesn’t really change. Funny thing is that officially I have the same job title as him .
He’s been in the place for 5years when I came. Can someone imagine that? To work and work and then to be seized up with another brat who’s the same as you title wise.
You’re close the age of 40 and you work in a place where a 20 something year old walks in with the same Position as you.
I worry that I might end up the same if I stay long enough. That I’ll learn everything I can learn and just stop progressing and the only thing I can do is say how shit can break but wouldn’t know how to fix .
Pointing out problems because they are easier than fixing. Just plomonting into existential nihilism with no purpose.
I once told him I wanted to quit. He pretended he didn’t hear it. He then then said what do you see in this job in 5 years
I told him me not in it.
He said “seriously what do you want in this place “
I said “if I’m still her in 5 years I’ll be missing a toe because I would have shit myself in the foot”
I now realize that by convincing me to stay he might have convinced himself that staying for that long wasn’t a bad idea. He was looking for justification that he’s decision wasn’t that bad at all.
You give your life to a job and at the end it takes one away.
I don’t want to be like that and I think that’s what bugs me the most. That I’m so close to this individual that I feel sooner or later if I’m not careful I’ll end up in the same place. The same dread3
I subscribe to many copywriting newsletters. Here's an article that shows how it's like on "the other side", marketers struggle, too.
How Kevin's Massive Mistake
Completely Changed His Life
Kevin H. made a huge mistake.
The biggest, he would say, if he could tell you himself.
And he knew it immediately.
It was, he said, "instant regret."
Within milliseconds, he was asking himself "What have I done..."
Kevin, see, had just jumped the rail of the single most popular suicide spot in the world, the Golden Gate Bridge.
On average, the site gets another distraught jumper every two weeks. Kevin was one of them.
It wasn't like he hadn't tried to quiet the voices in his head. Therapy, drugs, hospitalization.
Time to die, those voices still said.
And yet, in the minutes his bus dropped him off at the bridge, he hesitated and paced with tears in his eyes.
"I told myself if just one person comes up to me and asks if I'm okay... if one person asks if they can help... I won't do it. I'll stop and tell them my whole story..."
But nobody did, so he jumped.
It was in those next milliseconds, he would later say, he knew it was the biggest mistake of his life.
He didn't want to die.
But now, he was sure, it was too late.
From its highest point, it's a 245-foot plummet into the icy bay waters below.
Out of the 1,700 people that have jumped from the bridge since it first opened in 1937, only 25 have survived.
Kevin, against all odds, would be one of them.
He slammed into the water like hitting concrete. Three of his vertebrae instantly shattered.
When he surfaced, he couldn't hold his own head above water. But, incredibly, a sea lion kept pushing him up.
The Coast Guard soon arrived and pulled him out.
From there, he began a long recovery that required intense surgery, physical therapy, and psychiatric care.
While still under treatment, a priest urged him to give a talk to a bunch of seventh and eighth graders.
Afterward, they sent him a pile of letters, both encouraging and full of their own pained thoughts.
He also met a woman.
Today, Kevin lives in Atlanta and he's been happily married for the last 12 years.
And he tours the country, sharing his story.
So why re-tell it here?
Obviously -- I hope -- you don't get lots of copywriters looking to snuff it after a flopped headline test.
Just the same...
We've talked a lot in this space about the things one needs to get by in this biz.
My friend and colleague Joe, over at the publishing powerhouse Agora Financial, likes to list requirements.
You need intense curiosity...
You need a killer work ethic...
And you must, MUST have... resilience.
Meaning, you must have or find the capacity to bounce back from failure and flops, even huge ones.
Now, again, Kevin's story is an extreme and in this context -- I hope -- a hyperbolic example of somebody giving up. In the worst way possible.
It is also, though, a metaphor.
See, I get a lot of notes from some of you guys... and at conferences, I get to talk to a lot of people...
And I often get the sense, from some folks, that they're feeling a little more overwhelmed than they let on.
Some are just starting out, and they've got a lot on the line. For some, it's everything. And some are desperate to make it work.
Because they have to, because their pride or livelihoods or a family business is at stake, because it's a dream.
And yet, they're overwhelmed by all the tips and secrets... or by piles of confusing research or ideas...
For others, even had some success, but they're burned out, feel antiquated, or feel like "imposters" that know less than they let on, in an industry that's evolving.
To all those folks... and to you... I can only say, I've been there. And frankly, go back there now and again.
Flops happen, failures happen. And you can and will -- even years and decades into doing this -- make the wrong choices, pick the wrong projects, or botch the right ones.
The legendary Gene Schwartz put it this way, according to a quote spotted recently in fellow writer Ben Settle's e-letter...
" A very good copywriter is going to fail. If the guy doesn't fail, he's no good. He's got to fail. It hurts. But it's the only way to get the home runs the next time."
Once more, nobody -- I hope -- is taking the trials of this profession hard enough to make Kevin's choice.
And believe me, I don't mean to make light of the latter. I just want to make sure we hit this anvil with a big hammer. To drive home the point that, whatever your struggle, be it with this biz or something bigger, that you don't want to give up. Press on.
As Churchill put it, "Success, is the ability to go from failure to failure without losing your enthusiasm."
Or even more succinctly when he said, "If you're going through hell, keep going."
Because it's worth it.
At school during my first Java project we had to make a simulation of a parking garage and what effects price changes would have in order to find the most optimal business model from some company.
At the project kick off.
School: "we will be checking your code for plagiarism. if you use code from the internet, even if its 2 lines you need to mention the source. otherwise you will fail this cource."
We go on to do the project.
Friend of mine who was in another class sees a group presenting a 2 days old version of my teams application. theres literaly a credits button that displays the names of the people that worked on it in a popup.
Me: mentions to a teacher that my project was stolen.
They literaly didnt even change the name and pulled the entire repository from github and handed it in.
The fucking teacher doesnt even check the code / git logs after i mentioned that the entire codebase was stolen from a public github repository.
There was an endless mountain of proof to support my claim such as our team members names hard coded in the code they handed in and about 500 commits from our accounts.
I will from now on NEVER EVER mention sources when i hand in code at school.1
Ok please guys I need a little help here.
So I'm in my second year of my Computer science course and all subjects except one went well.So I failed my first year maths module so I decided to redo it and study much harder.Low and behold I worked really hard towards passing the exam but it was still extremely difficult.So I haven't gotten my mark and all but if I do fail it again I will not be able to continue in this University.I do not have a plan B at all and I really don't know what to do.I live in South Africa(if that's relevant).So basically if I pass I'll continue with the course but the question is what do I do if I don't pass.should I start working or try another degree at another University which will be another 4 years.PS I'm heading for 20 years old in a few weeks time.I appreciate anyone who gives any feedback.9
Oxygen Not Included
Another game worth mentioning.
Already spent half the week on it, the learning curve is interesting, you will eventually fail many times but with every fail the next colony is going to achieve more and more.
It's kind of missing some nuclear reactor. (Hello Factorio :)3
This is more of an essay than a rant. TLDR at the end. I simply can't choose from all the shitty lecturers I've had, so I'm going to have to go through them one by one. But of background. I'm currently in 7th year of college, I did a multimedia degree in 2 years, a intro course to Software Dev and I'm currently in my final year of my Software Dev degree. So let's start.
Intro Software Course
- we had a database module, which was thought by, I shit you not, the head of the psychology course in the college, she attempted to teach us Databases using access. And not even using SQL, using access GUI components and it's query builder. Need I say more?
1st year software dev
- We had a networking module, the guy that taught the labs, he literally didn't say more than 12 words the entire 12 week semester, his answer to any question you asked him was a grunt and "research it"
- We had a psychology module, I have no fucking idea why, but instead of learning something useful we were told to read this and get in touch with your feelings...
- database module. Yes we actually did SQL here, 12 weeks of select statements and normal form, talked about by a guy in a monotone voice, who sounded like he was contemplating bringing in an assault riffle some day. Also instead of using MySQL he decided to use Ingres. Why I will never know.
2nd Year Software Dev
- We had a module called Algorithms and Data Structures. The lecturer gave us problems she couldn't solve. Simple problems. She was also crazy. Absolutely nuts.
- Object Orientated Programming. I had this lecturer for 3 semesters up until 3rd year. This guy did COBOLT in college, graduated in the 70s or something and went straight into teaching, he taught us Java for nearly 2 years. He literally copied and pasted texts from PDFs and read through them in class. He told myself and another guy at one stage he really didn't care, and was just counting down the days to his retirement.
- Databases again, different lecturer from 1st year, taught us for 2 semesters (24 weeks) and somehow managed to teach us nothing.
3rd Year Software Dev
- software engineering.. This is where the biggest cunt I've ever met was introduced. He arrives into class 15 minutes late every time without fail, talks shit about stuff that has no relevancy to the topic at all, tries to turn everything into a rugby metaphor and every time you ask a question he somehow dodges it and swiftly changes topic. This cunts past profession? A Project Manager. Fucking typical. This dickhead has also thought me 2 other modules.
4th yr Software Dev
- El cunto mentioned above for 2 more modules. Need I say more.
- real time systems, this module took the piss, the module was written by the lecturer which is what earns his space here. Assignments given to us, which required more time to do than we had in labs so we had to work at home, the problem we that is we were using an obscure RTOS called OS9 which would only work on the college computers. When brought to the lecturers attention he just said "figure it out"
Internet of Things - There was 2 lecturers, each lecturer seemingly working off a different plan, one week you'd have one lecturer, the next would be the other one going on about something completely different and unrelated to anything else we'd done.
Some lecturers didn't even make this list as I couldn't be bothered trying to think back about how shit other ones were. These were the ones that always stood out in my mind.
My main take away point from this is that you go to college for the paper which says you have a degree. Learning things that are going to benefit you in a career is up to yourself.
TLDR; 90% of my college lectures were shit. You need to learn useful stuff yourself.
I am the responsible for the atlassian Suite at work, as I maintain the systems, set them up, and stuff.
One day, our crowd (the authentication and authorization application) just went crazy. At like lunch time it could not connect to the AD anymore. No reasons. Throwing XSRF errors (cross site scripting), because http would connect to https. "won't do it, fuck you" it told me. Out of the blue. Noone changed anything. And yea, seriously. Noone did.
It just refused to connect (as connecting to AD is connecting yourself with you own api. And refusing yourself talking to yourself). It runs behind a proxy. Therefore http/https. Well, this worked for years. But out of sudden not anymore.
Yea. Fuck you.
It was reported some hours later, at like 3pm, as people could not login to the applications using crowd as authentication and authorization server.
Tried to debug the system, where nothing was did, to make it work. At best time to fail.
First workaround: if you are logged into one of the other applications of atlassian, just refresh the site, so your SSO token gets a refresh and you are signed on again.
Then I searched more and more. And more.
But nothing worked, nothing helped.
So I addressed an emergency maintenance, take down the whole Suite, restart crowd, to apply some changes to it's settings, not knowing what happening then, because all connections of SSO will then be released. Sent out the mail like 30 minutes beforehands.
While waiting for the window, I just typed my credentials... And redid, and redid, so to type and being bored.
Three minutes before the window...
It just worked again.
Well. Wtf. Serioudl
Just came back.
No Intrusion, no changes at all. Just came back, as nothing has happened.
Kind of best part of this story... A headhunter messaged me on my way home to offer me a job as an Atlassian Suite SysAdmin for a company, at kinda the double of my salary.
At first I was thinking to go there, and when someone then asked me sth about Atlassian just start to laugh and then leave still laughing...
But then I very nicely respond that I dont want to cry at work. And wished him best luck.
I am doing some bad upgrades now on our Suite. Very painful.
And I looked into the start scripts. Some Look like the untalented intern tells another one to write scripts. Seriously wtf.
Today I followed the guide to Update a confluence and change database to Postgres. Didnt work, Postgres error.
Try it again, jquery won't load. Next try, tomcat not starting anymore. Did same thing. Every fucking time.
Yea. Maintenance window to get a nice new export soon. Will only take an hour.
To switch database in confluence, you need to set it up very fresh. And then Import your export.
Export takes an hour at our system.
Importing maybe the same time. Hope it will work (hint: Nope).
Oh, can be nice also. Just tell the Bitbucket to migrate databases, there is a fucking setting for it. Enter new database, ready, go, finished.
At least they don't raise costs very much every kinda year.
Oh sorry, yes, they do.4
Do any of you all have any recommendations on how to drill functional programming concepts into my brainhole? Any good resources or things that helped you learn? My brain is object oriented and I'm really struggling to "see the light" and become another FP hypebeast (which is what I feel most people become when they really learn this stuff)
A desperate loser who doesn't wanna fail her course 🥺🤷13
First, I need you guys to read this article:
Just from reading the company’s write up, they are shit. They put all the weight on the guy's shoulders. So much so that he had to put in 12x7 weeks for 2 years... One day they tell him that they are gonna scrap his work; when he exploded - and rightfully so - they fired him and built an inferior product. Of course, they praised themselves for productivity being much higher than when he was there.
At the end of the day, they were shit because they never cared about his mental health. They just pilled more and more on him, because he was the rock star. He eventually broke psychologically. They don't care about all the personal sacrifices he had to make to give them those 12X7 weeks.
Worst of all, they spun it as him being the asshole - which will make it harder for him to get another job - when it was their shit management that broke him psychologically.... sigh
They all depended on him, he knew that too. The pressure to not fail was too much.
Bad management can seriously destroy a person8
So after previously telling the story of my laptop in the rain, I thought I should follow up with this one. (this is couple months later)
My laptop was bought second hand by my father (who doesn't know anything about computers) and the poor thing had a tendency to overheat. It worked fine, but under heavy load it would only last a couple minutes before it shut down.
So once I was cleaning out the fan (as dust accumulated in there) and I ran it under the tap, to get everything off. Sure, you might cringe at the idea but I thought some water wouldn't hurt it, especially after surviving en evening in the rain. So I cleaned it and let it dry.
A while later, when it finished drying I started to reassemble my laptop. After about 30 mins of fiddling with it, it was back together and ready for a fresh start! So I powered it on.
Sparks flew. Smoke started coming off the motherboard. More sparks.
I pulled the cord. "Fuck, glad I caught it on time..."
I waited a while longer. Turn it back on. "Fan is not functioning properly or is missing". FML. After all it had survived, a bit of water in the circuit that made the fan spin is what took it down 😑
Fast forward two years (without a fan, shitty days), and I bought a second hand Lenovo laptop that I adore. So I thought I'd sell the laptop on Ebay, but first I should fix the fan so that I wouldn't have to sell it for next to nothing. Part number was hard to find, and bought it from somewhere in Europe. Four weeks later, the fan arrived at my doorstep.
Took the laptop apart (have I mentioned how hard that was?) and replaced the fan. Felt good to fix what I had ruined two years back. Put it back together (after applying thermal paste, I'm not a monster) and powered it on.
"Fan is not functioning properly or is missing"
After checking the connection a couple times, I realized that what had given out was the motherboard connector for the fan, after the water incident. Wasted 40 dollars and several hours of my time for nothing.
The laptop that survived hours in the rain was taken down by a wee bit of water. So sad.2
Fuck ssh. It does 4 things at once and i couldn't get it to do one. I have some pi's and want a shared directory on each of them. On a server i created a user for that and mounted its home directory on a pi, it worked. I did some lockdowns (no shell, only sftp allowed, login only via keyfile), but i was still able to mount it on boot.
Now i had to migrate this setup to another server. It took me a while copying all the configuration etc. All i got for that was a error-message. I figured out the users home-directory had to be owned be root, fixed that, got another error message. Somehow scp didn't use sftp but the login shell which is /usr/sbin/nologin. That made scp (and sshfs) fail, even though it perfectly works with the other server.
I gave up and removed all the setup. I'll find another distributed filesystem for that (but not samba or nfs, those are way to complicated). Those are the setbacks that depress me.
I get anxious when I try to learn new things.
I'm not even sure how to describe it. Low self esteem? Low confidence? I dunno.
It feels like stage freight, but there's no audience or stage, it's just me and my computer.
No one really ever watches me, or judges me or anything.
I guess I'm a bit self emasculating because I don't really have a reason for feeling ashamed for trying out something in private.
But I feel that the fear, the stress is very distracting and it's limiting my progress.
Now, there's this project I'm rewriting in my company that I'm taking pride in and think that it has the potential to actually increase profits.
The stack is way better, it's visually better, the load times are better, the product is easier to access and try out, bla bla bla.
I guess I never felt truly proud of anything I've ever done in any company, most of what I did felt like grunt work.
But this one is actually a very well designed improvement.
So I'm hoping that this will be the excuse for not needing to prove myself anymore so that my mindset will be something like:
so what if I abandon another side project?
so what if I publish a game that looks like shit?
I may fail at newer projects, but I did win at that project I did in my company, and it wasn't a victory just because I say so, but also because my coworkers and bosses do too.
I don't know what else could help at this point.3
Right now, everything. I started at a Consulting firm because I expected many new problems to tackle, solutions to develop and generally to always have a fire burning underneath my ass but instead I always develop the same standard bullshit.
I miss the days in my old job when there was just a problem and the task to solve it. When I stared down giant amounts of data, just KNOWING that somewhere in that mess is some structure I could exploit and that short moment of inspiration when I finally pinpointed it. The rush of endorphins when the solution became clear and everything fell into place to form a beautiful pattern amidst the chaos test data, git commits and numpy arrays.
Now its just "Yeah, would you just write another selenium testsuite that throws out fail or pass and wastes all the information because the only reason I'm a testmanager is because I'm too incompetent to do anything else and not my passion for the field".
The constant, mind numbing repetition of always the same patterns where the occasional dynamic element that becomes stale is the highlight of my work week... I would have never thought that making good money with easy work would ever get me as close to depression as it did.6
About 3 years ago, we had 4 different WordPress sites for various clients.
My colleagues thought it'd be a genius idea to keep them all in one repo. Even more genius, for local development, a single installation which implements a switcher for the wp-config.php files so we can switch between sites. Not bad in theory.
Fast-forward to present day. 1 client left; another site got converted to using Laravel because they always asked us to update their content so no point using a CMS; whereas the remaining 2 sites use differing versions of WordPress on their live sites, no less than 18 months out of date, have no dev sites, different collection of plugins and themes and both modified to the deepest darkest depths of fucking hell that's barely recognisable as WordPress anymore and next to no documentation or comments around the changes.
The functions.php file of one of these themes is over 4000 lines long!!!
We're keen to upgrade our servers to use Ubuntu 16.04 which defaults to PHP7, so all the already deprecated WordPress functions will then fail to work completely as will have been removed.
Both of these clients have agreed that they wish to convert Laravel as well so there's not really much point in going through the clean up process of their WordPress sites. Just copy the database nuke it all and start a fresh with Laravel FFS!
They also wish to completely redesign and discuss what features to keep/add/remove. With no date for these redesign meetings in sight, we won't be converting to Laravel any time soon, nor upgrading our servers in the foreseeable future either!
This is all because of one dev in the office and his history of failing to keep on top of breaking changes!
Fuck you! Seriously, fuck you!!!
If I was your superior, then you'd have been fired long ago!3
Had a definite week from hell... a bunch of prod issues that only I could fix (that's a whole other rant for another day!)... a piece of code totally kicking my ass for days... a hosting environment that was unstable seemingly every time I needed to do something in it (and that killer piece of code could ONLY be properly tested there, naturally!)... a service that my app depends on flaking out with no indication what the problem was and another team responsible for it that is based off-shore so aren't responsive when I need them to be... a metric shit-ton of procedural bullshit dropped on my head... an immense amount of stress due to the lead-up to a prod rollout next month that absolutely CANNOT fail without huge ramifications for the business but not enough help to ensure it gets done.
But, with all that said, I DID manage to get that killer piece of code working late on Friday after slamming my head against the wall for over a week on it (and ultimately re-writing it from the ground-up on Thursday and Friday)... so, the week of hell ended on a high note at least, which is always a Very Good Thing(tm)!2
nothing new, just another rant about php...
php, PHP, Php, whatever is written, wherever is piled, I hate this thing, in every stack.
stuff that works only according how php itself is compiled, globals superglobals and turbo-globals everywhere, == is not transitive, comparisons are non-deterministic, ?: is freaking left associative, utility functions that returns sometimes -1, sometimes null, sometimes are void, each with different style of usage and naming, lowercase/under_score/camelCase/PascalCase, numbers are 32bit on 32bit cpus and 64bit on 64bit cpus, a ton of silent failing stuff that doesn't warn you, references are actually aliases, nothing has a determined type except references, abuse of mega-global static vars and funcs, you can cast to int in a language where int doesn't even exists, 25236 ways to import/require/include for every different subcase, @ operator, :: parsed to T_PAAMAYIM_NEKUDOTAYIM for no reason in stack traces, you don't know who can throw stuff, fatal errors are sometimes catchable according to nobody knows, closed-over vars are passed as functions unless you use &, functions calls that don't match args signature don't fail, classes are not object and you can refer them only by string name, builtin underlying types cannot be wrapped, subclasses can't override parents' private methods, no overload for equality or ordering, -1 is a valid index for array and doesn't fail, funcs are not data nor objects when clojures instead are objects, there's no way to distinguish between a random string and a function 'reference', php.ini, documentation with comments and flame wars on the side, becomes case sensitive/insensitive according to the filesystem when line break instead is determined according to php.ini, it's freaking sloooooow...
enough. i'm tired of this crap.
it's almost weekend! 🍻2
Found a bug today that made me groan in frustration.
It appears that the official elasticsearch debian package checks if the system's init daemon is systemd by... Checking if systemctl binary is available.
Issue is... Systems might contain that binary while using a different init, as the binary is part of the "systemd" package.
To actually switch to systemd however, the package systemd-sysv has to be installed, which creates a link from /bin/init to systemd's main executable.
What happens when your system doesnt use systemd then? The postinstall/preremove scripts fail as systemctl fails to talk to the system bus, and thus, the installation is marked as failed!
Oversights like this are exactly the reason behind my systemd dislike. We never wanted the systemd package, but another key package suddenly added it as a dependency one day...
Now to see if this is reported as a bug already, and if not, to report it myself...
(also, who checks for init by looking for the init's management utility?! Its like I checked if sysvinit is installed by checking if update-rc.d is installed!
And not like figuring out the system's init daemon is hard anyway! Just check /bin/init, or, better yet, check for process with pid 0!)1
By looking at the prototypes and technical ideas which I fail to implements due to various reason , I got an idea.
I got an idea to have a kind of grave yard where people can bury their fail prototype and technical ideas and other people can dug them for inspiration or profits.
As the saying goes "One man trash is another man treasure."
I hope this idea of making a grave yard will not be "an actual fail idea"5
First laptop I ever owned (around a decade old) continues to live, just in another form. After the first 6 years, the battery died, half the keyboard doesn't work, and the monitor began to fail.
But it still works, so I have decided to give it new life. Gonna make it a new body, add an SSD, new battery, substitute screen, replace keyboard... Maybe this is too costly. No, it must be done.
Finally install a lightweight Linux distro. It shall be glorious!2
I like docker. I think the technology is cool and I have a few ideas on how I can use it. But I sometimes think I'm too stupid to use it.
I'm currently trying to convert parts of my dev environment to use containers. But following tutorials on it confuses me and I get lost with it really quickly and get discouraged for a few days until I give it another try and fail again
Like fuck I already know I'm mediocre but this makes me feel like i should go into a manual labor field instead of software development6
Well, after I convince my most beloved client which, minimal design is meant to stay well, clean and sleek. There can't be too much elements to be in it. So user can have a very comfortable experience browsing your website...
Then the ClientA said:" But I hope to show them more about my business..."
*facepalm* I surrender... yet another doomed to fail site coming soon...
So, today, I wanted to try setting up a wireguard VPN server on my little raspberry pi at home. I... expected /some/ issues, but what I found dumbfounded me.
1 - I already had the wireguard package from the unstable branch of the main raspbian repo installed... Huh, okay.
2 - Setting up config was extremely easy... Wow, so the rumors were true. Wireguard really is almost dumb-simple.
3 - Failed to create a network interface? Oh, trouble, here it is! So lets see... modprobe wireguard... Nope. Don't have the module? What?
4 - Reconfigure package to rebuild the module - missing kernel headers? Huh... weird
This was the simple stuff... Then I went down the rabbit hole of the Raspberry Pi ecosystem:
1 - There is the Raspberry Pi Bootloader, that is apparently separate from the Kernel itself. And I didn't seem to have any of the standard linux-image-* installed... What? Weird, yet there I was, running a 4.19.42-v7+ kernel...
2 - No kernel and no headers... What... The... Fuck
3 - Okay, so... Lets just... try to install the latest kernel image then? One apt-get install... It downloaded the image, but during package configuration, it failed because... I didn't have... its headers? What? What for? And if it needs them (for whatever reason), why isn't the headers package as a dependency? Ugh, whatever...
4 - Another apt-get install and... Okay, building the initrd image aaaaand...
WHAT. What is it this time!?
Oh... Ran... No more space on device? What? Is /boot independent? Of course it is, it has to be, its a bloody different filesystem
Okay, so, lets che-OH MY GOD WTF.
Its just bloody 45 MBs big! The entire /boot is just 45 MBs large. WHY. THE. FUCK.
This was a default raspbian install from I have no idea when. But... Why. Oh WHY would ANYONE pre-configure /boot to be this incredibly tiny!?
No wonder the new init ramdisk couldn't fit in there! Its already used up from 64%!
Thanks, Raspbian Devs, now I gotta reinstall the whole system because, yes, the /boot is, of course, sector 8192. Just far enough from 2048 that there are *some* sectors free - About 3 MBs.
So what did I try? Remove the partition and recreate it from the very beginning. Only... I never tried in in the past, and okay, kernel doesn't like having the partition where its image resides deleted on the fly, it will not give up FDs pointing there or something.
So now, I have a system I cannot reboot, or it will never boot back up :|
I need to get a cheap 1U somewhere or something T.T1
I got a SIM card activated for my dad yesterday. Here in SA you need to verify your identity to get the card activated. But the company's systems were offline yesterday while I got it from another distributor of theirs 2 shops over. Now a day later they tell me I have to go and get another one because the one I got won't be activated because of it being offline. Something about it being assigned to me while it is offline makes it not work.
WHAT BULLSHIT? WHO THE HELL CODES THAT TRIPE TO FAIL TWICE AS HARD AS IT SHOULD? IT MAKES NO SENSE IF THE THING IS OFFLINE FOR THIS TO HAPPEN.
And yet, with Telkom's legendary poor service I know the service people are not lying. They just don't know what the hell is going on.
Still as a scholar who has had his intership I decided that I was finally confident enough in my ability to apply for a small part-time programming job. I had an internship at a cool exhausting place with tons of expertise and I've proven myselve over there. So now I wanted a job on the side. Nothing special, just something that would make a little money with programming instead of washing dishes at the restaurant.
So I started at this small internet based startup (2 or 3 progammers) as a backend-oriented programmer. The working hours were amazingly compatible with my school schedule.
The lead dev also sounded like a smart guy. He had worked as a backend guy for years and had code running on verry critical public infrastructure that if it were to fail we'd be evacuated from our homes.
As a first asignment I got an isolated task to make an importer for some kind of file format that needed integration. So I asked for access to the code. I didn't get it since they were going to re-do the entire backend based on the code I wrote. I just needed to parse the file in a usable object structure. So I found out that the file format was horrible and made a quite nice set of objects that were nice. At the end of the first week or so I asked if I could get access to the code again, so I could integrate it. Answer was no. The lead dev would do that. I could however get access to my private repository.
Next week a new intern was taken to build a multiplatform responsive app. Only downside was that all the stuff he had ever done was php based websites. It wasn't going anywhere anytime soon, but I figured that that was where internships were for. So I ended up helping him a lot and taught him some concepts of OOP and S.O.L.I.D. and the occasional 30 minute rants of IndexOutOfRangeException, ArgumentException and such.
So one day he asked me how to parse a json string and retrieve a specific field out of it.
I gave him something like the following to start with:
if(!JObject.TryParse(jsonString, out json))
if(!json.tryget("foo", out value).../// code continues
but then the main dev stepped in and proposed the following since it wouldn't crash on an API change:
dynamic json = new JObject(jsonString);
string value = json.myJsonValue;
After me trying to explain to him that this was a bad choise for about 15 minutes because of all kinds of reasons I just gave up. I was verry mad that this young boy was forced to use bad programming pracises while he was clearly still learning. I know I shouldn't pick up certain practises. But that boy didn't.
Almost everytime the main dev was at the office I had such a mindboggling experience.
After that I got a new assignment.
I had to write another xml file format parser.
Of course I couldn't have any access to our current code because... it was unnecesary. We were going to use my code as a total replacement for the backend again.
And for some reason classes generated from XSD weren't clear enough so after carefull research I literally wrapped xsd generated code in equivalent classes.
At that moment, I realized I made some code that was totally useless since it wasn't compatible with any form of their API or any of the other backend code. (I haven't seen their API. I didn't have access to the source.) And since I could've just pushed them generated XSD's that would've produced thesame datastructure I felt like I was a cheat. I also didn't like that I wasn't allowed to install even the most basic tooling. (git client or, Ide refactoring plugins, spelling checker etc...)
Now I was also told that I couldn't discuss issues with the new guy anymore since it was a waste of my valuable time, and they were afraid that I taught him wrong concepts.
This was the time that my first paycheck came in so I quitted my job.
I haven't seen any of the features that I've worked on. :)
Fuck my integration tests. They fail everytime in another way. Every computer restart other gremlins get into the machine and fuck up the tests another way. I've got no fuckin idea where to even start....2
Top 12 C# Programming Tips & Tricks
Programming can be described as the process which leads a computing problem from its original formulation, to an executable computer program. This process involves activities such as developing understanding, analysis, generating algorithms, verification of essentials of algorithms - including their accuracy and resources utilization - and coding of algorithms in the proposed programming language. The source code can be written in one or more programming languages. The purpose of programming is to find a series of instructions that can automate solving of specific problems, or performing a particular task. Programming needs competence in various subjects including formal logic, understanding the application, and specialized algorithms.
1. Write Unit Test for Non-Public Methods
Many developers do not write unit test methods for non-public assemblies. This is because they are invisible to the test project. C# enables one to enhance visibility between the assembly internals and other assemblies. The trick is to include //Make the internals visible to the test assembly [assembly: InternalsVisibleTo("MyTestAssembly")] in the AssemblyInfo.cs file.
Many developers build a POCO class in order to return multiple values from a method. Tuples are initiated in .NET Framework 4.0.
3. Do not bother with Temporary Collections, Use Yield instead
A temporary list that holds salvaged and returned items may be created when developers want to pick items from a collection.
In order to prevent the temporary collection from being used, developers can use yield. Yield gives out results according to the result set enumeration.
Developers also have the option of using LINQ.
4. Making a retirement announcement
Developers who own re-distributable components and probably want to detract a method in the near future, can embellish it with the outdated feature to connect it with the clients
[Obsolete("This method will be deprecated soon. You could use XYZ alternatively.")]
Upon compilation, a client gets a warning upon with the message. To fail a client build that is using the detracted method, pass the additional Boolean parameter as True.
[Obsolete("This method is deprecated. You could use XYZ alternatively.", true)]
5. Deferred Execution While Writing LINQ Queries
When a LINQ query is written in .NET, it can only perform the query when the LINQ result is approached. The occurrence of LINQ is known as deferred execution. Developers should understand that in every result set approach, the query gets executed over and over. In order to prevent a repetition of the execution, change the LINQ result to List after execution. Below is an example
public void MyComponentLegacyMethod(List<int> masterCollection)
6. Explicit keyword conversions for business entities
Utilize the explicit keyword to describe the alteration of one business entity to another. The alteration method is conjured once the alteration is applied in code
7. Absorbing the Exact Stack Trace
In the catch block of a C# program, if an exception is thrown as shown below and probably a fault has occurred in the method ConnectDatabase, the thrown exception stack trace only indicates the fault has happened in the method RunDataOperation
8. Enum Flags Attribute
Using flags attribute to decorate the enum in C# enables it as bit fields. This enables developers to collect the enum values. One can use the following C# code.
he output for this code will be “BlackMamba, CottonMouth, Wiper”. When the flags attribute is removed, the output will remain 14.
9. Implementing the Base Type for a Generic Type
When developers want to enforce the generic type provided in a generic class such that it will be able to inherit from a particular interface
10. Using Property as IEnumerable doesn’t make it Read-only
When an IEnumerable property gets exposed in a created class
This code modifies the list and gives it a new name. In order to avoid this, add AsReadOnly as opposed to AsEnumerable.
11. Data Type Conversion
More often than not, developers have to alter data types for different reasons. For example, converting a set value decimal variable to an int or Integer
Running tests on Codeception. Upgraded 2.4.0 to 2.4.1 and 40 out of 280 tests fail. Apparently Yii2 module has been "refactored". Fine, upgrade to 2.4.2 that fixes the issues reported in 2.4.1 - another set of tests fail for different reasons. Digging deeper. Turns out the "refactoring" includes a very opinionated change of behaviour when components have some internal state. But if it's acceptable to pass testing framework module rewrite in a minor bugfix release - then fuck Codeception in general.
I'll have to make some tough choices over the next 6 months. With my tech career beginning and my college education ramping up, time is of the essence, and the skills I develop now will be at the forefront of my future. So what does this have to do with Microsoft?
Well, the story begins in the Spring of 2016. Social Forums was about to turn a year old, Trump's campaign was ramping up, and I had just found my love for technology. With all my friends having phones, I had to get a phone and get working on development. The year before, Windows 10 was launched, and I was psyched. I found Microsoft's products to be underrated with potential. That day, I purchased a Lumia 640, upgraded it to Windows 10, and immediately began working. After another year-and-a-half gone by, I went from loving Microsoft, to defending Microsoft, to tolerating Microsoft. I could go on and on about the lousy structure, the privacy issues, the forced upgrades, the redundant developer platform, and other such issues that is leading me away from them. But if there is one thing they have proven over the years, is that the they are completely out of touch with its developers and its customers. They spent years ramping up their phones. They failed. They spend years ramping up their phones. They failed. They spend years ramping up their semi-annual OS updates. They failed. So why did they fail? It's not that they made the wrong prediction out of chance. They legitimately don't care about feedback. It's their way or the highway. This sounds vaguely familiar. They have been spending a decade ignoring feedback from the community because they want to become just like Apple. Right now, Apple LIVES off of brand loyalty and its stable, useful ecosystem. This cannot work for Microsoft as they don't have a lot of brand loyalty. But most of all, they don't have a working ecosystem. They have Windows Insiders, which provides them with hundreds of feedback messages per day. These include suggestions, bug reports, and constructive criticism. The feedback is public. You can have several pages of the same complaint, and they still won't do anything about it. They say they have a good relationship with their community, and that this Beta program helps Windows become better for all. But in the end, we are nothing more than a glorified unpaid labor force. They fired hundreds of professional debuggers just before the Insider Program took off. We are only here to provide bug reports for free. Now that their phones, AR headsets, browser, online services, and VR headsets are failing for all these reasons, I see little reason to develop for Windows anymore. I don't just mean their UWP and App Store platforms, I mean Windows as a whole. I'm definitely not a Mac guy either. I never see myself going to Mac either, as they are really no different in terms of how they treat their Developers and PC users. If things continue down this route, I will leave the platform all together. I've always wanted to be a Systems Programmer, so I don't really need an established paid platform to be successful. Even now, I'm not certain about leaving Windows altogether but as a developer, I need to find my place. Time is of the essence in my life, and I need to find out my place in the software world. Now I think it isn't on the Windows platform like I had dreamed it would be. But where do I go?10
Another great website error code fail (dumped its full error output to the website):
Traceback (most recent call last):
File "/usr/lib/python2.4/site-packages/trac/web/api.py", line 436, in send_error
File "/usr/lib/python2.4/site-packages/trac/web/chrome.py", line 808, in render_template
template = self.load_template(filename, method=method)
File "/usr/lib/python2.4/site-packages/trac/web/chrome.py", line 768, in load_template
self.templates = TemplateLoader(
File "/usr/lib/python2.4/site-packages/trac/web/chrome.py", line 481, in get_all_templates_dirs
for provider in self.template_providers:
File "/usr/lib/python2.4/site-packages/trac/core.py", line 78, in extensions
return filter(None, [component.compmgr[cls] for cls in extensions])
File "/usr/lib/python2.4/site-packages/trac/core.py", line 213, in __getitem__
component = cls(self)
File "/usr/lib/python2.4/site-packages/trac/core.py", line 119, in maybe_init
File "/usr/lib/python2.4/site-packages/authopenid/authopenid.py", line 157, in __init__
db = self.env.get_db_cnx()
File "/usr/lib/python2.4/site-packages/trac/env.py", line 335, in get_db_cnx
File "/usr/lib/python2.4/site-packages/trac/db/api.py", line 90, in get_read_db
return _transaction_local.db or DatabaseManager(env).get_connection()
File "/usr/lib/python2.4/site-packages/trac/db/api.py", line 152, in get_connection
return self._cnx_pool.get_cnx(self.timeout or None)
File "/usr/lib/python2.4/site-packages/trac/db/pool.py", line 172, in get_cnx
return _backend.get_cnx(self._connector, self._kwargs, timeout)
File "/usr/lib/python2.4/site-packages/trac/db/pool.py", line 105, in get_cnx
cnx = connector.get_connection(**kwargs)
File "/usr/lib/python2.4/site-packages/trac/db/sqlite_backend.py", line 180, in get_connection
return SQLiteConnection(path, log, params)
File "/usr/lib/python2.4/site-packages/trac/db/sqlite_backend.py", line 255, in __init__
TracError: The user apache requires read _and_ write permissions to the database file /home/trac/morituri/db/trac.db and the directory it is located in.
A few years ago we had a fail-over which was successful until we started failing everything back to primary servers. The applications could not start at all.
4 hours into troubleshooting, only to find out some java security files were misbehaving. Update from another server and it worked.
Up to date i haven't understood how it failed
another fail. this time during uni diploma defense. i'm the most unlucky person i swear. i didn't speak very confidently and got 93/100. those who were confident, got 100... #3002
recently, I was working on a project to playback archived call recordings, and another developer was hired. part of my job is also to support a third party automation framework for customers, so I got "seconded" to support a proof of concept. the original project had now been messed up, it works, however, the functionality that made it secure has been MASSIVELY compromised for the sake of effort. I've tried to cause a stink as we have a major customer who will fail the next PCI audit. opinions on the situation. the other developer has a lot more experience, but seems to have chosen to satisfy management on deadlines over the original spec...