The founder probably did this because back in the day he ran across some compiler with some bug that didn't always zero out the memory. That or he knew somebody who knew of a compiler that didn't always zero out the memory.
In my opinion, a lot of "optimizations" are really just programming urban legends. Somebody knew somebody who knew a guy who wrote the documentation for a compiler said that you should always bzero your calloc-ed memory. Somebody heard from somebody next to them in an airplane say that their brother works for Borland and you should always change x = x +1 into x++;. Then somebody else will mention their sisters cousin heard from a friend that it should really be ++x;. C seems notorious for this because a lot of these rumors were probably once true and are still passed down as gospel from people who worked on them (or knew somebody who did).
In other words, I take pretty much all of these "tricks" with a huge grain of salt. Until you show me the numbers, it is all rumor. Even then, if it makes the code hard to read and it isn't in a critical path (hint: 99.9% chance it is not), I dont care anyway--readability trumps everything.
The smartest words I ever heard about this are "If your compiler can't figure out what you meant and optimize it, get a new compiler". Good words to live by.
As I'm using it right now. A dual-head nVidia and a dual-head ATI. But now that I read that article, my guess is that Win7 is knocking one or both of the cards down into some kind of legacy mode.
Indeed. Huge improvement in multi-monitor support right there! Tear a maximized window off a screen and shove it into another one.
Better, in Windows 7 you can shove a "normal" window up to the top of a screen and it will maximize. Tear a maximized window off the top and it will restore it to a normal window.
You can shove a window to the corner and it will fill a 1/2 of the screen.
You can "wiggle" a window and it will minimize all the other windows so it is just you, the desktop and your app. Wiggle it again, and all the other apps come back.
Your blog has been a great resource for me for a very long time. Thanks for all the informative posts... you were the only set of instructions that made sense for doing a binary upgrade:-)
The problem I've ran into with most OSS (and even paid) ecommerce systems is they dont understand basic accounting nor do they understand how a business operates.
Take zen-cart for example. When a customer cancels an order, what is the proper thing to do? Well, I'll tell you what *isn't* the proper thing... DELETE THE ORDER FROM THE DATABASE!!
The second I found out that the way to hide/cancel an order was deleting it from the database, I ran away from zen-cart. You never delete an order... what if you got audited? What if the customer wanted to actually go ahead with the order? What if you wanted to get a report on the number of canceled orders? You can't if you delete the damn thing from the database!!
Really, the problem is these products had their interface designed to suit their database schema. In reality, the design and workflow should come first, and the database schema should fall out of that.
But obviously not on Slashdot. Heavens no! That would be to "mainstream" and not hyper-jaded.
On Slashdot, you are against Mice, Camera Phones, Color Monitors, mass distributed virtual server networks (aka cloud computing), HTML that includes images, any font besides times new roman, any system that uses more than a 32-bit address bus, any binary that is more than 30kb, any programming language that isn't C, any innovation that wasn't included in the original Unics systems, and now I guess raw fish too.
Good lord. I thought this site was for tech-loving nerds but Slashdot is increasingly a cave for modern-day Luddites to hide in.
Raw Tuna is good. Very good. So is pretty much all those other things some of you Luddites whine about. If you don't like them because it might make you "mainstream" or might go against some stupid "principle" you have, you are seriously missing out. But to not enjoy is your loss and your loss alone. Not mine and certainly not societies either.
You have a dome with a bunch of air in it, right? It has to be exchanged with fresh air, right? Now the city can tax the air their citizens people breath.
It is brilliant, really. They've finally found a way to tax the air we breathe!!
And know the fix would be back-ported to Server 2003. How many "stable" kernel versions will the fix be back ported to? Will my 2.4.x kernels get a patch?
If that's not possible they should tell their clients to add logitech.com as a software source
That doesn't solve anything but distributing the program itself, not any dependencies. Who distributes those? If you have 50 repositories on your list and all of them claim to offer "libapr-1.2", how do you know which repository to use? Keep in mind some of those repositories might have compiled the library different yet retained the same package name.
Plus you said "Debian". Does Logitech have to run a repository for every distro's proprietary repository system?
Yeah yeah, they should open source it. But guess what. Not happening for 95% of the software in the world. Thats reality and no amount of coercion will change it. If you dont address the concerns of that 95%, you are never gonna get linux in the mainstream.
Yes, but that is an advantage of the Linux way, which makes the binaries slimmer.
So I set up my own repository for customers to download my CNC milling software. My software, like any, has a lot of dependencies.
Do I host these dependencies on my repository or what? If I dont rely on my repository, which repository do I use? What if they nix support for the specific version of the dependency I depend on? Do I now have to host it myself? What if the dependency on the repository somehow gets changed so it is no longer compatible with mine but counts as the same version? What happens if the user has already added a third-party repository with installed the "same" dependency, only compiled in a way that makes it incompatible with my software? What then? I can't plow over the "same" dependency with my own or it would break other software. What do I do?
Worse, which type of repository do I host? YUM? Some RPM thing? What? Do I have to learn how to maintain a repository for every type in existence?
Help me out here. I just want my CNC milling software to work on Linux. It was so easy with my Windows and Mac customers. The Windows customers just ran "setup.exe" and it worked. The Mac folks did just about the same.
The only utility is where the application is closed-source and can't go through a Linux distribution's normal package compilation and distribution workflow.
In other words, it would only be useful for about 95% of the software in existence? Yeah, fuck those assholes.
If I understood you correctly, your suggestion is that desktop software should be hard to find, it should be installed from whatever website I happen to ultimately find and it shouldn't automatically get security update
So innovate dude. Create a stable API that developers can hook into so their applications can update themselves without re-inventing the wheel. Neither OSX nor Windows really provide a good way to do this, which is why every self-important installer puts in their own auto-update mechanism.
The idea of a central repository is one of those ideas that sound logical in theory, but in practice it simply will not scale at all. It might work okay for the iPhone which has a limited use or the current generation of linux distros who have a fairly small set of software available, but it will never work for a mainstream operating system that is expected to run *every* bit of software in existence.
Will Quicken be in your repository? TurboTax? SimCity? World of Warcraft? The software for my old TI-89 calculator? The software that came with my UPS? What about DB2--all the versions with all the varying patches? What about the specialized medical imaging software used by my doctor? What about the software used by the CNC Mill down at the local foundry? What about the POS software running at the pizza shop down the street? What about the software for my Harmony Advanced Remote? Will these be in your repository? If they aren't, how do you propose I install them?
Sorry, the idea of a central repository for every single bit of software a computer might run is, well, insane. Who maintains it? What happens when it goes down by mistake? In fact, it sounds a little cloud-like don't you think? Are you folk supposed to be anti-cloud?
So please tell me where I will be going to install the software for my old Harmony Advanced Remote?
So whenever I make a mistake, it's instantly made permanent - that's a terrible idea.
Or you can stop being so damn dense and think for a second. You'd be saving all the history too. You'd be able to undo any change you made just like you do now.
Limited number of write cycles.
Yeah. True in the last generation and maybe true in this one but I doubt it will be nearly as true in future generations.
That's your punishment for not giving your files a sensible layout
Why the hell should I? I bought the damn computer to worry about organizing and searching my files so I dont have to! I gave up the whole "organize my music collection by hand" years ago when iTunes or Windows Media Player started doing it for me and it is about damn time I stop having to hand-organize the rest of my shit too.
If anything, if your OS can't help you find your files easily, something is wrong with your OS. That is the job of the OS, not you.
It may come as a surprise to you, but unix servers are a great place to host eggdrop bots and all kinds of various daemons for controlling IRC warez/botnet channels.
You haven't been in this long or you'd have at least one or two servers get rooted through Bind, PHP or something similar and discover a script kiddie running some damn thing or other.
Hey, that wasn't very nice! I'm gonna report this package and no one downloading from repositories will be harmed by it again!
If it is mainstream OS with more than a fraction of the market share, people won't be downloading from repositories no matter what the Linux people think.
but most users won't really care about that extra speedup.
The hard drive has been a limiting factor in all kinds of things. Why were you taught to "always save your work"? Cause hard drives are slow and it was infeasable to have the application save data in real-time. With an SSD, most applications can probably save your work in real-time. Why does it take so long to boot? Cause the hard drive is slow. With an SSD you can probably afford to quickly dump all of your memory out to "disk" and shut the compute down in hibernate mode--none of this partial-sleep junk.
Why does it take so long to load a program? Slow disk. Why does my computer lag sometimes? Probably slow disk moving around heads on a spinning platter.
Why does it take so long to install things? Partially cause the OS has to set up a shadow copy so you can roll back. Why does my OS not have a shadow copy feature yet? Probably cause the designers thought it would be to slow to implement because of your slow-ass disk. Why does it take so long to search my filesystem or index it? Slow-ass disk.
You think that extra speedup won't be cared about? Seriously? The fact we've delt with such a slow means of long-term storage has held us back for a long time. Remove the silly constraints forced by stupid mechanical devices and suddenly we can do a lot of creative, useful things that were not possible before. Surely even you can see that, right?
Or am I forgetting this is slashdot home of the tech-Luddite and dog gon'nit a command-line and a green screen is good enough for me and should be good enough for anybody!
Depends on how quickly we move away from broadcast / cable TV and into so-called IPTV. Once people start downloading entire seasons of HDTV content (4gb/hr) a 1TB drive will seem awfully small. Especially if you have people in your house who never like to delete shows when done watching them.
Corporate use? Heck yeah. Probably even lower than 30gb.
Either way, I agree that for the average user, a 320gb SSD is plenty of space. By the time they graduate to a bigger drive, the 1TB ssd's will cost the same and they can move on in.
Holy shit! Anonymous Coward says current generation SSD's might not be able to be used for long-term backup! Clearly this means there is absolutely no use for Solid State Disks whatsoever!
The game is over gentleman. Time to shut down production and throw in the towel.
Thanks for saving our ass. Anybody reading this should know that Anonymous Coward is a smart cookie--he was also responsible for warning about the transition from perfectly sound MFM interface to the bloated, evil IDE interface. Whatever advice he gives regarding these untested, unsound Solid State Disks should be wisely heeded.
Obviously:-) Most of my workstation's disk is full of virtual machine images. The HTPC, well that is obvious.
Still, I'd be curious how much *data* is on an "average" computer. But even if you got a number, my guess the standard deviation would be quite high. Probably lots in the 750gb bracket and lots in the 10gb bracket.
What do you mean "Approximately X"? The compiler and the computer do "Exactly X"... where X is what you tell it do to.
Are you suggesting there are languages that take my code and then instead of doing exactly what I wrote, they only kinda do what I wrote?
Really, I'm not sure what you mean. You seem to be operating and multiple levels. Are you talking programming languages, overall architecture, what?
The founder probably did this because back in the day he ran across some compiler with some bug that didn't always zero out the memory. That or he knew somebody who knew of a compiler that didn't always zero out the memory.
In my opinion, a lot of "optimizations" are really just programming urban legends. Somebody knew somebody who knew a guy who wrote the documentation for a compiler said that you should always bzero your calloc-ed memory. Somebody heard from somebody next to them in an airplane say that their brother works for Borland and you should always change x = x +1 into x++;. Then somebody else will mention their sisters cousin heard from a friend that it should really be ++x;. C seems notorious for this because a lot of these rumors were probably once true and are still passed down as gospel from people who worked on them (or knew somebody who did).
In other words, I take pretty much all of these "tricks" with a huge grain of salt. Until you show me the numbers, it is all rumor. Even then, if it makes the code hard to read and it isn't in a critical path (hint: 99.9% chance it is not), I dont care anyway--readability trumps everything.
The smartest words I ever heard about this are "If your compiler can't figure out what you meant and optimize it, get a new compiler". Good words to live by.
As I'm using it right now. A dual-head nVidia and a dual-head ATI. But now that I read that article, my guess is that Win7 is knocking one or both of the cards down into some kind of legacy mode.
Indeed. Huge improvement in multi-monitor support right there! Tear a maximized window off a screen and shove it into another one.
Better, in Windows 7 you can shove a "normal" window up to the top of a screen and it will maximize. Tear a maximized window off the top and it will restore it to a normal window.
You can shove a window to the corner and it will fill a 1/2 of the screen.
You can "wiggle" a window and it will minimize all the other windows so it is just you, the desktop and your app. Wiggle it again, and all the other apps come back.
Your blog has been a great resource for me for a very long time. Thanks for all the informative posts... you were the only set of instructions that made sense for doing a binary upgrade :-)
Thank you sir!!!
The problem I've ran into with most OSS (and even paid) ecommerce systems is they dont understand basic accounting nor do they understand how a business operates.
Take zen-cart for example. When a customer cancels an order, what is the proper thing to do? Well, I'll tell you what *isn't* the proper thing... DELETE THE ORDER FROM THE DATABASE!!
The second I found out that the way to hide/cancel an order was deleting it from the database, I ran away from zen-cart. You never delete an order... what if you got audited? What if the customer wanted to actually go ahead with the order? What if you wanted to get a report on the number of canceled orders? You can't if you delete the damn thing from the database!!
Really, the problem is these products had their interface designed to suit their database schema. In reality, the design and workflow should come first, and the database schema should fall out of that.
But obviously not on Slashdot. Heavens no! That would be to "mainstream" and not hyper-jaded.
On Slashdot, you are against Mice, Camera Phones, Color Monitors, mass distributed virtual server networks (aka cloud computing), HTML that includes images, any font besides times new roman, any system that uses more than a 32-bit address bus, any binary that is more than 30kb, any programming language that isn't C, any innovation that wasn't included in the original Unics systems, and now I guess raw fish too.
Good lord. I thought this site was for tech-loving nerds but Slashdot is increasingly a cave for modern-day Luddites to hide in.
Raw Tuna is good. Very good. So is pretty much all those other things some of you Luddites whine about. If you don't like them because it might make you "mainstream" or might go against some stupid "principle" you have, you are seriously missing out. But to not enjoy is your loss and your loss alone. Not mine and certainly not societies either.
Spicy Tuna Rolls. Yum.
You have a dome with a bunch of air in it, right? It has to be exchanged with fresh air, right? Now the city can tax the air their citizens people breath.
It is brilliant, really. They've finally found a way to tax the air we breathe!!
And know the fix would be back-ported to Server 2003. How many "stable" kernel versions will the fix be back ported to? Will my 2.4.x kernels get a patch?
If you lease the vehicle, odds are good it would be against the contract and they'd either sue you or charge you to repair the vehicle.
So in your case it may not be illegal, but it would most likely be a contract violation.
I think the keyword is "understatement".
That doesn't solve anything but distributing the program itself, not any dependencies. Who distributes those? If you have 50 repositories on your list and all of them claim to offer "libapr-1.2", how do you know which repository to use? Keep in mind some of those repositories might have compiled the library different yet retained the same package name.
Plus you said "Debian". Does Logitech have to run a repository for every distro's proprietary repository system?
Yeah yeah, they should open source it. But guess what. Not happening for 95% of the software in the world. Thats reality and no amount of coercion will change it. If you dont address the concerns of that 95%, you are never gonna get linux in the mainstream.
So I set up my own repository for customers to download my CNC milling software. My software, like any, has a lot of dependencies.
Do I host these dependencies on my repository or what? If I dont rely on my repository, which repository do I use? What if they nix support for the specific version of the dependency I depend on? Do I now have to host it myself? What if the dependency on the repository somehow gets changed so it is no longer compatible with mine but counts as the same version? What happens if the user has already added a third-party repository with installed the "same" dependency, only compiled in a way that makes it incompatible with my software? What then? I can't plow over the "same" dependency with my own or it would break other software. What do I do?
Worse, which type of repository do I host? YUM? Some RPM thing? What? Do I have to learn how to maintain a repository for every type in existence?
Help me out here. I just want my CNC milling software to work on Linux. It was so easy with my Windows and Mac customers. The Windows customers just ran "setup.exe" and it worked. The Mac folks did just about the same.
In other words, it would only be useful for about 95% of the software in existence? Yeah, fuck those assholes.
So innovate dude. Create a stable API that developers can hook into so their applications can update themselves without re-inventing the wheel. Neither OSX nor Windows really provide a good way to do this, which is why every self-important installer puts in their own auto-update mechanism.
The idea of a central repository is one of those ideas that sound logical in theory, but in practice it simply will not scale at all. It might work okay for the iPhone which has a limited use or the current generation of linux distros who have a fairly small set of software available, but it will never work for a mainstream operating system that is expected to run *every* bit of software in existence.
Will Quicken be in your repository? TurboTax? SimCity? World of Warcraft? The software for my old TI-89 calculator? The software that came with my UPS? What about DB2--all the versions with all the varying patches? What about the specialized medical imaging software used by my doctor? What about the software used by the CNC Mill down at the local foundry? What about the POS software running at the pizza shop down the street? What about the software for my Harmony Advanced Remote? Will these be in your repository? If they aren't, how do you propose I install them?
Sorry, the idea of a central repository for every single bit of software a computer might run is, well, insane. Who maintains it? What happens when it goes down by mistake? In fact, it sounds a little cloud-like don't you think? Are you folk supposed to be anti-cloud?
So please tell me where I will be going to install the software for my old Harmony Advanced Remote?
Or you can stop being so damn dense and think for a second. You'd be saving all the history too. You'd be able to undo any change you made just like you do now.
Yeah. True in the last generation and maybe true in this one but I doubt it will be nearly as true in future generations.
Why the hell should I? I bought the damn computer to worry about organizing and searching my files so I dont have to! I gave up the whole "organize my music collection by hand" years ago when iTunes or Windows Media Player started doing it for me and it is about damn time I stop having to hand-organize the rest of my shit too.
If anything, if your OS can't help you find your files easily, something is wrong with your OS. That is the job of the OS, not you.
Shhhh!!!! not so loud! you are spoiling my work!
You would be incorrect. IE uses an OS level service known as Windows Integrity Mechanism. Same mechanism used by UAC or Silverlight.
It may come as a surprise to you, but unix servers are a great place to host eggdrop bots and all kinds of various daemons for controlling IRC warez/botnet channels.
You haven't been in this long or you'd have at least one or two servers get rooted through Bind, PHP or something similar and discover a script kiddie running some damn thing or other.
If it is mainstream OS with more than a fraction of the market share, people won't be downloading from repositories no matter what the Linux people think.
The hard drive has been a limiting factor in all kinds of things. Why were you taught to "always save your work"? Cause hard drives are slow and it was infeasable to have the application save data in real-time. With an SSD, most applications can probably save your work in real-time. Why does it take so long to boot? Cause the hard drive is slow. With an SSD you can probably afford to quickly dump all of your memory out to "disk" and shut the compute down in hibernate mode--none of this partial-sleep junk.
Why does it take so long to load a program? Slow disk. Why does my computer lag sometimes? Probably slow disk moving around heads on a spinning platter.
Why does it take so long to install things? Partially cause the OS has to set up a shadow copy so you can roll back. Why does my OS not have a shadow copy feature yet? Probably cause the designers thought it would be to slow to implement because of your slow-ass disk. Why does it take so long to search my filesystem or index it? Slow-ass disk.
You think that extra speedup won't be cared about? Seriously? The fact we've delt with such a slow means of long-term storage has held us back for a long time. Remove the silly constraints forced by stupid mechanical devices and suddenly we can do a lot of creative, useful things that were not possible before. Surely even you can see that, right?
Or am I forgetting this is slashdot home of the tech-Luddite and dog gon'nit a command-line and a green screen is good enough for me and should be good enough for anybody!
Depends on how quickly we move away from broadcast / cable TV and into so-called IPTV. Once people start downloading entire seasons of HDTV content (4gb/hr) a 1TB drive will seem awfully small. Especially if you have people in your house who never like to delete shows when done watching them.
Corporate use? Heck yeah. Probably even lower than 30gb.
Either way, I agree that for the average user, a 320gb SSD is plenty of space. By the time they graduate to a bigger drive, the 1TB ssd's will cost the same and they can move on in.
Holy shit! Anonymous Coward says current generation SSD's might not be able to be used for long-term backup! Clearly this means there is absolutely no use for Solid State Disks whatsoever!
The game is over gentleman. Time to shut down production and throw in the towel.
Thanks for saving our ass. Anybody reading this should know that Anonymous Coward is a smart cookie--he was also responsible for warning about the transition from perfectly sound MFM interface to the bloated, evil IDE interface. Whatever advice he gives regarding these untested, unsound Solid State Disks should be wisely heeded.
Obviously :-) Most of my workstation's disk is full of virtual machine images. The HTPC, well that is obvious.
Still, I'd be curious how much *data* is on an "average" computer. But even if you got a number, my guess the standard deviation would be quite high. Probably lots in the 750gb bracket and lots in the 10gb bracket.