Learning how to put these CUDA cores to work for more than games is a great new opportunity because each new NVIDIA card has more of these resources. Unfortunately this seems to be rocket science and just because engineers can build these boards doesn't mean that the software community is ready or able to design software that benefits from this architecture. When they do, things will get very interesting. Hardware people decided to go multicore because it was getting harder to go faster with uni-core processors. Software people got told they would have to write a different kind of software to stay competitive, and this area will be very important in the future. Actually it is right now. I noticed Dell is pushing 2.5 GHz quad core machines with six gigs of memory at Costco. I don't know how much of the contemporary software can properly utilize these cores, but time will tell. As the programming languages get built-in support for multi-core programming, things will improve. I noticed there is some nice support in Python.
Participation in developer programs is usually restricted to developers who have an existing application worthy to be ported to a new platform, and not for people like me who are still trying to come up with an idea for a good program. I didn't want to get something for nothing, I was willing to pay for a development machine.
Regarding emulators, I primarily compute on Apple Mac these days, and the emulator for the Mac was down-level. As a very experienced developer, I prefer to develop and test on the real target platform, otherwise I could miss something obvious such as button positions or resolution issues.
My ability to use the little green machine was hampered by lack of support for WPA. I use an Apple Airport as my wireless access point here, and it just never got enough support. I know how vulnerable WEP is and I was unwilling to open a WEP channel just to support the OLPC machine.
I didn't mind the G1G1 program because it helped get some machines moving in the right directions. It was a way for me to donate easily.
I was really put off by the security arrangements such as the developer key... I am not sure why they wanted to keep such ridgid control over the platform, but it made things more complicated when they were complicated enough from the start. I wanted everything to be more open... I thought that was the point.
I guess at this point I can admit that I really disliked sugar and wished for something that was more intuitive for me. They didn't really have to create something so different. It is like a huge case of NIH syndrome.
If you want me to give you my machine, I would want to hear more about why I should and who would benefit. Then I can make an informed decision. Having one made me feel like part of something wonderful that was going on. The current state of things and the intrusion of Microsoft into the situation has polluted that feeling.
I am still waiting to hear about what the chip costs to add the XO version of Windows. It may make a modestly useable netbook. I had vowed not to give Microsoft another penny, but we will see what happens.
I participated in the G1G1 program on the dual basis that I could write software for the platform, and I could do something nice for a third world child. It seems that Microsoft has outsmarted me again. The OLPC is a lousy Windows machine and not worthy of my time to develop software for. My idealistic hope to do something nice for a child has come to unknown results. I can only hope that some child used it to access the Internet for a while, and that in and of itself would have been valuable IMHO.
Otherwise I guess I am the owner of an orphan green notebook computer that never was able to access my Apple Airport wifi router because of WPA problems that were never fixed. Keeping a WEP setup just for the OLPC is not worthwhile because of the security implications. As the french would say, se la merde.
I am a switcher and no longer write software for Windows, other than accidental compatibility based on Python.
I am disappointed I guess that things didn't work out better overall for OLPC, but at least I tried.
I am not a lawyer, but I have been watching the Internet for several decades now. I am somewhat well versed in computer security though. I do remember that if you contact a computer system without permission, there can be consequences. Now we all know that putting files on servers in an unsecured fashion can lead to the files getting loose, and someone could say in court that you did not try to protect you proprietary materials, so you may not have cared. An example was when the source code of the voting machine was available on an open ftp server for a while. The code was assumed to be copyrighted, and was assumed to be proprietary, but was accidentally available.
I know that it helps to put a message on your server that states it is private and not for public use if you expect the connectee to know that. If I had a server that welcomed the public, they might assume the unprotected contents, or materials under/pub were available. If you tell the public to keep out, and place files in a directory called "private" that happened to be unprotected, you could assert later it was not for public access, and you would at the very least be thought a fool for leaving your data laying around.
Laws that prevent spam faxes are based on the concept that connecting to your system without explicit permission could be wrong.
If you noticed some proprietary information on a server that was not protected, and you published the location of it, you would not be doing the owner a favor. But would you be breaking the law?
The fact that someone placed data on an unprotected ackamai server could just mean that they placed their data using security through obscurity, and it was not meant to be public, even though it was poorly protected.
Islam style finance does forbid interest, but it does allow sharing in the profits. There is just a different semantics for discussing it. If you read about it for several hours, you will start to understand, then as you continue, it will become less and less clear. It starts out very benevolent, then gradually comes back towards western banking as it compensates for economic realities.
There is really two things going on here. They are trying to build manycore GPUs and trying to produce commercially usable video cards at the same time. If they can do both successfully, it will be good for all of us, but solid hardware, and good drivers all across the board will be required. The new C1080 card has 240 cores and plugs into a PCI Express slot. Contemporary NVIDIA Video cards have less. This is the new game. A frame with four of these boards is now a supercomputer. I just wish I could get one of these into my Mac Pro (I must be dreaming).
I thought it would be fun to run an Apple server, seeing as I was running Apple desktops. Every time I launch into trying to use it seriously though, I get really frustrated. Although people may argue with me about this, I find it a lot like Windows Server. You turn everything on by default, and it seems to be working, for about a day then the error messages start piling up and you start to realize how little you know about what is going on under the hood and what has to be done to fix it. After a taste of Advanced configuration, you are ready for Basic, then you are wishing that machine was just running Leopard again because a linux server could so most of what you need. The podcast processing services on Server are neat, if you can figure out how to configure them properly. Aside from that, it is very unimpressive, IMHO.
Oh yea the GUI is NeXT but I think the reliability and efficiency of the OS is FreeBSD based, and I have yet to decide whether cocao is great or a great heap of "stuff". Macs sell to two kinds of users... Ones that like the GUI and ones that can't wait to get the command line up, and happen to like the GUI also. The Mac is a great Platform for development, except the parts that have to do with the Mac.
My last Toshiba was P35-S609. Even with the unit plugged in, after a while the battery gets into a strange state and the machine powers off. Right in the middle of whatever it is doing. There doesn't seem to be a fix for this, so I have a several thousand dollar 3GHz Pentium 4 super-notebook with reliability of zero. It doesn't matter which operating system I run, it crashes half an hour later. The only good thing about it is that it didn't come with a "Vista Capable" sticker on it, aside from that, it was a total waste of money, and the last Toshiba product I will ever buy, which is sad because they built good stuff for a long time.
There was a time that there was a healthy competition in the software world. Lots of operating systems, lots of compilers, lots of platforms. Being a development engineer meant choosing some platforms, and some compilers. Then you learned to be productive in that environment with those tools, and you worked for a while. If things changed (every several years) you updated your environment and tools. The window of opportunity for an environment and a tools set was several years, and even then things changed but not so much you couldn't cope.
While Microsoft used monopolistic practices to reduce the number of players, the number of platforms, an the number of compilers... They invented their own proprietary single sourced technology they call.NET, the purpose of which is to make all other programming systems obsolete and make us all slaves of Microsoft.
None of us can avoid noticing that programming books have become expensive, but in addition to that they have become version specific. By the time good books appear on any version of Microsoft development products, two beta versions of coming technology (which may or may not survive to be shipped) are in the hands of developers.
Being successful in software used to mean predicting the best platform, predicting the best language tools, coming up to speed, and developing a worthy product that could sell profitably before everything changed again. I call this understanding and taking advantage of the window of opportunity.
Because of the onslaught of new os and language tool/framework versions, there is no clear view on a window of opportunity for a platform/language in the commercial marketplace. Only people at Microsoft (if anyone) know which platform and which tools will come to fruition, will be released, will get support, and will last long enough to provide a stable environment for marketing, selling, and supporting a successful product.
Every time you turn around, Microsoft pushes an update that changes something important and causes trouble with third party software. This often causes third party vendors to have to struggle to release updates unexpectedly, requiring unexpected resources. Because Microsoft is the cause of the changes, they can do this whenever they like, warning their internal departments ahead of time about changes coming up.
Other platform suffer from this sort of thing, but no where near as badly as they occur on the Microsoft platforms. As I said, because good book barely arrive in time before things change, trying to buy the right materials to keep up is very expensive, and trying to comprehend the changes to the environment at the speed it changes is also nearly impossible. Microsoft has waves of teams producing waves of new versions and technologies. Changes come at you in sets like waves at the beach. It really takes teams of people and gobs of money to try to stay caught up, much less get ahead enough to see the next window of opportunity coming.
After many years of trying to understand how programmers and managers interact, I am reminded of something I learned in the service. Called the Theory of Completed Staff Work, the paper stated that managers delegate work, expect it to be completed, and want to hear I am done, or I need more resources. Real life development is much more complicated than this but most seasoned programmers want in their hearts to do a good job and provide what is needed. Incomplete specifications, creeping functionality, and unreasonable schedules, negotiated schedules where estimated ones would have been more appropriate. are the main hurdles to successful programmer management.
Actually I was trying to make a sort of joke, but I thank you for telling me what the technical term was for the kind of system the stock market it. I didn't know that and found that interesting. I had this idea that a polynomial with as many terms as there are stocks could be created with a core for each stock... and in some way might be useful. An approach that could only be taken practically with hardware of an unusually parallel nature. But limitations in my understanding of math and statistics keep me from doing more than guessing if something like this would have any value. I am looking forward to hearing some good ideas about just what thousands of core are good for. Thanks again.
With this much computing power one should be able to take advantage of higher math to determine when the optimal times are to invest in the stock market to take advantage of trends. Unfortunately, since things are headed downward, this technology can be used most efficiently to help you lose money at the optimum rates. Actually I have an idea, but have to work out with CUDA more before I know if it is real. Unfortunately trying to put these cards in Mac Pros is problematic. You would think Apple would have made a deal with NVIDIA to assure these cards could be run in Apple's fastest desktop, but no joy there. In fact it is a long and unhappy story trying to get Apple and CUDA superpower in the same box.
OK, say I work for $100K, that is all right. Now you want your apps in six weeks. May I assume that you will be providing a complete specification for the software that you want. That completely defines the inputs and outputs, and all of the screen interaction. The spec also includes exact screen shots of what each dialog will look like. I ask this because trying to implement half baked ideas in an environment like cocoa could drive a real software engineer mad. It is very troublesome to hack together software for this environment. You have to lay it out at design time, then code it up, and assure the implementation is correct. It also has to be efficient. If the clock starts on the six weeks the first time you mention your idea at lunch, that doesn't work for me. Programs proposed by people who don 't relate to things like common user interface standards, the difficulty of writing software that can be localized, creeping functionality.... All these things make 6 weeks shipping schedules a joke. I am a software engineer, not a hack. I spent decades learning to write reliable efficient software that meets a specification, and is maintainable. I didn't hear any of these values in your proposal.
I sold a nice flat panel recently. I offered it to a friend for 75% of the retail price because I had taken it out of the box. They bring over their computer, we plug everything in and prove the panel is functional and as lovely as I represented it to be. After an hour of fooling around over this, they offer me 40% of the retail price because there was a lower quality panel of the same size at Tigerdirect and they expected me to meet that price, although the panel was from a much better vendor and much higher quality. I held my ground and they paid the 75%. They didn't want the factory packaging and on the way home the panel got damaged rolling around in their trunk. The next day they call me and expect me to provide some kind of warranty service. I just think that it is a terrible way to make a living competing with high volume low margin internet vendors, or selling to friends for that matter. The experience killed the friendship, certainly wasn't worth the money, and taught me about consumer expectations when it comes to commodity pricing. This was my first and only experience of this kind, and the last one I want to have.
On the other hand my wife had an Internet gift business reselling popular collectibles, and we went out of business because an Internet competitor that was down the street from the manufacturer had a back-door deal and undercut us terribly. Their retail was lower than our wholesale, and we were approved vendors meeting the quantity requirements.
Between the economy and these kinds of problems, I don't know how anyone makes a living in retail sales these days, except the well funded big box/internet stores reselling high volume low margin imported junk, and of course paying the salespeople almost nothing.
I got involved with.NET right away when it started. I had been an MSDN universal licensee for two decades. I bought hundreds of dollars of books on.NET programming in Visual Basic, C#, C++, and Microsoft's Java. I Read them all, including everything I could find on IL, and the security implications of it all, including signing certificates. I spent years learning it, but despite all that, I think it's junk. You see I am a low-level kind of guy. I spent decades writing hardware control code and much of it was in assembly. You say accessing hardware was easy, but opening a serial port was not what I meant. Build a new board, with some interesting parts on it at a non-standard I/O address, that happens to use interrupts and DMA. Something unusual enough that you cannot simply subclass an existing device framework, not just another HID or SCSI chip. Then tell me about accessing hardware. You see,.NET works fine if all you want to do is throw up a dialog box, handle a few buttons, and access some Microsoft supplied database or API, but as soon as you get outside a very narrow box, you are on your own with little or no debug support in a complex world of ring transitions and virtual hardware drivers. What I don't like about.NET starts with the fact that you have to trust Microsoft to do the right job with the CLR. If your program doesn't work right, was it your hardware, your code, or some deep dark subtle problem in the Microsoft supplied proprietary runtime, part of the trusted computing environment, except that we are not trusted. Microsoft thinks they are the only ones who should be able to talk to the hardware, and we should float around in this happy.NET world were we only knit together modules they supply. They also have said publicly that Visual Basic is the best language for.NET and Windows programming. The way they have things set up these days, for most purposes that may be right (on Windows).
This is nothing like what programming is to me though. I am the kind of guy that sits down with the processor documentation and learns every instruction. I can visualize the states of the CPU, and can often guess what is wrong in situations where there is little or no debugging software or hardware available. This is the result of decades of low level programming on new processors for which in-circuit emulators aren't available yet for the speed of chips being used. I started writing embedded software when the EPROM in used with the 2716 and the processor was the 8085. I write calibration software for gaseous flowmeters and optical refractometers. I write applications that control laboratory instruments that purify proteins. I write encrypted communications software used by the military and the finance industry. My design for the SCSI interface become the industry standard. I have traveled the world customizing multitasking operating systems for Sony, IBM, Fujitsu, Siemens, ACT, Microdata, NEC, Compupro, Motorola, Shared Financial, Rite-aid... I program in assembler, Forth, Fortran, C/C++, Pascal, Modula, Python, and some languages weirder than those. Now ask me what good.NET can do for me. Unless I want to write the same old code one more time to bring up a dialog box and call a Microsoft database routine,.NET won't help me do anything that is cutting edge.
I am used to work ing with electrical engineers. They show me their schematics, then I help them write diagnostic software to help them prove the hardware is working right. I look at the schematics and figure out what the I/O addresses are and what bits need to be set to get interrupts to fire, and what is going wrong with the DMA. If Microsoft had their way, we would not be allowed to execute code written in assembler. In fact they already have operating system support to keep us from doing that very thing. Over my career, my job security came from my knowledge of the x86 processors and all the peripheral chips a
I am sure there are quite a few of us that had unknown roles in the birth of the personal computer industry. I for one wrote the driver for the BritePen (the first light pen for the Apple ][). Also I interfaced the Genie hard drive for the Apple ][. Knowing too little about stock, fortunes were made without me. But I am just like a million others who preferred to write code instead of attending MBA classes. I find this thread very painful though, and I feel bad for others who participated and didn't get remembered when things went right. Some of these stories about how the early Apple company treated people are not that different than what I have experienced recently. I could say that only the stock holders are doing well these days, but they aren't doing well. So who is making money at Apple now?
I was one of the longer holdouts, writing assembler long after C compilers got really good. This went on until the day I used the compiler switch to see the generated assembler code coming out of the compiler. Addressing modes I was aware of but had never bothered to use were accessing carefully aligned data items in a structure referenced off a base register. Several times I still wrote better code for specific routines, but overall the code generators are fantastic these days. If the profiler says you are wasting too much time in a specific routine, it might make more sense to find out why the compiler is not optimizing correctly, rather than counting the cycles of hand written code. Knowledge of assembly can help you use the C compiler more efficiently, but we are long time past the point where we should be coding large amounts of code, "by hand". Smarter people than I have spent hundreds of man years on the code generators, and I for one would like to leverage off that work.
I see that you have one month of experience in a single sourced proprietary language. You seem to have successfully stumbled through your first program which you have already released to customers, and now you feel confident enough to recommend this language to others. WOW. All I can say is that your program must have been so simple that it took little more than a few lines of code added to the hello world program to make you a success. Your story is just in line with what I hate about Microsoft's approach to programming. It is so Zen, programming without the need to know about programming. If you reduce the problem until it is pathetically simple, then it is not surprising you can write a pathetically simple program to solve it. But here is my question... Did you check any return codes (or enable exceptions)? Did you consider any of the possible things that could go wrong with your program and check for them all? What if the customer's machine is resource challenged? Did you code up the first design that came to mind? If writing code this way is so easy, where is your job security? The next person that comes along with a month to spare can replace you. After what I have said you may think I am an asshole. Maybe I am. You said c# showed no signs of being limited in anything you intended to do... As far as I can tell, c# is good at accessing.net components. The problem is (and this is true of most Microsoft programing) that in the end when you want to actually do something interesting, like accessing hardware, things will become extremely difficult and you will hate everything about managed code. Trusted computing is the bane of existence to real programmers. The day you have two years of experience in.NET you will become overqualified and may never be allowed to work again. I think I have said enough.
I bought a Mac Pro 8-core machine to learn multi-core programming, then I discovered NVIDIA CUDA programming and I am looking at buying a C1080 240-core GPU to learn to program that. The industry is manufacturing lots of multi-core devices, but programming (parallel) hasn't adapted to this new paradigm and provided the right tools to leverage off these new technologies.
I get that advanced graphics mean pushing the horsepower onto the GPU. I understood when 16 bit ISA cards were better. Then I understood when PCI cards were better. Then I understood when AGP cards were better. Then I understood when PCI express cards were better. Now I have to buy another computer again because PCI express 2 cards are better. It is not just a matter of Direct X specifications. Pushing the envelope makes it very expensive to keep up. I get it. I want the ultimate NVIDIA card with a GPU that has 4096 CUDA cores and 64GB of video ram. Can't we just go there now and get this over with. All this upgrading is making me tired. These electrical standards are boring. We need to start interfacing to peripherals via light instead of electricity. All cables need to be fibre. Oh yea, that's not good enough, then comes quantum... SCQI (small computer quantum interface). The landfills of our world are filling up with hardware that won't quite run our games.
Learning how to put these CUDA cores to work for more than games is a great new opportunity because each new NVIDIA card has more of these resources. Unfortunately this seems to be rocket science and just because engineers can build these boards doesn't mean that the software community is ready or able to design software that benefits from this architecture. When they do, things will get very interesting. Hardware people decided to go multicore because it was getting harder to go faster with uni-core processors. Software people got told they would have to write a different kind of software to stay competitive, and this area will be very important in the future. Actually it is right now. I noticed Dell is pushing 2.5 GHz quad core machines with six gigs of memory at Costco. I don't know how much of the contemporary software can properly utilize these cores, but time will tell. As the programming languages get built-in support for multi-core programming, things will improve. I noticed there is some nice support in Python.
Participation in developer programs is usually restricted to developers who have an existing application worthy to be ported to a new platform, and not for people like me who are still trying to come up with an idea for a good program. I didn't want to get something for nothing, I was willing to pay for a development machine.
Regarding emulators, I primarily compute on Apple Mac these days, and the emulator for the Mac was down-level. As a very experienced developer, I prefer to develop and test on the real target platform, otherwise I could miss something obvious such as button positions or resolution issues.
My ability to use the little green machine was hampered by lack of support for WPA. I use an Apple Airport as my wireless access point here, and it just never got enough support. I know how vulnerable WEP is and I was unwilling to open a WEP channel just to support the OLPC machine.
I didn't mind the G1G1 program because it helped get some machines moving in the right directions. It was a way for me to donate easily.
I was really put off by the security arrangements such as the developer key... I am not sure why they wanted to keep such ridgid control over the platform, but it made things more complicated when they were complicated enough from the start. I wanted everything to be more open... I thought that was the point.
I guess at this point I can admit that I really disliked sugar and wished for something that was more intuitive for me. They didn't really have to create something so different. It is like a huge case of NIH syndrome.
If you want me to give you my machine, I would want to hear more about why I should and who would benefit. Then I can make an informed decision. Having one made me feel like part of something wonderful that was going on. The current state of things and the intrusion of Microsoft into the situation has polluted that feeling.
I am still waiting to hear about what the chip costs to add the XO version of Windows. It may make a modestly useable netbook. I had vowed not to give Microsoft another penny, but we will see what happens.
I participated in the G1G1 program on the dual basis that I could write software for the platform, and I could do something nice for a third world child. It seems that Microsoft has outsmarted me again. The OLPC is a lousy Windows machine and not worthy of my time to develop software for. My idealistic hope to do something nice for a child has come to unknown results. I can only hope that some child used it to access the Internet for a while, and that in and of itself would have been valuable IMHO. Otherwise I guess I am the owner of an orphan green notebook computer that never was able to access my Apple Airport wifi router because of WPA problems that were never fixed. Keeping a WEP setup just for the OLPC is not worthwhile because of the security implications. As the french would say, se la merde. I am a switcher and no longer write software for Windows, other than accidental compatibility based on Python. I am disappointed I guess that things didn't work out better overall for OLPC, but at least I tried.
I know that it helps to put a message on your server that states it is private and not for public use if you expect the connectee to know that. If I had a server that welcomed the public, they might assume the unprotected contents, or materials under /pub were available. If you tell the public to keep out, and place files in a directory called "private" that happened to be unprotected, you could assert later it was not for public access, and you would at the very least be thought a fool for leaving your data laying around.
Laws that prevent spam faxes are based on the concept that connecting to your system without explicit permission could be wrong.
If you noticed some proprietary information on a server that was not protected, and you published the location of it, you would not be doing the owner a favor. But would you be breaking the law? The fact that someone placed data on an unprotected ackamai server could just mean that they placed their data using security through obscurity, and it was not meant to be public, even though it was poorly protected.
What do you think?
One can only hope the PIN wasn't the classic 1234. If so maybe he should change the combo on his luggage also.
Islam style finance does forbid interest, but it does allow sharing in the profits. There is just a different semantics for discussing it. If you read about it for several hours, you will start to understand, then as you continue, it will become less and less clear. It starts out very benevolent, then gradually comes back towards western banking as it compensates for economic realities.
There is really two things going on here. They are trying to build manycore GPUs and trying to produce commercially usable video cards at the same time. If they can do both successfully, it will be good for all of us, but solid hardware, and good drivers all across the board will be required. The new C1080 card has 240 cores and plugs into a PCI Express slot. Contemporary NVIDIA Video cards have less. This is the new game. A frame with four of these boards is now a supercomputer. I just wish I could get one of these into my Mac Pro (I must be dreaming).
I thought it would be fun to run an Apple server, seeing as I was running Apple desktops. Every time I launch into trying to use it seriously though, I get really frustrated. Although people may argue with me about this, I find it a lot like Windows Server. You turn everything on by default, and it seems to be working, for about a day then the error messages start piling up and you start to realize how little you know about what is going on under the hood and what has to be done to fix it. After a taste of Advanced configuration, you are ready for Basic, then you are wishing that machine was just running Leopard again because a linux server could so most of what you need. The podcast processing services on Server are neat, if you can figure out how to configure them properly. Aside from that, it is very unimpressive, IMHO.
Oh yea the GUI is NeXT but I think the reliability and efficiency of the OS is FreeBSD based, and I have yet to decide whether cocao is great or a great heap of "stuff". Macs sell to two kinds of users... Ones that like the GUI and ones that can't wait to get the command line up, and happen to like the GUI also. The Mac is a great Platform for development, except the parts that have to do with the Mac.
My last Toshiba was P35-S609. Even with the unit plugged in, after a while the battery gets into a strange state and the machine powers off. Right in the middle of whatever it is doing. There doesn't seem to be a fix for this, so I have a several thousand dollar 3GHz Pentium 4 super-notebook with reliability of zero. It doesn't matter which operating system I run, it crashes half an hour later. The only good thing about it is that it didn't come with a "Vista Capable" sticker on it, aside from that, it was a total waste of money, and the last Toshiba product I will ever buy, which is sad because they built good stuff for a long time.
Or the punitentury
While Microsoft used monopolistic practices to reduce the number of players, the number of platforms, an the number of compilers... They invented their own proprietary single sourced technology they call .NET, the purpose of which is to make all other programming systems obsolete and make us all slaves of Microsoft.
None of us can avoid noticing that programming books have become expensive, but in addition to that they have become version specific. By the time good books appear on any version of Microsoft development products, two beta versions of coming technology (which may or may not survive to be shipped) are in the hands of developers.
Being successful in software used to mean predicting the best platform, predicting the best language tools, coming up to speed, and developing a worthy product that could sell profitably before everything changed again. I call this understanding and taking advantage of the window of opportunity.
Because of the onslaught of new os and language tool/framework versions, there is no clear view on a window of opportunity for a platform/language in the commercial marketplace. Only people at Microsoft (if anyone) know which platform and which tools will come to fruition, will be released, will get support, and will last long enough to provide a stable environment for marketing, selling, and supporting a successful product.
Every time you turn around, Microsoft pushes an update that changes something important and causes trouble with third party software. This often causes third party vendors to have to struggle to release updates unexpectedly, requiring unexpected resources. Because Microsoft is the cause of the changes, they can do this whenever they like, warning their internal departments ahead of time about changes coming up.
Other platform suffer from this sort of thing, but no where near as badly as they occur on the Microsoft platforms. As I said, because good book barely arrive in time before things change, trying to buy the right materials to keep up is very expensive, and trying to comprehend the changes to the environment at the speed it changes is also nearly impossible. Microsoft has waves of teams producing waves of new versions and technologies. Changes come at you in sets like waves at the beach. It really takes teams of people and gobs of money to try to stay caught up, much less get ahead enough to see the next window of opportunity coming.
After many years of trying to understand how programmers and managers interact, I am reminded of something I learned in the service. Called the Theory of Completed Staff Work, the paper stated that managers delegate work, expect it to be completed, and want to hear I am done, or I need more resources. Real life development is much more complicated than this but most seasoned programmers want in their hearts to do a good job and provide what is needed. Incomplete specifications, creeping functionality, and unreasonable schedules, negotiated schedules where estimated ones would have been more appropriate. are the main hurdles to successful programmer management.
Actually I was trying to make a sort of joke, but I thank you for telling me what the technical term was for the kind of system the stock market it. I didn't know that and found that interesting. I had this idea that a polynomial with as many terms as there are stocks could be created with a core for each stock... and in some way might be useful. An approach that could only be taken practically with hardware of an unusually parallel nature. But limitations in my understanding of math and statistics keep me from doing more than guessing if something like this would have any value. I am looking forward to hearing some good ideas about just what thousands of core are good for. Thanks again.
With this much computing power one should be able to take advantage of higher math to determine when the optimal times are to invest in the stock market to take advantage of trends. Unfortunately, since things are headed downward, this technology can be used most efficiently to help you lose money at the optimum rates. Actually I have an idea, but have to work out with CUDA more before I know if it is real. Unfortunately trying to put these cards in Mac Pros is problematic. You would think Apple would have made a deal with NVIDIA to assure these cards could be run in Apple's fastest desktop, but no joy there. In fact it is a long and unhappy story trying to get Apple and CUDA superpower in the same box.
OK, say I work for $100K, that is all right. Now you want your apps in six weeks. May I assume that you will be providing a complete specification for the software that you want. That completely defines the inputs and outputs, and all of the screen interaction. The spec also includes exact screen shots of what each dialog will look like. I ask this because trying to implement half baked ideas in an environment like cocoa could drive a real software engineer mad. It is very troublesome to hack together software for this environment. You have to lay it out at design time, then code it up, and assure the implementation is correct. It also has to be efficient. If the clock starts on the six weeks the first time you mention your idea at lunch, that doesn't work for me. Programs proposed by people who don 't relate to things like common user interface standards, the difficulty of writing software that can be localized, creeping functionality.... All these things make 6 weeks shipping schedules a joke. I am a software engineer, not a hack. I spent decades learning to write reliable efficient software that meets a specification, and is maintainable. I didn't hear any of these values in your proposal.
On the other hand my wife had an Internet gift business reselling popular collectibles, and we went out of business because an Internet competitor that was down the street from the manufacturer had a back-door deal and undercut us terribly. Their retail was lower than our wholesale, and we were approved vendors meeting the quantity requirements.
Between the economy and these kinds of problems, I don't know how anyone makes a living in retail sales these days, except the well funded big box/internet stores reselling high volume low margin imported junk, and of course paying the salespeople almost nothing.
This is nothing like what programming is to me though. I am the kind of guy that sits down with the processor documentation and learns every instruction. I can visualize the states of the CPU, and can often guess what is wrong in situations where there is little or no debugging software or hardware available. This is the result of decades of low level programming on new processors for which in-circuit emulators aren't available yet for the speed of chips being used. I started writing embedded software when the EPROM in used with the 2716 and the processor was the 8085. I write calibration software for gaseous flowmeters and optical refractometers. I write applications that control laboratory instruments that purify proteins. I write encrypted communications software used by the military and the finance industry. My design for the SCSI interface become the industry standard. I have traveled the world customizing multitasking operating systems for Sony, IBM, Fujitsu, Siemens, ACT, Microdata, NEC, Compupro, Motorola, Shared Financial, Rite-aid... I program in assembler, Forth, Fortran, C/C++, Pascal, Modula, Python, and some languages weirder than those. Now ask me what good .NET can do for me. Unless I want to write the same old code one more time to bring up a dialog box and call a Microsoft database routine, .NET won't help me do anything that is cutting edge.
I am used to work ing with electrical engineers. They show me their schematics, then I help them write diagnostic software to help them prove the hardware is working right. I look at the schematics and figure out what the I/O addresses are and what bits need to be set to get interrupts to fire, and what is going wrong with the DMA. If Microsoft had their way, we would not be allowed to execute code written in assembler. In fact they already have operating system support to keep us from doing that very thing. Over my career, my job security came from my knowledge of the x86 processors and all the peripheral chips a
I am sure there are quite a few of us that had unknown roles in the birth of the personal computer industry. I for one wrote the driver for the BritePen (the first light pen for the Apple ][). Also I interfaced the Genie hard drive for the Apple ][. Knowing too little about stock, fortunes were made without me. But I am just like a million others who preferred to write code instead of attending MBA classes. I find this thread very painful though, and I feel bad for others who participated and didn't get remembered when things went right. Some of these stories about how the early Apple company treated people are not that different than what I have experienced recently. I could say that only the stock holders are doing well these days, but they aren't doing well. So who is making money at Apple now?
I was one of the longer holdouts, writing assembler long after C compilers got really good. This went on until the day I used the compiler switch to see the generated assembler code coming out of the compiler. Addressing modes I was aware of but had never bothered to use were accessing carefully aligned data items in a structure referenced off a base register. Several times I still wrote better code for specific routines, but overall the code generators are fantastic these days. If the profiler says you are wasting too much time in a specific routine, it might make more sense to find out why the compiler is not optimizing correctly, rather than counting the cycles of hand written code. Knowledge of assembly can help you use the C compiler more efficiently, but we are long time past the point where we should be coding large amounts of code, "by hand". Smarter people than I have spent hundreds of man years on the code generators, and I for one would like to leverage off that work.
I see that you have one month of experience in a single sourced proprietary language. You seem to have successfully stumbled through your first program which you have already released to customers, and now you feel confident enough to recommend this language to others. WOW. All I can say is that your program must have been so simple that it took little more than a few lines of code added to the hello world program to make you a success. Your story is just in line with what I hate about Microsoft's approach to programming. It is so Zen, programming without the need to know about programming. If you reduce the problem until it is pathetically simple, then it is not surprising you can write a pathetically simple program to solve it. But here is my question... Did you check any return codes (or enable exceptions)? Did you consider any of the possible things that could go wrong with your program and check for them all? What if the customer's machine is resource challenged? Did you code up the first design that came to mind? If writing code this way is so easy, where is your job security? The next person that comes along with a month to spare can replace you. After what I have said you may think I am an asshole. Maybe I am. You said c# showed no signs of being limited in anything you intended to do... As far as I can tell, c# is good at accessing .net components. The problem is (and this is true of most Microsoft programing) that in the end when you want to actually do something interesting, like accessing hardware, things will become extremely difficult and you will hate everything about managed code. Trusted computing is the bane of existence to real programmers. The day you have two years of experience in .NET you will become overqualified and may never be allowed to work again. I think I have said enough.
I haven't seen a JOSS compiler for a while.
I bought a Mac Pro 8-core machine to learn multi-core programming, then I discovered NVIDIA CUDA programming and I am looking at buying a C1080 240-core GPU to learn to program that. The industry is manufacturing lots of multi-core devices, but programming (parallel) hasn't adapted to this new paradigm and provided the right tools to leverage off these new technologies.
I get that advanced graphics mean pushing the horsepower onto the GPU. I understood when 16 bit ISA cards were better. Then I understood when PCI cards were better. Then I understood when AGP cards were better. Then I understood when PCI express cards were better. Now I have to buy another computer again because PCI express 2 cards are better. It is not just a matter of Direct X specifications. Pushing the envelope makes it very expensive to keep up. I get it. I want the ultimate NVIDIA card with a GPU that has 4096 CUDA cores and 64GB of video ram. Can't we just go there now and get this over with. All this upgrading is making me tired. These electrical standards are boring. We need to start interfacing to peripherals via light instead of electricity. All cables need to be fibre. Oh yea, that's not good enough, then comes quantum ... SCQI (small computer quantum interface). The landfills of our world are filling up with hardware that won't quite run our games.
When you want a paragraph break, put in a less than p more than tag and that will do the trick. HTML you know...