$0.0002 is 1/50th of a cent, not 1/5000th. Still a good value, though.
My first hard drive was a 20MB Seagate that went into my 8Mhz 8088 Sanyo PC, which was originally bought with two 360KB floppies and no hard drive. I remember feeling very lucky at the time, because while I was saving up for the hard drive (which cost ~$400 in ~1985 as I recall) the 10MB model (which I was going to get) was replaced by the 20MB model at the same price.
My laptop screen is wide format (1920 x 1200). With that many pixels you can easily have 4 edit windows up at once (2 x 2 array) with each one having the "standard" 80 columns and 25 lines. This still leaves plenty of room around the edit windows for testing windows, frequently accessed desktop icons, etc.
I admit that stuff on the laptop screen is a bit small (it is ~15 inch diagonal), but when using my 24 inch monitor (which I use 99.9% of the time) the display is a thing of beauty.
>Really? Cause I seem to remember creating FSMs using PALs just last >year in my undergraduate CS program (in a required 300 level class). >We also had a class where we put together a microprocessor, put it >on an FPGA, and wrote low level code to run on it.
I'm in my late 30s and have been doing embedded development since college. Back then we built finite state machines in PALs and complete embedded systems using microsequencers and UV eraseable ROMs. We both built (hand wired) and programmed the systems from scratch. Doing that gives you a very good appreciation for what's going on. That kind of stuff just isn't done much anymore in college. From what I can see, there aren't many good embedded programmers more than a few years younger than me. It looks like good embedded programmers (whatever their age) will be in demand and well paid for many years to come.:)
I have been a software engineer (working as an independent consultant) for 15+ years. I see plenty of jobs. At least once a year someone asks me if I'm available (I'm not) or whether I know of someone good looking for work (I don't). As with almost any profession, if you are very good at what you do then you won't have any problem finding work. If you are merely "good" (or worse) then you'll have trouble if the field isn't "hot" at the time.
So, you have to ask yourself, "Am I merely good, or am I very good (or even better)?" I think that a lot of what determines that is enjoyment of the field. If you really enjoy programming, are really bothered when something doesn't work, are really driven to find an explanation for the "strange" behavior you are seeing, then you probably have what it takes. If software engineering is just some major that you're ok at that you think will pay well then it probably won't in fact pay well for you and probably isn't the right thing for you.
It's 190k and provides all that I need in a programming editor. I've been using it for about 13 years and not once has it crashed or done anything to lose my work.
I saw her talk at BH last year and thought it was very interesting. When it came to detection, however, she waved her hands a bit and claimed that a hypervisor could always alter anything in the PC that had to do with timing so that the OS would always think that the "normal" amount of time had passed for whatever operation it might be trying to time. The idea is that an instruction that the hypervisor intercepts will take longer than the native instruction, and you can detect that. The obvious way to do this is to use the RDTSC (read time stamp counter) instruction, which gives you CPU clock speed precision. The hypervisor can, however, change what the RDTSC instruction returns and therefore makes this timing method useless.
There are many other sources of timing information in a computer. Serial ports, parallel ports, USB ports, ethernet ports, IO space reads and writes, disk operations, the RTC (real-time clock), etc. I haven't thought too hard about using any of these things in particular, but I would be very surprised if a hypervisor could alter the behavior of all of these things in such a way that they couldn't be used as an alternate source of timing information when determining if an instruction you suspect is being intercepted is taking "too long" or not.
I would highly recommend Black Hat in Las Vegas in late July/early August. Even if you aren't a "black/white/whatever hat" (I certainly am not) it is very interesting to see what that community is doing. I always come away inspired by something.
For years my wife and I have used TracFone. It is very simple and easy to use. You can get the phones from www.tracfone.com or many retailers (K-Mart, Walmart, Best Buy, Target, etc.). You activate the phone at the website and buy minutes there also. I have always gotten the 1 year card, which gives you 1 year of service and 250 minutes (often you get more "bonus" minutes) for about $100. If you don't use all the minutes they "roll over" when you buy another card. If you get low on minutes during the year you buy another card sooner than 1 year.
They also offer a service called Net10 (www.net10.com) which is basically the same thing as TracFone except you get 1 year and 1500 minutes for $150. The last time I needed to renew I decided to switch to Net10. It was worth the extra $50 to get so many minutes (for me, at least) that I never have to think about it during the year.
Note that TracFone/Net10 actually use other carriers to provide their service. In my area they use Cingular. I can use all of the regular Cingular services like text messages, email to/from my phone, etc.
Over the 5 or so years that I have used TracFone I have looked at other pre-paid services and never found one that came even close to the value of TracFone (or Net10).
Would the hypervisor change how long it takes to write a sector to disk? Would it (or even could it) change how long it takes to write 100 bytes out the serial port at a given baud rate? You don't need to be able to measure arbitrary time intervals, just reliably measure one time interval. You then see how many instruction executions you get (for each instruction of interest) in that amount of time. You don't even care about the "true" time of your interval; you are simply going to compare the relative execution speeds of various instructions.
I definitely don't mean the TSC, as that is easily modified by the hypervisor. My point is that a device not part of your computer (a different computer or a dedicated timing device) will definitely work. It is also my belief that there are enough other sources of direct and/or indirect timing information in a PC that you could make it work without an external timing source.
I don't think that's true. Once you become the first hypervisor nobody can unseat you. You provide a simulation for other hypervisors that might come along, so they also think they are the first hypervisor. They are, in fact, "below" you and you have complete control of them.
Blocking NTP would be an obvious sign that something is wrong. Modifying NTP packets would be clever, but as I said in an earlier reply you can simply use a companion program on the timing computer to "invent" your own protocol that Blue Pill could never know and could never modify.
I agree that comparing the run times of instructions that will be trapped to those that won't is the way to go. I also agree that using an external time source would work well. I work with phototiming for a living, and have an external device with a 1PPM (part per million) clock in it. I can ask for the time over the network on any port using any arbitrary format that Blue Pill could not possibly know about. In that situation I know that the time I'm getting is reliable. (Most people, obviously, don't have access to this.)
You could instead use another computer as the time source and guarantee that Blue Pill won't alter your network packets by asking the user to enter a randomly chosen data format and use a randomly chosen port number. (This would require a companion program to run on the "timing" computer to speak the same randomly generated time protocol.) This would work just as well as my first example except that the accuracy of the time source would be lower, which shouldn't be a problem.
I also believe that you could do this test reliably without any external time source. PCs are chock full of devices that rely on timers of various known frequencies. Serial ports, ethernet ports, USB ports, IDE interfaces, PCI-to-whatever bridges, sound devices, etc. As a simple example, if the PC has a serial port just set the baud rate high (for higher precision) and queue a bunch of characters to send. Then run an instruction you want to measure a million (or so) times and then see how many characters are left in the buffer. There's your time! Repeat with other instructions and decide if the difference in execution time is reasonable or not.
Seriously, learn some assembly. Read the handbook. (Intel IA-32 Software Development Manual or equivalent for other processors.) There is no substitute for knowing what the processor is actually capable of doing. Then you can appreciate what a high level language is doing (and not doing) for you. Look at the assembly that the compiler produces. This is all fun stuff. Enjoy it. (If it isn't fun, move on to some other profession.)
Then you can move up to C, C++, whatever. Just realize that there is nothing magical about high level languages. The processor can still only do what you read about in the handbook. Personally, I've never gotten past using Assembly, C, and C++. I've never had any use for any other languages. None of them do anything fundamentally different from what I use.
This may not be the right path for you, but it has worked very well for me.
I have been asking the NYTimes for years now to charge me for access to the online edition in exchange for eliminating the advertising. (Just like what Slashdot does.) I would be happy to pay a dollar a day (yes, $365 a year) for such a service.
The one reply I got from the NYTimes (supposedly from Martin Nisenholtz himself, the CEO of New York Times Digital at the time) seemed aimed at people who complain about ads but don't offer to pay to subscribe. I explained that I never "click through" on ads and that they would make a lot more from my visits if they charge me. He didn't seem convinced.
Oh well...I'm still reading the NYTimes on-line and I'm still annoyed by the advertising.
This application is perfect for line scan cameras. They take a continuous image one frame at a time, where each "frame" is one pixel wide and the sensor height (say, 2000 pixels) high. The "proper" frame rate depends on the speed of the van, but since there are cameras capable of capturing NASCAR races in high resolution (at 10,000 frames per second) I don't think the speed of the van would be an issue. It is analagous to using a handheld scanner to scan the world as it goes by.
With line scan, there is no issue of blurr from the motion of the van. If the frame rate is too slow you'll get a lower resolution (and horizontally compressed) image, but it isn't blurred. With traditional 2D photography you'd either have to drive slow, use a high shutter speed, or both, to avoid blurr. Plus, you will inevitably get overlap of pictures and then need to "stitch" them back together with software.
With line scan, the image is continuous. The user could simply hit a button at the end of every block and "cut" the image at that point for convenience. Or, a single picture could be taken of the entire length of a road, no matter how long.
Disclaimer: I work for a company that makes line scan cameras for sports timing.
1980 called, and they want their cellular plan back. Am I misreading, or are you paying $95 for 150 minutes to use over a year's time? 2.9 minutes a month for $7.91 a month, and you call that a great cell phone service?
I'm guessing math wasn't your strongest subject in school. It works out to 12.5 minutes a month. I also said it is easy to get another 100 minutes free, plus 100 minutes for referring a friend. I've done that each year, so I've had at least 350 minutes a year for $95 a year. That's 29 minutes a month, which is more than I use.
Please tell me that you meant to say you're paying $95/year for 150 minutes/month. Even at that, you can get twenty times the minutes for about four times as much.
You read me right. 150 minutes per year. Twenty times the minutes doesn't do me any good if I don't use them. That's the trap cellular companies try to get you to fall into.
And if you don't need the minutes, you can buy a prepaid "emergencies only" phone to carry in your car's glove compartment for far less than $95!
TracFone is prepaid service. Please show me one that is "far less" than TracFone and has the same (or similar) features. TracFone works anywhere in the US (roaming is double the rate), long distance is included no matter where you are, caller id, voice mail, call waiting, etc.
Not if you are a low volume user. You can't get any sort of plan from a traditional cellular company for $7.92 a month including all taxes and surcharges. I've also looked at the prepaid plans at some cellular companies and they seem aimed at convincing you to sign a contract. They aren't as good as TracFone.
I use a great cell phone service called TracFone (www.tracfone.com). I pay $95 per year (yes, year!) for 150 minutes. They often run specials where you can get another 100 minutes free. If you refer a friend you get 100 minutes free (and so does the friend). If you need more minutes you can buy them for ~20 cents a minute or less. This includes all taxes. No hidden fees. No surcharges. Minutes roll over to the next year if you don't use them.
I suspect that traditional cell phone plans are good for very high volume users, but for me TracFone works great. I know this sounds like an advertisement, but I really do use and like the service.
P.S. If you want to sign up, let me "refer" you and we'll both get 100 free minutes. Just leave your email address in a reply and I'll sign you up for the offer. (You'll just get one email solicitation.)
$0.0002 is 1/50th of a cent, not 1/5000th. Still a good value, though.
My first hard drive was a 20MB Seagate that went into my 8Mhz 8088 Sanyo PC, which was originally bought with two 360KB floppies and no hard drive. I remember feeling very lucky at the time, because while I was saving up for the hard drive (which cost ~$400 in ~1985 as I recall) the 10MB model (which I was going to get) was replaced by the 20MB model at the same price.
>...to get well-commented context all onscreen.
;)
The problem isn't lack of vertical pixels, it's the comments. Everyone knows that well writeen code is self commenting.
My laptop screen is wide format (1920 x 1200). With that many pixels you can easily have 4 edit windows up at once (2 x 2 array) with each one having the "standard" 80 columns and 25 lines. This still leaves plenty of room around the edit windows for testing windows, frequently accessed desktop icons, etc.
I admit that stuff on the laptop screen is a bit small (it is ~15 inch diagonal), but when using my 24 inch monitor (which I use 99.9% of the time) the display is a thing of beauty.
>One is a highly regarded tech school, and the other is a highly regarded liberal arts institution.
I assume you're talking about Harvard and MIT. Go to MIT.
>Really? Cause I seem to remember creating FSMs using PALs just last
>year in my undergraduate CS program (in a required 300 level class).
>We also had a class where we put together a microprocessor, put it
>on an FPGA, and wrote low level code to run on it.
That's very good to hear.
I'm in my late 30s and have been doing embedded development since college. Back then we built finite state machines in PALs and complete embedded systems using microsequencers and UV eraseable ROMs. We both built (hand wired) and programmed the systems from scratch. Doing that gives you a very good appreciation for what's going on. That kind of stuff just isn't done much anymore in college. From what I can see, there aren't many good embedded programmers more than a few years younger than me. It looks like good embedded programmers (whatever their age) will be in demand and well paid for many years to come. :)
I have been a software engineer (working as an independent consultant) for 15+ years. I see plenty of jobs. At least once a year someone asks me if I'm available (I'm not) or whether I know of someone good looking for work (I don't). As with almost any profession, if you are very good at what you do then you won't have any problem finding work. If you are merely "good" (or worse) then you'll have trouble if the field isn't "hot" at the time.
So, you have to ask yourself, "Am I merely good, or am I very good (or even better)?" I think that a lot of what determines that is enjoyment of the field. If you really enjoy programming, are really bothered when something doesn't work, are really driven to find an explanation for the "strange" behavior you are seeing, then you probably have what it takes. If software engineering is just some major that you're ok at that you think will pay well then it probably won't in fact pay well for you and probably isn't the right thing for you.
Good luck.
It's 190k and provides all that I need in a programming editor. I've been using it for about 13 years and not once has it crashed or done anything to lose my work.
I saw her talk at BH last year and thought it was very interesting. When it came to detection, however, she waved her hands a bit and claimed that a hypervisor could always alter anything in the PC that had to do with timing so that the OS would always think that the "normal" amount of time had passed for whatever operation it might be trying to time. The idea is that an instruction that the hypervisor intercepts will take longer than the native instruction, and you can detect that. The obvious way to do this is to use the RDTSC (read time stamp counter) instruction, which gives you CPU clock speed precision. The hypervisor can, however, change what the RDTSC instruction returns and therefore makes this timing method useless.
There are many other sources of timing information in a computer. Serial ports, parallel ports, USB ports, ethernet ports, IO space reads and writes, disk operations, the RTC (real-time clock), etc. I haven't thought too hard about using any of these things in particular, but I would be very surprised if a hypervisor could alter the behavior of all of these things in such a way that they couldn't be used as an alternate source of timing information when determining if an instruction you suspect is being intercepted is taking "too long" or not.
My fax machine is only turned on when I'm sending a fax. If somebody wants to send me something they must do it through email.
I would highly recommend Black Hat in Las Vegas in late July/early August. Even if you aren't a "black/white/whatever hat" (I certainly am not) it is very interesting to see what that community is doing. I always come away inspired by something.
For years my wife and I have used TracFone. It is very simple and easy to use. You can get the phones from www.tracfone.com or many retailers (K-Mart, Walmart, Best Buy, Target, etc.). You activate the phone at the website and buy minutes there also. I have always gotten the 1 year card, which gives you 1 year of service and 250 minutes (often you get more "bonus" minutes) for about $100. If you don't use all the minutes they "roll over" when you buy another card. If you get low on minutes during the year you buy another card sooner than 1 year.
They also offer a service called Net10 (www.net10.com) which is basically the same thing as TracFone except you get 1 year and 1500 minutes for $150. The last time I needed to renew I decided to switch to Net10. It was worth the extra $50 to get so many minutes (for me, at least) that I never have to think about it during the year.
Note that TracFone/Net10 actually use other carriers to provide their service. In my area they use Cingular. I can use all of the regular Cingular services like text messages, email to/from my phone, etc.
Over the 5 or so years that I have used TracFone I have looked at other pre-paid services and never found one that came even close to the value of TracFone (or Net10).
Would the hypervisor change how long it takes to write a sector to disk? Would it (or even could it) change how long it takes to write 100 bytes out the serial port at a given baud rate? You don't need to be able to measure arbitrary time intervals, just reliably measure one time interval. You then see how many instruction executions you get (for each instruction of interest) in that amount of time. You don't even care about the "true" time of your interval; you are simply going to compare the relative execution speeds of various instructions.
I definitely don't mean the TSC, as that is easily modified by the hypervisor. My point is that a device not part of your computer (a different computer or a dedicated timing device) will definitely work. It is also my belief that there are enough other sources of direct and/or indirect timing information in a PC that you could make it work without an external timing source.
I don't think that's true. Once you become the first hypervisor nobody can unseat you. You provide a simulation for other hypervisors that might come along, so they also think they are the first hypervisor. They are, in fact, "below" you and you have complete control of them.
Blocking NTP would be an obvious sign that something is wrong. Modifying NTP packets would be clever, but as I said in an earlier reply you can simply use a companion program on the timing computer to "invent" your own protocol that Blue Pill could never know and could never modify.
(I was at the Black Hat talk also.)
I agree that comparing the run times of instructions that will be trapped to those that won't is the way to go. I also agree that using an external time source would work well. I work with phototiming for a living, and have an external device with a 1PPM (part per million) clock in it. I can ask for the time over the network on any port using any arbitrary format that Blue Pill could not possibly know about. In that situation I know that the time I'm getting is reliable. (Most people, obviously, don't have access to this.)
You could instead use another computer as the time source and guarantee that Blue Pill won't alter your network packets by asking the user to enter a randomly chosen data format and use a randomly chosen port number. (This would require a companion program to run on the "timing" computer to speak the same randomly generated time protocol.) This would work just as well as my first example except that the accuracy of the time source would be lower, which shouldn't be a problem.
I also believe that you could do this test reliably without any external time source. PCs are chock full of devices that rely on timers of various known frequencies. Serial ports, ethernet ports, USB ports, IDE interfaces, PCI-to-whatever bridges, sound devices, etc. As a simple example, if the PC has a serial port just set the baud rate high (for higher precision) and queue a bunch of characters to send. Then run an instruction you want to measure a million (or so) times and then see how many characters are left in the buffer. There's your time! Repeat with other instructions and decide if the difference in execution time is reasonable or not.
Seriously, learn some assembly. Read the handbook. (Intel IA-32 Software Development Manual or equivalent for other processors.) There is no substitute for knowing what the processor is actually capable of doing. Then you can appreciate what a high level language is doing (and not doing) for you. Look at the assembly that the compiler produces. This is all fun stuff. Enjoy it. (If it isn't fun, move on to some other profession.)
Then you can move up to C, C++, whatever. Just realize that there is nothing magical about high level languages. The processor can still only do what you read about in the handbook. Personally, I've never gotten past using Assembly, C, and C++. I've never had any use for any other languages. None of them do anything fundamentally different from what I use.
This may not be the right path for you, but it has worked very well for me.
I have been asking the NYTimes for years now to charge me for access to the online edition in exchange for eliminating the advertising. (Just like what Slashdot does.) I would be happy to pay a dollar a day (yes, $365 a year) for such a service.
The one reply I got from the NYTimes (supposedly from Martin Nisenholtz himself, the CEO of New York Times Digital at the time) seemed aimed at people who complain about ads but don't offer to pay to subscribe. I explained that I never "click through" on ads and that they would make a lot more from my visits if they charge me. He didn't seem convinced.
Oh well...I'm still reading the NYTimes on-line and I'm still annoyed by the advertising.
This application is perfect for line scan cameras. They take a continuous image one frame at a time, where each "frame" is one pixel wide and the sensor height (say, 2000 pixels) high. The "proper" frame rate depends on the speed of the van, but since there are cameras capable of capturing NASCAR races in high resolution (at 10,000 frames per second) I don't think the speed of the van would be an issue. It is analagous to using a handheld scanner to scan the world as it goes by.
With line scan, there is no issue of blurr from the motion of the van. If the frame rate is too slow you'll get a lower resolution (and horizontally compressed) image, but it isn't blurred. With traditional 2D photography you'd either have to drive slow, use a high shutter speed, or both, to avoid blurr. Plus, you will inevitably get overlap of pictures and then need to "stitch" them back together with software.
With line scan, the image is continuous. The user could simply hit a button at the end of every block and "cut" the image at that point for convenience. Or, a single picture could be taken of the entire length of a road, no matter how long.
Disclaimer: I work for a company that makes line scan cameras for sports timing.
I am the original poster, and I was not talking about only making emergency calls.
1980 called, and they want their cellular plan back. Am I misreading, or are you paying $95 for 150 minutes to use over a year's time? 2.9 minutes a month for $7.91 a month, and you call that a great cell phone service?
I'm guessing math wasn't your strongest subject in school. It works out to 12.5 minutes a month. I also said it is easy to get another 100 minutes free, plus 100 minutes for referring a friend. I've done that each year, so I've had at least 350 minutes a year for $95 a year. That's 29 minutes a month, which is more than I use.
Please tell me that you meant to say you're paying $95/year for 150 minutes/month. Even at that, you can get twenty times the minutes for about four times as much.
You read me right. 150 minutes per year. Twenty times the minutes doesn't do me any good if I don't use them. That's the trap cellular companies try to get you to fall into.
And if you don't need the minutes, you can buy a prepaid "emergencies only" phone to carry in your car's glove compartment for far less than $95!
TracFone is prepaid service. Please show me one that is "far less" than TracFone and has the same (or similar) features. TracFone works anywhere in the US (roaming is double the rate), long distance is included no matter where you are, caller id, voice mail, call waiting, etc.
$95 for 150 minutes is a pretty horrible rate.
Not if you are a low volume user. You can't get any sort of plan from a traditional cellular company for $7.92 a month including all taxes and surcharges. I've also looked at the prepaid plans at some cellular companies and they seem aimed at convincing you to sign a contract. They aren't as good as TracFone.
So why are you trying to score more hundreds of free minutes on slashdot, Mister Low Volume?
;)
I'm doing it so you can get 100 free minutes. It's not for me at all.
I use a great cell phone service called TracFone (www.tracfone.com). I pay $95 per year (yes, year!) for 150 minutes. They often run specials where you can get another 100 minutes free. If you refer a friend you get 100 minutes free (and so does the friend). If you need more minutes you can buy them for ~20 cents a minute or less. This includes all taxes. No hidden fees. No surcharges. Minutes roll over to the next year if you don't use them.
I suspect that traditional cell phone plans are good for very high volume users, but for me TracFone works great. I know this sounds like an advertisement, but I really do use and like the service.
P.S. If you want to sign up, let me "refer" you and we'll both get 100 free minutes. Just leave your email address in a reply and I'll sign you up for the offer. (You'll just get one email solicitation.)