John, you, the store, and the clerk would all have different word endings in each of the example sentences. I am told Serbo-Croatian has seven of these noun endings, and Latin and Greek are up there as well.
Microsoft has long given up version numbers, perhaps from the embarrassment of it.
Call your product FOOBar Eliminator XS (for Extra Strength), or call it FOOBAR Eliminator 2009, or even FOOBar Eliminator 3000, or perhaps 10000. Maybe even chose a future date from the Frank Herbert Dune series or the Asimov Foundation.
Didn't Bill Cosby make a spy-thriller-spoof named Leonard Part VI? Part of the spoof was that it was supposed to be the 6th spinoff or rehash "in the franchise", but of course it was the first and only Leonard as Bill Cosby as super secret agent.
As Michael Crichton attempted to make a serious point about "eco-terrorism" with State of Fear, my understanding is the Leonard Part VI was spoof on "animal-rights terrorism", and since it had animals in it, it was supposed be funny the way anything with animals in it is supposed to be funny like some people think Pet Detective was.
I read and heard from critics on TV that Leonard Part VI really blew chunks. Maybe it was a joke on itself skipping ahead to Part VI: Under Siege, Terminator, Star Wars, Planet of the Apes and so on had a great first movie but the third sequel was always trouble. It was perhaps a funny concept, but the execution was kind of ragged and people say the movie is so disjointed not to make sense. So don't jinx your product calling it Version 6.
It has been how long since Xerox PARC, and people still can't get the implementation of a "progress bar" widgets right.
Look up on Google on how to do a progress bar in Java -- you know, where you do some long process such as an install or a long file save, and you get this bar widget telling you that it is "50% complete."
So the Java noob posts to a forum, "I do a long calculation, and I update the progress bar widget, and nothing happens." The response is "you are blocking the event-dispatch thread (EDT) from updating the GUI, and the proper solution is a 'Swing worker thread class."
So you spin off a Swing worker thread to do the long calculation, and you properly use invokeLater() to synchronize with the EDT to make periodic updates of the progress bar, and the EDT is not blocked by your long calculation. So seriously, what problem does that solve. The progress bar is no longer blocking the EDT at all, but it needs to be blocking the EDT in some sense to prevent certain forms of reentrency. The big deal with GUIs is that they are "non-modal", but there are times when you want some kind of mode and some form of modal behavior. When you are doing the long calc, you may want to update the progress bar, you may even want to enable a Cancel button to bail, but you may want to suspend all other activities of the app until this calculation finishes.
The classic example is that you need to save a long file on exit from an app. So how does a Swing Worker help you at all? The offered solution is to initiate the Swing Worker in response to the Close-and-Save command, and then let the Swing Worker invokeLater() back on to the EDT to post the quit message when finished.
The Windows solution is to use something called a nested event loop. When you are doing the long calc or the long file operation, you run a PeekMessage followed by DispatchMessage loop to keep event processing going. The problem with that is still reentrancy -- if the GUI is active, you could issue another menu command that would mess with your long calc or save. One answer to that is to use the form of the PeekMessage to only process paint events and otherwise lock out the GUI. Another answer is to do this from a modal dialog with a progress meter and a Cancel button. You PeekMessage all events, but since you are modal to that dialog, the only allowed GUI actions are progress bar updates and selecting Cancel, so you don't have the reentrancy problem.
The Visual Basic folks have a DoEvents() function that runs such a nested event loop, but the rap on DoEvents() is that the GUI is still active and you have the reentrancy problem. Most VB developers probably don't think it is a problem because they never test for it by poking at the GUI while the long calc is in progress. But again, the solution is to DoEvents() while presenting a modal dialog with the progress bar and cancel button. Or use a message filter as is not available with VB.NET.
People complain that a nested event loop is evil, or at least that it kills the non-modal aspect of the GUI. That is the whole point, there are times when you want the GUI to go modal on you, and the modal dialogs themselves have nested event loops in them to pull that off. The nested event loop with the appropriate message filters or modal dialog to suppress GUI reentrancy is often the proper way to handle the long calc with progress bar situation given that one may not want to permit other GUI operations until the calc or file save is complete. This business of telling people to use a Swing Worker thread and to Tarzan-swinging-from-the-fines to chain from form close, to long save, to post quit message is a complete kludge.
Windows is Windows you say, and Java is reliant on the Swing Worker to do this. Not! There is an EventQueue class in Swing, and it has exact analogs to the Windows PeekMessage and Dispatch message calls. So you can implement a modal state with nested event loop in Java anyway, and this should be preferred to threads for many cases where such a modal state is required. So why is the EvenQueue class in Swing such a guarded secret that no one recommends its use? It has been 30+ years since PARC, and people still don't know how to write a proper GUI app.
Delphi not suited for what complicated stuff
on
C# In-Depth
·
· Score: 1
Delphi has complete support for everything in Windows. C'mon, the ugly kludge of classes, templates, macros, and wizards MS has come up with to do COM/ActiveX and that pile of dog leavings called MFC are no comparison to Delphi.
The real story is that "professionals" (here in the U.S.) lost interest in Pascal. The people behind the FreePascal and Lazarus projects seem to be Brits, Germans, Russians, and so on.
The one area I would fault Delphi/Pascal is not keeping up in the area of collections (the domain of the STL) and other libraries. What enhancements to Pascal have come out of Borland have made it more of a Windows-specific language than something that could run elsewhere. This is probably more driven by waning interest in Pascal rather than the lack of such things driving people away from Pascal.
Boy, you sure are getting flack for writing that you get kicks out of your Prius.
I don't own a Prius or other hybrid yet -- I alternate between driving one of two 11-year-plus 120,000-mile-plus cars waiting for something really, really high-tech (plug-in hybrid? EV with a 200 mile range? Fuel cells? This new Honda?) Between having one or the other car in the shop to keep the "fleet" going, I think I can hold out another 7 years.
Of the Prius owners and wannabes I know, there is one family member with a grueling 20-mile each way clogged freeway big city commute who drives a Prius, and that is probably the intended application for that car. Another family member is convinced that a hybrid is "their next car purchase", and that family member doesn't have a clue whether a Prius would even help with their largely exurban driving pattern.
If you dig the electric mode and watching the energy-flow meter as a geek thing, more power to you and pay no attention to your critics. At least you are getting serious personal satisfaction out of something you spent your money on, and the naysayers are simply jealous.
I used to think that the erratic nature of wind-generated electricity could be averaged out through "wheeling power" over the electric grid, given improvements to transmission capacity as proposed.
I have come to be much more skeptical of wind. Owing to the chance of weeks of becalmed weather over a continental landmass, every kilowatt of wind generation needs to be backed up somehow with fossil generation. In other words, wind power does not replace any fossil fuel generation capacity, it merely supplements it to reduce the total amount of fuel burned. And given the variability of wind, wind needs to be sized for peak rating some multiple -- 5 times? more according to European experience? -- of the average amount of power and fossil fuel replacement you can expect. So what degree of CO2 reduction can you expect with a wind-power supplement to your fossil power plants -- maybe 20 percent? Both from a global warming perspective and a fuel-substitution perspective to move stationary users of oil to electricity, you need much more than 20 percent.
It seems that wind is popular and getting various kinds of support, monetary and otherwise on account of its "zero carbon" nature, but I no longer see it as zero carbon, merely as carbon reducing for the fossil power plants, and there must be other ways than filling the landscape with wind turbines to get similar levels of carbon reduction.
I see the "green marketing" of wind power where your power company offers to charge you more "to get your power from wind" as a kind of carbon-offset scam. You pay more for power with the assurance that your power is "carbon neutral." If wind received the widespread application to make a real difference in carbon emission, and the people who sign up for wind power regard themselves as early adopters of what is believed to become a much larger scale operation, you are perhaps at best "reducing your carbon footprint" from electricity by 20 percent, which is much more cost effective to achieve through household energy efficiency than through wind power.
I don't know, maybe it is one of those things like exercising an hour per day or avoiding high calorie foods or making sure you go to the dentist every 6 months. Separating your code into "generic C++ for the numeric and modelling parts" and GUI library-specific code for the GUI part is common sense, good for you, and probably a lot harder than you think.
Granted, there are probably large portions of the code that constitute algorithms and data structures that don't need to have GUI-specific code in them. We have all seen designs where GUI calls are dispersed in those algorithms when they can be put elsewhere.
But on the other hand, perhaps as much as half the lines of code in one of these apps has something to do with the GUI or the expression of the data into the graphical display. Suppose your target was OpenGL, but to not get too "locked down" to OpenGL, you abstracted the calls to OpenGL with some kind of wrapper. OK, now the edict comes down from the PHB to change everything over to DX10 or OpenGL 3.XXX, you say, "Piece of cake, I will just rewrite that wrapper."
Fine, but you are probably using the capabilities and perhaps quirks of OpenGL. At some deep level, you are probably tied to the way of thinking OpenGL has about how to do graphics. You have this wrapper, but is most likely one of Joel Spolsky's "leaky abstractions" of OpenGL anyway, and it may be far from trivial to adapt this wrapper to the Next Best Thing.
The other approach you can take is say, "I don't want the fortunes of my CAD/CAM program tied to OpenGL, I will only use a minimal subset of OpenGL that appears to be common to DX and some other things. I won't even wrap to some of the fancier features of OpenGL so I don't get stuck -- if I need those features, I will implement them myself." This is essentially the Sun Java-Swing approach -- they code to the absolute bare essentials of the underlying GUI on whatever platform and they implement the bulk of what a GUI and a widget rendering library needs to do, essentially reinventing what a lot of Windows-GTK-QT-Quartz does in Java code.
You can take the Java-Swing approach and indeed have API-specific code now contained to a small area. You can do this because a large area of your code is essentially your own home-brew buggy reimplementation of a lot of what is in OpenGL. Sun got a lot of criticism for Swing for the low performance for doing this, and implementing Swing I imagine was a major undertaking, but Swing exists and it has been around long enough for incremental improvement to get it to the point of usability for what a lot of people want to do with it.
But to suggest that having OpenGL calls interspersed through half of a CAD/CAM app is "bad design" is perhaps optimistic thinking regarding how cleanly such an app can be separated into modules. The whole point of OpenGL is that it is platform neutral, and that OpenGL is in fact the wrapper to the underlying graphics library on the various ports of your app. So what you are saying is that the developer of a major CAD/CAM package has to have an in-house wrapper to what is already a platform-independent graphics wrapper because use of OpenGL constitutes lock-in to a platform?
Yeah, some people think she is totally hot, but I think a case can be made that Condi Rice is a geek. Former Stanford Provost, hobby is playing classical music on the piano.
There was this picture on a Web site of a young Condi Rice with an absolute toothpick physique skating what looks like the Dutch Waltz with an ice dance partner.
Ice dancing is not that bad a choice as a geek sport, expecially for guy geeks, although I once saw an ice dancing photo of a girl geek -- the current Secretary of State -- proving that ice dancing is a geek sport.
I mean this seriously in the sense that karate is probably also a geek sport. Yes, there is a degree of physical aptitude required, but the whole point of karate or other martial arts is not that one is successful by virtue of raw athletic talent as seems to be the path taken in ball sports or track, but through a combination of mental discipline, training, and intellectual insights, one is able to accomplish feats that one would think would require raw strength.
From a guy-geek perspective, ice dance partnering is the closest contact one is going to get with women until the rest of one's social skill catch up with your ice dance instruction. And yes, ice dance is everything you described it to be, along with developing an intuitive understanding of Newtonian mechanics in coordinate frames that are highly non-inertial owing to rotations about multiple axes. You are going to have to master non-inertial coordinate frames to get passing marks in something called the European Waltz.
Also from a guy-geek perspective, solo ice dance practice only gets you so far, and at some point you are going to have to figure out how to relate to a female-type person in a non-inertial frame. Once you master that, just about all of your other interactions with a woman that you need to be in some kind of cooperative relationship -- a friend, a coworker, a girl friend, a wife -- will take place in an inertial coordinate frame where action and reaction is much easier to understand.
But the Olympics? I don't know, I think it is ruining the sport. To make it more "sport like", every year it looks more and more like karate, and in defense of karate, do they even have that in the Olympics or is karate able to conduct itself purely for its own sake and the satisfaction of maintaining an art rather than having judging and competition and all of the garbage that goes with that.
First of all, they have to be kept topical. Back in the day they were the Soviet Russia jokes, more recently "in Putin's Russia", which works because Putin is former KGB and cultivated a reputation of being a tough guy, and now, it is "in Medvedev's Russia." Medvedev may be a cipher and may be Putin's puppet, which makes it even the more to make it "in Medvedev's Russia" (name pronounced Mehd-vyehd-yev -- the Russians stick "y's" in front to dipthong-ize vowels in contrast with other Slavic languages).
Secondly, the construction you want to reverse is subject-verb-object. A lot of humor has a rather angry, aggressive substrate to it, and the object in the construction is something that gets acted on in a way that we would not give it much thought, but turned around gets rather nasty. I have the hardest time explaining the positive-passive sign convention for power flow to engineering students, but when I explain that the resistor is passive in the sense that it is acted upon, that you make it your b12ch, suddenly eyes light up with recognition. Only in the "Russia" joke, in the reversal, "you!" become the "b12ch", and the idea is that Russian and many other social systems, the individual person is the "b12ch" to a lot of personal interactions that have become impersonal, and the recognition of this sad fact from the joke makes the joke funny.
So in the classic example, "In Soviet Russia, TV watches you!" As far as I can tell, they never put spy cameras on Russian TV sets -- that meme comes from Orwell's 1984 -- and they didn't need to because all of the spying was done by your friends and neighbors who would rat you out to the NKVD or later KGB if there was enough incentive. On the other hand you-watch-TV is the normal subject-verb-object construction, and the TV is taking a very passive role, permitting itself to be simply watched and controlled through the selection of channels. On the other hand TV-watches-you! turns it around, where you are now the object of the watching, a kind of observation that demeans you as a person even if no evidence is found of you being an enemy of the state. Of course the TV doesn't do the watching, your coworker with whom you split a bottle of vodka and your neighbor who eyes up your coming and going does that watching, but it is all the same.
So someone tried to turn around "American men don't understand women, but in Soviet Russia, men actually understand women. No, no, no! Man-fails to understand-woman is the subject-verb-object construction has "failing to understand" as a kind of passive-aggressive action that is applied to "woman" as the object -- a man in American society is in a passive-aggressive way treating a woman in his life as an object by failing to understand her well enough to make a relationship harmonious.
So the proper turn around is "In Medvedev's Russia" (remember to make the joke up to date and to put the y's in front of the vowels in Medvedev), "women fail to understand you!" This new joke works on so many levels. It points out that "fail to understand" is actually a passive-aggressive action that objectifies and perhaps demeans another person, but there is a little reversal humor on the riff that most men don't see it that way and consider the way a woman in one's life conceals her moods is a kind of manipulation of him. But in Russia, they have this turned around, and women get to act passive-aggressive and not respond to the emotional needs of the man in their life.
It works yet on another level, because part of Russia humor is the notion that women over there work in factories and have powerful peasant physique's whereas some of the men are wimps who dissipate themselves telling long stories over vodka. It isn't just American's having this stereotype of Russians, I am told that Serbs, who are regarded by Russians as hick "country cousins" turn this around and view Russian men as being gender-whipped. "In Medvedev's Russia, women fail to understand you!"
In Medvedev's Russia, Plasma Drive plans test on you!
What about supercritical steam power plants?
on
Hot Water, Hot Earth
·
· Score: 1
There is one thing I never understood about supercritical steam power plants.
The whole deal with the Rankine fluid phase change cycle in everthing from your airconditioner to a steam power plant is that the phase change results in a massive volume change (reduction in V). This means that the PV work to bring your working fluid up to pressure is small, or at least small in relation to the work done expanding that fluid in ratio of the V in the vapor phase to V in the liquid phase.
The problem with all gas phase heat engines such as the gas turbine is that since there is no phase change, the amount of compressor power is large compared to the amount of turbine power, and a good fraction of the turbine power runs the compressor. To get good efficiency, you need high mechanical efficiencies for both compressor and turbine.
Since the supercritical state eliminates the phase change, doesn't the supercritical cycle become more like the gas turbine cycle in that a lot of the energy from the turbine is now needed to run the feedwater pump? Or am I missing something here?
A big reason I am sold on Java, as I have indicated, is that it is a platform-independent way to get the capabilities of Win32 GDI.
Suppose I have a high-performance native-compiled C++ program that needs to display some graphics. I write a Java front end having a Java Swing widget incorporating BufferedImage or other Java2D facilities. I write an application-specific but abstract interface to the Java widget. I call into my C++ module using JNI, and that module has a C++ object wrapper for the JNI call back to the Java widget. Voila, I have a high-performance numeric C++ program that is able to produce graphical representations and animations in a platform independent way.
Again, there may be a Mono equivalent to this, but since WinForms doesn't have anything like BufferedImage, and neither do wxWidgets and a whole lot of other things, this is why I am going the Java route to high-performance platform-independent computing.
Java has a pretty slick dynamic dispatch of GUI events in the form of java.beans.EventHandler. Is this everything delegates do, maybe not. But it allows you to hook a named method of any active object instance into a menu, mouse action, or other GUI event. Maybe Sun doesn't promote its use beyond IDEs that handle Java Beans and Sun still wants you to use anonymous inner classes, but this facility is pretty powerful, I use it in my GUI programming, and it works just fine.
Whether P/Invoke is slicker than JNI is maybe in the eye of the beholder. If all you want to do is call a method in a Windows dll, P/Invoke is pretty streamlined. If you want to interact with a COM object under.NET, I guess it isn't too bad; if you want a.NET app to act as a COM object, there is some kind of registration/assembly boojum that I haven't figured out.
JNI may be kind of clunky on the C++ side, and it requires "cooperation" on the C++ side I don't see needed with P/Invoke. Also on the minus side, it only allows calls to C function on the C++ side, only allowing invocation of C++ object methods through some kind of handle and casting through static C function prototypes.
On the plus side, I have found JNI to be lucidly documented. If you respect the object locking conventions, I found JNI is perfectly bi-directional -- Java calls into C++, which can call back into Java, or the other way around. I don't know of any way for C++ to call back into.NET unless you register the.NET object as COM, and as I said, the process for COM registration of a.NET object makes JNI look simple and streamlined.
I also find JNI to be thoroughly platform agnostic. They have those naming conventions for the.so and.dll files under OS-X, Linux, Windows -- for a Java app calling down to C++ (for my work for a numeric package written in C++), you have to compile a separate C++ module for each target platform, but you give your users your.jar file and bundle of the different C++ modules, and the correct C++ target is called on whatever platform they are using.
The other thing that has me on Java these days is that I was pretty much hard-wired with my scientific visualization graphcs into Win32 on account of the WinG features developed in the early 90's to get DOS game programs to switch to Windows. I am pretty dependent on the capabilities of ScrollWindowEx() and CreateDIBSection() in order to have a scrollable frame buffer widget where I can set gray level or color of each and every pixel efficiently. Every other platform than Win32, and that includes all of the 'Nix stuff layered on top of X comes up short, as does Microsoft's Windows Forms of all things.
Guess what. Java supports what I want with their BufferedImage() class and if WinForms has anything near equivalent (I guess they do, but they spank your hand that you are doing something not-secure to lock the bytes of the frame buffer). BufferedImage() scrolls had been clunky on Unix owing to the limitations on X, but Sun has a workaround where you can use OpenGL automagically though a commandline switch to get the same WinG hardware accelerated goodness for frame buffer scrolls.
I am solidly a Win32 kind of person, especially with regard to graphics, and Java is a better front end to Win32 along with a way to port Win32 features to other platforms than.NET, wxWidgets, GTK, etc, etc.
That blog post dates to what, 2003? But it is still the funniest thing on the Internet, and it is a mastery of Internet comedic timing in the way you scroll down into the punch line. Too bad there aren't more gems like that page on his site.
What has become of Slashdot lately? The posts are one conspiracy rant after another, a dude posts the one serious comment, and it gets moderated Troll?
With 9-11 we had some Islamic wackos. With Oklahoma City, we had home-grown nut jobs. This thing could have either been Islamic wackos or a home-grown nut job, and the FBI has been leaning towards the home-grown nut job for a variety of obvious reasons -- a biggie being the Pidgin note with the Middle-East radical slogans didn't have the correct slant to it for someone who wrote a right-to-left Semitic script like Arabic.
One reasonable comment in a sea of "Cheney did it", "ABC News did it", "Bush did it" on and on and ad nauseum. Is the whole geek community so wound up about telco immunity and the last time you had your toenail clippers taken at the airport that no one can reason about a situation anymore?
As to the FBI hounding the wrong guy, we had this situation before when they were hounding this CIA guy who was being framed by a guy in FBI counter-intelligence named Hanson, who was also a church-going Catholic boy scout type, at least on the surface. Personal disclosure: I am Catholic, but being Catholic doesn't immunize you from mental illness. In Hanson's case, he knew that he had personal demons (OK, a compulsive disorder), but he tried to work his problem within the system of his religion with Opus Dei counselors and the confessional -- this fellow was said to be seeing a therapist.
I would like them to hold a Private Pilot's night at Six Flags -- to get on the roller coasters you have to show a pilot's certificate. I would like for just one time in my life ride the coasters with a bunch of people who appreciate the fine points of their design and won't yell, scream, raise their hands and go "woo" and just plain STFU and enjoy the ride.
I don't see Vista used much of anywhere except in the Office Depot computer showroom.
John, you, the store, and the clerk would all have different word endings in each of the example sentences. I am told Serbo-Croatian has seven of these noun endings, and Latin and Greek are up there as well.
C'mon. You know the aliens didn't have DC-8's as spaceships -- they only looked like DC-8's. I thought everyone knew that.
Call your product FOOBar Eliminator XS (for Extra Strength), or call it FOOBAR Eliminator 2009, or even FOOBar Eliminator 3000, or perhaps 10000. Maybe even chose a future date from the Frank Herbert Dune series or the Asimov Foundation.
As Michael Crichton attempted to make a serious point about "eco-terrorism" with State of Fear, my understanding is the Leonard Part VI was spoof on "animal-rights terrorism", and since it had animals in it, it was supposed be funny the way anything with animals in it is supposed to be funny like some people think Pet Detective was.
I read and heard from critics on TV that Leonard Part VI really blew chunks. Maybe it was a joke on itself skipping ahead to Part VI: Under Siege, Terminator, Star Wars, Planet of the Apes and so on had a great first movie but the third sequel was always trouble. It was perhaps a funny concept, but the execution was kind of ragged and people say the movie is so disjointed not to make sense. So don't jinx your product calling it Version 6.
Look up on Google on how to do a progress bar in Java -- you know, where you do some long process such as an install or a long file save, and you get this bar widget telling you that it is "50% complete."
So the Java noob posts to a forum, "I do a long calculation, and I update the progress bar widget, and nothing happens." The response is "you are blocking the event-dispatch thread (EDT) from updating the GUI, and the proper solution is a 'Swing worker thread class."
So you spin off a Swing worker thread to do the long calculation, and you properly use invokeLater() to synchronize with the EDT to make periodic updates of the progress bar, and the EDT is not blocked by your long calculation. So seriously, what problem does that solve. The progress bar is no longer blocking the EDT at all, but it needs to be blocking the EDT in some sense to prevent certain forms of reentrency. The big deal with GUIs is that they are "non-modal", but there are times when you want some kind of mode and some form of modal behavior. When you are doing the long calc, you may want to update the progress bar, you may even want to enable a Cancel button to bail, but you may want to suspend all other activities of the app until this calculation finishes.
The classic example is that you need to save a long file on exit from an app. So how does a Swing Worker help you at all? The offered solution is to initiate the Swing Worker in response to the Close-and-Save command, and then let the Swing Worker invokeLater() back on to the EDT to post the quit message when finished.
The Windows solution is to use something called a nested event loop. When you are doing the long calc or the long file operation, you run a PeekMessage followed by DispatchMessage loop to keep event processing going. The problem with that is still reentrancy -- if the GUI is active, you could issue another menu command that would mess with your long calc or save. One answer to that is to use the form of the PeekMessage to only process paint events and otherwise lock out the GUI. Another answer is to do this from a modal dialog with a progress meter and a Cancel button. You PeekMessage all events, but since you are modal to that dialog, the only allowed GUI actions are progress bar updates and selecting Cancel, so you don't have the reentrancy problem.
The Visual Basic folks have a DoEvents() function that runs such a nested event loop, but the rap on DoEvents() is that the GUI is still active and you have the reentrancy problem. Most VB developers probably don't think it is a problem because they never test for it by poking at the GUI while the long calc is in progress. But again, the solution is to DoEvents() while presenting a modal dialog with the progress bar and cancel button. Or use a message filter as is not available with VB .NET.
People complain that a nested event loop is evil, or at least that it kills the non-modal aspect of the GUI. That is the whole point, there are times when you want the GUI to go modal on you, and the modal dialogs themselves have nested event loops in them to pull that off. The nested event loop with the appropriate message filters or modal dialog to suppress GUI reentrancy is often the proper way to handle the long calc with progress bar situation given that one may not want to permit other GUI operations until the calc or file save is complete. This business of telling people to use a Swing Worker thread and to Tarzan-swinging-from-the-fines to chain from form close, to long save, to post quit message is a complete kludge.
Windows is Windows you say, and Java is reliant on the Swing Worker to do this. Not! There is an EventQueue class in Swing, and it has exact analogs to the Windows PeekMessage and Dispatch message calls. So you can implement a modal state with nested event loop in Java anyway, and this should be preferred to threads for many cases where such a modal state is required. So why is the EvenQueue class in Swing such a guarded secret that no one recommends its use? It has been 30+ years since PARC, and people still don't know how to write a proper GUI app.
The real story is that "professionals" (here in the U.S.) lost interest in Pascal. The people behind the FreePascal and Lazarus projects seem to be Brits, Germans, Russians, and so on.
The one area I would fault Delphi/Pascal is not keeping up in the area of collections (the domain of the STL) and other libraries. What enhancements to Pascal have come out of Borland have made it more of a Windows-specific language than something that could run elsewhere. This is probably more driven by waning interest in Pascal rather than the lack of such things driving people away from Pascal.
I don't own a Prius or other hybrid yet -- I alternate between driving one of two 11-year-plus 120,000-mile-plus cars waiting for something really, really high-tech (plug-in hybrid? EV with a 200 mile range? Fuel cells? This new Honda?) Between having one or the other car in the shop to keep the "fleet" going, I think I can hold out another 7 years.
Of the Prius owners and wannabes I know, there is one family member with a grueling 20-mile each way clogged freeway big city commute who drives a Prius, and that is probably the intended application for that car. Another family member is convinced that a hybrid is "their next car purchase", and that family member doesn't have a clue whether a Prius would even help with their largely exurban driving pattern.
If you dig the electric mode and watching the energy-flow meter as a geek thing, more power to you and pay no attention to your critics. At least you are getting serious personal satisfaction out of something you spent your money on, and the naysayers are simply jealous.
I have come to be much more skeptical of wind. Owing to the chance of weeks of becalmed weather over a continental landmass, every kilowatt of wind generation needs to be backed up somehow with fossil generation. In other words, wind power does not replace any fossil fuel generation capacity, it merely supplements it to reduce the total amount of fuel burned. And given the variability of wind, wind needs to be sized for peak rating some multiple -- 5 times? more according to European experience? -- of the average amount of power and fossil fuel replacement you can expect. So what degree of CO2 reduction can you expect with a wind-power supplement to your fossil power plants -- maybe 20 percent? Both from a global warming perspective and a fuel-substitution perspective to move stationary users of oil to electricity, you need much more than 20 percent.
It seems that wind is popular and getting various kinds of support, monetary and otherwise on account of its "zero carbon" nature, but I no longer see it as zero carbon, merely as carbon reducing for the fossil power plants, and there must be other ways than filling the landscape with wind turbines to get similar levels of carbon reduction.
I see the "green marketing" of wind power where your power company offers to charge you more "to get your power from wind" as a kind of carbon-offset scam. You pay more for power with the assurance that your power is "carbon neutral." If wind received the widespread application to make a real difference in carbon emission, and the people who sign up for wind power regard themselves as early adopters of what is believed to become a much larger scale operation, you are perhaps at best "reducing your carbon footprint" from electricity by 20 percent, which is much more cost effective to achieve through household energy efficiency than through wind power.
The gadolinium level was off the chart, I tell you. That is what tipped them off.
Granted, there are probably large portions of the code that constitute algorithms and data structures that don't need to have GUI-specific code in them. We have all seen designs where GUI calls are dispersed in those algorithms when they can be put elsewhere.
But on the other hand, perhaps as much as half the lines of code in one of these apps has something to do with the GUI or the expression of the data into the graphical display. Suppose your target was OpenGL, but to not get too "locked down" to OpenGL, you abstracted the calls to OpenGL with some kind of wrapper. OK, now the edict comes down from the PHB to change everything over to DX10 or OpenGL 3.XXX, you say, "Piece of cake, I will just rewrite that wrapper."
Fine, but you are probably using the capabilities and perhaps quirks of OpenGL. At some deep level, you are probably tied to the way of thinking OpenGL has about how to do graphics. You have this wrapper, but is most likely one of Joel Spolsky's "leaky abstractions" of OpenGL anyway, and it may be far from trivial to adapt this wrapper to the Next Best Thing.
The other approach you can take is say, "I don't want the fortunes of my CAD/CAM program tied to OpenGL, I will only use a minimal subset of OpenGL that appears to be common to DX and some other things. I won't even wrap to some of the fancier features of OpenGL so I don't get stuck -- if I need those features, I will implement them myself." This is essentially the Sun Java-Swing approach -- they code to the absolute bare essentials of the underlying GUI on whatever platform and they implement the bulk of what a GUI and a widget rendering library needs to do, essentially reinventing what a lot of Windows-GTK-QT-Quartz does in Java code.
You can take the Java-Swing approach and indeed have API-specific code now contained to a small area. You can do this because a large area of your code is essentially your own home-brew buggy reimplementation of a lot of what is in OpenGL. Sun got a lot of criticism for Swing for the low performance for doing this, and implementing Swing I imagine was a major undertaking, but Swing exists and it has been around long enough for incremental improvement to get it to the point of usability for what a lot of people want to do with it.
But to suggest that having OpenGL calls interspersed through half of a CAD/CAM app is "bad design" is perhaps optimistic thinking regarding how cleanly such an app can be separated into modules. The whole point of OpenGL is that it is platform neutral, and that OpenGL is in fact the wrapper to the underlying graphics library on the various ports of your app. So what you are saying is that the developer of a major CAD/CAM package has to have an in-house wrapper to what is already a platform-independent graphics wrapper because use of OpenGL constitutes lock-in to a platform?
There was this picture on a Web site of a young Condi Rice with an absolute toothpick physique skating what looks like the Dutch Waltz with an ice dance partner.
I mean this seriously in the sense that karate is probably also a geek sport. Yes, there is a degree of physical aptitude required, but the whole point of karate or other martial arts is not that one is successful by virtue of raw athletic talent as seems to be the path taken in ball sports or track, but through a combination of mental discipline, training, and intellectual insights, one is able to accomplish feats that one would think would require raw strength.
From a guy-geek perspective, ice dance partnering is the closest contact one is going to get with women until the rest of one's social skill catch up with your ice dance instruction. And yes, ice dance is everything you described it to be, along with developing an intuitive understanding of Newtonian mechanics in coordinate frames that are highly non-inertial owing to rotations about multiple axes. You are going to have to master non-inertial coordinate frames to get passing marks in something called the European Waltz.
Also from a guy-geek perspective, solo ice dance practice only gets you so far, and at some point you are going to have to figure out how to relate to a female-type person in a non-inertial frame. Once you master that, just about all of your other interactions with a woman that you need to be in some kind of cooperative relationship -- a friend, a coworker, a girl friend, a wife -- will take place in an inertial coordinate frame where action and reaction is much easier to understand.
But the Olympics? I don't know, I think it is ruining the sport. To make it more "sport like", every year it looks more and more like karate, and in defense of karate, do they even have that in the Olympics or is karate able to conduct itself purely for its own sake and the satisfaction of maintaining an art rather than having judging and competition and all of the garbage that goes with that.
Secondly, the construction you want to reverse is subject-verb-object. A lot of humor has a rather angry, aggressive substrate to it, and the object in the construction is something that gets acted on in a way that we would not give it much thought, but turned around gets rather nasty. I have the hardest time explaining the positive-passive sign convention for power flow to engineering students, but when I explain that the resistor is passive in the sense that it is acted upon, that you make it your b12ch, suddenly eyes light up with recognition. Only in the "Russia" joke, in the reversal, "you!" become the "b12ch", and the idea is that Russian and many other social systems, the individual person is the "b12ch" to a lot of personal interactions that have become impersonal, and the recognition of this sad fact from the joke makes the joke funny.
So in the classic example, "In Soviet Russia, TV watches you!" As far as I can tell, they never put spy cameras on Russian TV sets -- that meme comes from Orwell's 1984 -- and they didn't need to because all of the spying was done by your friends and neighbors who would rat you out to the NKVD or later KGB if there was enough incentive. On the other hand you-watch-TV is the normal subject-verb-object construction, and the TV is taking a very passive role, permitting itself to be simply watched and controlled through the selection of channels. On the other hand TV-watches-you! turns it around, where you are now the object of the watching, a kind of observation that demeans you as a person even if no evidence is found of you being an enemy of the state. Of course the TV doesn't do the watching, your coworker with whom you split a bottle of vodka and your neighbor who eyes up your coming and going does that watching, but it is all the same.
So someone tried to turn around "American men don't understand women, but in Soviet Russia, men actually understand women. No, no, no! Man-fails to understand-woman is the subject-verb-object construction has "failing to understand" as a kind of passive-aggressive action that is applied to "woman" as the object -- a man in American society is in a passive-aggressive way treating a woman in his life as an object by failing to understand her well enough to make a relationship harmonious.
So the proper turn around is "In Medvedev's Russia" (remember to make the joke up to date and to put the y's in front of the vowels in Medvedev), "women fail to understand you!" This new joke works on so many levels. It points out that "fail to understand" is actually a passive-aggressive action that objectifies and perhaps demeans another person, but there is a little reversal humor on the riff that most men don't see it that way and consider the way a woman in one's life conceals her moods is a kind of manipulation of him. But in Russia, they have this turned around, and women get to act passive-aggressive and not respond to the emotional needs of the man in their life.
It works yet on another level, because part of Russia humor is the notion that women over there work in factories and have powerful peasant physique's whereas some of the men are wimps who dissipate themselves telling long stories over vodka. It isn't just American's having this stereotype of Russians, I am told that Serbs, who are regarded by Russians as hick "country cousins" turn this around and view Russian men as being gender-whipped. "In Medvedev's Russia, women fail to understand you!"
So with the plasma drive, the normal subject-verb
In Medvedev's Russia, Plasma Drive plans test on you!
The whole deal with the Rankine fluid phase change cycle in everthing from your airconditioner to a steam power plant is that the phase change results in a massive volume change (reduction in V). This means that the PV work to bring your working fluid up to pressure is small, or at least small in relation to the work done expanding that fluid in ratio of the V in the vapor phase to V in the liquid phase.
The problem with all gas phase heat engines such as the gas turbine is that since there is no phase change, the amount of compressor power is large compared to the amount of turbine power, and a good fraction of the turbine power runs the compressor. To get good efficiency, you need high mechanical efficiencies for both compressor and turbine.
Since the supercritical state eliminates the phase change, doesn't the supercritical cycle become more like the gas turbine cycle in that a lot of the energy from the turbine is now needed to run the feedwater pump? Or am I missing something here?
Suppose I have a high-performance native-compiled C++ program that needs to display some graphics. I write a Java front end having a Java Swing widget incorporating BufferedImage or other Java2D facilities. I write an application-specific but abstract interface to the Java widget. I call into my C++ module using JNI, and that module has a C++ object wrapper for the JNI call back to the Java widget. Voila, I have a high-performance numeric C++ program that is able to produce graphical representations and animations in a platform independent way.
Again, there may be a Mono equivalent to this, but since WinForms doesn't have anything like BufferedImage, and neither do wxWidgets and a whole lot of other things, this is why I am going the Java route to high-performance platform-independent computing.
Java has a pretty slick dynamic dispatch of GUI events in the form of java.beans.EventHandler. Is this everything delegates do, maybe not. But it allows you to hook a named method of any active object instance into a menu, mouse action, or other GUI event. Maybe Sun doesn't promote its use beyond IDEs that handle Java Beans and Sun still wants you to use anonymous inner classes, but this facility is pretty powerful, I use it in my GUI programming, and it works just fine.
Whether P/Invoke is slicker than JNI is maybe in the eye of the beholder. If all you want to do is call a method in a Windows dll, P/Invoke is pretty streamlined. If you want to interact with a COM object under .NET, I guess it isn't too bad; if you want a .NET app to act as a COM object, there is some kind of registration/assembly boojum that I haven't figured out.
JNI may be kind of clunky on the C++ side, and it requires "cooperation" on the C++ side I don't see needed with P/Invoke. Also on the minus side, it only allows calls to C function on the C++ side, only allowing invocation of C++ object methods through some kind of handle and casting through static C function prototypes.
On the plus side, I have found JNI to be lucidly documented. If you respect the object locking conventions, I found JNI is perfectly bi-directional -- Java calls into C++, which can call back into Java, or the other way around. I don't know of any way for C++ to call back into .NET unless you register the .NET object as COM, and as I said, the process for COM registration of a .NET object makes JNI look simple and streamlined.
I also find JNI to be thoroughly platform agnostic. They have those naming conventions for the .so and .dll files under OS-X, Linux, Windows -- for a Java app calling down to C++ (for my work for a numeric package written in C++), you have to compile a separate C++ module for each target platform, but you give your users your .jar file and bundle of the different C++ modules, and the correct C++ target is called on whatever platform they are using.
The other thing that has me on Java these days is that I was pretty much hard-wired with my scientific visualization graphcs into Win32 on account of the WinG features developed in the early 90's to get DOS game programs to switch to Windows. I am pretty dependent on the capabilities of ScrollWindowEx() and CreateDIBSection() in order to have a scrollable frame buffer widget where I can set gray level or color of each and every pixel efficiently. Every other platform than Win32, and that includes all of the 'Nix stuff layered on top of X comes up short, as does Microsoft's Windows Forms of all things.
Guess what. Java supports what I want with their BufferedImage() class and if WinForms has anything near equivalent (I guess they do, but they spank your hand that you are doing something not-secure to lock the bytes of the frame buffer). BufferedImage() scrolls had been clunky on Unix owing to the limitations on X, but Sun has a workaround where you can use OpenGL automagically though a commandline switch to get the same WinG hardware accelerated goodness for frame buffer scrolls.
I am solidly a Win32 kind of person, especially with regard to graphics, and Java is a better front end to Win32 along with a way to port Win32 features to other platforms than .NET, wxWidgets, GTK, etc, etc.
That blog post dates to what, 2003? But it is still the funniest thing on the Internet, and it is a mastery of Internet comedic timing in the way you scroll down into the punch line. Too bad there aren't more gems like that page on his site.
Yeah, and the Hanson affair doesn't prove that the FBI Director takes orders from Opus Dei either.
With 9-11 we had some Islamic wackos. With Oklahoma City, we had home-grown nut jobs. This thing could have either been Islamic wackos or a home-grown nut job, and the FBI has been leaning towards the home-grown nut job for a variety of obvious reasons -- a biggie being the Pidgin note with the Middle-East radical slogans didn't have the correct slant to it for someone who wrote a right-to-left Semitic script like Arabic.
One reasonable comment in a sea of "Cheney did it", "ABC News did it", "Bush did it" on and on and ad nauseum. Is the whole geek community so wound up about telco immunity and the last time you had your toenail clippers taken at the airport that no one can reason about a situation anymore?
As to the FBI hounding the wrong guy, we had this situation before when they were hounding this CIA guy who was being framed by a guy in FBI counter-intelligence named Hanson, who was also a church-going Catholic boy scout type, at least on the surface. Personal disclosure: I am Catholic, but being Catholic doesn't immunize you from mental illness. In Hanson's case, he knew that he had personal demons (OK, a compulsive disorder), but he tried to work his problem within the system of his religion with Opus Dei counselors and the confessional -- this fellow was said to be seeing a therapist.
Blind testing of video, now that's a good one!
Maybe they just don't get out much.
I think there are factions on Congress having issues with the Uranus Rocket.
I would like them to hold a Private Pilot's night at Six Flags -- to get on the roller coasters you have to show a pilot's certificate. I would like for just one time in my life ride the coasters with a bunch of people who appreciate the fine points of their design and won't yell, scream, raise their hands and go "woo" and just plain STFU and enjoy the ride.