If you live in a country with no IP protection, your point of view might make some sense, but IBM still makes plenty of money on software, so going fully open-source is unlikely, even if you believe it's the right thing to do. I think no other company but perhaps Sun has done as much for Linux and open-source as IBM, at least if you discount the Linux distro publishers. For some reason, Big Blue seems to have decided to side with the public good rather than fear open-source as most corporations do. I don't fully understand how a monster company like IBM can act like this, while virtually every other huge corporation out there seems to be guided by Dilbert's boss.
I agree with the kudos! Let's hope Big Blue can keep on proving that large corporations don't have to be evil!
I would be happy if Dell simply kept the money for Vista, but installed Ubuntu for me. That would be better than being forced to by Vista, and spending the couple hours it takes to wipe the disk and install Ubuntu. If that makes Dell more profit, it's a win / win!
I love Prolog, and even coded a Prolog interpreter once. Writing a program to do derivatives in Prolog rocks. Writing algorithms, however, in Prolog isn't much fun.
Ha! When I say "I hired" and "my programmer", that's actually misleading. My company doesn't let me manage anyone (and for good reason). These are guys I mentor, and I'm a big fan of mentoring. You're right that they do excel on their own merits. All I do is offer them an environment designed to help them succeed. I'm quite proud of how some of their careers have turned out, and I'll take some credit for giving them their first break. While I can't take credit for their skill, I'll take some credit for steering them in a fruitful direction, so they could attain those skills quicker. I'll also take some credit for being able to tell when a guy is super-smart and eager to succeed, and having the smarts to offer them a chance. Everyone needs a reason to believe they are helping the world, and helping these guys out is one of mine.
I just have to say how nice it is to have a forum where I can talk to real geeks. I spent 18 years in Silicon Valley, and now that I live here NC, it's just not the same. Thank God there are people I can have a semi-abnormal conversation with on-line that know something about all of those things!
Ha! I guess that's why I like to see all the variable declarations at the top of a function, and some kind of comment above that. I've also seen recipes with goto statements. I guess you could call it a spaghetti recipe?:-P
I've only dabbled with it. I am a fan. Still, designing the front panel of an electronic device seems a lot more straight-forward. What makes GUIs hard (other than the rare creativity required to write good ones) is the way that good interfaces have buttons and things that can be activated at any time in any order. Algorithms are easiest when the read a file, munge it, and write out a file. There's a big disconnect in-between. Life was so much easier back in the days when all we had were command line interfaces.
Most of the great engineers I know in industry and research (pretty closely connected in my industry actually) are also damn sharp at math.
Yeah, me too. The programmer I just hired to do algorithms got a 1600 on his SATs, and loves math. The Indian IIT grad I hired runs circles around me in math. However, most coders out there don't do hard-core algorithms (I'm guessing you do). It's even reflected in our programming languages: C++ is a wonderful language for describing a string class, but terrible for place and route algorithms (no, I don't want to answer why... no need to get into a religious war). However, it's great for MFC classes, though I still think GUIs could be a lot more intuitive if designed more like hardware.
The web site often referred to the reliability of hardware compared to software, and argues we need a hardware methodology-like software development system. I disagree. Hardware is often incredibly difficult to design, we use procedural Verilog code to describe each process, and the rest is manual connections between them. At the manual connection level, we're not more productive designing circuits that we were when we used schematic entry. There's something called the "Design Gap", which refers to the fact that we don't yet know how to make chip designers productive enough for them to use up all the transistors now available on chips. This is one reason so many design teams where off-shored to India. We often can't afford the salaries of US engineers to design modern chips.
Many people have pointed out that programmers can describe the function of a chip in C several times faster than chip designers can do in Verilog. The point is that chips need to work no matter what system they're used in, while somewhat unreliable software can be ok. I'm releasing a 500K line program to a client this weekend. It has bugs. However, it passes hundreds of designs without failure, indicating most customers likely wont run into them. We built that system with only a dozen-ish man-years of effort, but AFAIK it's more complex than any chip ever designed. Our software methodology converges on reliability, but only to a certain quality point. Going beyond that quality point wastes resources that are needed for the next project. To get to Intel Pentium level of quality would take a team the size of Intel's processor design group.
There are several companies that now directly convert C (or SystemC - basically C++) code to hardware. The idea is to greatly improve hardware design productivity, but it only partially works. The bottle-neck is verification. If the link between the description and the hardware is difficult to see and understand, debugging and verification becomes a nightmare. A C model can be written much faster, but who cares, since it's the verification that takes all the effort? Maybe they can figure out how to improve verification flows, but until then, plain old procedural C/C++ programing with solid coding methodologies will continue to kick pants off of hardware design in terms of productivity.
I read the site. Thanks for the link. A lot more GUI code gets written than real algorithms, and I do feel that we could possibly find a huge improvement in GUI programming through some sort of hard-ware methodology motivated paradigm, as suggested in the link. If that's the kind of programming you're referring to, you might be right. However, for doing things like finding good placements for components, object-oriented procedural programming wins, IMO. It's just the natural way to describe a system, and the algorithm to affect that system. For describing GUIs, I've always wished I could just solder a stupid button on a panel, rather than deal with crazy event loops. I have not seen a programming environment yet that makes GUI design seem natural to me.
I sometimes run into great algorithm programmers who were poor at math, but they're rare, and usually can be explained away based on what kind of drugs they did in college. For a good algorithms guy, I love hiring good mathematicians and physicists. You can train them into great programmers a lot quicker than the other way around. However, algorithms are really a very small part of the programming space we work in. I choose to work in this space because it suits me, but most programmers never need calculus. To build a tree-based data structure and a GUI to drive it takes about an 8th grade level of knowledge. Doing a GUI really well takes creativity I've never had (apparently a lot of guys like me work at M$. I don't know where Apple finds it's GUI guys).
The summary of the author's points in the article make the book sound dead wrong on several counts, though it could just be the review. Procedural languages are the natural way to code most programs, and here's why: we've been recording recipes as a sequence of steps, with if statements and loops, since the invention of writing. It's become encoded in our genes. That's really all that early computer scientists put in our early languages like FORTRAN. It's all the stuff we've added since then that's up for debate, in my mind. The author makes money by pushing the boundaries of computing model research. I get big programs written by teams by restricting what language features are used, and how. I'd be interesting to debate the ideas, point by point.
I have been able to use a lot more devices on my Intel Macs and also have been able to play a lot more commercial games
Yeah, games are the real killer. Most people never plug in peripherals into their laptops that Ubuntu doesn't support, but everybody runs games. My latest Ubuntu box can run Urban Terror, which is the first advanced game I've ever been able to run in Linux (Nexius is also cool). How old is that, like 10 years? Unless the gaming industry has a change of heart and starts selling big titles on Linux, it wont ever be all that popular. We have a 100% linux shop where I work. I just bought 3 new laptops for the developers, and every one of them took the extra day and gave up 25-50% of their hard disk to dual-boot XP or Vista. Why? Games.
The hard part will be building a useful boot image. I'll bet Apple pulled their shell from their release image, meaning there's no shell to run. Writing applications for iPhone is the real goal, and doing that without access to Apple's build system is going to be really hard. I suppose if they can reverse engineer what all the peripherals are and how to communicate with them, then somebody can begin porting Linux to it (they did it with iPod). That wont let you write and share applications with friends who have normal iPhones.
I understand Steve Job's reluctance to have all of us geeks gain full control over the radio and low-level network protocols that run over the radio, but couldn't he put that code in a different closed-source controller, and give us the ability to write apps?
Yep. Also, the telecoms in the US have a chummy relationship with the government that includes deals like AT&T piping all your internet traffic directly to the NSA. If the phones are closed-source, that makes it more likely that in the future, if needed, the government can do things to your phone for it's purposes. However, I have to agree that for now, closed-source phones probably are more secure. That was the main point Steve Jobs made when defending why the iPhone is closed-source. It's not that any encryption would be more secure - open source encryption is the only kind I trust. It's just that a whole linux/unix/bsd OS is a hard thing to lock down securely. Hackers are often successful at gaining root access once given a user account. Once hackers can directly control the radios in their phones, I imagine all kinds of (probably fun) hacks would appear, and some of them might interfere with the cell network. The telephone companies have been fighting against hackers for many decades, and you don't see any of their software open-sourced.
I've been e-mailing a bit with another guy about this idea. According to US law (and some others), an idea has to be published in a printed publication. No big deal... just make one, get it an ISDN number, and get some libraries or charitable individuals to actually subscribe. Hopefully, the volume if ideas would be such that you could print a few copies each week and send them to subscribers. Even better, send the Library of Congress the print version, and everyone else gets a CD. For most purposes, CD is just as good for recording ideas as actual paper. My wife is a custom publisher. I'll ask her about what this would cost.
Even better would be the EFF. The site should just be a free blog for anyone who wants one, with a good wiki to help us write blog entries that will make good prior art. Posters should have the option of remaining anonymous. Anyone got a good contact at the EFF?
P.S. If you'd rather just e-mail me instead of replying on/., I can be reached at bill@billrocks.org. Because I publish this e-mail address so widely, I have no choice but to use automated challenge/response on it. You'll be asked what color they sky is. Reply blue. Sorry about the hassle, but I get about 1,000 spams/day.
There are several web sites out there that do nothing but publish your ideas (like these guys) so that they can be recorded as prior art. The stupid part is that they charge a very high fee. There needs to be a free site that is add-sponsored and community supported. In fact, if no one else does it, I'll do one. I already have my own dumb idea blog for this purpose. If a few of you respond to this post, suggesting that I actually provide this free service (and maybe some nice ideas about what web host, what CRM software, what to do to get paid adds, etc), I'll go ahead and do it. If any of you would rather do this yourself, please say so. I'd like to be an early user.
Thanks. I love that Franklin quote. Someone suggested the other day that I put "-- Ben Franklin" on the end of my sig, but I thought the quote was so well known that it wasn't needed.
It's cool technology, I agree. I'm not so paranoid that I turn my cell phone off, and actually, I'd consider buying the iPhone if it were a bit smaller. I don't think it will fit in my pocket with my keys very well. If they let me program the darned thing, I might just have to buy one, though. Selling my information to advertisers doesn't bother me that much. I've noticed, for example, that banner adds seem really well focused on some sites, like eetimes. For one thing, they tell me that they're selling, and even give me the option (in theory) to opt-out (which I do).
So, here's my favorite example of what we could accomplish in the open-source community if iPhone were open. We could all provide our position data through a truly anonymous protocol to a central web site (open-source is required to believe the anonymous part). This data could be used to create up-to-date road maps of the whole US, and it would allow our iPhones to be used as a GPS while driving. With accurate traffic info, it could even suggest how best to get to work on any particular day at any particular time, and it might even know if an accident has changed traffic patters. I've wanted to write that app for about 10 years now, and the iPhone looks like the perfect platform.
Your cell phone provider NEEDS to know where you are at least within the radius of a cell tower.
Err... no. By law in the US, your cell phone provider needs to know where you are within about 25 feet. The public reason for this law is so that emergency response crews can find you in an emergency. The private reason is so law enforcement can get warrants to find out exactly where you've been. The secret reason is so the NSA can follow us all around without warrents, and see who's hanging out with suspected terrorists. The business reasons are for more of the same kind of data mining that businesses already do. Everybody wins, so long as cell phone users remain ignorant.
It's not all about money. A lot of this is about trust. How far do you trust Microsoft with your data? OOXML's biggest drawback is that it's not truely open. I'm glad Microsoft is moving towards openness, but as is often the case in the corporate world, this isn't just some company being nice and giving users what they want. It's a direct attack against the ODF threat. It will likely be very effective, resulting in your having to continue to Trust in Microsoft (TM). Trust the big corporation. Good doggie.
I feel a lot better using systems that are open. It's not so much a desire to be able to change the widget, but more a desire to trust it. In the old days, you could trust that your electronic gadgets did nothing but what you expected. They were simple hardware, with little software. You could open the box and figure out what it did. Now days, with software dominating the technology in gadgets, I prefer that software to be open. Who's to say that your iPhone isn't spying on you? When you run Vista, you must agree to trust Microsoft with all kinds of personal information. My cell phone service provider knows where I am 24/7, and I'm not allowed to turn that feature off. When I browse the network through My Ubuntu box, I have to trust my ISP whenever I transmit unencrypted data. With the iPhone, I have to trust Apple with all of those things at the same time! Yeah, I wanna see the code.
If you live in a country with no IP protection, your point of view might make some sense, but IBM still makes plenty of money on software, so going fully open-source is unlikely, even if you believe it's the right thing to do. I think no other company but perhaps Sun has done as much for Linux and open-source as IBM, at least if you discount the Linux distro publishers. For some reason, Big Blue seems to have decided to side with the public good rather than fear open-source as most corporations do. I don't fully understand how a monster company like IBM can act like this, while virtually every other huge corporation out there seems to be guided by Dilbert's boss.
I agree with the kudos! Let's hope Big Blue can keep on proving that large corporations don't have to be evil!
I would be happy if Dell simply kept the money for Vista, but installed Ubuntu for me. That would be better than being forced to by Vista, and spending the couple hours it takes to wipe the disk and install Ubuntu. If that makes Dell more profit, it's a win / win!
I love Prolog, and even coded a Prolog interpreter once. Writing a program to do derivatives in Prolog rocks. Writing algorithms, however, in Prolog isn't much fun.
Ha! When I say "I hired" and "my programmer", that's actually misleading. My company doesn't let me manage anyone (and for good reason). These are guys I mentor, and I'm a big fan of mentoring. You're right that they do excel on their own merits. All I do is offer them an environment designed to help them succeed. I'm quite proud of how some of their careers have turned out, and I'll take some credit for giving them their first break. While I can't take credit for their skill, I'll take some credit for steering them in a fruitful direction, so they could attain those skills quicker. I'll also take some credit for being able to tell when a guy is super-smart and eager to succeed, and having the smarts to offer them a chance. Everyone needs a reason to believe they are helping the world, and helping these guys out is one of mine.
I just have to say how nice it is to have a forum where I can talk to real geeks. I spent 18 years in Silicon Valley, and now that I live here NC, it's just not the same. Thank God there are people I can have a semi-abnormal conversation with on-line that know something about all of those things!
Ha! I guess that's why I like to see all the variable declarations at the top of a function, and some kind of comment above that. I've also seen recipes with goto statements. I guess you could call it a spaghetti recipe? :-P
I've only dabbled with it. I am a fan. Still, designing the front panel of an electronic device seems a lot more straight-forward. What makes GUIs hard (other than the rare creativity required to write good ones) is the way that good interfaces have buttons and things that can be activated at any time in any order. Algorithms are easiest when the read a file, munge it, and write out a file. There's a big disconnect in-between. Life was so much easier back in the days when all we had were command line interfaces.
Yeah, me too. The programmer I just hired to do algorithms got a 1600 on his SATs, and loves math. The Indian IIT grad I hired runs circles around me in math. However, most coders out there don't do hard-core algorithms (I'm guessing you do). It's even reflected in our programming languages: C++ is a wonderful language for describing a string class, but terrible for place and route algorithms (no, I don't want to answer why... no need to get into a religious war). However, it's great for MFC classes, though I still think GUIs could be a lot more intuitive if designed more like hardware.
The web site often referred to the reliability of hardware compared to software, and argues we need a hardware methodology-like software development system. I disagree. Hardware is often incredibly difficult to design, we use procedural Verilog code to describe each process, and the rest is manual connections between them. At the manual connection level, we're not more productive designing circuits that we were when we used schematic entry. There's something called the "Design Gap", which refers to the fact that we don't yet know how to make chip designers productive enough for them to use up all the transistors now available on chips. This is one reason so many design teams where off-shored to India. We often can't afford the salaries of US engineers to design modern chips.
Many people have pointed out that programmers can describe the function of a chip in C several times faster than chip designers can do in Verilog. The point is that chips need to work no matter what system they're used in, while somewhat unreliable software can be ok. I'm releasing a 500K line program to a client this weekend. It has bugs. However, it passes hundreds of designs without failure, indicating most customers likely wont run into them. We built that system with only a dozen-ish man-years of effort, but AFAIK it's more complex than any chip ever designed. Our software methodology converges on reliability, but only to a certain quality point. Going beyond that quality point wastes resources that are needed for the next project. To get to Intel Pentium level of quality would take a team the size of Intel's processor design group.
There are several companies that now directly convert C (or SystemC - basically C++) code to hardware. The idea is to greatly improve hardware design productivity, but it only partially works. The bottle-neck is verification. If the link between the description and the hardware is difficult to see and understand, debugging and verification becomes a nightmare. A C model can be written much faster, but who cares, since it's the verification that takes all the effort? Maybe they can figure out how to improve verification flows, but until then, plain old procedural C/C++ programing with solid coding methodologies will continue to kick pants off of hardware design in terms of productivity.
I read the site. Thanks for the link. A lot more GUI code gets written than real algorithms, and I do feel that we could possibly find a huge improvement in GUI programming through some sort of hard-ware methodology motivated paradigm, as suggested in the link. If that's the kind of programming you're referring to, you might be right. However, for doing things like finding good placements for components, object-oriented procedural programming wins, IMO. It's just the natural way to describe a system, and the algorithm to affect that system. For describing GUIs, I've always wished I could just solder a stupid button on a panel, rather than deal with crazy event loops. I have not seen a programming environment yet that makes GUI design seem natural to me.
I sometimes run into great algorithm programmers who were poor at math, but they're rare, and usually can be explained away based on what kind of drugs they did in college. For a good algorithms guy, I love hiring good mathematicians and physicists. You can train them into great programmers a lot quicker than the other way around. However, algorithms are really a very small part of the programming space we work in. I choose to work in this space because it suits me, but most programmers never need calculus. To build a tree-based data structure and a GUI to drive it takes about an 8th grade level of knowledge. Doing a GUI really well takes creativity I've never had (apparently a lot of guys like me work at M$. I don't know where Apple finds it's GUI guys).
The summary of the author's points in the article make the book sound dead wrong on several counts, though it could just be the review. Procedural languages are the natural way to code most programs, and here's why: we've been recording recipes as a sequence of steps, with if statements and loops, since the invention of writing. It's become encoded in our genes. That's really all that early computer scientists put in our early languages like FORTRAN. It's all the stuff we've added since then that's up for debate, in my mind. The author makes money by pushing the boundaries of computing model research. I get big programs written by teams by restricting what language features are used, and how. I'd be interesting to debate the ideas, point by point.
Yeah, games are the real killer. Most people never plug in peripherals into their laptops that Ubuntu doesn't support, but everybody runs games. My latest Ubuntu box can run Urban Terror, which is the first advanced game I've ever been able to run in Linux (Nexius is also cool). How old is that, like 10 years? Unless the gaming industry has a change of heart and starts selling big titles on Linux, it wont ever be all that popular. We have a 100% linux shop where I work. I just bought 3 new laptops for the developers, and every one of them took the extra day and gave up 25-50% of their hard disk to dual-boot XP or Vista. Why? Games.
The hard part will be building a useful boot image. I'll bet Apple pulled their shell from their release image, meaning there's no shell to run. Writing applications for iPhone is the real goal, and doing that without access to Apple's build system is going to be really hard. I suppose if they can reverse engineer what all the peripherals are and how to communicate with them, then somebody can begin porting Linux to it (they did it with iPod). That wont let you write and share applications with friends who have normal iPhones.
I understand Steve Job's reluctance to have all of us geeks gain full control over the radio and low-level network protocols that run over the radio, but couldn't he put that code in a different closed-source controller, and give us the ability to write apps?
I hope you're not kidding! If I can get shell access to the iPhone, I'm gonna have to go get one. Got a link to the hack? Thanks!
Yep. Also, the telecoms in the US have a chummy relationship with the government that includes deals like AT&T piping all your internet traffic directly to the NSA. If the phones are closed-source, that makes it more likely that in the future, if needed, the government can do things to your phone for it's purposes. However, I have to agree that for now, closed-source phones probably are more secure. That was the main point Steve Jobs made when defending why the iPhone is closed-source. It's not that any encryption would be more secure - open source encryption is the only kind I trust. It's just that a whole linux/unix/bsd OS is a hard thing to lock down securely. Hackers are often successful at gaining root access once given a user account. Once hackers can directly control the radios in their phones, I imagine all kinds of (probably fun) hacks would appear, and some of them might interfere with the cell network. The telephone companies have been fighting against hackers for many decades, and you don't see any of their software open-sourced.
I've been e-mailing a bit with another guy about this idea. According to US law (and some others), an idea has to be published in a printed publication. No big deal... just make one, get it an ISDN number, and get some libraries or charitable individuals to actually subscribe. Hopefully, the volume if ideas would be such that you could print a few copies each week and send them to subscribers. Even better, send the Library of Congress the print version, and everyone else gets a CD. For most purposes, CD is just as good for recording ideas as actual paper. My wife is a custom publisher. I'll ask her about what this would cost.
Even better would be the EFF. The site should just be a free blog for anyone who wants one, with a good wiki to help us write blog entries that will make good prior art. Posters should have the option of remaining anonymous. Anyone got a good contact at the EFF?
P.S. If you'd rather just e-mail me instead of replying on /., I can be reached at bill@billrocks.org. Because I publish this e-mail address so widely, I have no choice but to use automated challenge/response on it. You'll be asked what color they sky is. Reply blue. Sorry about the hassle, but I get about 1,000 spams/day.
There are several web sites out there that do nothing but publish your ideas (like these guys) so that they can be recorded as prior art. The stupid part is that they charge a very high fee. There needs to be a free site that is add-sponsored and community supported. In fact, if no one else does it, I'll do one. I already have my own dumb idea blog for this purpose. If a few of you respond to this post, suggesting that I actually provide this free service (and maybe some nice ideas about what web host, what CRM software, what to do to get paid adds, etc), I'll go ahead and do it. If any of you would rather do this yourself, please say so. I'd like to be an early user.
Thanks. I love that Franklin quote. Someone suggested the other day that I put "-- Ben Franklin" on the end of my sig, but I thought the quote was so well known that it wasn't needed.
It's cool technology, I agree. I'm not so paranoid that I turn my cell phone off, and actually, I'd consider buying the iPhone if it were a bit smaller. I don't think it will fit in my pocket with my keys very well. If they let me program the darned thing, I might just have to buy one, though. Selling my information to advertisers doesn't bother me that much. I've noticed, for example, that banner adds seem really well focused on some sites, like eetimes. For one thing, they tell me that they're selling, and even give me the option (in theory) to opt-out (which I do).
So, here's my favorite example of what we could accomplish in the open-source community if iPhone were open. We could all provide our position data through a truly anonymous protocol to a central web site (open-source is required to believe the anonymous part). This data could be used to create up-to-date road maps of the whole US, and it would allow our iPhones to be used as a GPS while driving. With accurate traffic info, it could even suggest how best to get to work on any particular day at any particular time, and it might even know if an accident has changed traffic patters. I've wanted to write that app for about 10 years now, and the iPhone looks like the perfect platform.
You're statement about cell towers is correct, but it's the 25 feet tracking that I'm concerned about. Most users actually don't know they are being tracked whenever they carry their phone.
It's not all about money. A lot of this is about trust. How far do you trust Microsoft with your data? OOXML's biggest drawback is that it's not truely open. I'm glad Microsoft is moving towards openness, but as is often the case in the corporate world, this isn't just some company being nice and giving users what they want. It's a direct attack against the ODF threat. It will likely be very effective, resulting in your having to continue to Trust in Microsoft (TM). Trust the big corporation. Good doggie.
I feel a lot better using systems that are open. It's not so much a desire to be able to change the widget, but more a desire to trust it. In the old days, you could trust that your electronic gadgets did nothing but what you expected. They were simple hardware, with little software. You could open the box and figure out what it did. Now days, with software dominating the technology in gadgets, I prefer that software to be open. Who's to say that your iPhone isn't spying on you? When you run Vista, you must agree to trust Microsoft with all kinds of personal information. My cell phone service provider knows where I am 24/7, and I'm not allowed to turn that feature off. When I browse the network through My Ubuntu box, I have to trust my ISP whenever I transmit unencrypted data. With the iPhone, I have to trust Apple with all of those things at the same time! Yeah, I wanna see the code.