Harddrives are mechanical beasts and it is more likely to be problem with moving parts.
The heads on old drives stuck to the platters when they cooled down. Happened to us, machine on for 2+ years when we spun it down for 12 hours it would never come up again. Extract harddrive, drop it and the heads 'break loose' then the whole thing works again.
The bearings are seized. Dropping the drive may shift it enough to start turning once it is up to speed then it will work again.
In all cases the 'get new harddrive' is excellent advice.
We are trying to set up a public intranet. There is a chicken and egg of I wont join untill it reaches mass, it wont reach mass until people join. This means that there is no mesh and therefore the whole thing does not work.
I thought that using packet radio to cheaply join up the segments would be a good option and in the long term a viable safeguard on the intranet mesh itself.
"...it was meant to be plain enough that you didn't need comments to understand it and comments got in the way and made the code more difficult to read."
This comment is actually true. In the extreme case, I teach University at times and I get submissions from Students who have heard me say "comments are good", they take this to heart. A 12 line shell script becomes a 400 line monster with all the comments including a cut and paste of the assignment sheet.
Good comments are the hardest thing in a programmer has to do. I don't think I have it right after many years of coding.
"Remember that [public domain] gives [the author] no rights. If people take your product, change the name, and charge $10 for it on eBay, tough."
GPL allows you to charge for distribution. If you distribute the software then you must also make source code available and cannot restrict redistribution except for the terms of the liberal GPL.
Under public domain the person may put a restrictive non-redistibution license on the software.
PS: Appologies for 'use software' I meant this i the sense of 'using source' not executables.
It is not that hard, I would have fired him on the spot!
Besides if you did have a source repository with versioning you could figure the original names easily. Or was it a traditional source repository without versioning.
OpenOffice.org has a lot of very old code written in german. I just babblefish the comments and variable names.
Also as pointed out you work through the program logically and rename the variables as you figure out what they do. I had a complete program with variables a b c and d, a was reused for two purposes, I had that worked out in about 2 hours, not hard really.
If you show me a procedural language then I could probably code in it within 24 hours and be as proficient as your best after 3 months.
I learnt functional programming quickly because of my knowledge of programming and ability to 'see patterns'. Other more experienced programmers could not 'see' how to code it and had to work far harder.
OO programming is a lot more art and I have not had the chance to do proper production programming solidly in it with a mentor to tell me where I broke the design. Given that I would expect to be 'good' in OO programming and design within 3 months (I have done a LOT of preliminary research, just my designs are awful).
So what I am saying is that it may not have been an idle boast just a poorly phrased one.
I went to an interview with teh marketting manager. He discussed in detail the project, artificial intelligance, blah blah blah (unlikely given the cobol application).
Next phase of interview was do you think you will be bored there is a lot of table maintenance involved. I ended the interview immediately and said I was not interested. Stunned look, back peddle, bluster, confusion. I rang head hunter and told them the guy was an idiot and forgot to shut off sales speak.
If you write using generic code without need for carefully crafted data types then the compiler should compile it as you described. Unfortunately I see code all the time that assumes 32 bit ints and they are a real bugger to port to 64 bit.
It really take knowledge and skill to write portable code that makes few assumptions about hardware. Porting for OpenOffice.org 64 bit has been worked on for about 18 months. Hopefully 128bit will not be as hard. See the code for dates that is not Y2K compliant written now I would doubt this will be the case. We (royal we) programmers never learn.
It really is a free market. If people refuse to pay for features because performance is poor then you will see a change. Currently it is easier to buy a new machine every 2-3 years and people expect that redundancy, I even advise it.
I think with the lack of upgrades to Windows you are starting to see this effect happening. People are simply sticking to what they have. Microsoft (as an example only) will have to consider performance gains on existing hardware as a marketable thing soon.
ubuntu is performs well and is easy to install but it is developed towards the desktop not server. Server ubuntu is in the pipeline but it is not it's current position in the market. (PS: it is a nice distribution though)
PS: Do not attempt to put your home on a vfat partition, it fails to install:-(
Thanks to both gowan and Chemisor, You have both argued an interesting issue.
The bottom line is that there are some problem domains that linked lists work well for, and some that do not. The interesting thing is that I would probably go and rewrite at least one of my linked list applications and benchmark my results to see if the list is viable, I suspect not.
It is strongly dependant on application domain, some applications run for months and memory fragmentation is an issue and they do run on huge systems with huge amounts of data stored in memory, again it would be interesting to benchmark the results of a change in these cases.
It is always about benchmarking the specific solution one against the other. It is my suspicion that if data addition is major portion of the work and data access is minimal then the linked list would probably win, if access is a major part then arrays would probably win.
Generalisations are generally bad as Gowan has pointed out.
You can restart the service and still keep your uptime and provide the testing you require. However it is true that a complete down and up would be good to do when everyone is prepared to sort out the mess and the least impact on your business. Warm swaps would be a good idea if it is that critical.
It is interesting that doing a code review well is very hard. I have a hard time not reimplementing my concept of the code over the top of the code provided. This is incredibly hard to do.
It sounds like your "testing" is the automated testing that you have in place, this is excellent and should be part of the build. Note that you should NOT be testing it yourself before the code review The whole point is to ferret out bugs before wasting time on further testing, ie code, automated tests, review, then test thoroughly.
One of the points of this is attitude of the programmers. If you sit in and say "I tested this and it works" it immediately reduces the incentive to really find bugs.
Complexity is sometimes required to make things work. Sure you can work out simple ways to do simple things but complex things like handling user interaction is not simple, users are not predictable especially when my kids get on the keyboard.
I switched from LInux to Windows because my IT sections is geared to Windows and I want to be able to pull it back in-house anytime. Good decision, IMHO. It might have shot term been cheaper for them to find another Linux ISP with better staff but it is a little bit of a needle in a haystack as you point out, too many people claiming and very little certification. LPIC anyone?
ii)
I switched from Linux because my application programmers were idiots and I had confidence in other suppliers that I had more faith in who happened to use Windows. Again this is a valid business decission. I am curious whether the snow people investigated the various open source shops around or rolled their own?
The problem with SQL is that you have everything built into the one program. Pipelines allow you to bolt functions together in an unanticipated order to create complete program concepts without writing any glue code.
You might want to read the art of unix programming for details on why pipelining is so good.
gcc -Wall giving a clean compile is becoming the default standard for FOSS. No-one is rigorously enforcing this standard however many projects are taking this on board and cleaning up their codebases. lint can be very tricky to set up especially cross checking lint (better than -Wall) so few people bother with it.
There was at least one person that wrote the software originally. Sure their might not be an ongoing audit however is there an audit on commerical software every year? So their were at least 2 eyes the one who wrote the driver and the one who accepted it to the kernel.
It is quite common to do offbeat tests to see how a person will respond. A common one is describe the process to make coffee. This allows the person to show how they work under pressure, how well they communicate and to a degree how they think. If they sit there dumbstruck guess what happens next time you have a system down for no apparent reason.
By the way one correct answer was, take team hand over money to waiter receive coffee. This showed thinking outside the square and therefore a perfect candidate for that particular job.
Harddrives are mechanical beasts and it is more likely to be problem with moving parts.
The heads on old drives stuck to the platters when they cooled down. Happened to us, machine on for 2+ years when we spun it down for 12 hours it would never come up again. Extract harddrive, drop it and the heads 'break loose' then the whole thing works again.
The bearings are seized. Dropping the drive may shift it enough to start turning once it is up to speed then it will work again.
In all cases the 'get new harddrive' is excellent advice.
We are trying to set up a public intranet. There is a chicken and egg of I wont join untill it reaches mass, it wont reach mass until people join. This means that there is no mesh and therefore the whole thing does not work.
I thought that using packet radio to cheaply join up the segments would be a good option and in the long term a viable safeguard on the intranet mesh itself.
Anyone done this?
A linux group in the Asutralian bush is actually under the ham radio club. So I guess you are spot on the money there :-)
"...it was meant to be plain enough that you didn't need comments to understand it and comments got in the way and made the code more difficult to read."
This comment is actually true. In the extreme case, I teach University at times and I get submissions from Students who have heard me say "comments are good", they take this to heart. A 12 line shell script becomes a 400 line monster with all the comments including a cut and paste of the assignment sheet.
Good comments are the hardest thing in a programmer has to do. I don't think I have it right after many years of coding.
Original quote:
"Remember that [public domain] gives [the author] no rights. If people take your product, change the name, and charge $10 for it on eBay, tough."
GPL allows you to charge for distribution. If you distribute the software then you must also make source code available and cannot restrict redistribution except for the terms of the liberal GPL.
Under public domain the person may put a restrictive non-redistibution license on the software.
PS: Appologies for 'use software' I meant this i the sense of 'using source' not executables.
Creative commons is typcially about documentation rather than source code.
Options are with great simplification:
GPL like: You cannot use this software except with other open source software.
LGPL like: You can use my software with anything but ANY modifications to my software must be published. Great for libraries.
BSD like: You may use this as you like, we may want attribution, we recommend that you release source code.
Public domain: Use it as you like.
What do you want to acheive is the question you should be answering.
It is not that hard, I would have fired him on the spot!
Besides if you did have a source repository with versioning you could figure the original names easily. Or was it a traditional source repository without versioning.
OpenOffice.org has a lot of very old code written in german. I just babblefish the comments and variable names.
Also as pointed out you work through the program logically and rename the variables as you figure out what they do. I had a complete program with variables a b c and d, a was reused for two purposes, I had that worked out in about 2 hours, not hard really.
What is wrong with that :-)
If you show me a procedural language then I could probably code in it within 24 hours and be as proficient as your best after 3 months.
I learnt functional programming quickly because of my knowledge of programming and ability to 'see patterns'. Other more experienced programmers could not 'see' how to code it and had to work far harder.
OO programming is a lot more art and I have not had the chance to do proper production programming solidly in it with a mentor to tell me where I broke the design. Given that I would expect to be 'good' in OO programming and design within 3 months (I have done a LOT of preliminary research, just my designs are awful).
So what I am saying is that it may not have been an idle boast just a poorly phrased one.
I went to an interview with teh marketting manager. He discussed in detail the project, artificial intelligance, blah blah blah (unlikely given the cobol application).
Next phase of interview was do you think you will be bored there is a lot of table maintenance involved. I ended the interview immediately and said I was not interested. Stunned look, back peddle, bluster, confusion. I rang head hunter and told them the guy was an idiot and forgot to shut off sales speak.
If you write using generic code without need for carefully crafted data types then the compiler should compile it as you described. Unfortunately I see code all the time that assumes 32 bit ints and they are a real bugger to port to 64 bit.
It really take knowledge and skill to write portable code that makes few assumptions about hardware. Porting for OpenOffice.org 64 bit has been worked on for about 18 months. Hopefully 128bit will not be as hard. See the code for dates that is not Y2K compliant written now I would doubt this will be the case. We (royal we) programmers never learn.
It really is a free market. If people refuse to pay for features because performance is poor then you will see a change. Currently it is easier to buy a new machine every 2-3 years and people expect that redundancy, I even advise it.
I think with the lack of upgrades to Windows you are starting to see this effect happening. People are simply sticking to what they have. Microsoft (as an example only) will have to consider performance gains on existing hardware as a marketable thing soon.
ubuntu is performs well and is easy to install but it is developed towards the desktop not server. Server ubuntu is in the pipeline but it is not it's current position in the market. (PS: it is a nice distribution though)
:-(
PS: Do not attempt to put your home on a vfat partition, it fails to install
Thanks to both gowan and Chemisor, You have both argued an interesting issue.
The bottom line is that there are some problem domains that linked lists work well for, and some that do not. The interesting thing is that I would probably go and rewrite at least one of my linked list applications and benchmark my results to see if the list is viable, I suspect not.
It is strongly dependant on application domain, some applications run for months and memory fragmentation is an issue and they do run on huge systems with huge amounts of data stored in memory, again it would be interesting to benchmark the results of a change in these cases.
It is always about benchmarking the specific solution one against the other. It is my suspicion that if data addition is major portion of the work and data access is minimal then the linked list would probably win, if access is a major part then arrays would probably win.
Generalisations are generally bad as Gowan has pointed out.
Hey I did a link list in cobol and GPL'd the result.
Funny Cobol programmers were not interested. Go figure.
Just trust me it will work.
:-)
Well most of the time I am right anyway
You can restart the service and still keep your uptime and provide the testing you require. However it is true that a complete down and up would be good to do when everyone is prepared to sort out the mess and the least impact on your business. Warm swaps would be a good idea if it is that critical.
"a staple on IRIX®, the world's most technically advanced UNIX® high-performance computing environment."
It is interesting that doing a code review well is very hard. I have a hard time not reimplementing my concept of the code over the top of the code provided. This is incredibly hard to do.
It sounds like your "testing" is the automated testing that you have in place, this is excellent and should be part of the build. Note that you should NOT be testing it yourself before the code review The whole point is to ferret out bugs before wasting time on further testing, ie code, automated tests, review, then test thoroughly.
One of the points of this is attitude of the programmers. If you sit in and say "I tested this and it works" it immediately reduces the incentive to really find bugs.
Does a lot of the checking that lint does and it is free and happens every time you compile.
If you check -Wparentheses, I found three assignment bugs in OpenOffice.org already.
Complexity is sometimes required to make things work. Sure you can work out simple ways to do simple things but complex things like handling user interaction is not simple, users are not predictable especially when my kids get on the keyboard.
I would summarise this as:
i)
I switched from LInux to Windows because my IT sections is geared to Windows and I want to be able to pull it back in-house anytime. Good decision, IMHO. It might have shot term been cheaper for them to find another Linux ISP with better staff but it is a little bit of a needle in a haystack as you point out, too many people claiming and very little certification. LPIC anyone?
ii)
I switched from Linux because my application programmers were idiots and I had confidence in other suppliers that I had more faith in who happened to use Windows. Again this is a valid business decission. I am curious whether the snow people investigated the various open source shops around or rolled their own?
The problem with SQL is that you have everything built into the one program. Pipelines allow you to bolt functions together in an unanticipated order to create complete program concepts without writing any glue code.
You might want to read the art of unix programming for details on why pipelining is so good.
gcc -Wall giving a clean compile is becoming the default standard for FOSS. No-one is rigorously enforcing this standard however many projects are taking this on board and cleaning up their codebases. lint can be very tricky to set up especially cross checking lint (better than -Wall) so few people bother with it.
There was at least one person that wrote the software originally. Sure their might not be an ongoing audit however is there an audit on commerical software every year? So their were at least 2 eyes the one who wrote the driver and the one who accepted it to the kernel.
It is quite common to do offbeat tests to see how a person will respond. A common one is describe the process to make coffee. This allows the person to show how they work under pressure, how well they communicate and to a degree how they think. If they sit there dumbstruck guess what happens next time you have a system down for no apparent reason.
By the way one correct answer was, take team hand over money to waiter receive coffee. This showed thinking outside the square and therefore a perfect candidate for that particular job.