João Paredes is an almost-21-year-old student of Electrotecnical and Computers Engeneering at Oporto’s State University for Engeneering (Faculdade de Engenharia da Universidade do Porto), in Portugal. He is well known and respected in his community, known to be a visonary and a good leader. Also known to be an excelent programmer, as he’s been programming computers for 16 years now (yes, since he was 5).
He knows and uses a variety of languages like C, C++, PHP, HTML, XML, XSLT, BASIC, Visual BASIC, VBScript, Perl, SQL, Pascal, x86 Assembly in the most of the variants of each language/compiler combination. Although a kind of a “swiss-knife” of programming, developing from operating systems and compilers, to databases and websites, he still prefers to be considered a low-level developer. But he is not only a programmer. He also develops hardware, being also involved in a project for the creation of a new 64-Bit CPU programming architecture, as he thinks it w! ould perfect. He has projects to start as soon as he finishes any of the current projects he’s in, like a small digital fone just for the fun, or an OC-48 switch. He is also known as “The Problem Solver”, because he manages to get things to work that nobody else could or thought it could be done. He is experienced in several operating systems. He used all versions of Windows since 2.x, several versions and distributions of Linux, FreeBSD, QNX, OS/2, BeOS, Solaris 8, and a few more. He is experienced in a few database management systems, like MySQL, PostgreSQL, FirstBase, and his all time favourite FirebirdSQL. He also ministers small courses on programming, Linux and networking.
João is pretty straightforward, sometimes more than he should. He created Chefax R&D (or Chefax I&D in Portuguese), a group of students that gather to develop because their faculty lacks the practical component. They wanted to “get dirty”, the hands-on approach, get to work with the things they learn. Amongst their projects there are an operating system, a complete integrated development system that includes compilers, linkers, library mangares, IDE’s and project managers, a relational XML-based database manager and a lot more. They are even making the entire faculty campus in 3D for the Half Life engine, and believe me, it’s big.
Why did I choose to interview him? I’ve known him for a few years now, and I was allways fond of his ideas about almost anything we have talked about – future and technology. I have been following all the discussions on OSNews about “Windows vs. Unix”, about whether is Linux ready for the desktop or not, etc. I thought that it would be interesting to share his ideas and opinions. I started with some tricky questions.
1. How much do you… hate Windows?
João Paredes: I do not hate Windows. I do not hate Windows, neither Microsoft, nor Bill Gates. I do think Windows (as a lot of Microsoft products) should and could be severely improved (well, Linux also, but in a different direction). Not my favourite OS to work with, but I admit I use it and I need to work with it.
2. Some of your friends do think of you as a biased anti-windows-linux-rules fundamentalist. Then…
JP: They are wrong. I see them as windows-rules fundamentalists. I only use what I have to use. What I need to and because I need to. Although there are a lot of operating systems out there, even with most of them being free or open source, the truth is that none of it serves completely my needs. For what I need at the moment, Linux and Windows are the operating system that do the work best. For a PC, these are the two that evolved the most. I already lost too much time trying to find the perfect OS. There is no such thing. Yet. At least for me.
3. So, let’s see. What do you really think it is wrong with Windows?
JP: Well, a lot of things. The first thing I complain about the size. Windows is big, and I mean big. It occupies space, space, space. I am sure those programmers at Microsoft could have done it smaller and better. Second: Windows is heavy. It drains all of the resources. Makes it look like it swallowed all of the system memory. Third, which everyone also knows, it is really, really buggy. The first two are, in part, prices to pay for maintaing backwards compatibility with systems and standards obsolete for decades. The NT versions are extremely more safe and stable than the ‘home’ versions, but still not enough. About the home versions of Windows… I think they sould already be dead by now, at least the actual concept MS understands for home version. The Unixes also have bugs. But in the unix case, rather than operating system or kernel bugs, most of them are application bugs. Fourth: Networking. Windows network security is the most well known security of all… because! throughout the years it has been almost none at all. I don’t say all other operating systems are safe, although most of them are a lot safer than Windows. And for a lot of others, they are only safe because they are not as much as used and explored… or exploited… this is a critical subject, because network security is allways critical, but it wouldn’t be the subject I would choose when starting a conversation about Microsoft… Microsoft has been developing operating systems for so many years now, that the programmers there should already have learned a few lessons. Their experience should have taught them that if they don’t get it right having the system working first and interfacing with the user, than there is not much chance it would work right in the network. About the GUI… well, I really have no complains about the GUI. Simple enough while not being ugly or losing funcionality, usually responds well, coherent. Probably a few minor details could make it better, b! ut nothing of great importance. But I still don’t understand why a server or an Advanced Server OS needs a GUI… just increases the code, the space occupied, the memory needed, the processor cycles needed… Couldn’t they do something with less eye-candy?
4. All that? So Microsoft has been doing it all wrong…
JP: I didn’t said that. In fact, I think the track Microsoft wants to follow is more or less the correct one. But they just have taken too much shortcuts and stopped too many times for a coffee and a donut…
5. Then what do you mean, when you said Linux could also be severely improved but in a different direction?
JP: The problems with Linux, at least most of them, are not directly Linux problems, but rather *nix world problems. The only big problem I see directly related to Linux, is the (un)modularity of the kernel. Linux is a monolithic kernel. In my opinion that sucks. I admit, the performance increases are big, but the functionality and the easyness of use decrease. Most of the times, when we’re to add a new piece of hardware to the system, there we go to a kernel recompile. For the hardware the kernel doesn’t support, some companies do provide drivers. But they need to have a version of the module for each new version of the kernel. Hardware makers don’t like having too much work with drivers. And they also don’t like to have the sourcecode of the drivers shown to everybody. Some companies were clever, they use the “big module technique”. They write a big module with almost all of the driver code inside, with no relations to the kernel version. Then they pack it wit! h a Makefile, an install script, a few headers and .C sources to build the final module. The real driver code isn’t shown. But then it’s the user that doesn’t like it. Sometimes it’s too much work. I don’t mean only for the unexperienced user. I mean for the experienced user also, because the experienced user doesn’t like to be reinstalling everyting and having to resolve all the compile time dependencies everytime he’s installing new hardware. Do you think sysadmins like having that much work? They like sitting down with a cup of coffee in one hand and a modelling magazine in the other, waiting for a disaster to come. When it happens, they reboot, sit down continue enjoying the coffee and the magazine.
6. That was mean.
JP: I can only hurt the ones that let themselves get hurt. Anyway, that is the reason companies do write drivers for Windows, but forget Linux. In Windows they do not have to show the sourcecode, and they only have to update the drivers on each new version of Windows, about every two years. In Linux, sometimes they would have to update them weekly. Or release the drivers using the “big module technique”. It already went beyond the case of “OS not known enough”.
7. And what are those things wrong with the *nix world?
JP: First of all, let me explain what I understand with *nix world. It’s the applicational and interface layer of the Unixes out there. Everything above the kernel. Well, I followed a discussion a few weeks back in OSNews, about X being the biggest reason why Linux wasn’t ready for the desktop. I believe that in part, that is right. X is too old. I mean X in the general way, X11, XFree86… It really sucks using X. We already do not need to use the remote connectivity X provided. IMHO it became heavy, big, with too much redundancies. I believe the next generation should connect directly to hardware, rather then going through the Client-Server layers and the exports. If we need a remote desktop… we use VNC which is small and fast. That’s one thing Microsoft did right. The Remote Desktop Connection is a useful tool. But as I said, X is only one of the reasons. There are more. For example, there are too many window managers. There are two major toolkits, GTK and QT and two! major desktops, Gnome and KDE. I recently read an article, saying that Gnome and KDE started a joint effort to ‘unify’ the desktop manager, not join both projects, but make them use some common standards. If true, I see this as a step forward. Still not enough, but a big step anyway.
8. But you cannot deny that are *nix world problems that arise only in Linux.
JP: That’s because Linux is now one of the most used *nix kernels. And because is the Linux kernel people mostly tries to use to build a desktop. And specifically about Linux, the big problem is the ‘flood’ of distributions that arose. I used to think Redhat was a good distro… back in the time of Redhat 5.2. It was simple, and stable. I used to like Mandrake… back in the time of Mandrake 7.1 and 8.0. Mandrake 8.1 was already bad. In fact I belive it was the worst version of Mandrake. Now, all those distros that used to be easy, aren’t anymore. The ‘distromakers’ hunger creating a distro for the home user (which is a milestone I believe they are not achiving), but doing so they are making them hard to use by an experienced user… Why on Earth would I want to have 1001 programs to do the same thing installed on my computer? The distromakers should choose one or two, and stick to them. When installing the distro, I’ll be deciding if I want any of them or not. I do not l! ike to be flooded with decisions I do not want to make and that I do not need to make. That’s why I use Rootlinux, simpler and stabler than the most, only the packages that are really needed. If I want anything else, I’ll go get it. And most of the work is done by hand, configuring it myself. That way I can learn more and refine my system to my personal use.
9. That seems to be contradictory. First you mentioned that you do not like to have too much work installing drivers and so, and now you say that you want it simple, and like to configure it yourself.
JP: No contradiction at all. First, I said sysadmins don’t like to have too much work. Second, I’m not really a sysadmin, I’m a programmer. I like to configure it myself, yes, but I also want it to be well configured and not having to change anything until I really need a major update. Do it once, enjoy it many style of living.
10: So, what is then the real problem with Linux? What is your real opinion, is Linux ready for the desktop or not?
JP: As I said, the problem is not with Linux, but with *nix. Linux is not the major problem. In fact, I do believe Linux is ready for the desktop. It’s the *nix world that is not, and as such, Linux suffers from that.
11. And what about a programmers point of view, what’s wrong and right?
JP: In Windows programming, there are a few things wrong also. For example, there are a lot of functions to do the same thing. And not much API documentation, although it appears to be well documented. We have a huge list of constants and types and a strange naming convention to follow… not really mandatory. And for some simple tasks, there are functions that go through multiple layers before executing the task. In the other hand, there is, let’s call it, a strong empahsis on object oriented programming. This is very good. Object oriented programming is excelent. And there are lot’s of development tools for visual oriented programming, which is also good, and those tools, usually have good documentation for the API they support/provide. In Linux, it’s the opposite. We have a simple and well documented API and enjoy more flexibility. The redundancy is, IMHO, residual. But, it is not an object oriented operating system. The use of C++ and other OOP languages first go thro! ugh C callbacks. That’s really not a limitation imposed by Linux, but rather by the architecture it is supposed to support. But in fact, that doesn’t cause that much overhead. I would rather program for Linux than Windows, in most of the situations, especially when developing console programs and services. But the GUI development is faster and easier in Windows than in Linux. There are not much visual development tools for Linux, ie, for X, and they are not as good as the Windows ones. The big exceptions are the Borland tools, my favourites under Windows (Borland C++ Builder). Kylix is also excelent, especially Kylix 3 which added C++ to RAD development with Borland tools under Linux, but I still prefer using Glade, GCC (g++), Glademm and GTK. The biggest problem of all, is the big costs associated with developing using such commercial tools. These tools are expensive, and I mean really expensive. There is always Glade and Lazarus.
12. In your opinion, what are the most important technologies of today?
JP: I immediatly remember XML. XML and XSLT. Those are revolutionary. XML brought the solution to an enormous amount of problems, some of the with several decades of existence. Especially in document and content management areas. Also I believe OOP is extremely important and databases also. I could mention the Internet and all the technologies around it, but it is already something of our lives, doesn’t have that taste of new thing anymore. That doesn’t mean the Internet is not important, because it is. Probably the most important concept right now. PHP is also very interesting.
13. How do you see the technological future?
JP: I see a networked, object oriented, XML database driven and XSL transformed world.
14. How about the hardware? In the future, I mean.
JP: That is a complicated question. There are too much hardware types that can improve, I can see object orientation in hardware too. No like the software, but object oriented in a hardware way. That’s one of the projects we have been developing secretly. In the Microprocessors, for example, the CPU developers will be less concerned about having the chip working at higher clocks, and more concerned about having it executing more instructions per clock, decreasing clock rates to decrease energy waste. Also, the CPU development is reaching a point of stagnation, where some architectures that are standards today will suddenly cease to exist, and be replaced by cleaner, improved, simpler, new ones. Hard drives will keep increasing size, SATA will take place in a more or less near future, and some time, not in the very near future, disk harddrives may well be replaced by big flash drives or equivalent technology. The user interfaces at some point will have to evolve. On keyboa! rds, I can imagine they will remain pretty much the same as today, some minor differences. On mice they can continue like today, remaining only the laser mice, or they can evolve to the currently existing touchscreens or some device that can follow eye movement or a finger movement. I don not forsee much future for small wireless devices like mice and keyboards, expecially for the radio based ones, because they are expensive, they drain more power, and they emit higher levels of radiation. I do think wired and wireless devices like these will continue to co-exist, but the wireless devices will continue expensive and restrained to some specific and special uses.
15. And what about the software?
JP: Besides the victory of Object Orientation and XML, I can also imagine software developers understanding finally that any program that does not take full advantage of the resources it has available it is a bad program. That any program that is not speed optimized is also a bad program. And that any program that wastes resources and that takes more space than it should, is not even worth of being called a program. Hard drives and memory will keep increasing in size, and CPU speed will increase also, but not to be wasted with unoptimized programs. Rather, they will be improved to accomodate more user data, and to process it faster.
16. What about one of your preferred areas in software, operating systems?
From a programmers point of view, I can forsee them with a cleener, better documented, simpler and more powerful API. From a user point of view, the OS will tend to be more database oriented, more user friendly, more performing. The content itself will be of interest and not the way the content is stored. The use of object oriented generalization techniques will bring better performance and functionality to the operating systems, rather than decreasing performance.
17. Basically, the way you picture the operating system you are developing?
18. Now about the Internet. What is your opinion about the current status of the Internet?
JP: I believe the Internet was created based on legitimate ideas, I mean military and self defence purposes. I think the reasons it was later developed were right, ie, for the cientific community. And was brought to the world when it was clear it should be of all of us. But I still think the internet was not developed correctly. For the right reasons and following the right stages, yes, but not in the right way, at architectural level. The guys that developed it were clearly not thinking about security at that time, which, for a network that was first developed for military reasons, is unacceptable. Security was also not the strong point of the scientific stage of the internet, which is also incompreensible, if scientific achivements can be commercially/economically or phisically dangerous and are to be shared only with the right people. So, we reached a stage where the internet is now an instrument for everyone, but this instrument is a big Pandora Box. No one can guaran! tee security, and the best thing people can do to assure the security of contents, is not to let the contents on connected machines. Second negative point: Scalability and expandability. The guys that developed the internet were also shortsighted enough to only let 4G of address space. 2^32, and not all of those addresses are usable. As a result we have a World Area Network, that is stagnating. The addressing space is reaching the end. That’s not good. And the solution they came up with is not that great also. IPV6 is also another limited addressing space even though bigger. And what about the sysadmins having to use and probably to remember 128 bits IP addresses? And now, for the last negative point I remember, although nobody could really have done nothing to prevent that. Garbage. Yes, garbage, the internet is full of crap. SPAM, SCAM, contentless sites, irritating pop-ups, and so… you know what I’m talking about. But in the internet, is like in the real life. We also r! eceive unsolicited mail, door sales man come to our houses trying to sell us things we’ll never use in our lifetime. It’s this way with real life, It was like this with the radio, with the TV and couldn’t be any other way with the internet.
19. Looking at everything that you don’t like, I noticed that you always have your own ideal of perfection. You don’t completely like any of the existing operating systems, so you decided to create your own. You felt that there is no language suitable to create your operating system, and decided to create your own. The same with the databases. So you think the internet is not that well, let’s say, implemented. Do you have your own ideal of how the internet should be, the addressing scheme, protocols, etc?
JP: Absolutely. Yes, I do have my own ideas of how the internet should be. Like everything else. I just dare saying something is not that good if I have anything constructive to add, like my own idea, so that it can be explored and developed if it really is better then the technology my idea is supposed to replace.
20. What do you really hate in the technological world right now?
JP: I can remember one thing right now: Those rules the manufacturers use for replacing TFT screens when talking about the dead pixels. I hate that!. In my opinion, all TFT screens should be ISO Class 1. Oh, and I also hate the way software developers waste the hardware resources the system has to offer. I hate the way developers and manufacturers tend to find solutions for today, and later find solution that fills that time, and that maintains compatibility. That usually results in performance degradation. Look at Windows, for instance. I also hate those discussions about opensource or free software being better than commercial products.
21. And you?
JP: I have a 17″ Class 1 in the big PC and a 13.1″ Class 1 on the portable. Luck, I guess. For now I’m satisfied, but I’ll have to upgrade sometime… Now, really, I naturally code extremely optimized programs with code clean and well written enough to be extended if necessary. I always code for forward compatibility, not backwards compatibility, I code so that my code will in the future still be suitable for the necessary purposes, or in a way that it can be set aside if necessary without causing any hassles. This is part of a programming philosophy I call Retroprogramming as a joke. I also have a certain tendency to use assembly, and I definitely hate Java and the alike. About the opensource and commercial products dilemma: I don’t buy any of BS both sides have to say. I believe in good software, not in opensource, not in commercial, not in shareware, not in freeware. Good software and good software only, no matter what is the license. That is my philosophy. G! oodware rules.