I really loved your comment. It made me laugh, I've never seen anyone be so blase.
So you're a consultant. Everything you do is perfect. You never get ill. Your family never gets ill. You're [whoever your next prospective customer is]'s personal saviour. You save billions of dollar every day. You leap tall buildings in a single bound. You promise the world, and always deliver! You're worth every penny you charge. You've never been on a project for more than a couple of weeks. You've never had to integrate it to more than one or two things. You've never had to renovate it because the thing you integrated against changed and broke your app. You can ditch anything you don't like, because it's your way or the highway. Those pesky customers only think they know what they want, but you know best! You've never heard of maintenance. You use a Rapid Application dev tool to crank out Rapid Applications. This tool only does what it was explicitly designed to do for you, other people just couldn't get the tool to do exactly what it was designed for. You know this tool better than the people who wrote it, like a secretary knows MS Word better than Microsoft!
You've also skim-read The Mythical Man-Month.
Lotus Notes didn't become what it is today by telling consultants and RAD monkeys how to do their jobs, then giving them whatever one coder could crank out in one week to do it with. The Lotus programmers didn't have an RRD (Rapid RAD Development) toolkit to write 99.999% of Lotus Notes for them. It took them more than 6 months, and it would have taken any team, even a team of great coders or even a single great coder, more than 6 months to write.
Because you only write trivial apps, you assume that every possible programming task must have a 4th Generation Language to really ramp down the complexity of software. But there isn't. Some things are trivial, some trivial things can be made to seem complex, some things really are complex, and to pretend that they aren't leads only to failure.
Once you stop writing web/UI frontends to databases and start writing complex software, you realise just how alone you are -- there are very few tools to help you write things. You cling to everything you can get -- libraries, editors, parser-generators, refactoring tools, etc., but there comes a point where what is needed hasn't been written by anyone, ever. You have to write it, and you haven't written anything like it before. You don't have a single line of well-written, well-tested stock of library code to help you.
If a project cannot be completed by one good programmer in 6 months, it is designed wrong.
This one I'll have to quote around the office. It's the height of naivety. When you start writing full featured 50Kb implementations of Brazillian ISUP that can handle 40 calls/s volume on a 150MHz 604e, I'll be impressed. I'll be even more impressed when, 6 months after release, you work out that "foo = bar" should have been "foo = baz", when some other vendor's equipment uses different values for bar and baz in their packets, which your own equipment doesn't, then you write a 20 byte binary patch (in machine code) rather than use the patching tool which makes a patch that has to replace the entire 2Kb function.
Oh, and yes, Brazillian ISUP can easily be done in 6 months. As can any ISUP. But not ALL of them by the SAME people. And that's the point. To write 20 ISUPs from scratch and integrate them all into the same 6 month release, and test them all, that takes an incredible effort. You can't even think bigger than a single sub-component written by a single person in a tool designed to make it easy. That's what I call trivial.
Logistics, man. If it can be physically completed by one man in two weeks, it is a small project. No two ways about it. You are doing trivial work, and you've planned your career to do trivial work.
The source code is the programming documentation, although comments are welcome.
You're saying you write no design documentation or user documentation? You're saying that, in order for a new programmer to understand your projects, they would have to read the entire source code of the project, which is mostly code with the occasional comment?
If the interface is very important, then I start with the interface. [...] If how the data is processed is the important function, then I start with the code,
When do you do the business case? When do you do the design? When do you validate the design? When do you partition the work? It appears you don't. It appears you are cranking out one day, one person projects.
I won't denigrate you for writing them. Everybody has to start somewhere. Tying a small UI to a small database with a tool designed for doing just that is not hard work. Consider yourself lucky that you don't have to maintain a billion LOC, 20 year old project that you didn't write.
Write your prototype - and then deploy it, because it's already fast and robust enough for everyday use.
And then watch it die, because everybody updates the app with a line here and there, and it crumbles into a mess of hundreds of different programming styles written in obscure line-noise with no documentation.
A prototype in software engineering is just that -- a bare bones quickly knocked-out attempt at checking if some assumptions hold up or not. A prototype is something you write in 5 minutes with no thought given to its future reliablility maintainability. After the prototypes, only then do we seriously design the software. We do not give prototypes to customers and say "they you are, it's finished".
There's no source code. So I'm not going to use it. Well, that was the easiest decision I made all year!
There was a time that I would put up with binary-only compilers. That was before gcc. Sure, both free and non-free compilers have bugs, but it's so much easier just to fix those compiler bugs yourself in the compiler's own source code, rather than have to craft a binary patch to fix the bug while you wait 6 months for the vendor to think about releasing the next version.
I had a lot of CDs, too -- I just encoded them one by one. It took a month. MP3 encoding (the good kind, VBR, not fixed bitrate) took longer than reading the discs anyway... you don't want to know what 25 instances of LAME running does to your CPU load...
My opinion is that having NVIDIA work with kernel developers to come up with fully open-source, GPL licensed Linux drivers for their hardware would be better than ever releasing a single binary-only driver.
NVIDIA haven't given us anything for free. They have given us 6000 lines of code to interface a big black box to the free and open Linux kernel. This has been more than paid for by the thousands of NVIDIA cards sold on the back of supposed "Linux support". They have given us absolutely no device specifications whatsoever. Experience shows us that, over time, Linux kernel programmers write far superior Linux drivers than the hardware manufacturers.
Currently, NVIDIA have offered a sop to the whining Linux fanboys -- "here's your binary, black box secret drivers -- just like in Microsoft Windows". The drivers cause mysterious kernel panics which can't be debugged because they originate from somewhere inside a black box that only NVIDIA may look at. NVIDIA can't leverage the support of hundreds of kernel developers when trying to fix it. It sucks.
If NVIDIA gets away with providing half-hearted binary-only support for Linux, why can't every other hardware manufacturer? "No, you can't have any specifications for this Ethernet chipset, it's top secret -- here's a binary HAL instead". "No, you can't have any specifications for this SCSI disk controller", etc.
NVIDIA sell chipsets to card and system builders. Their direct sales of IBM-compatible PC AGP graphics cards to the public is secondary.
There is nothing to stop a RISC PC card builder from building an NVIDIA graphics card for the RISC PC, or even a palmtop builder using an ARM CPU with an NVIDIA laptop graphics chipset -- all it would need is for NVIDIA to open their source code or support a proprietary ARM build of their software themselves.
taunt me for being stupid enough to use that hardware.
You've hit the nail right on the head, there. There's only one way to convince capitalist, profit-driven corporations to support Linux, and that's to let them know that their non-existant or sub-standard Linux support is losing them money.
If you do buy a card without checking that it's supported in Linux, simply return the card, buy an alternative that is supported, then write a letter to the original card manufacturer stating that you returned their $XXX.XX card because of sub-standard Linux support, and you look forward to their support of the only operating system you use in the future.
you are aware that a good chunk of this thing (and all the kernel interface) is available in source, right?
I'm a programmer. None of the NVIDIA core is available as source. None of the NVIDIA GLX is available as source. The only source provided is a small kernel interface. Even if you're not a programmer, notice the compiled file sizes: nv-linux.o (wrapper) = 47Kb. nv-kernel.o (binary-only NVIDIA core) = 1.8Mb. The nv-linux.o source code is just over 6000 lines of code. Extrapolating, NVIDIA are keeping over a quarter of a million lines of code out of our site, and that's just the kernel module!
what's this about not having one compiled for your archetecture? Have you ever installed these?
I have -- for an IA32 architecture consumer/home PC. Have you installed one on a SPARC box? You can't! NVIDIA don't provide a SPARC architecture build. Have you installed one on a RISC PC? You can't! NVIDIA don't provide an ARM architecture build. Have you installed one on an iMac? You can't! NVIDIA don't provide a POWERPC architecture build.
I have run a lot of video cards in a lot of Linux boxes.
You sound like an unreformed Windows-using home/consumer PC builder. "Just download drivers from the manufacturer's support site" is the worst possible form of providing hardware support in an operating system.
What confuses me is that there is no fixed LZW compression algorithm.
Oh, but there is. It is the one given in Welch's "A Technique for High-Performance Data Compression" article, IEEE Computer, June 1984. Any changes upon that base algorithm are considered LZW variants.
The only 'fixed' LZW decompression algorithm is the one that is 'fixed' into the GIF standard.
The GIF file format isn't patented. You can't have a patent on file formats, the order of fields in a sector, etc. There is nothing innovative in that.
The hardware process of the LZW compression algorithm was what as patented. You can write GIF files without using compression (literal, clear dictionary, literal, clear dictionary... instead of following the compression algorithm.
Here, Microsoft's patents relate to algorithms for fitting long filenames onto a file system that only supports short filenames. They do NOT have a patent on the (V)FAT filing system. However, in working with those filing systems you may need to use algorithms which Microsoft managed to patent.
Now, if someone will just write a similar layer for Linux that can load Windows NT filesystem drivers, then I can get read/write access to my NTFS partitions... Hmm...
Jan Kratchovil has some software which does exactly this: Captive-NTFS.
I realise this is off-topic, but I'd like some advice from real Mac users.
I'd like to plug my cable broadband/ethernet connection into an iMac, and use the iMac as a router/firewall/gateway for other nodes in a wireless network.
The iMac has a wireless/bluetooth card built in and an ethernet card built in, so there's no hardware problem. I'm pretty sure Linux could do this no sweat with iptables.
Is it possible? I don't want to fork out on an expensive base station when I already have to fork out on a cable modem, it also looks untidy and I probably don't have as explicit control on the base station as I would with BSD's ipfilter.
Also, if you know any good Mac discussion or Q/A sites or newsgroups, let me know. Thanks!
try finding Mike Oldfield's latest 3 albums in your local store in the US -- yes, I download them while I wait for the CD's to arrive in the mail from the UK
Keep the downloads, the CDs just don't fucking work.
It's a tabloid rag. Every day it has some old lady being mugged or kid getting run over as the front page news. The P&J is a lot better.
I live on the other side of the river from Woodside (the posh name for Tillydrone). It's a fucking dump and I only ever go through it to get to the city as quickly as possible. It's interesting how I heard of this on Slashdot first.
at teh smae tiem we dont just spel so vary VARY badly and sey "it is teh currect way, tehr is kno sentral stnaderds".
Dictionaries are very useful things. Over the period of a century, sure, some words will become archaic, and slang words will become more formal. But it should be quite obvious to people at any point in time which words are formal, which words are slang, and which words are spelt correctly. You can't just say "my spelin iz currekt beekoz teh dicshunary si nto an offoritty". We have to stop the retards who would throw away centuries of history so they can spell everything phonetically. Why should we dumb down the language for them? It's a vicious (not viscous, you idiots) circle, people will get progressively less literate as each generation dumbs down the language rather than bother learning it correctly.
I'm particularly incensed (not "insensed", you idiots) at the Yanks trying to force the scientific community to drop the correct word "sulphur" and use their phonetic mis-spelling "sulfur". What next? Fosforus? Caesium without the silent 'a'? Would you like to reanimate Caeser just to get him to change his name? Mr Caeser, Sir! We're too fucking stupid to spell your name differently from the phonetic pronounciation! Please change your name to Ceser instead! Aluminium? Oh yes, all the other elements are suffixed with "-ium", so let's just be fucking difficult and use "-um" instead. Bloody Yanks.
why not modify the filter so it automagically pulls out all such numbers from the spam, so that they can be easily on hand for those people who want to set up autodialers
Because this is unthinking vigilantism, real pitchforks and torches stuff, and spammers will just use your wrath to launch joe jobs against anti-spam companies and individuals.
Or, how about ISPs bundle cable modems/DSL routers that, by default, block ALL inbound ports.
Tech people can then simply configure their router correctly, or even buy their own router. That's no hassle. Meanwhile, all the "blinking 12:00" people are protected from the big bad evil internet.
Now, if routers could filter out obvious Microsoft Outlook exploits and web-pages that tell you to click "yes" on the next "can I uninstall an untrusted ActiveX control" requester that comes up, we wouldn't have any home-user viruses at all...
for being caught and fined for operating an illegal price-fixing cartel.
Perhaps this is why they give Europe the cold shoulder. Because they don't have the freedom to shaft consumers financially, they're trying to convince consumers to pay higher prices anyway by starving the kiddies of their latest family-friendly fix until the pester-power meter builds up to MAX.
I really loved your comment. It made me laugh, I've never seen anyone be so blase.
So you're a consultant. Everything you do is perfect. You never get ill. Your family never gets ill. You're [whoever your next prospective customer is]'s personal saviour. You save billions of dollar every day. You leap tall buildings in a single bound. You promise the world, and always deliver! You're worth every penny you charge. You've never been on a project for more than a couple of weeks. You've never had to integrate it to more than one or two things. You've never had to renovate it because the thing you integrated against changed and broke your app. You can ditch anything you don't like, because it's your way or the highway. Those pesky customers only think they know what they want, but you know best! You've never heard of maintenance. You use a Rapid Application dev tool to crank out Rapid Applications. This tool only does what it was explicitly designed to do for you, other people just couldn't get the tool to do exactly what it was designed for. You know this tool better than the people who wrote it, like a secretary knows MS Word better than Microsoft!
You've also skim-read The Mythical Man-Month.
Lotus Notes didn't become what it is today by telling consultants and RAD monkeys how to do their jobs, then giving them whatever one coder could crank out in one week to do it with. The Lotus programmers didn't have an RRD (Rapid RAD Development) toolkit to write 99.999% of Lotus Notes for them. It took them more than 6 months, and it would have taken any team, even a team of great coders or even a single great coder, more than 6 months to write.
Because you only write trivial apps, you assume that every possible programming task must have a 4th Generation Language to really ramp down the complexity of software. But there isn't. Some things are trivial, some trivial things can be made to seem complex, some things really are complex, and to pretend that they aren't leads only to failure.
Once you stop writing web/UI frontends to databases and start writing complex software, you realise just how alone you are -- there are very few tools to help you write things. You cling to everything you can get -- libraries, editors, parser-generators, refactoring tools, etc., but there comes a point where what is needed hasn't been written by anyone, ever. You have to write it, and you haven't written anything like it before. You don't have a single line of well-written, well-tested stock of library code to help you.
If a project cannot be completed by one good programmer in 6 months, it is designed wrong.
This one I'll have to quote around the office. It's the height of naivety. When you start writing full featured 50Kb implementations of Brazillian ISUP that can handle 40 calls/s volume on a 150MHz 604e, I'll be impressed. I'll be even more impressed when, 6 months after release, you work out that "foo = bar" should have been "foo = baz", when some other vendor's equipment uses different values for bar and baz in their packets, which your own equipment doesn't, then you write a 20 byte binary patch (in machine code) rather than use the patching tool which makes a patch that has to replace the entire 2Kb function.
Oh, and yes, Brazillian ISUP can easily be done in 6 months. As can any ISUP. But not ALL of them by the SAME people. And that's the point. To write 20 ISUPs from scratch and integrate them all into the same 6 month release, and test them all, that takes an incredible effort. You can't even think bigger than a single sub-component written by a single person in a tool designed to make it easy. That's what I call trivial.
Logistics, man. If it can be physically completed by one man in two weeks, it is a small project. No two ways about it. You are doing trivial work, and you've planned your career to do trivial work.
The source code is the programming documentation, although comments are welcome.
You're saying you write no design documentation or user documentation? You're saying that, in order for a new programmer to understand your projects, they would have to read the entire source code of the project, which is mostly code with the occasional comment?
If the interface is very important, then I start with the interface. [...] If how the data is processed is the important function, then I start with the code,
When do you do the business case? When do you do the design? When do you validate the design? When do you partition the work? It appears you don't. It appears you are cranking out one day, one person projects.
I won't denigrate you for writing them. Everybody has to start somewhere. Tying a small UI to a small database with a tool designed for doing just that is not hard work. Consider yourself lucky that you don't have to maintain a billion LOC, 20 year old project that you didn't write.
Write your prototype - and then deploy it, because it's already fast and robust enough for everyday use.
And then watch it die, because everybody updates the app with a line here and there, and it crumbles into a mess of hundreds of different programming styles written in obscure line-noise with no documentation.
A prototype in software engineering is just that -- a bare bones quickly knocked-out attempt at checking if some assumptions hold up or not. A prototype is something you write in 5 minutes with no thought given to its future reliablility maintainability. After the prototypes, only then do we seriously design the software. We do not give prototypes to customers and say "they you are, it's finished".
There's no source code. So I'm not going to use it. Well, that was the easiest decision I made all year!
There was a time that I would put up with binary-only compilers. That was before gcc. Sure, both free and non-free compilers have bugs, but it's so much easier just to fix those compiler bugs yourself in the compiler's own source code, rather than have to craft a binary patch to fix the bug while you wait 6 months for the vendor to think about releasing the next version.
I had a lot of CDs, too -- I just encoded them one by one. It took a month. MP3 encoding (the good kind, VBR, not fixed bitrate) took longer than reading the discs anyway... you don't want to know what 25 instances of LAME running does to your CPU load...
My opinion is that having NVIDIA work with kernel developers to come up with fully open-source, GPL licensed Linux drivers for their hardware would be better than ever releasing a single binary-only driver.
NVIDIA haven't given us anything for free. They have given us 6000 lines of code to interface a big black box to the free and open Linux kernel. This has been more than paid for by the thousands of NVIDIA cards sold on the back of supposed "Linux support". They have given us absolutely no device specifications whatsoever. Experience shows us that, over time, Linux kernel programmers write far superior Linux drivers than the hardware manufacturers.
Currently, NVIDIA have offered a sop to the whining Linux fanboys -- "here's your binary, black box secret drivers -- just like in Microsoft Windows". The drivers cause mysterious kernel panics which can't be debugged because they originate from somewhere inside a black box that only NVIDIA may look at. NVIDIA can't leverage the support of hundreds of kernel developers when trying to fix it. It sucks.
If NVIDIA gets away with providing half-hearted binary-only support for Linux, why can't every other hardware manufacturer? "No, you can't have any specifications for this Ethernet chipset, it's top secret -- here's a binary HAL instead". "No, you can't have any specifications for this SCSI disk controller", etc.
NVIDIA sell chipsets to card and system builders. Their direct sales of IBM-compatible PC AGP graphics cards to the public is secondary.
There is nothing to stop a RISC PC card builder from building an NVIDIA graphics card for the RISC PC, or even a palmtop builder using an ARM CPU with an NVIDIA laptop graphics chipset -- all it would need is for NVIDIA to open their source code or support a proprietary ARM build of their software themselves.
taunt me for being stupid enough to use that hardware.
You've hit the nail right on the head, there. There's only one way to convince capitalist, profit-driven corporations to support Linux, and that's to let them know that their non-existant or sub-standard Linux support is losing them money.
If you do buy a card without checking that it's supported in Linux, simply return the card, buy an alternative that is supported, then write a letter to the original card manufacturer stating that you returned their $XXX.XX card because of sub-standard Linux support, and you look forward to their support of the only operating system you use in the future.
you are aware that a good chunk of this thing (and all the kernel interface) is available in source, right?
I'm a programmer. None of the NVIDIA core is available as source. None of the NVIDIA GLX is available as source. The only source provided is a small kernel interface. Even if you're not a programmer, notice the compiled file sizes: nv-linux.o (wrapper) = 47Kb. nv-kernel.o (binary-only NVIDIA core) = 1.8Mb. The nv-linux.o source code is just over 6000 lines of code. Extrapolating, NVIDIA are keeping over a quarter of a million lines of code out of our site, and that's just the kernel module!
what's this about not having one compiled for your archetecture? Have you ever installed these?
I have -- for an IA32 architecture consumer/home PC. Have you installed one on a SPARC box? You can't! NVIDIA don't provide a SPARC architecture build. Have you installed one on a RISC PC? You can't! NVIDIA don't provide an ARM architecture build. Have you installed one on an iMac? You can't! NVIDIA don't provide a POWERPC architecture build.
I have run a lot of video cards in a lot of Linux boxes.
You sound like an unreformed Windows-using home/consumer PC builder. "Just download drivers from the manufacturer's support site" is the worst possible form of providing hardware support in an operating system.
What confuses me is that there is no fixed LZW compression algorithm.
Oh, but there is. It is the one given in Welch's "A Technique for High-Performance Data Compression" article, IEEE Computer, June 1984. Any changes upon that base algorithm are considered LZW variants.
The only 'fixed' LZW decompression algorithm is the one that is 'fixed' into the GIF standard.
The GIF file format isn't patented. You can't have a patent on file formats, the order of fields in a sector, etc. There is nothing innovative in that.
... instead of following the compression algorithm.
The hardware process of the LZW compression algorithm was what as patented. You can write GIF files without using compression (literal, clear dictionary, literal, clear dictionary
Here, Microsoft's patents relate to algorithms for fitting long filenames onto a file system that only supports short filenames. They do NOT have a patent on the (V)FAT filing system. However, in working with those filing systems you may need to use algorithms which Microsoft managed to patent.
Now, if someone will just write a similar layer for Linux that can load Windows NT filesystem drivers, then I can get read/write access to my NTFS partitions... Hmm...
Jan Kratchovil has some software which does exactly this: Captive-NTFS.
I realise this is off-topic, but I'd like some advice from real Mac users.
I'd like to plug my cable broadband/ethernet connection into an iMac, and use the iMac as a router/firewall/gateway for other nodes in a wireless network.
The iMac has a wireless/bluetooth card built in and an ethernet card built in, so there's no hardware problem. I'm pretty sure Linux could do this no sweat with iptables.
Is it possible? I don't want to fork out on an expensive base station when I already have to fork out on a cable modem, it also looks untidy and I probably don't have as explicit control on the base station as I would with BSD's ipfilter.
Also, if you know any good Mac discussion or Q/A sites or newsgroups, let me know. Thanks!
Perhaps you're not Japanese.
ish is the Japanese version (Shift_JIS, EUC-JP, etc) of what uuencode and base64 does in ASCII.
At least it keeps them off the streets, eh?
In my day, all us kiddy coders did with our games was crack the protection and give it to our friends.
try finding Mike Oldfield's latest 3 albums in your local store in the US -- yes, I download them while I wait for the CD's to arrive in the mail from the UK
Keep the downloads, the CDs just don't fucking work.
It's a tabloid rag. Every day it has some old lady being mugged or kid getting run over as the front page news. The P&J is a lot better.
I live on the other side of the river from Woodside (the posh name for Tillydrone). It's a fucking dump and I only ever go through it to get to the city as quickly as possible. It's interesting how I heard of this on Slashdot first.
at teh smae tiem we dont just spel so vary VARY badly and sey "it is teh currect way, tehr is kno sentral stnaderds".
Dictionaries are very useful things. Over the period of a century, sure, some words will become archaic, and slang words will become more formal. But it should be quite obvious to people at any point in time which words are formal, which words are slang, and which words are spelt correctly. You can't just say "my spelin iz currekt beekoz teh dicshunary si nto an offoritty". We have to stop the retards who would throw away centuries of history so they can spell everything phonetically. Why should we dumb down the language for them? It's a vicious (not viscous, you idiots) circle, people will get progressively less literate as each generation dumbs down the language rather than bother learning it correctly.
I'm particularly incensed (not "insensed", you idiots) at the Yanks trying to force the scientific community to drop the correct word "sulphur" and use their phonetic mis-spelling "sulfur". What next? Fosforus? Caesium without the silent 'a'? Would you like to reanimate Caeser just to get him to change his name? Mr Caeser, Sir! We're too fucking stupid to spell your name differently from the phonetic pronounciation! Please change your name to Ceser instead! Aluminium? Oh yes, all the other elements are suffixed with "-ium", so let's just be fucking difficult and use "-um" instead. Bloody Yanks.
why not modify the filter so it automagically pulls out all such numbers from the spam, so that they can be easily on hand for those people who want to set up autodialers
Because this is unthinking vigilantism, real pitchforks and torches stuff, and spammers will just use your wrath to launch joe jobs against anti-spam companies and individuals.
Man, the vapours coming from the cup would give you second degree burns to your face -- you're going to pour 90C coffee down your throat?
The water vapour that pours out of my kettle just after it's finished boiling is 90C.
So congratulations; thanks to this "reasonable" lawsuit, you can't get a really well-made cup of coffee in the US anymore.
A cup of coffee in a styrofoam cup is by no means "really well-made".
Or, how about ISPs bundle cable modems/DSL routers that, by default, block ALL inbound ports.
Tech people can then simply configure their router correctly, or even buy their own router. That's no hassle. Meanwhile, all the "blinking 12:00" people are protected from the big bad evil internet.
Now, if routers could filter out obvious Microsoft Outlook exploits and web-pages that tell you to click "yes" on the next "can I uninstall an untrusted ActiveX control" requester that comes up, we wouldn't have any home-user viruses at all...
for being caught and fined for operating an illegal price-fixing cartel.
Perhaps this is why they give Europe the cold shoulder. Because they don't have the freedom to shaft consumers financially, they're trying to convince consumers to pay higher prices anyway by starving the kiddies of their latest family-friendly fix until the pester-power meter builds up to MAX.
What's a pirate's favorite letter of the alphabet?
Arrrrrrrrrrr.
much, MUCH worse:
It was running wu-ftpd.
wu-ftpd. just. say. no.
Friends don't let friends use wu-ftpd. Or ProFTPD. Not even the OpenBSD ftpd. Instead, they make them use publicfile.