As I said, with paper voting you can be sure the ballot boxes are just boxes by inspecting them beforehand; you can see the ballot papers dropped into the box, and see that nobody is removing them or adding more; and you can watch the papers be removed from the box and counted.
There's a point in every voting chain where the voter has to trust a machine to do something.
Not true, there is no need for machines in paper voting. Elections predate computers by a long time.
The problem is that anyone can create keys with duplicate names and addresses.
Well, sure: and anyone can create duplicate Slashdot logins. (Even if Slashdot checks for unique addresses, you can easily have aaa@foo.com, aab@foo.com, etc.) Maybe one day it will be possible to use the PGP trust mechanisms for some indicator that a key belongs to a real person, who also uses it to communicate with other real people. But I am thinking of convenience and decentralization more than of security.
How does the Belgian system enforce a secret ballot? (Which is one where nobody can find out for sure how you voted, even if you want them to find out.) How can the voter be sure that his vote has been counted? You can see a ballot paper physically drop into the box, and see that nobody has tampered with the box, and watch the counting; but how to be certain the card reader is doing the right thing?
Twonz is a secure way of generating a new password for each site: the password is based on an SHA-1 hash of the site's name and a single passphrase used for all sites. So you need only remember a single passphrase (twonz calls it a 'pad'), but each site gets a different password and you can't work out one site's password from another. It's a shame this is not built in to a web browser, it is much saner than Mozilla's password manager.
Supposing for a moment that we are not including Paypal or online purchases or other things requiring very strong security, couldn't one use PGP keyservers for authentication?
In some magic way you use your PGP public key to identify yourself to Slashdot or some other website (this identification is built in to your browser, which prompts for the private key's passphrase when needed), and the site can check against a keyserver to see you do have that name and address.
Typical - you fund a shiny new building but no sooner is it in use than some bearded hippy moves in and lowers the property values.
Hoarders may pay to fund new buildings, that is true, hackers, that is true. But they cannot choose their neighbours. That's not good, hackers, that's not good.
The point is that since the prefix can be mechanically determined from the type then this is work the computer should be doing. I'm not that bothered about where it is displayed or the aesthetics of having 'lpsz' prefixes (although there are arguments against that, of course). More that I would prefer the computer to do this kind of work. At a minimum, there should be some checker program which reports cases where a variable's type differs from the prefix used.
No, sadly I don't know of any editor that can tell you the type of any variable straightaway. I suppose for strongly typed, interpretable languages (eg Haskell) you could run the interpreter in a subprocess, make sure it is up to date with the program text, and send it commands like ':type expr'. Or perhaps the editor could have the language's typing rules built in. But that gets really hairy for something like C++. The answer is maybe to have the editor and compiler in the same program, as if Emacs were not bloated enough already. (Emacs has good Lisp support, of course, but Lisp variables don't have a type - values have types but variables do not.)
FWIW, if you use gnuclient then Emacs can pop up instantly; there is a single editor which stays open and you can load files into it from the command line. Also look at the various vi emulation packages like viper, which let you have the hjkl key movement and other vi features. (Some people even recommend learning Emacs+viper as your first editor, although I think this is a bit batty.)
On the contrary, first-come-first-served is the simplest way of allocating domains and much preferable to any carefully regulated system in which the most expensive lawyer wins. Other systems you propose, such as domains only for companies or only for individuals, can be built on top of FCFS.
Of course, if everyone were using an intelligent editor, then moronic conventions like Hungarian wouldn't be necessary, because your editor could instantly tell you the type of any variable and perhaps display it in small letters above the variable name at all times.
I'm surprised that postal systems in other countries don't do more to bridge between electronic and snail mail. You should be able to write a letter, put an email address on the envelope, stick a stamp on it and have it scanned and delivered. Similarly there could be a service where (with some appropriate means for payment) you could have your SMTP message printed out and delivered like a telegram. The effort required to scan in a document and type an email address is no more than that currently expended on sorting letters (and the technology used to read handwritten postal addresses can be applied to electronic mail too). Although perhaps returning undelivered mail to the sender could be tricky.
Re:Standard response to the "why bother" crowd.
on
Ultimate Cooling System
·
· Score: 2, Interesting
They say that Intel is still manufacturing 386 processors for those who want them, but using a much smaller scale (perhaps 0.2 micron or whatever) because that's the only fabs they have nowadays. These small-scale 386es sound like they'd be easily overclockable. Similarly, someone posted on Slashdot recently about Overclocking the Genesis / Mega Drive because later models have a better m68k CPU than needed.
I feel that if you want to use a notation where the type of a variable determines part of its name, then this should be checked by the compiler. Furthermore, it should be easy to strip off the type prefixes when editing code (for those who don't like them) and add them back, since they can be automatically determined from the variable's type.
Manually prefixing each variable name with redundant information is the kind of extra work that I'd rather have the computer do for me.
I think it would help if you suggested a name that people could use which isn't subject to legal restrictions. Otherwise you end up with everyone calling the browser different things. There needs to be a name which has a technical meaning, but not necessarily a legal meaning. When OpenBSD includes perl, they have patched it a little, but it is still perl. Similarly, Linux is a trademark, but you don't need to get permission from Linus or change the name for any alteration you want to make.
When the name was changed from Firebird to Firefox there was a lot of prattle from the Mozilla people about how they had carefully researched the name and chosen it to have no trademark issues. I took this to mean that the new name would be unencumbered and one could use it without infringing any trademarks.
But it looks like they had something else in mind. In fact, they wanted to create their own legal obstacles to using the name. I wish they had made this clear from the start.
The way you do I/O in Haskell is that the main program has type 'an IO action'. So for example,
main = putStrLn "hello"
If you wanted to write two strings, you could use use the >> operator which glues two IO actions together. Or if you wanted to read a string and then write it, you would use a function of type 'IO String' to read a string - the type means 'an action which does something and returns a string' - and then glue it with >>= onto a function of type 'String -> IO ()' meaning 'make an IO action from a string'. It's weird, but workable (and there is syntactic sugar to avoid typing all these operators). All the way along you are just making these IO actions and returning them. You can quite easily put a bunch of IO actions into a list, or otherwise manipulate them - they don't get performed unless they become part of the 'main' action.
Thus, there's a MASSIVE performance loss when a functional programming language is executed on any of the existing processors.
There's also a massive performance loss with many imperative languages when compared to C. Impure functional languages like OCaml or Scheme can give programs that run about half as fast as C when using a decent compiler. This compares favourably to Java or Perl (among others).
The day someone actually invents a function processor, we could start promoting these fringe langauges.
There have been Lisp Machines - okay, Lisp isn't a purely functional language but it is high-level and some of the same arguments apply. However, your point of view is a bit odd. There should be a processor with features mapping directly to language constructs before you can start using that language? People have tried this in the 1980s and earlier, with processors optimized for running Modula-2 or similar, but on the whole it turned out to be better to make general-purpose CPUs and write compilers for them. It's not as if current CPUs are a particularly good match for C's abstractions; a language with built-in lightweight parallellism could work well with hyperthreading, for example. In any case, even if the language and CPU are horribly mismatched and everything runs a hundred times slower, that could easily be fast enough for the application. CPUs are getting cheaper but programmers, on the whole, are not.
Do you also discourage the use of Perl, or shell scripts, or Tcl, or Java? Or is it just functional languages that you don't like because they do not map to existing processors?
With that fast overclocked processor, it seems a shame not to run Linux on these machines - anyone doing that? Or at least a stripped down version for MMU-less machines.
How does the Belgian system enforce a secret ballot? (Which is one where nobody can find out for sure how you voted, even if you want them to find out.) How can the voter be sure that his vote has been counted? You can see a ballot paper physically drop into the box, and see that nobody has tampered with the box, and watch the counting; but how to be certain the card reader is doing the right thing?
Twonz is a secure way of generating a new password for each site: the password is based on an SHA-1 hash of the site's name and a single passphrase used for all sites. So you need only remember a single passphrase (twonz calls it a 'pad'), but each site gets a different password and you can't work out one site's password from another. It's a shame this is not built in to a web browser, it is much saner than Mozilla's password manager.
Supposing for a moment that we are not including Paypal or online purchases or other things requiring very strong security, couldn't one use PGP keyservers for authentication?
In some magic way you use your PGP public key to identify yourself to Slashdot or some other website (this identification is built in to your browser, which prompts for the private key's passphrase when needed), and the site can check against a keyserver to see you do have that name and address.
Actually, I meant that the 102-key layout is more logical for \ and /. Backslash is next to left-Shift, slash next to right-shift.
What about the logical layout of {,back}slash?
I wonder if you can run Mac System 7 on the thing, like in the old Amiga days.
Dragonball? Isn't that a jumped-up m68k?
Typical - you fund a shiny new building but no sooner is it in use than some bearded hippy moves in and lowers the property values.
Hoarders may pay to fund new buildings,
that is true, hackers, that is true.
But they cannot choose their neighbours.
That's not good, hackers, that's not good.
The point is that since the prefix can be mechanically determined from the type then this is work the computer should be doing. I'm not that bothered about where it is displayed or the aesthetics of having 'lpsz' prefixes (although there are arguments against that, of course). More that I would prefer the computer to do this kind of work. At a minimum, there should be some checker program which reports cases where a variable's type differs from the prefix used.
No, sadly I don't know of any editor that can tell you the type of any variable straightaway. I suppose for strongly typed, interpretable languages (eg Haskell) you could run the interpreter in a subprocess, make sure it is up to date with the program text, and send it commands like ':type expr'. Or perhaps the editor could have the language's typing rules built in. But that gets really hairy for something like C++. The answer is maybe to have the editor and compiler in the same program, as if Emacs were not bloated enough already. (Emacs has good Lisp support, of course, but Lisp variables don't have a type - values have types but variables do not.)
FWIW, if you use gnuclient then Emacs can pop up instantly; there is a single editor which stays open and you can load files into it from the command line. Also look at the various vi emulation packages like viper, which let you have the hjkl key movement and other vi features. (Some people even recommend learning Emacs+viper as your first editor, although I think this is a bit batty.)
On the contrary, first-come-first-served is the simplest way of allocating domains and much preferable to any carefully regulated system in which the most expensive lawyer wins. Other systems you propose, such as domains only for companies or only for individuals, can be built on top of FCFS.
Of course, if everyone were using an intelligent editor, then moronic conventions like Hungarian wouldn't be necessary, because your editor could instantly tell you the type of any variable and perhaps display it in small letters above the variable name at all times.
I'm surprised that postal systems in other countries don't do more to bridge between electronic and snail mail. You should be able to write a letter, put an email address on the envelope, stick a stamp on it and have it scanned and delivered. Similarly there could be a service where (with some appropriate means for payment) you could have your SMTP message printed out and delivered like a telegram. The effort required to scan in a document and type an email address is no more than that currently expended on sorting letters (and the technology used to read handwritten postal addresses can be applied to electronic mail too). Although perhaps returning undelivered mail to the sender could be tricky.
They say that Intel is still manufacturing 386 processors for those who want them, but using a much smaller scale (perhaps 0.2 micron or whatever) because that's the only fabs they have nowadays. These small-scale 386es sound like they'd be easily overclockable. Similarly, someone posted on Slashdot recently about Overclocking the Genesis / Mega Drive because later models have a better m68k CPU than needed.
I feel that if you want to use a notation where the type of a variable determines part of its name, then this should be checked by the compiler. Furthermore, it should be easy to strip off the type prefixes when editing code (for those who don't like them) and add them back, since they can be automatically determined from the variable's type.
Manually prefixing each variable name with redundant information is the kind of extra work that I'd rather have the computer do for me.
More to the point, it's a desktop computer with a touch screen interface and an attached money dispenser.
I think it would help if you suggested a name that people could use which isn't subject to legal restrictions. Otherwise you end up with everyone calling the browser different things. There needs to be a name which has a technical meaning, but not necessarily a legal meaning. When OpenBSD includes perl, they have patched it a little, but it is still perl. Similarly, Linux is a trademark, but you don't need to get permission from Linus or change the name for any alteration you want to make.
When the name was changed from Firebird to Firefox there was a lot of prattle from the Mozilla people about how they had carefully researched the name and chosen it to have no trademark issues. I took this to mean that the new name would be unencumbered and one could use it without infringing any trademarks.
But it looks like they had something else in mind. In fact, they wanted to create their own legal obstacles to using the name. I wish they had made this clear from the start.
The way you do I/O in Haskell is that the main program has type 'an IO action'. So for example,
main = putStrLn "hello"
If you wanted to write two strings, you could use use the >> operator which glues two IO actions together. Or if you wanted to read a string and then write it, you would use a function of type 'IO String' to read a string - the type means 'an action which does something and returns a string' - and then glue it with >>= onto a function of type 'String -> IO ()' meaning 'make an IO action from a string'. It's weird, but workable (and there is syntactic sugar to avoid typing all these operators). All the way along you are just making these IO actions and returning them. You can quite easily put a bunch of IO actions into a list, or otherwise manipulate them - they don't get performed unless they become part of the 'main' action.
Do you also discourage the use of Perl, or shell scripts, or Tcl, or Java? Or is it just functional languages that you don't like because they do not map to existing processors?
Similarly, if one product is advertised as '90% fat free' and another as '99% fat free' then the second is ten times more 'fat free' than the first.
With that fast overclocked processor, it seems a shame not to run Linux on these machines - anyone doing that? Or at least a stripped down version for MMU-less machines.