Tuesday, November 21, 2006

Tangible user interfaces and music

The Music Technology Group (Pompeu Fabra University of Barcelona) specializes in audio processing technologies and their music and multimedia applications.

Among several research projects, I have found a very interesting one: reactable (see http://mtg.upf.edu/reactable/)

reactable, as you can see in the following videos, is characterized by the use of a Tangible User Interface in the production of sounds and music.







Don't lose the opportunity to test this software. It's open source. You can get it here.

At reactable website, there's also a fantastic collection of similar projects, all with videos ready to be enjoyed. See them here.

Sunday, November 19, 2006

Intelligent interfaces in CAD

Have you ever worked with a 3D CAD system ? It is really time consuming... In order to get some results, you need a lot of time.

New AI techniques can provide very interesting results to this problem. A solution can be the use of handwork or sketches as input in those systems. The problem is however, how can these sketches be transformed into technical and accurate geometry.

GIDeS++ is a good example. From the authors we can read the following:

With the advent of new interaction techniques and supporting hardware we should look beyond traditional WIMP (Windows, Icons, Menus, and Pointers) interfaces. Mouse and keyboard are by far the most widespread input devices and have been around for a good many years. However, before these, designers have been using pen and paper for an even longer period. GIDeS++ is a tool that adopts the paper-and-pencil metaphor to bridge the gap between designers’ and modellers’ innate ability at freehand drawing and the more elaborate and structured methods required by traditional CAD systems. GIDeS++ offers handwriting recognition for both gestures and measures, combined speech recognition as an alternative to floating toolbars and a set of innovative, simple and efficient tools that allow for quick prototyping and modification of three-dimensional shapes.


In the following video, a bit long but very interesting, you can see the product in action:



You can get more information of this system here. In this website, you can enjoy with more videos and even to download the product itself. Inevo is the company behind.

Thursday, November 02, 2006

Motion capture as a 3D modeling tool

Recently, via Gizmodo (thanks to Ignacio Bellver for the link), we were able to see an amazing work from a sweedish group called FRONT.

The idea is quite simple and not new, but perfectly undertaken. Using 3D motion capture, it is possible to design 'in situ' a collection of new furnitures. After this process, real size models are generated (using stereolithography).

More information can be found at Dexigner web site here.

Finally the link to this impressive demonstration of the process:

Monday, September 25, 2006

Virtualizing my 'chaotic' physical desk

How is your physical desk ? I mean your everyday work table... In my case, oops. A really messy one.

So, now, imagine your computer desktop with an almost identical interface of the one you use in the 'real' world.

See what I'm talking about in the following video:



You can see more information of this new interface in its original website here. (Thanks to David Siñuela for this link).

Do you see what I mean ? I'm not quite sure this is going to help my chaotic way to organize my life :) But, seriously, it's a fantastic example of what we will have as our new desktop.

Saturday, September 02, 2006

Tangible User Interface - A new approach on how to interact with computers

A tangible user interface is a user interface in which a person interacts with digital information through the physical environment
Wikipedia definition

Tangible User Interface (TUI) is something I have recently rediscovered. Some time ago, I read something about it, and now, working on topics related to augmented reality, I have found out that this field is growing up very quickly with a lot of solutions and people working on it.

The idea is quite simple: use physical objects (sometimes even tools we use every day) in order to interact and work with computers. This concept means that using technologies like computer vision, tracking devices, touch screens etc. the system is able to know how the user is manipulating a collection of physical objects, and then it is able to translate these actions into events in the computer interface.

There's a basic paper you should read in order to understand this concept. The author is one of the TUI parents (Hiroshi Ishii). The title is Tangible Bits: Towards Seamless Interfaces between People, Bits and Atoms. You can get it in pdf here. Please, read it.

Professor Hiroshi Ishii is in fact, the leader of one of the most important research groups working on that, the tangible media group at MIT. If you want to see how a group of researchers can combine work and fun, research and pleasure, don't lose the chance to see the projects they have developed and they are working on ... and there are some very amazing videos. In fact, I put one of them in one of my first posts here.

Although it is clear that TUI has a great future, there's a lot to do in order to see real applications. The key is to be able to find something clearly easier to do with a TUI than with any other approach.

As usual, I like to look for some videos about the topic. Again, I invite you to see the videos at the tangible media group.

Although Prof. Hiroshi with his paper began this new field, in the following video, you can see that in 1990 people from Xerox was working on the concept:



An from the MIT, the SenseTable:

Wednesday, June 21, 2006

3D extraction from a single 2D image

Three weeks ago, I started a research stay in the Czech Technical University of Prague, at the Faculty of Electrical Engineering, and I'm going to be here three weeks more.

One of my objectives here is to research in 3D geometry extraction from just a single 2D image as input, centered overall in biomedical imagery. Well, there's not too much time, but I'm sure we will get some results...

The thing is that when I was looking for information about all this matter, I found a very interesting video of one of this kind of techniques. What you have to pay attention to is to the fact that the authors are able to get these results automatically, i.e., their method, from just a 2D input image, is able to generate a VRML 3D scene without any user interaction.

For more information on this work from the Carnegie Mellon School of Computer Science, you can go here.

A video, just here:

Tuesday, June 20, 2006

Fractal art

It's obvious how computer graphics has taken the most of fractals and vice versa. Fractals are now, in fact, a compulsory topic in a computer graphics subject, due to the huge number of their applications in modeling, basically.

The word "fractal" has two related meanings. In colloquial usage, it denotes a shape that is recursively constructed or self-similar, that is, a shape that appears similar at all scales of magnification and is therefore often referred to as "infinitely complex." In mathematics a fractal is a geometric object that satisfies a specific technical condition, namely having a Hausdorff dimension greater than its topological dimension. The term fractal was coined in 1975 by Benoît Mandelbrot, from the Latin fractus, meaning "broken" or "fractured."
Fractal at Wikipedia.

I have been working in 3D terrain visualization, and it is incredible the quantity and quality of fractal techniques in order to model natural elements, like terrain, plants and woods, clouds etc. Their use is almost the only way to provide realism in such environments. And this fact is logical, since the nature itself has a lot of fractal behaviour.

Just looking at the Internet I have found several good examples of fractals and art. See this example (a bit long but beautiful):

(if you have bandwidth problems, watch all the video until the end, and press 'play' again; normally the cache is going to help you the second time)



But if you want to enjoy high quality fractal art, see Jock Cooper's www.fractal-recursions.com website and enjoy his works. Fantastic. He has some animations using fractal music... just as an example:

Monday, May 15, 2006

"I Robot" - are we closer ?

Science fiction films sometimes affect our vision of the future. At least, this has been my case.

I have watched so many films related to robots, some of them so unreal, that I really thought we would never be able to see a real humanoid robot walking around and doing real works.

Industrial robots, like robot arms, are more than a reality. The production of a lot of things, like cars, is undertaken by such machines. But many of their tasks are very 'mechanical', in the sense that they follow strict rules and patterns.

The evolution of robotics, focusing on humanoid-like ones, depends on several factors:
- The mechanical elements, i.e., the physical machine and its ability to behave like a human being. As you can see in the videos I have attached at the end, this seems to be a reality today. Perhaps is just a question of mass production (in order to be able to buy one).
- The 'software' component. Uhmmmm.... without any doubt the critical point. Without a good software, nothing interesting can be carried out by the robot.

Let's pay attention to the 'software' component. It's obvious that nothing standard can be developed for a robot if we want to let him/her/it act as human beings... In fact, inside this factor we found the most important challenges we fight with as programmers: Artificial Intelligence and Computer Vision. It is not my objective here to talk about these important computer science fields, may be in a future, but just to say it is required thousands of hours of very talented people to reach a new step in these technologies.

So, now, some of the videos and links that are changing my mind, in the sense that I really think now I will be able to see in a future some robots at the street or at home doing something useful (humanoid robots, I mean).

Aibo from Sony. It seems they are at the end of their production. I saw last year, in a congress, a football match with some of them. Really a beautiful machine:

www.sony.net/Products/aibo

Below, a real fight between two robots. It comes from a japanese robot competition called Robo-One. I would like to see something similar but without any human controlling their movements, i.e., with an intelligent software able to let them see, interpret and act.

(if you have bandwidth problems, watch all the video until the end, and press 'play' again; normally the cache is going to help you the second time)



And they're even able to dance:



The control over the robot motion is becoming very sophisticated. See the following one in which a female robot shows us that she is very charming:



But if you want to see my favourite, look for information about Asimo, from Honda. In its website, world.honda.com/ASIMO/, you can get a lot of information and some incredible videos.

Wednesday, May 10, 2006

Enjoying 'motion tracking'

Nintendo Revolution is going to be called Wii.

Here a first ad with the new name. With the new motion tracking features of their new game control, the number of rendered triangles by second, fragment/pixel shaders performance, framerates etc. are going to be anecdotal.

(if you have bandwidth problems, watch all the video until the end, and press 'play' again; normally the cache is going to help you the second time)

Wednesday, May 03, 2006

More on multi-touch interfaces ...

Another amazing video on multi-touch screens but now assisted by voice recognition technology (Thanks to Jordi Camarasa for this link). It is obvious that there's still a lot to do in graphical user interfaces, and that the future in this field is incredible.

The video is a demo of a what the authors call a game table prototype. The game in question is WarCraft III.

Using both inputs (hands and voice) it is possible to have an incredible control over the game. It's a very interesting demo.

(if you have bandwidth problems, watch all the video until the end, and press 'play' again; normally the cache is going to help you the second time)

Wednesday, April 26, 2006

Free online programming books

A very common problem some programming students have is the access to good and free tutorials and books.

Check out this link:

195 Free Online Programming Books (from www.techtoolblog.com)

It's a fantastic list of programming books. All free. Some of them, believe me, very good !

Tuesday, April 11, 2006

8 bit computers - a retrospective look

There was a time in which just one person was able to develop a game... using machine code, simple graphics, very good ideas, a lot of imagination, and many hours ...

There was a time without UML, Object-Oriented Programming, .Net, Java ... even without C ... It was the time of BASIC.

There was a time in which a tape recorder was something more than your only way to copy music... It was the only way we had to load and save programs ... It was the time of the beeerererrppereerpppeeeppeeep ... We were so familiar with such a sound that we were even able to guess if the sound corresponded to graphics or code ...

I'm referring to the beginning of the 80s. And I am lucky, I lived that moment.

I was 13 the very first time I saw a computer. Impressive. I decided to learn everything about computers. After one year learning what I could from magazines and books, I convinced my parents to buy my first computer. My idea was to buy a Sinclair Spectrum, but when we went to the shop, a Sony MSX was their suggestion. I didn't mind.

MSX was the first serious attempt to reach a standard for personal computers. Sony, Philips, Panasonic, Toshiba and other companies produced computers under this standard. It was a fantastic computer, with an important continuity (MSX-2, MSX-2 turbo R ...) but finally, it disappeared.

The original ROM included the BASIC programming language and, with the disk version of the machine, an operative system called MSX-DOS also appeared. Microsoft was behind that (the BASIC interpreter and the OS), and I have to say, they did a very good work. In fact, it was the best computer in that period (IMHO).

At that time, I was able to earn money (I was 14-18) developing games. In fact, there was no option. Without the Internet, without software to install... the only thing we were able to do with our computers was to learn programming. I have found a video that shows perfectly what I'm talking about:

(if you have bandwidth problems, watch all the video until the end, and press 'play' again; normally the cache is going to help you the second time)



What the video shows was true. The only I was able to do at the beginning was to buy those magazines with printed code inside, so you had to type it if you wanted something to do with your computer. Consequently, you were almost forced to learn programming. And after learning BASIC, machine code was the only chance to get more performance from those old computers.

Very different situation now. You can buy a computer and be able to do millions of things without even know what a program is. Is this current situation better than ours ?

Wednesday, April 05, 2006

Apple forever !

Apple is celebrating 30 years: an innovative and impressive period !

(if you have bandwidth problems, watch all the video until the end, and press 'play' again; normally the cache is going to help you the second time)

Friday, March 24, 2006

Maurits Cornelius Escher

There's a possibility you don't recognize the name of the artist of the post title, but it's very unlikely you haven't seen any of his works.

M.C. Escher is, without any doubt, one of the most famous graphic artist of the last century. And he is specially fascinating for those interested in maths, programming and computer graphics (I have to say that one of his prints is decorating the most important wall in my living room).

Visit his official web site in order to learn more about this artist: www.mcescher.com

Why is he so fascinating for a programmer and computer graphics lover ? Just see two of his prints...





Concepts like recursion and fractal geometry are an important constant in some of his works. Iterative patterns, recursive definitions, morphing (smooth transition between images), chaos, fractal geometry and lots of computer science topics are part of Escher's incredible mind.

Another important part of his work was centered in the creation of so-called impossible drawings. But some of them seem not to be so impossible. A good work presented by Gershon Elber shows us how to create 3D models that, from specific points of view, are able to explain some of these impossible drawings. It is worth to see.

As an example, below you can see some computer generated models that are able to explain some of his famous drawings.

(if you have bandwidth problems, watch all the video until the end, and press 'play' again; normally the cache is going to help you the second time)







Finally, a demonstration on his influence in our time in a very beautiful advertisement:

Monday, March 13, 2006

Real-time physics

Not too far ago, there was no 3D accelerated cards. It was the CPU the only able to make 3D graphics a reality. Now, nobody is even able to buy a PC computer without such a possibility.

But gaming industry needs go beyond, and once again, not only this industry but every field in computer science is going to take the most of this new need.

I'm talking about real-time physics.

But firstly, some background. What's real-time ?

An operation within a larger dynamic system is called a real-time operation if the combined reaction and operation time of a task is shorter than the maximum delay that is allowed, in view of circumstances outside the operation. Wikipedia definition.

In computer graphics, this is very related with interaction. Real-time means that we are able to provide an interface to the user, in which he/she can interact and get a graphical response with the same rate as the real world we are trying to simulate, i.e., no more delay we get from the real world. Simple to say, quite difficult sometimes to achieve.

Real-time used to be associated with geometry simplification and LoD techniques (Level of Detail). It still is, but recently we have to take into account one new element: physics simulation.

A physics engine is a computer program that simulates Newtonian physics models, using variables such as mass, velocity, friction and wind resistance. It can simulate and predict effects under different conditions that would approximate what happens in real life or in a fantasy world. Wikipedia definition.

Obviously, for real-time physics it is required to simplify its calculations and/or lower their accuracy in order to respond at an appropriate rate for interactivity.

The need of real-time physics is so important, that we are going to see the launch of specific processing units (the same that happened with 3D acceleration). See this ageia web site and look for PhysX.

Summary. Always an example is the best we can do to understand concepts. In the following video, we can see a water simulation. In this case, we don't speak about real-time, so it is possible to calculate this simulation without losing accuracy.

(if you have bandwidth problems, watch all the video until the end, and press 'play' again; normally the cache is going to help you the second time)



And now, something in real-time. In this case, a preview of what the new PlayStation 3 is going to offer us:



Very impressive !

Thursday, March 09, 2006

Ultra-Mobile Computer = Origami Project

Today, Intel and Microsoft have launched the Ultra-Mobile Computer, called Origami Project by Microsoft.

We can enjoy at Microsoft web site with two models, from Samsung and Asus.

The web site of the Origami Project is http://origamiproject.com
The web page at Microsoft site is http://www.microsoft.com/umpc
The web site of Intel's Ultra-Mobile PC is http://umpc.com

At these web sites you can get all the information about them. Here you can see another video of the 'new' concept, from Intel:

(if you have bandwidth problems, watch all the video until the end, and press 'play' again; normally the cache is going to help you the second time)



Is really something new ? It isn't. It's a litter Tablet PC with XP Tablet Edition 2005. But it seems can have more success than current Tablet PC machines.

Monday, March 06, 2006

Kid's Programming Language

Computer science is an essential subject in our children education. We are surrounded by computers and software, and because of that we have to be sure our children are prepared to work and interact with them.

But, is it possible to fully understand the basis of computer science without learning how to program ? It isn't, in my opinion.

Many, many times I have spent a lot of time trying to explain why a computer can or cannot do this or that ... and the problem, frequently, is the lack of knowledge about programming of my audience.

To learn programming is to understand what computers really understand.

And it is generally a difficult process, since the current programming languages need strong skills from the very beginning.

Because of this complexity, a lot of alternative methods for learning how to program have appeared. I remember perfectly two of them.

The first attempt to make programming closer to people was logo (see more information here); a fantastic approach, based on Lisp, that uses a graphical turtle in order to see the results of our programs. In my opinion, it was (and it is) the best first approach to programming for kids.

I also remember Karel the Robot by Richard E. Pattis. In this case, we can control a robot which is able to get information about the environment and carry out actions like collecting things and moving around. Originally based on Pascal, now there are C based versions.

We have recently a new alternative: the Kid's Programming Language.



I have downloaded it, and it is basically a BASIC inspired language. It has some strong points: very easy interface, .Net based, automatic conversion to C# and Visual Basic, and a very comfortable graphic library. This graphic library is perhaps the most interesting feature, since with it we can see immediately very impressive results on screen.

It is well-known how boring 'console based' applications are, so to have the chance to produce very attractive graphics with just some lines of code it's something that guarantees success.



A future characteristic of this programming language is 3D graphics. With this new feature, this language could be also a very interesting first step in computer graphics introduction.



A very good introduction to mini-languages as a first step in learning how to program can be consulted in here.

Friday, March 03, 2006

Microsoft Windows Vista - The same story again...

Windows Vista is coming and, once again, Microsoft is going to sell us old ideas as something new. A lot of changes and improvements are going to be part of this new OS, but it is probably Aero (the new desktop environment based on Avalon, called now Windows Presentation Foundation), its new graphics layer and environment, one of the most important features.

Transparency, 3D elements, xaml (a new xml based language for interface designing)... are just some of these new characteristics. Are they new ? Obviously, no. Mac OS has had some of these new features for a long time, and Linux has now packages that improve its environment with similar or even better possibilities (Xgl for example, from Novell).

As an example, in the following video, you can see a demonstration of Xgl (thanks to Jordi Vicedo for this information). It's a bit long, but it's worthy.

(if you have bandwidth problems, watch all the video until the end, and press 'play' again; normally the cache is going to help you the second time)

Wednesday, March 01, 2006

New toys are coming this year ...

I cannot avoid to enjoy with new technological toys, and this year we are going to have the chance to see some new developments that are able to surprise us again...

At the web you can see some very interesting cutting-edge devices that seem to be available very soon.

Here, something called Origami. It's not actually a new concept, but they offer some new ideas...

(if you have bandwidth problems, watch all the video until the end, and press 'play' again; normally the cache is going to help you the second time)



Nintendo is almost everything in games... not only because they produce the best games in the market, but because their capability in introducing new ideas. This year seems to be the year of Revolution. Forget your old and limited joystick or pad ...

Sunday, February 26, 2006

Augmented Reality - It is a reality, indeed

For a long time, a set of new technologies, like Virtual Reality and Augmented Reality, have been introduced. We have knew about them from many, many years.

I am now involved in a company that works with Augmented Reality technology. I will talk about it in a future post, but just say it is something incredible, and the most important thing, USEFUL.

This was sometimes the problem. Great technology, impressive results, but no interesting and REAL application. But now, we are in a very interesting moment, some real applications of, e.g., Augmented Reality are being a reality.

Augmented reality (AR) is a field of computer research which deals with the combination of real world and computer generated data. At present, most AR research is concerned with the use of live video imagery which is digitally processed and "augmented" by the addition of computer generated graphics. Advanced research includes the use of motion tracking data, fiducial marker recognition using machine vision, and the construction of controlled environments containing any number of sensors and actuators. Wikipedia definition of AR.


I have found two videos. Both quite interesting, and both describe in images, better than words, what Augmented Reality is.

In the first video, a demo of the company Total Immersion. Although no real or useful application is shown, you can guess some good fields in which this technology can help a lot (education, simulation etc.)

(if you have bandwidth problems, watch all the video until the end, and press 'play' again; normally the cache is going to help you the second time)



In the second one, a new concept called 'augmented map'. You can find more information here.

Thursday, February 23, 2006

Do you want to see the future of graphic user interfaces ?

Just without words. Just enjoy !!

(if you have bandwidth problems, watch all the video until the end, and press 'play' again; normally the cache is going to help you the second time)



Here, more information about the authors:
Multi-Touch Sensing through Frustrated Total Internal Reflection Detecting multiple finger touches on a rear-projection surface. We introduce a simple technique that enables robust multi-touch sensing at a minimum of engineering effort and expense. It relies on frustrated total internal reflection (FTIR), a technique familiar to the biometrics community where it is used for fingerprint image acquisition. It acquires true touch information at high spatial and temporal resolutions, and is scalable to very large installations. Han, J. Y. 2005. Low-Cost Multi-Touch Sensing through Frustrated Total Internal Reflection. In Proceedings of the 18th Annual ACM Symposium on User Interface Software and Technology www.advancedgui.com



From the MIT:

Wednesday, February 22, 2006

An introduction to algorithm complexity analysis (I)


I cannot understand how many problems a lot of students have in learning the principles of algorithm complexity. So, finally, I have decided to prepare a short introduction and some tricks in order to help them.

In a previous post, I described some of the strong points in order to take into account the complexity analysis before coding. In this post I'm going to describe the four basic steps you must follow in order to study the complexity of an algorithm. In future posts, I will provide more details and examples for each step.

The first thing to take into account is the difference between efficiency and effectiveness. Effectiveness means that the algorithm carries out its function, it is correct. But when we talk about efficiency, we are looking for something else ... we want a correct algorithm and with the best performance.

Basic steps in complexity analysis of an algorithm

1. Select the computational resource you want to measure. Normally we have two options: time and memory. But other studies can be undertaken like, e.g., network traffic.

2. Look to the algorithm and pay attention to loops or recursion. Try to see the variables and conditions that makes the algorithm to work more or less. Sometimes is one variable, some times several ... This is going to be our size of input. Remember that with complexity analysis we are interested in getting a function that relates the size of input with the computational resource.

3. Once we have the size of input of the algorithm, try to see if there are different cases inside it. Normally we have to pay attention to the best, worst and average cases. What are 'cases' in this context ? Circumstances in which the algorithm can work differently. These cases NEVER depends on specific values (high or low) of the size of input. NEVER. To work with an array of 1 million components is not a 'worst case', is just a specific size of input which is going to have a resulted time or memory consumption.

To have different cases means that you are not able to provide just one function that relates the size of input with the computational resource. Probably, having for example a worst and best cases means that you are going to have two different algorithm behaviours. It is like having two algorithms inside the algorithm.

So, in the definition of the different cases you are not allowed to use the term 'size of input'. It has to be another thing. Look the loops or recursion, and try to see specific conditions that make the loop or recursion to finish before scheduled, before the end of the input range. Normally, there you have the clue of different cases. An example ? The linear search of an element inside an array. In such a case, if the element we want to look for is not inside the array, the algorithm, in order to provide a negative answer, has to go from the beginning to the end of the array. That's the worst case. But if the element we want to look for is in the first position of the array, then there is no iteration. We find the element immediately. That's the best case. Note that the 'size of input' of this algorithm, the number of elements of the array, is not part of the definition of best and worst cases.

Take into account that it is not only important to detect these cases, but to be able to define them, to describe in which circumstances we are in front of each case.

4. Now, for each of the cases our algorithm has, we have to count computational resource consumption. If we are studying temporal cost, for example, then we have to count instructions (or calls in a recursive algorithm). What we need is the function which relates the size of input with the computational resource. And in this function we are interested in its highest degree, i.e., we are interested in its asymptotic profile (how the algorithm works for high values of the size of input). At the end of this step, the important thing, rather than follow a correct notation, is to be able to show if the algorithm, and for each case, is LINEAR, QUADRATIC, EXPONENTIAL, LOGARITHMIC, etc.

These are the basic steps to follow in order to face the algorithm complexity analysis. In future posts, I will try to provide more details for each of these steps and some examples.

Sunday, February 19, 2006

The cheapest Tablet PC in the world !


Do you like Tablet PCs ? They're more than beautiful technological toys. The problem is that they're quite expensive. But there is a low cost solution.

Recently, I have bought a Pen Tablet. Particularly, a Genius MousePen 8x6.

My motivation was to get rid of notes, sketches ... and hundreds of papers I can use every week to support my classes, research and different activities.

The result is fantastic. But ...

I had to change my Windows version, from XP Professional to the Tablet Edition 2005. Why ? In order to take advantage of the beautiful characteristics for hand-writing only available in such operative system.

With Windows XP and the tools and plug-ins of the pen tablet you can annotate, but with the tablet edition a lot of new functions are available in products as Ms Office, OneNote etc.

Now, I'm enjoying the good things of Tablet PCs but at the best price. And not only on my laptop, but in my desktop computer as well.

Saturday, February 18, 2006

Algorithm Complexity - don't forget it, please



It is interesting to see how fast the software engineers are able to forget everything they have learnt about algorithm complexity. Personally, I spent a lot of time trying to show the importance of complexity to my students. Complexity is not only important as a way to evaluate and select the best algorithm for a specific problem, it is a way of thinking...

Complexity analysis is engineering methods applied to programming

With the new languages, new platforms, new and powerful computers... it is not as important, as it was, to think before coding. We code now the very first thing we think. We execute... and, if there's no error, that's all.

We have powerful libraries and frameworks. We don't need to implement from scratch a stack, queue, list, hash table, etc. We just use the implementation that comes with our environment, and sometimes we think that's enough. And of course, it isn't.

Do you know which is the complexity (temporal and spatial) of the different methods or functions of the library you are using ? Even in the case you know them, have you considered them in your proposed solution ? Sometimes you have several alternatives, did you consider them ?

Did you think about complexity the last time you implemented something ?

Computational resources ... With the new technologies perhaps we have to change the traditional approximation to complexity. Traditionally we speak about temporal and spatial cost as the main computational resources (memory and time). But... with a client/server approach, with distributed or grid systems... do we consider the network traffic ? It's just an example.

UML and all the new methodologies for analysis and design are forcing us to think before facing the coding stage. But, once we are coding, and I'm not talking only about Information Systems but any kind of application, do we apply what we have learnt about complexity ? Are we forgetting what makes us engineers when we code ?

Answer these questions:

  • Is it worthwhile to sort an array of elements before undertaking some searches on it ?

  • Is it better to use either a binary search tree or a hash table ?

  • Is Quicksort your best choice whenever you want to sort out an array ?

  • Is it better to get a/some table/s of a data base from the server to the client and afterwards carry out the queries ?

If you have answered these questions with anything different to a 'depends on', may be you have to review your information about complexity.

Wednesday, February 15, 2006

A new MFC development - 3D Biosignal Viewer

I have recently started a new project using MFC. Yes, it is still alive.Why in 2006 start something based on MFC ? Because OpenGL, basically.

I like C# and .Net, but I don’t like the wrappers I have seen for OpenGL so far. The best seems to be the Tao. I prefer to see the future of OpenGL inside Windows Vista before deciding to change to C# + OpenGL.

Another thing to take into account is if managed code is fast enough in order to develop real-time applications, mainly when we talk about computer graphics. Hidden code, garbage collector… uhmmm…

The application, called 3D Biosignal Viewer, is now only able to visualize two-variable functions and height maps (using techniques that are similar to the ones used in 3D terrain visualization).



The IDE and platform I’m using is Visual Studio 2005. A fantastic tool. A bit slow on my laptop. The MFC version seems to be 8.0, with some differences when the wizard template is created. Some improvements in this new version ? I don’t know which is the continuity of MFC, but it is still a good option for OpenGL developments.

On the other hand, C++ makes me feel more confident about performance.Which is going to be the future of C++ ? Are C# and Java going to kill it ?

My first post

This is my first post of my new blog. I am sure that nobody is going to read this, but who knows...
When I decided to write a blog, my motivation was double. First of all, I think it is a good chance to improve my always poor english. Second, well... it is a good way to have a kind of register of my thoughts related to computer science, computer graphics and software development.
So, let's start with it.