The multiple execution pipelines (for instance, a superscalar architecture) are definitely one way to exploit ILP. With superscalar, you're always running a single thread at a time and there is a certain amount of ILP in that thread.
The idea here is that if your program has many threads, you can run them all at the same time. Since each thread does not depend on the results of another thread's instructions (at least in the common case, if they're fighting over a lock, that's different), then there is no reason why they shouldn't be able to run at the same time. There are almost no data dependencies between threads, hence a whole lot of blindingly obvious ILP that the processor can take advantage of. This doesn't cause your programs to run any faster than a processor that only runs a single thread, but it allows more threads to run "slower" at the same time.
The problem is that the App needs to be written specifically to talk RFB (the Remote Frame Buffer protocol that VNC uses). It's not simple, and to re-write a Windows App like that is very difficult.
There were murmors on the VNC list (before the S/N ratio dropped like a rock) of someone who actually write a Java wrapper for AWT (and Swing, I think) that lets all Java apps easily act like RFB servers with a few code changes. I never tried it, though.
Unfortunately that limitation of 5 buttons is a limitation of X in general. When X was envisioned, 5 seemed like a good maximum number (forget the CAD digitizer pucks with 16 buttons) for a mouse.
If you want portable X client applications, you're stuck with that limitation, although you could always roll your own X extensions to support more than 5 buttons and be incompatible with the rest of the world. The current hack is pretty bad, but there really isn't much you can (or would want to) do.
Check it a little more closely. chmod can only do as much as the underlying filesystem can support (since Cygwin doesn't use the UMSDOS-ish solution to FAT16/FAT32). FAT can store read-only information, which cooresponds to the +w bit on files. This value actually does change. However cygwin does a little guesswork to decide what files are executable and it always assumes that files are readable. It doesn't know much about users/groups/world, either.
I'd say that the cygwin developers did a good job of doing what they can, given the assumptions that were made for the filesystem and just about everything else on Win32.
I agree with this. Our office spaces were re-done about a year ago and they put in three florescent lights per office (two people in each office). Most of the people on my hall had the maintenance people turn off one or two of the fixtures. It helped us read our screens much more easily.
Around the same time, I re-wrote my emacs color scheme with a dark grey background and off-white/gray/brownish/mostly neutral text colors. It might sound a little disgusting at first, but I have found it to be a really good scheme for coding in both light and dark rooms. You can copy it from here if you want to take a look. The only "bad" thing that people might complain about is that my highlight region is black with a yellow background (I don't highlight often, but it clearly shows where things are highlighted).
They make great X terminals. I wouldn't try running any major applications on it, though. I have my IPC display netscape and a bunch of Xterms (or zephyr, if that's your thing). Even though it's mono, it works great.
The Hauppage WinTV card is a TV turner which can do capture in a number of NTSC and PAL formats under Linux. It's a PCI card, but it has a big honkin' metal-encased component with one (or two on some models) coax input. It's at least a couple of ounces, though I don't happen to have access to chem lab scale at this time.
I'm not sure if this breaks the bank on size and weight requirements (or whether you even have a PCI slot on your SBC). I would suspect that some of the small USB capture devices might be of interest to you if your SBC has a USB connector. Those tend to be ultra-light and can fit in your hand.
I have two problems with GPL and safety-critical software.
First, as a developer, I don't want to put myself in the position where MY code could kill somebody (whether that's an emergent bug in integration or one in my code). I don't want to be sued if something goes wrong (that's the advantage of working for a company name that can take the tab).
I also have trouble buying the "more eyes means fewer bugs" argument. There is a whole lot more to these things than just the code. If I'm going to write code to go in a safety-critical system, I want an assurance that competent people actually are looking at the code, but I also I want a strict development process, documentation, requirements and coding standards. Just throwing more developers (or auditors) at code after the fact is not a subsitute for upfront documentation and planning (yes, I sound like a process weanie, but process works!). These sanity checks are missing from much of the free software out there.
I don't know how much time you have spent trying to fix bugs in free software. It's almost never easy. Fixing bugs that you KNOW are there are hard enough. Identifying unknown bugs (and appropriately fixing them without creating new bugs) is orders of magnitude harder. A lot of the free software out there isn't at all maintainable.
Speaking to the litigous society comment (and tying back to embedded software):
Embedded computers can be found doing safety-critical things, such as software controlling transportation systems (from automated trains to the microcontroller in your car's engine) and medical equipment. If the software has bugs, then human lives can be lost as a result of those bugs.
I would argue that GPL'ed software (licensed as is) is dangerous to use in safety-critical embedded systems, because the author may believe that he/she is safe because of the NO WARRANTY sections of the GPL. The original authors of the GPL'ed code may not ecessarily be safe from lawsuits in the case of injury or death if some company decides to use their (buggy) free software in a commercial product.
The GPL does not include clauses that forbid code released under such a license to be used in such systems. Whether such a clause would be any more legally binding than what is currently there, I don't know. I have seen such warnings on hardware components from companies such as Motorola before, though.
The problems tend to manifest themselves more in the moving parts than in the surface of the platters. For instance, bearings will die or the heads (these are all connected to the same arm, no matter what side of the platter they read/write). Their claims for increased reliability are because they reduced the number of parts which are most likely to fail.
Another issue is that the target for this drive is mainstream consumers. You'd also somehow have to report the failure of the first platter to the user, while failing over to the other platter (assuming that it still works). To report this, it would require some support from the operating system, most likely. You'd also have to kick the user in the rear to replace the drive while it still works (which might be the most difficult part).
OT personal beef: I believe that the market won't allow for a consumer PC which is reliable, like you say. Nobody wants to pay $3000 for an IBM PC anymore (in 1985, sure you'd pay approximately that much for an 8088). You'd get a sturdy case, thick reference manuals (complete with "This page is intentionally left blank" scratch paper) and the klackity keyboard. Even if I knew that I were getting a machine that could fall four stories onto concrete and still look pretty (been there, tried that), I probably wouldn't want to spend the extra money for that. It's unfortunate, but I don't know how I'd solve that problem.
If I remember correctly, there was such a thing for BBSs, back in the early 90's. I completely forget what it was called, but basically it was a graphical dialup program that emulated an ANSI-like terminal. However, you could download graphical widgets and such which would go on top of the text and do other neat things.
It let you use the mouse to navigate the BBS and such. I never really liked it, but quite a few boards had it.
At the risk of sounding like a PHB, one of its goals is to provide a standard way to show your system's behavior and structure (in particular, from a fairly high level of abstraction).
I don't know if this is the answer that you're looking for, but here's an idea. Professors need some model to teach in software engineering, software process and modeling courses. They could roll their own modeling language, pick a random one from a barrel or a pick something that is a bit of a standard and has some industry acceptance. What the student should be able to take out of the course is the ability to apply modeling techniques to any system, regardless of the representation. UML offers a large number of views, each with their own purpose. A subset of these are likely to be used in any large object design, so why not use UML? (Devil's advocate: one could also argue that it's waaay to many diagrams).
I have yet to meet someone who really understands UML. I believe that designs (and learning how to design) are iterative processes. If you stick to a relatively well-defined standard language, your first designs might be somewhat broken. But as you learn where the minefields are in the previous try, your future designs are likely to be better. I think that its strength is that it offers you a standard toolset for thinking carefully about things up front. It doesn't make you think any better, but (if you play by the rules) it will allow other people to understand what you were thinking.
The article questions whether these motorised skateboards will ever be available in Britain. One of my girlfriends works for the British Government's Health and Safety Executive (HSE), which is the government agency responsible for deciding the legality of new products such as this....It is a shame that because of the inadequacies of our healthcare system, the British are deprived of many fun things. For example, bungie jumping, recreational shooting and parachuting are illegal in the UK.
It is a shame that because of the inadequacies of our family values system, us Americans are expected to only have one girlfriend. Deprived of many fun things. Riiiiight.:-)
I pity da fool who follows Smoothwall instructions
on
Vulnerability In SSH1
·
· Score: 2
Here's some of what smoothwall tells you do to:
If you are in Windows bring up a dos session and make sure you are in the same directory as where you downloaded the tar.gz file - please make sure you follow this instruction. Linux / BSD / GNU based systems users you all know what you\ure doing so we won\ut teach you to suck too many eggs in this instruction in fact we won\ut teach you to suck any eggs and congratulate you on running a free operating system that enhances your standing in the community.
Please open up a terminal window and type in the following:
ftp __.___.___.___ [substitute underscores for the ip address of your SmoothWall server]
When prompted for username type root
When prompted for password type the password you allocated for root
then follow the following instructions
bin [followed by return]
put smoothwall-openssh-2.3.0p1.tar.gz [followed by return]
Once this operation is complete type
quit [followed by return]
Funny, I thought that the one of the great advantages of using SSH (aside from the port forwarding) was that you'd never have to send your password in cleartext. Besides, who actually allows root to connect to their FTP server? The conventional wisdom has always been that root is to powerful to "just FTP".
Check out ghostscript (the Postscript reader). It comes with a utility called ps2pdf which works like Adobe's Distiller and turns postscript into PDF format.
The sources are downloadable. GNU GhostScript is a GPL'ed version. There's also Aladdin GhostScript which is free for non-commercial use and a commercial version. Take a look here: http://www.cs.wisc.edu/~ghost/
If you happen to grab the WinTV card with an FM tuner (this is the main reason I bought mine, actually and it works great), you'll have to load the bttv module with the argument "radio=1". I had to muck around with the xmradio source a little bit to get it to compile with recent versions of bttv (the author has been told about the changes that were needed), but it works flawlessly.
You'll probably want to grab the latest Video4Linux drivers (0.7.52 or so), in addition to enabling i2c on your kernel.
CMU currently has an undergraduate software engineering course in the CS department. The course tends to turn out pretty lousy projects in the end. Last semester they focused too much on the process and too little on the code (as they left around two weeks to write code and shoved test under the table). Some semesters go better than others.
At least one of my undergraduate courses (Distributed Embedded Systems, in the ECE department) had a significant focus on the process of designing and managing an embedded system. We used a watered-down UML and requirements, wrote tests suites and did forward and backward traceability to make sure the requirements matched up with the diagrams. Then we wrote code (and had a very short debug cycle because we found most of our bugs in the design before coding).
There are also graduate courses in and out of the SEI building which explore (or attempt to fix for real-time embedded systems, in the course in which I am currently enrolled) these processes.
There are still some decent smaller networks out there which are mostly free of these problems. Unfortunately, it only takes one bad user to make a lot of people (clients, IRCops) mad. A network that I run a server on just had a major split. However, after that, we got back a few servers with friendly admins who were upset by the previous network.
For some reason, whenever you get a bunch of people with H*'s next to their names on an IRC network, tensions are greatly amplified. I think that some of the newer IRC services daemons are helping to ease the administrative load on individual admins by giving some power to the clients and delegating a few dedicated and trustworthy non-IRCops to help run the services/support systems. For at least two networks (unnamed, but if you really want to know, that's what email is for), this system has worked very well.
First, I think the Basic Stamp is a great little device for doing projects without a lot of special tools. Here is a description of a project that I did with a BS2:
Over winter break of my freshman year (university), I designed and built an addition to my Mr. Coffee 12-cup coffee maker and attached it to a Linux webserver. Unfortunately, the machine is turned off for winter break, but you can check status on things such as the pot temperature, air temperature, water level (I used a resistive ladder attached to a bunch of conductors spaced on a ruler, which goes IN the pot. So far, no one other than myself has dared to drink from the machine), a 16-bit webpage hit counter, and switches to detect if the pot and filter are in place. A small C++ program on the web server requests and receives data over a serial port to the stamp, then formats a HTML document.
So, basically automating or placing sensors on home/office equipment might be an interesting and useful project. It's not terribly complicated, but it integrates programming, serial communications and a number of interesting electronic circuits (R-C circuits for the thermistors, the R-2 ladder). Other neat things (which might be geared more towards a software person) would be to add an LCD display, these are a lot of fun to play with! I used a backlit alphanumeric panel from Digikey (make sure you order the datasheet, too) with a 68HC11 microcontroller (you'd need to use around 6 - 7 IO pins on a stamp to control it in 4-bit mode, or, perhaps use 2 pins and a shift register chip).
I can make the source code available for the mrcoffee website (http://mrcoffee.res.cmu.edu, when it comes back on around January 15).
Actually, the book is about JSPs and servelets. This is Java on the server, not the client (Servlets are Java classes that run on the application or web server and JSPs are servelets written to look like HTML + some Java code that is eventually compiled into something very servlet-like.) Sure, you could send some javascript back to the client with either one of these, but it is in no way necessary.
What is good about these things is precisely that you can write display logic in your JSPs or servlets that will output a text-only links for old modems, large fonts for the visually-impaired or whatever you want. The business logic should be another layer deeper and is common to the entire website.
The idea here is that if your program has many threads, you can run them all at the same time. Since each thread does not depend on the results of another thread's instructions (at least in the common case, if they're fighting over a lock, that's different), then there is no reason why they shouldn't be able to run at the same time. There are almost no data dependencies between threads, hence a whole lot of blindingly obvious ILP that the processor can take advantage of. This doesn't cause your programs to run any faster than a processor that only runs a single thread, but it allows more threads to run "slower" at the same time.
There were murmors on the VNC list (before the S/N ratio dropped like a rock) of someone who actually write a Java wrapper for AWT (and Swing, I think) that lets all Java apps easily act like RFB servers with a few code changes. I never tried it, though.
That's a high price to pay for a 6-line file. Better use that preview button! :-)
If you want portable X client applications, you're stuck with that limitation, although you could always roll your own X extensions to support more than 5 buttons and be incompatible with the rest of the world. The current hack is pretty bad, but there really isn't much you can (or would want to) do.
I'd say that the cygwin developers did a good job of doing what they can, given the assumptions that were made for the filesystem and just about everything else on Win32.
Around the same time, I re-wrote my emacs color scheme with a dark grey background and off-white/gray/brownish/mostly neutral text colors. It might sound a little disgusting at first, but I have found it to be a really good scheme for coding in both light and dark rooms. You can copy it from here if you want to take a look. The only "bad" thing that people might complain about is that my highlight region is black with a yellow background (I don't highlight often, but it clearly shows where things are highlighted).
They make great X terminals. I wouldn't try running any major applications on it, though. I have my IPC display netscape and a bunch of Xterms (or zephyr, if that's your thing). Even though it's mono, it works great.
I'm not sure if this breaks the bank on size and weight requirements (or whether you even have a PCI slot on your SBC). I would suspect that some of the small USB capture devices might be of interest to you if your SBC has a USB connector. Those tend to be ultra-light and can fit in your hand.
Personally, I'm waiting until the SNES comes out. I hear that a 16-bit encrypted graphics console rocks!
First, as a developer, I don't want to put myself in the position where MY code could kill somebody (whether that's an emergent bug in integration or one in my code). I don't want to be sued if something goes wrong (that's the advantage of working for a company name that can take the tab).
I also have trouble buying the "more eyes means fewer bugs" argument. There is a whole lot more to these things than just the code. If I'm going to write code to go in a safety-critical system, I want an assurance that competent people actually are looking at the code, but I also I want a strict development process, documentation, requirements and coding standards. Just throwing more developers (or auditors) at code after the fact is not a subsitute for upfront documentation and planning (yes, I sound like a process weanie, but process works!). These sanity checks are missing from much of the free software out there.
I don't know how much time you have spent trying to fix bugs in free software. It's almost never easy. Fixing bugs that you KNOW are there are hard enough. Identifying unknown bugs (and appropriately fixing them without creating new bugs) is orders of magnitude harder. A lot of the free software out there isn't at all maintainable.
Embedded computers can be found doing safety-critical things, such as software controlling transportation systems (from automated trains to the microcontroller in your car's engine) and medical equipment. If the software has bugs, then human lives can be lost as a result of those bugs.
I would argue that GPL'ed software (licensed as is) is dangerous to use in safety-critical embedded systems, because the author may believe that he/she is safe because of the NO WARRANTY sections of the GPL. The original authors of the GPL'ed code may not ecessarily be safe from lawsuits in the case of injury or death if some company decides to use their (buggy) free software in a commercial product.
The GPL does not include clauses that forbid code released under such a license to be used in such systems. Whether such a clause would be any more legally binding than what is currently there, I don't know. I have seen such warnings on hardware components from companies such as Motorola before, though.
Another issue is that the target for this drive is mainstream consumers. You'd also somehow have to report the failure of the first platter to the user, while failing over to the other platter (assuming that it still works). To report this, it would require some support from the operating system, most likely. You'd also have to kick the user in the rear to replace the drive while it still works (which might be the most difficult part).
OT personal beef: I believe that the market won't allow for a consumer PC which is reliable, like you say. Nobody wants to pay $3000 for an IBM PC anymore (in 1985, sure you'd pay approximately that much for an 8088). You'd get a sturdy case, thick reference manuals (complete with "This page is intentionally left blank" scratch paper) and the klackity keyboard. Even if I knew that I were getting a machine that could fall four stories onto concrete and still look pretty (been there, tried that), I probably wouldn't want to spend the extra money for that. It's unfortunate, but I don't know how I'd solve that problem.
It let you use the mouse to navigate the BBS and such. I never really liked it, but quite a few boards had it.
I don't know if this is the answer that you're looking for, but here's an idea. Professors need some model to teach in software engineering, software process and modeling courses. They could roll their own modeling language, pick a random one from a barrel or a pick something that is a bit of a standard and has some industry acceptance. What the student should be able to take out of the course is the ability to apply modeling techniques to any system, regardless of the representation. UML offers a large number of views, each with their own purpose. A subset of these are likely to be used in any large object design, so why not use UML? (Devil's advocate: one could also argue that it's waaay to many diagrams).
I have yet to meet someone who really understands UML. I believe that designs (and learning how to design) are iterative processes. If you stick to a relatively well-defined standard language, your first designs might be somewhat broken. But as you learn where the minefields are in the previous try, your future designs are likely to be better. I think that its strength is that it offers you a standard toolset for thinking carefully about things up front. It doesn't make you think any better, but (if you play by the rules) it will allow other people to understand what you were thinking.
It is a shame that because of the inadequacies of our family values system, us Americans are expected to only have one girlfriend. Deprived of many fun things. Riiiiight. :-)
If you are in Windows bring up a dos session and make sure you are in the same directory as where you downloaded the tar.gz file - please make sure you follow this instruction. Linux / BSD / GNU based systems users you all know what you\ure doing so we won\ut teach you to suck too many eggs in this instruction in fact we won\ut teach you to suck any eggs and congratulate you on running a free operating system that enhances your standing in the community.
Please open up a terminal window and type in the following:
ftp __.___.___.___ [substitute underscores for the ip address of your SmoothWall server]
When prompted for username type root
When prompted for password type the password you allocated for root
then follow the following instructions
bin [followed by return]
put smoothwall-openssh-2.3.0p1.tar.gz [followed by return]
Once this operation is complete type
quit [followed by return]
Funny, I thought that the one of the great advantages of using SSH (aside from the port forwarding) was that you'd never have to send your password in cleartext. Besides, who actually allows root to connect to their FTP server? The conventional wisdom has always been that root is to powerful to "just FTP".
Suck eggs, indeed.
The sources are downloadable. GNU GhostScript is a GPL'ed version. There's also Aladdin GhostScript which is free for non-commercial use and a commercial version. Take a look here: http://www.cs.wisc.edu/~ghost/
You'll probably want to grab the latest Video4Linux drivers (0.7.52 or so), in addition to enabling i2c on your kernel.
At least one of my undergraduate courses (Distributed Embedded Systems, in the ECE department) had a significant focus on the process of designing and managing an embedded system. We used a watered-down UML and requirements, wrote tests suites and did forward and backward traceability to make sure the requirements matched up with the diagrams. Then we wrote code (and had a very short debug cycle because we found most of our bugs in the design before coding).
There are also graduate courses in and out of the SEI building which explore (or attempt to fix for real-time embedded systems, in the course in which I am currently enrolled) these processes.
What Apple really needs is a good pesticide!
It doesn't protect us from the "content" in EMINEM's songs. :-)
No, now you need three separate packages to just run your desktop environment. A step forward? :-)
A very similar article about EFNet in September
Another article on the death of EFNet.
There are still some decent smaller networks out there which are mostly free of these problems. Unfortunately, it only takes one bad user to make a lot of people (clients, IRCops) mad. A network that I run a server on just had a major split. However, after that, we got back a few servers with friendly admins who were upset by the previous network.
For some reason, whenever you get a bunch of people with H*'s next to their names on an IRC network, tensions are greatly amplified. I think that some of the newer IRC services daemons are helping to ease the administrative load on individual admins by giving some power to the clients and delegating a few dedicated and trustworthy non-IRCops to help run the services/support systems. For at least two networks (unnamed, but if you really want to know, that's what email is for), this system has worked very well.
Over winter break of my freshman year (university), I designed and built an addition to my Mr. Coffee 12-cup coffee maker and attached it to a Linux webserver. Unfortunately, the machine is turned off for winter break, but you can check status on things such as the pot temperature, air temperature, water level (I used a resistive ladder attached to a bunch of conductors spaced on a ruler, which goes IN the pot. So far, no one other than myself has dared to drink from the machine), a 16-bit webpage hit counter, and switches to detect if the pot and filter are in place. A small C++ program on the web server requests and receives data over a serial port to the stamp, then formats a HTML document.
So, basically automating or placing sensors on home/office equipment might be an interesting and useful project. It's not terribly complicated, but it integrates programming, serial communications and a number of interesting electronic circuits (R-C circuits for the thermistors, the R-2 ladder). Other neat things (which might be geared more towards a software person) would be to add an LCD display, these are a lot of fun to play with! I used a backlit alphanumeric panel from Digikey (make sure you order the datasheet, too) with a 68HC11 microcontroller (you'd need to use around 6 - 7 IO pins on a stamp to control it in 4-bit mode, or, perhaps use 2 pins and a shift register chip).
I can make the source code available for the mrcoffee website (http://mrcoffee.res.cmu.edu, when it comes back on around January 15).
What is good about these things is precisely that you can write display logic in your JSPs or servlets that will output a text-only links for old modems, large fonts for the visually-impaired or whatever you want. The business logic should be another layer deeper and is common to the entire website.