Ok. Enough is enough. I can only handle so much Katz. I think you guys at/. need to give this man a post limit. Say maybe one column a week. That way he might actually have enough time to edit his columns so that they are actually interesting instead of whine, whine, whine!
Yeah this happens to all of us from time to time. Running into major arcitecture decisions that are going to take a while to imlement but will be well worth it. The indecision over what we should "nuke and pave" and what we need to code to implement the rest of it. When I get in this predicament here is a list of the stuff I usualy do.
1. Clean your existing code: Yes this won't get any more done on your architecture problem, but is something that needs to be done anyway, and something I find usefull to clear my head before I take on other things.
2. Draw it out on paper: Too many times we start coding things without a true plan of where we are going. Doddle a little bit, and figure out a couple algorithms that you are going to need.
3. Surf the web for a while: Something everyone should take a break now and then to do. All code and no play makes Jack a dull boy.
4. Talk it over with someone: We as computer scientists tend to be a little high in the testosterone dept (and yes I know more that a couple of ladys out there who are guilty of this too). We all get a little egotistical, and don't think of talking our coding roadblocks over with our collegues. Even though your friends might not be able to provide you with any good advise, they can ususaly probe your mind in the right direction to where you can see the problem you need to fix.
Script kiddies are dumb, hackers are smart, and we need to exploit this. If full disclosure is made on both the exploit side and the source of the program being exploited, a hacker is always going to be able to write a patch before the script kiddie figures out how to implement the exploit.
By not releasing the source for parts of Exchange M$ shot itself in the foot by not letting the hackers get to hacking.
I was being sarcastic. Yeah, there is a long way to go in compiler technology. Check out the CMU cs dept. They are really pushing the limits on a lot of stuff lately. Especialy their proof checking systems that can verify if code is going to currupt something or not.
Don't we wish that all our *nix programs shared DLL files? Then we could have all kinds of code re-use. And when we uprade a DLL we can upgrade all the rest of the software that uses it. Just like Microsoft!!
Speech isn't all that great of a user interface. How would you like it if everyone in the office started blearing out"open netscape" "go to W W W . S L A S H D O T . O R G" and so on. If you ask me it would be rather annoying. I for one can click on menus a lot faster than I could tell a computer to do it out loud. Speech recognition is good for taking dictation in a word processor, but as a user interface it is far from the holy grail.
Oh gee! Look at these new web browser features that Microsoft made! Aren't they great. Look at all the cool stuff they do!
Two years down the road...
Darn Microsoft!!! They never released the API's to the general public. Now I am going to have to buy a new library of MFC(for Explorer) books, and I will have to use their nasty development tools. This sucks! And I can only implement them on servers running BabyBill_1 and BabyBill_2 software.
Read the article for once timmy boy. All it said was that they were working on the project, not that they were done. This is old news anyway. They have been doing this since 1998 when some rich guy baught it from Christies auction house in London. We watched a video on this in my math history class last semester. Pretty cool story. Monk turns it into a prayer book. Some how the book gets lost. The book ends up in a church in france somehow. They loose it and it turns up at Christie's. Some rich dude who doesn't wish to be named buys it and gets it restored.... cool stuff but they aren't done yet.
Any Palm gurus out there that could give some tips/would be willing to make an open source version of this? Props to whoever gets around to doing it first.
ERP is developing into somewhat of the "killer app" for anyone that has to manage a heterogeneous business distributed over a wide area. It takes away a lot of the resource management flunkies, and replaces them with software that is a lot easier to manage.
We have to understand that ERP is a broad catagory of software, and it is still in its early stages. Check out the issue of the April issue of the ACM
<http://www.acm.org/cacm/0400/0400toc.html>
Hopefully when ERP gets good we can eliminate half the government;)
Joe Shmoe: "Yes, I noticed a discrepency on my income tax return. I filed a complaint with the local Linux ERP server and it cleared the matter right up."
Ever hear of the Boing777 ? The jet engines were optimized by a GA. Three days worth of computations on a nice piece of hardware probably saved them three years of engineer research.
This is nothing new. More precicely the idea of evolutionary computation isn't new: 1.Abstract data
2.Make a population of abstractions with somewhat random values.
3. Evaluate each member of the population for it's "fitness" or how good of solution it is.
4. Merge together good solutions, mutate a few, and kill off the ones that suck.
5. while(not done) go_back_to_step_3();
6. output your solutions
"DNA" abstractions are nothing but binary(10110110) or quaternary(GATTACACCTTG). These suck compared to representing the possible solutions with different data structures. I you have a linked list of structs why should you take the time to recode it in binary when you can just tailor the mutation,combination,and evaluation functions to fit your data structure.
Genetic algorithms are old had. Try Evolutionary Programing. Basicaly the same idea, but be smart about it and use data structures that are easier to code instead of taking all the time to recode it in binary or GTACCGACTA.
This is more efficent to. You will have to do a lot less bounds checking because you are dealing with familiar data structures. Array[3][3] is a lot easier to dea with than "GATTACGAA"
It is time for me to start looking at grad schools, and I was wondering what your take is on some of the top AI grad schools out there that don't get the most credit. We all know about Stanford/MIT/Harvard/CarnigeMellon... but what are some grad schools out there that don't have the big name, but have a great AI program?
Establish WELL KNOWN backup sites. Large websites like Yahoo should probaly do this for cost reasons of operating a huge site, as opposed to having distributed ones. DNS registration is cheap, and if evey company that was worried about DOS attacks just had well established backup sites like foo.com, foo2.com, foo3.com, etc. they would have a cheap solution that would actually reduce some costs by having the load on their websites somewhat distributed. -The only reason I have a FAT32 partition is to mount it like the b1tch it is.
This my be a little off the thread of thought here, but why aren't there any one-time "dynamic" compilers. What I mean by this is a program that monitors watches another program run and then gives a detailed report of where the preformance problems in the code, which would be used for optimization.
Example: Load up your dynamic compiler and have it complile a program, lets say Quake. After comiling it just like gcc Quake would then load. The user then play Quake for a while to demonstrate normal usage; meanwhile the "dynamic" compiler would be taking notes in the background as to where 90% of the cpu time is spent. After the user is done playing Quake the "dynamic" compiler would look at the notes it just made and optimize those parts of the code that are a preformance bottleneck.
This would be a much better approach than optimizing blindly with no indication of where the optimization needs to be.
Although pulling out your BFG might be sped up by 30ns unrolling a couple loops it wouldn't be worth the extra size of the program. However a little loop used in rendering the background unrolled might make a huge preformence boost, that would more than justify the extra program size. How would a "static" compiler know this? It wouldn't because it doesn't know how the code is used in a real world situtaion.
So: 1. Are there any similar optimizing compilers out there? And where can I get my hands on one?
2. If there isn't one there should be an intiative to make one.
This my be a little off the thread of thought here, but why aren't there any one-time "dynamic" compilers. What I mean by this is a program that monitors watches another program run and then gives a detailed report of where the preformance problems in the code, which would be used for optimization. Example: Load up your dynamic compiler and have it complile a program, lets say Quake. After comiling it just like gcc Quake would then load. The user then play Quake for a while to demonstrate normal usage; meanwhile the "dynamic" compiler would be taking notes in the background as to where 90% of the cpu time is spent. After the user is done playing Quake the "dynamic" compiler would look at the notes it just made and optimize those parts of the code that are a preformance bottleneck.
This would be a much better approach than optimizing blindly with no indication of where the optimization needs to be.
Although pulling out your BFG might be sped up by 30ns unrolling a couple loops it wouldn't be worth the extra size of the program. However a little loop used in rendering the background unrolled might make a huge preformence boost, that would more than justify the extra program size. How would a "static" compiler know this? It wouldn't because it doesn't know how the code is used in a real world situtaion.
So: 1. Are there any similar optimizing compilers out there? And where can I get my hands on one?
2. If there isn't one there should be an intiative to make one.
Alpha: al'fa adjetive 1.The state of a product that is good enough to serve it's intended purpose, but still has enough defects that it would not be considered production quality.
--I think M12 would fit under this if they worked out enough bugs to make it preform at almost a production level. A.K.A. it can't crash very often for simple tasks, and the user interface has to be acceptable. If you build it they will come.
Tech people prefer two things in a job. RULE #1. It's fun RULE #2. It pays well
Now how does this apply to hourly/salry wages?
From RULE #1 we know that timecards are bad because we don't like to fill them out. It is a nucience and why should our employer care if I took a two hour break to play Quake3 Test?
From Rule #2 we know that people on salary who don't get overtime pay get really razzed.
Solution:
if salary then hourly if hourly then salary
or
Just give them a salary, and a bonus if they are clearly working hours above and beyond 40hrs a week. Duh.
Genetic Algorithms are a tool. Carpenters use hammers and engineers are starting to use GA's.
When a carpenter builds a house it is considered his, not his hammer's for the ingenious angles it allowed him to pound the nails.
When an engineer applies a Genetic Algorithm to a certain problem and comes up with a new and unique solution it is because of the engineer's ingenuity not the GA's.
To use a GA you have to model the attributes of what you are trying to optimize very well. This takes a lot of skill. For instance exactly how would you model a GA that started out with candels as an optimium solution and produced a lightbulb?
Score: Thomas Edison 1, GA 0.
GA's are just a search tool for finding optimum solutions to a problem. They still need people to set them up.
--Anything can be made to work if you fiddle with it long enough.(Wyszkouski)
Ok. Enough is enough. I can only handle so much Katz. I think you guys at /. need to give this man a post limit. Say maybe one column a week. That way he might actually have enough time to edit his columns so that they are actually interesting instead of whine, whine, whine!
Yeah this happens to all of us from time to time. Running into major arcitecture decisions that are going to take a while to imlement but will be well worth it. The indecision over what we should "nuke and pave" and what we need to code to implement the rest of it. When I get in this predicament here is a list of the stuff I usualy do.
:)
1. Clean your existing code: Yes this won't get any more done on your architecture problem, but is something that needs to be done anyway, and something I find usefull to clear my head before I take on other things.
2. Draw it out on paper: Too many times we start coding things without a true plan of where we are going. Doddle a little bit, and figure out a couple algorithms that you are going to need.
3. Surf the web for a while: Something everyone should take a break now and then to do. All code and no play makes Jack a dull boy.
4. Talk it over with someone: We as computer scientists tend to be a little high in the testosterone dept (and yes I know more that a couple of ladys out there who are guilty of this too). We all get a little egotistical, and don't think of talking our coding roadblocks over with our collegues. Even though your friends might not be able to provide you with any good advise, they can ususaly probe your mind in the right direction to where you can see the problem you need to fix.
5. Penguin Mints: Need I say more
I noticed AutoDesk's stock has took a nosedive in the past couple of days. I wonder if it has anything to do with this.
Script kiddies are dumb, hackers are smart, and we need to exploit this. If full disclosure is made on both the exploit side and the source of the program being exploited, a hacker is always going to be able to write a patch before the script kiddie figures out how to implement the exploit.
By not releasing the source for parts of Exchange M$ shot itself in the foot by not letting the hackers get to hacking.
I was being sarcastic. Yeah, there is a long way to go in compiler technology. Check out the CMU cs dept. They are really pushing the limits on a lot of stuff lately. Especialy their proof checking systems that can verify if code is going to currupt something or not.
Check this out. The Borg to exist at the University of Mass Amherst ;)
Mr. Borg himelf
Don't we wish that all our *nix programs shared DLL files? Then we could have all kinds of code re-use. And when we uprade a DLL we can upgrade all the rest of the software that uses it. Just like Microsoft!!
Speech isn't all that great of a user interface. How would you like it if everyone in the office started blearing out"open netscape" "go to W W W . S L A S H D O T . O R G" and so on. If you ask me it would be rather annoying. I for one can click on menus a lot faster than I could tell a computer to do it out loud. Speech recognition is good for taking dictation in a word processor, but as a user interface it is far from the holy grail.
Oh gee! Look at these new web browser features that Microsoft made! Aren't they great. Look at all the cool stuff they do!
Two years down the road...
Darn Microsoft!!! They never released the API's to the general public. Now I am going to have to buy a new library of MFC(for Explorer) books, and I will have to use their nasty development tools. This sucks! And I can only implement them on servers running BabyBill_1 and BabyBill_2 software.
Read the article for once timmy boy. All it said was that they were working on the project, not that they were done. This is old news anyway. They have been doing this since 1998 when some rich guy baught it from Christies auction house in London. We watched a video on this in my math history class last semester. Pretty cool story. Monk turns it into a prayer book. Some how the book gets lost. The book ends up in a church in france somehow. They loose it and it turns up at Christie's. Some rich dude who doesn't wish to be named buys it and gets it restored.... cool stuff but they aren't done yet.
The Univeristy of Mass. (Amherst) has been doing some cool stuff with 3D modeling of images too. Check it out.
Ascender II Project
Laugh. It was a joke.
Any Palm gurus out there that could give some tips/would be willing to make an open source version of this? Props to whoever gets around to doing it first.
...need I say more :)
http://asp2php.naken.cc/
ERP is developing into somewhat of the "killer app" for anyone that has to manage a heterogeneous business distributed over a wide area. It takes away a lot of the resource management flunkies, and replaces them with software that is a lot easier to manage.
;)
We have to understand that ERP is a broad catagory of software, and it is still in its early stages. Check out the issue of the April issue of the ACM
<http://www.acm.org/cacm/0400/0400toc.html>
Hopefully when ERP gets good we can eliminate half the government
Joe Shmoe: "Yes, I noticed a discrepency on my income tax return. I filed a complaint with the local Linux ERP server and it cleared the matter right up."
Ever hear of the Boing777 ? The jet engines were optimized by a GA. Three days worth of computations on a nice piece of hardware probably saved them three years of engineer research.
This is nothing new. More precicely the idea of evolutionary computation isn't new:
1.Abstract data
2.Make a population of abstractions with somewhat random values.
3. Evaluate each member of the population for it's "fitness" or how good of solution it is.
4. Merge together good solutions, mutate a few, and kill off the ones that suck.
5. while(not done)
go_back_to_step_3();
6. output your solutions
"DNA" abstractions are nothing but binary(10110110) or quaternary(GATTACACCTTG). These suck compared to representing the possible solutions with different data structures. I you have a linked list of structs why should you take the time to recode it in binary when you can just tailor the mutation,combination,and evaluation functions to fit your data structure.
Genetic algorithms are old had. Try Evolutionary Programing. Basicaly the same idea, but be smart about it and use data structures that are easier to code instead of taking all the time to recode it in binary or GTACCGACTA.
This is more efficent to. You will have to do a lot less bounds checking because you are dealing with familiar data structures. Array[3][3] is a lot easier to dea with than "GATTACGAA"
It is time for me to start looking at grad schools, and I was wondering what your take is on some of the top AI grad schools out there that don't get the most credit.
We all know about Stanford/MIT/Harvard/CarnigeMellon... but what are some grad schools out there that don't have the big name, but have a great AI program?
Establish WELL KNOWN backup sites. Large websites like Yahoo should probaly do this for cost reasons of operating a huge site, as opposed to having distributed ones. DNS registration is cheap, and if evey company that was worried about DOS attacks just had well established backup sites like foo.com, foo2.com, foo3.com, etc. they would have a cheap solution that would actually reduce some costs by having the load on their websites somewhat distributed. -The only reason I have a FAT32 partition is to mount it like the b1tch it is.
This my be a little off the thread of thought here, but why aren't there any one-time "dynamic" compilers. What I mean by this is a program that monitors watches another program run and then gives a detailed report of where the preformance problems in the code, which would be used for optimization.
Example: Load up your dynamic compiler and have it complile a program, lets say Quake. After comiling it just like gcc Quake would then load. The user then play Quake for a while to demonstrate normal usage; meanwhile the "dynamic" compiler would be taking notes in the background as to where 90% of the cpu time is spent. After the user is done playing Quake the "dynamic" compiler would look at the notes it just made and optimize those parts of the code that are a preformance bottleneck.
This would be a much better approach than optimizing blindly with no indication of where the optimization needs to be.
Although pulling out your BFG might be sped up by 30ns unrolling a couple loops it wouldn't be worth the extra size of the program. However a little loop used in rendering the background unrolled might make a huge preformence boost, that would more than justify the extra program size. How would a "static" compiler know this? It wouldn't because it doesn't know how the code is used in a real world situtaion.
So:
1. Are there any similar optimizing compilers out there? And where can I get my hands on one?
2. If there isn't one there should be an intiative to make one.
This my be a little off the thread of thought here, but why aren't there any one-time "dynamic" compilers. What I mean by this is a program that monitors watches another program run and then gives a detailed report of where the preformance problems in the code, which would be used for optimization.
Example: Load up your dynamic compiler and have it complile a program, lets say Quake. After comiling it just like gcc Quake would then load. The user then play Quake for a while to demonstrate normal usage; meanwhile the "dynamic" compiler would be taking notes in the background as to where 90% of the cpu time is spent. After the user is done playing Quake the "dynamic" compiler would look at the notes it just made and optimize those parts of the code that are a preformance bottleneck.
This would be a much better approach than optimizing blindly with no indication of where the optimization needs to be.
Although pulling out your BFG might be sped up by 30ns unrolling a couple loops it wouldn't be worth the extra size of the program. However a little loop used in rendering the background unrolled might make a huge preformence boost, that would more than justify the extra program size. How would a "static" compiler know this? It wouldn't because it doesn't know how the code is used in a real world situtaion.
So:
1. Are there any similar optimizing compilers out there? And where can I get my hands on one?
2. If there isn't one there should be an intiative to make one.
Alpha: al'fa adjetive 1.The state of a product that is good enough to serve it's intended purpose, but still has enough defects that it would not be considered production quality.
--I think M12 would fit under this if they worked out enough bugs to make it preform at almost a production level. A.K.A. it can't crash very often for simple tasks, and the user interface has to be acceptable. If you build it they will come.
Tech people prefer two things in a job.
RULE #1. It's fun
RULE #2. It pays well
Now how does this apply to hourly/salry wages?
From RULE #1 we know that timecards are bad because we don't like to fill them out. It is a nucience and why should our employer care if I took a two hour break to play Quake3 Test?
From Rule #2 we know that people on salary who don't get overtime pay get really razzed.
Solution:
if salary
then hourly
if hourly
then salary
or
Just give them a salary, and a bonus if they are clearly working hours above and beyond 40hrs a week. Duh.
Genetic Algorithms are a tool. Carpenters use hammers and engineers are starting to use GA's.
When a carpenter builds a house it is considered his, not his hammer's for the ingenious angles it allowed him to pound the nails.
When an engineer applies a Genetic Algorithm to a certain problem and comes up with a new and unique solution it is because of the engineer's ingenuity not the GA's.
To use a GA you have to model the attributes of what you are trying to optimize very well. This takes a lot of skill. For instance exactly how would you model a GA that started out with candels as an optimium solution and produced a lightbulb?
Score: Thomas Edison 1, GA 0.
GA's are just a search tool for finding optimum solutions to a problem. They still need people to set them up.
--Anything can be made to work if you fiddle with it long enough.(Wyszkouski)
The doj is messed up.