Except it's simply not true any more. If you've got 4GB of RAM the chances of getting an out of memory on normal loads is pretty minimal. Entire servers these days run without any swap.
Never heard the term secondary memory used in CS.. in fact it sounds like a confusion of terms, becuase you look like you've confused backing store with the paging file. It may be the way you were taught, but it's wise to keep the distinction. Also not all paging files are permanent - you can page to slow memory (like CMOS RAM) which will still lose its data when powered off - although I don't believe this is commonly done any more.
In an industry which changes almost daily asking slashdot is probably a good thing to do... one of the reasons there are no stupid questions is the answer isn't always as obvious as it first appears.
Virtual memory is any memory that either doesn't really exist, or if it does, doesn't exist where you think it does. It's only partially related to paging files.. even if you delete the page file you're still using virtual memory (eg. all applications on Windows load to the same address.. obviously that can't be doing that really.. it's because they only see virtual addresses - only the OS really knows where they are).
The page file is not persistent... in fact many secure systems encrypt it with a random key that changes each boot so you can't recover from it. You're confusing with the hibernation file - which on some early OSs was done using swap (hence the old idea of swap = 2x RAM so you had enough space to dump the entire core into it).
It's not true that you don't use it until all the memory is used up - that would be a poor algorithm. You either use is when a certain percentage is used up (ie. you run the risk of not being able to respond to a sudden demand for memory, so you clear some just in case), or you agressively swap out things that haven't been accessed for a certain time (this is what Windows does).
4gb on OSX here and I've got 0 bytes in swap even after having both Wow and firefox up for an hour or two.
Windows is very agressive in what it puts into swap.. if you come to a machine after it's been idle for a few hours it runs like a dog while it swaps everything back.. that's a royal pain at work where we're doing database work - if mssql gets paged out it takes a *long* time to recover to a running state. I tend to issue a create database and go and make my morning cup of tea.
My wife as a child frequently saw her mothers old dog - who died before she was born.
Completely wierd.. presumably some sort of memory that got inherited but these things do happen quite a lot.
I wonder why it doesn't happen more often with inanimate objects - eg. if you've had the same TV for years then upgrade it, do some people sometimes see the old TV?
Of course they oversold their capacity, and they even told you by how much - in the UK the consumer lines are up to a 50:1 ratio. My own ISP keeps under 15:1 which pretty much means no slowdowns even during busy times... but I pay for the privilege.
If they'd gone for 1:1 they wouldn't have sold many connections at £1000/month.
Most games are UDP based because TCP introduces latency. All the Doom/Quake/Unreal type games are UDP, as latency is important in those sorts of games.
PS3 uses UDP. XBox360 uses UDP.
Even WoW uses UDP for in-game voice chat.
As far as the future goes, there are already ISPs that offer video services and it's only a short step to them *only* allowing video downloads off their servers. I expect the likes of Amazon and Netflix will be doing deals to ensure they get a piece of that pie.
It's a marketing trick that ISPs have been playing for years.. One of my phonea has "unlimited" internet with a 1GB cap!
They're more subtle these days.. after they were well and truly caught lying by saying unlimited and putting caps in their FUP, they took the numbers out.. now it says something like "if your usage is excessive we reserve the right to throttle and/or cancel your account" without actually telling you what excessive actually is.
There are one or two ISPs who are truly unlimited but they're very hard to find.
Computing is boolean arithmetic + a bit of algebra and some arithmetic at heart, but it's much more than that.. in the same way the Cystine chapel is just a bunch of bricks and concrete with some oil stuck on the ceiling, and michelangelo's david is a block of stone... but they're more than that, because people have added their own touch.
Someone designed the slashdot site not because it was mathematically perfect, but because they thought it looked good (opinions vary whether they were correct). I'd argue Slashdot is meaningful.
I'm senior developer on a project with over 1.5 million users. I can't do maths... but the project is meaninful those people that use it.
Interesting.. I have a lot of respect for joel and might give that a read.
I'm not sure that knowing how a string *really* works is really a CS-y skill though. You just have to realize that at its heart a processor is just moving bytes around and doing simple logical operations on them, so knowing that assigning to string risks doing a memory allocation is down to experience. That's why not so long ago we always used to say learn C first then everything else, because you're working much closer to the bare metal.
I do worry about some of the stuff that MS come out with.. layer upon layer upon layer until they've abstracted so far you can't even see the underlying mechanisms (I was at an MSDN where they were demoing a database layer that abstracted the entire structure into XML then added a layer on top of that to manipulate it). One bug in that mess and you're hosed...
The main thing you need, in my opinion, (after the ability to read and understand plain-language error messages, which a lot of people seem to be lacking ), is the ability to "see" in your mind how different system interact and depend on each other.
You're not the first I've heard use that expression - I've even used it myself on occasion. You can't really teach it... and it's certainly not learned on CS degrees (the best programmers I've met with that skill haven't got a piece of paper to their name).
You get maybe 100 CVs. You have 5 interview slots.
If all you've got on your CV is 'I have a cool qualification' then yes, I'll assume that you're in it for the money and bin it.
If you have lots of experience out of work, have played with Linux, your first computer was a hand built ZX80 *and* you have a cool qualification then you might get as far as interview.
I've had much of the same experience with graduates here in the UK, which is one reason we don't hire them any more. They often produce a piece of code that's probably *theoretically* correct, but completely fail to take into account deadlines, coding standard, structure, maintainability, etc.
We had one that spent 2 weeks writing a sort algorithm in C (qsort wasn't good enough for him) then when he needed to sort in the other direction he spent another 2 weeks writing a completely different one (clearly the not operation isn't tought at CS any more). He didn't last long...
Indeed. We avoid graduates because they've learned a lot of theory but have little practical experience... someone who's self taught and has a few years working on decently sized projects is way more qualified... and that doesn't have to be all commercial - some of our best people had only worked on OSS before.
I've seen much the same - started with the vista release candidates and finally ditched the thing a few months back after we decided that we'd made our software work. It degrades over time.. gets much slower, and odd things just start failing. I had mine refusing to tell me whether the network was active because I didn't have permissions.. When moving a folder from one drive to another it seemed to decide to pick about 70% of the files, move them and leave the rest behind, for no reason. Network performance never got sorted out, despite it being bad in the RCs and reported as a fault MS never fixed it.. you'd get 1kbps SMB writes to some servers and others it could use a reasonable percentage of gigabit ethernet - we ended up using ftp for file transfer in and out of it.
Vista could do the same in a few years... Windows 2008 which is basically just another distro of Windows (same Vista kernel, different userspace) runs very well and if MS used that as a base (ie. roll back the feature set, install with everything disabled by default and allow things to enable as they're used) it could even become a competent OS.
Some have also pointed out that it's not really a new OS, just an attempt to recover from a marketing disaster by applying lipstick and eyeliner to that sad old pig we call Vista.
So you're saying that Windows 7 is really Sarah Palin?
The only problem I've ever had with an apple product was just recently when a new macbook started crashing daily. It was replaced with no question and no hassle even though it was beyond the 14 day return, and I couldn't actually prove the fault because it was so random.
Compared to the nightmare I've had with other manufacturers for *way* more obvious faults - eg. I had a fujitsu laptop which shipped with a loose keyboard and a dodgy DVD-Rom, which *never* got fixed despite multiple requests for replacement/repair (I no longer buy their products).
It's not logical reasons that keep people from shifting to Linux now, it's just the fear of the unknown.
That's also killing Vista as much as its bad reputation.
Microsoft are their own worst enemy at the moment. Windows 95/98/ME and XP had substantially the same interface.. the majority of non-techies will have learned on that interface.. schools are still teaching that interface in 'office' classes. It's extremely likely that everyone in your workplace from the cleaners upwards would know what to do when faced with an XP desktop. Now MS want to throw all that learning away - and people are just saying "screw that, I want my nice familiar interface back" and downgrading to XP.
Samba works on ipv6 but I think the OSX version doesn't. Things go *really* screwy if you use an ipv6 enabled samba in a Win2003 domain, so they probably disabled it to avoid problems.
WTF? XP autoconfig works just fine.. every XP machine here has a working ipv6 stack and I wouldn't even know what the cli commands were as I've never had to use them.
Except it's simply not true any more. If you've got 4GB of RAM the chances of getting an out of memory on normal loads is pretty minimal. Entire servers these days run without any swap.
Never heard the term secondary memory used in CS.. in fact it sounds like a confusion of terms, becuase you look like you've confused backing store with the paging file. It may be the way you were taught, but it's wise to keep the distinction. Also not all paging files are permanent - you can page to slow memory (like CMOS RAM) which will still lose its data when powered off - although I don't believe this is commonly done any more.
In an industry which changes almost daily asking slashdot is probably a good thing to do... one of the reasons there are no stupid questions is the answer isn't always as obvious as it first appears.
I hope not.. paging to a ramdisk would be kinda silly.
Virtual memory is any memory that either doesn't really exist, or if it does, doesn't exist where you think it does. It's only partially related to paging files.. even if you delete the page file you're still using virtual memory (eg. all applications on Windows load to the same address.. obviously that can't be doing that really.. it's because they only see virtual addresses - only the OS really knows where they are).
The page file is not persistent... in fact many secure systems encrypt it with a random key that changes each boot so you can't recover from it. You're confusing with the hibernation file - which on some early OSs was done using swap (hence the old idea of swap = 2x RAM so you had enough space to dump the entire core into it).
It's not true that you don't use it until all the memory is used up - that would be a poor algorithm. You either use is when a certain percentage is used up (ie. you run the risk of not being able to respond to a sudden demand for memory, so you clear some just in case), or you agressively swap out things that haven't been accessed for a certain time (this is what Windows does).
4gb on OSX here and I've got 0 bytes in swap even after having both Wow and firefox up for an hour or two.
Windows is very agressive in what it puts into swap.. if you come to a machine after it's been idle for a few hours it runs like a dog while it swaps everything back.. that's a royal pain at work where we're doing database work - if mssql gets paged out it takes a *long* time to recover to a running state. I tend to issue a create database and go and make my morning cup of tea.
My wife as a child frequently saw her mothers old dog - who died before she was born.
Completely wierd.. presumably some sort of memory that got inherited but these things do happen quite a lot.
I wonder why it doesn't happen more often with inanimate objects - eg. if you've had the same TV for years then upgrade it, do some people sometimes see the old TV?
As others have stated that's a total myth and is simply not true.
Apple has about 10% right now, so by your theory 10% of viruses should be for OSX. Number of viruses in the wild? Zero.
Of course they oversold their capacity, and they even told you by how much - in the UK the consumer lines are up to a 50:1 ratio. My own ISP keeps under 15:1 which pretty much means no slowdowns even during busy times... but I pay for the privilege.
If they'd gone for 1:1 they wouldn't have sold many connections at £1000/month.
Most games are UDP based because TCP introduces latency. All the Doom/Quake/Unreal type games are UDP, as latency is important in those sorts of games.
PS3 uses UDP. XBox360 uses UDP.
Even WoW uses UDP for in-game voice chat.
As far as the future goes, there are already ISPs that offer video services and it's only a short step to them *only* allowing video downloads off their servers. I expect the likes of Amazon and Netflix will be doing deals to ensure they get a piece of that pie.
Well.. for certain values of "unlimited".
It's a marketing trick that ISPs have been playing for years.. One of my phonea has "unlimited" internet with a 1GB cap!
They're more subtle these days.. after they were well and truly caught lying by saying unlimited and putting caps in their FUP, they took the numbers out.. now it says something like "if your usage is excessive we reserve the right to throttle and/or cancel your account" without actually telling you what excessive actually is.
There are one or two ISPs who are truly unlimited but they're very hard to find.
+1 - couldn't have put it better myself.
Computing is boolean arithmetic + a bit of algebra and some arithmetic at heart, but it's much more than that.. in the same way the Cystine chapel is just a bunch of bricks and concrete with some oil stuck on the ceiling, and michelangelo's david is a block of stone... but they're more than that, because people have added their own touch.
Someone designed the slashdot site not because it was mathematically perfect, but because they thought it looked good (opinions vary whether they were correct). I'd argue Slashdot is meaningful.
I'm senior developer on a project with over 1.5 million users. I can't do maths... but the project is meaninful those people that use it.
Interesting.. I have a lot of respect for joel and might give that a read.
I'm not sure that knowing how a string *really* works is really a CS-y skill though. You just have to realize that at its heart a processor is just moving bytes around and doing simple logical operations on them, so knowing that assigning to string risks doing a memory allocation is down to experience. That's why not so long ago we always used to say learn C first then everything else, because you're working much closer to the bare metal.
I do worry about some of the stuff that MS come out with.. layer upon layer upon layer until they've abstracted so far you can't even see the underlying mechanisms (I was at an MSDN where they were demoing a database layer that abstracted the entire structure into XML then added a layer on top of that to manipulate it). One bug in that mess and you're hosed...
The main thing you need, in my opinion, (after the ability to read and understand plain-language error messages, which a lot of people seem to be lacking ), is the ability to "see" in your mind how different system interact and depend on each other.
You're not the first I've heard use that expression - I've even used it myself on occasion. You can't really teach it... and it's certainly not learned on CS degrees (the best programmers I've met with that skill haven't got a piece of paper to their name).
You get maybe 100 CVs. You have 5 interview slots.
If all you've got on your CV is 'I have a cool qualification' then yes, I'll assume that you're in it for the money and bin it.
If you have lots of experience out of work, have played with Linux, your first computer was a hand built ZX80 *and* you have a cool qualification then you might get as far as interview.
I've had much of the same experience with graduates here in the UK, which is one reason we don't hire them any more. They often produce a piece of code that's probably *theoretically* correct, but completely fail to take into account deadlines, coding standard, structure, maintainability, etc.
We had one that spent 2 weeks writing a sort algorithm in C (qsort wasn't good enough for him) then when he needed to sort in the other direction he spent another 2 weeks writing a completely different one (clearly the not operation isn't tought at CS any more). He didn't last long...
Indeed. We avoid graduates because they've learned a lot of theory but have little practical experience... someone who's self taught and has a few years working on decently sized projects is way more qualified... and that doesn't have to be all commercial - some of our best people had only worked on OSS before.
I've seen much the same - started with the vista release candidates and finally ditched the thing a few months back after we decided that we'd made our software work. It degrades over time.. gets much slower, and odd things just start failing. I had mine refusing to tell me whether the network was active because I didn't have permissions.. When moving a folder from one drive to another it seemed to decide to pick about 70% of the files, move them and leave the rest behind, for no reason. Network performance never got sorted out, despite it being bad in the RCs and reported as a fault MS never fixed it.. you'd get 1kbps SMB writes to some servers and others it could use a reasonable percentage of gigabit ethernet - we ended up using ftp for file transfer in and out of it.
If I never have to use vista again I'll be happy.
XP actually got half decent around the SP2 time.
Vista could do the same in a few years... Windows 2008 which is basically just another distro of Windows (same Vista kernel, different userspace) runs very well and if MS used that as a base (ie. roll back the feature set, install with everything disabled by default and allow things to enable as they're used) it could even become a competent OS.
Some have also pointed out that it's not really a new OS, just an attempt to recover from a marketing disaster by applying lipstick and eyeliner to that sad old pig we call Vista.
So you're saying that Windows 7 is really Sarah Palin?
Really? The only vista laptop I've ever seen bluescreened reliably if you tried to suspend it. Once I'd upgraded it back to XP it worked perfectly.
You're right that compare to OSX no Windows/Linux OS has got suspend/resume right.
The only problem I've ever had with an apple product was just recently when a new macbook started crashing daily. It was replaced with no question and no hassle even though it was beyond the 14 day return, and I couldn't actually prove the fault because it was so random.
Compared to the nightmare I've had with other manufacturers for *way* more obvious faults - eg. I had a fujitsu laptop which shipped with a loose keyboard and a dodgy DVD-Rom, which *never* got fixed despite multiple requests for replacement/repair (I no longer buy their products).
They both behave in exactly the same way - they terminate the application and move on. Just like every other OS, in fact.
Or are you thinking of Windows 95, which didn't have proper memory management so a crash tended to kill the entire OS?
It's not logical reasons that keep people from shifting to Linux now, it's just the fear of the unknown.
That's also killing Vista as much as its bad reputation.
Microsoft are their own worst enemy at the moment. Windows 95/98/ME and XP had substantially the same interface.. the majority of non-techies will have learned on that interface.. schools are still teaching that interface in 'office' classes. It's extremely likely that everyone in your workplace from the cleaners upwards would know what to do when faced with an XP desktop. Now MS want to throw all that learning away - and people are just saying "screw that, I want my nice familiar interface back" and downgrading to XP.
If your routers aren't sending router advertisements then you have bigger problems. *no* OS will autoconfigure in that situation.
Samba works on ipv6 but I think the OSX version doesn't. Things go *really* screwy if you use an ipv6 enabled samba in a Win2003 domain, so they probably disabled it to avoid problems.
WTF? XP autoconfig works just fine.. every XP machine here has a working ipv6 stack and I wouldn't even know what the cli commands were as I've never had to use them.