600 karma · joined November 16, 2014
[1] https://github.blog/2018-10-21-october21-incident-report/
[2] https://github.blog/2018-10-30-oct21-post-incident-analysis/
It's worth pointing out that there are some questions on LeetCode that are absolutely fair game in the interview process. Questions along the lines of can you implement the logic of a rate limiter, can you implement some authorization logic, how would you deduplicate some data in a system, given some request headers can you implement X logic, etc. are all questions that can be closely tied to some LeetCode questions but are also regular day-to-day work. However these are questions where you don't have to memorize "tricks" to solve them in the amount of time you're given.
That being said FAANG companies are known to ask the typical "LeetCode" type of questions, so if you're applying to those companies expect such interview questions.
In Chrome you can view the source here: "view-source:https[DELETE]://github.com/olikraus/u8g2/wiki/fntlistall" (added the [DELETE] after the protocol to prevent people from accidentally loading the actual website rather than source)
In all seriousness... if a single employee can accidentally single-handedly screw things up you've got a process problem. There should be checks and balances to make sure that what you're trying to do make sense. These might be in the form of a code-review, automated validation, a staging environments, etc. Yes, these might be things that don't exist at a scrappy startup and that is fine as they'll get there eventually but for any large company not having good processes is reckless.
It might seem silly but if you're able to make slow incremental progress you'll eventually figure it out and it helps grow your intuition of what to do to fix/unstuck yourself. I don't know of any other way to develop that intuition other than going through it yourself (if you have any tips I'd love to hear your thoughts!). Yes, it might be slow at first but the compounding effect on your growth cannot be overstated. It's also not a hard rule, if you're on some sort of time crunch and need help you should obviously feel free to ask for it.
As others have mentioned approach matters a lot. Saying "this is wrong, make it X to fix it" will be received poorly most of the time. Instead you can phrase it as a conversation in the form of "What do you think of refactoring this endpoint to follow the conventions we follow throughout this repo [link to examples]. It'll make the codebase more consistent and easier to follow along for others" or "I believe using `new Buffer()` has some security issues and has been deprecated [link to deprecation notice]. We can use `Buffer.from()` instead which has the same interface." (this examples are trivial but as things get more complicated who knows... maybe what you thought was right is incorrect)
For minor things such as formatting preference I strongly recommend getting a linter/formatter at stick to what it chooses. Make sure your CI enforces its formatting.
It's also worth noting that if your size is bounded a simpler quadratic algorithm might be more maintainable overtime than a linear one (if it's easier to grok). Say max(n) = 25, it doesn't really matter if it's linear (say 4N = 100) or quadratic (N^2 = 625). In practice they're both fast enough (even though one is 6x faster) and not worth optimizing but if it can grown unbounded that's when the BigO runtimes start to matter. For something like ESBuild your input size grows larger and larger as your codebase increases and that's when you start to see slowness creep in.
Messages on macOS stores all your message in a SQLite file under ~/Library/Messages/chat.db
The question that you should try to answer is why should someone use your extension over HN built-in favorite feature (I don't mean to be rude but I personally don't see why I would want to install this).
Sure, but how many applications are you running? Let's say you have 20 applications running at 200MB each that's 4GB (50%) of your available memory with an extra 4GB for spiky workloads (if you have 16GB it drops to 25% available memory usage).
We're comparing vim (and other editors) with tools created 25 years later. The available resources back then and now are drastically different. The joke of emacs meaning "Eight Mb And Constantly Swapping" is because most computers back then only had 8MB of memory. In terms of memory consumption emacs utilized 100% back in the day compared to the 2.5% of VSCode today but people don't shit on emacs.
I don't want to come off as someone dismissing vim (and other editors). I personally use vim/tmux on a daily basis but I'm also fond of using IDEs like VSCode/IntelliJ/etc. There is a huge portion of the internet that thinks that these new editors are shitty because of their memory consumption when it is not really a good argument in 2021.
Looking at the memory utilization of my VS Code installation with all of the extension I have is currently using just shy of 200MB. Most entry level laptops today come with 8GB of memory. 200MB out of the 8GB is ~2.5% of the total memory available. If you have 16GB that drops it down to ~1.25%. Yes, vim will use much less memory but let's not pretend you're going to be using all of that memory doing something else (and if you are, you're the edge case). Most of the time it will stay idle, you might as well use it if it's a program you're more comfortable and productive with.
I'm not saying that I'm OK with the amount of resources Chrome and Electron apps utilize but the argument that we don't have enough memory for a few of them, specifically the ones that you use on your day-to-day work is honestly not a strong one.
For example, I can Cmd+Click on a function usage and it takes me to its definition. If I hover my mouse over it it displays information about the variables/function/data structure/etc. If I'm running docker containers I can attach a shell, view its logs, start/stop/restart it with the click of a button. There are thousands of extensions that allow me to augment the user experience – a Terraform extension that allows me to open resource documentation with the click of a button, running diffs on code, running code formatters, etc.
Yes, all of this is possible with vim/emacs plugins but its not out of the box and the UX is not the same (and you're lying to yourself if you claim this isn't true). Installing and managing all of these plugins (in vim at least) is a lot more painful.
As for the RAM consumption, it's honestly minimal. Running Chrome is more of a resource hog than VS Code.