"COM is the most confusing and awkward mix of macros, templates, libraries, and obscure "wizard" generated code that I can imagine."
People said the Windows API was hard, and while a C Windows API program may take up a couple of pages, it is not hard to go through it line by line and explain what every last function call and function argument is supposed to do. With COM and ActiveX, I have essentially given up on that for the reason you just outlined.
On the other hand, I believe Borland has "wizards" that make COM/ActiveX development tolerable while I don't know how anyone uses VS C++ to do any of this. Both C++ Builder and Delphi use this tool call the Type Library Editor for maintaining the IDL and automatically keeping a wrapper class in synch with that IDL. Yes, the Type Library Editor is buggy and quirky and using it to specify interfaces compared to real coding is like having sex by remote control.
But there is one thing the Type Library Editor can do that I have yet to figure out with, say, VS C++ and the ATL wizards: the Microsoft tools lets me add stuff, but it doesn't seem to let me remove stuff. The only way it seems to remove stuff is to edit sources, and instead of 2 files (.h and.cpp) there seem to be about 5 different files (.h,.cpp, idl, rc, and something else for good measure), and I have never been able to remove a method from an interface without corrupting everything beyond starting over again.
Having gotten over the learning curve, the Type Library Editor allows me to not only produce COM and ActiveX controls, it allows me to edit and tinker with their interfaces. Interfaces are supposed to be immutable, but being able to modify interfaces during development is important to me.
With that level of tool support, I am inclined to hang on to COM/ActiveX development instead of migrating to.NET. All kinds of software from VB 6 to Matlab to even.NET can host ActiveX components -- when is Matlab going to host a.NET component? When is IE going to host a client-side.NET component? By sticking with COM/ActiveX, I have a much broader set of consumers of software components.
Oh, you can use.NET/C# to develop COM/ActiveX components -- haven't tried it.
I am reading this book titled Oxygen by Nick Lane on how the oxygen got into the Earth's atmosphere.
First off, he argues that the Harold Urey/Stanley Miller experiment idea of the Earth having a reducing atmosphere of hydrogen, methane, and ammonia is a crock because the asteroid bombardment from 4.5 Ga to about 4 Ga stripped the Earth of any atmosphere it had, and the initial atmosphere at the point was largely nitrogen and some CO2 and SO2 that came out of volcanoes.
Secondly, he argues that while oxygen can be created by UV splitting the water molecule, the bulk of our oxygen comes from photosynthesis over the ages, and that process also helped Earth hang on to its water because the photosynthesis oxygen acted as a getter for the hydrogen liberated by UV water splitting, preventing that process from bleeding off all the water as H2 vented into space and O2 chemically combined in the surface rocks (i.e. modern Mars).
Thirdly, he explains that photosynthesis generation of O2 is nearly balanced by respiration consumption of O2, and the only thing that causes buildup of O2 is burial of a tiny fraction of the organic matter each year to cause a small O2 surplus. If we burnt up the entire biosphere and all the known fossil fuel reserves, that would hardly put a dent in the O2 (it would do major things to CO2, which is currently a trace gas) because the amount of buried organics is huge compared to the current biosphere, and what is accessible as fossil fuels is a tiny amount of the total buried organics (most of the organics are sequestered as sandstones that are "very low grade" fossil fuels as it were).
The idea is that volcanoes pumped out all this carbon as CO2, the stuff that got converted to organics and buried reflected on the O2, some of the CO2 converted directly into carbonate rocks (limestone and dolomite) deposited as sediments. I guess volcanoes recycle some of the carbonate rocks back into CO2 output.
Now there is Thomas Gold with his oil and perhaps coal are not fossil fuels deal, and someone has recently posted on Slashdot recently how one can look at coal under a microscope and see how it is made up of plants. But even if all oil is organic, there had to be some primordeal source of carbon in the ground, which had to be the source of the CO2 puked out by volcanoes, which is the source of all of the oxygen once the CO2 got processed by plants and the organic matter got buried so that the plants were one step ahead making O2 compared to the animals and rotting vegetation (bacteria) eating O2.
Gold believes that oil comes from primordeal unoxidized carbon in the upper mantle -- kind of like the composition of carbonaceous carbon meteorites, but current thinking is the Late Heavy Bombardment (thing that formed the main Moon craters and basins and maria) not to mentioned the big smash that formed the Moon must have melted the Earth to quite a ways down.
My question is that even if Gold is wrong, what was the source of the carbon that fed CO2 to the volcanoes (the source of O2 is water?) that fed the plants over eons that gave us the oxygen atmosphere?
I heard this business of blood boiling and popping brains is "bad science fiction."
My blood pressure is 140/90, which used to be OK until they changed the rules about such things, so my doctor had me learn how to use a blood pressure cuff so I could take my own readings and be depressed how my exercise regimine and dietary changes were having little effect.
That lower number of 90 means 90 mm Hg, where one atmosphere is 760 mm Hg. The systolic (higher reading) is the peak of the pressure pulse of the arterial wave, while the diastolic (lower reading) is the baseline pressurization of your arteries relative to the environment. So that suggests that the human body itself is a space suit good to at least a 10th of an atmosphere.
For the Russian crew that was first to visit a space station that died on reentry when their Soyuz lost pressure, I heard that they just passed out and died from lack of oxygen -- they looked like they were just sleeping when the ground crew opened the hatch.
Strictly talking scripting languages, I have heard about Perl being good for text rearranging but being a little heavy on the non-letter characters, I have hacked out some VB script to do stuff under Windows, and I have experimented with Python. I have even heard about Ruby being popular among OO purists.
Is this PHP thing something I should know about? I Googled for it and it seems more proprietary than Perl or Python (didn't find a free download and docs). I have read the criticism comments that PHP is in the Visual Basic category of encouraging weak minds to tackle strong tasks.
Is this like Visual Basic in that it is cobbled together and lacks consistency and a uniform vision, or is it just simple to use and hence invites the scorn of the stronger minds? Is there some application domain where you really need to know this? Are there better substitutes? Does it have interesting ideas of its own worth emulating?
Much has been said about a good algorithm being better than a hand-coded loop.
When the FFT came out, a lot of effort went into cutting down the number of arithmetic operations -- eliminating "trivial" operations like multiply by 1, multiply by 0 and add, as well as they higher radix butterflies (radix 4, 8, 16). The simple radix 2 FFT given in many DSP texts was offered as a "teaching example", but "production" FFT programs were complex masses of FORTRAN code that attempted to identify all the optimizations.
In my own experience, the simple radix 2 FFT is best for the modern x86 where as you say x86 is just an API to a RISC core. The minute you start putting in the optimizations, you need additional loops, branches, and tests, which trip up the pipeline. Arithmetic ops are fast compared to extra loops, branches, and tests, so the old mainframe FFT subroutines were optimizing the wrong thin.
I work with audio digital signal processing along with visual displays of signals, and instead of worrying about the overhead of function calls and how many parameters they have and whether they are virtual or dynamically dispatched, I try to block or buffer things so that I get things done wholesale for every function call.
Given the way processors are pipelined, you take such a hit for any kind of function call compared to a set of arithmetic operations that the only way to go is to call functions on arrays or slices of arrays to process batch of samples at a time. If you implemented a digital filter by calling a function for each sample you want to process, that is going to be slow, while if you call a function for batches of 1024 samples, you are really pretty insensitive to the function call overhead. If the function call overhead is high, just make the batch size bigger.
This arises in other situations: for operations over a network it is recommended to make your transactions blockier or chunkier; for raster graphics, the naive Windows SetPixel() command is slow compared to CreateDIBSection().
I have had a quick education in an exotic-invasive plant called garlic mustard as it had taken over my parents' yard and people convinced me that that was very bad and that I had to start eradicating it before it set seed for a bigger crop in the years to come.
The amazing thing about this garlic mustard is that it grows in shade under dense stands of evergreen trees where nothing else grows. This plant must have some genetic advantage regarding photosynthesis under low light conditions.
Beside being a distant relative of broccoli, garlic mustard is a close relative to rape seed, of which Canola is a specially-bred variety, and rape seed is one of the oil seeds people talk about with regard to biodiesel solving the oil crisis.
Here I am, pulling garlic mustard until my hands are stiff and sore, and resistance to the garlic mustard is probably futile because it is going to take over everything anyway, but because of its unique genetics, we are probably going to be cultivating garlic mustard as an oil-seed crop when the fossil fuels run out.
For all the talk of Grey Goo, I believe I have identified to Green Goo of our post-oil age society, and it is garlic mustard.
While the Sun is cranking out energy from fusion, it is notworthy how low the reaction rate. Now it is burning H into He using the proton-proton reaction (hotter stars use the carbon cycle), not a reaction that is practical for any Earth-based fusion reactor, the temperatures and pressures at the core are enormous, but the reaction rates are rather low.
Think about it -- the Sun has an estimated 10 billion year Main Sequence lifetime, of which it has used up 5 billion years. Also consider that over the Main Sequence lifetime it cannot achieve anywhere near complete burnup of the hydrogen and you can figure that the amount of hydrogen burnt per year is measured in parts per trillion.
There are heavier stars that burn their hydrogen much more quickly, and it is good for us that the Sun is so thrifty, but if you could duplicate the conditions in the core of the Sun, it wouldn't make for an economical energy source in an Earth-based power plant.
In his acting career, Ronald Reagan played a legendary football player named George Gip, who from his deathbed puts on a brave face and asks for his team to "win one for the Gipper", which is repeated to the team by coach Knute Rockne of Notre Dame.
Calling President Reagan "the Gipper" was for his supporters a way of evoking the moral courage of the character portrayed in the movie while for his detractors it was a way to suggesting that Reagan was no more than a minor movie actor.
W2K will work just fine. I tried XP on such a system and rolled back to W2K in a hurry.
By the way, XP won't uninstall to roll back to W2K -- it was lucky that I had all my stuff on the old hard disk when I had upgraded to a bigger hard disk.
While I program in C++, Java, and C# for source code I offer for public consumption, I use Delphi Object Pascal for all of my private libraries. I started developing for the PC back when it came out, and while I took a course that used Pascal, I was mostly a FORTRAN programmer, and for the PC I had looked at everything (Forth, structured FORTRAN, Janus Ada, you name it), got sold on Turbo Pascal, and hadn't looked back. C for the PC was a couple year in the future, and when C was a poor fit to the PC what with segment registers and memory models until Windows 95 introduced a flat memory model.
Turbo Pascal syntax was already an anachronism in its day -- Borland at some point was going to come out with Modula 2 -- the way Borland units in Turbo 4 was arguably better (interface and implementation in one source file) than what Wirth was doing.
Does anyone, ever, refer to a "railroad tracks" diagram to write programs in Pascal? Sure, Raskin is proud of his poster, and all the Pascal texts have that diagram, but is it useful to anyone other than a compiler developer? I always refer to source code snippets to figure out syntax rules.
Pascal syntax has its quirks, mainly in its unique use of begin, end, and semicolon, but I guess I have gotten used to that so much that I find Wirth's "cleaned-up" Pascal's (Oberon, Component Pascal) with their upper-cased reserved words and unfamiliar new keywords just about unreadable. But the main aspect of Pascal syntax is, of course, how easy it is to make a Pascal parser and how fast the Delphi compiler builds tens of thousands of lines of source.
The extreme of quirky-to-humans but good-for-computers syntax is Lisp. My understanding is that the good-for-computers part makes it easy to develop macros that operate on the parse tree instead of brute-force lexical subsitution as in C macros, making for the power of the language. The good-for-computers aspect to Pascal seems to be used only for making fast compilers -- perhaps even Pascal syntax is too complex to allow Lisp-style macros, although the Dylan language seems to combine aspects of Pascal and Lisp.
This claim needs to be laid to rest. Brent Spiner (the long-haired "mad scientist") had been studying the alien tech under wraps in Area 51 since the late 40's ("we don't get out much"), so Jeff Goldbloom had a head start in figuring out how the hack the alien net.
Cars have gotten a lot more aerodynamic, my wife's Chrysler LH car has a gas mileage meter, and I can't tell much difference between 60 MPH and 65 MPH. Back in the 70's, I was noticing bigger gas mileage differences with speed. I think there is a knee-on-the-curve around 69 MPH -- there are billboards on the famous German Autobahn trying to get people to drive 110 (about 69 MPH) to save on fuel.
As to driving speed there is the range from the law, custom, and the editorial position of Car and Driver magazine. If a person drives a strict cruise-control 55 MPH on high-traffic two-lane highways, one is quickly going to get a "tail" of cars with people taking dangerous chances trying to pass. I find that driving in the 57-59 range cuts down on the traffic backup.
Our major high-traffic 4-lane roads are 65, and I suppose I could drive well below the posted limit in the right lane to save gas, but that too will pile up traffic big time. The convention in these parts is that it is OK to drive a strict 65 in the slow lane and let faster cars (and trucks!) go by in the left lane.
The roads are a shared resource and social use of those roads is both a safety and a social issue. Yeah, we have all had the drivers ed lecture about drive your own speed, don't worry about the tailgaters. But there a lot more of us driving these roads more miles than the 30 years ago when I took drivers ed, and a good part of how these roads handle the traffic is that people are maintaining speeds at close separations and showing some skill in their lane changes in those conditions. Cars have much better brakes than 30 years ago, and I believe there are many fewer drivers who have never been on an expressway before and are clueless about merges, lane changes, speeds, lane usage, and separations.
Drivers ed said never let a tailgater pressure you, but my 30 year experience is that if you just click in a couple MPH into your cruise control, often times the person behind you will give you a little breathing space. I have also heard of people being pressured into speeding up and getting a ticket from a police car. Given the attitude of the police (the emphasis is on speeding ticket revenue, not safety), a patrol car will have me planted in front of it going 55 with the traffic piled up behind. It is not a safe condition, but people are less likely to pass the patrol car than ol' me going 55 just by myself.
Kurtz was the fellow that used heads on sticks to decorate his camp. The "smell of napalm" dude was Kilgore. Willard thought that both were crazy, but Kilgore was someone the military could use for its purposes while Kurtz was beyond their control and hence the need for Willard's mission.
So is Gates Kilgore (the crazy but mainstream guy) while Jobs is Kurtz (the crazy and outside the mainstream guy)?
A retired professor friend whose research was in auto engines told me "more lies are told about gas mileage" when I tried to tell him I could easily beat EPA numbers. Yes, there is a selection effect of only "remembering" particularly good mileage values, where you had a tail wind on a road trip and you only filled the tank to the "first click."
I drive two cars: a 3L 24V 96 Taurus with 130,000 miles and a head gasket oil leak in its "Duratec" engine, which I drive in winter, a 2.2 L 16V 97 Camry with 100,000 miles and a power steering leak which I drive in summer because I bought it in Florida and was not exposed to direct road salt, only salt ocean air. Last year I ran 7800 miles on the Taurus at an average MPG of 25 and 7500 miles on the Camry at an average of 31. Just as they put low miles on the Concorde fleet to keep them in service, my theory is that I can keep this "fleet" going until more high gas mileage cars are available to chose from. There are no "beater" Prius cars on the road to give experience on how their battery ages.
The EPA on the Taurus is 20/29 -- the 96 Taurus had rather tall gearing, and later model Tauri have lower EPA numbers, in part from being regeared. At one time I thought I got around 22 in summer driving in town, 32 on the highway, but I don't have records to back that up. The Camry EPA is 23/30. Last year (I have records) in town was 25 and on the road was 35.
There are raw EPA numbers, and then there are consumer EPA numbers. In the 70s and early 80s, the sticker gave raw EPA numbers, and no one ever got those. I had a 2.5L 8V Chevy Celebrity with EPA highway of 38, and the best I did was around 35. You can look up all this info at www.epa.gov and as it turns out, the raw EPA highway on the Camry is 38. EPA highway also represents driving in moderate traffic on an LA freeway (EPA city is on LA "surface streets", more representative of suburban driving than downtown Manhattan), and there is a lot of 50 MPH running in it -- I imagine if I drove highway at a strict 55 and had people stacked up behind me trying to pass I could do 38 in the Camry.
Now there was a recent Slashdot article about how no one seems to get 60 MPG out of a Prius. I drive to get good gas mileage (steady speeds, no faster than 65 on the highway, anticipate traffic as best I can to coast to slow down), but the consensus seems to be that hybrids are even more sensitive to driving technique and EPA numbers on those things is an elusive goal. If the EPA numbers on the Prius are that high, the raw EPA numbers must be proportionately higher, which means there is some driving condition where you could probably get 70 MPG in a Prius, but good luck achieving that.
THe wing feathering is the coolest part. Until now, there have been two approaches to reentry. One is a high drag, high G-force blunt body, although you can mitigate the G's and give some steering control by putting the weight off-center to give it some life. The other is a winged vehicle flown at a very high angle of attack during the reentry.
A third way had been proposed by Max Faget for the "DC-3" straight-wing Shuttle proposal. The idea was to fly such a high angle of attack on reentry that one pretty much "pancaked" into the atmosphere. The straight wing approach was criticized for being unstable at hypersonic speeds, but my understanding of the idea was that by coming in belly first, the Faget orbiter was pretty much a blunt body with a cookie-cutter shape (the orbiter bottom and wings were like taking a cookier cutter to a blunt-body heat shield), and as such, it would be as stable and as controllable as an Apollo CM. The scary part of the Faget DC-3 was that having reentered the atmosphere, one had to do some kind of transition maneuver from the "full stall" reentry to start flying subsonicaly on those wings.
What is so innovative about the feathering is that they make a pancake reentry in the fashion of the "DC-3", but they have a workable way of making the transition to normal flight.
The big point of "Wonderful Life" is that the Burgess fossils were first shoehorned into existing phyla by Walcott, and that he, S. J. Gould, explained that the Burgess had all kinds of bizarre phyla that don't exist anymore, which means we should count ourselves lucky that we don't have eyes on our butts and spikes sticking out of our foreheads.
Story I heard was that "Wonderful Life" was dismissed among people in the know as a form of peer-review bypassed grandstanding. A lot of what Gould had to say is controversial. This is not to say that people can't take controversial or off-the-wall theories to the popular press (Wolfram's New Physics), but I had gotten the mistaken impression that "Wonderful Life" represented main-stream thinking on the subject, which it does not.
I never could figure out what the buzzword "troll" meant, but I guess that I'll "bite."
I make part of my living from commercial sale of scientific visualization software. It performs in software what used to require a $20,000 special-purpose instrument using embedded DSP processors (ouch, more buzzwords). The software is locked into Windows because it uses 1) CreateDIBSection() to allow direct manipulation of pixels in the manner of the post to which I was responding, 2) ScrollWindowEx() so the display can be scrolled using video card hardware, requiring the software to only redraw a small portion with each update, and 3) IDirectDraw::WaitForVerticalBlank() to synchronize scrolls and redraws with the vertical retrace for tear-free video.
Those three calls in Windows came about because Microsoft was trying to wean game developers away from DOS, where the direct control of copying pixel values into a video frame buffer was highly valued. Those three calls were to make 2-D games possible under Windows; those calls also happened to make my data visualization software possible.
There is almost but not quite like it in Java 2D. The direct manipulation of pixels is performed using multiple layers of objects pretty much according to the buzzword pipeline layed out in my original post. The vertical retrace synchronization is also there in some or another BufferManager object, but how it works on different OS's is anyone's guess. The hardware assisted scroll is not there, but hey, everyone is supposed to have such fast computers and video cards.
I was also commenting on 3-D techniques. You got me on that one because I don't have a clue as to 3-D techniques apart from the buzzwords, but it seems I am going to have to learn the 3-D techniques because no one makes 2-D games anymore. My data display goes back some 50 years when it was implemented using hardware filters and thermal paper, and that type of data display will probably be the standard in another 50 years, and I am going to have to figure out how to implement when no one supports 2-D graphics anymore (i.e. pixel-raster displays -- first "they" wouldn't let us touch the frame buffer because that was "too device dependent" and now "they" -- Microsoft with Longhorn, but others will follow -- won't let us touch individual pixels any more).
As software comes up with more advanced abstractions to separate software from specific hardware, it becomes increasingly hard to do interesting things apart from those things anticipated by the abstractions. I was seconding the view of the post to which I was responding that capabilities to do certain things will become lost.
Those were the VGA days where your display was simply a raster buffer. Those days were great for 2-D games (i.e. forms of scientific display where functions f(x,y) are rendered as textures or intensity plots).
The problem is that everyone is striving for such a perfect level of abstraction with graphics that I can't figure out what you are supposed to do in the darned system. Forget the hierarchy of raster, image, graphics context (as in the baroque edifice called Java 2-D). I guess we are to assume such high-res displays that we are supposed to abstract away pixels and do all of our 2-D f(x,y) displays using some kind of 3-D vertex-tiled-pipelined mishmosh.
You wouldn't happen to hang out with that Tablizer dude?
Tablizer has an entire OOP-is-mad Web site, and I could never figure out what he was talking about because I do a lot of GUI work where OO is as essential as air (although Tablizer thinks there could be some kind of table-driven GUI, but I think that is reinventing OO in the style of C-level Gnome programming).
I believe the point is that in certain domains, OO is the hammer that thinks every pointy thing sticking up is a nail.
Twin turbos are typically single-stage devices feeding separate cylinder banks (for shorter lengths of pipe and lower turbo lag). Two-stage radial compressors? 100 PSI boost pressure on a Diesel truck engine?
I apologize for the insult, but those specs seem strange.
I may add that there are other peoples in the world who will never, ever reclaim their homeland, and the Palestinians need to stop being such babies about it and move on. When they talk about getting their country back, they are not talking about Ramallah by the way. And there are factions in Israel that need to get a clue about ruling the West Bank and Gaza in perpetuity.
And as for this brave talk about how the US would respond to occupation, my parents have had up close and personal experience with being under two occupations, onlt one of them being US, and all this talk from various armchair "Partisans" is just that, talk.
I second everything you just said. "When you are unlucky, the next CPU you buy is faster in performing the task itself." To that I would add, "that fancy whiz-bang graphics card/audio processors/DSP chip is no longer being supported."
The problem is Moore's law. There is always going to be some special purpose DSP-GPU-coprocessor thingy that is faster than the CPU, but if you wait long enough, the CPU is going to be fast enough, and the CPU is going to have a much bigger customer base for your software product than requiring people to go out and buy the DSP-GPU-coprocessor du jour.
It has been the conventional wisdom for quite some time that parallel (MIMD) would be the way to take simple, cheap parts and turn them into more powerful computers. I remember attending a talk by Gordon Bell who showed VuGraphs of the purchase price divided by MIPS of the IBM big iron of the day, comparing it with the same figure of merit for Intel 8080 chips (yes, it was that long ago) and suggesting the way to go was to build computers out of a lot of 8080s.
What happened along the way is that the parallel approach never quite went anywhere (Illiac IV? Transputer?) while the chip makers followed Seymour Cray's approach to parallelism (pipeline, superscaler -- parallelism on a very low, hardware level -- sure the software could be tweaked to take advantage of it, but it didn't require a massive rewrite of the software.
Even hyperthreading was virtual multiprocessing instead of actually having multiple processors (I tried making jokes about Intel HT being a reinvention of the CDC 6600 to little effect), and I suppose software multi-tasking is using a single processor to emulate multiple processors. Oh, in terms of reinventing the super computer, whatever happened to "vector instructions" (I believe it is called SIMD). There was a feeble attempt with MMX and later SSE2, but there did not seem to be that much interest on the part of compiler writers to do anything with that.
So are people saying that we have reached the end of the road for the pipeline, superscaler, SIMD type approach and that now is finally the time things are going to shift to parallel machines (MIMD)? I heard the "supercomputer" folks have long made this switch.
I guess we already have the software tools to take advantage of multiple processors in the form of threads, although they are a PITA to get right given the current languages and software design patterns, although there may yet be a big payoff from object-oriented programming by running large numbers of objects as separate threads on large numbers of processors in the not-to-distant future. What are the supercomputer software people doing to cope?
People said the Windows API was hard, and while a C Windows API program may take up a couple of pages, it is not hard to go through it line by line and explain what every last function call and function argument is supposed to do. With COM and ActiveX, I have essentially given up on that for the reason you just outlined.
On the other hand, I believe Borland has "wizards" that make COM/ActiveX development tolerable while I don't know how anyone uses VS C++ to do any of this. Both C++ Builder and Delphi use this tool call the Type Library Editor for maintaining the IDL and automatically keeping a wrapper class in synch with that IDL. Yes, the Type Library Editor is buggy and quirky and using it to specify interfaces compared to real coding is like having sex by remote control.
But there is one thing the Type Library Editor can do that I have yet to figure out with, say, VS C++ and the ATL wizards: the Microsoft tools lets me add stuff, but it doesn't seem to let me remove stuff. The only way it seems to remove stuff is to edit sources, and instead of 2 files (.h and .cpp) there seem to be about 5 different files (.h, .cpp, idl, rc, and something else for good measure), and I have never been able to remove a method from an interface without corrupting everything beyond starting over again.
Having gotten over the learning curve, the Type Library Editor allows me to not only produce COM and ActiveX controls, it allows me to edit and tinker with their interfaces. Interfaces are supposed to be immutable, but being able to modify interfaces during development is important to me.
With that level of tool support, I am inclined to hang on to COM/ActiveX development instead of migrating to .NET. All kinds of software from VB 6 to Matlab to even .NET can host ActiveX components -- when is Matlab going to host a .NET component? When is IE going to host a client-side .NET component? By sticking with COM/ActiveX, I have a much broader set of consumers of software components.
Oh, you can use .NET/C# to develop COM/ActiveX components -- haven't tried it.
First off, he argues that the Harold Urey/Stanley Miller experiment idea of the Earth having a reducing atmosphere of hydrogen, methane, and ammonia is a crock because the asteroid bombardment from 4.5 Ga to about 4 Ga stripped the Earth of any atmosphere it had, and the initial atmosphere at the point was largely nitrogen and some CO2 and SO2 that came out of volcanoes.
Secondly, he argues that while oxygen can be created by UV splitting the water molecule, the bulk of our oxygen comes from photosynthesis over the ages, and that process also helped Earth hang on to its water because the photosynthesis oxygen acted as a getter for the hydrogen liberated by UV water splitting, preventing that process from bleeding off all the water as H2 vented into space and O2 chemically combined in the surface rocks (i.e. modern Mars).
Thirdly, he explains that photosynthesis generation of O2 is nearly balanced by respiration consumption of O2, and the only thing that causes buildup of O2 is burial of a tiny fraction of the organic matter each year to cause a small O2 surplus. If we burnt up the entire biosphere and all the known fossil fuel reserves, that would hardly put a dent in the O2 (it would do major things to CO2, which is currently a trace gas) because the amount of buried organics is huge compared to the current biosphere, and what is accessible as fossil fuels is a tiny amount of the total buried organics (most of the organics are sequestered as sandstones that are "very low grade" fossil fuels as it were).
The idea is that volcanoes pumped out all this carbon as CO2, the stuff that got converted to organics and buried reflected on the O2, some of the CO2 converted directly into carbonate rocks (limestone and dolomite) deposited as sediments. I guess volcanoes recycle some of the carbonate rocks back into CO2 output.
Now there is Thomas Gold with his oil and perhaps coal are not fossil fuels deal, and someone has recently posted on Slashdot recently how one can look at coal under a microscope and see how it is made up of plants. But even if all oil is organic, there had to be some primordeal source of carbon in the ground, which had to be the source of the CO2 puked out by volcanoes, which is the source of all of the oxygen once the CO2 got processed by plants and the organic matter got buried so that the plants were one step ahead making O2 compared to the animals and rotting vegetation (bacteria) eating O2.
Gold believes that oil comes from primordeal unoxidized carbon in the upper mantle -- kind of like the composition of carbonaceous carbon meteorites, but current thinking is the Late Heavy Bombardment (thing that formed the main Moon craters and basins and maria) not to mentioned the big smash that formed the Moon must have melted the Earth to quite a ways down.
My question is that even if Gold is wrong, what was the source of the carbon that fed CO2 to the volcanoes (the source of O2 is water?) that fed the plants over eons that gave us the oxygen atmosphere?
My blood pressure is 140/90, which used to be OK until they changed the rules about such things, so my doctor had me learn how to use a blood pressure cuff so I could take my own readings and be depressed how my exercise regimine and dietary changes were having little effect.
That lower number of 90 means 90 mm Hg, where one atmosphere is 760 mm Hg. The systolic (higher reading) is the peak of the pressure pulse of the arterial wave, while the diastolic (lower reading) is the baseline pressurization of your arteries relative to the environment. So that suggests that the human body itself is a space suit good to at least a 10th of an atmosphere.
For the Russian crew that was first to visit a space station that died on reentry when their Soyuz lost pressure, I heard that they just passed out and died from lack of oxygen -- they looked like they were just sleeping when the ground crew opened the hatch.
Is this PHP thing something I should know about? I Googled for it and it seems more proprietary than Perl or Python (didn't find a free download and docs). I have read the criticism comments that PHP is in the Visual Basic category of encouraging weak minds to tackle strong tasks.
Is this like Visual Basic in that it is cobbled together and lacks consistency and a uniform vision, or is it just simple to use and hence invites the scorn of the stronger minds? Is there some application domain where you really need to know this? Are there better substitutes? Does it have interesting ideas of its own worth emulating?
When the FFT came out, a lot of effort went into cutting down the number of arithmetic operations -- eliminating "trivial" operations like multiply by 1, multiply by 0 and add, as well as they higher radix butterflies (radix 4, 8, 16). The simple radix 2 FFT given in many DSP texts was offered as a "teaching example", but "production" FFT programs were complex masses of FORTRAN code that attempted to identify all the optimizations.
In my own experience, the simple radix 2 FFT is best for the modern x86 where as you say x86 is just an API to a RISC core. The minute you start putting in the optimizations, you need additional loops, branches, and tests, which trip up the pipeline. Arithmetic ops are fast compared to extra loops, branches, and tests, so the old mainframe FFT subroutines were optimizing the wrong thin.
Given the way processors are pipelined, you take such a hit for any kind of function call compared to a set of arithmetic operations that the only way to go is to call functions on arrays or slices of arrays to process batch of samples at a time. If you implemented a digital filter by calling a function for each sample you want to process, that is going to be slow, while if you call a function for batches of 1024 samples, you are really pretty insensitive to the function call overhead. If the function call overhead is high, just make the batch size bigger.
This arises in other situations: for operations over a network it is recommended to make your transactions blockier or chunkier; for raster graphics, the naive Windows SetPixel() command is slow compared to CreateDIBSection().
The amazing thing about this garlic mustard is that it grows in shade under dense stands of evergreen trees where nothing else grows. This plant must have some genetic advantage regarding photosynthesis under low light conditions.
Beside being a distant relative of broccoli, garlic mustard is a close relative to rape seed, of which Canola is a specially-bred variety, and rape seed is one of the oil seeds people talk about with regard to biodiesel solving the oil crisis.
Here I am, pulling garlic mustard until my hands are stiff and sore, and resistance to the garlic mustard is probably futile because it is going to take over everything anyway, but because of its unique genetics, we are probably going to be cultivating garlic mustard as an oil-seed crop when the fossil fuels run out.
For all the talk of Grey Goo, I believe I have identified to Green Goo of our post-oil age society, and it is garlic mustard.
Think about it -- the Sun has an estimated 10 billion year Main Sequence lifetime, of which it has used up 5 billion years. Also consider that over the Main Sequence lifetime it cannot achieve anywhere near complete burnup of the hydrogen and you can figure that the amount of hydrogen burnt per year is measured in parts per trillion.
There are heavier stars that burn their hydrogen much more quickly, and it is good for us that the Sun is so thrifty, but if you could duplicate the conditions in the core of the Sun, it wouldn't make for an economical energy source in an Earth-based power plant.
Calling President Reagan "the Gipper" was for his supporters a way of evoking the moral courage of the character portrayed in the movie while for his detractors it was a way to suggesting that Reagan was no more than a minor movie actor.
By the way, XP won't uninstall to roll back to W2K -- it was lucky that I had all my stuff on the old hard disk when I had upgraded to a bigger hard disk.
Turbo Pascal syntax was already an anachronism in its day -- Borland at some point was going to come out with Modula 2 -- the way Borland units in Turbo 4 was arguably better (interface and implementation in one source file) than what Wirth was doing.
Does anyone, ever, refer to a "railroad tracks" diagram to write programs in Pascal? Sure, Raskin is proud of his poster, and all the Pascal texts have that diagram, but is it useful to anyone other than a compiler developer? I always refer to source code snippets to figure out syntax rules.
Pascal syntax has its quirks, mainly in its unique use of begin, end, and semicolon, but I guess I have gotten used to that so much that I find Wirth's "cleaned-up" Pascal's (Oberon, Component Pascal) with their upper-cased reserved words and unfamiliar new keywords just about unreadable. But the main aspect of Pascal syntax is, of course, how easy it is to make a Pascal parser and how fast the Delphi compiler builds tens of thousands of lines of source.
The extreme of quirky-to-humans but good-for-computers syntax is Lisp. My understanding is that the good-for-computers part makes it easy to develop macros that operate on the parse tree instead of brute-force lexical subsitution as in C macros, making for the power of the language. The good-for-computers aspect to Pascal seems to be used only for making fast compilers -- perhaps even Pascal syntax is too complex to allow Lisp-style macros, although the Dylan language seems to combine aspects of Pascal and Lisp.
This claim needs to be laid to rest. Brent Spiner (the long-haired "mad scientist") had been studying the alien tech under wraps in Area 51 since the late 40's ("we don't get out much"), so Jeff Goldbloom had a head start in figuring out how the hack the alien net.
As to driving speed there is the range from the law, custom, and the editorial position of Car and Driver magazine. If a person drives a strict cruise-control 55 MPH on high-traffic two-lane highways, one is quickly going to get a "tail" of cars with people taking dangerous chances trying to pass. I find that driving in the 57-59 range cuts down on the traffic backup.
Our major high-traffic 4-lane roads are 65, and I suppose I could drive well below the posted limit in the right lane to save gas, but that too will pile up traffic big time. The convention in these parts is that it is OK to drive a strict 65 in the slow lane and let faster cars (and trucks!) go by in the left lane.
The roads are a shared resource and social use of those roads is both a safety and a social issue. Yeah, we have all had the drivers ed lecture about drive your own speed, don't worry about the tailgaters. But there a lot more of us driving these roads more miles than the 30 years ago when I took drivers ed, and a good part of how these roads handle the traffic is that people are maintaining speeds at close separations and showing some skill in their lane changes in those conditions. Cars have much better brakes than 30 years ago, and I believe there are many fewer drivers who have never been on an expressway before and are clueless about merges, lane changes, speeds, lane usage, and separations.
Drivers ed said never let a tailgater pressure you, but my 30 year experience is that if you just click in a couple MPH into your cruise control, often times the person behind you will give you a little breathing space. I have also heard of people being pressured into speeding up and getting a ticket from a police car. Given the attitude of the police (the emphasis is on speeding ticket revenue, not safety), a patrol car will have me planted in front of it going 55 with the traffic piled up behind. It is not a safe condition, but people are less likely to pass the patrol car than ol' me going 55 just by myself.
So is Gates Kilgore (the crazy but mainstream guy) while Jobs is Kurtz (the crazy and outside the mainstream guy)?
I drive two cars: a 3L 24V 96 Taurus with 130,000 miles and a head gasket oil leak in its "Duratec" engine, which I drive in winter, a 2.2 L 16V 97 Camry with 100,000 miles and a power steering leak which I drive in summer because I bought it in Florida and was not exposed to direct road salt, only salt ocean air. Last year I ran 7800 miles on the Taurus at an average MPG of 25 and 7500 miles on the Camry at an average of 31. Just as they put low miles on the Concorde fleet to keep them in service, my theory is that I can keep this "fleet" going until more high gas mileage cars are available to chose from. There are no "beater" Prius cars on the road to give experience on how their battery ages.
The EPA on the Taurus is 20/29 -- the 96 Taurus had rather tall gearing, and later model Tauri have lower EPA numbers, in part from being regeared. At one time I thought I got around 22 in summer driving in town, 32 on the highway, but I don't have records to back that up. The Camry EPA is 23/30. Last year (I have records) in town was 25 and on the road was 35.
There are raw EPA numbers, and then there are consumer EPA numbers. In the 70s and early 80s, the sticker gave raw EPA numbers, and no one ever got those. I had a 2.5L 8V Chevy Celebrity with EPA highway of 38, and the best I did was around 35. You can look up all this info at www.epa.gov and as it turns out, the raw EPA highway on the Camry is 38. EPA highway also represents driving in moderate traffic on an LA freeway (EPA city is on LA "surface streets", more representative of suburban driving than downtown Manhattan), and there is a lot of 50 MPH running in it -- I imagine if I drove highway at a strict 55 and had people stacked up behind me trying to pass I could do 38 in the Camry.
Now there was a recent Slashdot article about how no one seems to get 60 MPG out of a Prius. I drive to get good gas mileage (steady speeds, no faster than 65 on the highway, anticipate traffic as best I can to coast to slow down), but the consensus seems to be that hybrids are even more sensitive to driving technique and EPA numbers on those things is an elusive goal. If the EPA numbers on the Prius are that high, the raw EPA numbers must be proportionately higher, which means there is some driving condition where you could probably get 70 MPG in a Prius, but good luck achieving that.
A third way had been proposed by Max Faget for the "DC-3" straight-wing Shuttle proposal. The idea was to fly such a high angle of attack on reentry that one pretty much "pancaked" into the atmosphere. The straight wing approach was criticized for being unstable at hypersonic speeds, but my understanding of the idea was that by coming in belly first, the Faget orbiter was pretty much a blunt body with a cookie-cutter shape (the orbiter bottom and wings were like taking a cookier cutter to a blunt-body heat shield), and as such, it would be as stable and as controllable as an Apollo CM. The scary part of the Faget DC-3 was that having reentered the atmosphere, one had to do some kind of transition maneuver from the "full stall" reentry to start flying subsonicaly on those wings.
What is so innovative about the feathering is that they make a pancake reentry in the fashion of the "DC-3", but they have a workable way of making the transition to normal flight.
Story I heard was that "Wonderful Life" was dismissed among people in the know as a form of peer-review bypassed grandstanding. A lot of what Gould had to say is controversial. This is not to say that people can't take controversial or off-the-wall theories to the popular press (Wolfram's New Physics), but I had gotten the mistaken impression that "Wonderful Life" represented main-stream thinking on the subject, which it does not.
Since the UI is running in slow motion, it may be a useful debugging aid, in addition to the logging you can do with an emulated system.
I make part of my living from commercial sale of scientific visualization software. It performs in software what used to require a $20,000 special-purpose instrument using embedded DSP processors (ouch, more buzzwords). The software is locked into Windows because it uses 1) CreateDIBSection() to allow direct manipulation of pixels in the manner of the post to which I was responding, 2) ScrollWindowEx() so the display can be scrolled using video card hardware, requiring the software to only redraw a small portion with each update, and 3) IDirectDraw::WaitForVerticalBlank() to synchronize scrolls and redraws with the vertical retrace for tear-free video.
Those three calls in Windows came about because Microsoft was trying to wean game developers away from DOS, where the direct control of copying pixel values into a video frame buffer was highly valued. Those three calls were to make 2-D games possible under Windows; those calls also happened to make my data visualization software possible.
There is almost but not quite like it in Java 2D. The direct manipulation of pixels is performed using multiple layers of objects pretty much according to the buzzword pipeline layed out in my original post. The vertical retrace synchronization is also there in some or another BufferManager object, but how it works on different OS's is anyone's guess. The hardware assisted scroll is not there, but hey, everyone is supposed to have such fast computers and video cards.
I was also commenting on 3-D techniques. You got me on that one because I don't have a clue as to 3-D techniques apart from the buzzwords, but it seems I am going to have to learn the 3-D techniques because no one makes 2-D games anymore. My data display goes back some 50 years when it was implemented using hardware filters and thermal paper, and that type of data display will probably be the standard in another 50 years, and I am going to have to figure out how to implement when no one supports 2-D graphics anymore (i.e. pixel-raster displays -- first "they" wouldn't let us touch the frame buffer because that was "too device dependent" and now "they" -- Microsoft with Longhorn, but others will follow -- won't let us touch individual pixels any more).
As software comes up with more advanced abstractions to separate software from specific hardware, it becomes increasingly hard to do interesting things apart from those things anticipated by the abstractions. I was seconding the view of the post to which I was responding that capabilities to do certain things will become lost.
The problem is that everyone is striving for such a perfect level of abstraction with graphics that I can't figure out what you are supposed to do in the darned system. Forget the hierarchy of raster, image, graphics context (as in the baroque edifice called Java 2-D). I guess we are to assume such high-res displays that we are supposed to abstract away pixels and do all of our 2-D f(x,y) displays using some kind of 3-D vertex-tiled-pipelined mishmosh.
Tablizer has an entire OOP-is-mad Web site, and I could never figure out what he was talking about because I do a lot of GUI work where OO is as essential as air (although Tablizer thinks there could be some kind of table-driven GUI, but I think that is reinventing OO in the style of C-level Gnome programming).
I believe the point is that in certain domains, OO is the hammer that thinks every pointy thing sticking up is a nail.
I apologize for the insult, but those specs seem strange.
And as for this brave talk about how the US would respond to occupation, my parents have had up close and personal experience with being under two occupations, onlt one of them being US, and all this talk from various armchair "Partisans" is just that, talk.
The problem is Moore's law. There is always going to be some special purpose DSP-GPU-coprocessor thingy that is faster than the CPU, but if you wait long enough, the CPU is going to be fast enough, and the CPU is going to have a much bigger customer base for your software product than requiring people to go out and buy the DSP-GPU-coprocessor du jour.
What happened along the way is that the parallel approach never quite went anywhere (Illiac IV? Transputer?) while the chip makers followed Seymour Cray's approach to parallelism (pipeline, superscaler -- parallelism on a very low, hardware level -- sure the software could be tweaked to take advantage of it, but it didn't require a massive rewrite of the software.
Even hyperthreading was virtual multiprocessing instead of actually having multiple processors (I tried making jokes about Intel HT being a reinvention of the CDC 6600 to little effect), and I suppose software multi-tasking is using a single processor to emulate multiple processors. Oh, in terms of reinventing the super computer, whatever happened to "vector instructions" (I believe it is called SIMD). There was a feeble attempt with MMX and later SSE2, but there did not seem to be that much interest on the part of compiler writers to do anything with that.
So are people saying that we have reached the end of the road for the pipeline, superscaler, SIMD type approach and that now is finally the time things are going to shift to parallel machines (MIMD)? I heard the "supercomputer" folks have long made this switch.
I guess we already have the software tools to take advantage of multiple processors in the form of threads, although they are a PITA to get right given the current languages and software design patterns, although there may yet be a big payoff from object-oriented programming by running large numbers of objects as separate threads on large numbers of processors in the not-to-distant future. What are the supercomputer software people doing to cope?