Do all the things like ++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatarSign Up
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple APILearn More
Search - "lsp"
Me: PHP, please load the images.
Me: Come on PHP, the deadline is tonight.
PHP: Haha nope.
Me: What if I swap the libraries?
PHP: Still no.
Me: What if I add a symlink?
PHP: No. And also I hate you.
Me: *gives up and sends an email to the client saying we have to delay the release*
PHP: lololol jk here's the images haha
So I dual booted my pc with Ubuntu a few weeks back. And I came to a conclusion today.
Um, windows needs to go.23
Initial steps of learning any new programming language :
*heck yeah I created a calculator. Guess I'll show my family that I actually can code! *
-hey mom, dad look I made a simple calculator using python B)
- uhm... That's great son but dont we already have one of those?
- yeah but like... this is completely different it uses a different programming language than what you and I have been using all this time.
- ah I see. Good for you then
*muttering to each other*
-are you sure he's got the aptitude to be a cse?
-at this point we can just hope.
Me:*stares blindly in my dark room contemplating why I'm alive*7
Wanted to make a website with some of my friends about whatever kid thing we were into at the time. None of our parents cared, it was the 90s and nobody took the internet seriously.
Copied and pasted bits of html into notepad and FTPed them to some free webhost over dialup. The website lasted three weeks -- my friends got bored, I got hooked.
A few years later I found myself wondering why some websites used ".php" instead of ".html". I discovered this shiny new thing called PHP 4. Built a website for some video game I was into using it. Spent the next two years teaching myself everything there was to know.
Took programming in high school. Chose CS over mechanical engineering because I liked the university better. Got an internship which turned into a job which turned into a career.1
End of second week at a new job. Found what I thought was a bug and wanting to impress I fixed it. The dev reviewing my code had just started a week before me so he also had no idea what was going on. It went live Friday afternoon.
Come back Monday morning and turns out I completely broke everything and nobody could use the site all weekend. I thought I was done for sure. Was shitting myself all day waiting for the call.
TURNS OUT NOBODY EVEN NOTICED4
So we're hiring for a new junior dev and for the most part it's been going great! We have some promising candidates and I am so glad to finally have a new dev on the team!
However, I would like to take a moment and offer a few suggestions to the people who wish to work for this great and illustrious company:
PLEASE PLEASE PLEASE APPLY FOR THE JOB USING THE METHOD INDICATED IN THE AD. Please use our fancy, top-of-the-line, whiz-bang, cloud-based "talent acquisition" system that we paid way too much money for. I promise you, it's easy! Please don't send in your application by email, mail, telephone, Facebook, Twitter, Instagram, Snapchat, telegram or carrier pigeon. But most importantly...
FOR THE LOVE OF ALL THAT IS BEAUTIFUL IN THIS WORLD DO NOT SHOW UP AT OUR OFFICE UNANNOUNCED RESUME-IN-HAND. Believe it or not I do have an actual job that I spend my day doing! If I'm not in a meeting or at lunch or working from home, the best possible scenario is that you'll get 30 seconds of awkward small talk and be pointed to our whiz-bang, top-of-the-line "talent acquisition" system which you should have used in the first place (you did read the ad, right?). And at this point whatever you do...
DO NOT DEMAND AN ON-THE-SPOT INTERVIEW WHEN YOU SHOW UP UNANNOUNCED TO OUR OFFICE! Like, really? Do you think that you've wowed me so with your 30 seconds of awkward small talk that clearly I cannot wait to see what you will do with an entire hour? Look, I prepare for my interviews. I research you, your previous employers, your school and the hobbies you list on your resume. I check out your GitHub and LinkedIn. I may even Google your name! If that is all in order, I try to hassle some people into sitting in with me, find a time that works for everyone, and hope that there is a meeting room available. I'm not going to interview you at reception at 4pm on a Friday afternoon.
Please submit your application through our whiz-bang, top-of-the-line online "talent acquisition" system. Once I figure out how to log in, I promise I will spend an evening and read through all your cover letters with the utmost care. If you seem OK, you'll get an interview. There aren't that many developers in this town.7
It is once again that time of year when we say farewell to our current interns and say hello to a brand new batch.
The two groups overlap for a few days. During this time the old interns show the new interns the ropes, while the mentors silently weep in the lunchroom having realized that nothing that they've said over the last 12 months has had any effect whatsoever.
Some choice quotes:
New Intern: It says 'uncaught exception'.
Old Intern: Oh don't worry that will fix itself on production.
OI: Did you pull the code?
NI: Yeah, but I have all these weird brackets everywhere... [merge conflict]
OI: Oh yeah that happens sometimes, just delete them.
NI: It says "push to master rejected". [we enforce code reviews]
OI: Ohh that means the server is broken. You should tell someone, they have to reboot it.
NI: Where did that file save to? [we use ONLY macOS and Linux]
OI: C:\Users\<your name>\My Documents\...
OI: You can use either pgAdmin or MySQL Workbench. I like Workbench better but I couldn't get it to work, it kept giving me errors.
And of course...
OI: No, we don't use Linux. We use CentOS.
I did the math today. Only 35 more years and I can retire.5
So we are implementing a big and very complete localization management system on my company. The system has great features, indeed, but:
1. We cannot use the browser back button, because it is js and it appears no one cared about it (I am not a js Dev, but you can UAE the back button on my site that has js);
2. It is very customizable, but not intuitive. So you have one million options and you never know where to change what you need;
3. It has a save button everywhere, but most options are saved automatically, so you never know when you need to save. Actually, people from the webapp company use the save button as refresh, once we cannot use the browser refresh button;
4. Combo boxes load the elements while you scroll them, so to scroll to the bottom, you need to keep scrolling several times, waiting it to load the elements;
5. It does not allow you to open more than one tab of it at the same time. So if you need to see more than one information from different items, you need to navigate and wait the loading times to see what you need;
6. Emails are not sent in a different thread. So each action that send emails you need to keep waiting until the emails are sent (sometimes there are several emails sent in one action) to continue using it;
7. They not only store and send back your password by email if you loose it, but, as admin, if I click the button to send the user password to him/her, it keeps a copy of the email with the user password in my sent items;
8. To be able to send emails (they are really necessary), I need to include my SMTP info with login and password. So they have not only the system password saved, but everyone email login and password as well.
I am sure there is more, but I can't remember for now, and we are still trying to figure it out how to back our data, as it appears the only possible backup is their own.5
I have an exam in 4 hours. I've been studying all night and now I can't seem to retain anything.
I'm fuckin screwed.10
My biggest problem with Visual Studio Code is that every fucking piece of shit dev thinks it's their duty to introduce it to me. STOP. Just stop this shit, alright? Wanna use vscode? Fine, just don't tell me it's the best tool and I MUST use it instead of the tools I'm used to. I'm tired of this bullshit.
Every new project, every new team. Starting from js/java/.net monke and ending with PMs, I must hear this bullshit about god blessed IDE that I must use, because "why you need intellij/webstorm/rider? just install vscode and some plugins. we all use it in our project and it's ok".
FUCK YOU! Refactoring is not just renaming variables and extracting blocks of code into functions. If you want terminal integrated into your text editor with highlighting and LSP support, so be it. I want an IDE with rich refactoring tools, code analysis and good completion, database viewing/modeling support, good build tools support, good UI for git and git-diff, good test and code coverage support. I don't want your semi-IDE, bloated with hundreds of bugged third-party plugins, which I must spend a week on to configure and merry with each other before using.
JUST STOP this crap and let people use the tools they are proficient/comfortable/productive with.18
I wanted to develop a programming language since all programming languages have some shortcoming of their owns so as I walk further along in developing custom parser generator and so forth, I get to the point where I have to consider implementing the Language Server Protocol for the programming language only to realize that while ironically LSP was supposed to make it easy to to have autocompletion features and other stuff made available to other editors, you still end up requiring to make plugins/extensions for such editor like Visual Studio and Visual Studio Codes anyway despise the fact that LSP was meant to solve that. Meanwhile over at Linux Land, we have Kate editor that can be configured to simply connect to LSP server and require no plugin/extension to do so, you just specify it in json config and that's that.
Microsoft... you created LSP protocol and yet you want Plugin/Extensions still for VSCode/Visual Studio even though LSP was made to address that... Make up your mind, ffs. P.S. I have no interest in writing 100,000 LOC of extension/plugin for your editor if it can't get it's $#!^ together.19
...when you find yourself circumventing your own security measures that you lectured the entire team about...1
After working with a coworker on some odd issues, I finally decided to check on the actual ticket he needed assistance with.
From now on, we will optimize our HTML for aesthetic appeal in Chrome's dev tools. display:none is verboten.
Sometimes I wonder if I've had a stroke or if I've died and am in purgatory.
I spent hours trying to support \n, \r and \r\n in my algorithms to convert between utf16 line/col and utf8 absolute indices to comply with the LSP, before realizing that
- Orchid itself doesn't support \r
- There is no established user base
so I'm in the best position to reject all files that contain \r and offer to convert them instead.10
VSCode's file watcher doesn't fucking work though, you self-important pricks. This attitude specifically is why I hate corporate software. "This is difficult, so you should use our solution." Why is the assumption that you fuck up less than the rest of the community?15
If for some reason you decide to write a shim for a VERY COMMON LIBRARY in your project:
2. If you decide to ignore (1), at least make sure the SHIM WORKS THE SAME WAY AS THE LIBRARY
Two days of debugging sudden untraceable errors led me to find that a .so wasn't copied correctly during maintenance. fml
VSCode is doing really strange things to my language server, in such variety that I'm starting to suspect that it's simply incorrect because it's very unlikely that I'd misunderstand so many distinct things at once.
- The trace level is verbose, yet VSCode absolutely spams the LS with trace: off requests
- the capability update request I used to set file watchers never gets a response even though the standard clearly states that all requests must get responses or progress reports quickly, and I'm not getting file updates even after vscode responds to a file system change. By the way, if file watching is a capability, why can't I set it in the protocol handshake with all the other capabilities?
- my semantic token provider (used for syntax highlighting) is simply ignored, no requests, no errors
- the debug console is spamming editor internal errors2
Although I don't like facebook from various points of views (policies, etc) (still I use it with disabled platform and many other settings) I like most of their developer oriented projects. Graphql being one of them.
Likewise talking about microsoft I have grown to love vscode and language server protocol (which I find too awesome!!)
What's your rant about similar companies?
I was really teasing myself about it a week ago, but I definitely think now that building a language server before I try to get people to try Orchid is the right call.
There is a ceiling to the quality of error reporting without editor support, and because I'm not happy with the best I could've possibly gotten, I didn't really put that much effort into it. Before I got started on the language server, the interpreter would fail with the first error.
Because with LSP the new theoretical limit of DX is the lack of type information which still isn't great but it's a problem I already live with, I'm compelled to meet that limit by perfecting error detection.
It also helps that the interpreter's startup time is 2ms so I can simply run it in thread on every keystroke to generate truly live, basically instantaneous feedback.17
Currently the only 3rd party tokenization VSCode supports is a massive pile of RegEx. There's a whole discussion about how procedural tokenization could be supported without running extension code in the UI thread. The central argument against delegating this to an external worker is that if the reply doesn't arrive fast enough it might interfere with characters typed later.
1. Any computer that can run VSCode can execute somewhere in the order of a _billion_ instructions per second. To a program, the delay between keystrokes is an eternity. The only way to run out of time here is if either the dev isn't aware that the request is time sensitive, or the framework communicates to the OS that the task isn't urgent and an arbitrary amount of work is scheduled before it.
2. Chromium is the pinnacle of cybersecurity and its primary job is to sandbox untrusted user code. You don't need another thread to do it.
3. This use case fits squarely in the original design objectives of Webassembly.2
Really wish the likes of JetBrains would hurry up and offer an LSP server for every language. I'm categorically not interested in using PHPstorm because my RSI makes it impractical but I'd be happy to shell out for an LSP I can use with Neovim9