I have issues with the idea that the boss dude is a stick-in-the-mud and needs educatin' on how to run his business.
For the boss dude, the company and its product is his life and he is stuck with what happens to it. He hired you because, well, you could be off doing your own business and your own software package in whatever language you desire, but you decided to work for The Man, and for all you know and all the boss dude knows, you could be a life-long partner in the business or you could be here today and have taken off for greener pastures tomorrow. He is the captain of that submarine (small boat, small crew, great level of autonomy from Navy HQ), and for all I know you are the XO, but that boat has to have only one captain. So folks to start calling this guy Captain Queeg is a little premature.
Another side of the coin is the software engineering version of the Hippocratic oath of do no harm -- the engineering version is first get a lay of the land, how the customer operates, what the system is supposed to do before you go rip-roaring making changes. The customer could be an accounting department using an app developed by you in information systems -- you first see how the accountants are used to doing their work and what the automated system is supposed to replace. The customer in your case is the boss dude.
The story you are telling about the micro-managing boss and the reluctant employee could be the overbearing professor and the meek graduate student. One professor asked that the project be done using unStallman-worthy Java/Swing for the data graphics front end with a JNI link to C++ to do the heavy numeric lifting. The student goes off and codes stuff in C++/Qt. Another professor has the graphical front end done in Java/Swing but with a hand-coded GUI and a student comes along insisting that the thing be redone in the NetBeans GUI designer and sets the project back an entire semester while he is dinking around with the thing.
The point is not to debate the merits of Swing vs SWT, pure FOSS vs Java, VB vs everything else. The point is that the boss dude is ultimately responsible while you are the hired hand, and if the boss dude wasn't overbearing for insisting on VB, he would be overbearing for insisting on Swing, or overbearing for insisting on anything.
I don't think the rocket remark was entirely in jest. The big cost of a rocket is not the fuel -- it is all the everything else disposable or in the case of the Shuttle reusable at tremendous cost.
We are barely there with current materials technology for a SSTO fully reusable rocket while we are orders of magnitude off on the Space Elevator. Don't you think that long before the space elevator material is in hand we will have strong, light composites for building a single-stage rocket with a very high fuel mass fraction?
The Space Elevator may be more energy efficient than the SSTO rocket, but being that the cost of energy is not the hangup and being that the SSTO benefits from the same materials technology that benefits the Space Elevator but sooner, I am saying SSTO is the way to go.
Once concern I have about fusion is that long before it is commercially feasible for electric power, it will be a powerful neutron source for, dunno, making plutonium.
I guess a device that requires funding and the best scientists from all over Europe, U.S., and India is not going to some rogue state or into some terrorist camp. On the other hand, the big sticking point for fission power is plutonium and proliferation, and a fusion reactor would be one powerful source of neutrons. If a working fusion reactor is developed, are you going to say Country A is allowed to have one but Country B is not because they are going to sneak bomb-making into it?
Maybe the fusion neutrons are of the wrong energy for breeding plutonium or other bomb elements?
There was some talk on these matters over at Jerry Pournelle's Web site. The consensus was that while there is no outright ban on using DDT in the countries outside the U.S. where malaria is endemic for the purposes of controlling mosquitoes, there is a lot of institutional pressure to not use DDT, especially through U.S. funded aid agencies.
Technically, no one is prevented from using DDT, but in practice no one is using DDT (recommended to be sprayed on walls of human dwellings, not only to prevent mosquito from biting you, but to prevent spread of a mosquito biting you if you have malaria). The aid agencies are pushing bed netting for this same purpose and perhaps some other measures.
I don't know about using Swing to build a really resource-intensive application, but for simple data visualization apps, it works just fine. I have written a couple of data visualization apps where you drag a cursor over a drawing and things drag/compute/update, and I have not complaints about the quality of the graphics and the speed of the updates. I can't see writing the type of in-house apps in VB anymore.
The one big hangup is the layout manager. It takes some learning curve to understand what it is all about, it takes more learning curve to know how to do layout in NetBeans because the layout is not like VB and will confuse the heck out of you (although the new NetBeans has this new flow layout thingy, I am sticking to the conventional layouts for max portability), and layout takes an awful lot of fiddling to get what you want.
Swing may not be the fastest, but it is fast enough for my lab data visualization apps, and it is portable to Windows/Linux/OS X as well.
Actually, I would like access to the test. As a family, we have been through all the drill with neurologist visits and consultations and the drug therapies that are supposed to help and the uncertain could-be-this could-be-that. Someone please point me to those pictures -- I would like to administer the test myself to generate leads for the next doctor visit.
Going back to the Java docs, I realize that notify(), notifyAll(), and wait() are specific to the object having the monitor (any Java object on which synchronized gets invoked), and the monitor object doesn't even need to be a thread object (object implementing the Runnable interface).
Thanks for the input, I learned a lot from the discussion. I was under the impression that wait() was this big party-line affair where you couldn't notify a particular wait. Since notify() and wait() are object-monitor specific, that solves the problem I thought I had.
But in online discussions of notifyAll(), there is a lot of talk of how notifyAll() is so very necessary yet inefficient when you have lots of threads -- I haven't seen any discussion of using a separate synchronized object for every wait that you want to do, allowing use of straight notify().
Yes, I wish I could understand the fine points of notify() and notifyAll().
Java's implementation of Monitor does not have wait conditions -- there is only a generic wait() and a generic notify(), and then you have to set and test variables inside synchronized blocks to figure out what you are notifying for and waiting on.
notify() only wakes up a random thread, so if you have multiple threads waiting, each waiting thread should notify() upon coming out of a wait() so that other threads get served, or you need to use notifyAll(). notifyAll() is like I made an unclear question on an exam, and I have to announce during the exam a change or correction, and 100 heads bob up at once in response.
You see, I can't direct a notify() to a particular wait() -- I have to notify() one at random or notifyAll() and have each wakened thread check condition variables to see if they were the target of the notify. I am not even sure if notify() works correctly in an app with only one wait() in it because there may be other threads in the GUI or wherever that are doing a wait().
And those libraries don't help because they are built on top of notify(), notifyAll() and wait().
Yes, we should leave the design of foam insulation of an LH2/LOX tank to the rocket scientists.
The Saturn was a modular family of rocket stages and various rocket engines coming from those German ex-pat rocket scientists in Huntsville, Alabama. Their first rocket, the Redstone, was in some regards a hot-rodded V-2 in terms of its capabilities, and then they had a Jupiter rocket (not to be confused with the Redstone-derived Jupiter C) that used an engine from the Atlas, developed by an entirely different group. The Saturn I was a crash project to best the Russians in having a heavy-lift rocket, and it had a core tank from the Jupiter design surrounded by outside tanks that were Redstone-derived, and the whole works was powered by 8 uprated Rocketdyne engines of the sort from Navajo/Atlas/Thor/Jupiter. This hacked-together 8-engined multi-tanked first-stage booster was jokingly called "Cluster's Last Stand", but it worked without any launch failures.
The gov'mint paid Rocketdyne to develop the F1 engine -- 1.5 million pounds of thrust per engine -- as a parallel path to "beat the Russians to something" because its development was initiated long before there was a firm Moon program or even a rocket for the F1 to boost. There was a certain "if you will build it, they will come" approach, but the F1 was the modular building block for a variety of Nova super booster designs for "putting a man on the Moon." The F1 could just as well power an Advanced Saturn, Saturn being the work of those Alabama Germans, and while Nova was meant for a direct flight up and back to the Moon and Saturn was intended for a two-flight Earth orbit rendezvous scheme, the eventual Apollo used a lower-mass higher-risk lunar orbit rendezvous, but they had so many F1 engines on the Saturn V that it was larger than some of the earlier Nova concepts.
As to the Saturn V, that project was parceled out in every direction -- each stage was contracted out to a different aerospace company -- the first stage, S-IC was Boeing, the second stage, S-II was North American (later Rockwell, the Shuttle contractor), and the S-IVB third stage was Douglas. Those names kind of told a story of a modular design that went through a number of iterations -- the S-IC suggests the 3rd interation of the first stage while S-IVB suggested the second iteration of what was supposed to be a fourth stage but ended up as the third stage of the Saturn V and the second stage (with minor mods) of the Saturn IB.
The S-II, the Rockwell stage of course, had the foam outside the tank. The S-IVB, however, had the foam inside the tank.
The funny thing is that people say the Shuttle was underfunded from Day 1, but in the years from the mid 50's when Atlas got greenlighted to the early 70's, when Apollo last visited the Moon, compared with the years in the 70's when the Shuttle was initiated to today, the manned space program has probably gotten a comparable amount of money but spread over more years with never the crash-program aspect to Apollot. There is talk of Shuttle-derived stick-launchers and super boosters, but it is all talk, and the ability to make Lego-block rockets a reality seems to be gone.
The problem with batteries is that when you take into account their finite lifetime, the cost per kWHr of electricity retrieved from a battery is some multiple of the 12 cents/kWHr I am paying for electricity.
The power companies would use batteries for load smoothing if batteries were a good deal -- but they don't, because batteries aren't.
Batteries may make sense in a hybrid car because that extra shot of oomph at the right time may replace power generated at much higher cost than 12 cents/kWHr -- a gas engine may be very inefficient under part load, and the hybrid drive may allow downsizing the gas engine in exchange for a small amount of expensive power out of the battery. I just don't see the plug hybrid amounting to much right now because there you are counting on straight kilowatts charged into the battery and then taken out.
The claim is that if you don't deep cycle the battery (as in hybrid car operations) you get much better battery lifetime. But I haven't seen any data to suggest that the total juice you can pass through a battery increases -- you get more cycles because each cycle passes less. And I haven't seen any data to suggest that when you take battery replacement into account, you can get better than 30 cents a kWHr.
Conservatives vs Conservationists
on
Tilting At Windmills
·
· Score: 1, Flamebait
People ask what is it that conservatives want to conserve if they don't want to conserve fuel or conserve the natural environment?
The definitive work on the American conservative movement is Russell Kirk's "The Conservative Mind." What conservatives seek to conserve is tradition, freedom, and liberty. Conservatives may be in conflict with Libertarians because Libertarians may emphasise the freedom and liberty and free markets part while traditionalist-conservatives may emphasise the tradition aspect.
What is so special about tradition -- are conservatives "stand-pat" advocates who want no change for the better? What is special about tradition is that there are some aspects of human life that are amenable to reason and can be readily improved through reform, but there are many aspects of individual life and the greater society that are traditional -- marriage, men in combat arms, the institutions of government, religion, respect for elders -- that are not readily amenable to tidy analysis but are organic to the culture, got to be that way over time, have withstood the test of time, and reflect the collective wisdom of our forefathers.
Conservatism has matters to answer for -- the Civil Rights revolution was quite anti-conservative in that racial segregation was very much a tradition and an institution in American life. On the other hand Conservatism generally believes in a "Higher Power", and it is hard to reconcile such beliefs with having an institutional racism. As a conservative, I support some kind of government social safety net because I believe that an orderly society requires not leaving people who fall through the cracks to jungle law. On the other hand, I believe that if the poor are protected, there is no problem having a lot of rich people around, and I don't take equality of outcomes as an ultimate social goal.
What about the environment? Stewardship of our natural resources and heritage is perfectly compatible with conservatism, but many environmental groups have an anti-conservative agenda. I have heard environmentalist friends more than once talk about humankind, our population as being an environmental "cancer" that is busily polluting the earth. That kind of talk of turning the natural world back to nature and leaving humans out of the equation is especially anti-conservative.
I have CF bulbs all over my house (that is everything that is not on a motion detector or is a refrigerator bulb). Guess what. They save a lot of electricity, but they have mercury in them. And when you have as many of these things as I have had for as long (I am going on 15 years in an all-CF house), you have these puppies burn out.
Now, Mr. Environmentalist-telling-the-rest-of-us-we-are-not -trying-hard-enough-to-conserve, how do you dispose of such a thing? Our garbage czar first told us to store these lights in our basement in the manner that the power companies pile up spent fuel rods because there is no place to put them. Then we could put them on the curbside, but separated from the other garbage, wrapped in some cushioning that they don't break and spew mercury fumes, but identifiable as CF lights. Now, we are no longer permitted to do that -- we are supposed to drag these things back to the retail establishments that sell the things. So far, a home products store will take them back no charge, but a hardware store wants to charge a buck each.
That is the whole point about this NIMBY BANANArama everything. You think a CF is a benign, simple solution to energy wastage that not everyone is adopting. It creates toxic waste. There are no simple answers.
I pay upwards of $5000 year in property tax in a house so small I have to step outside to change my mind, but if I want to dispose of a microwave I have to pay $15. If I want to dispose of a fluorescent fixture (I may not be a wastrel suburban rip-up-the-kitchen type -- the fixture may have conked out, especially if it is one of those Lights of America types, and I will replace it with another energy-efficient fixture) -- I have to pay another $15 bucks. A microwave, by the way, is an energy-saving appliance over a stove top, and these things konk out too.
So what is another $15 bucks on top of all I shovel out in property tax? What is the gas spent getting the sticker?
But mark my words, this stupid policy will create an opening for a creative criminal enterprise. One day, a person will return from vacation, press the clicker to raise the garage door, and find that some outlaws have stuffed your parking space full of busted microwaves.
Here's the deal. I am coming from a Windows world and have developed 2-D graphics widgets to display data for a specific problem domain. I have ActiveX versions of those widgets, and the folks most interested in using my graphics widgets are hardcore Matlab people.
Matlab is actually pretty good about hosting ActiveX widgets if you observe some not-insurmountable restrictions. If I go about supplying ActiveX widgets to people happy to use Matlab under Windows, life is good, but for long term, this is double vendor lock-in.
I am beginning to look at alternatives and among them, I am experimenting with Java Swing. Java Swing is actually farthest along in terms of the 2D graphics features and multithreading that I need for the animations of the displays. I have seriously looked at wxPython, and it lacks 2D graphics features I can find in Windows as well as in Swing.
Matlab for some time has been able to script Java -- either non-visual classes for doing numeric computations or for launching Swing apps in separate windows. Matlab 7 now has a not-yet-well-documented feature to host Java Swing widgets inside Matlab GUI applications.
If I come out with Java Swing versions of my widgets for use under Matlab as a Java scripting environment, I have broken through the restriction of Windows-only, but then I am locked in to Matlab, which is highly proprietary and costs major bucks but is widely available in academic computing, and I am committed to Java, which is free-as-in-beer but not free-as-in-speech. If I can find another scripting environment such as Jython, CPython, Groovy, whatever, that hosts Swing widgets, that would be really helpful in terms of avoiding lock-in.
Matlab is unique in being able to host either ActiveX or Java Swing widgets or some mix of the two inside a GUI (a Matlab figure window). CPython can host ActiveX. While Jython looks like it fits the bill as a Matlab alternative to hosting Java Swing, being able to work with ActiveX and Swing at the same time would be helpful to me in a transition period.
I was thinking-out-loud whether Java bridges were a step-child in the CPython world, in part because there is Jython for people who need seemless Java interoperation and in part because people were looking for a non-Java cross platform deal. No, I am not going to look up the link, it is public knowledge that RMS is trying to persuade people leaving Windows to not get locked in to Java, and there was a thread on Slashdot in the past week discussing that. I wasn't trying to get into the merits of the Java/not Java camps; I was wondering if legitimate Java concerns (and mind you I am not trolling against Java because I am moving in the direction of Java) influenced what was available under CPython.
For CPython to host ActiveX controls must have been a major level of work. CPython could, I suppose, host Java Swing widgets as well, but someone would need that itch to scratch along with the technical know-how to pull it off. I wish I could get some insight into how Matlab is able to do both ActiveX and Java Swing widgets in the same GUI frame but then Matlab is letting out their trade secrets. Java SWT has an ActiveX bridge, but I haven't gotten into that because if I am going to do Java, I thought I would do Java Swing for its features and greater acceptance. Java Swing once had an ActiveX bridge, but that looks like it is thoroughly orphaned.
I am not trying to troll here -- I am seriously thinking about alternatives about which way I want to go with my work.
Can anyone comment on how "sandboxed" is Croquet?
I downloaded and tried one of the earlier Squeak environments, and while it had neat graphics, it was all sandboxed into its own full-screen world which had these strange too-small-to-read fonts.
I know RMS is telling us not to use Java, but Java is probably the most capable in terms of 2D and 3D graphics of any cross-platform thing out there. While people gripe about Java Swing LAF, at least it displays some kind of window among peer windows on your OS and makes a brave attempt at giving OK fonts and integrating with the rest of the desktop instead of giving you a restricted sandbox to work in.
Automobile-driving monkeys
on
An Alternate Human
·
· Score: 2, Insightful
We think about people getting into car wrecks and how that is bad, but I think the amazing thing is that we are able to drive cars as fast as we do in as much dense traffic and 99.9999 percent of the time not get into a wreck.
Mammals by and large have bad eyesight -- it is supposed we evolved from tiny mole or shrew-like creatures that hid out of sight not to get snarfed up by dinosaurs; mammals only came out into the open and got large after the dinosaurs went away. Primates managed to evolve pretty OK eyesight -- not on an eagle or hawk level, but color vision (unusal for mammals), binocular vision for good depth perception and motion tracking.
Think of monkeys swinging from the trees. Think of humans driving cars. We may be frail and weak compared to other animals and even other primates, but we are darned good at driving cars.
I am not quite sold on the idea of doing everything in a scripting/dynamic language. Try doing real time graphics animations without some supporting primitives (written in extension modules) in one of those languages. On the other hand, Matlab is really popular among engineers and engineering students, and Matlab is pretty much a proprietary scripting language. But Matlab can host ActiveX controls (restricted to Windows) and more recently Java Swing components (platform neutral), which can display themselves in a Matlab figure window and permit interaction with these displays from the Matlab command prompt or from Matlab scripts (M-files).
To me, the advantage of scripting languages is that you can rapidly assemble applications from highly-functional components, components that aren't written in that scripting language, for legacy reasons or for performance reasons, and then you can interact with that application to do exploratory data analysis (for my work in signal processing) from a command prompt or can write a script to automate more complex analyses.
I believe I have seen a demo of an application written in Jython that uses Java Swing to produce a graphical scratchpad doodle area to make drawings, and then it has a text window with a Jython command prompt that you can do things to the scratchpad -- change the colors, erase, print, invert the picture, etc. Yes, you could interact with such an application by adding a menu, but the command prompt has access to component classes of the application and their methods to do exploratory analysis, testing, debugging, etc. The idea is that the application is written in Jython -- that way every GUI widget is a Jython object that you can poke at from the command prompt. On the other hand, the widgets themselves are Java Swing widgets -- either standard ones or new ones implemented using Java classes.
Matlab allows you to do this with ActiveX controls -- so does Python using the PyCrust/PyShell feature of wxPython. Matlab allows you to do this with Java Swing controls -- so does Jython (they tell me). There isn't a free thing that allows me to do both, but my druthers are to look to the future and develop my custom widgets in Java and use a Java/Jython type scripting language. RMS tells us not to do Java, but aside from ActiveX, aside from Java Swing, what out there allows you to develop custom widgets (not standard widgets -- everyone has that) and script them? Mono/.NET? What out there even hosts a.NET control apart from.NET -- Matlab doesn't, Python doesn't.
How would you rate jpype in terms of how serious and effort and how active in development and how far along?
The sense I get is that there is a world of people reconciled to Java, and a world of people who have issues with it and want something else -- see RMS recent and recurring remarks about how Java hurts FOSS everywhere, everytime (or is it that other dude who has issues with Java numeric processing?).
I don't have to get in on the pissing context of t'is, t'ain't regarding whether to go with the Java or the anything-but-Java camps. On the other the divide is real. What I am wondering is if CPython is more in the anything-but-Java camp culturally, and hence the preference is to have people write Python extension modules in . . . C! I got a sense that jpype and that other thing that preceded it are not active, enthusiastically supported, or very complete.
On the other hand, if someone comes up with a good JNI bridge, you can use Java extension modules in Python as an option -- Jython is pretty much restricted to Java for extension modules. Hey, there is even a good ActiveX bridge in Python (actually two of them I know about), and ActiveX is as Microsoft-lock-in non-FOSS-friendly as it gets, and people didn't have to hold their noses to do it. But with Java, I get the sense that the enthusiasm is not quite there for a Java bridge.
I believe that the issue isn't Linux for FOSS as such but a lot of the culture and history behind UNIX. UNIX of course was as commercial a product as anything else, but Torvald, Stallman, and the rest of the FOSS community decided on patterning their offering after UNIX and hence inherited a lot of the cultural legacy.
UNIX was in a way a revolt against the snobbery of the mainframe culture. UNIX was named in contrast with MULTICS -- MULTICS was this massive time-sharing mainframe OS coming out of MIT which was supposed to have all kinds of whizbang security and protection features. UNIX was to be the single-user (at least initially) "personal" counterpart to the time-sharing Borg hive of MULTICS. UNIX ran on a PDP 11 minicomputer while MULTICS required a ponderous Burroughs mainframe.
The MS-DOS PC along with the Windows follow-on was a revolt against UNIX. UNIX had become the OS of choice for VAXen and had become the ossified mainframe OS of its day against which the PC was the revolt.
I don't think you will have people who are complete noobs having any issues with a *nix -- people are perfectly happy with OS-X. The people you will have trouble with are the people who cut their teeth on DOS and later Windows, who have memories of what they went through in the VAX days, and any hint of inadvertent condensension from Linux gurus is enough to give them flashbacks of their old tormenters.
I am thinking about spreading a rumor about some kind of drug effect to garlic mustard (Alliaria Petiolota).
Garlic mustard is an ecological disaster in the making, and the people around here who are educating people about the problem are organic types who would faint at the suggestion of Roundup herbicide -- they are laboring under the impression they can bring it under control by pulling it.
This weed is beyond some pony-tailed volunteers going into city parks every May and pulling it -- they are hardly making a dent and it is spreading with each passing year. It is actually highly nutritious, in the same family as cabbage, broccoli, but I don't think enough people want to eat it. If we convinced the authorities that people were smoking it, boy, you would see an erradication effort.
There is thing called a closet snake -- it is a plumbers's snake with a protective guard that you don't scratch the bowl. They only cost a few bucks at a home products store. Every homeowner should have one.
I once hacked a dishwasher that quit working (it coated the dishes with powder) the day before Christmas -- with all the inlaws coming as houseguests. The hold down spring for the main solenoid valve has rusted through and broke off. I knew nothing about dishwasher internals -- it was pure software debugging methodology.
No, not the Caltech cannon, the Fleming cannon. Glad someone set the record straight! Maybe this thing will bring the MIT dudes bad karma or something.
There is always some lab or professor who needs some software design and coding to do something -- to automate a lab, to analyze data, to conduct an experiment, to produce a software package to share with other universities. You may even advertise interest/skills in something off the main track -- Cocoa for example -- there may be some faculty member who needs the app done for OS X.
Go around and talk to people. Express interest in what they are doing. Explain your level of skills/need to acquire skills, describe something you have already done and how you went about doing it.
W2K added USB support. XP added more slowness, annoying colors, annoying popups everytime you stick a CD in the drive, and popups for the Windows installer everytime you run some apps.
I use W2K, XP, and OS X. OS X has some pretty graphics effects -- the translucency and all -- and OS X has its advocates, but I don't see it doing anything that makes me dissatisfied with my XP screen displays. Aero is supposed to be ultra-cool, but I will believe it when I see it that it applications can have new features under it.
Just as we are at the point where an 800 MHz Celeron will be adequate for most people besides gamers, I am thinking that we are at the point that XP, OS X are adequate for user displays. Is there some "killer app" that has some functionality that requires in some way what Aero has to offer?
Folks are ever so sensitive around here -- moderate someone Troll instead of corroborating/disproving a valid concern.
I have encountered that situation -- built something under 1.4 on Windows, unable to run it on 1.5 on Linux, and various permutations. I find the easiest thing is to distribute sources and have people build the darned thing with whatever Java they have on their system.
For the boss dude, the company and its product is his life and he is stuck with what happens to it. He hired you because, well, you could be off doing your own business and your own software package in whatever language you desire, but you decided to work for The Man, and for all you know and all the boss dude knows, you could be a life-long partner in the business or you could be here today and have taken off for greener pastures tomorrow. He is the captain of that submarine (small boat, small crew, great level of autonomy from Navy HQ), and for all I know you are the XO, but that boat has to have only one captain. So folks to start calling this guy Captain Queeg is a little premature.
Another side of the coin is the software engineering version of the Hippocratic oath of do no harm -- the engineering version is first get a lay of the land, how the customer operates, what the system is supposed to do before you go rip-roaring making changes. The customer could be an accounting department using an app developed by you in information systems -- you first see how the accountants are used to doing their work and what the automated system is supposed to replace. The customer in your case is the boss dude.
The story you are telling about the micro-managing boss and the reluctant employee could be the overbearing professor and the meek graduate student. One professor asked that the project be done using unStallman-worthy Java/Swing for the data graphics front end with a JNI link to C++ to do the heavy numeric lifting. The student goes off and codes stuff in C++/Qt. Another professor has the graphical front end done in Java/Swing but with a hand-coded GUI and a student comes along insisting that the thing be redone in the NetBeans GUI designer and sets the project back an entire semester while he is dinking around with the thing.
The point is not to debate the merits of Swing vs SWT, pure FOSS vs Java, VB vs everything else. The point is that the boss dude is ultimately responsible while you are the hired hand, and if the boss dude wasn't overbearing for insisting on VB, he would be overbearing for insisting on Swing, or overbearing for insisting on anything.
We are barely there with current materials technology for a SSTO fully reusable rocket while we are orders of magnitude off on the Space Elevator. Don't you think that long before the space elevator material is in hand we will have strong, light composites for building a single-stage rocket with a very high fuel mass fraction?
The Space Elevator may be more energy efficient than the SSTO rocket, but being that the cost of energy is not the hangup and being that the SSTO benefits from the same materials technology that benefits the Space Elevator but sooner, I am saying SSTO is the way to go.
I guess a device that requires funding and the best scientists from all over Europe, U.S., and India is not going to some rogue state or into some terrorist camp. On the other hand, the big sticking point for fission power is plutonium and proliferation, and a fusion reactor would be one powerful source of neutrons. If a working fusion reactor is developed, are you going to say Country A is allowed to have one but Country B is not because they are going to sneak bomb-making into it?
Maybe the fusion neutrons are of the wrong energy for breeding plutonium or other bomb elements?
Technically, no one is prevented from using DDT, but in practice no one is using DDT (recommended to be sprayed on walls of human dwellings, not only to prevent mosquito from biting you, but to prevent spread of a mosquito biting you if you have malaria). The aid agencies are pushing bed netting for this same purpose and perhaps some other measures.
I don't know about using Swing to build a really resource-intensive application, but for simple data visualization apps, it works just fine. I have written a couple of data visualization apps where you drag a cursor over a drawing and things drag/compute/update, and I have not complaints about the quality of the graphics and the speed of the updates. I can't see writing the type of in-house apps in VB anymore. The one big hangup is the layout manager. It takes some learning curve to understand what it is all about, it takes more learning curve to know how to do layout in NetBeans because the layout is not like VB and will confuse the heck out of you (although the new NetBeans has this new flow layout thingy, I am sticking to the conventional layouts for max portability), and layout takes an awful lot of fiddling to get what you want. Swing may not be the fastest, but it is fast enough for my lab data visualization apps, and it is portable to Windows/Linux/OS X as well.
Actually, I would like access to the test. As a family, we have been through all the drill with neurologist visits and consultations and the drug therapies that are supposed to help and the uncertain could-be-this could-be-that. Someone please point me to those pictures -- I would like to administer the test myself to generate leads for the next doctor visit.
Don't they have a genetic link to early-onset Alzheimer's -- a rare form that affects people quite rapidly when it hits in early 40's?
Thanks for the input, I learned a lot from the discussion. I was under the impression that wait() was this big party-line affair where you couldn't notify a particular wait. Since notify() and wait() are object-monitor specific, that solves the problem I thought I had.
But in online discussions of notifyAll(), there is a lot of talk of how notifyAll() is so very necessary yet inefficient when you have lots of threads -- I haven't seen any discussion of using a separate synchronized object for every wait that you want to do, allowing use of straight notify().
Java's implementation of Monitor does not have wait conditions -- there is only a generic wait() and a generic notify(), and then you have to set and test variables inside synchronized blocks to figure out what you are notifying for and waiting on.
notify() only wakes up a random thread, so if you have multiple threads waiting, each waiting thread should notify() upon coming out of a wait() so that other threads get served, or you need to use notifyAll(). notifyAll() is like I made an unclear question on an exam, and I have to announce during the exam a change or correction, and 100 heads bob up at once in response.
You see, I can't direct a notify() to a particular wait() -- I have to notify() one at random or notifyAll() and have each wakened thread check condition variables to see if they were the target of the notify. I am not even sure if notify() works correctly in an app with only one wait() in it because there may be other threads in the GUI or wherever that are doing a wait().
And those libraries don't help because they are built on top of notify(), notifyAll() and wait().
The Saturn was a modular family of rocket stages and various rocket engines coming from those German ex-pat rocket scientists in Huntsville, Alabama. Their first rocket, the Redstone, was in some regards a hot-rodded V-2 in terms of its capabilities, and then they had a Jupiter rocket (not to be confused with the Redstone-derived Jupiter C) that used an engine from the Atlas, developed by an entirely different group. The Saturn I was a crash project to best the Russians in having a heavy-lift rocket, and it had a core tank from the Jupiter design surrounded by outside tanks that were Redstone-derived, and the whole works was powered by 8 uprated Rocketdyne engines of the sort from Navajo/Atlas/Thor/Jupiter. This hacked-together 8-engined multi-tanked first-stage booster was jokingly called "Cluster's Last Stand", but it worked without any launch failures.
The gov'mint paid Rocketdyne to develop the F1 engine -- 1.5 million pounds of thrust per engine -- as a parallel path to "beat the Russians to something" because its development was initiated long before there was a firm Moon program or even a rocket for the F1 to boost. There was a certain "if you will build it, they will come" approach, but the F1 was the modular building block for a variety of Nova super booster designs for "putting a man on the Moon." The F1 could just as well power an Advanced Saturn, Saturn being the work of those Alabama Germans, and while Nova was meant for a direct flight up and back to the Moon and Saturn was intended for a two-flight Earth orbit rendezvous scheme, the eventual Apollo used a lower-mass higher-risk lunar orbit rendezvous, but they had so many F1 engines on the Saturn V that it was larger than some of the earlier Nova concepts.
As to the Saturn V, that project was parceled out in every direction -- each stage was contracted out to a different aerospace company -- the first stage, S-IC was Boeing, the second stage, S-II was North American (later Rockwell, the Shuttle contractor), and the S-IVB third stage was Douglas. Those names kind of told a story of a modular design that went through a number of iterations -- the S-IC suggests the 3rd interation of the first stage while S-IVB suggested the second iteration of what was supposed to be a fourth stage but ended up as the third stage of the Saturn V and the second stage (with minor mods) of the Saturn IB.
The S-II, the Rockwell stage of course, had the foam outside the tank. The S-IVB, however, had the foam inside the tank.
The funny thing is that people say the Shuttle was underfunded from Day 1, but in the years from the mid 50's when Atlas got greenlighted to the early 70's, when Apollo last visited the Moon, compared with the years in the 70's when the Shuttle was initiated to today, the manned space program has probably gotten a comparable amount of money but spread over more years with never the crash-program aspect to Apollot. There is talk of Shuttle-derived stick-launchers and super boosters, but it is all talk, and the ability to make Lego-block rockets a reality seems to be gone.
Batteries may make sense in a hybrid car because that extra shot of oomph at the right time may replace power generated at much higher cost than 12 cents/kWHr -- a gas engine may be very inefficient under part load, and the hybrid drive may allow downsizing the gas engine in exchange for a small amount of expensive power out of the battery. I just don't see the plug hybrid amounting to much right now because there you are counting on straight kilowatts charged into the battery and then taken out.
The claim is that if you don't deep cycle the battery (as in hybrid car operations) you get much better battery lifetime. But I haven't seen any data to suggest that the total juice you can pass through a battery increases -- you get more cycles because each cycle passes less. And I haven't seen any data to suggest that when you take battery replacement into account, you can get better than 30 cents a kWHr.
The definitive work on the American conservative movement is Russell Kirk's "The Conservative Mind." What conservatives seek to conserve is tradition, freedom, and liberty. Conservatives may be in conflict with Libertarians because Libertarians may emphasise the freedom and liberty and free markets part while traditionalist-conservatives may emphasise the tradition aspect.
What is so special about tradition -- are conservatives "stand-pat" advocates who want no change for the better? What is special about tradition is that there are some aspects of human life that are amenable to reason and can be readily improved through reform, but there are many aspects of individual life and the greater society that are traditional -- marriage, men in combat arms, the institutions of government, religion, respect for elders -- that are not readily amenable to tidy analysis but are organic to the culture, got to be that way over time, have withstood the test of time, and reflect the collective wisdom of our forefathers.
Conservatism has matters to answer for -- the Civil Rights revolution was quite anti-conservative in that racial segregation was very much a tradition and an institution in American life. On the other hand Conservatism generally believes in a "Higher Power", and it is hard to reconcile such beliefs with having an institutional racism. As a conservative, I support some kind of government social safety net because I believe that an orderly society requires not leaving people who fall through the cracks to jungle law. On the other hand, I believe that if the poor are protected, there is no problem having a lot of rich people around, and I don't take equality of outcomes as an ultimate social goal.
What about the environment? Stewardship of our natural resources and heritage is perfectly compatible with conservatism, but many environmental groups have an anti-conservative agenda. I have heard environmentalist friends more than once talk about humankind, our population as being an environmental "cancer" that is busily polluting the earth. That kind of talk of turning the natural world back to nature and leaving humans out of the equation is especially anti-conservative.
Now, Mr. Environmentalist-telling-the-rest-of-us-we-are-not -trying-hard-enough-to-conserve, how do you dispose of such a thing? Our garbage czar first told us to store these lights in our basement in the manner that the power companies pile up spent fuel rods because there is no place to put them. Then we could put them on the curbside, but separated from the other garbage, wrapped in some cushioning that they don't break and spew mercury fumes, but identifiable as CF lights. Now, we are no longer permitted to do that -- we are supposed to drag these things back to the retail establishments that sell the things. So far, a home products store will take them back no charge, but a hardware store wants to charge a buck each.
That is the whole point about this NIMBY BANANArama everything. You think a CF is a benign, simple solution to energy wastage that not everyone is adopting. It creates toxic waste. There are no simple answers.
I pay upwards of $5000 year in property tax in a house so small I have to step outside to change my mind, but if I want to dispose of a microwave I have to pay $15. If I want to dispose of a fluorescent fixture (I may not be a wastrel suburban rip-up-the-kitchen type -- the fixture may have conked out, especially if it is one of those Lights of America types, and I will replace it with another energy-efficient fixture) -- I have to pay another $15 bucks. A microwave, by the way, is an energy-saving appliance over a stove top, and these things konk out too.
So what is another $15 bucks on top of all I shovel out in property tax? What is the gas spent getting the sticker?
But mark my words, this stupid policy will create an opening for a creative criminal enterprise. One day, a person will return from vacation, press the clicker to raise the garage door, and find that some outlaws have stuffed your parking space full of busted microwaves.
Matlab is actually pretty good about hosting ActiveX widgets if you observe some not-insurmountable restrictions. If I go about supplying ActiveX widgets to people happy to use Matlab under Windows, life is good, but for long term, this is double vendor lock-in. I am beginning to look at alternatives and among them, I am experimenting with Java Swing. Java Swing is actually farthest along in terms of the 2D graphics features and multithreading that I need for the animations of the displays. I have seriously looked at wxPython, and it lacks 2D graphics features I can find in Windows as well as in Swing.
Matlab for some time has been able to script Java -- either non-visual classes for doing numeric computations or for launching Swing apps in separate windows. Matlab 7 now has a not-yet-well-documented feature to host Java Swing widgets inside Matlab GUI applications.
If I come out with Java Swing versions of my widgets for use under Matlab as a Java scripting environment, I have broken through the restriction of Windows-only, but then I am locked in to Matlab, which is highly proprietary and costs major bucks but is widely available in academic computing, and I am committed to Java, which is free-as-in-beer but not free-as-in-speech. If I can find another scripting environment such as Jython, CPython, Groovy, whatever, that hosts Swing widgets, that would be really helpful in terms of avoiding lock-in.
Matlab is unique in being able to host either ActiveX or Java Swing widgets or some mix of the two inside a GUI (a Matlab figure window). CPython can host ActiveX. While Jython looks like it fits the bill as a Matlab alternative to hosting Java Swing, being able to work with ActiveX and Swing at the same time would be helpful to me in a transition period.
I was thinking-out-loud whether Java bridges were a step-child in the CPython world, in part because there is Jython for people who need seemless Java interoperation and in part because people were looking for a non-Java cross platform deal. No, I am not going to look up the link, it is public knowledge that RMS is trying to persuade people leaving Windows to not get locked in to Java, and there was a thread on Slashdot in the past week discussing that. I wasn't trying to get into the merits of the Java/not Java camps; I was wondering if legitimate Java concerns (and mind you I am not trolling against Java because I am moving in the direction of Java) influenced what was available under CPython.
For CPython to host ActiveX controls must have been a major level of work. CPython could, I suppose, host Java Swing widgets as well, but someone would need that itch to scratch along with the technical know-how to pull it off. I wish I could get some insight into how Matlab is able to do both ActiveX and Java Swing widgets in the same GUI frame but then Matlab is letting out their trade secrets. Java SWT has an ActiveX bridge, but I haven't gotten into that because if I am going to do Java, I thought I would do Java Swing for its features and greater acceptance. Java Swing once had an ActiveX bridge, but that looks like it is thoroughly orphaned.
I am not trying to troll here -- I am seriously thinking about alternatives about which way I want to go with my work.
I know RMS is telling us not to use Java, but Java is probably the most capable in terms of 2D and 3D graphics of any cross-platform thing out there. While people gripe about Java Swing LAF, at least it displays some kind of window among peer windows on your OS and makes a brave attempt at giving OK fonts and integrating with the rest of the desktop instead of giving you a restricted sandbox to work in.
Mammals by and large have bad eyesight -- it is supposed we evolved from tiny mole or shrew-like creatures that hid out of sight not to get snarfed up by dinosaurs; mammals only came out into the open and got large after the dinosaurs went away. Primates managed to evolve pretty OK eyesight -- not on an eagle or hawk level, but color vision (unusal for mammals), binocular vision for good depth perception and motion tracking.
Think of monkeys swinging from the trees. Think of humans driving cars. We may be frail and weak compared to other animals and even other primates, but we are darned good at driving cars.
To me, the advantage of scripting languages is that you can rapidly assemble applications from highly-functional components, components that aren't written in that scripting language, for legacy reasons or for performance reasons, and then you can interact with that application to do exploratory data analysis (for my work in signal processing) from a command prompt or can write a script to automate more complex analyses.
I believe I have seen a demo of an application written in Jython that uses Java Swing to produce a graphical scratchpad doodle area to make drawings, and then it has a text window with a Jython command prompt that you can do things to the scratchpad -- change the colors, erase, print, invert the picture, etc. Yes, you could interact with such an application by adding a menu, but the command prompt has access to component classes of the application and their methods to do exploratory analysis, testing, debugging, etc. The idea is that the application is written in Jython -- that way every GUI widget is a Jython object that you can poke at from the command prompt. On the other hand, the widgets themselves are Java Swing widgets -- either standard ones or new ones implemented using Java classes.
Matlab allows you to do this with ActiveX controls -- so does Python using the PyCrust/PyShell feature of wxPython. Matlab allows you to do this with Java Swing controls -- so does Jython (they tell me). There isn't a free thing that allows me to do both, but my druthers are to look to the future and develop my custom widgets in Java and use a Java/Jython type scripting language. RMS tells us not to do Java, but aside from ActiveX, aside from Java Swing, what out there allows you to develop custom widgets (not standard widgets -- everyone has that) and script them? Mono/.NET? What out there even hosts a .NET control apart from .NET -- Matlab doesn't, Python doesn't.
The sense I get is that there is a world of people reconciled to Java, and a world of people who have issues with it and want something else -- see RMS recent and recurring remarks about how Java hurts FOSS everywhere, everytime (or is it that other dude who has issues with Java numeric processing?).
I don't have to get in on the pissing context of t'is, t'ain't regarding whether to go with the Java or the anything-but-Java camps. On the other the divide is real. What I am wondering is if CPython is more in the anything-but-Java camp culturally, and hence the preference is to have people write Python extension modules in . . . C! I got a sense that jpype and that other thing that preceded it are not active, enthusiastically supported, or very complete.
On the other hand, if someone comes up with a good JNI bridge, you can use Java extension modules in Python as an option -- Jython is pretty much restricted to Java for extension modules. Hey, there is even a good ActiveX bridge in Python (actually two of them I know about), and ActiveX is as Microsoft-lock-in non-FOSS-friendly as it gets, and people didn't have to hold their noses to do it. But with Java, I get the sense that the enthusiasm is not quite there for a Java bridge.
UNIX was in a way a revolt against the snobbery of the mainframe culture. UNIX was named in contrast with MULTICS -- MULTICS was this massive time-sharing mainframe OS coming out of MIT which was supposed to have all kinds of whizbang security and protection features. UNIX was to be the single-user (at least initially) "personal" counterpart to the time-sharing Borg hive of MULTICS. UNIX ran on a PDP 11 minicomputer while MULTICS required a ponderous Burroughs mainframe.
The MS-DOS PC along with the Windows follow-on was a revolt against UNIX. UNIX had become the OS of choice for VAXen and had become the ossified mainframe OS of its day against which the PC was the revolt.
I don't think you will have people who are complete noobs having any issues with a *nix -- people are perfectly happy with OS-X. The people you will have trouble with are the people who cut their teeth on DOS and later Windows, who have memories of what they went through in the VAX days, and any hint of inadvertent condensension from Linux gurus is enough to give them flashbacks of their old tormenters.
I am thinking about spreading a rumor about some kind of drug effect to garlic mustard (Alliaria Petiolota). Garlic mustard is an ecological disaster in the making, and the people around here who are educating people about the problem are organic types who would faint at the suggestion of Roundup herbicide -- they are laboring under the impression they can bring it under control by pulling it. This weed is beyond some pony-tailed volunteers going into city parks every May and pulling it -- they are hardly making a dent and it is spreading with each passing year. It is actually highly nutritious, in the same family as cabbage, broccoli, but I don't think enough people want to eat it. If we convinced the authorities that people were smoking it, boy, you would see an erradication effort.
I once hacked a dishwasher that quit working (it coated the dishes with powder) the day before Christmas -- with all the inlaws coming as houseguests. The hold down spring for the main solenoid valve has rusted through and broke off. I knew nothing about dishwasher internals -- it was pure software debugging methodology.
So tell me, do plumbers even work on Christmas?
No, not the Caltech cannon, the Fleming cannon. Glad someone set the record straight! Maybe this thing will bring the MIT dudes bad karma or something.
Go around and talk to people. Express interest in what they are doing. Explain your level of skills/need to acquire skills, describe something you have already done and how you went about doing it.
I use W2K, XP, and OS X. OS X has some pretty graphics effects -- the translucency and all -- and OS X has its advocates, but I don't see it doing anything that makes me dissatisfied with my XP screen displays. Aero is supposed to be ultra-cool, but I will believe it when I see it that it applications can have new features under it.
Just as we are at the point where an 800 MHz Celeron will be adequate for most people besides gamers, I am thinking that we are at the point that XP, OS X are adequate for user displays. Is there some "killer app" that has some functionality that requires in some way what Aero has to offer?
I have encountered that situation -- built something under 1.4 on Windows, unable to run it on 1.5 on Linux, and various permutations. I find the easiest thing is to distribute sources and have people build the darned thing with whatever Java they have on their system.