Izumi Blog: Ralf - Random Thoughts
Index: Home     | What Is Izumi | Misc Links   | Random Thoughts | Too Much To Read | The Rant Vault | Quotes
Dev:   Projects | Ideas For Dev | Nerdkill | Rig | Hint

This place contains misc remarks and notes.
They are not quite rants though :-).
This blog page uses reverse-date ordering.
Site License And Disclaimer as well as contact information are available here.
$Id: Random Thoughts.izu,v 1.22 2005/11/05 21:55:57 ralf Exp $

«»  2005/04/14 «» What is the question again?  «»

I don't think any amount of money can actually bring one happiness and balance of life, unless one has this potential already in oneself. Or unless one likes to be brainwashed that is.

Think 42. What is the question, again?

It is purely subjective (as in subjective part 4).

Then of course the real question is "what do you want?"

Yet that does not say anything about reasonable goals. What is the point of having goals that one cannot reach? A logical answer would be there isn't, yet that leaves dreams and hopes out of the equation and these are good too.

So a more accurate question is "what do you really want and what do you think about it?". (Of course the question is no longer simple and looses its appeal.)

There isn't a "one size fits all" answer to this.

The answer lies into you but you have to understand it's dynamic, it evolves with time. It goes away then comes back. Sometimes everything is possible and sometimes one reaches rock bottom. Then it's time to bounce.

Anyone that tries to solve all of your problems at once using a simple 2 steps program that is effortless is just trying to sell you one big bridge. (It's also amusing when someone else is selling you self-help :-)) That doesn't mean external help is wrong. It's just that it has to be put in perspective. The problem is in perspective of "what"?

Which brings me to my conclusion: if you don't know where you want to go, you can't decide which path is right. And even if you do there are many paths to go there and many ways to bounce back. And if you can't find where you want to go, you should at least know where you stand and where you do not want to go.

_ _ _ _

Some may say this was all abstract and may even conclude through flawed material logic that it thus means nothing.

Maybe it is, yet this is more or less what I though about a long time ago, or at least how I though about it.

Where was I and where did I want to go, and especially where I didn't want to go. There are no answers I could give to you -- they only apply to me and they are mostly non verbal, non written answers, more like feelings that I would have no idea how to communicate. Which is OK because I don't have to and quite frankly I wouldn't want to.

The only thing I'm pretty sure is that as of right now I am probably exactly where I think I want to be. What is close to me is what matters -- again I'm talking about feelings, not distance. Whom I cherish are close to me and I feel in sync with those that I care for.

It may be a world with a lots of ups and downs. Sometimes it rains yet it's OK since most mornings are simply beautiful.

Introspection can have its benefits from time to time :-)

[permalink]


«»  2004/11/22 «» How easy is it to build code?  «»

In BitWorking's Longhorn versus the light of day article, one can find a quote and a link from Ole Eichhorn's PDC/Longhorn essay stating:

"The most important thing is not how easy it is to build code, the most important thing is how well the code runs once it is built."

In the context of the article this is a very valid comment, namely that Longhorn doesn't seem to provide much enhancement from a user point of view, only from a developer point of view.

Outside of this context, this nice rhetorical quote has several flaws:

So I can't agree with the quote up there. Yet I can't argue either.

Development tools are progressing. If you listen to that quote above, you'd still be programming in assembly language since it's the result that matters, right? Tools advance. Not that much but some. Yet it seems like the complexity of the tasks we try to solve with these tools increase faster than the ability to solve provided by these tools.

The point is, no matter how you slice it, developing an application will always be a complicated task. By definition meta-information is necessarily more complex than the information it describes.

The holy grail of the development tools only exist in StarTrek ("Computer, simulate a complete human being in the holodeck" or "Computer, compensate for the alpha variation in the quantum flux, whatever that is") in a future where seat belts no longuer exist.

[permalink]


«»  2004/11/20  «»

As of November 2004, the SNE project is officially abandonned and development has been moved into SNE 2.

So was SNE 1 in vain? For sure the only thing that remains from it are the writings in the dev page. I keep them around for nostalgia if not for real purpose. Yet it was not in vain. It's never in vain. Every home project I worked always brought back something, although admitedly rarely what I envisionned at first.

Summary of this project:

It's all a matter of perspective I guess.

[permalink]


«»  2004/11/14  «»

A look at the new C++ syntax to handle .Net Managed objects in C++/CLI aka Whidbey Beta 1:

There are obviously some pros and cons there.

The old syntax was based on patching C++ with a __gc attribute for pointers and news. That was cumbersome, inefficient and messy. I can't say I liked it. It seemed to me like an inappropriate answer to a problem that shouldn't be.

The new syntax has definitely more potential -- at least feature wise.

From a pure language design perspective, I scream when I read "some keywords consist of two words separated by white space. These aggregate keywords are considered keywords despite the fact that, used separately, they have different meanings. The word ref, for example, used without class is not a keyword and can be used as a regular identifier.".

Then some other keywords such as "delegate" are described as "context sensitive".

Then you get that:

	MyClass ^x  = gcnew MyClass;    // handle on managed object
	int     %ti = x->i;             // tracking reference
Ouch. What are they thinking?

Obviously they are running out of good keyword names and symbols.

So it's still an inappropriate answer to a problem that shouldn't be as I see it.

Obviously some people have huge amounts of C++ code and need to have it run under the CLR because that's what they are asked to do. In this case C++/CLI is a good compromise, although I'd like to see the result of a big project mixing regular C++ with CLR. It has all the smell of mythical projects maintaining COBOL source code because they have so much of it, it wouldn't be convenient to rewrite it into something else that is not necessarily much better anyway at doing the same thing.

The CodeProject article mentions another purpose is to have deterministic destruction and better native interop support. Maybe, but that's nothing that can't be fixed in C# or VB for example. So it's a fake argument.

My point of view is that C++ is an old language which syntax has already been abused enough. It was a hack in the first place anyway. Then templates made it awkward. And now this C++/CLI is just one more layer of aberration in a pathetic attempt to teach an old dog new tricks which are better done by newer languages such as C#.

The only thing I miss is the good old limited macro processor. It isn't has fancy as M4 (which means people don't need to be wizards to actually use it) yet it allows for a good saving of typing and at the same time it is part of the problem since it has been abused so much to allow C/C++ to do things that were not designed into it (which is OK) and render source code write-only (which is not OK yet is an acceptable side effect.)

Ideally something like C# should have a better version of the macro processor. For example it is convenient to have a macro that will generate a bunch of methods (think "getString, getInt, getFloat, etc.") which only differ slightly.

A simple solution would be to embed JavaScript huh sorry EcmaScript into a C# source code that is parsed by the C# compiler and generate C# statements. Or simply use C#-based macros to do this. Now that would be fun.

Oh and if they can add anonymous functions (called Anonymous Methods in C# 2.0) and real closures (c.f. blog post here) too, that would be great :-)

[permalink]


«»  2004/08/28  «»

Pros of a Mac laptop:

Cons of a Mac laptop:

[permalink]


«»  2004/07/28  «»

From OSNews: Programming Tools for the Hobbyist

There are interesting comments in the comments section. Sure C++ is complex. Someone can start learning C++ with its hairy syntax and only start learning the complex stuff after a while. A beginner would be best limiting him/herself to a subset of the language.

From a beginner point of view, it would be better to start with a more high-level language though or even scripting language. This way the beginner can start focusing on programming algorithm rather than loosing despair with the complicated syntax and convoluted idiosyncrasies of C++. Ideally a beginner should look away from C++ first anyway, unless the idea is to be able to get a job ASAP. Some programming concepts can be grabbed more easily by looking at Smalltalk, Lisp or ML/Haskell in the first place and then eventually going back to C++ via Java or C#.

To focus back to the article and the review of the different environments available, the one major difference is how much the editor is going to actually help the beginner.

For example the Java part of Eclipse has native support for refactorization -- this is a major help imho, even for a professional programmer. Most editors, including VS.Net, don't go far enough. Sure Visual or XCode gave auto-completion, for example, but that's not enough. Current tools could go farther:

Eclipse's JDK is also neat in that it allows one to create new classes or methods by a right click on an unknown identifier, and of course the default templates can be customized. Any thing that helps reduces the actual syntax-related typing and focus on the actual implementation is good to have.

[permalink]


«»  2004/06/17 «» Negative criticism  «»

This is about negative criticism.

This morning Greg Dean from Real Life was ranting about much he hates to receive negative comments after posting his comics strips.

I couldn't agree more. It's his comic and he's making it available for free. If someone has a problem with it, well just don't read it and go away. I personally never saw any objectionnable material in his comics, so frankly I fail to see why would anyone be pissed. At the contrary there are some good jokes (if you're in the kind of gamer's context to be able to understand them) and there are some funny French-bashing ones which I find rather amusing myself (in case you read this out of context: yes I am French and I'm not patriot enough to get offended when someone say French never win wars, first because I don't think wars are a good ideas to start with and second I don't take it personnaly. Besides at least in one case such as Vietnam the French did run away as fast as they could once they understood it would become an ugly mess whilst other arrogantly though they could win it.)

So good for him, as I can relate a bit.

I use to receive some negative criticism on my open source projects. Note that I also got some over-the-top ecstatic comments. Both made me wonder on the sanity of the sender, these people either have too much free time or are bored in life and have nothing better to do.

I don't mind positive criticism, such as the four known regular RIG users whom occasionnaly send me an email with issues or ideas. That is useful even if most of the time the ideas or the bugs will simply get logged in the todo list for quite a while before I can address them. There's also the occasional thank-you email when I solved someone's problem. And of course there's this nice email conversation I had with Scott Scriven from PhotoFS where we compared issues and implementations. Those are nice and keep me going in the long term.

No the annoying ones are "X is ugly/sucks", "it doesn't do Y", "Z is better", etc. that seem to drop out of nowhere and without much of a context. That category also used to involve the occasional "please open source PowerPulsar", yet that stopped a while ago (maybe my comment about it worked or simply BeOS is finally really dead?)

See these projects are open source projects. They are because I want it them to be; I've got some ideas, I want to share them; I don't expect to make any money out of them (these are not breakthrough, I don't believe in commercial software that self-promotes itself and I don't have the time nor the energy to promote them.) So basically they are free for others to grab, use, share and expand.

Why would anyone sensible just come out of nowhere and tell me they suck? I know they don't otherwise I wouldn't put them out there to share. At least one of them is useful and the other are well unuseful yet completly harmless. It's not even like I'm offending anyone with them.

Negative criticism about negative criticism? It completly sucks!

[permalink]


«»  2004/06/17 «» SUV  «»

In the Big and Bad explaining why S.U.V.s are so insecure for their own drivers, the author explains how Consumers Union test vehicle safety by driving a car thru a setup of cones to measure accident avoidance.

I couldn't help myself but think that's great and how much I'd like to be able to practice my car on such an obstacle track. A couple years ago I did an autocross learning session. I have been autocrossing only once or twice since, but that was not the major point. The interesting part was to be able to stop the car as short as possible without locking the wheel (I don't have ABS) and handle the car on a narrow track. Towards that end, even the couple of autocross sessions I did were most interesting.

In France it took me 4 tries to get my driving license. The first time I failed because I was a bad driver. I went straight ahead in a "wrong direction" street. I felt very bad about it for two reasons. First because of the treachery of the test (the instructor will tell you "Please drive your vehicle" with no further indication when you have the choice between two roads at an intersection, one which is the wrong direction and the other being the only real choice -- they trick you, in purpose). So I was mad at that for a while. And second I was mad at myself since I obviously couldn't analyze the road. Being mad and depressed actually helped me understand how to drive better. For the story the 3 other tries were mostly due to administrative freaking reasons -- 2nd try I was still passing the test in Paris and naively though they wanted me to drive "normally" that is being aggresive, cutting off everyone else and so forth. So they failed me for that. Then I had to move and pass the test somewhere else and I was still driving in the aggresive Paris manner which was not suitable there. The 4th time I passed because I drove the way I finally understood they wanted me to drive: make it obvious you're looking around you even if it is exagerated, be dynamic yet not aggressive, be polite and respect others, etc.

The point is that once I got my French driving license, I really knew how to deal with a car in a "normal" Paris-like traffic. I probably had 50 or 60 hours of driving lessons and practice, it got more expensive that it should have been, yet I'm glad I did all this. I learned a lot.

Constrast this with here in California where I passed the driven test by driving literally 5 minutes in a residential area at 2 PM in a week day. That means it was empty. No traffic. I was asked to make a 3-points U-turn in a stree wide enough to just make a straight U-turn (in France they ask you do that once if you're in a narrow street with the most possibly annoying dips on each side.) Most of all I was driving a basic small rental car I rented for the occasion. Oh and still I drove at 25 mph in a 15 mph zone. Yet I got the license.

Thus I clearly realized how lame the driven test is here in California to get the driving license. And I believe I already knew how to drive descently and confidently.

Ideally it would be nice if such an accident/obstacle avoidance setup on a track with cones was part of the required tests to get a licence. To make it even more obvious, place a couple dummies as obstacles. S.U.V. and truck owners would certainly understand that bad vehicle handling and extra length of brake zone mean deadly accidents for others. Unfortunately such a requirement will never happen -- it's expensive to change the trivial procedure to get a permit, it would requires DMVs to have such a track and qualified personel; but most of all a lot of lobbies would simply hate that and people would complain they would have no chance in real life to actually learn how to avoid obstacles when learning how to drive.

Which is exactly my point.

[permalink]


«»  2004/05/27  «»

If you go to the GNU home page, you will notice that the word "GPL" is not present.

Eventually you can find "Licenses" under the category "Software" on the left vertical menu, but that's not as obvious. Since the GPL is the corner stone of the GNU movement, I'm surprised they believe people are so smart they will need to use the search or the sitemap to locate the GPL home page. I must not be. Google found it for me.

Now GNU's major problem is not really advertising the GPL anymore. Lucky enough for them, the SCO scam Group did a good job of advertising the GPL. No, their problem is to get people say "GNU/Linux" instead of "Linux". Remove the notion that the kernel is the operating system. Reestablish their brand name basically.

[permalink]


«»  2004/05/08  «»

This is about Roomba, the floor vacuum cleaner.

To quote David Sedaris, I find a vacuum cleaner a lot more interesting than a guitar :-)
And this one tops them all. So after a lot of reading on the pros and cons, I finally got one and I'm not disappointed.

There's some interesting points in this article: http://www.businessweek.com/technology/content/may2004/tc2004056_2199_tc_168.htm

I'm not going to give you the "how magical it is" that you can find on any boring (yet useful) review on the net. Here I'm giving my point of view as a geek & software engineer.

Let's say at the first glance I was impressed by the mechanical design.

For detailed pictures of the internals try these sites:

For a retail price of $200 (and a lot less on eBay), it packs a small number of sensors used in most interesting ways. There aren't tons of sensors, but they are cleverly used. The front bumper has a sensor on the top to detect the virtual wall infrared beam. It also has a sensor on the right to help follow a wall. There are sensors under the front bumper to detect holes (stairs' steps).

Also interesting, the wheels are not just statically fixed to the body. They can move up and down by an inch or so. I guess that comes handy to keep traction contact when climbing on a carpet or any other small bump. Incidentally this seems to be used to know when the robot is lifted (it stops).

The shape is round. It seemed just cute at first, until I realized that allows the robot to need only two wheels, one on each side, for propulsion. It will generally turn right over itself when confronted to an obstacle. There's a small non powered wheel in the front, and none at the rear. That seemed odd when I unpacked it, till I put the battery in: it puts the center of gravity between the three wheels. That obviously leaves the rear part free of a clumsy wheel, thus more space for the mechanic of the cleaning brush and dust bin.

Another interesting detail visible at first is that the vacuum block is also not statically fixed to the body. It can oscillate a bit on a transversal axis, which is probably designed to allow it keep the best contact with the surface to be cleaned.

The front bumper has an IR sensor that allows it to follow walls. The sensor is on the right. It becomes obvious when the robot is being used, whenever it finds a wall on its right side it tries to follow it like the stick-to-one-wall strategy to exit a maze. More on that later.

Also visible on the link above is the omnidirectional IR sensor. Very clever. Oddly enough, the virtual wall contains one. I fail to see why it would need to detect, I would have assumed it's enough for it to blindly emit an IR beam.

Under the unit, there's not much to mention except the curious side cleaning brush, a very curious piece of flexible plastic with two little brushes at each end, the whole thing spinning fast. It seems to me like it must bump in one of the wheels at each rotation. Also it seems notably useless on carpet and usable only on hard surfaces.

Navigation.

The most interesting part is of course to see the robot in action. Now remember this is one big blind robot with several white canes. Obviously the front bumper is the major one.

There are obviously several strategies for moving, with obviously randomness added to the process.

One of them is an expanding whirlpool pattern. The robot goes in circles, expanding the radius slowly. The area covered seems to be a circle with a diameter of 3 or 4 feet (then it changes strategies). It seems to generally start with that pattern, which would be an obvious design choice if people are expected to place their cleaner where it matter most for them. Other times after hitting an obstacle the robot just goes straight for a few feet and starts this same whirlpool pattern. Since it can't know what space is left in the room, I would assume the choice is made on what space was covered on a straight line since the last obstacle.

Another strategy is to go straight till it hits a wall and then follow the wall on the right. That generally starts by a 45 degrees turn left, then it kind of goes parallel to the wall, each time getting closer till it hits some kind of threshold, moves a little farther and slowly gets closer and repeats the process. So visually it does a little wobbling kind of a straight line. Actually pretty funny to watch. The distance it keeps from the wall can be adjusted by sliding a knob in the front bumper, close to the IR emitter.

Another interesting strategy, probably related to the previous one: I noticed that when it bumps into a table or chair foot, it tries to go around it. The process involves clumsily turning right, hitting the foot again, getting a bit farther, turning right again, etc. Seems appropriate and effective though.

The rest of the strategy involves doing straight lines, hitting objects softly, changing direction, etc.

Then come the exit strategies. The robot actually tries to get unstuck when it can. It doesn't seem to actually ever backup (based on visual examination and the fact it doesn't have any rear sensors nor rear bumper), but generally the exit strategies seems to focus on turning a bit, see if it hits something, turning some more, maybe turning 180 degrees or in the other direction, etc.

Overall, the path followed by the robot is mostly random, with an emphasis on following things by the right. Most reviews will mention this has disconcerting. From a human point of view watching the little robot bump into basically everything around and going over and over the same area without any idea if it is really clean or not, it may seem so. But from an algorithmic and economic point of view, the behavior seems very logical. This is supposed to do the job with some cheap hardware and software. It does not learn the layout of the room, and it does not sense if the area is already clean or not. Also since friction may not be perfect, it can't assume it is always going in a straigh line, so obviously trying to do parallel runs is not an option. Given the limitations, a random path sounds like the logical choice to try to cover an unknown layout, with some specifically targeted strategies on top of that. The end of a cleaning session is thus determined by time rather than actual room coverage.

So overall it seems like the software is pretty smart given the limitations. The hardware is interesting too. If you accept the limitations of the product as result of economic and engineering considerations, it is overall a really good product (the newer models mostly add a better motor longevity and a directional remote control).

For the first time I'm happy to buy a vacuum cleaner that is actually fun to use and watch.

(Update 20040720: Follow this link for my problems with eBay and Roomba warranty.)

[permalink]


Blog Archives:
Most recent posts
2004/05/01 - 2004/02/21
2004/02/19 - 2003/10/21
[RSS]


Site License

Creative Commons License
This work is licensed by Raphaël Moll under a Creative Commons License.

Options
Color Theme: Gray  | Blue | Black  | Sand  | Khaki  | Egg  | None

Web ralf.alfray.com Powered by Google

Display Izumi & PHP Credits

Stats
1591 accesses, 2 accesses from 38.107.191.83
Visited 109 times by Google, last 2010/09/07 14:32
Visited 280 times by Yahoo!, last 2010/09/03 18:27
Visited 2 times by Alexa, last 2009/09/15 22:46
Visited 27 times by Teoma, last 2010/08/31 16:27
Visited 220 times by MSN, last 2010/09/08 12:28

< Generated in 0.81 seconds the 09/09/2010, 03:55 AM by Izumi 1.1.4 >