I've got an XP partition on a MacBook that's been through several drives, as they get Bigger Faster And Stronger. With the odd soft crash in there. (Unreadable until dd if=/dev/zero of=/dev/disk0 sort of thing.)
And now, everything I fart near the system configuration, I get to talk to Microsoft's computer and say yes, this key has only been used on this one computer, really, just this one computer, one, yes, one computer.
Sure doesn't convince me I ever want anything from them ever again.
Oh gods. I remember having to phone a friend at too-late-at-night because I was swapping hard disks between an Amiga and a PC... After getting the PC's old drive nicely partitioned on the Amiga, I needed to set the other one up on the PC....
And I'd forgotten I was going to have to do that from DEBUG.
The horrors... the horrors....
Mind you, I did write a HANG.COM in it to show off the F00F bug. Then realized COPY CON: HANG.COM and ALT+numeric pad worked just as well.
With iTunes, if you have any '.m4p' files left, they'd work fine right up until you got a new computer (assuming Apple shuts down the auth servers).
But once a computer is authorized for a particular song (actually, all songs using the same auth key), it doesn't need to check back in to play those songs.
Still, I didn't buy anything before iTunes+ existed. Don't want to play that game. We've got enough trouble with runtime licensing and "legacy systems" just to run the license daemons at work.
Time machine backs up everything on the root (/) volume by default, with exclusion lists (some built-in, some user-settable). I haven't bothered finding out if it can back up automounted volumes (mounted under/Volumes), or how it handles static mounts (mounted wherever you like), because I've had a Retrospect system doing The Real Backups for quite a few years now.
Time machine _works_ by maintaining a hardlink farm on the backup volume. So if you get into the backups without the Time Machine UI, all the backups are just plain files in the UNIX sense. One directory per backup event.
So, there's no requirement to save to your Documents folder. Anywhere in your User folder is fine; and so is/Applications,/Library,/Developer,/local,/mygnubuildfolder, or whatever.
Microsoft isn't the only company that shoots their users in the foot by trying to put a "hard" network protocol somewhere it doesn't belong.
The Finder behaves really badly with dodgy network shares; but with FTP, it's really easy to have an unresponsive server. AFP, SMB and NFS tend to be used a little closer to home, even if they don't have to be.
Too true. Some of the worst performing code I've ever seen was written by someone who "optimized" the C source first.
Sure, it worked on the broken compiler he was coding for, but when it hit a compiler with a GOOD optimizer, it sucked: The code was unreadable, and the "naive" and "maintainable" way of writing the code was much faster.
Your search word in the ANSI/ISO C standard is "sequence point". Follow that up with "invariant hoist", "common sub-expression", "register kills", and "non-volatile condition registers".
(Back in the day, hand-optimizing would work for an x86 chip, because there were no registers to speak of, so nothing could be held in the CPU. But on a RISC chip, that's just not the case. By creating extra sequence points, the compiler had to ensure certain calculations were serialized.)
Given this code:
if(x>0) { do something without x or y; ) if(x>0 && y) { do something without x or y; ) if(x>0 && y && z) {... }
A good optimizer, especially on a target with multiple condition registers, will just keep the result of the 'x>0' comparison in a CR, 'and'ing it with the other tests. It will also start the test of 'y' long before the 'if' statement logically appears, so there's no slow-down in the pipeline.
So don't fiddle with non-algorithmic changes to the code, until long after you've done everything else. If it makes a big difference, you need a better compiler anyway; or you need to re-think your declarations. Profile it, and only spend time impairing readability where performance really matters.
Replacing bubble sort with quick sort is worth it. "register boolean x_positive=x>0;" isn't.
Also, languages like C and C++ really suck if you put function calls inside tight loops. Unless the compiler "knows" the far side of the call, it has to assume memory and registers are killed (within the limits of the ABI), and so has to write variables to main storage and pull them back on either side of the function calls.
So, what you want is to hand large chunks of work around, not single values.
That'll be a big win for caching, too; if you're going to micro-optimize, you'd better pay attention to your cache stride and associativity.
What he didn't say is, it's a total-loss water cooling system. His office is cooler from the "swamp cooling" effect of the water pooling around the base of the PC.
This means I don't care about warranties on high-priced equipment. It still fails.
I buy lower-price equipment, and buy a spare or with 10% of the savings over the high-price kit.
It doesn't matter if a disk has a 5 year warranty. The system is still down (or the array still needs to be rebuilt) when it fails.
And I just haven't seen a correlation between failure rats and warranty. I've seen correlations with lots of other things: bad power regulation (say, capacitor plague in the power supply), poor vibration isolation, and mostly poor cooling.
For the same reason, I generally buy OEM parts. If downtime matters, I buy a spare.
Sometimes you need a big always-on mainframe-type system. Then you pay the money. Most things can be done on a bunch of similar machines; I just make sure it's easy to switch to a different machine. (Ooops, the main CVS server blew a gasket; pull the backup onto the other machine and change it's IP address.)
And if it was, either the number is so small it's easy to hit a good multiple, or it should be 5' and 10' or 6' and 12'.
But as another EE, I'm going to keep crimping my own cable. 'Cause I don't want a standing wave on my Ethernet, I want a near-distortionless cable. (A particular kind of signal loss: resistance is independent of frequency, phase shift is linear by frequency.) If the cable is impedance-matched to the connectors, it doesn't matter how long it is. Because you're not getting standing waves.
If I was getting a standing wave, that would mean I'd want energy NOT leaving by one end of the cable. Which would mean I'd be building an antenna system, and THEN I'd get the ruler out. (It's really easy to make one of those FM dipole antennas after you've been to signals class, especially if you've got lots of 300 ohm twin-lead but left your antenna in a different city.)
If I was doing the cables at ork, ork would have bought me a tester by now.
It's not just that there's no official maintainer....
It's all the forks that have happened over the years, with local dialects, pidgins, patois, and so on, each with their own user base, and varying levels of maintainer control.
It seems almost anyone is allowed to commit to en_US, for example. How else could "literally" mean "not literally"? Or "bi-monthly" mean "every other month" and "twice a month"?
Heck, if you sell uncapped, un-metered always-on connectivity, you don't need any logs at all. You need to set up a user name and password, or authorize a MAC address, or energize a particular port on a switch, or something. But it doesn't _matter_ if it ever gets used... the bills are because "you signed up and the month has ended." So you don't need to log it; you just need a way of turning it on when someone starts paying, and off when they stop.
To keep the exact same wire analogy, we don't pay by the minute for local voice phone calls. So I could place a call to a TekSavvy modem at 151 Front St, where they have peering arrangements with The Big Pipe Providers, and I could leave that modem dialled 24/7. And it would be using far more of Bell's resources than the little bit of string they use to connect my copper loop to TekSavvy's network.
In fact, leased lines, which are much closer to the type line services used for Internet access, have been around for business data for decades and aren't usage-based.
Finally, the costs of those last mile services are pretty much independent on the data transferred. They're dependent on the data capacity. Once the string is run, it's maintenance is not usage-based. It's time-based, and event-based. (Squirrel chewing through the wire; degradation over time, that sort of thing.)
Given that DSL modems _MODULATE_, and the modulation schemes in use make sure the line is _NEVER AT DC_, even the cost of ELECTRICITY is independent of usage.
All I want from Exchange is for text/plain message to go into it and come out the other side without being scrambled. I don't want them to suddenly turn into multipart/alternative, with the text/plain alternative complete re-flowed and a text/html alternative created from nothing.
Our IT group managed to get that to stop, and every other kind of message (from outside Exchange) stopped working properly. (Of course, from MAPI and Outlook, this isn't an issue 'cause none of our UNIX servers can talk to MAPI.)
Or, if it's already possible, I want a big shiny button put in the control panel that says "leave text/plain SMTP messages alone".
Yes; Firefox 3.0 does not run on Red Hat Enterprise Linux 4.x out of the box. Which I'm pretty sure is rather newer than Windows XP.
(Some of us run a tool server for work, and actually have all of Firefox 3's requirements compiled for RHEL 4, but if they weren't paying me, I wouldn't go through the pain of getting that dependency chain to compile. Irony is, the project that was going to use GTK+ went with QT on X11 instead.)
Well, Solaris has already been on POWER (albeit the PowerPC 601, which has a lot of POWER instructions in it).
AIX has been strange places, too: AIX 1 ran on PS/2 of course, and AIX 2 on RT/PC. AIX 4 was the first AIX release that could run on the same hardware as the previous release. (RS/6000, though AIX 4 could run on PowerPC PCs as well; PREP and CHRP. AIX 3 was RS/6000 only.)
SATA and SAS connectors were designed explicitly to mate with backplane connections like you're describing.
This is where Western Digital made some non-SATA disks they marketed as SATA, because the connector was not positioned correctly per the SATA standard.
They may be relatively fragile, but I'll take them over those horrible backplane attempts to mate with IDE and power connectors. Which means you can only ever buy at most 2 brands of disk.
Dimwits breaking backplanes just mean you need dimwit insurance if you're going to hire dimwits. If they didn't break them by misaligning drives and forcing them, they'd find another way to trash the hardware. Trust me.
Frankly, I'm not willing to pay extra for dimwit-proof hardware. I'm willing to pay for a lock on the machine room door instead.
Where I work, it's fairly easy to get working sets that can use 60 or 80 GB up nicely.
It's also fairly easy to get working sets that are a measly 512 MB per core, which means 4 GB on our 8 core Lenovo D10 is usually plenty. (But we've got 32 GB in it because of an experiment which someone else paid for. Yum!)
For a development shop, my current recommendation is 1 GB per physical core. And if you like those Sun "64 virtual cores with 1 physical" chips, I can't help you.
If you really want to know if you've got enough RAM, turn off swap. At least on AIX and Linux, which are the only systems I've had enough access to try this on. You still get dynamic loading and demand paging, but dirty pages have to remain in-core. If you start getting out of memory errors, or performance goes through the floor (as unmodified but in use pages get replaced) you could use more RAM.
For fun, I ran a -j 32 make on the above-mentioned D10 after telling the kernel it had only 2 GB of RAM. Instead of 50 minutes (for -j 1) or 20 minutes (for -j 4), it took over 8 hours. That's the power of swap!
I still configure a bunch of swap on large RAM machines, 'cause then I don't feel bad putting/tmp on it.
In Ontario, summer peak load is around 4:15 PM, there's another, smaller, peak around 8-9 PM in the evening. The first peak comes about as you get the people on early shifts (7-3) starting dinner, turning on the TV, having the air conditioning come back to full, and so on. But that's happening while stuff is still going on in offices, shops, and the rest.
The second peak in the evening is suspiciously close to when the utility has asked us to delay using the dish and clothes washers, clothes drier, and so on. It's also after dinner, so the natural time for doing those things anyway.
I see today, though, the first peak was around 10:30 or 11:00 AM, and the day's high demand is projected for 9 PM. Maybe it's because manufacturing is down, so it's mostly white-collar stuff happening on the grid.
But then, it was cold this morning, so more offices will need extra heat at the start of the work day. Especially if they keep the heat down for the weekend. Plus, March Break just ended, and there's probably some catching up to do--videos need to be put on You Tube, photos to Flickr, and maybe some office work, too.
(The evening peak is generally residential load. Heavy industrial load will be overnight, when power is cheapest, and Hydro will co-ordinate with smelters to make sure the demand doesn't drop below minimum base load. To the extent that, once, they actually _paid_ companies to switch on arc furnaces and bauxite smelters.)
And if using hot water is an issue, a storage tank and water-to-air exchangers on the roof to cool off the stored water over night would work wonderfully.
It is particularly sad that my office has the A/C running in the server room all winter, and there's no connection to the furnaces heating water for the radiators.
Of course, the furnaces are a horrible bodge-job congealed over decades, and the machine-room chillers are the nastiest combination of cheap and simple to install you can get--accounting refused the budget for the original chillers, and only allowed what we've got after a couple of servers burned when the one (1) undersized A/C failed and the room hit 68degC. May have gotten warmer, but that's where the machines which could actually log temperatures shut down.
I've got an XP partition on a MacBook that's been through several drives, as they get Bigger Faster And Stronger. With the odd soft crash in there. (Unreadable until dd if=/dev/zero of=/dev/disk0 sort of thing.)
And now, everything I fart near the system configuration, I get to talk to Microsoft's computer and say yes, this key has only been used on this one computer, really, just this one computer, one, yes, one computer.
Sure doesn't convince me I ever want anything from them ever again.
Oh gods. I remember having to phone a friend at too-late-at-night because I was swapping hard disks between an Amiga and a PC... After getting the PC's old drive nicely partitioned on the Amiga, I needed to set the other one up on the PC....
And I'd forgotten I was going to have to do that from DEBUG.
The horrors... the horrors....
Mind you, I did write a HANG.COM in it to show off the F00F bug. Then realized COPY CON: HANG.COM and ALT+numeric pad worked just as well.
With iTunes, if you have any '.m4p' files left, they'd work fine right up until you got a new computer (assuming Apple shuts down the auth servers).
But once a computer is authorized for a particular song (actually, all songs using the same auth key), it doesn't need to check back in to play those songs.
Still, I didn't buy anything before iTunes+ existed. Don't want to play that game. We've got enough trouble with runtime licensing and "legacy systems" just to run the license daemons at work.
Time machine backs up everything on the root (/) volume by default, with exclusion lists (some built-in, some user-settable). I haven't bothered finding out if it can back up automounted volumes (mounted under /Volumes), or how it handles static mounts (mounted wherever you like), because I've had a Retrospect system doing The Real Backups for quite a few years now.
Time machine _works_ by maintaining a hardlink farm on the backup volume. So if you get into the backups without the Time Machine UI, all the backups are just plain files in the UNIX sense. One directory per backup event.
So, there's no requirement to save to your Documents folder. Anywhere in your User folder is fine; and so is /Applications, /Library, /Developer, /local, /mygnubuildfolder, or whatever.
There's a better reason. Thermite is damn FUN to make. Well, damn fun to watch melt stuff.
Google "Mac Finder FTP hang".
Microsoft isn't the only company that shoots their users in the foot by trying to put a "hard" network protocol somewhere it doesn't belong.
The Finder behaves really badly with dodgy network shares; but with FTP, it's really easy to have an unresponsive server. AFP, SMB and NFS tend to be used a little closer to home, even if they don't have to be.
Too true. Some of the worst performing code I've ever seen was written by someone who "optimized" the C source first.
Sure, it worked on the broken compiler he was coding for, but when it hit a compiler with a GOOD optimizer, it sucked: The code was unreadable, and the "naive" and "maintainable" way of writing the code was much faster.
Your search word in the ANSI/ISO C standard is "sequence point". Follow that up with "invariant hoist", "common sub-expression", "register kills", and "non-volatile condition registers".
(Back in the day, hand-optimizing would work for an x86 chip, because there were no registers to speak of, so nothing could be held in the CPU. But on a RISC chip, that's just not the case. By creating extra sequence points, the compiler had to ensure certain calculations were serialized.)
Given this code:
A good optimizer, especially on a target with multiple condition registers, will just keep the result of the 'x>0' comparison in a CR, 'and'ing it with the other tests. It will also start the test of 'y' long before the 'if' statement logically appears, so there's no slow-down in the pipeline.
So don't fiddle with non-algorithmic changes to the code, until long after you've done everything else. If it makes a big difference, you need a better compiler anyway; or you need to re-think your declarations. Profile it, and only spend time impairing readability where performance really matters.
Replacing bubble sort with quick sort is worth it. "register boolean x_positive=x>0;" isn't.
Also, languages like C and C++ really suck if you put function calls inside tight loops. Unless the compiler "knows" the far side of the call, it has to assume memory and registers are killed (within the limits of the ABI), and so has to write variables to main storage and pull them back on either side of the function calls.
So, what you want is to hand large chunks of work around, not single values.
That'll be a big win for caching, too; if you're going to micro-optimize, you'd better pay attention to your cache stride and associativity.
Join us in OpenFirmware and EFI land, you'll like it.... USB keyboards work beautifully.
What he didn't say is, it's a total-loss water cooling system. His office is cooler from the "swamp cooling" effect of the water pooling around the base of the PC.
Hear, hear!
I ran Boxee for long enough to find out that all I cared about was XBMC, so that's all I run now.
My goal is to have the systems working.
This means I don't care about warranties on high-priced equipment. It still fails.
I buy lower-price equipment, and buy a spare or with 10% of the savings over the high-price kit.
It doesn't matter if a disk has a 5 year warranty. The system is still down (or the array still needs to be rebuilt) when it fails.
And I just haven't seen a correlation between failure rats and warranty. I've seen correlations with lots of other things: bad power regulation (say, capacitor plague in the power supply), poor vibration isolation, and mostly poor cooling.
For the same reason, I generally buy OEM parts. If downtime matters, I buy a spare.
Sometimes you need a big always-on mainframe-type system. Then you pay the money. Most things can be done on a bunch of similar machines; I just make sure it's easy to switch to a different machine. (Ooops, the main CVS server blew a gasket; pull the backup onto the other machine and change it's IP address.)
And if it was, either the number is so small it's easy to hit a good multiple, or it should be 5' and 10' or 6' and 12'.
But as another EE, I'm going to keep crimping my own cable. 'Cause I don't want a standing wave on my Ethernet, I want a near-distortionless cable. (A particular kind of signal loss: resistance is independent of frequency, phase shift is linear by frequency.) If the cable is impedance-matched to the connectors, it doesn't matter how long it is. Because you're not getting standing waves.
If I was getting a standing wave, that would mean I'd want energy NOT leaving by one end of the cable. Which would mean I'd be building an antenna system, and THEN I'd get the ruler out. (It's really easy to make one of those FM dipole antennas after you've been to signals class, especially if you've got lots of 300 ohm twin-lead but left your antenna in a different city.)
If I was doing the cables at ork, ork would have bought me a tester by now.
Yeah; I've got a problem with that, too. The warranty had better start when I buy the machine, not when the store buys the machine.
I've never heard of that happening before for new sales.
Unless what Dell is claiming is, these are actually second hand sales, and not new sales.
Still, there's a reason I've got a bunch of these orange egg-shaped microfiber cloths about the place now.
It's not just that there's no official maintainer....
It's all the forks that have happened over the years, with local dialects, pidgins, patois, and so on, each with their own user base, and varying levels of maintainer control.
It seems almost anyone is allowed to commit to en_US, for example. How else could "literally" mean "not literally"? Or "bi-monthly" mean "every other month" and "twice a month"?
Heck, if you sell uncapped, un-metered always-on connectivity, you don't need any logs at all. You need to set up a user name and password, or authorize a MAC address, or energize a particular port on a switch, or something. But it doesn't _matter_ if it ever gets used... the bills are because "you signed up and the month has ended." So you don't need to log it; you just need a way of turning it on when someone starts paying, and off when they stop.
To keep the exact same wire analogy, we don't pay by the minute for local voice phone calls. So I could place a call to a TekSavvy modem at 151 Front St, where they have peering arrangements with The Big Pipe Providers, and I could leave that modem dialled 24/7. And it would be using far more of Bell's resources than the little bit of string they use to connect my copper loop to TekSavvy's network.
In fact, leased lines, which are much closer to the type line services used for Internet access, have been around for business data for decades and aren't usage-based.
Finally, the costs of those last mile services are pretty much independent on the data transferred. They're dependent on the data capacity. Once the string is run, it's maintenance is not usage-based. It's time-based, and event-based. (Squirrel chewing through the wire; degradation over time, that sort of thing.)
Given that DSL modems _MODULATE_, and the modulation schemes in use make sure the line is _NEVER AT DC_, even the cost of ELECTRICITY is independent of usage.
All I want from Exchange is for text/plain message to go into it and come out the other side without being scrambled. I don't want them to suddenly turn into multipart/alternative, with the text/plain alternative complete re-flowed and a text/html alternative created from nothing.
Our IT group managed to get that to stop, and every other kind of message (from outside Exchange) stopped working properly. (Of course, from MAPI and Outlook, this isn't an issue 'cause none of our UNIX servers can talk to MAPI.)
Or, if it's already possible, I want a big shiny button put in the control panel that says "leave text/plain SMTP messages alone".
Yes; Firefox 3.0 does not run on Red Hat Enterprise Linux 4.x out of the box. Which I'm pretty sure is rather newer than Windows XP.
(Some of us run a tool server for work, and actually have all of Firefox 3's requirements compiled for RHEL 4, but if they weren't paying me, I wouldn't go through the pain of getting that dependency chain to compile. Irony is, the project that was going to use GTK+ went with QT on X11 instead.)
Well, Solaris has already been on POWER (albeit the PowerPC 601, which has a lot of POWER instructions in it).
AIX has been strange places, too: AIX 1 ran on PS/2 of course, and AIX 2 on RT/PC. AIX 4 was the first AIX release that could run on the same hardware as the previous release. (RS/6000, though AIX 4 could run on PowerPC PCs as well; PREP and CHRP. AIX 3 was RS/6000 only.)
AIX has even been on Itanium.
Why not get PizzaPizzaPizza?
Might be a bit expensive for delivery to Americans, though.
SATA and SAS connectors were designed explicitly to mate with backplane connections like you're describing.
This is where Western Digital made some non-SATA disks they marketed as SATA, because the connector was not positioned correctly per the SATA standard.
They may be relatively fragile, but I'll take them over those horrible backplane attempts to mate with IDE and power connectors. Which means you can only ever buy at most 2 brands of disk.
Dimwits breaking backplanes just mean you need dimwit insurance if you're going to hire dimwits. If they didn't break them by misaligning drives and forcing them, they'd find another way to trash the hardware. Trust me.
Frankly, I'm not willing to pay extra for dimwit-proof hardware. I'm willing to pay for a lock on the machine room door instead.
Depends what you're doing.
Where I work, it's fairly easy to get working sets that can use 60 or 80 GB up nicely.
It's also fairly easy to get working sets that are a measly 512 MB per core, which means 4 GB on our 8 core Lenovo D10 is usually plenty. (But we've got 32 GB in it because of an experiment which someone else paid for. Yum!)
For a development shop, my current recommendation is 1 GB per physical core. And if you like those Sun "64 virtual cores with 1 physical" chips, I can't help you.
If you really want to know if you've got enough RAM, turn off swap. At least on AIX and Linux, which are the only systems I've had enough access to try this on. You still get dynamic loading and demand paging, but dirty pages have to remain in-core. If you start getting out of memory errors, or performance goes through the floor (as unmodified but in use pages get replaced) you could use more RAM.
For fun, I ran a -j 32 make on the above-mentioned D10 after telling the kernel it had only 2 GB of RAM. Instead of 50 minutes (for -j 1) or 20 minutes (for -j 4), it took over 8 hours. That's the power of swap!
I still configure a bunch of swap on large RAM machines, 'cause then I don't feel bad putting /tmp on it.
(...must...get...budget...for...D20...)
I've been using UNIX and Linux as my sole work desktop system for... oh... how long ago was 1989?
Of course, I'm a UNIX and Linux programmer/administrator/debugger/whatever-else-is-neededer.
Home has been Amiga and Mac and Linux.
In Ontario, summer peak load is around 4:15 PM, there's another, smaller, peak around 8-9 PM in the evening. The first peak comes about as you get the people on early shifts (7-3) starting dinner, turning on the TV, having the air conditioning come back to full, and so on. But that's happening while stuff is still going on in offices, shops, and the rest.
The second peak in the evening is suspiciously close to when the utility has asked us to delay using the dish and clothes washers, clothes drier, and so on. It's also after dinner, so the natural time for doing those things anyway.
I see today, though, the first peak was around 10:30 or 11:00 AM, and the day's high demand is projected for 9 PM. Maybe it's because manufacturing is down, so it's mostly white-collar stuff happening on the grid.
But then, it was cold this morning, so more offices will need extra heat at the start of the work day. Especially if they keep the heat down for the weekend. Plus, March Break just ended, and there's probably some catching up to do--videos need to be put on You Tube, photos to Flickr, and maybe some office work, too.
(The evening peak is generally residential load. Heavy industrial load will be overnight, when power is cheapest, and Hydro will co-ordinate with smelters to make sure the demand doesn't drop below minimum base load. To the extent that, once, they actually _paid_ companies to switch on arc furnaces and bauxite smelters.)
And if using hot water is an issue, a storage tank and water-to-air exchangers on the roof to cool off the stored water over night would work wonderfully.
It is particularly sad that my office has the A/C running in the server room all winter, and there's no connection to the furnaces heating water for the radiators.
Of course, the furnaces are a horrible bodge-job congealed over decades, and the machine-room chillers are the nastiest combination of cheap and simple to install you can get--accounting refused the budget for the original chillers, and only allowed what we've got after a couple of servers burned when the one (1) undersized A/C failed and the room hit 68degC. May have gotten warmer, but that's where the machines which could actually log temperatures shut down.