Poor documentation, poor standards across distros, and obscure undocumented dependencies.
Yeah, this is a general problem with common modern programming languages. Dealing with dependencies is just hard since we've had a reuse model that is largely based on saving disk space by having one copy of a function.
Today, I'm convinced we need a system where every version of every library is stored and programs are able to use whatever version they have been tested against.
When a program dumps core, it means that the program did something that it wasn't supposed to do (like try to read memory that isn't valid) and the operating system has (correctly), stop the program's execution, and to make life easier on developers, copied the program state into a handy file so that the problem can be debugged. No other programs on your system will be harmed by this one malfunctioning program.
When Windows blue screens, it means *the operating system* has done something it wasn't supposed to do (like try to read memory that isn't valid) and the operating system bails. Often, it will return execution to the next instruction and hope things will be okay. It almost certainly isn't. You're basically screwed.
The equivalent in Linux is an Oops. They don't happen that often on production systems. A crappy properitary program doing things it's not supposed to is *not* a Linux problem nor an Open Source problem. It's SAP's problem.
This is a testimonal about the crappiness of SAP and nothing more. They obviously didn't do enough testing on Linux.
gaim switched to storing individual conservations in separate files. Since every file (no matter how small) eats 4k of disk space, I reckon that's the reason.
I could tar it up and see the size but that's far too much work:-)
I would say I'm a pretty average IM user. I've logged my IM conversations for the past two years. The current log directory is 38M.
Logging has proved invaluable. Not only is it useful for searching for phone numbers, addresses, etc. but it's really useful as a student so that you can go back and refer to discussions about a particular assignment.
I think that IM clients should enable logging by default.
Ever since I was little whenever I wanted something my dad would tell me a story about when he was a kid and wanted a new bike. Since it wasn't his birthday or Christmas, my grandfather told him that he would buy the bike if my dad earned half of the money.
It's not about the money, it's about learning the lesson of having to work for the things you want. When I was 11, I wanted a computer. I saved for 6 months doing odd chores, babysitting, etc. and was able to save up $500. With my dad matching, I was able to buy a really crappy used laptop at a computer expo.
That happened to be the first machine I installed Linux on.
People somehow manage to get masters degrees in CS from Berkeley without even knowing what "turing complete", "Karnaugh map", "Rice's theorem", "Goedel's completeness theorem", "planar graph", "functional language", "church-turing thesis" are.
You're obviously trying to come off as pompus but seriously, do you even really know what you're talking about? What's so important about Karnaugh maps? It's a silly way as solving a system of boolean alegbra equations. Only really useful for introduction digital circuit design.
If you want to talk about boolean logic, talk about predicate calculus, modus ponus, or something that actually deals with Computer Science theory.
I understand where you're coming from and don't fully disagree but you sound like an ass. There's always someone with a more theoritical background than you so just don't do that.
FWIW, the GoF are important because they were the *first* to do what they did--give programmers a common vocabularily to describe complex systems.
If that's truly the case, then why is there this whole move to the next-gen threading system under Linux called NPTL?
Threads and processes are implemented via the same syscall in Linux. The only difference is the amount of protection between the parent and child (actually, it's what they share).
NPTL is meant to provide extreme scalability (100k threads) by providing super fast locks (futex) and some neat scheduling tricks.
Unless you're an enterprise user, NPTL won't make much of a different to you I reckon.
Unix is process-centric. Windows is thread-centric. This is also an artifact of GUI programming. For example the GUI should never stall by processing a request. Instead it should fork off a thread
This has nothing to do with GUI programming and everything to do with the cost of creating a process on NT. People began abusing threads because it was so painful to use processes.
Most unix apps don't use threading. This is not for lack of threading or knowledge of how to use threads. It's simply that processes are as cheap as threads and offer more protection.
Nearly all Windows development involves a GUI. This is usually done with an event-driven API. On the other hand, many Unix geeks probably never program in the event-driven paradigm.
Long before Windows existed, X-Windows had a callback, event driven mechanism for GUI programming. This resulted in considerably better performance than the message mechanism used in Win16 (which was carried over to Win32).
The reason for using messages in Win16 was simple--there was no real multitasking. Context switches didn't exist so there was no difference in having a process handle events it cared about verses every possible event (with a standard default handler).
The problem with most Windows developers is that they don't understand the history of Windows. They pick up things like "event-driven paradigm" as if it was some great innovation that makes their lives easier. That my friend, is the power of marketing:-)
I told my interviewer that I would mildly correct the salesman and offer an accurate perspective on the software so as not to mislead the customer.
This isn't a Microsoft-ism but a general business guideline for pre-sales positions.
You never want to show the customer conflict. It just looks bad. If your sales people are disagreeing about their own product in front of a customer, it looks terrible.
The right answer would be that afterwards, you should take the sales person aside and explain to him how things worked and asked if he needed your help in explaining it to the customer.
For bonus points, you should follow up with the sales guy and make sure that he found a way to gracefully explain how things actually worked to the customer.
If he doesn't, you escalate to his manager. Lying to a customer is *not* a good thing for business so escalating is a reasonable thing to do.
But you definitely don't make the argument in front of the customer. This was an excellent question to ask. This doesn't mean you're a bad person, you just didn't have the customer experience to know any better.
For what it's worth, I would have answered the same way as you if I hadn't worked in customer situations before.
I think that's my best possible advice. Look around at the people who are working where you interview. What kind of houses do they have? Are they happy? If you're like 99% of employees, then you'll end up just like everyone else who works there.
Indeed, what about OSs from companies which don't know, nor care about Xen?
This is where VT fits in. If you only have a binary OS, you'll need VT (or Pacifica) enabled hardware. In a few years, just about everything will have these extensions (as almost everything has SSE or MMX now).
Of course, I understand your perspective. Right now, virtualization is a bit of a pain. The nice thing though is that there's enough support around Xen and Open Source virtualization that by 2007 when the Microsoft hypervisor roles out we'll have a very nice solution already in place.
Microsoft has gone through marketing periods of trying to look like the originator and innovator of products by releasing the generic term as a Microsoft trademark.
Yeah, but I have also never seen anything from Microsoft that refers to it as "Hypervisor". There were quite a bit of info on it at WinHEC and none of it referred to it as Hypervisor (although it has been referred to as the Longhorn hypervisor).
I don't use Xen because the burden is then on me to find a version of the OS specifically created for Xen. This sucks.
It won't be that bad once Xen ports are integrated into the main branches. On power, the hypervisor is automatically detected and virtualization extensions are enabled at load-time so the same binary can run under a hypervisor or bare metal. Once we've got this with Xen, you won't even notice.
If you're talking about the Video drivers, then I'm afraid you're somewhat mistaken. Those drivers are done for efficiency only.
That's precisely what I'm talking about. In a fully virtualized world (as defined by Popek and Goldberg) you wouldn't have special drivers for efficiency.
The difference here is the VMWare DOES fully virtualize the processor in the sense that when I call an instruction in supervisor mode, it does the appropriate thing.
Yes, and practically speaking, it's a heck of a lot easier than doing binary translation. Essentially what VMware does is dynamically JIT the binary images and rewrites supervisor instructions into the sort of thing that you do by hand in Xen.
Sure, automation is better, which is why I think the research by the l4ka group is so interesting about compile-time pre-virtualization (sort of like what VMware does but as a separate compilation stage instead of at load-time--the benefits are pretty obvious, it's easier to implement because compilers have more information about the binary and you only have to do it once so you avoid a lot of load-time overhead).
It's perfectly fine for a hypervisor to be based on an NT or Linux kernel, but I don't want it to have anything user interface except what is needed to control the VMs, configure the underlying hardware, and store the VM settings and drive images.
I want to clarify what it means to be based on. Writing an OS to run on bare metal PC's is a royal PITA. There are so many buggy BIOSes, broken cloned hardware devices, weird issues with different implementation of x86 (you'd be surprised to know how many x86 vendors there are other than AMD and Intel).
Basically, if you want something that runs on most PCs (which is what's expected), you've gotta start from an existing code base. Most of what a hypervisor does is different but the nasty stuff (system bring-up) is not something you'd want to write from scratch.
I think the OP is a bit confused. A hypervisor is a type of operating system that runs other operating systems. It's also called a Virtual Machine Monitor. Microsoft is building a hypervisor. They aren't building a product called Hypervisor (at least to the best of my knowledge).
Xen is not a true hypervisor, since it doesn't fully virtualize all aspects of the host machine.
I understand why you posted this and you were right a few months ago however recently thanks to Intel's VT extensions Xen became capable of full virtualization.
It's all sort of a moot point though because almost noone does full virtualization. VMware uses paravirtual drivers to increase performance and Linux on power has had hypervisor aware code for quite some time.
The reality of it is that you basically can't escape performing some level of modification of a guest OS to get reasonable performance. The only question now a days is how much modification. Xen probably requires more modification than most but it also performs better than most.
It's tempting to just go buy a bunch of motherboards on ebay and some bread racks to build your cluster. It's certainly the cheapest and most flexible approach.
However, it takes a special type of people to manage that kind of hardware. You have to deal with a high amount of failure, you have to be extra careful to avoid static problems, you've got to really think through how your going to wire things.
On the other hand, if you get something like a IBM BladeCenter, you have a very similar solution that may cost a little more but is significantly more reliable. More importantly, blades are just as robust as a normal server. You don't have to worry about your PHB not grounding himself properly when he goes to look at what you've setup.
I expect blades are going to be the standard form factor in the future. It just makes sense to centralize all of the cooling, power, and IO devices.
Important Note: This portal is under construction. It is not finished, some functionality is missing, and it does not yet meet our usability standards.
So, the usability experts can't make their own website usable but they're going to tell KDE what to do?
If you're a KDE developer, I've got some land in Florida you may be interested in...
Nothing comes for free. A lot of people will work really hard to maintain sites, open source projects, or whatever. What most people don't realize is that these people will also sacrifice an awful lot.
Sometimes it's money for servers or bandwidth, sometimes it's so much of their time that they end up not succeeding in their normal job. The problem is that these people never really want to ask for help but it gets to a desperate point where they have no choice but to ask.
It would be really great if there was some sort of easy to use micropayment system for something like sourceforge. I'd be happy to pay per-download if all the money went to the respective projects.
I'd also like to know which projects need money the most. If the person working on a project I use (even if it wasn't a high profile project) really needed some help I'd contribute a bit to the cause.
As a community, we really need a good funding mechanism to help out the people helping to architect our community. I don't have a good solution, and I don't think anyone will come up with one here, but it doesn't hurt to at least talk about it.
They did something similar with an even more important technology: file type metadata.
You know what I love? When an Open Source project implements something, it's just another feature, but when a commercial company puts some marketing force behind it they're being innovative.
Linux has had xattrs for some time. See http://acl.bestbits.at/. They probably got most of the code for free somewhere else.
If you really want to get your panties in a bunch, NTFS has supported a very advanced form of metadata (via streams) since it's inception. Moreover, HFS had metadata that was removed for OS X:-)
It's not a new or innovative concept at all. Sorry.
Poor documentation, poor standards across distros, and obscure undocumented dependencies.
Yeah, this is a general problem with common modern programming languages. Dealing with dependencies is just hard since we've had a reuse model that is largely based on saving disk space by having one copy of a function.
Today, I'm convinced we need a system where every version of every library is stored and programs are able to use whatever version they have been tested against.
When a program dumps core, it means that the program did something that it wasn't supposed to do (like try to read memory that isn't valid) and the operating system has (correctly), stop the program's execution, and to make life easier on developers, copied the program state into a handy file so that the problem can be debugged. No other programs on your system will be harmed by this one malfunctioning program.
When Windows blue screens, it means *the operating system* has done something it wasn't supposed to do (like try to read memory that isn't valid) and the operating system bails. Often, it will return execution to the next instruction and hope things will be okay. It almost certainly isn't. You're basically screwed.
The equivalent in Linux is an Oops. They don't happen that often on production systems. A crappy properitary program doing things it's not supposed to is *not* a Linux problem nor an Open Source problem. It's SAP's problem.
This is a testimonal about the crappiness of SAP and nothing more. They obviously didn't do enough testing on Linux.
My high school geometry teach made us say sohcahtoa fifty times in a row. I thought it was stupid at the time but I still remember it to this day.
Sine theta is
Opposite over
Hypotenuse
Cosine theta is
Adjacent over
Hypotenuse
Tangent theta is
Opposite over
Adjacent
FWIW, I was going to write a response aftering reading the article with the exact same subject line as you did :-)
"What a tool." just summarizes the article so well.
I did a du -sh of the directory.
:-)
gaim switched to storing individual conservations in separate files. Since every file (no matter how small) eats 4k of disk space, I reckon that's the reason.
I could tar it up and see the size but that's far too much work
I would say I'm a pretty average IM user. I've logged my IM conversations for the past two years. The current log directory is 38M.
Logging has proved invaluable. Not only is it useful for searching for phone numbers, addresses, etc. but it's really useful as a student so that you can go back and refer to discussions about a particular assignment.
I think that IM clients should enable logging by default.
Ever since I was little whenever I wanted something my dad would tell me a story about when he was a kid and wanted a new bike. Since it wasn't his birthday or Christmas, my grandfather told him that he would buy the bike if my dad earned half of the money.
It's not about the money, it's about learning the lesson of having to work for the things you want. When I was 11, I wanted a computer. I saved for 6 months doing odd chores, babysitting, etc. and was able to save up $500. With my dad matching, I was able to buy a really crappy used laptop at a computer expo.
That happened to be the first machine I installed Linux on.
People somehow manage to get masters degrees in CS from Berkeley without even knowing what "turing complete", "Karnaugh map", "Rice's theorem", "Goedel's completeness theorem", "planar graph", "functional language", "church-turing thesis" are.
You're obviously trying to come off as pompus but seriously, do you even really know what you're talking about? What's so important about Karnaugh maps? It's a silly way as solving a system of boolean alegbra equations. Only really useful for introduction digital circuit design.
If you want to talk about boolean logic, talk about predicate calculus, modus ponus, or something that actually deals with Computer Science theory.
I understand where you're coming from and don't fully disagree but you sound like an ass. There's always someone with a more theoritical background than you so just don't do that.
FWIW, the GoF are important because they were the *first* to do what they did--give programmers a common vocabularily to describe complex systems.
If that's truly the case, then why is there this whole move to the next-gen threading system under Linux called NPTL?
Threads and processes are implemented via the same syscall in Linux. The only difference is the amount of protection between the parent and child (actually, it's what they share).
NPTL is meant to provide extreme scalability (100k threads) by providing super fast locks (futex) and some neat scheduling tricks.
Unless you're an enterprise user, NPTL won't make much of a different to you I reckon.
Unix is process-centric. Windows is thread-centric. This is also an artifact of GUI programming. For example the GUI should never stall by processing a request. Instead it should fork off a thread
:-)
This has nothing to do with GUI programming and everything to do with the cost of creating a process on NT. People began abusing threads because it was so painful to use processes.
Most unix apps don't use threading. This is not for lack of threading or knowledge of how to use threads. It's simply that processes are as cheap as threads and offer more protection.
Nearly all Windows development involves a GUI. This is usually done with an event-driven API. On the other hand, many Unix geeks probably never program in the event-driven paradigm.
Long before Windows existed, X-Windows had a callback, event driven mechanism for GUI programming. This resulted in considerably better performance than the message mechanism used in Win16 (which was carried over to Win32).
The reason for using messages in Win16 was simple--there was no real multitasking. Context switches didn't exist so there was no difference in having a process handle events it cared about verses every possible event (with a standard default handler).
The problem with most Windows developers is that they don't understand the history of Windows. They pick up things like "event-driven paradigm" as if it was some great innovation that makes their lives easier. That my friend, is the power of marketing
I told my interviewer that I would mildly correct the salesman and offer an accurate perspective on the software so as not to mislead the customer.
This isn't a Microsoft-ism but a general business guideline for pre-sales positions.
You never want to show the customer conflict. It just looks bad. If your sales people are disagreeing about their own product in front of a customer, it looks terrible.
The right answer would be that afterwards, you should take the sales person aside and explain to him how things worked and asked if he needed your help in explaining it to the customer.
For bonus points, you should follow up with the sales guy and make sure that he found a way to gracefully explain how things actually worked to the customer.
If he doesn't, you escalate to his manager. Lying to a customer is *not* a good thing for business so escalating is a reasonable thing to do.
But you definitely don't make the argument in front of the customer. This was an excellent question to ask. This doesn't mean you're a bad person, you just didn't have the customer experience to know any better.
For what it's worth, I would have answered the same way as you if I hadn't worked in customer situations before.
I think that's my best possible advice. Look around at the people who are working where you interview. What kind of houses do they have? Are they happy? If you're like 99% of employees, then you'll end up just like everyone else who works there.
Indeed, what about OSs from companies which don't know, nor care about Xen?
This is where VT fits in. If you only have a binary OS, you'll need VT (or Pacifica) enabled hardware. In a few years, just about everything will have these extensions (as almost everything has SSE or MMX now).
Of course, I understand your perspective. Right now, virtualization is a bit of a pain. The nice thing though is that there's enough support around Xen and Open Source virtualization that by 2007 when the Microsoft hypervisor roles out we'll have a very nice solution already in place.
Microsoft has gone through marketing periods of trying to look like the originator and innovator of products by releasing the generic term as a Microsoft trademark.
Yeah, but I have also never seen anything from Microsoft that refers to it as "Hypervisor". There were quite a bit of info on it at WinHEC and none of it referred to it as Hypervisor (although it has been referred to as the Longhorn hypervisor).
I don't use Xen because the burden is then on me to find a version of the OS specifically created for Xen. This sucks.
It won't be that bad once Xen ports are integrated into the main branches. On power, the hypervisor is automatically detected and virtualization extensions are enabled at load-time so the same binary can run under a hypervisor or bare metal. Once we've got this with Xen, you won't even notice.
If you're talking about the Video drivers, then I'm afraid you're somewhat mistaken. Those drivers are done for efficiency only.
That's precisely what I'm talking about. In a fully virtualized world (as defined by Popek and Goldberg) you wouldn't have special drivers for efficiency.
The difference here is the VMWare DOES fully virtualize the processor in the sense that when I call an instruction in supervisor mode, it does the appropriate thing.
Yes, and practically speaking, it's a heck of a lot easier than doing binary translation. Essentially what VMware does is dynamically JIT the binary images and rewrites supervisor instructions into the sort of thing that you do by hand in Xen.
Sure, automation is better, which is why I think the research by the l4ka group is so interesting about compile-time pre-virtualization (sort of like what VMware does but as a separate compilation stage instead of at load-time--the benefits are pretty obvious, it's easier to implement because compilers have more information about the binary and you only have to do it once so you avoid a lot of load-time overhead).
It's perfectly fine for a hypervisor to be based on an NT or Linux kernel, but I don't want it to have anything user interface except what is needed to control the VMs, configure the underlying hardware, and store the VM settings and drive images.
I want to clarify what it means to be based on. Writing an OS to run on bare metal PC's is a royal PITA. There are so many buggy BIOSes, broken cloned hardware devices, weird issues with different implementation of x86 (you'd be surprised to know how many x86 vendors there are other than AMD and Intel).
Basically, if you want something that runs on most PCs (which is what's expected), you've gotta start from an existing code base. Most of what a hypervisor does is different but the nasty stuff (system bring-up) is not something you'd want to write from scratch.
I think the OP is a bit confused. A hypervisor is a type of operating system that runs other operating systems. It's also called a Virtual Machine Monitor. Microsoft is building a hypervisor. They aren't building a product called Hypervisor (at least to the best of my knowledge).
Xen is not a true hypervisor, since it doesn't fully virtualize all aspects of the host machine.
I understand why you posted this and you were right a few months ago however recently thanks to Intel's VT extensions Xen became capable of full virtualization.
It's all sort of a moot point though because almost noone does full virtualization. VMware uses paravirtual drivers to increase performance and Linux on power has had hypervisor aware code for quite some time.
The reality of it is that you basically can't escape performing some level of modification of a guest OS to get reasonable performance. The only question now a days is how much modification. Xen probably requires more modification than most but it also performs better than most.
It's tempting to just go buy a bunch of motherboards on ebay and some bread racks to build your cluster. It's certainly the cheapest and most flexible approach.
However, it takes a special type of people to manage that kind of hardware. You have to deal with a high amount of failure, you have to be extra careful to avoid static problems, you've got to really think through how your going to wire things.
On the other hand, if you get something like a IBM BladeCenter, you have a very similar solution that may cost a little more but is significantly more reliable. More importantly, blades are just as robust as a normal server. You don't have to worry about your PHB not grounding himself properly when he goes to look at what you've setup.
I expect blades are going to be the standard form factor in the future. It just makes sense to centralize all of the cooling, power, and IO devices.
My favorite part of the website:
Important Note: This portal is under construction. It is not finished, some functionality is missing, and it does not yet meet our usability standards.
So, the usability experts can't make their own website usable but they're going to tell KDE what to do?
If you're a KDE developer, I've got some land in Florida you may be interested in...
Just PCD which is workstations and thinkpads. Servers are made by another division within IBM.
Was I was talking about was file TYPE metadata.
This was the norm in non-Unix, pre-FAT filesystems. FAT was too simple of a filesystem to have meta-data and Unix is just too old.
Nothing comes for free. A lot of people will work really hard to maintain sites, open source projects, or whatever. What most people don't realize is that these people will also sacrifice an awful lot.
Sometimes it's money for servers or bandwidth, sometimes it's so much of their time that they end up not succeeding in their normal job. The problem is that these people never really want to ask for help but it gets to a desperate point where they have no choice but to ask.
It would be really great if there was some sort of easy to use micropayment system for something like sourceforge. I'd be happy to pay per-download if all the money went to the respective projects.
I'd also like to know which projects need money the most. If the person working on a project I use (even if it wasn't a high profile project) really needed some help I'd contribute a bit to the cause.
As a community, we really need a good funding mechanism to help out the people helping to architect our community. I don't have a good solution, and I don't think anyone will come up with one here, but it doesn't hurt to at least talk about it.
They did something similar with an even more important technology: file type metadata.
:-)
You know what I love? When an Open Source project implements something, it's just another feature, but when a commercial company puts some marketing force behind it they're being innovative.
Linux has had xattrs for some time. See http://acl.bestbits.at/. They probably got most of the code for free somewhere else.
If you really want to get your panties in a bunch, NTFS has supported a very advanced form of metadata (via streams) since it's inception. Moreover, HFS had metadata that was removed for OS X
It's not a new or innovative concept at all. Sorry.