A device can run arbitrary malicious code and is connected to a physical link to your car, to a system that has physical links to your engine management system, and was not written with security in mind, what's the worst that can happen?
Why not have almost all school children complete the equivalent of pre-caclulus, Calc I and Calc II, and intro to statistics by age 16?
Because calculus is a massively overrated part of mathematics. It is emphasised in the British education system because, when it was introduced, having accurate artillery tables was seen as important. It is emphasised in the US education system because, when it was introduced, being able to put a satellite into orbit with incredibly primitive computers (that might fail) was considered important.
Anything that involves pouring loads of money into blue-sky R&D tends to have big pay-offs. The question is whether one is a better investment than the other.
Even that's a stupid idea. A one-time pad is trivial to construct, can be used without any special software, and can not be cracked unless you manage to steal the key. If all you need to communicate is something short (e.g. time and location of target) then you can just post the encrypted thing in the middle of some random spam on a site like Slashdot that doesn't delete spam posts, just hides them.
Then there are techniques like linguistic steganography, that hide messages in things like misplaced apostrophes and misspelled words. Automatic detection of them is basically impossible, because they look exactly like the random permutations people use to get past spam filters. You can permute the 'BSD is dying' copypasta troll, for example, in such a way that it hides a message but doesn't perturb the readability of the text and no one will notice (most people won't read it at all), but it will make it pass through Slashdot's simple spam filters. How do you ban that?
When was the last time the USA had a president (i.e. commander in chief of the armed forces) who was not a Christian? Let's broaden that: when was the last time the USA had a President who did not feel the need to use the fact that he was a Christian in the election to be elected. JFK made the news just by being a different kind of Christian to the other Presidents!
This is the big one for me. Firefox on Android is the only Android browser that I've found that lets me have a decent policy for cookie management. The Self-Destructing Cookies plugin is the main reason that I switched to Firefox on my phone and tablet. The lack of tab sandboxing is the main reason that I stick with Safari on the desktop.
Exactly. Even if you're on a really tight budget, you can get a VM with 10-20GB of disk space and run whatever you want and enough bandwidth that you probably won't come close to the cap (unless you're serving videos) for a few dollars a month. An hour of developer time will cost more than a year of hosting. Even for a hobby project, it's pretty easy to afford.
If you use UTF-16 like Windows, you'd be out of luck though.
UTF-16 doesn't have the problem. UCS-2 (which Windows still mostly uses, even where it pretends to use UTF-16) does. UTF-16 combines the worst of both worlds: a space-inefficient variable length encoding.
The thing is, after the normalization, which is needed for any Unicode text anyway, UCS-4 becomes a plain array of characters. But UTF-8 - still not.
It becomes a plain array of codepoints. Some things still require multiple codepoints to represent, though they're relatively rare. The main advantage of UTF-32 is that if you're only broken for the things that are multiple codepoints, then most people won't notice or care. If you're broken for things that require mutlibyte UTF-8 characters, then a lot of people will notice.
Existing compilers can handle that. It was a big focus of research for Java compilers 20 years ago, now it's a solved problem. You don't need to know that the sizes of two arrays are the same. Performing LICM on bounds checks is very common, and can sometimes be done by the language front end.
I have a student doing a miniproject (coursework for the MPhil compilers course, not his MPhil project) to implement this for Julia so that it can perform polyhedral loop next optimisations in code that's bounds checked. The basic approach is very simple: you hoist the bounds checks out and insert a single check for the largest bound and a branch on the result. If that check passes, you jump to the original loop, otherwise you fall through to a clone of the loop with all bounds checks removed. The compiler can optimise this aggressively, because it has few branches in it. You statically predict that branch as not-taken and ensure that the cold path (where a bounds check will fail - you're going to be doing expensive and slow things on that path anyway, so you don't care if it's slow) is emitted somewhere where it won't pollute your cache (you can even outline it as a new function and put it on a different page so you it won't be pulled from disk unless you hit it).
The only time that this is a problem is if another thread is able to change the length of the array. Rust makes it easy to statically check that this is not going to happen. Changing a language to make life easier for compilers based on 20-year-old designs is never something that I'd recommend.
Objective-C and Smalltalk also don't have constructors in the language, they merely have them as conventions in the standard libraries, which are adopted by most third-party code. There's no reason for constructors to be special, they're just methods that initialise the object and return a pointer / reference to it, and which (by API contract) may have undefined behaviour if used on an already initialised object.
Ada is not intrinsically more readable than C, but places that still use Ada tend to be places with code review cultures that are deeply ingrained in their workflow. This tends to lead to more readable code.
for this because dependent types let you tell the compiler to prove at compile time that two arrays must have the same size.
I can think of very few optimisations where knowing this helps. Knowing exactly what the sizes of the two arrays are helps with various forms of vectorisation (especially if you also know their alignment). Knowing that two arrays don't alias is very useful for several kinds of optimisation. Knowing that they're the same length? Not so much.
Hmm, that actually sounds like a 28.8Kb/s connection. The 56K modems have a distinctive ramp as the frequency slides up and then back off if they didn't manage to connect at that speed. I lived at the end of a really bad phone line, so I could usually only get 33.6Kb/s. Hearing the modem manage to get 56Kb/s always made me happy.
Have you noticed in films, whenever someone dials a mobile phone they hear a dialling tone and then there's a series of DTMF tones? I've never had a mobile that does that (I don't think digital mobiles ever did, not sure about the first generation analogue ones), but it's still a TV and Hollywood trope.
One of my friends has that as his ringtone. You can tell people's ages, because some of us listen carefully each time it rings to hear if it manages to connect at 56K. Not intentionally - we all know it's a recording - but it's something we all got into the habit of doing when using modems and paying for calls per minute, not per MB downloaded.
I used to have one when I lived in a shared house. It had a nominal REN of 2 and a silence mode that moved the clanger away from the bell so that it just span. This increased the current drawn to the point that it silenced every other phone in the house. I considered this a very useful feature when trying to sleep!
I've not had a landline for about a decade, though my last phone did have a good ringtone that sounded like a mechanical bell.
But when one side is willing to silence speech with violence, what is the other side to do? Anonymous' position seems fairly self consistent: If people think that free speech is a bad thing, then they don't get any.
Closer to the engines means louder. They're not always in the back of the airplane.
Behind the engines is louder than directly next to them. This is why most airlines have their more expensive seats over the wings and the cheaper ones at the back. The noise expands in a cone behind the engines. Transatlantic flights that I've been on tend to be either completely packed or have lots of places with 2-3 seats per person. The seats at the back, if unused, are often reserved for flight attendants to sleep in - I've been on a couple of flights where people right at the back were sent forward so that the flight attendants could have the spare seats next to their call lights and kitchen.
Really? The first PC I owned with a USB port had options to emulate PS/2 mice and keyboards when a USB keyboard was connected. This made them useable in the FreeBSD stage one bootloader, which didn't know anything about USB (sticking a USB stack in 512 bytes is hard!). No OS support was needed, but then the OS also couldn't use any of the features of USB.
Specifying what bandwidth you have all the time is hard. Consumer connections have to be probabilistic, because most consumers can't afford (or, at least, can't justify the expense) of something with a 100% (or close) SLA. The problem is not that you don't get the full speed all of the time, it's that you don't get the full speed any of the time and the ISPs are not required to provide any guarantees about when you will get it.
A device can run arbitrary malicious code and is connected to a physical link to your car, to a system that has physical links to your engine management system, and was not written with security in mind, what's the worst that can happen?
Why not have almost all school children complete the equivalent of pre-caclulus, Calc I and Calc II, and intro to statistics by age 16?
Because calculus is a massively overrated part of mathematics. It is emphasised in the British education system because, when it was introduced, having accurate artillery tables was seen as important. It is emphasised in the US education system because, when it was introduced, being able to put a satellite into orbit with incredibly primitive computers (that might fail) was considered important.
Anything that involves pouring loads of money into blue-sky R&D tends to have big pay-offs. The question is whether one is a better investment than the other.
Even that's a stupid idea. A one-time pad is trivial to construct, can be used without any special software, and can not be cracked unless you manage to steal the key. If all you need to communicate is something short (e.g. time and location of target) then you can just post the encrypted thing in the middle of some random spam on a site like Slashdot that doesn't delete spam posts, just hides them.
Then there are techniques like linguistic steganography, that hide messages in things like misplaced apostrophes and misspelled words. Automatic detection of them is basically impossible, because they look exactly like the random permutations people use to get past spam filters. You can permute the 'BSD is dying' copypasta troll, for example, in such a way that it hides a message but doesn't perturb the readability of the text and no one will notice (most people won't read it at all), but it will make it pass through Slashdot's simple spam filters. How do you ban that?
When was the last time the USA had a president (i.e. commander in chief of the armed forces) who was not a Christian? Let's broaden that: when was the last time the USA had a President who did not feel the need to use the fact that he was a Christian in the election to be elected. JFK made the news just by being a different kind of Christian to the other Presidents!
I wonder how many people would actually notice if they got SSL errors for Google addresses and how many would just click 'accept' and move on.
Add to that, teachers have constrained vacation time which means that, if they want to travel, they can only do it at peak season prices.
allows plugins on the mobile version
This is the big one for me. Firefox on Android is the only Android browser that I've found that lets me have a decent policy for cookie management. The Self-Destructing Cookies plugin is the main reason that I switched to Firefox on my phone and tablet. The lack of tab sandboxing is the main reason that I stick with Safari on the desktop.
Exactly. Even if you're on a really tight budget, you can get a VM with 10-20GB of disk space and run whatever you want and enough bandwidth that you probably won't come close to the cap (unless you're serving videos) for a few dollars a month. An hour of developer time will cost more than a year of hosting. Even for a hobby project, it's pretty easy to afford.
InfoWorld
If you still click on the link after that, then you only have yourself to blame. I bet you click on goatse links too.
If you use UTF-16 like Windows, you'd be out of luck though.
UTF-16 doesn't have the problem. UCS-2 (which Windows still mostly uses, even where it pretends to use UTF-16) does. UTF-16 combines the worst of both worlds: a space-inefficient variable length encoding.
The thing is, after the normalization, which is needed for any Unicode text anyway, UCS-4 becomes a plain array of characters. But UTF-8 - still not.
It becomes a plain array of codepoints. Some things still require multiple codepoints to represent, though they're relatively rare. The main advantage of UTF-32 is that if you're only broken for the things that are multiple codepoints, then most people won't notice or care. If you're broken for things that require mutlibyte UTF-8 characters, then a lot of people will notice.
I have a student doing a miniproject (coursework for the MPhil compilers course, not his MPhil project) to implement this for Julia so that it can perform polyhedral loop next optimisations in code that's bounds checked. The basic approach is very simple: you hoist the bounds checks out and insert a single check for the largest bound and a branch on the result. If that check passes, you jump to the original loop, otherwise you fall through to a clone of the loop with all bounds checks removed. The compiler can optimise this aggressively, because it has few branches in it. You statically predict that branch as not-taken and ensure that the cold path (where a bounds check will fail - you're going to be doing expensive and slow things on that path anyway, so you don't care if it's slow) is emitted somewhere where it won't pollute your cache (you can even outline it as a new function and put it on a different page so you it won't be pulled from disk unless you hit it).
The only time that this is a problem is if another thread is able to change the length of the array. Rust makes it easy to statically check that this is not going to happen. Changing a language to make life easier for compilers based on 20-year-old designs is never something that I'd recommend.
Objective-C and Smalltalk also don't have constructors in the language, they merely have them as conventions in the standard libraries, which are adopted by most third-party code. There's no reason for constructors to be special, they're just methods that initialise the object and return a pointer / reference to it, and which (by API contract) may have undefined behaviour if used on an already initialised object.
Ada is not intrinsically more readable than C, but places that still use Ada tend to be places with code review cultures that are deeply ingrained in their workflow. This tends to lead to more readable code.
for this because dependent types let you tell the compiler to prove at compile time that two arrays must have the same size.
I can think of very few optimisations where knowing this helps. Knowing exactly what the sizes of the two arrays are helps with various forms of vectorisation (especially if you also know their alignment). Knowing that two arrays don't alias is very useful for several kinds of optimisation. Knowing that they're the same length? Not so much.
Hmm, that actually sounds like a 28.8Kb/s connection. The 56K modems have a distinctive ramp as the frequency slides up and then back off if they didn't manage to connect at that speed. I lived at the end of a really bad phone line, so I could usually only get 33.6Kb/s. Hearing the modem manage to get 56Kb/s always made me happy.
Have you noticed in films, whenever someone dials a mobile phone they hear a dialling tone and then there's a series of DTMF tones? I've never had a mobile that does that (I don't think digital mobiles ever did, not sure about the first generation analogue ones), but it's still a TV and Hollywood trope.
One of my friends has that as his ringtone. You can tell people's ages, because some of us listen carefully each time it rings to hear if it manages to connect at 56K. Not intentionally - we all know it's a recording - but it's something we all got into the habit of doing when using modems and paying for calls per minute, not per MB downloaded.
I used to have one when I lived in a shared house. It had a nominal REN of 2 and a silence mode that moved the clanger away from the bell so that it just span. This increased the current drawn to the point that it silenced every other phone in the house. I considered this a very useful feature when trying to sleep!
I've not had a landline for about a decade, though my last phone did have a good ringtone that sounded like a mechanical bell.
But when one side is willing to silence speech with violence, what is the other side to do? Anonymous' position seems fairly self consistent: If people think that free speech is a bad thing, then they don't get any.
Closer to the engines means louder. They're not always in the back of the airplane.
Behind the engines is louder than directly next to them. This is why most airlines have their more expensive seats over the wings and the cheaper ones at the back. The noise expands in a cone behind the engines. Transatlantic flights that I've been on tend to be either completely packed or have lots of places with 2-3 seats per person. The seats at the back, if unused, are often reserved for flight attendants to sleep in - I've been on a couple of flights where people right at the back were sent forward so that the flight attendants could have the spare seats next to their call lights and kitchen.
Really? The first PC I owned with a USB port had options to emulate PS/2 mice and keyboards when a USB keyboard was connected. This made them useable in the FreeBSD stage one bootloader, which didn't know anything about USB (sticking a USB stack in 512 bytes is hard!). No OS support was needed, but then the OS also couldn't use any of the features of USB.
Specifying what bandwidth you have all the time is hard. Consumer connections have to be probabilistic, because most consumers can't afford (or, at least, can't justify the expense) of something with a 100% (or close) SLA. The problem is not that you don't get the full speed all of the time, it's that you don't get the full speed any of the time and the ISPs are not required to provide any guarantees about when you will get it.
It was a 1974 ICL, which was a British company. It wasn't bought by Fujitsu until much later (2002).