Sounds like atop is exactly what you need.
Sounds like atop is exactly what you need.
Also, if you remember enjoying hacking, maybe pick that up again? There’s a massive shortage of security engineers at all times.
First of all, you can totally do it! The field is massive, but also full of very bad programmers, and seeing how you were able to write a coherent text of three paragraphs, that already puts you ahead of the curve. Determination and perseverance is key.
I would suggest to play to your strengths. Java is still Java. Most of the progress since the 1990s was in the libraries and tooling, which only recently have become passable. The language itself also evolved somewhat, but there’s nothing that you won’t pick up in a couple of days of working with it.
Start with [1], work through all the boxes that are unfamiliar to you, practice a little on a pet project, or an open source project, and you’ll land a job in no time.
You likely have a mental model of Subversion, so what I would suggest is to try to forget as much of it as possible first, as Git is very different.
Take a tutorial that is aimed at Git beginners, e.g. [1]. This will help you start building a new mental model as well as get first practical experience.
After that, read the official docs starting wtih the object model[2]. The reason why many people struggle to get into git, especially after using other VCS, is that it was built from the ground up, without much regard of the established conventions and terminology. Linus Torvalds once mentioned that he used his experience designing file systems when developing git.
So the object model of git is very simple, but also not intuitive. However, once you understand it, everything will start making sense, including the xkcd you’ve linked.
[1] https://gitimmersion.com/ [2] https://git-scm.com/book/en/v2/Git-Internals-Git-Objects
I can’t imagine how normal people use any software at all. When something doesn’t work for me, often I can figure out what could’ve gone wrong. For instance, there might be bug in the JavaScript form handler, and I can just bypass it. Or an app doesn’t invalidate its cache properly, so I just need to flush it manually.
One problem with that is that you will end up with two EFI partitions. This is not supported very well by anything, really, so you will run the risk of Windows messing with the wrong partition anyway.
I’ve updated my comment.
Edit: it appears the PWA support in Firefox is not ideal, see responses to this comment.
Chromium is not an offshoot of Chrome, it’s more of a precursor to Chrome, and it is completely controlled by Google. As such, it will also drop support for extensions that do not support Manifest v3.
If you want to enable PWA support in Firefox, it looks like this is possible (however the experience doesn’t seem to be great, see responses to this comment): https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Guides/Installing
For other browser suggestions see, e.g. https://www.xda-developers.com/4-browsers-manifest-v2-ublock-origin/
Ah yes, that’s Android for ya.
If you wanted to support all possible drivers, you would basically need to rewrite the entire kernel. You could make one specific anticheat work by supporting its specific calls, but this will take a lot of work, and will probably be broken with the first ever update.
In the past there were projects that supported specific types of drivers, such as ndiswrapper, but that had a very limited scope.
Here’s also an answer to a similar question: https://unix.stackexchange.com/questions/544776/installing-proprietary-windows-drivers-on-linux
“take a decision” is also a valid phrase: https://www.merriam-webster.com/dictionary/take a decision
The T in “ninja” is silent. Silent and invisible.
Is that a real problem? I’ve never considered that a python package manager should be or could be faster.
To be fair, I don’t use python professionally.
I like live service games. I played hundreds of hours of Sea of Thieves and No Man’s Sky with my girlfriend. I played Overwatch with friends from work. I still play PUBG with my friends who have moved to different countries, it’s an amazing way to keep in touch.
So I cannot support the take that “killing live service games is good”.
At the same time, I don’t think signing the petition will lead to that. Louis Rossman gave a very measured response[1], which I almost completely agree with.
I also agree with Asmongold’s response, and even with his relatively radical take on IP rights[2,3].
Finally, I think everyone has the right to voice their opinion without being doxxed, sent life threats and other extremely shitty things that the internet at large is capable of.
[1] https://youtu.be/TF4zH8bJDI8 [2] https://youtu.be/AhVsyhjcndw [3] https://youtu.be/ib012R40yto
I would argue that having distinct match
and search
helps readability. The difference between match('((([0-9]+-[0-9]+)|([0-9]+))[,]?)+[^,]', s)
and search('((([0-9]+-[0-9]+)|([0-9]+))[,]?)+[^,]', s)
is clear without the need for me to parse the regular expression myself. It also helps code reuse. Consider that you have PHONE_NUMBER_REGEX
defined somewhere. If you only had a method to “search” but not to “match”, you would have to do something like search(f"\A{PHONE_NUMBER_REGEX}\Z", s)
, which is error-prone and less readable. Most likely you would end up having at least two sets of precompiled regex objects (i.e. PHONE_NUMBER_REGEX
and PHONE_NUMBER_FULLMATCH_REGEX
). It is also a fairly common practice in other languages’ regex libraries (cf. [1,2]). Golang, which is usually very reserved in the number of ways to express the same thing, has 16 different matching methods[3].
Regarding re.findall
, I see what you mean, however I don’t agree with your conclusions. I think it is a useful convenience method that improves readability in many cases. I’ve found these usages from my code, and I’m quite happy that this method was available[4]:
digits = [digit_map[digit] for digit in re.findall("(?=(one|two|three|four|five|six|seven|eight|nine|[0-9]))", line)]
[(minutes, seconds)] = re.findall(r"You have (?:(\d+)m )?(\d+)s left to wait", text)
[1] https://docs.oracle.com/javase/7/docs/api/java/util/regex/Matcher.html
[2] https://en.cppreference.com/w/cpp/regex
[4] https://github.com/search?q=repo%3Ahades%2Faoc23 findall&type=code
I’m not sure what a “music jukebox” is, and how it’s different from a music player, but I would recommend to try mpd. It should work with your collection, although I don’t have personal experience with collections of this size. Some clients might also not have been designed to work with such collections, so probably you’d have to try several.
This seems to be an encrypted file: https://stackoverflow.com/questions/47712102/sd-card-files-with-encrypted-data-console-text-in-it-how-to-get-my-files-bac
I would try magick identify
from imagemagick. If that doesn’t work, I would try strings
just to see if it has any metadata at all. Cameras usually store their model name somewhere.
This goes the other way too: don’t wave someone unless you’re completely sure it’s safe. I wish more driving schools actually taught things like this.
I don’t think it’s overhyped, at least I’ve never heard anyone hyping it up so much. I would be happy to recommend you other books if you want :)
I also don’t think it’s a big deal if you didn’t like the book. I don’t think even Knuth himself would be upset, really.