AboutI code in anything I have to code in. but I just like how "go fish" sounds
Joined devRant on 4/7/2017
Do all the things like ++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatarSign Up
Me: Ah, I need to delete /path/to\ some/directory
... starts typing
rm -rf /path/to
finger slips, touch "Enter" too hard for my comfort, heart skips a beat, but nothing is happening. Phew. I dodged a bullet.
I'll never ever learn this lesson.2
The funny thing is that a lot of stuff feels cool when it's not you doing it. Once you've learned it, done it, it becomes mundane, easy, boring, simple.
All that I have to go on is the memory of my naive self who thought something was cool, before me doing it, and the excitement of the moment, to have done it. After that it feels like boasting to a fireman about putting out a candle with 2 wet fingers.
A lot of engineering fads go in circle.
Architecture in the 80s: Mainframe and clients.
Architecture in the 90s: Software systems connected by an ESB.
Architecture in the 2000s: Big central service and everyone connects to it for everything
Architecture in the 2010s: Decentralized microservices that communicate with queues.
Current: RabbitMQ and Kafka.
... Can't we just go back to the 90s?
I hate fads.
I hate when I have to get some data, and it's scattered on 20 different servers, and to load a fucking account page, a convoluted network of 40 apps have to be activated, some in PHP, others in JS, others on Java, that are developed by different teams, connected to different tiny ass DBs, all on huge clusters of tiny ass virtual machines that get 30% load at peak hours, 90% of which comes from serializing and parsing messages. 40 people maintaining this nightmare, that could've been just 7 people making a small monolithic system that easily handles this workload on a 4-core server with 32GB of RAM.
Tripple it, put it behind a load balancer, proper DB replication (use fucking CockroachDB if you really want survivability), and you've got zero downtime at a fraction of the cost.
Just because something's cool now, doesn't mean that everybody has to blindly follow it for fucks sake!
Same rant goes for functional vs OOP and all that crap. Going blindly with any of these is just a stupid fad, and the main reason why companies need refactoring of legacy code.13
My boss is technically my coworker.
I screamed my lungs out after it became clear that he didn't give a shit about employees that bring him money. After snatching all funds from a finished project on time, failing to deliver on the promise about bonuses (it's what I used to motivate employees to deliver the project on time), refusing to buy a new chair to replace the one held together by scotch tape and careful balancing, I decided to quit with maximum damage.
I screamed so that everybody would hear it. That encouraged another guy to get in with quitting, and within 1 month most of the team had quit, leaving the boss with a risk of lawsuits for prepaid contacts not delivered.
Knowing that piece of shit, he probably recovered and is treating other people badly, but at least every single person from the team experienced the biggest jump in careers straight after that.1
If you as a smoker lost all sense of smell, don't use any perfumes!
Sitting in a train and a dude comes in, and my eyes start tearing up from the most pungent perfume trying to cover cigarette smoke.
For fucks sake!
And generally, in summer, the only acceptable perfume is fucking soap and deodorant stick.
Holy fuck I thought I was about to faint because of suffocation.3
That moment when you get a follow up question days after a talk you have, from someone actually doing the stuff you showed and being good at it...
I've had it with these automatic updates that I didn't ask for, especially when I'm trying to switch my machine off!
How about asking me first if I want that damn update?
Why do they have to be shoved down my throat?!
That's it! I'm switching my OS!9
Have you heard the latest news?
I just found out today!
Oracle is planning to acquire OpenOffice and MySQL! What is the world going to! We'll all have to migrate our projects to FirebirdSQL3
Why does almost everyone act as if the world they live in is perfect, or is supposed to be perfect?
This is about approaching IT infrastructures, but goes way beyond IT, into daily lives.
Daniel Kahneman wrote about the "Econs" - a mythical creature that behaves according to rules and rational thoughts, that everybody is guided by, as opposed to Humans, who are irrational, intuitive and emotional.
My beef is with a wider perception, beyond economical analysis, profit, investment and so on.
Organization A uses a 15 year old system that is crappy beyond description, but any recent attempt to replace it have failed. Josh thinks that this is a crappy organization, any problem lies within the replacement of that system, and all resources should be devoted to that. Josh lives in a perfect world - where shit can be replaced, where people don't have to live with crappy systems. Josh is stupid, unless he can replace that old system with something better. Don't be Josh. Adapt to the fucking reality, unless you have the power to change it.
Peter is a moron who downloads pirated software with cracks, at the office. He introduced a ransomware that encrypted the entire company NAS. Peter was fired obviously, but Sylvia, the systems administrator, got off easily because Peter the moron was the scapegoat. Sylvia truly believes that it's not her fault, that Peter happened to be a cosmic overgrown lobotomized amoeba. Sylvia is a fucking idiot, because she didn't do backups, restrict access, etc. Because she relied on all people being rational and smart, as people in her imaginary world would be.
Amit finished a project for his company, which is a nice modern website frontend. Tom, the manager says that the website doesn't work with Internet Explorer 8, and Amit is outraged that Tom would even ask this, quoting that IE8 is a dinosaur that should've been euthanized before even hatching. Amit doesn't give a shit about the fact that 20% of the revenue comes from customers that use IE8, what's more important to him is that in his perfect imaginary world everybody uses new hardware and software, and if someone doesn't - it's their fault and that's final. Amit is a fucking asshole. Don't be like Amit.
React to the REAL world, not what you WANT the world to be. Otherwise you're one of them.
The real world can be determined by looking at all the fuck ups and bad situations, admit that they happen, that they're real, that they will keep happening unless you do something that will make them impossible to happen or exist.
Acting as if these bad things don't exist, or that they won't exist because someone would or should change it, is retarded.10
Buy some colored pens. The more colors the better.
I did it out of curiosity. Ended up being a life saver when taking notes and planning work on paper. It probably cut my work in half. I spend more time writing stuff on paper and planning stuff, but when I do write 10 lines of code, they turn out to be pure gems fitting perfectly in the entire structure. I write them with tons of confidence, knowing that I had thought of everything and I didn't forget anything, because everything is right there, in color, on the diagrams that I drew.3
First year on the job. Was already good at writing software, but bad at practices and administration. One such software was being tested live, while still in development. I was developing on the production database... .
I was working on an edit feature of sales records, in a table that already contained hundreds of subsidized sales of very expensive products. Based on that, the supplier had to compensate the shops with half the price of every item.
I forgot to add a where clause to the update. Lost all sales data. On production.
Asked the admin if there are backups and he says yes, checks to discover that the backup script failed for the last week (since it became live)
Whole thing was incredibly stupid. I made a ton of stupid mistakes, and so did the other people involved. The loss was around 1 year of my income. Luckily the client decided to brush it off as losses and claim some tax benefits and it all ended well.2
GDPR is about to happen.
Has anyone read the provisions?
It's like they put some flat earther anti-vaxers in a room and made them scribble up a law.
For those who don't know - it's a new, EU-wide "data privacy" law that's about to take effect on May 25th.
The gist of it is that if you fuck up even a little bit, you get to personally pay a fine of up to 10 Million Euros (for companies there's a separate clause, this is for employees only), or/and 2-3 years in jail if that fuck-up has caused material damages.
That little fuck-up can be as simple as losing a tiny amount of data between back-ups, or entrusting a third party with full access to some data (which is not prohibited) without controlling 100% what he can do with that data (which IS prohibited).
I shit you not, these are the explicit articles of that law.
Now now, chill. I'm using it as my main OS for a few years now. I know what I'm talking and this title is a bit click-baity, but this just has to go out there:
1. It's usable as a Windows replacement just fine - FALSE. XFCE4 is years old and buggy as hell especially on multi-monitor set-up, Gnome3 gets stuck more often than my Windows 98 machine used to, KDE is like a rich kid on meth. Plug in Bluetooth headphones? Well no, sorry, you have to research that online, since you'll probably need to install some packages for it to work. Did I say "work"? Well no, because after more research you realize that Debian on Gnome3 on gdm3 launches pulseaudio on its own, so you have 2 instances of pulseaudio, and one of them is stealing your headphones sometimes and you either have no sound or shitty sound. How do I know that you ask? The same way I know everything else - every time you try to do something new on any Linux, it involves a ton of research. Exciting research, don't get me wrong, but at this point it looks more like a toy than a reliable desktop computer operating system.
2. And why am I using pulseaudio? Why not alsa? years ago people were discussing on forums that pulseaudio is old and dead, yet here we are with new LTS release of Ubuntu still shining with Pulseaudio. How about several different service management systems being deprecated by new ones, each having different configurations and calling methods? Apparently systemd is old and lame now. It's a mix of 10 year old software that works badly, with a 5 year old replacement that works worse, somehow trying to live under the same roof. Does it work? Ask my headphones who sound like a fucking dial-up modem.
3. Let's talk about displays, shall we? xorg is old and deprecated, right? We got Wayland that's mostly stable. Don't know what that is? That's just basic knowledge for Linux. And when you try to install network-manager, it also tries to install Mir toolkits. Because why the fuck not install 3 display managers when you want a network manager, of which one is old and dying, one is young and stupid, and another is an infant that died of cancer?
4. Want to integrate with Google Drive? Yeah, there's a tool that mounts the drive as a local directory. Yeah only for Ubuntu. Want it on Debian? You need to compile it. Oh wait, it's on Ocaml, because fuck mainstream languages, we're hipsters. How do you compile Ocaml? Well you need to have Ocaml on your system, dummy. How do you do that? Well you need to compile Ocaml. Ok, how do I do that? Well, git clone, download and install some dependencies, configure, make... oh sorry, you're using libssl1.0.2g when you need libssl1.0.1f, nope, sorry, won't work. Want to install libssl1.0.1f? Why? You already have the "g", stupid! Want to remove libssl1.0.2g? Bye-bye literally everything that you have on your PC. But at least you got the "f". Does it work now? Well no, because you need libssl1.0.2g for another dependency to work.
And all I ever wanted was to get a fucking document from google drive (not nudes, I promise).
5. Want to watch a movie? Let me tear that screen in half and make the bottom half late by a couple of frames, because who needs vertical sync, right? Oh you do? Well install the native drivers maybe. Oh you have? Welcome to eternal Boot to Recovery mode, motherfucka!
Yeah, most of the times things work just fine. But the reason I know what those things are and how they work is not curiosity. The reason that I know the inner workings of Linux much better than the inner workings of Windows, is because in those few years that I've been using it full time, it has caused me 10 times more headache than I have ever experienced with other systems. And it's not the usual annoyances like "OMG it rebooted when I didn't ask it to", but more like "Oh, it won't work and I need 2 days to find out why" kind of stuff, because even if you experience the same thing again, it's always caused by some new shit and the old solution won't work any more.
I still love it, and will continue to use it. I don't know why really. Maybe because I'm not afraid of fucking it up any more? Maybe because I can do what I want in it and recovering will be easier than on Windows?
It's a toy for me, after all these years. And I also use it for professional reasons.
But whenever someone presents it as a better alternative to Windows, I just want to puke.51
I built a view engine that relied on V8 for expression evaluation and flow. Not very stable of course, since it used RegEx, but it worked fine for what it was designed for.
The crown feature was the ability to pass in lazy-evaluated huge objects to that view model, so that the view model decided what was going to be used in order to display the view. Made it really flexible, while not sacrificing speed.
I was brainstorming for 2 days about the lazy loading part, and the gymnastics that had to be implemented for this to work.
After I wrote my final line of code and thought that this is it, I launched it, and it FUCKING WORKED! First try!
I was hyperventilating, walking around the apartment like crazy, doing random push-ups just to try to utilize some energy that I felt was fighting to burst out like a xenomorph out of the chest.
... 2 weeks later I found bugs. Had to re-learn how I did it. It's true what they say: if it was hard to write, it's even harder to debug. Fixed it eventually, but that part's not that exciting.
I interviewed a guy with quite a few years of experience, university studies from a first world country, very long CV with stuff that he did, most of it relevant to the job, and 5-6 certifications, 2 of which relevant to the job, which would qualify him as an expert (as he himself declared in the CV), of a higher qualification than mine, but less experience.
Welp, if we're gonna hire someone with a higher salary, from whom I am to learn, I better come up with an interesting, but simple to understand problem, relevant to the position, that I would solve in 30 minutes, and give him 2h (surprise factor, unpreparedness, nervousness should be considered).
40 minutes in and I understand that there is lots of doing, lots of code, but the guy has no idea what he's doing.
I simplify the problem, remove the complicated bit. Turning it into a "business case description" of an entry level problem.
Same shit. In 20 minutes, zero progress. At this point the solution should be exactly 4 short lines of code. He gives me 50 that produce a completely wrong result, and he has no idea why.
I simplify further. I explicitly express the problem as the entry-level problem that it is - to count the number of interactions on the website in a specific day. That's it.
10 minutes more pass. I don't know why I'm wasting my time. Maybe I just want to be polite. Maybe I want to eliminate all doubt that it's not something else.
He couldn't even react to my explanation of why he got the wrong result, and that all he had to do is move some stuff around.
Certifications, experts, universities.
What the fuck people? Can't we be simpler, and instead be knowledgeable? The time it took him to write that list of certifications, he could've learned how to solve this problem from any introductory course.10
No, not as e-mail or for privacy reasons. Sure, that too, but it comes with "free" stuff.
It sucks because it's breaking every possible record in the worst, shittiest, most insanely stupid APIs and integrations out there on the entire fucking planet!
It is comically stupid!
Aside from their LOVE of hard-deprecating APIs every few months, requiring constant, time consuming maintenance of every tool that integrates deeply with Google services, some of their APIs, for expensive stuff, look like they've been written by Bobby McFartface from 7th grade.
Take a look at DoubleClick Search (their ad performance reporting tool, that sure does sound like one). To upload custom, additional data, you must pass in a ton of parameter, and they REQUIRE some of them to have a specific, hardcoded value. What's the point in passing that parameter then you dickheads?!
But fine, so you uploaded some stuff using the API. Now you want to delete everything and try again after you fixed a bug - well you fucking CAN'T! You can't delete stuff, you can only mark them as "deleted" using an update call.
Bulk operations? Fuck no!
Can I just add on top? Well of course not! That will raise a ton of exceptions. Same message should be transmitted using the PUT, not POST request, in order to edit.
Can I send everything to PUT? Of course not! You can't edit something that's not there, dummy!
Can I see what's there so that I can update it, and add what's missing?
Well of course not! Why on Earth would you need to see what information is in there after you uploaded it? Who needs that anyway?
Simply send, pray, and hope that everything will be fine (it will not).
Like holy fucking crap, it can't get any more stupid!
Google is a huge pile of idiots who feed on only a single cow - the search engine.
It's times like these when I think that Google right now is the worst thing that exists for everyone in tech. It's dragging everyone down with their monopolies everywhere and complete idiocy in managing them.6
Finding the right balance between well written, need-one-week, maintainable software, and fast-written, ready-in-2-hours-and-never-look-at-it-again software.
Last time it took me 20 minutes to integrate with a new API. I had a script that did everything you needed. I then spent 2 weeks on handling error responses, unexpected responses, exceptions, intelligent retries, logging, unit tests, integration tests, caching, documentation, etc.
I really wish I had worked somewhere that was hacked, so as to know how it was done, how it was found out, and what measures were taken, from the inside.
The problem is that I worked at a lot, and big places. We were never successfully attacked or hacked as far as I know. Was our security so good, that nobody succeeded? Or was it so bad, that we didn't even notice?
This is why we can never have enough software developers
It's true. No matter how many people learn to program, there will never be enough people who know how to program. They don't have to be very good at it either. It is now a required skill.
Minimum wage in first world countries is way above 5$ per hour. A Raspberry PI 3B costs 40$, or at most 1 day of work for the worst paid jobs. And it will run for years, and do routine tasks up to thousands of times faster than any employee. With that, the only excuse that people still do routine tasks, is the inaccessibility of coder time.
Solution: everybody should know how to write code, even at the simplest level.
Blue-collar jobs: they will be obsolete. Many of them already are. The rest are waiting for their turn.
Marketing people - marketing is online. They need to know how to set up proper tracking in JS, how to get atomic data in some form of SQL, how to script some automated adjustments via APIs for ad budgets, etc. Right now they're asking for developers to do that. If they learn to do that, they'll be an independent, valued asset. Employers WILL ask for this as a bonus.
Project Managers - to manage developers, they need to know what they do. They need to know code, they have to know their way around repositories.
QA staff - scripted tests are the best, most efficient tests.
Finance - dropping Excel in favor of R with Markdown, Jupyter Notebooks or whatever, is much more efficient. Customizing / integrating their ERP with external systems is also something they could do if they knew how to code.
Operations / Category Management - most of it would go obsolete with more companies adopting APIs as a way to exchange important information, rather than phone calls and e-mails.
Who would not be replaced or who wouldn't benefit from programming? Innovative artists.
A lot of it might not be now now, but the current generation will see it already in their career.
If we educate people today, without advanced computer skills and some coding, then we are educating future deadbeats.
With all this, all education should include CS. And not just as a mandatory field or something. Make it more accessible, more interesting, more superficial if needed. Go straight to use cases, show its effectiveness in the easiest way possible. Inquisitive minds will fill in the blanks, and everyone else will at least know how to automate a part of their work.
Since CS is about the science of computers and not about a particular programming language, it would be nice if assignments were accepted in any non-esoteric language, as long as it can demonstrate that the student has learned whatever he was supposed to learn.
Bonus points for explaining well why that language was chosen.1
Had to wake up 1 hour earlier today, and the worry of that kept me awake last night. Now I sit here like a zombie, hating the day that I'm going to have, which is not full of exciting coding with headphones on and Babymetal in my ears, but full of meetings.
I already see my eyes tearing up, reality fading, a guy in a meeting asking me something and pulling me back to reality so that I could stare blankly into his eyes and reply a generic "Yeah, I agree with your proposal", so everyone will think that I'm on drugs or something.
Welp... gotta go. Fuck.2
I was facing another if those problems (not bugs) that have the good solution barely outside if your reach.
I decided to pull my Ace in the sleeve and ask on stackoverflow. As I was half way through my well written question, where I had to illustrate stuff in great detail, and express clearly what is required, I realized how to solve it.
If I had written the question like many of the people who complain that SO is full of pricks who just downvote, nobody would have understood it, and I wouldn't have solved it myself. I would have been ignored and maybe even downvoted.
Write down your requirements explicitly, unambiguously, and you solve half of the problem by that. Do that on SO and you will never complain again.3
It was my first time in Berlin. I came as a tourist but started looking for a workplace, with hopes of getting a blue card and continuing work.
I searched online, going through some hiring platforms, and sent out a few messages around. I felt a special connection (I thought I was exactly who they needed), and wrote them a carefully crafted letter of intention alongside my lavish CV.
They got back to me, and I was given this task, to do while at home. I completed it, had a phone interview, and was invited on-site for a face to face interview. Everybody felt warm, I felt a connection. We already talked salary expectations, and all was going great.
They told me they'd get back to me for the next stage. ...
and they actually DID. Yes, they did!
They invited me for a second interview, but this time to prepare a technical topic to present. So I did. I picked one of the 3 topics they offered, which was about performance optimization. I had recently read materials about that, so I felt really empowered.
So far nobody told me what I was supposed to be doing at the new job, I only knew the technologies required, and what the company did for money.
I prepared a thorough presentation, with practical demos of why some things are bad for performance. While I was showing it, many people in the room were learning about this for the first time, which means I did good. The team lead had some extra questions that I wasn't able to answer in full (needed some research), but otherwise it was great.
The CTO then asked me out to lunch, to talk over some more stuff, and we had a general discussion about what drives us, our life story, etc. He said that he'd really like me to be part of the team, and that he's looking forward to working with me.
So I've been at it for almost a month. I've met everyone, got acquainted with the team, knew the biography of some of them, proven my worth, etc. I was ensured with body language, and verbal language that everything was going great. As careful as I was with this kind of stuff, I was positive that I'd get the job. I even started planning my trips, to get the documents ready.
And then I got a message stating the usual stuff "Thank you bla bla bla we don't think we'll need your services". I was shocked, but in good faith I wanted to reply something along the lines "I'm sorry it didn't work out, all the best in finding what you're looking for", but I found out that I was blocked from contacting them.
That's right. Rejected + blocked. After a month of fucking foreplay. I get rejection, even though it hurts. But being blocked?! That's just insane!8
My first PC was a USSR clone of the IBM XT 5160-086 PC, but with a different design, and beefier RAM. I was shown a game in it (barbarian), and the next evening I really wanted to play again, so I inserted the floppy disk, booted up into DOS and Norton Commander, and was stuck. It's my first ever interaction with a computer. So i typed "computer, please give me barbarian".
I was way ahead of the time you could say :)
Why does MySql least and greatest functions return null if any of the arguments are null? Who was the genius behind the idea that it's the best way to implement it, and to change this behavior in a minor version?
Why does MySql return bigint when i convert a value to integer?
Why does MySql exist?17