I wonder why they suggest trying to rebuild Cocoa on top of Qt, rather than starting with the existing GNUstep?
11,905 karma · joined May 21, 2009
I wonder why they suggest trying to rebuild Cocoa on top of Qt, rather than starting with the existing GNUstep?
So, at the very least there's support for C, C++, and Rust at the moment, though of course since the standards aren't yet finalized and the toolchains are evolving how well it works at any given moment may vary. I'm sure there's work going on for other languages to compile down to WASM, just not sure of the status of any other languages at the moment.
Security is all about increasing those difficulty thresholds, not absolutes.
Something more comparable to Bitcoin than regular banking would be Western Union; they make 5 billion dollars a year in revenue transferring money. And they charge vastly higher rates than the Bitcoin network does, charging in the 5-10% range for for transactions, which is a pretty hefty overhead.
The escape key issue doesn't bother me as much, but I'm not a Vim user and I already have Caps Lock mapped to escape or control depending on whether it's a modifier or not. I do use the function keys occasionally in cross-platform development tools like gitk, but I'm sure that other keybindings can be substituted and I'd be able to deal with that.
But the lack of RAM beyond 16 GB pretty much means there's no reason for me to upgrade from my 3 year old laptop. I would have considered upgrading this cycle if they offered more RAM, but as it is I'll probably hold off. Maybe if they release another in a year or so with more RAM I'll upgrade; if not, I may just switch to a Lenovo or other laptop that has more expansion room.
3 years without a bump in RAM capacity seems like an awful lot. I realize that Moore's Law is flattening out, but stagnating for 3 years like this seems like a long time.
Also, wow, I'm glad I don't maintain any popular open source projects on GitHub: https://github.com/tekezo/Karabiner/issues/660. I can't believe the number of people who think "+1", "me too", and "donated" messages are at all helpful.
Also, looks like Karabiner Elements exists as a rewrite for Sierra. https://github.com/tekezo/Karabiner-Elements Haven't yet checked if it supports the same dual behavior, though.
The last attempt, kdbus, was definitely way too complicated and funky. It went through a few rounds of review and was never merged for a good reason.
This redesign from the ground up does a lot of what you are asking for. It derives inspiration from other, well respected, capability based systems, as well as other IPC systems for the Linux kernel, like binder, which is used on one of the most popular Linux based consumer platforms, Android.
Linux already supports the IPC mechanisms supported by most of the BSDs; pipes, Unix domain sockets, POSIX IPC. But these actually have a number of shortcomings for building reliable, efficient IPC between processes.
Another inspiration that they cited as inspiration in the announcement of their talk (https://www.linuxplumbersconf.org/2016/ocw/proposals/3819), used by the most popular consumer-oriented BSD, is Mach message ports, used on in XNU, the macOS/iOS kernel. However, those are not an ideal API to adopt wholesale, as shown by the serious vulnerabilities based on trying to integrate them with a monolithic kernel: https://googleprojectzero.blogspot.com/2016/10/taskt-conside...
I would say that they have done most of what you ask. They have investigated the existing solutions, and found them wanting. They have already gone through one design that they threw away due to it being too complicated. They have picked a model that is widely respected and implemented in one form or another on most systems, a capability based model. There's a little bit of new invention here due to the ability to multicast messages and their message ordering guarantees, and probably some room for iterating, but overall, this looks like a pretty promising IPC system compared to the fairly overwrought kdbus.
And yeah, an ioctl interface may not be the prettiest, but they've said that they're using that over syscalls just because it's easier to implement and iterate out of tree that way before getting it merged, but are willing to switch to a sycall based interface if that's preferred: http://www.mail-archive.com/linux-kernel@vger.kernel.org/msg...
Besides the ioctl vs. syscall issue, which is pretty much just an implementation detail that can be solved with a wrapper API or done away with before merging, what do you find not in good taste about this proposal?
I briefly lost access to GitHub, but Twitter has been working fine every time I've checked. Posting status messages in multiple venues helps to ensure that even if one channel is down, people might be able to get status from another channel.
However, I'm not a lawyer and not involved, was just trying to summarize as well as I could, so I could be wrong.
The main benefit of Apache 2.0 is that it includes a patent grant as well. Right now, LLVM relies on a custom "developer agreement" for anyone who contributes code that includes a grant of patent rights, but it's kind of vague and fuzzy and so makes it hard for some people to contribute, and the license itself doesn't actually mention patents at all:
http://lists.llvm.org/pipermail/llvm-dev/2015-October/091536...
Theo objects to any license that applies more restrictions than the original BSD license. OpenBSD makes an exception for GPLv2 licensed utilities that have been traditionally shipped with BSDs that there's not a good replacement for, but has stopped upgrading things that have moved to GPLv3 and apparently objects to the Apache license as well.
This is a lot more than you get with just a single interactive commit operation.
You could use a commit for this purpose, and continually amend or revert this commit, but in terms of UI, it's helpful to have a set of operations specifically for moving things in and out of the staging area that's different than what you do for manipulating commits on general.
Others are people with seasonal or part time work; they work in real estate or as relationship therapists, but use driving for Uber and Lyft to cover for the times when they're less busy.
Some more are people who are just bored during the day, and want to give people rides.
A few are college students, trying to make ends meet as they pay their way through school.
And a few more are doing this full time; some are former cabbies, who find they get a lot more business this way, some are people who never would have been cabbies, but are able to find some income from Uber or Lyft.
In this case, it probably mattered because when JITing code, you need to explicitly flush instruction cache after changing code. But that's not anything the application cares about; that's something the runtime cares about, and the runtime is going to want to support taking advantage of the speed/power tradeoff without making application developers have to go to the trouble of thinking about it.
Also, from a user perspective, you don't want applications to be able to demand only the big, powerful cores. That will eat through your battery much faster, with likely very little benefit.
I could upgrade to one with the ability to drive a 4K monitor and 1TB SSD, but that's pretty much the only noticeable improvement. Sure, the CPU and GPU will probably be somewhat more powerful, but RAM and SSD space are actually my limiting factor most of the time right now. In my development, I need to run a lot of VMs, so RAM and SSD capacity are things I really need as much of as possible.
So, offering something with 32 GB of RAM, and probably a larger SSD, would make it more worthwhile for me to upgrade.
You, yourself, have spent a lot of time online and been exposed to a lot of nasty behavior, and you don't find that a lot of rude comments bother you.
From this, you conclude that those years "desensitized" you.
Other equally valid hypotheses are that you were less sensitive to such comments in the first place; the reason you hung around, and kept on interacting in the kind of places that make such rude comments, while other people may have just spent time with their meatspace friends, is that you were less sensitive than some other people who saw nasty comments, got bothered by them, and stopped hanging out in such forums.
Or another ones is that those comments you say you are desensitized to are just things that you don't care about that much. OK, so some anon was rude to you about a throwaway comment on an imageboard. Big deal. But you might react differently when people in a community you trust or which might be influential, and which you want to value your work, actually say negative things about something that you have put a lot of your life into, but have had doubts about whether it's really the right thing for you to be doing.
The list goes on. There are a lot of possible conclusions that can be drawn from "spent a lot of time on the internet and exposed to online abuse in youth, now finds self not particularly sensitive to online rudeness." Taking from that that some people might take offense at things because they haven't had such experiences is a big leap.
If it's free, but not a gateway to a paid service, I check to see if source is available; if source is available, it generally doesn't have ads (and if it does, I can just build it myself and remove them).
If the above checks fail, I check for a paid, ad-free version. If such a version exists, that implies the free version has ads. If the price is reasonable, I'll buy it, otherwise I'll skip it.
Finally you have free-as-in-beer but not as in freedom apps, that don't have paid alternative or any other way of generating revenue. I just assume those apps are either encrusted in ads or scams, so I don't install them.
I really appreciate this section, as I have been frustrated in the past by stupid password complexity requirements that actually reduce the amount of available entropy for passwords: https://pages.nist.gov/800-63-3/sp800-63b.html#appA
Note that this might have been a better link, giving an overview of the whole series and development process: https://pages.nist.gov/800-63-3/
Most of what you want to do with a regex can be done with an NFA or DFA based engine. That which can't be done with an NFA or DFA based engine is generally better handled with a parser than a regex.
There are plenty of good DFA based regex matchers out there; RE2, the Rust regex crate, GNU grep, etc. At a glance, it even looks like glibc uses a DFA, though it supports POSIX REs which support backreferences so it must use backtracking at least for REs that contain backreferences.
Predictable hash collisions were a big sources of DOS attacks in web scripting languages which use tables a lot, until they started rolling out randomized hashing algorithms to prevent easily predictable hash collisions. It seems like it would be best for languages and libraries to move to DFA based regexps, at least for anything that doesn't contain backreferences, to mitigate these kinds of issues from being easy to exploit.