I mean the desktop computer in it's classical meaning has preety much died. Fewer and fewer people do things like text-processing with dedicated applications like Word.
The future is the web. On the web you have true applications, not just programms. Need a route planed? Go to a website. Wanna use e-mail? Use a webmail-site.
The next step to it would be "private Wikis". Essentially wikis with usage-restrictions. You'd then have that Wiki running on a server you trust, (which might be running on your local machine) and can then edit your documents easily on the web. No need to carry your computer with you, just access your server from anywhere in the world. Wanna publish a document? Just make it world readable and publish the URL, any changes will be automatically avaliable to others, and you even know how often it was accessed and such.
Uhm, has any energy be saved yet? It seems to me that all the costs assosiated with it greatly overweight the hypothetical savings.
I personally expect this to be the far greater problem that Y2K.
Just imagine the power grid, when 2 devices get a command they should execute at 08:00 and one of those devices accepts daylight-saving, the other one doesn't. The nice thing about it is that that error is likely to be not detected that quickly.
I personally think it's foolish to make any changes on the daylight saving, other than to get rid of it completely. It's a clear sign that there seem to be at least some people in power, who must have lost their minds.:)
It's by no means there yet. It's still so much worse than it could actually be. For example this device probably does not support In Place Execution, a funktion avaliable to many OSes eliminating copying data around and into RAM.
A simple (software-)ramdisk might be considerably faster, and perhaps cheaper than this. And you can always boot from a clean state.
So essentially the main market for such a device are the few (32-bit) Windows-users wanting to have more speed at any cost.
Well perhaps that's also his own fault. Back in the 80s, it was normal for every home computer to have some sort of development enviroment comming with them. Typically a variant of Microsoft BASIC. Today, you only have a shell which is 30 years behind progress. It's hard to get into programming as you have to learn C (a really ugly language IMHO) or something like Visual Basic (yuck!). In all cases you need to buy/download some software (often extremely expensive) and then write a whole programm, which is often really difficult to do. Just think of how many lines of code it takes just to get something equivalent to the graphics mode of old computers and draw a line.
My tip for Microsoft ist this: Build a new shell, one that can execute all your normal commands and programms, supports piping and stuff, but also all the tradional BASIC stuff. For example, I want to be able to just type "ls" to get a directory listing, but I want to type "100 ls" to write ls into "line 100". When I thin type run, ls will be executed. Also include somekind of graphics mode where commands like "line" work. And, most important, make it interactive. It's a lot better to make people interrested, when all you need to do is enter a command and you get an instant reaction.
I know, goto is considered harmfull, but for small things, it's OK. It's great for understanding how computers work.
It's amazing that writing a small programm is now just as difficult as it was with the Imsai. Back then you had to toggle in your programm byte by byte into RAM, today you need to click around for ages, and/or write lots of dull lines of code which are always the same.
I want a system I can turn on, wait a bit, and immediately code whatever I want. Microsoft has brought as far away as reasonably possibly from that goal. They even removed the macro-recorder that came with Windows 3.x, thus removing any kind of simple programmability.
> That's why. Decades instead of months between > they get any money from you.
Well but then I could have 20 or 30 computers in an average household insteadt of one. And just think of what you could do with extra services. Just think of web-services Google is making a fortune with them, more than they do with selling hardware.
> Extensiblity. You can add a lot to a desktop > PC, fill it up with hardware making it a power > monster. Water cooling a laptop anyone? Adding > 1TB harddrive array?
Well but I don't want to extend a desktop PC. What I want to extend is a server. My server at home, for example, is using up all it's PCI slots. I wouldn't want to have a machine with loud harddisks and fans sitting around my desktop, those machines should be locked away somewhere where they don't disturb anyone.
Insteadt the desktop PC should be small. Perhaps there shouldn't even be one, especially in companies. Now with technologies like "Multi-Seated-X" you ran run several workplaces from one centralized server. The only thing you have on your desktop then is a monitor, a keyboard and a mouse. No further electronics on the desktop that can break. And if you are at home, you can even get wireless keyboards and mice and run a VGA but thought your house to use your computer everywhere you have a monitor.
BTW, wireless keyboards are a _huge_ security risk. They typically don't have strong cryptography.
Well I have tried MacOSX Version 10.2. OK, they are not at Version 10.4 so I've heared. But the things I didn't like at that old version (it was labelled as a production release) which now might have been fixed, and are unfortunately now found in almoust any OS to some extend, are:
1. It's a complete memory hog, my iBook came with 128 megs of RAM and OSX installed, it just was _slow_.
2. It really lags quite a lot. When I had 128 megs of RAM, I could understand that it takes a few seconds between pressing the volume button and the volume actually changing. But with 640 megs it still did the same. Even worse, it did it again when I pressed the button again a few seconds later. Before that iBook I had an old one running MacOS 8.5. The harddisk was actually able to turn itself off while watching movies as I was able to make a ramdisk holding the movie and still make the OS run. And that all on a machine with only 96 megs of RAM.
3. It's not quite there yet. There are many usability problems, for example all programs beeing not compiled with libreadline support. It really sucks, when you have to retype your lines in bc again.
4. Many things are extremely non-obvious. For example, imagining running your computer as a webserver. They could have made a folder named "Webserver content" somewhere or stick with/var/httpd/httpdocs or something. Insteadt they used a directory somewhere hidden under/lib. That's just sick. And when you want to edit the settings of Apache, there's no nice dialog, not even a file in/etc/, you have to find your httpd.conf by yourself. Adding a network printer is done by going to http://localhost:631/ despite of there beeing a printer setup dialog.
MacOSX just became another one of those boring unixoid OSes. And at least that old version was really bad at it. Still, even a good Linux-distribution is not a _lot_ better than this. Some of the points are even solved a lot better by Windows, especially the old versions (Windows 3.11, etc.).
I really wish Apple would have done this: Develop a thin GUI-less unixoid OS and run MacOS in an older version in a virtualized "machine" (it works, MacOnLinux is doing this for years now), and perhaps move the new main GUI to something based on the Newton OS. Then they would stand out of it. They wouldn't be compared to Linux anymore, they would have something special. Something that worked. Something they could even scale down for pocket sized devices. They could build $40 Macs, connecting to the TV or VGA-monitor. They could even have the first "secure" content protection system by running it in a seperate virtual system.
This is not intended to bash MacOSX. It's still probably the best commercial operating system there is. But it still has it's quirks and problems. It could have been done better. Things won't change if we just consider things to be "good enought". That "good enought" philosophy has created such ugly things as C(++) leading to masses of malware and worms. (Buffer overruns and stack overflows are only found in C(++) programms)
First of all make those things cheaper. Most people don't need expensive computers with expensive processors which only can stay on the market because of the numbers of them produced. Why not build desktop or portable PCs with embedded chips. Word processing or web-browsing can be done with far less power. And computers would work for decades, not months.
Then there's another question. Why distinguish between laptops and desktop PCs. Most of those are severely crippled anyhow (because of bad OSes which don't include simple ways to develop applications, yes I include most Linux distributions here, too). Why not build a little Keyboard/Computer unit which can have a display attached to it via some cable or perhaps even mounted to it. So when you need mobility (one thing that laptops more and more fail to offer), you mount your display to the box, but if you want to work at home, you take the display, put it on a stand, and connect it via a cable to the main laptop.
Then again, the industry should make a _really_ portable device again. The ZipIt shown here recently is already a step into the right direction. It's _really_ portable, it doesn't need to be connected to a PC, it has WLAN, and it's affordable. If one could install perhaps a way to download and execute as well as develop applications on that thing (it must be possible, I've developed Windows applications on devices with less RAM and less CPU) it could be the PC-Killer. A home-variant with larger keyboard and connections for TVs or VGA-Monitors, as well as normal Ethernet would wipe the PC out of homes and offices.
There is also one thing, OS-Manufacturers don't understand. And that's that devices must be simple to develop for. I don't want to have to search for weeks for the development tools, then code my codes in C, compile them in long compile runs to upload them to the device just to find out to have made a little error and have to do it all over again. I want to have a keyboard, type 'call char (32,"AA55AA55AA55AA55")' and watch all spaces go to a checkerflag pattern.
Of course, if you want to have "all wireless", you'd need to integrate 2 things, IPv6 and OLSR as well as open standards like the IPP. That way you could really make working wireless networks, just put your device somewhere in your house and it'll not only work immediately, it will also relay everything to other devices which aren't in range. Sharing data with your neighbourhood gets trivial, each one only needs to have 1 or 2 other computers in range and be connected. And security would then be made on a sane layer, not the hardware layer.
Get 2 computers, each of them with a harddisk beeing able to hold all your data. Now use rsync to copy all your data from one computer to the other regularly. Together with hardlinking, there are even simple ways to even make "incremental" backups.
Now the really great thing here is, if you use both computers, you will immediately know if your normal harddisk or the new one failed. When it failed, you can immediately act on it, replacing it. The system also scales, as you will probably replace your computers from time to time anyhow. Then you just move the data from the old one to the new one. In fact, you can even buidt some kind of "chain" of computer upgrades. You buy a new computer and use the next older as a backup computer. This solution is not only cheap compaired to tape or optical disk backups, but it also scales, and, if you are carefull, you can keep your data far longer than the tape recorder manufacturer exists.:)
I guess this is ideal for home backups. In my installation, the backup computer actually is about 100km away from the main one. As you use rsync, encryption is no problem at all, and you only transmitt changed data.
How good is that information. Here in germany the DVB-system provides simmilar information. Some channels have absolutely good information, you can often not only read the title of the show, but also a summary of what will happen. Typically you get that about a week ahead (even on some news shows). But other stations just do not air any kind of EPG, some only air a "now and next" guide. Some have only one show lasting 24 hours every day with the station name in it.
It might be interresting to note, that, thanks to a little hack done by the people at Grundig, europeans already have EPGs since the 80s. The teletext-system is able to carry 24x40 text-pages. Most TV-stations have their TV-guide in it. Grundig however, wrote some software for their VCRs to parse that. So basically you called the teletext-page, put the cursor on your show, pressed a button and your VCR was set to record that show.
> So you guys saying you are programmers when you > put stuff like Ruby, Visual Basic, Java, > Python, Perl, PHP, etc...etc... You're > WRONG...You are SCRIPTERS not > PROGRAMMERS....Unless you know and were used to > program using those "arcane C/C++ languages- as > you say...
There is little difference. In fact, Ruby compilers are probably already written in Ruby. And I have written quite some code in C and Pascal.
And besides, if a little shell script does the same, a gigantic C program, why should I do it in C?
Well some time ago, there was a story about someone using RFID tags to store sid-tunes. They also had the code online for accessing such RFID chips. It was easy to understand, even for a non Ruby programmer.
actually in germany there now seems to be an interresting development. Since terrestrial TV-transmission is relatively expensive, compared to satellite transmissions, commercial stations are stopping to transmit terrestrially in some less populated areas at all. When the analog transmitters get turned off, they will only have a choice of about 5-6 public TV channels over the air.
But here nobody really cares. Free to Air satellite is just normal here (unless you live in an apartment building) and you can get more channels that way anyhow. And even on satellite a large share of the users already moved to digital, despite of the fact that the digital signal is worse most of the time.
In the US, digital television would have a lot more potential. Everyone can see the difference, at least in newer productions. With digital TV you can get real colour television, perhaps with HDTV even in a better resolution. (Note that PAL already has 576 lines instead of the 480 lines of NTSC). Unfortunately the broadcast flag will ruin it all.
Well of course wasting CPU-cycles is a bad thing, but in this case we gain something more important: Security.
Looking back into the past, servers haven't been to beefy at all. When I started commercial programming at a company, the slowest machine was the server. That was a 486 with 66 Mhz running Novel. Nevertheless it was able to saturate our 10MBit network. Static file/web serving is by no means CPU-intensive at all. In fact, with modern hardware you have a feature called "zero copy server" which basically means that the harddisk controller is able to put some data into memory, and the network controller can take it from right there. With that, you can saturate a gigabit network connection with just a 486.
Another interresting point is that one can even do powerfull calculations, even on a high level system. For example the LISP-Machines completely ran on a LISP-based OS with applications written in LISP and a LISP shell, and so on. Those machines were used for 3d graphics for TV-stations during the 80s.
I've never seen a Webserver without dynamic content that actually uses more than a few percent of even the slowest server. A webserver just needs to shovel around data. There's little intelligence in it.
When webservers are slow, it's either because of the slow network connection, or because of slow dynamic content. There are people out there running gigantic sites on interpreted scripts. Slashdot, for example seems to run on Perl. Wikipedia runs on PHP, other sites run on Java or even ASP.
If speed would be a serious issue, there would be no ASP, there would be no PHP and Java would never have found it's way onto servers.
The speed of the http-deamon itself is rather unimportant as it only needs to move data around. A shell-scripted webserver will only be unnoticably slower than one coded in C, or even assembler.
Well the main problem with C(++) is that it forgets one fundamental property of all humans, they are lazy and want to do as little as possible.
It's amazing, but many/most libraries in C(++) are harder to use than doing things directly. In other languages, it's the other way round. Libraries are just trivially simple to use.
> OK, I confess: I've looked into Ruby seriously > twice, and found it awkward and unnatural both > times. I've programmed a lot of different > languages in my time, from assembler and C to > C++ and Java to Perl and Python to OCaml and > Haskell. I've never seen a language that tries > as hard to force the programmer into its > mindset, rather than trying to provide tools > for the programmer to express their intent, as > Ruby does.
Well it probably depends on where you come from. I do not really believe that something like x=y==z?23:42 is really natural. One problem I see with C is that one can use it, just like Assembler. You can write everything in any style in it. You can ignore everything the language provides. Then there are obvious paradigm shifts. For example C claims to be a structured language with little need for goto. Instead the case-statement is nothing more than on x goto in BASIC. C in fact forces it's thinking on the programmer in a really bad way. If you don't follow the rules, you will not be punished immediately, the compiler will compile without any problems, but the program will behave in strange ways, impossible to understand by someone not intimately familiar with the whole system. If you do not completely follow the rules, you can write a "hello-world" program which seems to work perfectly fine in all your tests, but once someone has a long awkward name, consisting out of some binary characters, it will start to execute arbitrary code. Now don't say this never happens in real life. It does, on a daily base. Windows XP, for example contains such a bug. Connect it to the internet for longer than half an hour (or shorter if your connection is fast), and a buffer overflow will happen.
Yes, true. You can do graphics works efficiently in C++. But just look at the other things people do in C(++). They write Webservers in C. Programs which deal a lot with strings, where security is a lot more important than efficiency. A Webserver written in, lets say, Ruby might consume 5 times the CPU-cycles, but it's most likely free from any nasty buffer overruns.
At graphics work that's irrelevant. You just have your frame and work with it. When dealing with vector graphics it's more difficult, but even then one rarely has to fill arrays with variable length of data.
Yes, it's also rather save to do graphics in C(++).
However I disagree that it's the only language for such things out there. First of all, languages like Pascal or Fortran, the later mostly used on supercomputers, are often compiled by C-compilers and therefore can easily reach the same level of efficiency.
However a high-level language with high-level frameworks create one serious problem: The programmer doesn't see where he does something suboptimal. For example when you are programming in Assembler, you typically know very well, when your program is running occupying floating-point units or staying in fixed point. In some languages that's hard to judge. Furthermore 3d-engines now are made to support arbitrary geometries, even though the game won't need them. In previous times, before 3d-accelerator boards became widely avaliable, the coder tried it's best to match the graphics with the technical possibilities to get as good as possible graphics with the little CPU-time it had. If you look at old games from the early till mid 90s you will be impressed how much they got out of those little CPUs. It's really a shame when I see a variation of the "turning torus" demo on a modern PC "only" doing 200 fps with accelerated graphics, when my 486 could already do the same demo with 60fps.
Well the problem here is between reality and the ideal.
Of course one could use the better string functions, but (almost) daily reports about buffer overruns tell another story.
In classical C programmers probably tend to oversize their strings instead of properly sizing them. It's just less work and you are on the save size.
>Um... Sir, question: How is "Hello World".length >any better than length("Hello World")? Or how is >-133.abs any better than abs(-133)?
Good question. The point is, that everything is an object, numbers, lists, even program blocks are objects. Therefore, for example, it's rather simple to make iterative functions. You just pass a program block as a parameter to a message and the method can then call that parameter. (I might have gotten the terminology wrong.) Best of all it's all done in a clean form.
Then there are things like lists of all the object-instances in your program. You can iterate over it, find the type of each one, no matter if it's an integer or an object reflecting a large database. You can then find out more about that object, even if it didn't exist when you were programming that part of code.
Of course that's also theoretically possible with C(++), but there it involves doing a lot of dirty stuff like shifting pointers to get arbitrary access to your programm's memory. In Ruby it's all nice and clean. The -123.abs is just a consequence of it. I mean there are no procedures or functions anymore. It's all in the objects. And everything is an object.
How relevant are all those new functions.
I mean the desktop computer in it's classical meaning has preety much died. Fewer and fewer people do things like text-processing with dedicated applications like Word.
The future is the web. On the web you have true applications, not just programms. Need a route planed? Go to a website. Wanna use e-mail? Use a webmail-site.
The next step to it would be "private Wikis". Essentially wikis with usage-restrictions. You'd then have that Wiki running on a server you trust, (which might be running on your local machine) and can then edit your documents easily on the web. No need to carry your computer with you, just access your server from anywhere in the world. Wanna publish a document? Just make it world readable and publish the URL, any changes will be automatically avaliable to others, and you even know how often it was accessed and such.
Well that IP-Stack was, as far as I remimber, even advertised to be a BSD stack. Beeing Unix compatible was a big selling point back then.
I think you could even get the same IP-stack for WFW 3.11 which might even have been able to do routing.
Uhm, has any energy be saved yet? It seems to me that all the costs assosiated with it greatly overweight the hypothetical savings.
:)
I personally expect this to be the far greater problem that Y2K.
Just imagine the power grid, when 2 devices get a command they should execute at 08:00 and one of those devices accepts daylight-saving, the other one doesn't. The nice thing about it is that that error is likely to be not detected that quickly.
I personally think it's foolish to make any changes on the daylight saving, other than to get rid of it completely. It's a clear sign that there seem to be at least some people in power, who must have lost their minds.
It's by no means there yet. It's still so much worse than it could actually be. For example this device probably does not support In Place Execution, a funktion avaliable to many OSes eliminating copying data around and into RAM.
A simple (software-)ramdisk might be considerably faster, and perhaps cheaper than this. And you can always boot from a clean state.
So essentially the main market for such a device are the few (32-bit) Windows-users wanting to have more speed at any cost.
Well perhaps that's also his own fault. Back in the 80s, it was normal for every home computer to have some sort of development enviroment comming with them. Typically a variant of Microsoft BASIC.
Today, you only have a shell which is 30 years behind progress. It's hard to get into programming as you have to learn C (a really ugly language IMHO) or something like Visual Basic (yuck!). In all cases you need to buy/download some software (often extremely expensive) and then write a whole programm, which is often really difficult to do. Just think of how many lines of code it takes just to get something equivalent to the graphics mode of old computers and draw a line.
My tip for Microsoft ist this: Build a new shell, one that can execute all your normal commands and programms, supports piping and stuff, but also all the tradional BASIC stuff.
For example, I want to be able to just type "ls" to get a directory listing, but I want to type "100 ls" to write ls into "line 100". When I thin type run, ls will be executed. Also include somekind of graphics mode where commands like "line" work. And, most important, make it interactive. It's a lot better to make people interrested, when all you need to do is enter a command and you get an instant reaction.
I know, goto is considered harmfull, but for small things, it's OK. It's great for understanding how computers work.
It's amazing that writing a small programm is now just as difficult as it was with the Imsai. Back then you had to toggle in your programm byte by byte into RAM, today you need to click around for ages, and/or write lots of dull lines of code which are always the same.
I want a system I can turn on, wait a bit, and immediately code whatever I want. Microsoft has brought as far away as reasonably possibly from that goal. They even removed the macro-recorder that came with Windows 3.x, thus removing any kind of simple programmability.
> That's why. Decades instead of months between
> they get any money from you.
Well but then I could have 20 or 30 computers in an average household insteadt of one. And just think of what you could do with extra services. Just think of web-services Google is making a fortune with them, more than they do with selling hardware.
> Extensiblity. You can add a lot to a desktop
> PC, fill it up with hardware making it a power
> monster. Water cooling a laptop anyone? Adding
> 1TB harddrive array?
Well but I don't want to extend a desktop PC. What I want to extend is a server. My server at home, for example, is using up all it's PCI slots. I wouldn't want to have a machine with loud harddisks and fans sitting around my desktop, those machines should be locked away somewhere where they don't disturb anyone.
Insteadt the desktop PC should be small. Perhaps there shouldn't even be one, especially in companies. Now with technologies like "Multi-Seated-X" you ran run several workplaces from one centralized server. The only thing you have on your desktop then is a monitor, a keyboard and a mouse. No further electronics on the desktop that can break.
And if you are at home, you can even get wireless keyboards and mice and run a VGA but thought your house to use your computer everywhere you have a monitor.
BTW, wireless keyboards are a _huge_ security risk. They typically don't have strong cryptography.
Well I have tried MacOSX Version 10.2. OK, they are not at Version 10.4 so I've heared.
/var/httpd/httpdocs or something. Insteadt they used a directory somewhere hidden under /lib. That's just sick. And when you want to edit the settings of Apache, there's no nice dialog, not even a file in /etc/, you have to find your httpd.conf by yourself. Adding a network printer is done by going to http://localhost:631/ despite of there beeing a printer setup dialog.
But the things I didn't like at that old version (it was labelled as a production release) which now might have been fixed, and are unfortunately now found in almoust any OS to some extend, are:
1. It's a complete memory hog, my iBook came with 128 megs of RAM and OSX installed, it just was _slow_.
2. It really lags quite a lot. When I had 128 megs of RAM, I could understand that it takes a few seconds between pressing the volume button and the volume actually changing. But with 640 megs it still did the same. Even worse, it did it again when I pressed the button again a few seconds later. Before that iBook I had an old one running MacOS 8.5. The harddisk was actually able to turn itself off while watching movies as I was able to make a ramdisk holding the movie and still make the OS run. And that all on a machine with only 96 megs of RAM.
3. It's not quite there yet. There are many usability problems, for example all programs beeing not compiled with libreadline support. It really sucks, when you have to retype your lines in bc again.
4. Many things are extremely non-obvious. For example, imagining running your computer as a webserver. They could have made a folder named "Webserver content" somewhere or stick with
MacOSX just became another one of those boring unixoid OSes. And at least that old version was really bad at it. Still, even a good Linux-distribution is not a _lot_ better than this. Some of the points are even solved a lot better by Windows, especially the old versions (Windows 3.11, etc.).
I really wish Apple would have done this: Develop a thin GUI-less unixoid OS and run MacOS in an older version in a virtualized "machine" (it works, MacOnLinux is doing this for years now), and perhaps move the new main GUI to something based on the Newton OS. Then they would stand out of it. They wouldn't be compared to Linux anymore, they would have something special. Something that worked. Something they could even scale down for pocket sized devices. They could build $40 Macs, connecting to the TV or VGA-monitor. They could even have the first "secure" content protection system by running it in a seperate virtual system.
This is not intended to bash MacOSX. It's still probably the best commercial operating system there is. But it still has it's quirks and problems. It could have been done better. Things won't change if we just consider things to be "good enought". That "good enought" philosophy has created such ugly things as C(++) leading to masses of malware and worms. (Buffer overruns and stack overflows are only found in C(++) programms)
First of all make those things cheaper. Most people don't need expensive computers with expensive processors which only can stay on the market because of the numbers of them produced. Why not build desktop or portable PCs with embedded chips. Word processing or web-browsing can be done with far less power. And computers would work for decades, not months.
Then there's another question. Why distinguish between laptops and desktop PCs. Most of those are severely crippled anyhow (because of bad OSes which don't include simple ways to develop applications, yes I include most Linux distributions here, too). Why not build a little Keyboard/Computer unit which can have a display attached to it via some cable or perhaps even mounted to it. So when you need mobility (one thing that laptops more and more fail to offer), you mount your display to the box, but if you want to work at home, you take the display, put it on a stand, and connect it via a cable to the main laptop.
Then again, the industry should make a _really_ portable device again. The ZipIt shown here recently is already a step into the right direction. It's _really_ portable, it doesn't need to be connected to a PC, it has WLAN, and it's affordable. If one could install perhaps a way to download and execute as well as develop applications on that thing (it must be possible, I've developed Windows applications on devices with less RAM and less CPU) it could be the PC-Killer. A home-variant with larger keyboard and connections for TVs or VGA-Monitors, as well as normal Ethernet would wipe the PC out of homes and offices.
There is also one thing, OS-Manufacturers don't understand. And that's that devices must be simple to develop for. I don't want to have to search for weeks for the development tools, then code my codes in C, compile them in long compile runs to upload them to the device just to find out to have made a little error and have to do it all over again. I want to have a keyboard, type 'call char (32,"AA55AA55AA55AA55")' and watch all spaces go to a checkerflag pattern.
Of course, if you want to have "all wireless", you'd need to integrate 2 things, IPv6 and OLSR as well as open standards like the IPP. That way you could really make working wireless networks, just put your device somewhere in your house and it'll not only work immediately, it will also relay everything to other devices which aren't in range. Sharing data with your neighbourhood gets trivial, each one only needs to have 1 or 2 other computers in range and be connected. And security would then be made on a sane layer, not the hardware layer.
Well there ist still one reason for having a diskette drive, updating your BIOS.
Unless you have a socketed BIOS chip in a DIP, (always a wise idea), you have to boot your computer to DOS to update your OS.
Get 2 computers, each of them with a harddisk beeing able to hold all your data. Now use rsync to copy all your data from one computer to the other regularly. Together with hardlinking, there are even simple ways to even make "incremental" backups.
:)
Now the really great thing here is, if you use both computers, you will immediately know if your normal harddisk or the new one failed. When it failed, you can immediately act on it, replacing it.
The system also scales, as you will probably replace your computers from time to time anyhow. Then you just move the data from the old one to the new one. In fact, you can even buidt some kind of "chain" of computer upgrades. You buy a new computer and use the next older as a backup computer.
This solution is not only cheap compaired to tape or optical disk backups, but it also scales, and, if you are carefull, you can keep your data far longer than the tape recorder manufacturer exists.
I guess this is ideal for home backups. In my installation, the backup computer actually is about 100km away from the main one. As you use rsync, encryption is no problem at all, and you only transmitt changed data.
As far as I have heared, Asterisk can do something like that.h
http://www.crazygreek.co.uk/content/chan_bluetoot
has more info.
I use full-featured Haupauge ones. They work quite well. Other than that, most DVB-cards should work with Linux.
Get VDR for DVB. It's really great, I have it running with 2 DVB-S cards, but mixed systems are said to be possible.
How good is that information. Here in germany the DVB-system provides simmilar information. Some channels have absolutely good information, you can often not only read the title of the show, but also a summary of what will happen. Typically you get that about a week ahead (even on some news shows).
But other stations just do not air any kind of EPG, some only air a "now and next" guide. Some have only one show lasting 24 hours every day with the station name in it.
It might be interresting to note, that, thanks to a little hack done by the people at Grundig, europeans already have EPGs since the 80s. The teletext-system is able to carry 24x40 text-pages. Most TV-stations have their TV-guide in it. Grundig however, wrote some software for their VCRs to parse that. So basically you called the teletext-page, put the cursor on your show, pressed a button and your VCR was set to record that show.
> So you guys saying you are programmers when you ...
> put stuff like Ruby, Visual Basic, Java,
> Python, Perl, PHP, etc...etc... You're
> WRONG...You are SCRIPTERS not
> PROGRAMMERS....Unless you know and were used to
> program using those "arcane C/C++ languages- as
> you say
There is little difference. In fact, Ruby compilers are probably already written in Ruby. And I have written quite some code in C and Pascal.
And besides, if a little shell script does the same, a gigantic C program, why should I do it in C?
Well some time ago, there was a story about someone using RFID tags to store sid-tunes. They also had the code online for accessing such RFID chips. It was easy to understand, even for a non Ruby programmer.
Servus,
actually in germany there now seems to be an interresting development. Since terrestrial TV-transmission is relatively expensive, compared to satellite transmissions, commercial stations are stopping to transmit terrestrially in some less populated areas at all. When the analog transmitters get turned off, they will only have a choice of about 5-6 public TV channels over the air.
But here nobody really cares. Free to Air satellite is just normal here (unless you live in an apartment building) and you can get more channels that way anyhow. And even on satellite a large share of the users already moved to digital, despite of the fact that the digital signal is worse most of the time.
In the US, digital television would have a lot more potential. Everyone can see the difference, at least in newer productions. With digital TV you can get real colour television, perhaps with HDTV even in a better resolution. (Note that PAL already has 576 lines instead of the 480 lines of NTSC).
Unfortunately the broadcast flag will ruin it all.
Well of course wasting CPU-cycles is a bad thing, but in this case we gain something more important: Security.
Looking back into the past, servers haven't been to beefy at all. When I started commercial programming at a company, the slowest machine was the server. That was a 486 with 66 Mhz running Novel. Nevertheless it was able to saturate our 10MBit network.
Static file/web serving is by no means CPU-intensive at all. In fact, with modern hardware you have a feature called "zero copy server" which basically means that the harddisk controller is able to put some data into memory, and the network controller can take it from right there. With that, you can saturate a gigabit network connection with just a 486.
Another interresting point is that one can even do powerfull calculations, even on a high level system. For example the LISP-Machines completely ran on a LISP-based OS with applications written in LISP and a LISP shell, and so on. Those machines were used for 3d graphics for TV-stations during the 80s.
I've never seen a Webserver without dynamic content that actually uses more than a few percent of even the slowest server. A webserver just needs to shovel around data. There's little intelligence in it.
When webservers are slow, it's either because of the slow network connection, or because of slow dynamic content. There are people out there running gigantic sites on interpreted scripts. Slashdot, for example seems to run on Perl. Wikipedia runs on PHP, other sites run on Java or even ASP.
If speed would be a serious issue, there would be no ASP, there would be no PHP and Java would never have found it's way onto servers.
The speed of the http-deamon itself is rather unimportant as it only needs to move data around. A shell-scripted webserver will only be unnoticably slower than one coded in C, or even assembler.
Well the main problem with C(++) is that it forgets one fundamental property of all humans, they are lazy and want to do as little as possible.
It's amazing, but many/most libraries in C(++) are harder to use than doing things directly. In other languages, it's the other way round. Libraries are just trivially simple to use.
> OK, I confess: I've looked into Ruby seriously
> twice, and found it awkward and unnatural both
> times. I've programmed a lot of different
> languages in my time, from assembler and C to
> C++ and Java to Perl and Python to OCaml and
> Haskell. I've never seen a language that tries
> as hard to force the programmer into its
> mindset, rather than trying to provide tools
> for the programmer to express their intent, as
> Ruby does.
Well it probably depends on where you come from. I do not really believe that something like x=y==z?23:42 is really natural. One problem I see with C is that one can use it, just like Assembler. You can write everything in any style in it. You can ignore everything the language provides. Then there are obvious paradigm shifts. For example C claims to be a structured language with little need for goto. Instead the case-statement is nothing more than on x goto in BASIC.
C in fact forces it's thinking on the programmer in a really bad way. If you don't follow the rules, you will not be punished immediately, the compiler will compile without any problems, but the program will behave in strange ways, impossible to understand by someone not intimately familiar with the whole system. If you do not completely follow the rules, you can write a "hello-world" program which seems to work perfectly fine in all your tests, but once someone has a long awkward name, consisting out of some binary characters, it will start to execute arbitrary code. Now don't say this never happens in real life. It does, on a daily base. Windows XP, for example contains such a bug. Connect it to the internet for longer than half an hour (or shorter if your connection is fast), and a buffer overflow will happen.
Yes, true. You can do graphics works efficiently in C++. But just look at the other things people do in C(++). They write Webservers in C. Programs which deal a lot with strings, where security is a lot more important than efficiency. A Webserver written in, lets say, Ruby might consume 5 times the CPU-cycles, but it's most likely free from any nasty buffer overruns. At graphics work that's irrelevant. You just have your frame and work with it. When dealing with vector graphics it's more difficult, but even then one rarely has to fill arrays with variable length of data.
Yes, it's also rather save to do graphics in C(++). However I disagree that it's the only language for such things out there. First of all, languages like Pascal or Fortran, the later mostly used on supercomputers, are often compiled by C-compilers and therefore can easily reach the same level of efficiency. However a high-level language with high-level frameworks create one serious problem: The programmer doesn't see where he does something suboptimal. For example when you are programming in Assembler, you typically know very well, when your program is running occupying floating-point units or staying in fixed point. In some languages that's hard to judge. Furthermore 3d-engines now are made to support arbitrary geometries, even though the game won't need them. In previous times, before 3d-accelerator boards became widely avaliable, the coder tried it's best to match the graphics with the technical possibilities to get as good as possible graphics with the little CPU-time it had. If you look at old games from the early till mid 90s you will be impressed how much they got out of those little CPUs. It's really a shame when I see a variation of the "turning torus" demo on a modern PC "only" doing 200 fps with accelerated graphics, when my 486 could already do the same demo with 60fps.
Well the problem here is between reality and the ideal. Of course one could use the better string functions, but (almost) daily reports about buffer overruns tell another story. In classical C programmers probably tend to oversize their strings instead of properly sizing them. It's just less work and you are on the save size.
>Um... Sir, question: How is "Hello World".length
>any better than length("Hello World")? Or how is
>-133.abs any better than abs(-133)?
Good question. The point is, that everything is an object, numbers, lists, even program blocks are objects. Therefore, for example, it's rather simple to make iterative functions. You just pass a program block as a parameter to a message and the method can then call that parameter. (I might have gotten the terminology wrong.) Best of all it's all done in a clean form.
Then there are things like lists of all the object-instances in your program. You can iterate over it, find the type of each one, no matter if it's an integer or an object reflecting a large database. You can then find out more about that object, even if it didn't exist when you were programming that part of code.
Of course that's also theoretically possible with C(++), but there it involves doing a lot of dirty stuff like shifting pointers to get arbitrary access to your programm's memory. In Ruby it's all nice and clean. The -123.abs is just a consequence of it. I mean there are no procedures or functions anymore. It's all in the objects. And everything is an object.