Friday, March 16, 2012

How to Setup and run Ritchieduino

Hi again. The reason of this post is to show how to successfully set up the a developing environment to use Ritchieduino library. I will also assume some form of Arduino board available, running in Windows, even though any other platform will have just some adjustments. If you use for instance the ICSP mode you are on you own regarding avrdude.

To set up the environment the following software packages are required:
  • Ritchieduino package needed files which are here.
  • The latest winAVR, this is important because it provides the tools and configuration of the AVR-GCC tool chain. Don't forget to allow winAVR setup to change the your PATH variable so that the AVR eclipse can find it automatically. Please note that there may be a bug in which the setup destroys your pre-existing path. If such thing happens please go to the directory in which winAVR is installed and look for a file named path1.log which contains your previous PATH variable so that you can fix it.
  • The latest Classical Eclipse IDE, to use as the development environment. Before downloading it is necessary to check whether the Java virtual machine is 32 or 64 bits. To do that just make sure  Java is installed typing java -version. If the command successfully runs and there is not any mention of 64 bit in the output than it is a standard 32 bit Java Virtual Machine and you should download the 32-bit version of Eclipse. If the command fails it is possible you don't have java installed and you must install it from here. It is advisable to have the 32 bit Virtual Machine or there may be problems with RXTX plugin for Eclipse that allows the Serial console functionality

The following steps should be taken in order to make sure everything is set up correctly. The steps which are probably optional will be detailed for sake of completeness. More experimented users will probably be able to skip some steps.

  1. (Optional) This first step is to install the Arduino Windows drivers for the first time, so most users will probably be able to step over this. It is also really simple. The Arduino board should be connected to the USB port and  the"Windows key+r" be pressed at the same time. On the Run dialog write "devmgmt.msc. On the device manager window try to find "Ports (COM & LPT)". Under that is "Arduino UNO (COMxx)", where xx denotes any assigned port number (normally COM7). Right clicking and selecting "Update Driver Software" should open a dialog. Select "Browse my computer for driver software", the appropriate location for the Ritchieduino package should be selected. The drivers are in "\drivers\.inf". Hopefully the driver is successfully installed and the next steps can be taken.
  2. (Optional) The installation of winAVR is pretty much straight forward just keep in mind the problem with the PATH variable mentioned above.
  3. (Optional) The most critical and time consuming task is to install and configure the Eclipse IDE with everything a programmer needs to be productive.The first thing to be done after downloading Eclipse IDE is to extract it to somewhere. After that, it open it for the first time.
  4. (Optional) Upon starting Eclipse for the first time a directory should be selected where the projects will stay. Eclipse calls this directory workspace. It is advisable to either leave the default directory set or create one specifically for this purpose, so that everything stays organized in one place without future conflicts, like with Git. The check box  "Use this as the default and do not ask again" should also be activated so that any accidental change doesn't break the set up. Upon proceeding you will be officially inside the Eclipse IDE and will be greeted by a "Welcome to Eclipse" screen. Congratulations!
  5. (Optional)  In this step necessary plugins will be installed in Eclipse, specifically the CDT, AVR, EGit, RXTX and Target Management Terminal.
    1. So on the menu bar select "Help->Install New Software". When the new dialog appears, click on "Add" which will open a dialog to add a repository. In this case, the repository to add is the AVR plugin. The name can be anything, but for the sake of completeness it will be named "Avr Eclipse Repository". The location will be "http://avr-eclipse.sourceforge.net/updatesite". Note that this address can change, although unlikely.
    2. On the combo list "Work with:" the "Avr Eclipse Repository" should be selected. It is likely that a "Pending" will appear on the list below. It can be a while, as Eclipse is fetching the available plugins. 
    3. Afterwards the "AVR Eclipse Plugin" should show on the list and its check box should be activated. 
    4. Pressing "Next" twice and followed by accepting the license should highlight "Finish" which should be pressed to start the plugin installation process. 
    5. You should wait while software installs. During the installation it is possible that Eclipse warns you of unsigned content and you should continue the process. If you need re-assurance follow to the original AVR plugin site and check that the address supplied before matches the recommended in the site.
    6. Upon request restart Eclipse IDE.
    7. The process of installing another plugin will be repeated now for CDT, the component that adds general C/C++ functionality to the IDE.
    8. Following the Help->Install New Software" receipt again, select on the combo list "Work with:" the "All Available Sites".
    9. Below the combo box should be an empty text box which acts as a filter. There the text "C/C++ Development Tools" should be pasted. Note that if you manually write it, Eclipse IDE may hang because it is filtering the whole plugin list aggressively character by character. Even so it might hang some time.
    10. Tick only the "C/C++ Development Tools" and proceed like in the AVR plugin installation (step 5.5). In the end of this step it would already be possible to target AVR hardware but regarding Ritchieduino some more steps are required.
    11. Again the process will be repeated, only now to install eGit which enables the cloning of the Ritchieduino repository in Github.
    12. To install EGit the instructions are similar to the ones in step 8 just that this time the filter should be "Eclipse EGit" proceeding with similar previous steps to install it.
    13. Similar to the procedure in Step 5.1 followed to add the AVR plugin, RXTX repository is required to be added. To do so add "http://rxtx.qbang.org/eclipse/" selecting afterwards RXTX 2.1-7r4 and installing it. 
    14. This time the procedure is similar to the installation of EGit, just write in the filter "Target Management Terminal" and proceed with the install.
    15. The plugins installations are complete and it is time to start cloning the repositories
  6. In this section the Ritchieduino clone will be done.
    1. It is possible to clone the Ritchieduino repository by following "File->Import->Git->Projects from Git->Next" and then a dialog will ask you to select the repository. For that click "Clone"  and a dialog with lots of text boxes will appear. 
    2. Fortunately only the URI one is needed and in it input "git://github.com/ptsneves/Ritchieduino.git" and all other fields will automatically be set. Clicking "Next" will connect to the repository and Master branch will be already pre set. Continue with "Next" and "Finish" the repository will be set up. The dialog will close.
    3. If the repository was successfully added, the Ritchieduino repository should now be selected proceeded with "Next".
    4. Check that the "Import existing projects" radio button is set and just press "Next", and "Finish" in the next page.
    5. If everything has gone well the Ritchieduino default Projects should have been imported, making one more step complete.
  7. In the following steps the AVR environment will be configured according to the required AVR target chip.
    1. Starting by going to to the menu bar "Window->Preferences".
    2. In the opened dialog collapse the "AVR" tree-list and select "Paths".
    3. If the winAVR installation was successful all the paths should be already pre-set, with the exception of the Atmel Part Description Files. In the list find "AVRDude" and click on "Edit".
    4. On the "Change Path for AVRDude" change the "Path Source" to "Custom". Afterwards select "Browse...". Selecting the Ritchieduino Software Package folder that was previously downloaded is all that is necessary. 
    5. Back in "Preferences", now looking again at the tree list, and under "AVR", select "AVRDude".
    6. Mark  "Use custom configuration file for AVRDude" and "Browse", selecting again the Ritchieduino Software Package folder.
    7. Now on the "Programmer configurations" press "Add..." .
    8. A big dialog should open, and in the "Configuration Name" Ritchieduino should be written.
    9. The "Description" can be anything.
    10. On the "Programmer Hardware" list, "Arduino" should be selected.
    11. The "Override default port (-P)" text box should be set with \\.\COM7. (Without the dot).As mentioned earlier it can be other COM number, but normally its 7.
    12. The "Override default baudrate (-b)" should be 115200.
    13. Proceed with "Ok" until the "Preferences" dialog closes.
  8. Now there is a quite boring task that has to be repeated for all the libraries that you are going to use in Ritchieduino, but in fact is crucial and can't be defaulted, which is setting the target chip. For the sake of simplicity only the steps for RitchieduinoCore.
    1. On the menu bar go to "Window->Show View->Project Explorer"
    2. On the Project Explorer left click on the RitchieduinoCore project and select "Properties".
    3.  On the tree list select "AVR->Target Hardware".
    4. On the "MCU Type" you should select your target chip and in the "MCU Clock Frequency" the frequency. For instance for the Arduino Uno, the type is "ATmega328p" and the frequency "16000000".
    5. This whole step should be repeated for every library you wish to use once and every new project you decide to create. If this step is not taken your applications may not work correctly.
  9. There is a project ready to try which is the RitchieServer, an example ready to run. It is important that step8 is done on this project also. Note that the Ethernet shield is necessary.
    1. Go to the menu bar and select "Window->Open Perspective->Other". On the dialog that appears select "C/C++".
    2. On the Project Explorers' tree list collapse and double click "RitchieServer->main.c" so as to see what is being executed.
    3. Care should be taken so that the network settings in the source file match the desired local network.
    4. To build this project you only need to go to the Project Explorer, right click RitchieServer and select "Build Project".
    5. It will take some time in the first run but should be relatively fast afterwards (faster than the Arduino IDE).
    6. Upon reading "**** Build Finished ****" on the console vie.
    7. If everything has been successful it is now possible to upload to the board.
    8. To upload the program just select the RitchieServer project in Project Explorer and click on a green AVR icon on the tool bar in the upper part of the Eclipse window. Alternatively it is possible to do "Ctlr+Alt+U"
    9. After the upload to see the results of the Serial port data doing "Window->Show View->Terminal" is needed.
    10. After the terminal shows in the tabs in the view sub window there is a small button called "Settings".
    11. In the dialog that pops up the "Connection Type:" should be set to "Serial" and the "Port" should be set to COM7 or if different to the relevant one. The baud rate should be noted in future uses. Pressing "Ok" closes the dialog.
    12. Pressing the small green "Connect Button" connects to the serial device.
  10. If everything has been successfully executed the terminal should now be printing, for the case of RitchieServer, "Comunications Initted".
That is all that is needed to set up Ritchieduino. There will be another post on how to make a Hello World be printed in the Serial output.



Wednesday, March 14, 2012

Ritchieduino, What it is and why



Hello, this is my first post about the library i have created exclusively in C99 for the Arduino board, even though it might work with other AVR chips also and outside the Arduino board. I had already made a post on Arduino Forums, where a brief explanation can be found.
The Ritchieduino comprises much of the Arduino-0022 library functionality (pin compatibility), just completely written in C99 (not K&R C) and with some re-arrangement to make the code more modular. Also all the C++ code was mostly stripped off and the more important parts were partially re-written, namely the Serial, the SPI and Ethernet (w5100) libraries. Because of this re-writing the API changed significantly and i admit it is aimed at a more savvy audience than the original Arduino.

On the other hand as the including headers have been streamlined and the namespace cleaned some room for extra optimization control was gained. A clearer example is that mostly only the wiring library remained, which was already C. There were also some functions which were, in my opinion superfluous, that were cleaned out, namely re-naming of standard C functions, like the ones in WCharacter.h and WMath.h. I do reckon renaming is mostly inlined and doesn't bloat the code by itself but makes the analysis and deeper understanding of what is going on behind scenes mores obscure.

Still on the line of modularilization is the fact that in my opinion, Class Inheritance has been abused as to make Matroska doll code, where you have to go deeper and deeper to inspect what is happening under the hood, becoming even harder for newbies to start progressing to Intermediate level. An example of this is the print inheritance on pretty much every class, which sometimes calls code that is less than desirable, namely floating point code, which increases the size of the programs by some orders of magnitude.

As a final personal note i would like to notice that in no way i am diminishing C++, on the contrary. I think it is a much more powerful language with some concepts that, if not well understood and disciplined, can lead to quite obfuscated code. That and the fact that there doesn't seem to be any discipline regarding coding style as simple as a variable naming convention. A good example is in the socket.c file, where the socket descriptor variable can be called s, _s, sock or socket. The convention followed by Ritchieduino and its libraries attempts to follow as closely the Google Coding Style Guide as possible, even though there are exceptions(not the C++ ones) in the name of compatibility with the original Arduino library. I also advise a look into the guide even if you are not interested in Ritchieduino because for me it was really useful. It is even for C++!

There will be more posts on how to start and use the libraries, as it doesn't use the Arduino IDE, which in my opinion is terrible. I will make a post on how to set everything up in Eclipse IDE with some hints that may help the transition to Ritchieduino and even normal Arduino programming a bit faster and satisfying. In the meantime if you can take care of using the library you can try the WebServer examples which is functionally equal to the one provided in the original Ethernet library.

In the meantime i leave here the github repository with library available to anyone who so desires. It is also important to note that the library is LGPL, because the previous Arduino work upon which Ritchieduino is derived, is also LGPL, so you can use it in proprietary applications.

Hope enjoy it.
Paulo Neves




Saturday, February 04, 2012

Technological improvement has been the best way to change the balances between rich and poor, big and small. In the beginning of last century, technological breakthrough often came from small companies that grew to behemoths today. That breakthroughs were mostly in the mechanical field and chemistry but they all started from small family businesses changed or created new markets.  One thing they had in common was the fact that the success often came from the brainchild project of some inventor.

Nowadays technological breakthrough comes from the fields of computer science. It is known that lots of small companies start up on this field now but they are almost always swallowed by bigger players, often state backed or field founders, like Microsoft or Apple. Even so it is possible to argue that the IT industry provides lots of opportunities for entrepreneurship.

Never in history had mankind access to so much knowledge in a wide range of areas, so it reasonable to ask why are there not any new big companies growing from small businesses, considering the unprecedented number of highly educated individuals active in our society

There are many talented people with brand new ideas that take advantage of completely new ways of solving problems. The problem of our time is just that entrepreneurship is borderline impossible in terms of necessary investment and competition. Initial investment is a problem because most people who create disruptive technologies are young, making them unlikely to have the economic assets to even take care of the legal part of a business. Competition because bigger companies have an established business which takes considerable effort to make it that way.
 
Taking the late 19th century success stories of the Diesel engine and its self made man, and the DuPont company which started from nothing, not many new companies rose to stardom without coming from strong business conglomerates. Globalization did in fact create many new challenges to the developed world, specially regarding how to create companies that have to abide by stricter laws (labor, environmental, legal) and that the same time be competitive. On the other hand a developed society has a bigger human capital, as in creative, which it needs to tap effectively to keep survive.

Established companies still need to compete and at some level innovate at the lowest pace possible as not to be obsoleted. With this in mind the concept of idea contests took place, offloading the research and development to the contest participants. The contest takes place, the company funds the prize, and not surprisingly absorbs the idea(s) and the inventor into its structure, actually removing the risks associated with R&D . This idea may look great in the sense that both parties benefit from the contest, altough that may not be true.
As the natural law states, a body will remain in rest until some force acts upon it. With this in mind we consider a stable market where there is no immediate force acting asking for the company to react, so there is no reason for the company to take the risk of using a novel idea/product when nothing compels it to. In consequence, the company will obviously not take the unnecessary risk and will shelve the idea. This loss is invisible to the whole system as this new market changer invention, never came to be, but the market and ultimatelly the people will suffer for it.
On the other hand if we actually tip the system into favoring this new inventor into creating their own business of which they have everything to gain, then there would be a bigger chance of seeing all the unprecedented education investment, returning in the form of growth, employment and taxes. Perhaps the contests would not be needed if there was a visible network that inventors/enterpeneurs could easily get assistance from.



Wednesday, January 02, 2008

My experience with Lenvo Thinkpad X61t
Hi as this is my first English post in a Portuguese blog i will just say that i'm a Portuguese guy that just finished his high school and i am now attending classes so i can get the air line pilot license.
In Portugal Lenovo doesn't sell their computers in single units, only in large quantities that usually are associated with government and high profile corporations. But as i'm a stubborn geek alike guy i found out about the tablet world and since then i knew that a tablet was the way into the future and like a swiss knife for just about everything. I then started searching the Internet for the greatest value for my limited budget, and found that X61t was everything i needed. I then started looking for any European shop that sold IBM, but it seems that IBM/Lenovo dont really want their computers on the street in Europe, as such i had to wait a lot of time so i could have a pilot friend that regularly flies to the United Stated to arrange a way to order the tablet, but even in the United States Lenovo isn't exactly a flasher.

About the tablet:
I got the cheapest set but i'll be damned if it isn't worth every penny i spent on it. I go only on the negative aspects as it's the hardest thing to find.
First of all it comes with the integrated intel graphic card that really sucks if you want to play some modern strategy game with the pen enabled. Note that this is only a negative aspect if you consider you sometime want to play some modern game to relax.
Second, this convertible is a highly mobile machine slim, light and cute, and as such it probably would have won some points if it included in the basic model the enhanced battery. Note that this is just a problem of $$ because you can buy a separate battery unit that has got 8 hours of autonomy. Plus the original battery can hold the machine for little over 2 hours.
Third, consider that this laptop comes with a a mother load of crapware from Lenovo, and it gets really annoying with the loading times if you don't get it out.
Four, the sound is crappy but loud enough, like those radios you get to use in a bathroom. They don't distort but it's not great sound.

As you can see this negative features aren't really negative if you take in account that this is a business/student convertible to persons who are always and on the run traveling.

By the way the most delicious thing in the laptop is to navigate in the internet while in bed with the wireless internet on.
Tenho já dois rascunhos no forno depois da falta de combustível mental que existiu em 2007. Embora já tenha recomeçado a escrever tenho tido uma dificuldade muito grande em escrever duma forma estruturada e coerente como antes pensava conseguir escrever. Até este pequeno texto, escrito em forma de desabafo só para ver se os dedos desemperram, me custa brutalmente, com a agravante de me perder constantemente nos raciocínios. Os dois textos que tenho na calha são bastante diferentes um do outro. Um está em inglês e é sobre a minha recente campanha pessoal para ser piloto de linha aérea. O outro é muito semelhante ao género de textos que venho publicando no blog, desta feita sobre a origem do universo numa perspectiva divina. Está-se a mostrar bem mais complicado do que inicialmente tinha matutado na minha cabeça como habitualmente faço. As minhas ideias sobre a origem do Universo estão bastante mais dispersas e desorganizadas do que o normal dando origem a misturas de temas que estão muito próximos, mas que não são o objectivo do texto e dão origem a contradições que são difíceis de corrigir.
Enfim de uma maneira desajeitada vou quebrar o ano em branco aqui no blog, com promessas de esvaziar a minha cabeça, para que me possa focar no que realmente interessa, a minha futura carreira de piloto.

Saturday, November 25, 2006

Significado da Vida

Como acho que já todos se esqueceram do blog e como o deixei definitivamente de o publicitar todos os textos aqui passaram a ser como que uma especie de diário(anuario??) pessoal e privado, embora continue a existir, pesquisavel até, pelo google :D

O tema de que hoje venho escrever é sobre o significado da vida. Desde sempre, continuando ainda hoje, que o homem se questionou quanto ao seu propósito no mundo.
Eu pessoalmente, com 17 anos em 2006, penso que respondi á pergunta para a minha pessoa.
Eu como Ser Humano e vivo tenho como unico e exlusivo propósito reproduzir-me, A imortalidade. Não através da minha existência eterna sob a forma imutável do meu ser, mas sim como uma parte significativa dos traços físicos e consequentemente mentais de alguém meu descendente. Por isso a minha morte algum dia será irrelevante se eu me tiver reproduzido e produzido descendencia capaz de por sua vez se reproduzir num ciclo infinito.
A teoria evolucionista em palavras vagas é normalmente enunciada como a "sobrevivência do mais forte", omitindo o significado de sobrevivência neste contexto. Sobrevivencia significa opurtunidade de procriar, pois se um ser vivo estiver morto consequentemente as suas células sexuais também o estão. O amor, paixão odio etc são tudo vantagens que os seres mais fortes possuiram, permitindo-lhes reproduzir-se sem precisarem de justificação. "Paixão e pronto".
O homem distanciou-se relativamente aos outros animais devido á sua auto-consciencia. Isto é, se tinha fome, sabia que era porque não comia há algum tempo, o mesmo para a sede e outras sensações. Mas porque é que só tão tarde é que equacionámos as emoções mais profundas tal como o amor, na busca pelo significado da vida? Não sei, mas se tivesse sido alvo de maior atenção talvez hoje teríamos religiões em que o nascimento de alguém, quem quer que fosse, seria um pedaço de milagre, de divino, de paraíso. Porque haveriamos nós que ter como propósito da vida a idolatração de algo que não sabemos se existe e prática de rituais que não conhecemos? Um nascimento e posterior qualidade de vida até uma morte natural deveria ser o objectivo da vida num Deus, tornando-se presente de forma material todos os dias.
Reprodução é a resposta!

Sunday, March 26, 2006

Boas a todos. Já há algum tempo desde que aqui não escrevo, talvez porque o blog me libertou de tal maneira que me desinspirei..esvaziei. Bem, mas o que interessa é que tenho um novo pensamento na calha senão não me dava ao trabalho de criar um texto inútil.Desta feita o pensamento tem a ver com o doce gosto da maldade.
A maldade na minha opinião é uma coisa normalissíma embora a nossa sociedade e nós proprios nos censuremos em relação à sua natureza. Analizemos as coisas da seguinte maneira:
Todos nós já alguma vez nas nossas vidas desejámos mal a alguém ou sentimos uma chama bestial quando causamos sofrimento, fisico ou emocional propositadamente, mas raramente o expressamos publicamente por vergonha. Isto demonstra uma grande hipocrisia por parte dos nossos seres. Para demonstrar que o que aqui estou a dizer não é infundamentado dou-vos um de muitos exemplos. O caso da guerra e todas as atrocidades inerentes por mais legitima que nos pareça.
É ou não verdade que ela existiu desde as tribos recolectoras pre-históricas até aos nossos tempos?
É ou não verdade que todos ensinamos as nossas crianças a maldizer a guerra e que quando escrevemos, ou dizemos os nossos votos de ano novo, natal, etc... para um público de maior dimenção, afirmamos normalmente que gostaríamos que as guerras acabassem já amanha e que ouvesse paz?
É ou não verdade que as cinco grandes religiões do mundo têm como base uma mensagem de paz? ( No entanto muitas têm historial de guerras. Irónico.)
Então porque ainda existem guerras e não vivemos num mundo em que ninguém guerreia ninguém e onde há paz?
Porque nos nosso intimos há a animalidade de que vos falei, uma vontade de fazer o outro sofrer de maneira penosa mesmo que isso não traga nenhuma mais valia para ninguém.
O propósito deste texto?
Na minha opinião se percebermos as nossas imperfeições e defeitos poderemos criar um ponto de partida para criar salvaguardas que nos ajudem a controlar mas não repudiar nem silenciar os nossos instintos, pois esses mesmos instintos, sençasões ou vontades podem-nos enganar quando menos esperamos por eles e contornar e distorcer a nossa própria razão sem que nos apercebamos
Pensem nisto..

Thursday, February 02, 2006


O post de hoje é dedicado a temas menos profundos como o papel do homem e da mulher na sociedade. Este tema é bastante abrangente por isso irei separar as diferentes teses umas das outras para que não haja confusões. Outra nota que penso ser importante é que os assuntos tratados neste post podem não ser do agrado de todos e são estupidos. De qualquer maneira afirmo taxativamente que qualquer discriminação a nível de remuneração entre os sexos é inaceitavel. Com as apresentações feitas aqui vai...

A primeira tese está relacionada com as associações femininistas. Porque terão as mulheres direito a associações, em que apenas pessoas do sexo masculino são admitidas? Afinal, as mesmas associações que defendem a igualdade de sexos, estão a praticar o contrário daquilo que pregam. Para além destas associações serem inconstitucionais pois são um grupo que discrimina na entrada dos seus associados, também são um bocado ridiculas. Já alguma vez viram uma associação de protecção do macho latino? Não, nem me parece que tal fosse aceite brandamente, pelo policamente correcto/senso comum. Dá que pensar...

A segunda tese debate a realidade e a utopia da igualdade entre sexos.
Que fique claro que sou contra a discriminação sexual no local de trabalho.
Vou então falar das diferenças que são indirectamente assumidas pelos membros de casa sexo, mas que teimam em não ser consideradas pelo outra vez politicamente correcto.
Afinal, porque é que uma mulher, se ocupa dos trabalhos domésticos? Ou, porque é que há certos empregos que são mais direcionados para o sexo feminino do que para o masculino e vice-versa?
A razão, para mim, deve-se á aptência natural de cada sexo. Não poderemos questionar se uma mulher sabe melhor tratar dos seus filhos do que um homem, da mesma maneira que não podemos questionar o primeiro rosto que um bebé vê pela primeira vez.
Por outro lado contrário também não poderemos negar que o homem não tem obrigação de zelar e de fazer os trabalhos mais sujos e difíceis pela sua mulher e pela sua familia. Afinal o sexo masculino não desenvolveu uma fisiologia mais bruta e mais dura por puro acaso. Embora essa fisiologia fisica não seja em grande parte utilizada na nossa civilização(!), essa fisiologia rude também existe a nível de interacções mais complexas como os negócios de risco, ou mesmo a nivel estratégico-politico.
Com todo este texto não quero dar a ideia de que as mulheres não têm lugares na política ou economia, pelo contrário. Têm mas é em áreas diferentes dos homens, possibilitando assim uma cooperação com o melhor de cada sexo. É esta cooperação que existe na realidade, provada pelas estatísticas de cada sector empregador, mas que o politicamente correcto continua, mais uma vez a negar, afirmando ainda que as diferenças são meramente físicas. Sim á discriminação positiva!!

A terceira e última tese é dedicada á minha interpretação (não precisam de concordar) do facto de haver certos sectores, económicos e políticos onde há disparidades na relaçãohomem/mulher ou vice-versa. Isto, no meu pensamento, deve-se ao facto de haver um contracto inconsciente entre homens e mulheres, que leva a que os homens gostem mais de fazer certos trabalhos que as mulheres e vice-versa.
Dou-vos o exemplo dos professores. Porque é que o número de professoras é maior até ao 12º ano de escolaridade e a partir do ensino superior os quadros de professores são totalmente o inverso? Talvez porque as mulheres têm melhor formação e instinto para tratar de crianças enquanto que os homens têm tendencia para preferir pessoas mais sossegadas e adultas.

Viva o macho :D