If a window spans two screens that have different DPI values, how should the window system behave?
Use the DPI that matches at least one of them? I don't see how using some absurd "middle-ground" (which will make both look ugly) is better than that.
If a PC is connected to a physically large monitor, such as an HDTV, the user is likely to be sitting significantly farther away than arm's length.
An application could easily query the monitor's size via xrandr and adapt. A usage case where someone is tiling an image across screens with different sizes and resolutions is not a very common case -- no need to ruin the experience of 99.99% of users just because of that.
What problems has AMD with virtualization? -- this is not a rhetorical question, I'm using qemu+kvm and amd everyday, but apparently I'm too stupid to figure out how wretched I am. Has it anything to do with that piece of shit android emulator?
When my mother can use it without me walking her through changing her monitor resolution,
I don't use windows and I don't know your mother, but I know dozens of windows users who bitterly complain about not being able to use their 21" or 23" monitors because the fonts are too small, and not a single one of them was able to figure out by themselves (or even google it) how to change that horrible 96dpi default. In windows it's something like 3 clicks away (and they don't need to change the "resolution"; that would be stupid). The same operation on my father's xfce (linux) desktop is probably 4 or 5 clicks away -- do you think THAT makes any difference?
With the demise or CRTs, usability means a) automatically using the monitor's natural resolution, and b) NOT forcing some 96dpi default just because some moron webdesigners weren't able to design things that scale. Both current windows and linux distros get the first right and fuck up the second (in linux because the xorg guys intentionally crippled the x11 server to make it "windows-compatible")
in practice you notice your code doesn't scale because it's grindingly slow when you test it out.
Do you test it for all possible inputs?
There are a lot of things that run fine most of the time and then go into an exponential trip when confronted with some "unexpected" input. Take for instance the regexp implementation in perl, javascript and anything pcre-based -- absolutely horrible depth first implementation, easy to dos, unusable in any public facing setting. Or most hashtable implementations -- very easy to trick into putting all the stuff into the same bucket and degenerate into a linked list.
The people who wrote that weren't necessarily idiots; they probably did a quick hack, found it useful and were happy with it, and by the time they noticed that it doesn't scale it was already too late
Because all those stupid snobbish tests tend by their very design to keep newcomers out. If most programmers are white and male, this will make sure things stay that way.
Bubble sort is not something you stumble upon when you learn to program by yourself -- in real life, people tend to re-invent selection and merge sort (and probably, rats or bees will do the same if you trick them into having to sort stuff). If someone is able by to consider by himself a scenario where bubble-sort is useful, then he is either someone from inside the "culture" (so part of the existing demographic) or someone who is over-qualified for a code-monkey position.
Is that supposed to be a feature? What's wrong with an address YOU can get rid of any time you want? There's already dynamic dns, reverse ssh, etc if you want to access your box from elsewhere. Being stuck with the same address (that random fuckers from the internet may dos or "report") would be a nightmare for me (and for my ISP too).
My current ISP allows me to run servers (ssh/mail/http/games/...),
What ISPs do not allow to "run servers"? All ISPs I know of only block outgoing port 25 (which doesn't make any difference, since "residential" blocks are blacklisted anyway).
If I had installed it manually in my own directory, chances are, it would refuse to run (... as it would not be setuid root)
It will probably work if started with the "--no-sandbox" option (that's what I use with a "bleeding edge" chrome I've downloaded and installed as a regular user)
I usually run browsers as a separate user that is allowed onto the X11 server via xauth (this is more out of ritual cleanliness than security -- browsers leave around much dotfile spam and they also love to start a lot of dubious garbage I don't like, like pulseaudio and dbus).
Most people would agree that making extensions use a stable API decoupled from the browser's internals is a good thing for stability and compatibility in the long run.
The same most people would agree that linux should have a stable device driver API. Except that kernel developers strongly disagree.
An extension API that's both invasive and limited combines the worst of both worlds: interfaces that would better cut loose have to be kept alive and abstracted away indefinitely, and an extension developer is loosing the benefits of power and simplicity that direct access offer.
As to security, a rogue WebExtension can still do a lot of damage and I don't think they had an army of competent code reviewers that poor over and test extensively any addon submitted.
No, because Russia fully recognized Ukraine as an independent state, with Crimea included in its borders, something that neither mainland China nor Taiwan ever did with Tibet. In fact, Russia was supposed to/guarantee/ Ukraine's territorial integrity in exchange for Ukraine giving up all the nukes it inherited from the Soviet Union.
And the Crimea was never a "full" soviet republic -- just an ASSR (a kind of reservation) from 1921 until 1945, with another short reinstatement in the '90. Its current Russian speaking majority came into place after its native population (the Crimean Tatars) had been either killed or deported.
On newer browsers, you can sleep in a loop, or more generally, "return" from an asynchronous API. All you have to do is to wrap your code in a generator. function sleep(f, ms){ setTimeout(j=>f.next(), ms) } function wget(f, url){
fetch(url).then(r => r.ok ? r.text().then(t => f.next(t)) : f.next()) } var frame = function*(){
for(var url in url_list){
code...
var text = yield wget(frame, url);
more code...
yield sleep(frame, 500);
more code...
} }(); frame.next()
It's a pity they managed to make it so awkward -- I don't understand why they have to take simple concepts from scheme or smalltalk and wrap them in obtuse abstractions (generators, iterators, factories, whatever).
Algorithms using tail recursion don't suffer from that, but instead suffer from breaking if someone a bit carelessly adds code that breaks tail recursion.
I always wondered why nobody thought about implementing some sort of pragma / gcc-style attribute to mark a function call as a tail call (and let the compiler error out if it's not a tail call, or if it's just not able to optimize the outer frame away).
2) stack usage massively limits the possibility of threading (as a large number of threads means you need small stacks fit them all in the area the OS reserved for them).
That's one of the reasons why running the threads in separate address spaces would be such a great idea;-)
The rest of the world was able to pass them by while you demanded that Firefox maintain compatibility with addons
Passed them by towards which end? Neither chrome or an addon-free firefox allow me to even stop/restart animations/timers, rebind keys or inhibit events from reaching the page's javascript.
They even lack features that were standard in ed(1) or more(1) since 30 years ago, like search in page using regular expressions.
At least on linux, chrome won't even let me stop the fucking blinking caret in the address box.
Besides, when will they finish their memory safe rust browser? I just looked at the source code of the 'nightly' branch, and it's still the same XUL/XPCOM garbage all the way down.
And even if you convert your add-ons to e10s (or designed from scratch with clear framescript/chrome separation) they'll still break it -- since 2017 they will only accept WebExtensions (aka glorified greasemonkey scripts) in their addons.mozilla.org walled garden.
As a user, I "migrated" to manually patching omni.ja -- and for the time being, I could keep doing things my way. I'm not going to troll/beg/implore them for features to include in their shitty webextensions shim garbage.
But if you're a programmer who has invested a part of your life in polishing, publishing, etc and being part of their 'ecosystem', you're pretty much SOL.
Assume everything you say is true, it seems to me there are two outcomes possible:
[...]
It's not that simple.
OpenBSD already has an image problem; it has been already viciously attacked by various trolls, using means that border on criminal (like creating a fake deraadt twitter account). Unfortunately, most of shit thrown at it has stuck.
At this point, being publicly associated with such a primitive, obvious con-man like this "Mircea Popescu" may very well be the death-knell for them.
An OSS implementation exists since years
as part of qemu (even if they don't handle
vmware version 3 images correctly - but that's easily fixed).
I always used "qemu-img" to convert vmware
images to sparse files that I mount then
as loop devices (note: don't try this with
a "modern" filesystem that doesn't support
sparse files - like reiserfs).
It's probably easy to write some FUSE module to let you do this without converting
the image first, but is it worth the trouble ?
1. It has an option to ignore the author's stylesheets (shift-G). so many great web-designed pages become readable on my 15'' monitor. 2. It's easy to change all key bindings to make it feel like vi/less (for instance) 3. It's easy to turn on/off annoying features on the fly (cookies, referrer reporting, javascript, etc)
Use the DPI that matches at least one of them? I don't see how using some absurd "middle-ground" (which will make both look ugly) is better than that.
An application could easily query the monitor's size via xrandr and adapt. A usage case where someone is tiling an image across screens with different sizes and resolutions is not a very common case -- no need to ruin the experience of 99.99% of users just because of that.
No, because the monitor reports its own size and resolution via EDID. The default should be the real DPI. All OSs support that since 20 years or so.
$ xrandr | grep VGA
VGA-0 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 477mm x 268mm
$ echo '1920 / 477 * 25.4' | bc
101.6
What problems has AMD with virtualization? -- this is not a rhetorical question, I'm using qemu+kvm and amd everyday, but apparently I'm too stupid to figure out how wretched I am. Has it anything to do with that piece of shit android emulator?
I don't use windows and I don't know your mother, but I know dozens of windows users who bitterly complain about not being able to use their 21" or 23" monitors because the fonts are too small, and not a single one of them was able to figure out by themselves (or even google it) how to change that horrible 96dpi default. In windows it's something like 3 clicks away (and they don't need to change the "resolution"; that would be stupid). The same operation on my father's xfce (linux) desktop is probably 4 or 5 clicks away -- do you think THAT makes any difference?
With the demise or CRTs, usability means a) automatically using the monitor's natural resolution, and b) NOT forcing some 96dpi default just because some moron webdesigners weren't able to design things that scale. Both current windows and linux distros get the first right and fuck up the second (in linux because the xorg guys intentionally crippled the x11 server to make it "windows-compatible")
Do you test it for all possible inputs?
There are a lot of things that run fine most of the time and then go into an exponential trip when confronted with some "unexpected" input. Take for instance the regexp implementation in perl, javascript and anything pcre-based -- absolutely horrible depth first implementation, easy to dos, unusable in any public facing setting. Or most hashtable implementations -- very easy to trick into putting all the stuff into the same bucket and degenerate into a linked list.
The people who wrote that weren't necessarily idiots; they probably did a quick hack, found it useful and were happy with it, and by the time they noticed that it doesn't scale it was already too late
Because all those stupid snobbish tests tend by their very design to keep newcomers out. If most programmers are white and male, this will make sure things stay that way.
Bubble sort is not something you stumble upon when you learn to program by yourself -- in real life, people tend to re-invent selection and merge sort (and probably, rats or bees will do the same if you trick them into having to sort stuff). If someone is able by to consider by himself a scenario where bubble-sort is useful, then he is either someone from inside the "culture" (so part of the existing demographic) or someone who is over-qualified for a code-monkey position.
Is that supposed to be a feature? What's wrong with an address YOU can get rid of any time you want? There's already dynamic dns, reverse ssh, etc if you want to access your box from elsewhere. Being stuck with the same address (that random fuckers from the internet may dos or "report") would be a nightmare for me (and for my ISP too).
What ISPs do not allow to "run servers"? All ISPs I know of only block outgoing port 25 (which doesn't make any difference, since "residential" blocks are blacklisted anyway).
It will probably work if started with the "--no-sandbox" option (that's what I use with a "bleeding edge" chrome I've downloaded and installed as a regular user)
I usually run browsers as a separate user that is allowed onto the X11 server via xauth (this is more out of ritual cleanliness than security -- browsers leave around much dotfile spam and they also love to start a lot of dubious garbage I don't like, like pulseaudio and dbus).
What is a baby kangaroo called in German?
What will the toy answer? The higher ranked answer from one of those cloying 'hot network questions' on stackexchange?
The same most people would agree that linux should have a stable device driver API. Except that kernel developers strongly disagree.
An extension API that's both invasive and limited combines the worst of both worlds: interfaces that would better cut loose have to be kept alive and abstracted away indefinitely, and an extension developer is loosing the benefits of power and simplicity that direct access offer.
As to security, a rogue WebExtension can still do a lot of damage and I don't think they had an army of competent code reviewers that poor over and test extensively any addon submitted.
No, because Russia fully recognized Ukraine as an independent state, with Crimea included in its borders, something that neither mainland China nor Taiwan ever did with Tibet. In fact, Russia was supposed to /guarantee/ Ukraine's territorial integrity in exchange for Ukraine giving up all the nukes it inherited from the Soviet Union.
And the Crimea was never a "full" soviet republic -- just an ASSR (a kind of reservation) from 1921 until 1945, with another short reinstatement in the '90. Its current Russian speaking majority came into place after its native population (the Crimean Tatars) had been either killed or deported.
No, it has not. Simply because you consider Kosovo a puppet state doesn't mean that its masters are in Tirana.
Hoping to trade them for peace, like they did with the Sinai peninsula vs. Egypt
Which happened before either Armenia or Azerbaijan were independent.
Tibet has been part of China since the Qing dynasty. OK about opression, ethnic cleansing, etc, but they did not 'annex' it in recent history.
Which they never managed to fully control and in the end had to give up -- East Timor is independent now.
On newer browsers, you can sleep in a loop, or more generally, "return" from an asynchronous API.
All you have to do is to wrap your code in a generator.
function sleep(f, ms){ setTimeout(j=>f.next(), ms) }
function wget(f, url){
fetch(url).then(r => r.ok ? r.text().then(t => f.next(t)) : f.next())
}
var frame = function*(){
for(var url in url_list){
code...
var text = yield wget(frame, url);
more code...
yield sleep(frame, 500);
more code...
}
}(); frame.next()
It's a pity they managed to make it so awkward -- I don't understand why they have to take simple concepts from scheme or smalltalk and wrap them in obtuse abstractions (generators, iterators, factories, whatever).
I always wondered why nobody thought about implementing some sort of pragma / gcc-style attribute to mark a function call as a tail call (and let the compiler error out if it's not a tail call, or if it's just not able to optimize the outer frame away).
That's one of the reasons why running the threads in separate address spaces would be such a great idea ;-)
Passed them by towards which end? Neither chrome or an addon-free firefox allow me to even stop/restart animations/timers, rebind keys or inhibit events from reaching the page's javascript.
They even lack features that were standard in ed(1) or more(1) since 30 years ago, like search in page using regular expressions.
At least on linux, chrome won't even let me stop the fucking blinking caret in the address box.
Besides, when will they finish their memory safe rust browser? I just looked at the source code of the 'nightly' branch, and it's still the same XUL/XPCOM garbage all the way down.
As a user, I "migrated" to manually patching omni.ja -- and for the time being, I could keep doing things my way. I'm not going to troll/beg/implore them for features to include in their shitty webextensions shim garbage.
But if you're a programmer who has invested a part of your life in polishing, publishing, etc and being part of their 'ecosystem', you're pretty much SOL.
It's not that simple.
OpenBSD already has an image problem; it has been already viciously attacked by various trolls, using means that border on criminal (like creating a fake deraadt twitter account). Unfortunately, most of shit thrown at it has stuck.
At this point, being publicly associated with such a primitive, obvious con-man like this "Mircea Popescu" may very well be the death-knell for them.
It's not only sad, it's ridiculous.
fuck :wq. real men use :x.
fuck :wq
:x
use
no need for 'set sm' :)
the '%' command is just fine.
he hasn't been caught for something like 50 years.
and now he has been "caught" because he has (most probably) made a deal with the authorities.
all this thing with teen ciphers & stuff is probably just silly journalism.
OT here, but new versions of gcc (with -O2) turn printf("%s\n", str) into puts(str)
it was fun to discover why some program was dumping core when given a 0 pointer instead of printing "(null)".
I have no idea what the C standard says about printf("%s", (char*)0), but IMO no optimizer should ever make such changes to the code.
An OSS implementation exists since years as part of qemu (even if they don't handle vmware version 3 images correctly - but that's easily fixed).
I always used "qemu-img" to convert vmware images to sparse files that I mount then as loop devices (note: don't try this with a "modern" filesystem that doesn't support sparse files - like reiserfs).
It's probably easy to write some FUSE module to let you do this without converting the image first, but is it worth the trouble ?
1. It has an option to ignore the author's
stylesheets (shift-G). so many great
web-designed pages become readable on my
15'' monitor.
2. It's easy to change all key bindings
to make it feel like vi/less (for instance)
3. It's easy to turn on/off annoying
features on the fly (cookies, referrer
reporting, javascript, etc)