I kind of find it interesting that using Wine to support Windows apps under Linux violates a kind of moral purity.
The original idea behind GNU and then Linux was to imitate UNIX with a free version. UNIX was considered a powerful and useful operating system, but it was proprietary as all anything and required expensive software licenses.
So Windows is proprietary and bound up in licenses, and people think it is useful to have a free work-alike, and they just happen to layer that work-alike on top of Linux instead of writing their own kernel.
Having tried Windows apps under Xandros, my only gripe is that the screen paints are slow, ScrollWindowEx() has a slow implementation, and IDirectDraw.WaitForVerticalBlank() gives a return code saying that it works but it doesn't wait for the vertical retrace -- it is stubbed out. While the native Linux apps are peppier, screen speed is still not one of the standout qualities.
While we are on the subject, there are the purists who insist on talking about GNU/Linux because Linux is only the kernel and GNU is all of the tools. Well, then maybe we should talk about Gnome/GTK/Linux and KDE/Qt/Linux as these are the configurations to do GUI's and we can also say that OS-X is in reality Finder/Quartz/Darwin. And maybe there is a set of users (and developers) who want Win32 API/Linux (i.e. Wine/Linux).
So Linux is better than Windows. Is that true of the GUI layer? Is there anything about Gnome/GTK or KDE/Qt that is really that standout and advanced beyond Win32/GDI?
If I want to break loose from the Microsoft monopoly, Gnome/GTK or KDE/Qt don't really do anything for me. The don't seem to be any more advanced than Win32 API, they are missing some features that Win32 API has, and I would be breaking my backside writing for some small percentage of the desktop market that keeps promising to break out any year now. If I wanted to play around with a GUI tool set in a minority market because it has a cool factor, I would give Xcode/Cocoa a look.
The word-on-the-street I get from my CS department contacts is that if I want to develop for Linux to do it in Java (or Python/wxPython -- in my particular software niche where I am currently Windows bound, another developer has a product using a mix of TCL/TK and low-level C to not be OS bound). Not that the Java GUI API stands out, but at then I would (more or less) achieve OS independence. None of these guys are telling me that I should target Gnome or KDE.
All humor aside, whenever the discussion of comments comes up it takes on the character of instructing one's disciples on Holy War.
I can understand where people are coming from that they fume about having code without comments dumped on their laps. On the other hand, how do they know they will understand the code with the comments? Or even understand their own comments a year from now?
I am more in the lean-comment rely-on-descriptive-variable-and-function-name camp, and if there is commenting, it should concentrate on interfaces or on broad architectural outlines. If I find myself commenting on how I did a hack, I ask if I can rewrite the code in a non-hacky way.
By the way, for all you Delphi programmers out there, is the VCL source code from Borland commented? Not really. It may have banner copyright notices but it is pretty comment spares. And when there is a comment, it is usually a pretty gross hack they are rationalizing.
Sometimes I wonder if what we are doing with objects is a version of Greenspun's 10th law -- that every (language X) program is a buggy, incomplete reimplementation of Common Lisp.
Some of the patterns don't seem to have good implementations. Take Singleton, please! It gets hard to implement the one-and-only one instance of an object and in a non GC language to enforce that it gets deleted correctly at the end. Are there any clean implementations of Singleton in any of the regular OO languages?
I am all for identifying the patterns and extending languages to simplify their implementation -- otherwise you are spinning your wheels trying to rewrite the same (potentially buggy) code all the time.
I ran the experiment synched to vertical retrace. Experiment 1: 60 Hz vertical retrace, 60 FPS. Experiment 2: 120 Hz vertical retrace, 120 FPS. Experiment 3: 120 Hz vertical retrace, 60 FPS (frame updated every other vertical retrace). Frame synching performed with IDirectDraw::WaitForVerticalBlank() under Windows DirectX. I was generating my own screen frames using the Windows ScrollWindowEx call (allows hardware-assisted scroll followed by paint of only the invalid regions -- effective way of getting a full 120 FPS).
Experiment 1 was flickery but no motion blur, experiment 3 was no flicker, no motion blur, experiment 2 was no flicker but definite motion blur.
That is the whole point of TFA. People had been focused on boosting the response time of LCD pixels but that helped motion blur a little but didn't solve the underlying problem. Getting blur-free motion from display of a sequence of still frames requires strobing the frames. Based on Philips saying that a 30 percent strobe interval didn't fully remove the motion blur, I am guessing a non-strobed display would need to run upwards of 300 FPS with 3 ms pixel response time to get a non-blur motion with a non-strobed LCD display.
People are treating me like a fringe-science nut case for coming up with independent confirmation for a vision psychology finding coming out of a major industrial lab. Go figure.
Well, I am kind of surprised that movie projectors double-flash 24 FPS up to 48 FPS and get good blur-free pans and scene motion.
My own experiments show that double-flashing 60 FPS video up to 120 FPS on a CRT (running the refresh rate at 120 Hz but updating scrolls at 60 Hz) produced a pronounced motion blur. But I have never tried to show a scrolling voice print with a movie projector either.
As to the health risks of flicker, we have been viewing movies for over 4 generations and TV for the last two of those generations. I don't know of anyone who has an LCD as their TV apart from this one nursing home which got one last year. I also never heard of the movie theatre as posing a "severe health risk to a non-insignificant number of people." Bringing back a problem? LCDs as a means of watching TV are the most part still parked on store shelves and people are watching TV on CRTs or seeing movies at the multiplex.
The movie camera along with the movie projector work on the principle of freeze-framing a segment of film, strobing that segment with a shutter, and then advancing the film to the next frame segment. That has the effect of flashing a still image, blanking the image, and then flashing a still image of the next frame. This famously flickers -- movies are not called "flicks" in slang for no reason -- but it is a particularly good way of representing scenes with motion in them that must work on some aspect of the physiology and neural pathways of vision.
The video camera and the CRT video monitor work on an entirely different principle. There is no shutter and no freezing of the image -- the image is continuosly scanned in a progression of horizontal lines. The CRT video monitor is also a good rendering of motion -- the combination of a video camera and CRT monitor, however is not. A lot of the "higher production values" TV shows are shot on film, scanned on to video tape, and then broadcast to get the motion sampling effect of the movie camera for better motion rendering among other effects.
The LCD may be far better tech for being parked in front of a computer monitor viewing source listings for 8-10 hours a day. When the LCD gets into people's living rooms when the HDTV deadline is approached (was it pushed back?), there is going to be a different group of people viewing entirely different content, and I am telling you there are going to be dissatisfied consumers viewing motion-blurred HDTV mush who will want their old TVs back.
My scrolling voice print application isn't even 1% of the population, but it has given me a perspective on viewing motion on LCD monitors. Very few movies or TV shows have steady pans -- the motion is usually confined to small portions of a scene. But there is something "not quite right" about TV viewed on LCD screens, and if you study the scene carefully, you will notice the motion blur.
As to flicker, I consider myself flicker sensitive -- I can see 75 Hz refresh as blinking away -- but 100 Hz or higher refresh is clearly available technology and looks rock solid as far as I am concerned. As far as motion blur, everytime I scroll text in an editor window, it is a mush of unsynched motion blur, but it does not have to be. We have enough computing power to smooth scroll editor windows if we want to -- DEC used to have a glass terminal that smoothed scrolled -- this would require vertical-retrace synched mouse events to pull off. Why don't we have that -- is the geek community so very happy with blurred text scrolls?
Anyway, some dudes at Philips are experimenting with an LCD version of the movie projector as a good way to represent blur-free motion. If they market it, you will be able to go down to Sears and view the Philips LCD side by side with the conventional LCD and as a consumer decide for yourself whether the crisper motion is balanced against flicker and whether you like the conventional LCD better. No one is pulling your conventional LCD computer monitor from the market.
In some regards, geeks are at the forefront of appreciating the fine points of technology. In other regards, geeks are too ready to engage in the "suspension of disbelief" required to accept a technology on its own terms and don't see things as the rest of the world does.
I believe it was in "Accidental Empires" where the author is amused by some geek trying to tell him how great a LaTeX manuscript looked. To the author, the Computer Modern font rendered on a 300 DPI laser printer looked like a blurred mess, especially compared to a book done on a photo typesetter, but to the geek, the LaTeX output and the typeset book were indistinguishable.
Look people, there are vision psychology issues with rendering motion on LCD screens, and you all may swear how you like your LCD monitors and even do gaming or view videos and "can't tell any blur compared to a CRT", but there is a big difference, and when there is a big push to make LCDs consumer's primary way of watching TV, there is going to be a problem, and it is encouraging that at least someone at Philips is aware of it and looking into ways of dealing with it.
I came across the motion blur problem because I write software to do digital sound spectrograms or "voice prints." The gold standard for this type of display is the Kay 5500, DSP-based hardware that displays a rock-solid voice print scroll on a VGA monitor -- you may have seen a Kay 5500 on one or other TV crime drama where they "analyse voice prints" to try to pin an answering machine threat on a suspect.
You can do a Kay 5500 type display in software, but it requires synching the scroll to vertical retrace. Once you get such a display, it looks great on a CRT, but it looks like absolute blurry mush on even the fasted-responding LCD.
I tried every which way to scroll an LCD display to get a smooth camera pan effect. Failing that, I tried to rig a CRT to look bad like an LCD. If I set the refresh rate of the CRT to 60 Hz, the scroll looks fine, although the display is quite flickery. At a refresh rate of 120 Hz, the scroll looks great and the flicker is gone. If I run the refresh rate at 120 Hz but repeat the frame for two refreshes, scroll the scene, repeat the next frame for two refreshes, simulating an LCD at 60 Hz, it looks muddy, just like an LCD.
Well, it seems that Philips knows that you have to strobe the image to get a good scroll/pan/motion effect. A movie camera/projector strobes the image; a CRT strobes the image in a kind a progressive-scan sort of way; a CRT holds an unstrobed image, and changes the scene. It is like the difference between an impulse-sampled and a step-sampled D/A.
I wish Philips every success with their strobed LCD. If the Philips technique works, I know I am buying a Philips if I get an LCD HDTV.
You know that just about everybody charges some 10-15 bucks just to throw out a microwave, and we all know someone who is accumulating microwaves in their basement because, y'know, they break and they can't be repaired and people buy new.
I suppose people will have to write in house sale contracts that all of the microwaves don't go with the house.
My ideas is that some Mafia guy will come up with a racket to get rid of the microwaves. You will go away someplace on vacation, you will come home, and as soon as you press the button to lift the garage door, you will see to your horror that someone has broken in and filled your garage to the rafters with . . . microwaves.
Dunno, I used to suscribe to the Amory Lovins notion of energy efficiency as an energy resource and the possibility of a "soft path" where we figure out how to conserve, be efficient, and structure our lifestyles to fit within restricted or renewable resources.
The problem you run into is that as you make something more efficient, it becomes more useful, and you end up consuming even more. This David Lawyer fellow has a transportation Web site where he argues that automobiles are considerably more energy efficient than the trains they replaced (steam locomotives, heavy-weight train cars), but the automobile has made possible such an explosion of travel that we are consuming many times more transportation energy than in the train days. Contrary to some expectations, the train was not particularly efficient on coal or gallon of oil per seat-mile, even with the introduction of Diesels but keeping traditional-style railroad cars, but the auto was so much more convenient that people ended up travelling more.
With autos, energy efficiency has increased sustantially in the past 20 years, SUVs not withstanding, but most of that efficiency increase has gone into a lot more driving instead of saving on oil imports.
Now we have this "New Urbanism" thing where we are trying to recreate some kind of urban golden age along the lines of a Marshall Islands cargo cult -- going through the motions without really understanding cause and effect. The new thing is to put "traffic calming devices" -- these big concrete squats in the middle of intersections. The idea is to bring back the urban golden age by putting obstacles to slow traffic down without changing any of the other variables -- the two-career household, the expectation to take kids to hockey practice, etc. -- which has the effect that everyone I see going through these things tries to "set up a line" through them without slowing down.
Some years ago I had a business trip to London, but I got there a day early.
So, thoroughly jet lagged, I decided to do all of the touristy places in London -- St Paul's, Westminster Abbey, Piccadily Circus, etc -- using a day pass to the Tube.
I would go to a station, pick out some name of some destination I had heard of, pick out a route, board a train, and off I would go.
This method would take me smack dab in the middle of all of these places, but of course I had no idea how I had gotten there because all of the travel was under ground -- I would just materialize in one or other scene out of a tourist guidebook in the manner of a Star Trek transporter just beaming me there.
It was a bit disconcerting because one would pop out of the ground and it took a while to get one's bearings. And like Kirk telling his compatriots "remember where we parked!", it was helpful to remember how to get back to the Underground Station.
Wasn't there a Man from U.N.C.L.E. episode where the bad guy tries to intimidate Solo by handcuffing him to the switch track controls of a train set with two trains, only each train has a tank car carrying nerve gas?
Solo keeps the trains from colliding, but the bad guy keeps cranking up the speed until Solo slips and puts the two trains on the same track, only the bad guy stops the trains because he is only trying to scare Solo at that point.
I heard that Carson told the joke some while ago "McDonalds now says they sold a BILLION hamburgers . . . I guess they are now on their second horse.
He came back the next day to say "McDonald's is threatening to sue me if I don't take back what I said. OK, McDonald's is NOT on their second horse . .."
Hey, I bet at least half of the people here were told at one time or another that you "throw like a girl." If you didn't, you would rank much higher on the social dominance order, be more attractive to babes, and wouldn't even know about this place.
What a relief. Now I can tell people that as a kid, I could throw like a cave man.
I guess you didn't see that scene in "Lawrence of Arabia" where Peter Toole meets up with Omar Shariff at a desert well (that scene was ripped off in one of the later Star Trek movies but played differently).
Do you suppose that one can attract users by providing something useful to developers?
I know it is a chicken-and-egg situation on whether users or developers lead. The Mac when it came out had a lot going for users -- there was nothing like it at the time for doing stuff with text and graphics in documents -- it started the whole desktop publishing area. But it was an incredible bear to develop for. Starting out, you had to get a Lisa or something and cross compile and cross develop, and this business of windows and resources and event loops was all a great mystery at the time.
Microsoft was always easier to develop for -- in the DOS days all of the "hooks" were documented and in the early Windows days, Microsoft was famous for peddling the SDK cheap. OS/2 shot itself in the foot by adopting a game console maker's approach to selling development software.
But if Microsoft was not your cup of tea, there was always the Borland alternative on Microsoft OS's, which practically invented the IDE. Between Microsoft Visual Basic and Borland Delphi, you had two powerful tools for taming the beast of the GUI application.
One strength of OS-X they tell me is xcode and Cocoa. I am told this system takes the next step beyond the events-properties-functions model of widgets and VB-style drag-and-drop layout. You would think this would attract developers just for the cool factor which would lead to apps, more users, and so on. But for most programmers, Objective C is sufficiently oddball -- it is if under Windows, the only thing available was Delphi Pascal and people were thinking "that Delphi thing is great, but who want's to learn Pascal just to use it?"
I guess Windows has the apps, OS X has the coolness factor, BeOS had the multimedia responsiveness (which may have come at a price of developers having to write multi-threaded C++ code). Is xcode/Cocoa that big of a breakthrough that I should get a Mac and start hacking on that?
It is not just a matter of Linux vs Windows or Linux vs OS X. I think it is also a matter of commercial vs Open Source, but the key difference may not be the profit motive as such but the Alan Cooper "inmates running the asylum" effect.
Matlab is a big, big deal on the engineering campus -- can't seem to get engineering students to use anything else, even those engineering students who are comfortable using other things than Windows (mainly Solaris on SUNs). Our engineers learn Java in their intro programming course and learn Matlab in their numerical methods course -- C++ seems to be vanishing from the CS courses. The students have little use for Java but just love Matlab.
Matlab is also something I never particularly liked -- it is grossly proprietary, expensive, interpreted and slow, hacked together with the "feature of the month/next version release." It is notably deficient in such things as a good object model, structs, a good namespace model, or any of a number of things expected of a language to write large, reliable software systems. It is the Visual Basic of the engineering world.
Then there is Python, the up and coming New Thing. Python is also interpreted -- slow, yes, but not different than Matlab on that score, but like Matlab very flexible in having an eval loop and good runtime error messages. But unlike Matlab, Python is as FOSS as it gets and also appears to be based on some rational language concepts that makes it scalable to more than toy programs.
OK, so I am looking very seriously into Python. Given my background a prejudices, I have done little work in Matlab, so I am learning Matlab and Python (and wxPython for the GUI) about at the same time. Given my interests, I am using Matlab to develop an ActiveX GUI app and haven't ever used Matlab for anything numerical -- most of the Matlab users are using it for numerical apps with maybe a simple Figure Window plot without knowing how to get started on a GUI.
For all of its user-friendly nature, Matlab is far from perfect and I have done my share of "beating my head against the wall" trying to get certain features to work. But for all of its more Computer Science-approved language features, Python presents a much more sticky learning curve -- I seriously question if it is ready for prime time of substituting for Matlab among the engineering students.
Examples? wxPython is supposed to have really good ActiveX support right now, but it runtime errored on me when I tried to pass an IDispatch reference to one ActiveX object as an argument to a function call to another ActiveX object. This works in Matlab. Passing an IUnknown reference in Matlab does not work, but they are up front about it and tell you it doesn't.
This also used to work in wxPython using an earlier library for ActiveX support. So I download the wxPython sources and chase down some function names from the runtime error message, and I see that the conversion routines from ActiveX variants to Python objects only works for strings, floats, and ints and everything else is a comment with a "to do" list. Great.
This is just one example -- I have a list of several. Python and Matlab are both academically-oriented coming out of the academic environment and with strong packages for numerical computing. Python went the FOSS road while Matlab turned proprietary and commercial.
What must be different is that I believe that MathWorks must have some "adults" supervising the "geeks" so as to shape and mold the Matlab experience and preserve user friendliness. The Python community is "geeks run wild" or "geeks breaking features from earlier versions and fixing them when they get around to it." Same must hold true for Linux vs OS X and other comparisons.
Of course the TV series and the spun off movie were quite thoroughly high camp -- kids could take the drama seriously but adults could get into the campy melodrama aspects.
So Batman is hanging from a rope ladder when a shark jumps up and chomps down on his leg. He is punching the shark -- punching being TV/Adam West-Batman's main mode of fighting, criminals having guns not withstanding -- and he asks Robin to "go get the shark repellent" because punching isn't doing the job.
The payoff comes when Robin climbs back into the helicopter/batcopter/thingamagig, and there is a whole rack of clearly labeled "repellents" -- barracuda, whale, and after a bit of searching, Robin comes up with shark.
I guess the closest the more recent movies have come to the TV series is where Jim Carrey as the Riddler yells, "I suppose people think that I am . . . over the top!" which is a great way of thinking of Jim Carrey's entire acting career.
There is a trend in education to 1) give "meaningful" assignments instead of rote drill and 2) require involvement of the parents or give assignments beyond the resources of the kids to force involvement of the parents.
Some edu-weenies decide that parental involvement is the key to a child's success, so the parents are forced to be involved according to the edu-weenie assessment of what constitutes involvement.
OK, this is a made-up example, but suppose the homework assignment is "plot price vs size for floral arrangements from five different stores." The parents end up having to drive around to those five stores to collect the data for the "experiment." Yeah, this example is horribly contrived, but what I am talking about is HW beyond the resources of the student which require the parent to spend lots of time doing the heavy lifting and grunt work.
If I had children, I would help with HW of course, but I would be mighty resentful of what appeared to be HW for the parents to satisfy some cooked-up school requirement.
As explained in Milton Thompson's "Flight Without Wings", the Steve Austin crash was an actual crash at Edwards of one of the lifting bodies. But in real life, the pilot actually walked away from that one -- apparently they needed extra weight in the nose to balance the craft for flight, so they used that weight to beef up the safety cage for the pilot.
Spoiler Warning: Star Wars movies have it too
on
A Gamer's Manifesto
·
· Score: 5, Interesting
Spoiler Warning: I guess it is not much of a spoiler because Attack of the Clones was shown on Fox TV a week ago to get you to go out to see Revenge of the Sith at the movies.
OK, I am not a gamer and I hadn't seen Clones until last week on TV, but I am interested in graphics and adventure/SF/fantasy/whatever-the-heck-Star-Wars-i s-supposed-to-be. I also channel-flipped into Clones about halfway through, where in a great piece of Lucas dialog, Padme orders Anakin to "follow my lead" and they go into the battle droid factory.
Something about that part of the movie seemed so cheesy for something as big-budget and hyped as Star Wars, and I couldn't put my finger on it. Padme and Anakin go down this long corridor when suddenly all of those buzzing winged monkey creatures come out of the walls, and then Anakin defends himself and Padme by hacking them up with his light saber. I guess Padme leads by crawling through a hatch to fall into the actual droid factory with Anakin following that lead into the same mess, where they have escaped the buzzing winged monkeys but Anakin not only light saber all of the droids but also dodge these stamping presses of the droid assembly line while Padme rides around in a foundry ladle.
If it weren't for all of us being fans of the Star Wars franchise, when you think of it, this kind of hero and damsel in peril cliche gets much, much better treatment by the Indiana Jones movies. But there was something I just didn't get about the Clones scene until I read the Gamer's Manifesto post. The hero triggered the alarm and had to fight off hundreds of BWMs (buzzing winged monkeys), for no good reason to the plot or the character or the story apart from when you walk down some long corridor with nothing in it, hundreds of BWMs will appear from seemingly nowhere -- it is just the formula. Also, after escaping the BWMs, you will have to fight droids and have to engage in what I guess is called a jumping puzzle -- avoiding the stamping presses, and I guess, also jumping across moving platforms now that I think about that scene in Clones.
Not only is single-handed combat against hundreds of BWMs followed by a jumping puzzle a gaming cliche, it has crossed over to become a movie cliche, and I guess it is just as lame in the movies as it is in games.
I have been looking long and hard at Python, but there are some "not quite there yet" issues on which people can offer guidance.
I never really got interested in Matlab as my main development environment for numerical work for a variety of reasons -- some historical, some technical, some commercial, and some personal prejudice. But given that Math Works has the engineering/science academic market sewn up, given that students and faculty are hooked on it, I have found another use for it.
People talk about Matlab as a numerical "scripting" environment, but it is more than that. I have been using it as the numeric/graphical counterpart to a browser, a kind of sandboxed GUI operating system. It does an OK job as a container for ActiveX controls, and if ActiveX is not your thing, Matlab 7 also now acts as a container for Java Swing controls. So not only can you script numerical algorithms written in other languages, a Matlab figure window (graphics-object container) can host either ActiveX or Java widgets, you can issue commands to those widgets as well as receive callbacks from them.
I would really like to have Python in place of Matlab for engineering teaching, etc, but there are some holdups. Arrays are pretty basic to signal processing and related numerical work I am interested in. Matlab's basic data type is of course a matrix, arrays are simply 1 by N matrices, and array data is efficiently interchanged with Fortran/C/C++ using the Matlab libraries. Array data is interchanged with ActiveX functions using Variant variables of safe arrays and with Java arrays pretty much transparently and with a tolerable level of translation or marshalling overhead.
Arrays are a Python add-on and not really part of the core Python language (lists and dictionaries are good and powerful, but you take a performance hit using them to do signal or image processing where each list element is a pixel or a signal sample). As to the add-on, there is both Numeric
and Numarray, and while Numarray is newer and recommended, a lot of Python array stuff lives in the Numeric world. And support for numeric arrays is far from universal -- I am pretty sure that the ActiveX support marshals Variant-variable safe arrays as Python lists; the ActiveX/Win32 stuff doesn't know about the numeric array types, making it pretty clunky to pass an image raster to an ActiveX control.
So, what is the current, May 2005 story on array support in Python and which graphing/plot packages are compatible?
After an entire semester introducing a framework to do certain numerical computations in Java, and explaining that most of the Matlab functions are implemented in Fortran, C/C++, and more recently Java and that Matlab is really just a way of scripting numerical algorithms written in those other languages, students go off and do their semester project in Matlab.
Matlab is the Visual Basic of numerical computing -- a hodge-podge of grafted-on features. Yes, it gets a job done, yes it promotes code reuse because of the extensive numerical and graphing libraries, but as a "teaching language" it is weak on important concepts, and it is proprietary as all anything, turning engineering colleges into trade schools for MathWorks. And once engineering students glom on to it, you cannot, just cannot get them to use anything else.
I don't care if they implement a numerical algorithm in C++ or if they implement a numerical algorithm in Java -- both of those languages are pretty much callable from anything else on a wide variety of platforms. Yeah, you can call into Matlab too, but is there a free runtime you can download like with Java? And any kind of numerical algorithm using looping instead of built-in vector operations is going to be dog slow, so it is useless for any "production" use (in an academic environment, production use is where you throw a problem at it that taxes the capacity of whatever generation computers you have -- otherwise it is a toy numerical problem where everything you can discover with it has already been done.)
You should get yourself a "handle" by logging in to Slashdot. Your contribution was very valuable, but it will not receive moderation points as Anonymous Coward (unfortunate appellation), and will be buried under the other responses.
My mother had this expression "having the bartender as your employment reference."
I remember our local left-of-center rag going on about American profligate use of energy, pointing to color TVs as offenders, how black and white TVs use much less energy and are preferred in . . . Cuba. Never mind that modern solid-state color TVs use about as much electricity as an average light bulb and that Cuba's energy conservation kick may have more to do with their economics rather than Uncle Fidel being friends with Amory Lovins.
I would put the love of Linux in the same category. Sure, it is great that someone economizes by not paying a tithe to Microsoft, but bragging about Cuba switching to Linux is kind of like saying, "Linux, the choice of a third-world failing Communist dictatorship with an aging nutcase leader."
Oh, and about the response that Cuba is the victim of the U.S. trade embargo -- I believe just about everyone else in the world trades with Cuba and visits Cuba.
The original idea behind GNU and then Linux was to imitate UNIX with a free version. UNIX was considered a powerful and useful operating system, but it was proprietary as all anything and required expensive software licenses.
So Windows is proprietary and bound up in licenses, and people think it is useful to have a free work-alike, and they just happen to layer that work-alike on top of Linux instead of writing their own kernel.
Having tried Windows apps under Xandros, my only gripe is that the screen paints are slow, ScrollWindowEx() has a slow implementation, and IDirectDraw.WaitForVerticalBlank() gives a return code saying that it works but it doesn't wait for the vertical retrace -- it is stubbed out. While the native Linux apps are peppier, screen speed is still not one of the standout qualities.
While we are on the subject, there are the purists who insist on talking about GNU/Linux because Linux is only the kernel and GNU is all of the tools. Well, then maybe we should talk about Gnome/GTK/Linux and KDE/Qt/Linux as these are the configurations to do GUI's and we can also say that OS-X is in reality Finder/Quartz/Darwin. And maybe there is a set of users (and developers) who want Win32 API/Linux (i.e. Wine/Linux).
So Linux is better than Windows. Is that true of the GUI layer? Is there anything about Gnome/GTK or KDE/Qt that is really that standout and advanced beyond Win32/GDI?
If I want to break loose from the Microsoft monopoly, Gnome/GTK or KDE/Qt don't really do anything for me. The don't seem to be any more advanced than Win32 API, they are missing some features that Win32 API has, and I would be breaking my backside writing for some small percentage of the desktop market that keeps promising to break out any year now. If I wanted to play around with a GUI tool set in a minority market because it has a cool factor, I would give Xcode/Cocoa a look.
The word-on-the-street I get from my CS department contacts is that if I want to develop for Linux to do it in Java (or Python/wxPython -- in my particular software niche where I am currently Windows bound, another developer has a product using a mix of TCL/TK and low-level C to not be OS bound). Not that the Java GUI API stands out, but at then I would (more or less) achieve OS independence. None of these guys are telling me that I should target Gnome or KDE.
I can understand where people are coming from that they fume about having code without comments dumped on their laps. On the other hand, how do they know they will understand the code with the comments? Or even understand their own comments a year from now?
I am more in the lean-comment rely-on-descriptive-variable-and-function-name camp, and if there is commenting, it should concentrate on interfaces or on broad architectural outlines. If I find myself commenting on how I did a hack, I ask if I can rewrite the code in a non-hacky way.
By the way, for all you Delphi programmers out there, is the VCL source code from Borland commented? Not really. It may have banner copyright notices but it is pretty comment spares. And when there is a comment, it is usually a pretty gross hack they are rationalizing.
Some of the patterns don't seem to have good implementations. Take Singleton, please! It gets hard to implement the one-and-only one instance of an object and in a non GC language to enforce that it gets deleted correctly at the end. Are there any clean implementations of Singleton in any of the regular OO languages?
I am all for identifying the patterns and extending languages to simplify their implementation -- otherwise you are spinning your wheels trying to rewrite the same (potentially buggy) code all the time.
Experiment 1 was flickery but no motion blur, experiment 3 was no flicker, no motion blur, experiment 2 was no flicker but definite motion blur.
That is the whole point of TFA. People had been focused on boosting the response time of LCD pixels but that helped motion blur a little but didn't solve the underlying problem. Getting blur-free motion from display of a sequence of still frames requires strobing the frames. Based on Philips saying that a 30 percent strobe interval didn't fully remove the motion blur, I am guessing a non-strobed display would need to run upwards of 300 FPS with 3 ms pixel response time to get a non-blur motion with a non-strobed LCD display.
People are treating me like a fringe-science nut case for coming up with independent confirmation for a vision psychology finding coming out of a major industrial lab. Go figure.
My own experiments show that double-flashing 60 FPS video up to 120 FPS on a CRT (running the refresh rate at 120 Hz but updating scrolls at 60 Hz) produced a pronounced motion blur. But I have never tried to show a scrolling voice print with a movie projector either.
The movie camera along with the movie projector work on the principle of freeze-framing a segment of film, strobing that segment with a shutter, and then advancing the film to the next frame segment. That has the effect of flashing a still image, blanking the image, and then flashing a still image of the next frame. This famously flickers -- movies are not called "flicks" in slang for no reason -- but it is a particularly good way of representing scenes with motion in them that must work on some aspect of the physiology and neural pathways of vision.
The video camera and the CRT video monitor work on an entirely different principle. There is no shutter and no freezing of the image -- the image is continuosly scanned in a progression of horizontal lines. The CRT video monitor is also a good rendering of motion -- the combination of a video camera and CRT monitor, however is not. A lot of the "higher production values" TV shows are shot on film, scanned on to video tape, and then broadcast to get the motion sampling effect of the movie camera for better motion rendering among other effects.
The LCD may be far better tech for being parked in front of a computer monitor viewing source listings for 8-10 hours a day. When the LCD gets into people's living rooms when the HDTV deadline is approached (was it pushed back?), there is going to be a different group of people viewing entirely different content, and I am telling you there are going to be dissatisfied consumers viewing motion-blurred HDTV mush who will want their old TVs back.
My scrolling voice print application isn't even 1% of the population, but it has given me a perspective on viewing motion on LCD monitors. Very few movies or TV shows have steady pans -- the motion is usually confined to small portions of a scene. But there is something "not quite right" about TV viewed on LCD screens, and if you study the scene carefully, you will notice the motion blur.
As to flicker, I consider myself flicker sensitive -- I can see 75 Hz refresh as blinking away -- but 100 Hz or higher refresh is clearly available technology and looks rock solid as far as I am concerned. As far as motion blur, everytime I scroll text in an editor window, it is a mush of unsynched motion blur, but it does not have to be. We have enough computing power to smooth scroll editor windows if we want to -- DEC used to have a glass terminal that smoothed scrolled -- this would require vertical-retrace synched mouse events to pull off. Why don't we have that -- is the geek community so very happy with blurred text scrolls?
Anyway, some dudes at Philips are experimenting with an LCD version of the movie projector as a good way to represent blur-free motion. If they market it, you will be able to go down to Sears and view the Philips LCD side by side with the conventional LCD and as a consumer decide for yourself whether the crisper motion is balanced against flicker and whether you like the conventional LCD better. No one is pulling your conventional LCD computer monitor from the market.
I believe it was in "Accidental Empires" where the author is amused by some geek trying to tell him how great a LaTeX manuscript looked. To the author, the Computer Modern font rendered on a 300 DPI laser printer looked like a blurred mess, especially compared to a book done on a photo typesetter, but to the geek, the LaTeX output and the typeset book were indistinguishable.
Look people, there are vision psychology issues with rendering motion on LCD screens, and you all may swear how you like your LCD monitors and even do gaming or view videos and "can't tell any blur compared to a CRT", but there is a big difference, and when there is a big push to make LCDs consumer's primary way of watching TV, there is going to be a problem, and it is encouraging that at least someone at Philips is aware of it and looking into ways of dealing with it.
I came across the motion blur problem because I write software to do digital sound spectrograms or "voice prints." The gold standard for this type of display is the Kay 5500, DSP-based hardware that displays a rock-solid voice print scroll on a VGA monitor -- you may have seen a Kay 5500 on one or other TV crime drama where they "analyse voice prints" to try to pin an answering machine threat on a suspect.
You can do a Kay 5500 type display in software, but it requires synching the scroll to vertical retrace. Once you get such a display, it looks great on a CRT, but it looks like absolute blurry mush on even the fasted-responding LCD.
I tried every which way to scroll an LCD display to get a smooth camera pan effect. Failing that, I tried to rig a CRT to look bad like an LCD. If I set the refresh rate of the CRT to 60 Hz, the scroll looks fine, although the display is quite flickery. At a refresh rate of 120 Hz, the scroll looks great and the flicker is gone. If I run the refresh rate at 120 Hz but repeat the frame for two refreshes, scroll the scene, repeat the next frame for two refreshes, simulating an LCD at 60 Hz, it looks muddy, just like an LCD.
Well, it seems that Philips knows that you have to strobe the image to get a good scroll/pan/motion effect. A movie camera/projector strobes the image; a CRT strobes the image in a kind a progressive-scan sort of way; a CRT holds an unstrobed image, and changes the scene. It is like the difference between an impulse-sampled and a step-sampled D/A.
I wish Philips every success with their strobed LCD. If the Philips technique works, I know I am buying a Philips if I get an LCD HDTV.
I suppose people will have to write in house sale contracts that all of the microwaves don't go with the house.
My ideas is that some Mafia guy will come up with a racket to get rid of the microwaves. You will go away someplace on vacation, you will come home, and as soon as you press the button to lift the garage door, you will see to your horror that someone has broken in and filled your garage to the rafters with . . . microwaves.
The problem you run into is that as you make something more efficient, it becomes more useful, and you end up consuming even more. This David Lawyer fellow has a transportation Web site where he argues that automobiles are considerably more energy efficient than the trains they replaced (steam locomotives, heavy-weight train cars), but the automobile has made possible such an explosion of travel that we are consuming many times more transportation energy than in the train days. Contrary to some expectations, the train was not particularly efficient on coal or gallon of oil per seat-mile, even with the introduction of Diesels but keeping traditional-style railroad cars, but the auto was so much more convenient that people ended up travelling more.
With autos, energy efficiency has increased sustantially in the past 20 years, SUVs not withstanding, but most of that efficiency increase has gone into a lot more driving instead of saving on oil imports.
Now we have this "New Urbanism" thing where we are trying to recreate some kind of urban golden age along the lines of a Marshall Islands cargo cult -- going through the motions without really understanding cause and effect. The new thing is to put "traffic calming devices" -- these big concrete squats in the middle of intersections. The idea is to bring back the urban golden age by putting obstacles to slow traffic down without changing any of the other variables -- the two-career household, the expectation to take kids to hockey practice, etc. -- which has the effect that everyone I see going through these things tries to "set up a line" through them without slowing down.
So, thoroughly jet lagged, I decided to do all of the touristy places in London -- St Paul's, Westminster Abbey, Piccadily Circus, etc -- using a day pass to the Tube.
I would go to a station, pick out some name of some destination I had heard of, pick out a route, board a train, and off I would go.
This method would take me smack dab in the middle of all of these places, but of course I had no idea how I had gotten there because all of the travel was under ground -- I would just materialize in one or other scene out of a tourist guidebook in the manner of a Star Trek transporter just beaming me there.
It was a bit disconcerting because one would pop out of the ground and it took a while to get one's bearings. And like Kirk telling his compatriots "remember where we parked!", it was helpful to remember how to get back to the Underground Station.
Solo keeps the trains from colliding, but the bad guy keeps cranking up the speed until Solo slips and puts the two trains on the same track, only the bad guy stops the trains because he is only trying to scare Solo at that point.
He came back the next day to say "McDonald's is threatening to sue me if I don't take back what I said. OK, McDonald's is NOT on their second horse . . ."
The whole effect is of a too-slick lawyer trying to pass himself off as just an ordinary Joe. Or Neanderthal.
What a relief. Now I can tell people that as a kid, I could throw like a cave man.
I guess you didn't see that scene in "Lawrence of Arabia" where Peter Toole meets up with Omar Shariff at a desert well (that scene was ripped off in one of the later Star Trek movies but played differently).
I know it is a chicken-and-egg situation on whether users or developers lead. The Mac when it came out had a lot going for users -- there was nothing like it at the time for doing stuff with text and graphics in documents -- it started the whole desktop publishing area. But it was an incredible bear to develop for. Starting out, you had to get a Lisa or something and cross compile and cross develop, and this business of windows and resources and event loops was all a great mystery at the time.
Microsoft was always easier to develop for -- in the DOS days all of the "hooks" were documented and in the early Windows days, Microsoft was famous for peddling the SDK cheap. OS/2 shot itself in the foot by adopting a game console maker's approach to selling development software.
But if Microsoft was not your cup of tea, there was always the Borland alternative on Microsoft OS's, which practically invented the IDE. Between Microsoft Visual Basic and Borland Delphi, you had two powerful tools for taming the beast of the GUI application.
One strength of OS-X they tell me is xcode and Cocoa. I am told this system takes the next step beyond the events-properties-functions model of widgets and VB-style drag-and-drop layout. You would think this would attract developers just for the cool factor which would lead to apps, more users, and so on. But for most programmers, Objective C is sufficiently oddball -- it is if under Windows, the only thing available was Delphi Pascal and people were thinking "that Delphi thing is great, but who want's to learn Pascal just to use it?"
I guess Windows has the apps, OS X has the coolness factor, BeOS had the multimedia responsiveness (which may have come at a price of developers having to write multi-threaded C++ code). Is xcode/Cocoa that big of a breakthrough that I should get a Mac and start hacking on that?
Matlab is a big, big deal on the engineering campus -- can't seem to get engineering students to use anything else, even those engineering students who are comfortable using other things than Windows (mainly Solaris on SUNs). Our engineers learn Java in their intro programming course and learn Matlab in their numerical methods course -- C++ seems to be vanishing from the CS courses. The students have little use for Java but just love Matlab.
Matlab is also something I never particularly liked -- it is grossly proprietary, expensive, interpreted and slow, hacked together with the "feature of the month/next version release." It is notably deficient in such things as a good object model, structs, a good namespace model, or any of a number of things expected of a language to write large, reliable software systems. It is the Visual Basic of the engineering world.
Then there is Python, the up and coming New Thing. Python is also interpreted -- slow, yes, but not different than Matlab on that score, but like Matlab very flexible in having an eval loop and good runtime error messages. But unlike Matlab, Python is as FOSS as it gets and also appears to be based on some rational language concepts that makes it scalable to more than toy programs.
OK, so I am looking very seriously into Python. Given my background a prejudices, I have done little work in Matlab, so I am learning Matlab and Python (and wxPython for the GUI) about at the same time. Given my interests, I am using Matlab to develop an ActiveX GUI app and haven't ever used Matlab for anything numerical -- most of the Matlab users are using it for numerical apps with maybe a simple Figure Window plot without knowing how to get started on a GUI.
For all of its user-friendly nature, Matlab is far from perfect and I have done my share of "beating my head against the wall" trying to get certain features to work. But for all of its more Computer Science-approved language features, Python presents a much more sticky learning curve -- I seriously question if it is ready for prime time of substituting for Matlab among the engineering students.
Examples? wxPython is supposed to have really good ActiveX support right now, but it runtime errored on me when I tried to pass an IDispatch reference to one ActiveX object as an argument to a function call to another ActiveX object. This works in Matlab. Passing an IUnknown reference in Matlab does not work, but they are up front about it and tell you it doesn't.
This also used to work in wxPython using an earlier library for ActiveX support. So I download the wxPython sources and chase down some function names from the runtime error message, and I see that the conversion routines from ActiveX variants to Python objects only works for strings, floats, and ints and everything else is a comment with a "to do" list. Great.
This is just one example -- I have a list of several. Python and Matlab are both academically-oriented coming out of the academic environment and with strong packages for numerical computing. Python went the FOSS road while Matlab turned proprietary and commercial.
What must be different is that I believe that MathWorks must have some "adults" supervising the "geeks" so as to shape and mold the Matlab experience and preserve user friendliness. The Python community is "geeks run wild" or "geeks breaking features from earlier versions and fixing them when they get around to it." Same must hold true for Linux vs OS X and other comparisons.
So Batman is hanging from a rope ladder when a shark jumps up and chomps down on his leg. He is punching the shark -- punching being TV/Adam West-Batman's main mode of fighting, criminals having guns not withstanding -- and he asks Robin to "go get the shark repellent" because punching isn't doing the job.
The payoff comes when Robin climbs back into the helicopter/batcopter/thingamagig, and there is a whole rack of clearly labeled "repellents" -- barracuda, whale, and after a bit of searching, Robin comes up with shark.
I guess the closest the more recent movies have come to the TV series is where Jim Carrey as the Riddler yells, "I suppose people think that I am . . . over the top!" which is a great way of thinking of Jim Carrey's entire acting career.
Some edu-weenies decide that parental involvement is the key to a child's success, so the parents are forced to be involved according to the edu-weenie assessment of what constitutes involvement.
OK, this is a made-up example, but suppose the homework assignment is "plot price vs size for floral arrangements from five different stores." The parents end up having to drive around to those five stores to collect the data for the "experiment." Yeah, this example is horribly contrived, but what I am talking about is HW beyond the resources of the student which require the parent to spend lots of time doing the heavy lifting and grunt work.
If I had children, I would help with HW of course, but I would be mighty resentful of what appeared to be HW for the parents to satisfy some cooked-up school requirement.
As explained in Milton Thompson's "Flight Without Wings", the Steve Austin crash was an actual crash at Edwards of one of the lifting bodies. But in real life, the pilot actually walked away from that one -- apparently they needed extra weight in the nose to balance the craft for flight, so they used that weight to beef up the safety cage for the pilot.
OK, I am not a gamer and I hadn't seen Clones until last week on TV, but I am interested in graphics and adventure/SF/fantasy/whatever-the-heck-Star-Wars-i s-supposed-to-be. I also channel-flipped into Clones about halfway through, where in a great piece of Lucas dialog, Padme orders Anakin to "follow my lead" and they go into the battle droid factory.
Something about that part of the movie seemed so cheesy for something as big-budget and hyped as Star Wars, and I couldn't put my finger on it. Padme and Anakin go down this long corridor when suddenly all of those buzzing winged monkey creatures come out of the walls, and then Anakin defends himself and Padme by hacking them up with his light saber. I guess Padme leads by crawling through a hatch to fall into the actual droid factory with Anakin following that lead into the same mess, where they have escaped the buzzing winged monkeys but Anakin not only light saber all of the droids but also dodge these stamping presses of the droid assembly line while Padme rides around in a foundry ladle.
If it weren't for all of us being fans of the Star Wars franchise, when you think of it, this kind of hero and damsel in peril cliche gets much, much better treatment by the Indiana Jones movies. But there was something I just didn't get about the Clones scene until I read the Gamer's Manifesto post. The hero triggered the alarm and had to fight off hundreds of BWMs (buzzing winged monkeys), for no good reason to the plot or the character or the story apart from when you walk down some long corridor with nothing in it, hundreds of BWMs will appear from seemingly nowhere -- it is just the formula. Also, after escaping the BWMs, you will have to fight droids and have to engage in what I guess is called a jumping puzzle -- avoiding the stamping presses, and I guess, also jumping across moving platforms now that I think about that scene in Clones.
Not only is single-handed combat against hundreds of BWMs followed by a jumping puzzle a gaming cliche, it has crossed over to become a movie cliche, and I guess it is just as lame in the movies as it is in games.
I never really got interested in Matlab as my main development environment for numerical work for a variety of reasons -- some historical, some technical, some commercial, and some personal prejudice. But given that Math Works has the engineering/science academic market sewn up, given that students and faculty are hooked on it, I have found another use for it.
People talk about Matlab as a numerical "scripting" environment, but it is more than that. I have been using it as the numeric/graphical counterpart to a browser, a kind of sandboxed GUI operating system. It does an OK job as a container for ActiveX controls, and if ActiveX is not your thing, Matlab 7 also now acts as a container for Java Swing controls. So not only can you script numerical algorithms written in other languages, a Matlab figure window (graphics-object container) can host either ActiveX or Java widgets, you can issue commands to those widgets as well as receive callbacks from them.
I would really like to have Python in place of Matlab for engineering teaching, etc, but there are some holdups. Arrays are pretty basic to signal processing and related numerical work I am interested in. Matlab's basic data type is of course a matrix, arrays are simply 1 by N matrices, and array data is efficiently interchanged with Fortran/C/C++ using the Matlab libraries. Array data is interchanged with ActiveX functions using Variant variables of safe arrays and with Java arrays pretty much transparently and with a tolerable level of translation or marshalling overhead.
Arrays are a Python add-on and not really part of the core Python language (lists and dictionaries are good and powerful, but you take a performance hit using them to do signal or image processing where each list element is a pixel or a signal sample). As to the add-on, there is both Numeric and Numarray, and while Numarray is newer and recommended, a lot of Python array stuff lives in the Numeric world. And support for numeric arrays is far from universal -- I am pretty sure that the ActiveX support marshals Variant-variable safe arrays as Python lists; the ActiveX/Win32 stuff doesn't know about the numeric array types, making it pretty clunky to pass an image raster to an ActiveX control.
So, what is the current, May 2005 story on array support in Python and which graphing/plot packages are compatible?
Matlab is the Visual Basic of numerical computing -- a hodge-podge of grafted-on features. Yes, it gets a job done, yes it promotes code reuse because of the extensive numerical and graphing libraries, but as a "teaching language" it is weak on important concepts, and it is proprietary as all anything, turning engineering colleges into trade schools for MathWorks. And once engineering students glom on to it, you cannot, just cannot get them to use anything else.
I don't care if they implement a numerical algorithm in C++ or if they implement a numerical algorithm in Java -- both of those languages are pretty much callable from anything else on a wide variety of platforms. Yeah, you can call into Matlab too, but is there a free runtime you can download like with Java? And any kind of numerical algorithm using looping instead of built-in vector operations is going to be dog slow, so it is useless for any "production" use (in an academic environment, production use is where you throw a problem at it that taxes the capacity of whatever generation computers you have -- otherwise it is a toy numerical problem where everything you can discover with it has already been done.)
You should get yourself a "handle" by logging in to Slashdot. Your contribution was very valuable, but it will not receive moderation points as Anonymous Coward (unfortunate appellation), and will be buried under the other responses.
I remember our local left-of-center rag going on about American profligate use of energy, pointing to color TVs as offenders, how black and white TVs use much less energy and are preferred in . . . Cuba. Never mind that modern solid-state color TVs use about as much electricity as an average light bulb and that Cuba's energy conservation kick may have more to do with their economics rather than Uncle Fidel being friends with Amory Lovins.
I would put the love of Linux in the same category. Sure, it is great that someone economizes by not paying a tithe to Microsoft, but bragging about Cuba switching to Linux is kind of like saying, "Linux, the choice of a third-world failing Communist dictatorship with an aging nutcase leader."
Oh, and about the response that Cuba is the victim of the U.S. trade embargo -- I believe just about everyone else in the world trades with Cuba and visits Cuba.