This is a very altruistic move on behalf of the German government... to commision and pay for
the design of software to suit their needs, yet design and develop the project as open source, so that once it is done everyone
around the world will be able to benefit from it.
Not altruistic - practical. Open-source software yields benefits to him who commissions it, not just to everyone else. You get stuff like like free bug fixes and feature enhancements from the world at large. The only major downside is that you are helping your competitors, which should not be a concern for a national government, particularly one who a few years ago decideed to "help their competitors" by contributing the strength of its Deutschmark to the Euro.
And I'm guessing that, in this case, since most of the pieces already exist and only need to be polished and integrated, the winning bid was orders of magnitude lower than the cost of a new closed-source solution.
I have no hard data aside from some benchmarks, but what I suspect is happening is this: hyperthreading enables "virtual" CPUs; so
much so that the BIOS sees 4 procs on our dual proc machines. So what happens if you have two CPU intensive threads what happen to
get loaded onto two separate virtual CPUs, but the same physical CPU?
If you have two Xeons doing HT, you ought to try Ingo Molnar's new HT-aware scheduler, which deals with exactly this issue (and a few related ones).
I'm a
big believer that source should be much more modular. Run the config and THEN download the source that you need.
So the knowledge of which config options are available for the Intel E100 network card needs to be in two places: the "base config" tarball and the "E100" tarball. No thanks.
This subject comes up often enough to have an entry in the kernel mailing list FAQ..
Seriously, VMware lets you run a regular OS on emulated hardware. UML lets you run an emulation OS on real hardware. Both run on top of a standard OS (with real hardware).
VMware is not itself an OS - it provides a virtual PC which your regular OS thinks it owns. UML is an OS, which knows full well it does not own any hardware. The processes running under UML do not necessarily know that, though, since UML provides a near-standard environment.
(Related point: for those of you who think you're going to set up a honeypot that the cracker will break into and think he 0wns the bare metal - keep in mind that UML was not really designed to hide its own nature, so it's not hard to check for. And if you crack root in the UML, it's possible to get out of it. So if you're using UML for security reasons, you probably should run it in its own chroot.)
i was wondering if you or someone could explain the differences between vservers and uml mentioned
above.
I hadn't heard of vservers, but if it's like BSD jail(), it is sort of an extension of chroot(). Basically, you can isolate a process (and its child processes) to a specific part of your directory tree which they now see as the root directory. BSD jail() adds the ability to give them access to only a specific IP address - obviously only useful if your machine has more than one, or if you want to prevent the jailed process from using the network at all. With Al Viro's semi-recent (a few months ago) kernel work, I believe it's possible to separate out the mounted filesystems per-process, which should let you protect the jailed process from the rest of the system, filesytem-wise, not just vice versa.
I don't know what else vservers offer.
UML gives you a whole new copy of the OS. New process list, new set of network servers, new filesystem tree, new everything. Devices are all virtualised - block devices have backing store on the host filesystem, network devices are tunneled, character devices are emulated. If you crack root in a chroot environment, you can get out of jail (there are several methods, one or two of which are trivial). If you crack root in UML, you can trash the UML instance, but it's much harder (though not impossible) to break out to the host Linux instance, and if you do, you're still a normal user there. And if UML is running in a small chroot with no setuid programs, cracking root outside the UML instance is impossible short of a kernel bug or a remote exploit on the host system.
Could this be used ala the NT hardware abstraction layer? Specifically, could this be used to keep nasty drivers from hosing your
system?
What, like nasty drivers can't hose your system in NT? I thought that officially that was the only thing that caused NT to crash. (:
There is no magic bullet for what you want. In order to access hardware, drivers must be at a low enough level to, well, access hardware. At that level they can screw up your system.
UML does not have any direct hardware access - and, as a result, it doesn't support any real hardware drivers either. Everything is virtual. If you want to debug your 3Com network driver, you can't do so under UML....
That said, it is sometimes possible to move hardware drivers out of the kernel. Drivers for USB and SCSI devices, for example, can use raw packet interfaces from userspace, where there are limits on what they can screw up. Also, consider the X server - it pokes at your PCI bus / AGP port, and sets CPU MTRRs, without (for the most part) involving the kernel in its machinations. But note that while there are many failure modes the system is protected from in this situation, X can still ruin your whole day if it happens to turn off interrupts and forgets to turn them back on.
I get the joke, but come on, get it right. bash won't complain about ';' because that's a statement separator. It also won't complain about the '-' until it can't find it in your path. The unbalanced ')' is what fails here.
Im astounded that UML (bad name IMHO, been used already)
Good thing that's not its real name. The kernel tree has subdirectories for "um", not "uml".
Well, I guess since everyone (including Jeff Dike, the author) refers to it as UML, that probably is its real name. But I'm glad they dropped the redundant "l" from the in-kernel architecture name. Too bad the SysKonnect SK-98xx driver is still called "sk98lin" - I mean, duh, it's in the kernel tree, it's probably for Linux....
Um, as a web developer, shouldn't you also realize that the whole intention of HTML was to give guidance to the browser on how a
web page should be laid out, and then allow the client to ultimately decide how it displays?
Heh. As if.
Sure, you and I know this. Most web developers seem not to know it. They think HTML is intended to be some sort of desktop publishing output format, like PDF. In doing so, they completely miss the point of why there exist both PDF and HTML side by side, and why neither has subsumed the other.
(Insert standard rant here on web people who ignore interoperability, accessibility and those of us who think a hand-tuned 144x72-character, 83-Hz text mode is an excellent use of GeForce + 21" display.)
I think that may be the step you're missing -- the point of Jabber isn't for the client to talk to the server, it's to route
through the server to another client (or group of clients).
Ahh, thanks - that clears it up a little. The more I think about the Jabber architecture, the more I like your comparison to e-mail. If you don't consider the store-and-forward capabilities, you have to admit Jabber looks a lot like a fancy proxy server, with 'ping' proxied as a presence protocol and regular Internet routing tunneled through the server-to-server protocol (does that have a name?).
Store-and-forward changes everything - it allows true asynchronous operation, if desired, and that in turn can foster a certain amount of anonymity. We already use email gateways for various things - I guess Jabber is a natural replacement which is better suited to applications as opposed to human communication.
Sure, you could create an email system (for example) that used raw RPC calls between client and server, but nobody else would be able to talk to it
*cough* Exchange *cough* (:
A standard protocol (eg SMTP in this case)
simplifies things greatly -- heck, I can send email via telnet to port 25 if I want.
Indeed. Oh, and speaking of extensibility - don't forget that SMTP has in fact been extended in a backward compatible way, by ESMTP. And ESMTP has its own regular extension mechanism, likewise designed for graceful operation if client and server support different extensions. (I just wanted to point out that this sort of thing by no means requires anything like XML....)
But once one person knows how to use a computer in a
village then they can teach each other, then learn more by the great amount of info already out there.
this is not about a misdirected fulfillment of a resource, but the tool where such places as Africa can become aware of themselves,
of their civil rights, of the ways they can fight off disease, cleanliness, heck. how to smelt steel. this is vital.
Awww, how touching. What a nice humanist outlook you have.
I hate to question your qualification to speak on the subject, but you sound kind of naive. It would be nice if the world worked as you say, but the parts I have seen, frankly, do not. Making a lasting impression on a culture, for which both you and I see a need [and which offends many educated minds, BTW - the classic missionary vs. anthropologist battle - but that's neither here nor there], takes a lot more than shipping in a few laptops and solar panels, and rigging up a cell tower or satellite modem or something. I get the feeling you do not quite appreciate how much more.
First there is the matter of deciding who will be responsible for the computer equipment. Remember, nobody yet has a clue how to use it, and you as an outsider don't have any way of judging the people. So you do the only possible thing: give it to the chief. The computer becomes a tool of politics - more on that below.
Then there is the training aspect. Have you ever tried to teach someone to operate a computer whose native language doesn't have a word for "computer" or "keyboard" or "quote" or "pointer" or "icon" or "sentence" or "space" or "disk"? I have. The only way it was possible to make any progress at all was to revert to French, which neither of us spoke fluently, so it was rough going. (They do have a word for "mouse"....) Note that a language barrier is only a thin disguise for what is actually a cultural barrier. The desktop metaphor, for example, isn't as useful as you'd think when people don't work in offices.
Moving on. Now that some bright kid or kids have picked up the basics of how to send and receive spam, we come to maintenance, vandalism and politics. I know, I know, you probably don't believe people could possibly be so self-destructive as to steal the satellite phone, leaving the computer as basically a doorstop, if these people even had doors, which many don't. You believe that since the 486-class machines mentioned in the article (see, I'm still on topic) are designed to be robust, with no moving parts and all, that they will actually be robust and not break down when faced with the sort of humidity you find in a rain forest nine months of the year. You believe that the truck battery, which is used to power the thing, will not grow legs within two days, or that if it does stay put, that it will last longer than a year. You believe that those who have been trained to take good care of their gateway to the Internet will actually exercise proper maintenance procedures. You believe that the computer will not divide the village into haves and have-nots, and that the whole thing won't be stolen or vandalised by the have-nots - people who will have no clue how to operate any of it - out of sheer jealousy for the haves. You believe that the OS will never crash and need a reinstall (a good bet, with Linux, but still) - at which time it would most likely become a paperweight, for whoever can afford paper.
In short, my friend, you haven't lived in central Africa. This isn't racism or cultural imperialism talking, it's experience. "Things fall apart," wrote Chinua Achebe. The great Nigerian writer knew what he was talking about.
Finally there is the small question of money, and ROI. I guess whoever is paying for this program can do what they wish, but putting the Internet out in the middle of nowhere won't be cheap, no matter what you do. If you were to make a wish list of how these people could really benefit from Western civilisation, you might start with...
schools: textbooks, blackboards, chalk, pencils/pens, books - i.e. libraries, though that's getting into the "dreaming" stage. After all, in many 3rd-world cultures, the language has only recently been written down at all - so most available books will be in another language. You could start in writing and/or translating your own books and publishing them yourself, as some people I know have done. A bit tedious but you gotta start somewhere.
adult literacy: primers, books, teachers, child care - and see note above about books.
plumbing: even hand pumps would be a luxury in many places I've been. Running water would be great, if you had...
electricity: diesel generators are hard to operate when diesel fuel is $8/gallon and hard to get. I once thought solar panels were the answer, but they're extremely expensive and limited.
medicines: antibiotics, quinine, Flagyl, and aspirin would go a long way for areas that don't have them. Vaccines, too, for things like measles and polio.
public health: literature, public health education personnel (AIDS education is still MUCH needed out there, unlike in the West), and miscellany such as traps to eradicate tse tse fly populations (yes, such traps exist, and yes, sleeping sickness is still very much alive in this day and age). Actual doctors and nurses would be most welcome in any number of villages I could name, but those are a bit more expensive. Literacy and proper plumbing are also big parts of the public health equation - see above.
agriculture - introducing new crops, new methods of farming, and technology at a locally sustainable level (plows, carts, etc) - so that when the white man leaves, there is some chance of things not falling apart.
In my book, Internet access is far down the list of things the people I've met could use from the West to improve their lives. Sure, it has a sort of Slashdot gushy excitement to it, but, like many public aid projects, it would have a lot more to do with Westerners feeling like they're making a difference than with anyone actually making a difference. Would you really rather have the 'net than the indoor john? (Don't answer that, slash-crowd! You guys are disgusting!)
Fortunately (to get back on topic), the project the article talks about is being run partly by actual Laotians (is that the right word), so presumably they have already thought through such issues as I have presented here. As I've said before, I've never been to Asia. Maybe this project can actually be made to work.
If you're piecing something together from pre-existing parts or there's a good possibility that the use of the system will extend
beyond the bounds you have direct control over, then it helps to have a few adapters and higher level protocols in the toolkit. It
may also be that those higher-level toolkits have a level of robustness and ease-of-use beyond what hand-rolling your own to a
lower level might have.
Nicely put, and sufficiently vague that it's hard to argue with.
But what I'm really arguing here is exactly what the new abstraction layer abstracts away - does it simplify anything after all? Take Jabber. I assume (without knowing, so correct me if I'm wrong) that a Jabber-based client application will do something like
look up server name using jabber presence protocol thingy
build some sort of xml data structure
send said data structure to the server in an IM-like packet
maybe wait for response, or maybe not (Jabber is supposed to be asynchronous, after all)
What I'm trying to figure out is how this is easier, more robust, or otherwise superior to
look up server name in DNS
build some sort of data structure, xml or otherwise
send a UDP packet to the server address, or possibly open a TCP connection and send the packet that way
wait on the TCP connection for a response, possibly xml structured, possibly not, or maybe just close the TCP connection if everything is supposed to be asynchronous
It looks to me like pretty much the same set of steps. I'm honestly confused about what the Jabber layer adds, other than xml buzzword compliance. Anyone?
But you may have a point. Why do people see the need to layer extra levels of abstraction on top of raw machine code? What was
wrong with assembler, Fortran and C that required Python, Perl or Java to fix?;)
Actually the way I see it my question is more like "Assume you have Perl, Python and Java running everywhere. Now imagine someone invents a Java-like language named C$ and implements it in Perl. What would be the point?"
Can anyone answer my (offtopic) side question: what does XML-RPC do better than DCE-RPC, DCOM or CORBA? Remember, "easier to implement" isn't much of an answer - those three have been widely available for many platforms (well, except DCOM) for years, so that's a solved problem.
Education can save them from Aids, kick start the economy, and provide people a way
they can network against warlords. Who knows? But it is a resource they must have.
I don't know about Laos. I've never been that far east, and I like to talk only of what I know (you know, like everyone here on Slashdot). But the Internet is not what people need in the jungles of central Africa.
Bill Clinton once came to Africa and decided that what the schools all needed was to be wired. I have no idea whatever came of his plans for this, but the point is, I really didn't understand how he could possibly think the Internet would offer a higher ROI than, say, a few textbooks. Or pencils. Or teachers who had better than a 3rd-world high-school education themselves.
Public schools are always interested in lowering their costs - our local high school, for example, has hundreds of computers
running at any given time. The electricity costs to the district as a whole must be astronomical.
Don't even think about it. (:
Kids these^UAmericans these days. All it would take is for one lazy slob to come crying home after the "hard" gym class workout and his yuppie mom sics her sleazy lawyer on the school board to hyperventilate about "slave labor" and "exploiting our children".
microsoft.com's jabber server (as designated by the relevent DNS SVC records) would have to allow them to do that.
Speaking of which, does Jabber support the use of DNS service records? I thought it just used standard DNS hostnames, which kind of sucks (makes it harder to use @example.com as Jabber address). A quick read through the FAQ on jabber.org makes a few quick mentions of DNS but nothing fancy like SRV records.
Actually for command-line type apps you don't even need the HTML renderer. You just plug stdout and stdin into some sort of adapter
process that converts them to/from Jabber send and receive streams (something like how inetd fires up server processes with stdin
and stdout pointing at the socket connection.)
And this would be different from libsocket.a or netcat how? Besides the overhead of Jabber marshalling / unmarshalling, I mean.
Honestly, I don't quite understand why everyone in today's world sees the need to layer extra protocols on top of raw TCP, and otherwise reinvent the wheel. For example - what exactly was wrong with ONC, DCE-RPC or CORBA that required SOAP or XML-RPC to be invented to fix?
My pet theory on this is that some people feel the compulsion to invent an "application layer" just because their CS textbooks placed a misleading emphasis on the OSI model. (:
what do people recommend for converting a huge mp3 library to ogg? I don't want to have to re-encode all of my CDs....
If you care at all about sound quality, just re-encode, and consider it a lesson for not having listened to all of us license nazis for the past few years. (:
Seriously, taking an mp3 stream (with its artifacts), decoding it to PCM, then re-encoding to Ogg Vorbis format (with its artifacts) will give you inferior sound quality. I don't know how inferior, not having tried this, but be warned. (And, of course, don't judge the quality of the ogg codec by such results!)
If you still think it's worth trying - well, cook up a shell script using mpg123, oggenc and your favorite id3 tag reader. In fact, I'll do it for you...
[one hour later] OK, try mp32ogg. Requires perl, id3, mpg123 or equivalent, and oggenc from vorbis-tools. Tested on Debian Linux 3.1pre ("sarge") - may require tweaking on other OSes. No copyright, no warranty, etc. (:
"Version Inflation" -- to your average luser, "the higher the version number, the better it must be."
Or, more specifically: "This site requires a 4.0 or better browser." Ever since MSIE 4.0 and Netscape Navigator 4.0, the less evolved web "developers" have used the major version number to approximate your browser's feature set (never mind which specific browser you are using, unless the "developer" is even lower on Darwin's family tree and only supports one vendor).
Of course, version inflation happens everywhere in the software world, but the website weenies have made it worse here.
Not altruistic - practical. Open-source software yields benefits to him who commissions it, not just to everyone else. You get stuff like like free bug fixes and feature enhancements from the world at large. The only major downside is that you are helping your competitors, which should not be a concern for a national government, particularly one who a few years ago decideed to "help their competitors" by contributing the strength of its Deutschmark to the Euro.
And I'm guessing that, in this case, since most of the pieces already exist and only need to be polished and integrated, the winning bid was orders of magnitude lower than the cost of a new closed-source solution.
Ummm, iff isn't a typo (or, if it is, it's a fortuitous one) - it means "if and only if".
(The rest of your post I agree with.)
If you have two Xeons doing HT, you ought to try Ingo Molnar's new HT-aware scheduler, which deals with exactly this issue (and a few related ones).
If you aren't running Linux, well, never mind.
This would be as opposed to Intel, whose 64-bit Merced processor came out in 1997 or so?
So the knowledge of which config options are available for the Intel E100 network card needs to be in two places: the "base config" tarball and the "E100" tarball. No thanks.
This subject comes up often enough to have an entry in the kernel mailing list FAQ..
Well ... it's free.
Seriously, VMware lets you run a regular OS on emulated hardware. UML lets you run an emulation OS on real hardware. Both run on top of a standard OS (with real hardware).
VMware is not itself an OS - it provides a virtual PC which your regular OS thinks it owns. UML is an OS, which knows full well it does not own any hardware. The processes running under UML do not necessarily know that, though, since UML provides a near-standard environment.
(Related point: for those of you who think you're going to set up a honeypot that the cracker will break into and think he 0wns the bare metal - keep in mind that UML was not really designed to hide its own nature, so it's not hard to check for. And if you crack root in the UML, it's possible to get out of it. So if you're using UML for security reasons, you probably should run it in its own chroot.)
Make sure to use one of Jeff Garzik's Linus tree daily snapshots since 2.5.35 isn't released yet.
I hadn't heard of vservers, but if it's like BSD jail(), it is sort of an extension of chroot(). Basically, you can isolate a process (and its child processes) to a specific part of your directory tree which they now see as the root directory. BSD jail() adds the ability to give them access to only a specific IP address - obviously only useful if your machine has more than one, or if you want to prevent the jailed process from using the network at all. With Al Viro's semi-recent (a few months ago) kernel work, I believe it's possible to separate out the mounted filesystems per-process, which should let you protect the jailed process from the rest of the system, filesytem-wise, not just vice versa.
I don't know what else vservers offer.
UML gives you a whole new copy of the OS. New process list, new set of network servers, new filesystem tree, new everything. Devices are all virtualised - block devices have backing store on the host filesystem, network devices are tunneled, character devices are emulated. If you crack root in a chroot environment, you can get out of jail (there are several methods, one or two of which are trivial). If you crack root in UML, you can trash the UML instance, but it's much harder (though not impossible) to break out to the host Linux instance, and if you do, you're still a normal user there. And if UML is running in a small chroot with no setuid programs, cracking root outside the UML instance is impossible short of a kernel bug or a remote exploit on the host system.
What, like nasty drivers can't hose your system in NT? I thought that officially that was the only thing that caused NT to crash. (:
There is no magic bullet for what you want. In order to access hardware, drivers must be at a low enough level to, well, access hardware. At that level they can screw up your system.
UML does not have any direct hardware access - and, as a result, it doesn't support any real hardware drivers either. Everything is virtual. If you want to debug your 3Com network driver, you can't do so under UML....
That said, it is sometimes possible to move hardware drivers out of the kernel. Drivers for USB and SCSI devices, for example, can use raw packet interfaces from userspace, where there are limits on what they can screw up. Also, consider the X server - it pokes at your PCI bus / AGP port, and sets CPU MTRRs, without (for the most part) involving the kernel in its machinations. But note that while there are many failure modes the system is protected from in this situation, X can still ruin your whole day if it happens to turn off interrupts and forgets to turn them back on.
Why is this not modded funny? Oh well, here's a ReplyMod, it'll have to do.
Sure it would. Anything that ends in -GL makes me think of graphics. HPGL, OpenGL, FireGL.
Really we should just start calling it by the acronym used as its architecture designation in the kernel tree itself: um.
"Larry, have you got that, um, sandbox set up yet?"
"No, I had a problem with the, um, network configuration. I'll try to finish, um, Monday."
I get the joke, but come on, get it right. bash won't complain about ';' because that's a statement separator. It also won't complain about the '-' until it can't find it in your path. The unbalanced ')' is what fails here.
(:
Good thing that's not its real name. The kernel tree has subdirectories for "um", not "uml".
Well, I guess since everyone (including Jeff Dike, the author) refers to it as UML, that probably is its real name. But I'm glad they dropped the redundant "l" from the in-kernel architecture name. Too bad the SysKonnect SK-98xx driver is still called "sk98lin" - I mean, duh, it's in the kernel tree, it's probably for Linux....
Heh. As if.
Sure, you and I know this. Most web developers seem not to know it. They think HTML is intended to be some sort of desktop publishing output format, like PDF. In doing so, they completely miss the point of why there exist both PDF and HTML side by side, and why neither has subsumed the other.
(Insert standard rant here on web people who ignore interoperability, accessibility and those of us who think a hand-tuned 144x72-character, 83-Hz text mode is an excellent use of GeForce + 21" display.)
<aol/>
filled with way too many Ls.
Ahh, thanks - that clears it up a little. The more I think about the Jabber architecture, the more I like your comparison to e-mail. If you don't consider the store-and-forward capabilities, you have to admit Jabber looks a lot like a fancy proxy server, with 'ping' proxied as a presence protocol and regular Internet routing tunneled through the server-to-server protocol (does that have a name?).
Store-and-forward changes everything - it allows true asynchronous operation, if desired, and that in turn can foster a certain amount of anonymity. We already use email gateways for various things - I guess Jabber is a natural replacement which is better suited to applications as opposed to human communication.
*cough* Exchange *cough* (:
Indeed. Oh, and speaking of extensibility - don't forget that SMTP has in fact been extended in a backward compatible way, by ESMTP. And ESMTP has its own regular extension mechanism, likewise designed for graceful operation if client and server support different extensions. (I just wanted to point out that this sort of thing by no means requires anything like XML....)
Awww, how touching. What a nice humanist outlook you have.
I hate to question your qualification to speak on the subject, but you sound kind of naive. It would be nice if the world worked as you say, but the parts I have seen, frankly, do not. Making a lasting impression on a culture, for which both you and I see a need [and which offends many educated minds, BTW - the classic missionary vs. anthropologist battle - but that's neither here nor there], takes a lot more than shipping in a few laptops and solar panels, and rigging up a cell tower or satellite modem or something. I get the feeling you do not quite appreciate how much more.
First there is the matter of deciding who will be responsible for the computer equipment. Remember, nobody yet has a clue how to use it, and you as an outsider don't have any way of judging the people. So you do the only possible thing: give it to the chief. The computer becomes a tool of politics - more on that below.
Then there is the training aspect. Have you ever tried to teach someone to operate a computer whose native language doesn't have a word for "computer" or "keyboard" or "quote" or "pointer" or "icon" or "sentence" or "space" or "disk"? I have. The only way it was possible to make any progress at all was to revert to French, which neither of us spoke fluently, so it was rough going. (They do have a word for "mouse"....) Note that a language barrier is only a thin disguise for what is actually a cultural barrier. The desktop metaphor, for example, isn't as useful as you'd think when people don't work in offices.
Moving on. Now that some bright kid or kids have picked up the basics of how to send and receive spam, we come to maintenance, vandalism and politics. I know, I know, you probably don't believe people could possibly be so self-destructive as to steal the satellite phone, leaving the computer as basically a doorstop, if these people even had doors, which many don't. You believe that since the 486-class machines mentioned in the article (see, I'm still on topic) are designed to be robust, with no moving parts and all, that they will actually be robust and not break down when faced with the sort of humidity you find in a rain forest nine months of the year. You believe that the truck battery, which is used to power the thing, will not grow legs within two days, or that if it does stay put, that it will last longer than a year. You believe that those who have been trained to take good care of their gateway to the Internet will actually exercise proper maintenance procedures. You believe that the computer will not divide the village into haves and have-nots, and that the whole thing won't be stolen or vandalised by the have-nots - people who will have no clue how to operate any of it - out of sheer jealousy for the haves. You believe that the OS will never crash and need a reinstall (a good bet, with Linux, but still) - at which time it would most likely become a paperweight, for whoever can afford paper.
In short, my friend, you haven't lived in central Africa. This isn't racism or cultural imperialism talking, it's experience. "Things fall apart," wrote Chinua Achebe. The great Nigerian writer knew what he was talking about.
Finally there is the small question of money, and ROI. I guess whoever is paying for this program can do what they wish, but putting the Internet out in the middle of nowhere won't be cheap, no matter what you do. If you were to make a wish list of how these people could really benefit from Western civilisation, you might start with...
- schools: textbooks, blackboards, chalk, pencils/pens, books - i.e. libraries, though that's getting into the "dreaming" stage. After all, in many 3rd-world cultures, the language has only recently been written down at all - so most available books will be in another language. You could start in writing and/or translating your own books and publishing them yourself, as some people I know have done. A bit tedious but you gotta start somewhere.
- adult literacy: primers, books, teachers, child care - and see note above about books.
- plumbing: even hand pumps would be a luxury in many places I've been. Running water would be great, if you had...
- electricity: diesel generators are hard to operate when diesel fuel is $8/gallon and hard to get. I once thought solar panels were the answer, but they're extremely expensive and limited.
- medicines: antibiotics, quinine, Flagyl, and aspirin would go a long way for areas that don't have them. Vaccines, too, for things like measles and polio.
- public health: literature, public health education personnel (AIDS education is still MUCH needed out there, unlike in the West), and miscellany such as traps to eradicate tse tse fly populations (yes, such traps exist, and yes, sleeping sickness is still very much alive in this day and age). Actual doctors and nurses would be most welcome in any number of villages I could name, but those are a bit more expensive. Literacy and proper plumbing are also big parts of the public health equation - see above.
- agriculture - introducing new crops, new methods of farming, and technology at a locally sustainable level (plows, carts, etc) - so that when the white man leaves, there is some chance of things not falling apart.
In my book, Internet access is far down the list of things the people I've met could use from the West to improve their lives. Sure, it has a sort of Slashdot gushy excitement to it, but, like many public aid projects, it would have a lot more to do with Westerners feeling like they're making a difference than with anyone actually making a difference. Would you really rather have the 'net than the indoor john? (Don't answer that, slash-crowd! You guys are disgusting!)Fortunately (to get back on topic), the project the article talks about is being run partly by actual Laotians (is that the right word), so presumably they have already thought through such issues as I have presented here. As I've said before, I've never been to Asia. Maybe this project can actually be made to work.
Nicely put, and sufficiently vague that it's hard to argue with.
But what I'm really arguing here is exactly what the new abstraction layer abstracts away - does it simplify anything after all? Take Jabber. I assume (without knowing, so correct me if I'm wrong) that a Jabber-based client application will do something like
- look up server name using jabber presence protocol thingy
- build some sort of xml data structure
- send said data structure to the server in an IM-like packet
- maybe wait for response, or maybe not (Jabber is supposed to be asynchronous, after all)
What I'm trying to figure out is how this is easier, more robust, or otherwise superior to- look up server name in DNS
- build some sort of data structure, xml or otherwise
- send a UDP packet to the server address, or possibly open a TCP connection and send the packet that way
- wait on the TCP connection for a response, possibly xml structured, possibly not, or maybe just close the TCP connection if everything is supposed to be asynchronous
It looks to me like pretty much the same set of steps. I'm honestly confused about what the Jabber layer adds, other than xml buzzword compliance. Anyone?Actually the way I see it my question is more like "Assume you have Perl, Python and Java running everywhere. Now imagine someone invents a Java-like language named C$ and implements it in Perl. What would be the point?"
Can anyone answer my (offtopic) side question: what does XML-RPC do better than DCE-RPC, DCOM or CORBA? Remember, "easier to implement" isn't much of an answer - those three have been widely available for many platforms (well, except DCOM) for years, so that's a solved problem.
I don't know about Laos. I've never been that far east, and I like to talk only of what I know (you know, like everyone here on Slashdot). But the Internet is not what people need in the jungles of central Africa.
Bill Clinton once came to Africa and decided that what the schools all needed was to be wired. I have no idea whatever came of his plans for this, but the point is, I really didn't understand how he could possibly think the Internet would offer a higher ROI than, say, a few textbooks. Or pencils. Or teachers who had better than a 3rd-world high-school education themselves.
The Onion got it. Not so farfetched as it sounds.
Don't even think about it. (:
Kids these^UAmericans these days. All it would take is for one lazy slob to come crying home after the "hard" gym class workout and his yuppie mom sics her sleazy lawyer on the school board to hyperventilate about "slave labor" and "exploiting our children".
Speaking of which, does Jabber support the use of DNS service records? I thought it just used standard DNS hostnames, which kind of sucks (makes it harder to use @example.com as Jabber address). A quick read through the FAQ on jabber.org makes a few quick mentions of DNS but nothing fancy like SRV records.
And this would be different from libsocket.a or netcat how? Besides the overhead of Jabber marshalling / unmarshalling, I mean.
Honestly, I don't quite understand why everyone in today's world sees the need to layer extra protocols on top of raw TCP, and otherwise reinvent the wheel. For example - what exactly was wrong with ONC, DCE-RPC or CORBA that required SOAP or XML-RPC to be invented to fix?
My pet theory on this is that some people feel the compulsion to invent an "application layer" just because their CS textbooks placed a misleading emphasis on the OSI model. (:
If you care at all about sound quality, just re-encode, and consider it a lesson for not having listened to all of us license nazis for the past few years. (:
Seriously, taking an mp3 stream (with its artifacts), decoding it to PCM, then re-encoding to Ogg Vorbis format (with its artifacts) will give you inferior sound quality. I don't know how inferior, not having tried this, but be warned. (And, of course, don't judge the quality of the ogg codec by such results!)
If you still think it's worth trying - well, cook up a shell script using mpg123, oggenc and your favorite id3 tag reader. In fact, I'll do it for you...
[one hour later] OK, try mp32ogg. Requires perl, id3, mpg123 or equivalent, and oggenc from vorbis-tools. Tested on Debian Linux 3.1pre ("sarge") - may require tweaking on other OSes. No copyright, no warranty, etc. (:
Or, more specifically: "This site requires a 4.0 or better browser." Ever since MSIE 4.0 and Netscape Navigator 4.0, the less evolved web "developers" have used the major version number to approximate your browser's feature set (never mind which specific browser you are using, unless the "developer" is even lower on Darwin's family tree and only supports one vendor).
Of course, version inflation happens everywhere in the software world, but the website weenies have made it worse here.
What, you don't use "effect" as a verb? It's one of my favorites, not least because it proves I'm a grammar snob.
I suppose "affect" as a noun is even more snobbish. I don't use it, but I'm not sure why not..