I worked on Penguin's HPC offering a few years back. It PXE boots all of the compute nodes in a lightweight manner, and builds the entire cluter into a single process space. Distributed process space means that a signal sent to a parent process running on one node gets correctly forwarded to a child process running on another. You will not find an easier way to manage the cluster than Scyld.
http://www.penguincomputing.com/software
It can install on top of Red Hat Enterprise Linux or the Comparable CentOS
Disclaimer, I worked on the produce for a number of years. I now work at a different Linux company...
Scyld is built on top of Red Hat EL, can also run with CentOS, but uses a custom Kernel. It has a lightweight provisioning mechanism that makes maintenance of compute nodes very easy, and the single system image approach makes job management significantly easier than a traditional Beowulf cluster. I don't know if they test it out with Scientific Linux these days.
" Within those parts, an octet may be represented by the chararacter which has that octet as its code within the US-ASCII [20] coded character set. In addition, octets may be encoded by a character triplet consisting of the character "%" followed by the two hexadecimal digits (from "0123456789ABCDEF") which forming the hexadecimal value of the octet. (The characters "abcdef" may also be used in hexadecimal encodings.)"
So A-Z and %ddd Just ain't gonna cut it.
Currently URLs are in the ASCII subset of utf-8. What are they going to be in in the future?
What about languages that go from right to left like Hebrew and Arabic?
Big Fan of PXE and kickstart for deploying development machines and Yum/Apt for deploying code.
1. Use PXE as a way to get an install running as quickly as possible. Do a minimal install to get the machine up and on the network. 2. Use Yum, Apt or Yast according to your distro to install everything required to support your development and application stack. 3. Your code should be done as a package (RPM/Deb). Yes, even for web stuff. If you customize your Apache install, that should be a package, too. 4. Use Subversion. CVS makes me sad, because it isn't Subversion. 5. Have a build environment that pulls your code out of subversion and builds it for QA. A package that is built here is what will be pushed live.
The bottom line is make it as easy as possible to reproduce your environment.
And back everything up over the network to a server in another state. Prefereablle, two different servers, at least one on another coast.
Lava Tours is my brother-in-law's company, and I am doing my part to spread the word. I've only been out riding once with him, but it was a great ride.
Actually, Repositories don't really match to this, but Relational Views (ATG's previos O/R mapping) do, and certainly predate the filing of this patent. Relational views is the earliest implemntation I am aware of that automatically generated the objects used to do a mapping from a database schema to Java objects, and used reflextion to assign the values.
Ah, but what you are missing is that your program only spends 4% in kernel space because of how well tuned the kernel is.
We are curently doing some work on the sys_open function in hte linux kernel. When we screw it up, it takes so long for a machine to boot, it looks like it has frozen. This is because the loader often tries to find the correct location for a library via brute force: "OK, I'll try/lib/libmything.so. Nope, ok how about/ib/tls/libmything.so? Nope, ok..." If sys_open does not fail fast, the system does not find libraries in a timely manner, human sacrifice, dogs and cats living together, mass hysteria.
It should only spend 4% in user kernel space, because the real work is to be done in user space, and kernel space is administrative overhead as far as your program is concerned. But the same is true of everyone's program. If there are 500 process on the system, and each spend 4% in Kernel space, a much greater speed up comes from optimizing the kernel space code than any one particular program. A 1% slowdown perprogram time 500 programs becomes a 500% slowdown in...wait, somewhere my math go weird. Anyway...
The same goes for profiling and optimizing your own apps. Profile to find out where you are spending the most time, optimize those functions first. We know that the kernel code is going to get exercized heavily. So this is where we need to optimize.
I think a great example of the value of open source is shown by what happened with Environmental variables. Sun made the unilateral decision to get rid of them because they were not supported on OS pre X. It took From versions 1.2 to 1.5 to finally get them put back in the system, even though there was always the -D work around, and the Mac has had them since X came out. With a community design, the more vocal majority would have forced the issue to come to a head time and time again until the feature just got left alone like it should have.
Not a guarantee, mind you, but certainly a better approach than what happened.
Now can I get rid of all those Shell script wrappers?
JBoss is Open Source, and has been since the get go. It is released under the GPL. I like even for straight web apps because it's deployment mechanism works some much better than just straight Tomcat.
Apaches J2EE server, Geronimo, is a late comer to the scene. There was also a point where GPL code from JBoss ended up in Geronimo, which allowed code to be closed source; The JBoss folks took exception to this.
Oracle's app server is fairly weak from all reports. Orion was a decent product once, but has gone down hill under Oracle. This is hearsay, take it as such. I've never used it.
Maybe Redhat will finally get some decent JBoss RPMs built that deploy it in a logical directory. I know that was something that irked me back a few years ago when I worked with it.
Hmmm. Well, QBE certainly does have its place. I'll concede the point that it was not the QBE UI that was messing up my query. It was the mechanism saving nd restoring queries that was broken.
I wasn't really doing anything that wonky, just something I couldn't figure out how to do using QBE.
Disclaimer: I am a programmer. I now do Linux stuff, before I did Java and Oracle stuff, so I do not claim to be unbiased.
At a previous job, back when I was a contractor doing Java/Web stuff, my boss asked me, "Do you know access?" It is a fairly simple database program, I'd done some work with it beofre, so I said, "Yes" and got pulled into a new project. They were doing reporting of customer data stored on servers and there was no real system in place to pull this infomration out of reports.
I took the Comma Separated Value (CSV) formatted report and imported it into Access, and proceeded to try to pull together the desired information. I switched over to SQL view to write the non-trivial queires directly, and go something working. When I saved and restored the program. Acces had rewritten my queries, and written them into a format that it could not process. This was valid SQL that had already been proven to execute against the Jet engine, (I think it was Jet, might be newer) but the front end tried to force back into something it could process via the Query By Example (QBE) interface. At that point, I moved the project onto PostGRES and worked with a Java based web front end to build the reporting solution.
A great reference for design in these types of applications is Enterprise Integration Patterns By Gregor Hohpe and Bobby Wolfe. Some of the paterns contained provide methods that you can use to debug and trace such appliactions.
Typically, these apps deal with messages as the primary unit of transport. You have kind of a heisenberg uncertainty principle in effect, as you can tell where a given message is in the system, or what the flows of through a given point of the system, but it is hard to tell both. And the at of monitoring a system can often affect timing, and change behavior.
One thing you can do with messages is put proxies in place that allow you to log every message delivered to a given componenet. Other tricks are to add routing slips to messages that indicate what componenets they have passed through, but this might not be possible to introduce into an existing system.
Network tracking tools are invaluable, netstat and tcpdump are your friends. Or whatever tools work with your particular network stack.
The post about Turbo Pascal made me realize one of the key tools for learning programming, a good IDE. While I agree that learning a program from the ground up using vi/emacs and the command line compiler is a valuable experience, there is nothing like a good intergrated debugger and statement completion to aid you on your way to understanding.
My advice, download eclipse and get yourself a copy of Bruce Eckel's "Thinking in Java."
I originally learned on a C-64, moved to Pascal in highschool using a line editor and UCSD Pascal on an Apple IIe. In College, I got Turbo Pascal and the added advantage was extreme. There is nothing like stepping through your code in a debugger to really understand how it works. There were still a lot of things I didn't understand, the big one being memory management.
Once you learn thingsd in a high level language like Java, you can move down into the nuts and bolts of memory mangement, pointer math, and all those things you need to know to poke at the operating system.
At the same time, you might want to learn a scripting language. I tent to use Bash a lot, and it is not a bad place to start.
One of the most useful courses I took in college was comparative programming languages, where we learned how to learn a new language. But to get there, you need somewhere to start, and I would advise Java. It is designed for inexperienced programmers, and yet for accomplishing serious programming tasks. Once you know a language that has training wheels, you can take them off and attack things in C and assembly.
The reason I found this news article was because I was looking to see if anyone was making a musical version of it because I have been writing one. Honestly. I have the vast majority of the Lyrics written, and a bunch of songs. That being said, I am still thrilled. I really want to see this.
By the way, if you guys are going to qutoe the movie, you have to come up with some of the better, more obscure quotes:
It's not my fault being the biggest and the Strongest. I don't even exercize.
Get some rest, if you haven't got your health, you haven't go anything.
I have no Gate Key Fezzik, tear his arms off. Oh, you mean this gate key?
(You have to listen close for this one) I am waiting for Vizzini You really are a meany. Fezzik its you! That's true.
Don't feel too bad, it wasn't available last year, as far as I could find. It may show an earlier publishing date (I didn't look) but I looked fairly hard last year and it wasn't available.
Yes, Soldiers should follow lawful orders. No argument there.
No, all citizens of a freee country should not be brought to the point where they follow orders, lawful or otherwise, just because they are orders. There is a place for civili disobediance, and it is far more likely to happen when people are not trained to follow orders.
It would not be healthy for America if we had unversal public service. It would rob us of an essential independence.
I was in the Army, and was an officer. I am well versed in the concept of a legal order. An order can be both legal and dumb.
I don't think it is healthy for the citizens of a free country to be beaten into submission as is done to people in basic training. Yes, we need people, good people, in our armed forces. We also need people in our society that have nothing to do with the military.
BTW, my outfit was the United States Military Academy at West Point. Class of 1993. And I'll be damned if I agree with anyone that says that unit is of lower calibre (I like your British spelling) than any unit in the Military.
I worked on Penguin's HPC offering a few years back. It PXE boots all of the compute nodes in a lightweight manner, and builds the entire cluter into a single process space. Distributed process space means that a signal sent to a parent process running on one node gets correctly forwarded to a child process running on another. You will not find an easier way to manage the cluster than Scyld.
http://www.penguincomputing.com/software
It can install on top of Red Hat Enterprise Linux or the Comparable CentOS
Disclaimer, I worked on the produce for a number of years. I now work at a different Linux company...
Scyld is built on top of Red Hat EL, can also run with CentOS, but uses a custom Kernel. It has a lightweight provisioning mechanism that makes maintenance of compute nodes very easy, and the single system image approach makes job management significantly easier than a traditional Beowulf cluster. I don't know if they test it out with Scientific Linux these days.
Thee current RFC 1738 http://www.faqs.org/rfcs/rfc1738.html Only allows URLs to be composed of
" Within those parts, an octet may be represented by the chararacter which has that octet as its code within the US-ASCII [20] coded character set. In addition, octets may be encoded by a character triplet consisting of the character "%" followed by the two hexadecimal digits (from "0123456789ABCDEF") which forming the hexadecimal value of the octet. (The characters "abcdef" may also be used in hexadecimal encodings.)"
So A-Z and %ddd Just ain't gonna cut it.
Currently URLs are in the ASCII subset of utf-8. What are they going to be in in the future?
What about languages that go from right to left like Hebrew and Arabic?
OK, someone with artistic ability really needs to draw this.
Yes, What happens when the robot decides it is time to go and reclaim its eye and hand.
Except that SQL did origianlly stand for Structured Query Language. It makes sense when you realized it came out of IBM.
And yes, IHBT.
Big Fan of PXE and kickstart for deploying development machines and Yum/Apt for deploying code.
1. Use PXE as a way to get an install running as quickly as possible. Do a minimal install to get the machine up and on the network.
2. Use Yum, Apt or Yast according to your distro to install everything required to support your development and application stack.
3. Your code should be done as a package (RPM/Deb). Yes, even for web stuff. If you customize your Apache install, that should be a package, too.
4. Use Subversion. CVS makes me sad, because it isn't Subversion.
5. Have a build environment that pulls your code out of subversion and builds it for QA. A package that is built here is what will be pushed live.
The bottom line is make it as easy as possible to reproduce your environment.
And back everything up over the network to a server in another state. Prefereablle, two different servers, at least one on another coast.
Lava Tours is my brother-in-law's company, and I am doing my part to spread the word. I've only been out riding once with him, but it was a great ride.
Lisa, in this house we obey the laws of thermodynamics.
Actually, Repositories don't really match to this, but Relational Views (ATG's previos O/R mapping) do, and certainly predate the filing of this patent. Relational views is the earliest implemntation I am aware of that automatically generated the objects used to do a mapping from a database schema to Java objects, and used reflextion to assign the values.
Ah, but what you are missing is that your program only spends 4% in kernel space because of how well tuned the kernel is.
/lib/libmything.so. Nope, ok how about /ib/tls/libmything.so? Nope, ok..." If sys_open does not fail fast, the system does not find libraries in a timely manner, human sacrifice, dogs and cats living together, mass hysteria.
We are curently doing some work on the sys_open function in hte linux kernel. When we screw it up, it takes so long for a machine to boot, it looks like it has frozen. This is because the loader often tries to find the correct location for a library via brute force: "OK, I'll try
It should only spend 4% in user kernel space, because the real work is to be done in user space, and kernel space is administrative overhead as far as your program is concerned. But the same is true of everyone's program. If there are 500 process on the system, and each spend 4% in Kernel space, a much greater speed up comes from optimizing the kernel space code than any one particular program. A 1% slowdown perprogram time 500 programs becomes a 500% slowdown in...wait, somewhere my math go weird. Anyway...
The same goes for profiling and optimizing your own apps. Profile to find out where you are spending the most time, optimize those functions first. We know that the kernel code is going to get exercized heavily. So this is where we need to optimize.
I think a great example of the value of open source is shown by what happened with Environmental variables. Sun made the unilateral decision to get rid of them because they were not supported on OS pre X. It took From versions 1.2 to 1.5 to finally get them put back in the system, even though there was always the -D work around, and the Mac has had them since X came out. With a community design, the more vocal majority would have forced the issue to come to a head time and time again until the feature just got left alone like it should have.
Not a guarantee, mind you, but certainly a better approach than what happened.
Now can I get rid of all those Shell script wrappers?
Adam
JBoss is Open Source, and has been since the get go. It is released under the GPL. I like even for straight web apps because it's deployment mechanism works some much better than just straight Tomcat.
Apaches J2EE server, Geronimo, is a late comer to the scene. There was also a point where GPL code from JBoss ended up in Geronimo, which allowed code to be closed source; The JBoss folks took exception to this.
Oracle's app server is fairly weak from all reports. Orion was a decent product once, but has gone down hill under Oracle. This is hearsay, take it as such. I've never used it.
Maybe Redhat will finally get some decent JBoss RPMs built that deploy it in a logical directory. I know that was something that irked me back a few years ago when I worked with it.
Hmmm. Well, QBE certainly does have its place. I'll concede the point that it was not the QBE UI that was messing up my query. It was the mechanism saving nd restoring queries that was broken.
I wasn't really doing anything that wonky, just something I couldn't figure out how to do using QBE.
Disclaimer: I am a programmer. I now do Linux stuff, before I did Java and Oracle stuff, so I do not claim to be unbiased.
At a previous job, back when I was a contractor doing Java/Web stuff, my boss asked me, "Do you know access?" It is a fairly simple database program, I'd done some work with it beofre, so I said, "Yes" and got pulled into a new project. They were doing reporting of customer data stored on servers and there was no real system in place to pull this infomration out of reports.
I took the Comma Separated Value (CSV) formatted report and imported it into Access, and proceeded to try to pull together the desired information. I switched over to SQL view to write the non-trivial queires directly, and go something working. When I saved and restored the program. Acces had rewritten my queries, and written them into a format that it could not process. This was valid SQL that had already been proven to execute against the Jet engine, (I think it was Jet, might be newer) but the front end tried to force back into something it could process via the Query By Example (QBE) interface. At that point, I moved the project onto PostGRES and worked with a Java based web front end to build the reporting solution.
That, so me, is a poor user interface.
A great reference for design in these types of applications is Enterprise Integration Patterns By Gregor Hohpe and Bobby Wolfe. Some of the paterns contained provide methods that you can use to debug and trace such appliactions. Typically, these apps deal with messages as the primary unit of transport. You have kind of a heisenberg uncertainty principle in effect, as you can tell where a given message is in the system, or what the flows of through a given point of the system, but it is hard to tell both. And the at of monitoring a system can often affect timing, and change behavior. One thing you can do with messages is put proxies in place that allow you to log every message delivered to a given componenet. Other tricks are to add routing slips to messages that indicate what componenets they have passed through, but this might not be possible to introduce into an existing system. Network tracking tools are invaluable, netstat and tcpdump are your friends. Or whatever tools work with your particular network stack.
The post about Turbo Pascal made me realize one of the key tools for learning programming, a good IDE. While I agree that learning a program from the ground up using vi/emacs and the command line compiler is a valuable experience, there is nothing like a good intergrated debugger and statement completion to aid you on your way to understanding.
My advice, download eclipse and get yourself a copy of Bruce Eckel's "Thinking in Java."
I originally learned on a C-64, moved to Pascal in highschool using a line editor and UCSD Pascal on an Apple IIe. In College, I got Turbo Pascal and the added advantage was extreme. There is nothing like stepping through your code in a debugger to really understand how it works. There were still a lot of things I didn't understand, the big one being memory management.
Once you learn thingsd in a high level language like Java, you can move down into the nuts and bolts of memory mangement, pointer math, and all those things you need to know to poke at the operating system.
At the same time, you might want to learn a scripting language. I tent to use Bash a lot, and it is not a bad place to start.
One of the most useful courses I took in college was comparative programming languages, where we learned how to learn a new language. But to get there, you need somewhere to start, and I would advise Java. It is designed for inexperienced programmers, and yet for accomplishing serious programming tasks. Once you know a language that has training wheels, you can take them off and attack things in C and assembly.
Good Luck, and may the source be with you.
I didn't mean to be.
I guess that I should call it dead.
OK, OK, I think we're done
He is just trying to Annoy ...
The reason I found this news article was because I was looking to see if anyone was making a musical version of it because I have been writing one. Honestly. I have the vast majority of the Lyrics written, and a bunch of songs. That being said, I am still thrilled. I really want to see this.
By the way, if you guys are going to qutoe the movie, you have to come up with some of the better, more obscure quotes:
It's not my fault being the biggest and the Strongest. I don't even exercize.
Get some rest, if you haven't got your health, you haven't go anything.
I have no Gate Key
Fezzik, tear his arms off.
Oh, you mean this gate key?
(You have to listen close for this one)
I am waiting for Vizzini
You really are a meany.
Fezzik its you!
That's true.
Don't feel too bad, it wasn't available last year, as far as I could find. It may show an earlier publishing date (I didn't look) but I looked fairly hard last year and it wasn't available.
That test sucked. Hard. I still have the hickey.
Yes, Soldiers should follow lawful orders. No argument there.
No, all citizens of a freee country should not be brought to the point where they follow orders, lawful or otherwise, just because they are orders. There is a place for civili disobediance, and it is far more likely to happen when people are not trained to follow orders.
It would not be healthy for America if we had unversal public service. It would rob us of an essential independence.
I was in the Army, and was an officer. I am well versed in the concept of a legal order. An order can be both legal and dumb.
I don't think it is healthy for the citizens of a free country to be beaten into submission as is done to people in basic training. Yes, we need people, good people, in our armed forces. We also need people in our society that have nothing to do with the military.
BTW, my outfit was the United States Military Academy at West Point. Class of 1993. And I'll be damned if I agree with anyone that says that unit is of lower calibre (I like your British spelling) than any unit in the Military.