I like the Forbes model. Ad blocking is not a long-term sustainable model. Sites that produce original content need to be funded in some way. Forbes says 'if you're not willing to see the ads here, then please don't come to our site'. I don't consider their content worth disabling the tracking blocker that I use (note: I don't block ads, I block flash and I block known tracking JavaScript. If your ads rely on that, then you're collateral damage), so I don't get past the page with the warning.
Deciding that you do value their content, but you're not willing to accept their revenue model is hypocritical. I'd be quite happy with an ad blocker that applied the Forbes model globally - if a site is too annoying, just block the entire site. For one thing, it would encourage sites to pursue alternate revenue streams, rather than assuming that the advertising bubble will keep growing forever.
Autonomous weapons would not make mistakes. They would do their jobs -- too well.
That's a big assumption. Autonomous covers a wide range of behaviours. We already have one example of an autonomous (i.e. long term deployment requiring no human intervention to remain operable) weapon: landmines. I wouldn't say that they don't make mistakes.
And that's not just Free Software Foundation propaganda, it's simple capitalism. If only the device vendor can control the software that runs on the device then it's a monopoly situation and we've all seen how well they work. If you have the source and the ability to reflash the device, then there is competition among third-party firmware vendors and only the ones that provide value to the end user will succeed.
If the university president manages to raise $50million in donations, he's worth the $1million salary. You justify it in practical terms.
Is he? Would someone else willing to work for 'only' half a million been unable to raise that much? Their value is not that they bring in $50m, it's that they bring in $1m more than would have been brought in without paying them $1m.
Since pretty much the beginning, the Linux developers approved, condoned, and encouraged binary, non-GPL modules
Is not even remotely true. Greg KH and Alan Cox have both stated publicly that this is not the case, but more formally the kernel has an explicit set of symbol annotations for things that they consider to be public interfaces (which do not therefore invoke the GPL, because - possibly modulo the recent Oracle ruling - interfaces can not be copyrighted and so being a derived work of something that is not copyrighted can not spread the GPL, and even without this the Linux kernel license contains an explicit exemption for these interfaces). Anything that interacts with code that is not part of these interfaces is a derived work of the kernel and covered by the requirements of the GPL. Given how deeply ZFS must hook into the VM and VFS subsystems to work, it's pretty likely that it requires touching GPL'd parts.
Companies like nVidia sidestep this, because the GPL is a distribution license. They provide a binary blob, most of which is developed as part of a cross-platform effort and so is not a derived work of the kernel. They also distribute a shim. The shim is a derived work of the kernel, and the parts of the blob that talk to the shim could possibly be argued to be derived works of the shim, but the only license that would be violated if they were would be the GPL on the shim, and so the only person with standing to sue nVidia would be nVidia. The fact that they've had to jump through these hoops to do so is evidence that not doing so would not be condoned by the various copyright holders of the kernel. I challenge you to find one example of a binary-only kernel module that is distributed with the awareness and consent of the Linux copyright holders and uses anything other than the interfaces declared public.
The CDDL is a per-file license, so may be linked with code under any license without issues unless those issues come from the other license.
I am not a lawyer, but I've spent enough time with IP lawyers to have had most of these discussions before.
Inter-process communication would be a disaster for something very high-performance like a 3D video driver
For the nVidia driver (for cards from the last 5 or so years), that also includes communication between userspace and the kernel. Nothing in the kernel driver is on the critical path for performance. The kernel driver is responsible for mapping device rings into userspace and setting up memory mappings. Everything else goes directly from userspace to the hardware. The userspace driver writes data to shared buffers and sends commands into the memory-mapped ring buffer, then pokes a couple of memory mapped device registers to tell the card to read them commands. For Tesla, the ring buffer design was completely batshit insane, but apparently it's improved since then.
You'd be surprised at how little it takes. A tiny proportion of the population ever bothers to contact their representatives. There was a Slashdot article a couple of years back about how many letters it took for an issue to come to a congressperson's attention. For a representative, it was only double figures, for a senator it was triple digits.
Point out this case to them. Point out the total value to the economy of things like the iPod and other personal digital music players. Point out that this is vastly more than the total music and movie industries combined. Point out that laws surrounding DRM have ensured that no one could release a portable movie player that let you rip your DVDs / BluRays and so an entire industry has been unable to exist. Ask them why they hate job creation so much.
Most of the core of computer science is the same as it was 50 years ago, at least. The core of logic, graph theory, game theory, and complexity theory has not changed. Even object orientation (which is more software engineering than computer science) is an idea that dates back to the late '60s. Smalltalk 71 first language to be explicitly designed to support object orientation (so just misses the 50 year window), but Alan Kay had been using the ideas in Lisp earlier.
Depends on what you mean by 'Linux'. If you mean GNU/Linux with X11, I agree. If you mean something running on a Linux kernel... a lot of people are using cheap Android tablets as their primary computing device.
Your link is to a nuclear powered ramjet. Ramjets are air breathing engines and, unless I have been seriously misled, there is a shortage of air between here and Mars. You're probably thinking of nuclear thermal rockets.
The faster your trajectory, the closer you need to get to the mass that you're slingshotting (not orbiting) around. If you want a solar sail to survive, then you want to make sure that this radius is outside of the radius of the outer atmosphere. If you want the spacecraft to survive, then you need to make sure that this radius is outside of the planet's crust. Otherwise, you'll just end up with a smallish deflection and go off in a totally useless direction.
Some donations are good, some are bad. Mother Teresa objected to foreign medical aid donations because they allowed the government to abrogate responsibility for helping its own citizens. Sometimes when you donate something, you end up reducing its local value to such a degree that you destroy the ability for anyone to produce it locally, which ends up just fostering dependence without doing anything to alleviate the underlying problems.
But that's irrelevant because we're not talking about donations here, we're talking about illegal cross subsidy. Facebook is not donating money to fund access to the Internet, they are subsidising the sale of devices to access Facebook so that they can sell eyeballs to advertisers. This kind of market distortion is exactly the sort of thing that antitrust laws exist to prevent.
Now imagine that you need an access point for every room where you want a connection
At work, we already have an access point in every couple of rooms and complex configurations to make sure that adjacent ones are not on overlapping frequencies (solving the three-colour problem in 3D is not fun). Having an access point per room and no leakage between rooms would be a huge improvement, especially if it allowed seamless migration to and from WiFi for when wander into a signal blackspot.
WiFi is fine for blanketing a moderately large area, but it degrades when a lot of people are using it. In a lot of places, you'd like to have one access point per room and no spillover from adjacent rooms. That's exactly what you'd get from LiFi (which is an even more stupid name than WiFi). Stick the access points on the ceiling and they'll likely work anywhere in the room. If you've ever been to FOSDEM, remember what happens when 3,000 geeks in one lecture theatre see the 'WiFi sponsored by Cisco' announcement and decide to test it all at once. Now imagine that you had something that you could point directionally at small groups of seats.
As far as I can tell, the only way writers and artists are able to make money from content on the internet is by putting up a kickstarter and basically saying "send me money".
You mean using the novel business model of work for hire, something that is older than copyright?
You're completely ignoring the cost of cash. For a small store, it typically takes at least half an hour per to balance the register at the end of the day if most people have used cash. That's three hours of employee time per register that you have to pay (or do yourself, if you don't want minimum-ways employees to be in a position where they can easily defraud you). You don't have to pay to deposit the cash, but you do have to pay for someone's time to transport the cash to the bank, stand in the queue, and get the receipt, and for the fuel that they consume doing so. If they're carrying large amounts of cash, you also have to pay for the security and you have to pay elevated insurance premiums for having a lot of cash on the premises.
Cash is better for small shops, but only for very small shops. Most moderately successful small shops would find it cheaper if everyone used credit cards.
Let's take Tetris as an example. Shapes need to rotate, which you need to implement via a state machine (lots of game development kits have built-in DSLs for state machines, but this one is very simple). You need to make the shapes advance down, but that's just integer addition in a loop. Collision detection is just a matter of trying the advance and seeing if any of the blocks would hit. Then you just need to check if there are any full lines. I'd probably implement this by having a per-line counter that I added to when I stopped a shape, but even a naive loop-of-loops would be fast enough on a vaguely modern computer, even in a purely interpreted language. If you're happy with the blocks being filled rectangles, then the core data structure is just a two-dimensional array.
So, with the current grid being grid[width][height] and the current shape being shape[4][4] (true for a block there, false if there's no block), we have:
Collision detection is just a nested loop, i,j both from 0 to 4. If grid[x+i][y+j] && shape[i][j], then we've collided. If we get to the end of the loop with no collision, then we haven't. Requires basic understanding of loops and of arrays and the basics of logical operations.
Left and right arrow keys just increment / decrement x, run collision detection, undo if we collided or if the shape is off the edge (detecting the edge of the shape is simpler than collision detection, but we can just provide the left and right edge widths with the shapes).
For each shape, have an array of 4 rotations. Up arrow key just increments a counter, replace current image with current_shape[counter %4], run collision detection, undo if we collided.
Basic game play is just start at (width/2 - 2),0, each second we increment y, run collision detection. If we've collided, check if we've made any new lines and delete them (just shift all of the blocks down - simple loop will do this). Then start a new block. If it has collided on initial insertion, then the player has lost.
There's a little bit more than that for keeping scores, but that's the core logic of Tetris. With a game development kit that lets you put sprites on the screen tied to simple data structures, it's very easy.
I like the Forbes model. Ad blocking is not a long-term sustainable model. Sites that produce original content need to be funded in some way. Forbes says 'if you're not willing to see the ads here, then please don't come to our site'. I don't consider their content worth disabling the tracking blocker that I use (note: I don't block ads, I block flash and I block known tracking JavaScript. If your ads rely on that, then you're collateral damage), so I don't get past the page with the warning.
Deciding that you do value their content, but you're not willing to accept their revenue model is hypocritical. I'd be quite happy with an ad blocker that applied the Forbes model globally - if a site is too annoying, just block the entire site. For one thing, it would encourage sites to pursue alternate revenue streams, rather than assuming that the advertising bubble will keep growing forever.
Autonomous weapons would not make mistakes. They would do their jobs -- too well.
That's a big assumption. Autonomous covers a wide range of behaviours. We already have one example of an autonomous (i.e. long term deployment requiring no human intervention to remain operable) weapon: landmines. I wouldn't say that they don't make mistakes.
And that's not just Free Software Foundation propaganda, it's simple capitalism. If only the device vendor can control the software that runs on the device then it's a monopoly situation and we've all seen how well they work. If you have the source and the ability to reflash the device, then there is competition among third-party firmware vendors and only the ones that provide value to the end user will succeed.
If the university president manages to raise $50million in donations, he's worth the $1million salary. You justify it in practical terms.
Is he? Would someone else willing to work for 'only' half a million been unable to raise that much? Their value is not that they bring in $50m, it's that they bring in $1m more than would have been brought in without paying them $1m.
Since pretty much the beginning, the Linux developers approved, condoned, and encouraged binary, non-GPL modules
Is not even remotely true. Greg KH and Alan Cox have both stated publicly that this is not the case, but more formally the kernel has an explicit set of symbol annotations for things that they consider to be public interfaces (which do not therefore invoke the GPL, because - possibly modulo the recent Oracle ruling - interfaces can not be copyrighted and so being a derived work of something that is not copyrighted can not spread the GPL, and even without this the Linux kernel license contains an explicit exemption for these interfaces). Anything that interacts with code that is not part of these interfaces is a derived work of the kernel and covered by the requirements of the GPL. Given how deeply ZFS must hook into the VM and VFS subsystems to work, it's pretty likely that it requires touching GPL'd parts.
Companies like nVidia sidestep this, because the GPL is a distribution license. They provide a binary blob, most of which is developed as part of a cross-platform effort and so is not a derived work of the kernel. They also distribute a shim. The shim is a derived work of the kernel, and the parts of the blob that talk to the shim could possibly be argued to be derived works of the shim, but the only license that would be violated if they were would be the GPL on the shim, and so the only person with standing to sue nVidia would be nVidia. The fact that they've had to jump through these hoops to do so is evidence that not doing so would not be condoned by the various copyright holders of the kernel. I challenge you to find one example of a binary-only kernel module that is distributed with the awareness and consent of the Linux copyright holders and uses anything other than the interfaces declared public.
The CDDL is a per-file license, so may be linked with code under any license without issues unless those issues come from the other license.
I am not a lawyer, but I've spent enough time with IP lawyers to have had most of these discussions before.
Inter-process communication would be a disaster for something very high-performance like a 3D video driver
For the nVidia driver (for cards from the last 5 or so years), that also includes communication between userspace and the kernel. Nothing in the kernel driver is on the critical path for performance. The kernel driver is responsible for mapping device rings into userspace and setting up memory mappings. Everything else goes directly from userspace to the hardware. The userspace driver writes data to shared buffers and sends commands into the memory-mapped ring buffer, then pokes a couple of memory mapped device registers to tell the card to read them commands. For Tesla, the ring buffer design was completely batshit insane, but apparently it's improved since then.
You'd be surprised at how little it takes. A tiny proportion of the population ever bothers to contact their representatives. There was a Slashdot article a couple of years back about how many letters it took for an issue to come to a congressperson's attention. For a representative, it was only double figures, for a senator it was triple digits.
Point out this case to them. Point out the total value to the economy of things like the iPod and other personal digital music players. Point out that this is vastly more than the total music and movie industries combined. Point out that laws surrounding DRM have ensured that no one could release a portable movie player that let you rip your DVDs / BluRays and so an entire industry has been unable to exist. Ask them why they hate job creation so much.
Most of the core of computer science is the same as it was 50 years ago, at least. The core of logic, graph theory, game theory, and complexity theory has not changed. Even object orientation (which is more software engineering than computer science) is an idea that dates back to the late '60s. Smalltalk 71 first language to be explicitly designed to support object orientation (so just misses the 50 year window), but Alan Kay had been using the ideas in Lisp earlier.
Tracking. If you don't run Google Ads or Google Analytics, then Google doesn't know who visits your site. Now they will.
Grandma isn't going to use Linux, sorry people
Depends on what you mean by 'Linux'. If you mean GNU/Linux with X11, I agree. If you mean something running on a Linux kernel... a lot of people are using cheap Android tablets as their primary computing device.
No, most search bars do that by default, but allow you to disable the search suggestion logic.
And yet he won a second term, which indicates that the Democrats have had this problem for at least almost as long.
And they release quite a bit of open source code too...
It would take maybe a week or two for a competent programmer to setup their own project management system
Or GitHub can do it for you for $7/month. How much time does that buy you from a competent programmer?
Your link is to a nuclear powered ramjet. Ramjets are air breathing engines and, unless I have been seriously misled, there is a shortage of air between here and Mars. You're probably thinking of nuclear thermal rockets.
The faster your trajectory, the closer you need to get to the mass that you're slingshotting (not orbiting) around. If you want a solar sail to survive, then you want to make sure that this radius is outside of the radius of the outer atmosphere. If you want the spacecraft to survive, then you need to make sure that this radius is outside of the planet's crust. Otherwise, you'll just end up with a smallish deflection and go off in a totally useless direction.
No one should donate anything
Some donations are good, some are bad. Mother Teresa objected to foreign medical aid donations because they allowed the government to abrogate responsibility for helping its own citizens. Sometimes when you donate something, you end up reducing its local value to such a degree that you destroy the ability for anyone to produce it locally, which ends up just fostering dependence without doing anything to alleviate the underlying problems.
But that's irrelevant because we're not talking about donations here, we're talking about illegal cross subsidy. Facebook is not donating money to fund access to the Internet, they are subsidising the sale of devices to access Facebook so that they can sell eyeballs to advertisers. This kind of market distortion is exactly the sort of thing that antitrust laws exist to prevent.
You might want to take a look at some of the known attacks against EMV.
Now imagine that you need an access point for every room where you want a connection
At work, we already have an access point in every couple of rooms and complex configurations to make sure that adjacent ones are not on overlapping frequencies (solving the three-colour problem in 3D is not fun). Having an access point per room and no leakage between rooms would be a huge improvement, especially if it allowed seamless migration to and from WiFi for when wander into a signal blackspot.
WiFi is fine for blanketing a moderately large area, but it degrades when a lot of people are using it. In a lot of places, you'd like to have one access point per room and no spillover from adjacent rooms. That's exactly what you'd get from LiFi (which is an even more stupid name than WiFi). Stick the access points on the ceiling and they'll likely work anywhere in the room. If you've ever been to FOSDEM, remember what happens when 3,000 geeks in one lecture theatre see the 'WiFi sponsored by Cisco' announcement and decide to test it all at once. Now imagine that you had something that you could point directionally at small groups of seats.
As far as I can tell, the only way writers and artists are able to make money from content on the internet is by putting up a kickstarter and basically saying "send me money".
You mean using the novel business model of work for hire, something that is older than copyright?
I used to run my own business. It took all of 5 minutes to close up the till and stick it in the lock box (which I'd take home and put in my safe)
So you didn't check the takings in the till against receipts? I hope you weren't ever audited...
You're completely ignoring the cost of cash. For a small store, it typically takes at least half an hour per to balance the register at the end of the day if most people have used cash. That's three hours of employee time per register that you have to pay (or do yourself, if you don't want minimum-ways employees to be in a position where they can easily defraud you). You don't have to pay to deposit the cash, but you do have to pay for someone's time to transport the cash to the bank, stand in the queue, and get the receipt, and for the fuel that they consume doing so. If they're carrying large amounts of cash, you also have to pay for the security and you have to pay elevated insurance premiums for having a lot of cash on the premises.
Cash is better for small shops, but only for very small shops. Most moderately successful small shops would find it cheaper if everyone used credit cards.
So, with the current grid being grid[width][height] and the current shape being shape[4][4] (true for a block there, false if there's no block), we have:
Collision detection is just a nested loop, i,j both from 0 to 4. If grid[x+i][y+j] && shape[i][j], then we've collided. If we get to the end of the loop with no collision, then we haven't. Requires basic understanding of loops and of arrays and the basics of logical operations.
Left and right arrow keys just increment / decrement x, run collision detection, undo if we collided or if the shape is off the edge (detecting the edge of the shape is simpler than collision detection, but we can just provide the left and right edge widths with the shapes).
For each shape, have an array of 4 rotations. Up arrow key just increments a counter, replace current image with current_shape[counter %4], run collision detection, undo if we collided.
Basic game play is just start at (width/2 - 2),0, each second we increment y, run collision detection. If we've collided, check if we've made any new lines and delete them (just shift all of the blocks down - simple loop will do this). Then start a new block. If it has collided on initial insertion, then the player has lost.
There's a little bit more than that for keeping scores, but that's the core logic of Tetris. With a game development kit that lets you put sprites on the screen tied to simple data structures, it's very easy.