2,911 karma · joined October 19, 2016
I took this off of the Wikipedia article for "Engineering", but pretty much every definition I've seen says something like this:
> Engineering is the use of scientific principles to design and build machines, structures, and other items, including bridges, tunnels, roads, vehicles, and buildings
So if you're using scientific principles, i.e. you apply knowledge from sub-fields of computer science such as distributed systems or cryptography, then you're doing software engineering. Sometimes this is important, e.g. you need to understand how a system will scale under load if it is used by a large number of users. Other times it's not so important.
But all that agile process stuff? That's not science, nor software engineering - it's just project management. Sometimes project management is important, such as when you need to coordinate large groups of people, or manage delivery risks. But in my (probably overly) cynical opinion, Agile (in practice, big A, etc) is usually just a heavy-handed way for companies to micro-manage under-performing teams - and at least for me, this is the biggest thing that just completely sucks the joy out of programming.
> What are some good jobs for a person like this?
So given the above, I'd suggest seeking out companies that are working on interesting problems that require computer science principles to be applied, rather than just another enterprise CRUD app where the hardest part is dealing with the business stakeholders.
And avoid companies that require a lot of project management - places where every bit of work requires coordinating a larger number of people than you would normally think necessary. This is most big companies, but also a lot of small companies too.
Unfortunately, this takes a lot of jobs off the table. But if you're able to find something that fits you, that's a great result.
Maybe that'll be the next step once LLMs get very good at generating truthful text :)
Why? I have a 13" version of that laptop and installed Linux on it, it works great.
There is an easy exit strategy for Google (and Amazon), and Google has already done it for Gmail: put a reasonable cap on how much users are allowed to use (storage for Gmail, # of queries for Alexa) and charge for anything on top of that. As server-side hardware costs decrease, wait for that "billion dollar curse" to asymptotically approach zero over the course of a few years.
For rides where I go faster, I will take my road bike and wear a helmet.
For rides where I go slower, I would prefer not to wear a helmet, but mandatory helmet laws don’t make that distinction.
If someone asked me to wear a helmet while running, I would find that ridiculous. Same thing when riding my (non-road) bike.
I’m not a lawyer but my interpretation of this is that consent for Google to use location data for maps doesn’t allow them to use that same location data for email.
> Consent should cover all processing activities carried out for the same purpose or purposes. When the processing has multiple purposes, consent should be given for all of them.
There are a lot of people out there who love the way engines sound, and the increased engagement that a manual transmission brings to the driving experience. They aren't all "folks who have too much money", and I really hope this experience continues to be available to those who don't.
There's no denying that cars with DCTs or EVs are faster and better on most metrics. But they are less fun for a lot of people.
Americans just didn’t share that newfound wealth with the lower classes as well as India did.
Language servers run in a separate process to the editor, and they communicate over JSON-RPC. The nice thing about this is that the language server can be written in any programming language - which usually ends up being the language of the code being edited, rather than the language that the editor was written in.
This makes it a lot easier for language servers to be written and maintained by the people who maintain the compilers for those languages, e.g. gopls is written by the Go developers, clangd is part of LLVM.
Google shouldn't stop cancelling products that fail to get traction, they just need to learn to fail gracefully without leaving customers and developers who've built on top of their platforms in the lurch.
A lot of companies are starting to use "browser isolation" which is essentially what you're saying. A proxy runs between the client and the server, but it does more than just direct TLS streams - it actually builds the DOM and executes the JS. The resulting web page is sent to the actual client browser, which might send back things like mouse and touch events to the proxy, which will then update the page.
I think most companies are using this as a malware protection thing, but it does hide the actual client IP address and fingerprint, and I imagine it would make tracking very difficult.
Every high rise city has low rise neighbourhoods, but low rise cities don’t have high rise neighbourhoods.
So it’s a choice between a mix, or pure low rise, and I really dislike when the low rise people choose to force their taste onto others.
For example if you say "Australia" in an Australian accent, Japanese people probably wouldn't understand. So you'd have to use the "correct" Japanese pronunciation: "oh-su-to-ra-ri-a".
Another example is "Hyundai", which seems to have at least five different pronunciations. Apparently Koreans say "HYUN-day"[1], while the British say "high-UUN-digh", Americans say "HUN-day"[2] or something like "Han-die" in Spanish-speaking parts. Australians say "he-UN-day"[3]. Note to prescriptivists that this is how Hyundai's various subsidiaries say it in ads.
[1]: https://www.bbc.com/news/blogs-magazine-monitor-25813198
$ paste <(printf "a\nb\nc\n") <(printf "1\n2\n3\n") | cut -f2
1
2
3
It makes sense that "cut" and "paste" would be inverse operations, but too bad that GUIs repurposed these words for clipboard operations.But awk can do both, and does so in a single pass:
$ paste <(printf "a\nb\nc\n") <(printf "1\n2\n3\n") | awk '{ print $1 > "letters"; print $2 > "numbers" }'
$ cat letters
a
b
c
$ cat numbers
1
2
3When I built it, it was great to learn about some interesting new tech, and scratch a personal itch. But by far the biggest reason I keep maintaining it is the community. Every once in a while (maybe once a month or so) someone randomly comes up to me (in person, or in a chat) and says thanks, and tells me about how this tool saves them a huge amount of time and makes their life so much easier.
Would I want to be paid by a company, in exchange for providing features and support to them? Fuck no. That would kill any joy I had in doing this. Why would I want to ruin the fun by having to adhere to a timeline set by some corporate project manager?
If a company wants to help, what I'd much prefer is that they help out with the boring stuff. Pay someone smart to triage bugs for me, provide first-line support, write user docs, all that stuff so I can focus on the fun parts.
I feel like it should be the job of the filesystem to maintain an index and incrementally update it whenever files are created or removed, but afaict no modern filesystem offers it.
The requirements of Linus and the kernel developers are completely different from the requirements of the vast majority of users of Git, who are using it in small teams in a centralized way.
I would argue that the only benefit that this decentralization gives is a local cache, which makes things nice and fast. Most users don't need to be able to create branches easily (code review tools already let you do that, effectively) and it's just given people enough rope to hang themselves (e.g. GitFlow).
IMO the worst aspect of this needless complexity is having to explain to people "you've got 1) the branch central repo, 2) your local copy of that branch, and 3) your local branch". It gets even more complicated when personal forks come into the picture, as there are just so many copies of things to manage or trip over.
Try explaining to a junior developer why "git fetch" takes two arguments ("origin" and "master") while "git rebase" takes just one: "origin/master".
The best of the fake meats has already surpassed the worst of the real meats, and the overlap is growing quickly.
Who cares? Australia spends more than that amount on COVID tests every few days (possibly every day, actually). It’s a drop in the ocean.
It would be nice if we could ensure that by every cent was placed on a winning bet, but in the real world it’s ok to try and fail sometimes.
OpenBSD (as well as the others?) come with pdksh and nvi out of the box.