- Understand, don't memorize.
A good programmer doesn't try to memorize everything. He, or she, actually learns the logic behind the paradigms and frameworks instead of memorizing them and becomes proficient in consulting references whenever necessary. Memorizing will prevent you from correctly understand the tool and will void the next item. - Generalize.
Understand everything as if there was a Grand Unifying Theory. In the end, everything is the same with slightly, or highly, different presentations. The basic principles are the same, so learn to expand them and to create generalizations. Training your brain to do so, will greatly enhance your learning ability and your versatility. - Never assume strict usage.
Never assume that something is universaly and strictly as presented. Everything you encounter may be used in different ways than you might expect or realize at first sight. The same way Dr. House prescribed Viagra for an octagenarian LADY to treat her blood flow problems, many tools can be used to fix things they were not planned to. - Do not assume the infinity of computing resources.
Higher level programmers and teachers of those frameworks usually have the distressing policy of assuming that the computing resources are infinite and that their applications are the only ones running on a given system. Always assume a worst case scenario for your performance and plan your optimization in advance, even if you don't implement it from the start. Concede to that assumption ONLY when you need to debug something and NEVER on a production system or on a released product. - Understand what's underneath.
Understanding how the platform and frameworks you are using do what you ask them to do, will help you understand how to better make use of them, providing you with enhanced performance and stability. - Computers don't make mistakes.
A computer never makes a mistake. A computer is a matematically perfect machine that follows instructions precisely and to the letter. Mistakes outputted by a computer are nothing more than the result of an incorrect instruction given to it, coming from a) you, b) the hardware developers, c) the developers of the platform and frameworks you are using or d) the user of the application you are developing. If you want your computer to give you the correct results, give it the correct instructions.
quarta-feira, 17 de abril de 2013
Requirements for being a good programmer
segunda-feira, 25 de fevereiro de 2013
How to save a file
Step one, you say you need to talk,
It beeps, you say clock down it's just a talk.
It scrolls politely back at you,
You stare politely right on through.
Some sort of window on the screen,
As you drag left and it slips right
Between the lines of coding shame,
You begin to wonder why you came
[CHORUS]
Where did I go wrong,
I lost a drive,
Somewhere along those forced powerdowns
And I wouldn't have stayed up with this all night,
Had I known how to save my files...
Let it know that you're the root
Coz the shutdown you can press
Try to slip past the scandisk,
Without losing consistency
Lay down a list of broken deps
Apps you removed while alone
And play the logs to audit
And play the logs to audit
[CHORUS]
Where did I go wrong,
I lost a drive,
Somewhere along those forced shutdowns
And I wouldn't have stayed up with this all night,
Had I known how to save my files...
As it begins to overheat,
You grab some ice and give it one last try
Try until the system boots,
Or from scratch reinstall it
It will do one of two things
It will reboot and fix everything
Or it will just say it's just not as safe
And you'll begin to wonder why not a game
[CHORUS]
Where did I go wrong,
I lost a drive,
Somewhere along those forced shutdowns
And I wouldn't have stayed up with this all night,
Had I known how to save my files...
It beeps, you say clock down it's just a talk.
It scrolls politely back at you,
You stare politely right on through.
Some sort of window on the screen,
As you drag left and it slips right
Between the lines of coding shame,
You begin to wonder why you came
[CHORUS]
Where did I go wrong,
I lost a drive,
Somewhere along those forced powerdowns
And I wouldn't have stayed up with this all night,
Had I known how to save my files...
Let it know that you're the root
Coz the shutdown you can press
Try to slip past the scandisk,
Without losing consistency
Lay down a list of broken deps
Apps you removed while alone
And play the logs to audit
And play the logs to audit
[CHORUS]
Where did I go wrong,
I lost a drive,
Somewhere along those forced shutdowns
And I wouldn't have stayed up with this all night,
Had I known how to save my files...
As it begins to overheat,
You grab some ice and give it one last try
Try until the system boots,
Or from scratch reinstall it
It will do one of two things
It will reboot and fix everything
Or it will just say it's just not as safe
And you'll begin to wonder why not a game
[CHORUS]
Where did I go wrong,
I lost a drive,
Somewhere along those forced shutdowns
And I wouldn't have stayed up with this all night,
Had I known how to save my files...
quinta-feira, 21 de fevereiro de 2013
AMD Catalyst / FGLRX on legacy graphics cards (Linux)
So, I had my share of trouble trying to revive an old workstation. The culprit? The graphics adapter, an AMD Radeon HD2600. AMD considers those legacy, as well as anything up to the HD4XXXX. The last supported
version of Xorg for the latest release of drivers that support these cards is Xorg 1.12. Also, there was a problem with supporting kernel 3.7.x. Having fixed the problem, I thought it would be nice to put together a simple how to and share it with all of you. Check it out, at the Onda Technology Wiki:
sexta-feira, 7 de dezembro de 2012
[PT] Nação Descrente e Imoral
Vou, pela primeira vez neste blog, apresentar um texto em Português. Porque isto é, antes de mais, para Portugueses lerem.
Tenho vindo a acompanhar o lento declínio do nosso País no geral, em especial a nossa economia. Tenho assistido - mais de perto do que gostava - ao terror de ver famílias desalojadas e arruinadas, de ver as nossas mentes brilhantes a fugir do País como o Diabo da Cruz. Não estamos a perder só o nosso dinheiro. Estamos a perder a nossa energia, os nossos valores, o nosso valor, a nossa identidade, a nossa cultura, a nossa existência e a expulsar - pela inércia, pela incompetência, pelo medo e pela preguiça - todas as nossas capacidades, entregando-as de bandeja ao estrangeiro.
Não se enganem, meus compatriotas. Portugal tem um potencial imenso por explorar. E, infelizmente, o pouco potencial que já está explorado, está a sê-lo pelo estrangeiro. Todos os dias perdemos um pouco mais de nós próprios e a nossa mesquinhez, a nossa avareza, a nossa inveja, o nosso egoísmo ainda nos torna mais fracos, frágeis e falíveis.
Dirijo uma instituição sem fins lucrativos que se orgulha do trabalho que faz, apesar de apresentar resultados muito lentamente. E porque é que nós apresentamos os resultados tão lentamente? Porque não há dinheiro. Não há dinheiro para um escritório onde nos possamos reunir e trabalhar. Não há dinheiro para equipamento apropriado. Não há dinheiro para todo o material que é necessário usar, gastar e destruir - sim, porque em engenharia, o material é destruído como parte do processo de desenvolvimento, as peças gastam-se, os materiais são usados, cortados, colados, pregados, juntos e transformados numa coisa melhor, ao contrário do nosso País. E, assim, somos "forçados" a trabalhar noutros empregos que não são tão convidativos à nossa vocação ou às nossas capacidades, mas é o que temos disponível. Temos contas para pagar, como toda a gente. E, no fim, retirando o tempo de refeições, de horas de sono num mínimo que se aproxime de saudável (e nem sempre a conseguir-se), do tempo de trabalho, do tempo perdido no trânsito ou à espera dos transportes públicos que, quando não é pelo trânsito, é pela greve que não chegam, sobra-nos um tempo miserável para nós mesmos. Tempo que dedicamos aos projectos que desenvolvemos e que, pela lentidão a que se desenrolam, não são, ainda, viáveis para tornar esta instituição em algo auto-sustentável fazendo com que não precisemos mais de outros empregos. Nós, também, queremos poder dedicar-nos a fazer algo que gostamos - projectos que se converterão em produtos que serão úteis para todos vós. Poderão salvar-vos a vida, a carteira e a paciência. Somos uma instituição com as pessoas, o projecto e a capacidade técnica e humana de criar, neste País, uma infraestrutura que irá criar 2500 novos postos de trabalho e 150 novas empresas a cada três anos e produzir tecnologia de ponta e produtos de indústrias criativas em quantidades mastodonticas. Sim, temos um projecto concreto que nos permite fazer a nossa parte para ajudar esta esquina da Europa. Só não somos uma instituição com dinheiro para tal. E ninguém quer que sejamos.
Nós somos um pequeno reduto de resistentes que se recusa - ainda - a abandonar este lugar que mais parece esquecido até pelos deuses de qualquer religião. Acreditamos no potencial do País. Acreditamos que o País tem os recursos (e os que não tem, pode gerá-los) e tem as pessoas para se tornar melhor. Mas, mais uma vez, são a preguiça, o medo, o egoísmo, a mesquinhez e a incompetência que inviabilizam tudo:
- É a incompetência dos nossos governantes. Não que esteja a tomar partidos e quando digo "governantes", não falo só dos ministros. Falo de toda a pérfida Assembleia da República. Fala-se em deitar abaixo o Governo, demitir os nossos governantes, dissolver a Assembleia. Ridículo. O País não precisa de mais guerras partidárias. Não temos mais capacidade para suster discussões sobre dimensões penianas. A oposição tem que abrir os olhos, crescer, e ajudar o Governo a funcionar, em vez de sabotar todas as tentativas de resolução. O nosso Governo pode não estar a tomar o caminho certo - em muita coisa certamente não o terá tomado - mas a oposição não faz mais que sabotar qualquer hipótese de alguma medida resultar.
- É o egoísmo e o medo de quem tem dinheiro. Não é novidade nenhuma nem é preciso ser-se um génio para saber que é em tempo de crise que mais se deve investir. Pois em tempo de crise cria-se riqueza para quando a salvo se consolidar. Mas é quando menos o fazem. Há quem tenha mais dinheiro do que alguma vez vai ter oportunidade de gastar e mesmo assim continue a amealhar. O dinheiro não desapareceu. A riqueza acumulou-se pontualmente em vez de estar distribuída de uma forma mais moderada e geradora de ainda mais riqueza. Os ricos esquecem-se que se não houver mais ninguém com dinheiro, o dinheiro deles também deixa de valer. E é isso que está a acontecer. É preciso investir. É preciso fazer circular a riqueza. Só assim se gera mais valor.
- Não são as greves que vão ajudar a salvar o País. Cada greve é mais uma facada nas costas desta "Nação Valente e Imortal", que hoje em dia é uma "Nação Descrente e Imoral". As greves prejudicam é todos os outros. Não fazem nem uma dentada nas pessoas que têm que tomar decisões. Querem fazer greves, façam-nas, mas sejam focados. Não prejudiquem o povo, mas sejam assertivos contra quem querem lutar. Se estão contra as medidas tomadas por um determinado poderoso, então façam greve contra esse poderoso. Recusem-se a servi-lo. Recusem-se a negociar com ele. Recusem-se a fornecer-lhe bens, a fornecer-lhe serviços. Façam-no em escala, façam-no aos poderosos que o rodeiam. Mas não deitem mais abaixo o País. As greves, no estado em que o País está, só o vão enfraquecer mais. Infelizmente, esta Nação está tão de tanga que nem greves pode tirar da cartola sem se auto-mutilar. Cada greve nova só tem tido o efeito de nos afundar um pouco mais.
- E é a preguiça e mesquinhez de muitos. É a falta de crença nas nossas capacidades. O nosso País já foi a nação mais poderosa do mundo e hoje está reduzido ao topo de todas as tabelas más e ao fundo de todas as tabelas boas.
Eu estou a ficar sem os meus melhores amigos, porque estão todos a ir embora - cá não têm hipótese de se sustentar. São pessoas, a maior parte delas, altamente qualificadas, ordens de grandeza acima de qualquer média e estamos a perdê-las para o estrangeiro. Isto é um ciclo vicioso. O País não consegue sustentar a nossa massa cinzenta e a nossa massa cinzenta não fica cá para ajudar o País a desenvolver-se e a criar condições para se sustentar. Alguns deles já foram há alguns anos e não pensam em voltar. Outros estão de malas feitas. Eu próprio já tive a minha experiência no estrangeiro.
Há soluções? Sim, há soluções. Subir os impostos não é uma delas. Renovar frotas automóveis das empresas estatais também não. Perder tempo e dinheiro a cada novo Governo eleito ainda menos. E criar fundações de orientação duvidosa certamente que não. Eu não posso salvar o País sozinho. A minha equipa não pode fazê-lo sozinha também. Mas toda a gente pode fazer a sua parte e, quanto a nós, não podendo salvar o País todo, podemos pegar no fio do novelo com o que temos em mãos.
Não se enganem. O nosso País tem a capacidade para criar a sua própria marca de carros utilitários, a sua marca de carros de super luxo, a sua própria marca de carros super desportivos. Tem a capacidade para construir navios de mercadorias, de passageiros, de luxo. De construir aviões de qualidade militar. Este país tem a capacidade criar a mais avançada tecnologia de ponta, de entrar no mercado dos telemóveis e roubar terreno a todas as outras marcas. Tem a capacidade de entrar no mercado do equipamento informático. Tudo de desenvolvimento e fabrico nacional, não anedotas como montagem de computadores fabricados na China ou Turquia que levam o selo de "Produto Português" só porque lhes meteram uma etiqueta cá. Este País tem a capacidade de se tornar uma super-potência de investigação nas áreas de medicina, biologia, engenharia. Tem a capacidade de se tornar um super-exportador.
Mas infelizmente, tendo tudo isto, também tem como decisores aqueles que não têm a capacidade de deixar que tal aconteça.
Há soluções? Sim, há soluções. Subir os impostos não é uma delas. Renovar frotas automóveis das empresas estatais também não. Perder tempo e dinheiro a cada novo Governo eleito ainda menos. E criar fundações de orientação duvidosa certamente que não. Eu não posso salvar o País sozinho. A minha equipa não pode fazê-lo sozinha também. Mas toda a gente pode fazer a sua parte e, quanto a nós, não podendo salvar o País todo, podemos pegar no fio do novelo com o que temos em mãos.
Mas infelizmente, tendo tudo isto, também tem como decisores aqueles que não têm a capacidade de deixar que tal aconteça.
quinta-feira, 23 de agosto de 2012
Another blast from the past
Twelve years ago, back in 2000, when I got into the University, I was having a severe addiction to Half-Life. Mainly, building Half-Life mods and levels. So, I decided to join the two together and this came out:
That was the beginning of it, what I managed to find. The video is old and from a very early stage of the project. I think I may be able to find a more recent version, but a lot of it has been lost when the hard-drive of the server holding the backups died while I was reinstalling the laptop where I designed those maps. Should have known better than to trust that brand, that never failed to... fail me.
segunda-feira, 6 de agosto de 2012
Blast from the past 1: Chefax C1
Not many people know it and even less probably remember it, but a few years ago I was on a quest to build a damn awesome operating system (confession: I still am, I just don't have the time or the tools, at the moment). But I started the project and started coding it. Today I was poking around and found an early screenshot of it booting on VMWare.
(Sorry, only in Portuguese)
This was a project I started before enrolling in the university that I migrated to the first attempt I had at creating a project incubator: the Chefax I&D group. Later, when I left the university (and consequentially, Chefax I&D) I took the project with me and brought it to Onda Technology.
Those were fun days. In a time when coding had class instead of swag.
PS: No, "Marta" was not the name of a girlfriend, it was the name of my baby goddaughter.
PS: No, "Marta" was not the name of a girlfriend, it was the name of my baby goddaughter.
segunda-feira, 28 de maio de 2012
Beware of the geeks bearing gifts
Have I mentioned how much I like to unpack things?
On the picture: two of the four Xeon processors we received from Intel today.
On the picture: two of the four Xeon processors we received from Intel today.
sexta-feira, 4 de maio de 2012
Package Doctor: Small change
Since the Package Doctor project is of broader visibility and not a simple personal project, I'll stop posting about it on this blog. From now on, all important news about Package Doctor will be published on the Onda Technology Report. Please, refer to that blog for the updates on all the projects.
quarta-feira, 29 de fevereiro de 2012
Package Doctor First Success
Success! Package Doctor has now created its first binary package! This package management system is now able to fully create binary packages ready to install from the source and the corresponding ".pkd" file. This makes it closer to be ready for download for world-wide testing. The system is entirely built on BASH scripts and works quite well, making use of UnionFS-FUSE to keep everything isolated. The next step is to check the performance of the system while compiling over a FUSE-based mount, to determine if the performance loss over building directly over the real filesystem is significant. Stay tuned.
# pkd -b binutils01
[ Package Doctor ] package management system
Copyright 2010-2012 Onda Technology Institute
[ OK ] Downloading binutils-2.20.1.tar.bz2
[ OK ] Preparing build environment for package "binutils" (binutils)
[ OK ] Unpacking binutils 2.20.1
[ OK ] Preparing to compile binutils
[ OK ] Compiling binutils
[ OK ] Installing binutils
[ OK ] Building binary package /System/Data/L0/default.profile/packages/binutils-2.20.1.pkb.tar.bz2
[ OK ] Cleaning up.
[ Package Doctor ] package management system
Copyright 2010-2012 Onda Technology Institute
[ OK ] Downloading binutils-2.20.1.tar.bz2
[ OK ] Preparing build environment for package "binutils" (binutils)
[ OK ] Unpacking binutils 2.20.1
[ OK ] Preparing to compile binutils
[ OK ] Compiling binutils
[ OK ] Installing binutils
[ OK ] Building binary package /System/Data/L0/default.profile/packages/binutils-2.20.1.pkb.tar.bz2
[ OK ] Cleaning up.
terça-feira, 27 de setembro de 2011
The decay of slashdot, Part 1
It breaks my heart when I see stories like this. The first thing that would cross my mind about a website with over a million visitors a day that carries the tagline "News for nerds, stuff that matters", is far from being an obituary for people that, while having their own merit for what they may have done, little have to do with either "news for nerds" or "stuff that matters". I wish my best to the family of the man, but it seems he has lived a long and very productive life and that his time had come. However, I have lost my own brother recently. He was only 25, and while also living a full life and being a very active civil engineer doing his doctorate thesis, the event that took him seems more memorable to a community of geeks than the passing away of the inventor of Doritos. Not because of the horrific situation, but because of the less bad side of that coin being the good that might come from the tribute of a mourning brother wishing to help prevent the same from fate coming to someone else. So, it breaks my heart that Slashdot gladly accepts publishing stories nothing related to what it supposedly stands for, and prefers to reject the publishing of stories helping to spread the word about a potentially lifesaving project to prevent something that could happen to any of them.
quarta-feira, 7 de setembro de 2011
New book, maybe?
I've been thinking about writing a new book, this time for people who would like to learn C++ from the beginning. I'm still not sure about going forward with it, and about the details, but it will, without a doubt, already be up to date with the latest revision of C++. My previous book, about good programming practices for C++, has already seen some sales, although not really significant. I'm still unsure if I'm going to merge the subjects of both books or keep them in separate volumes. It will, however, take much more time to release than the first one.
sábado, 23 de julho de 2011
Adsense disabled
For reasons yet to be explained to us, Google has decided to disable Onda Technology's Adsense account. This was one of the sources of income to help with the bills. Because of it, we may have a harder time in the future. For now, it doesn't make a significant difference, as there wasn't yet enough income from it, but with the upcoming website updates and the new information to be published, it would have been an important means to ease the financial burden. I've submitted an appeal, but I'm not very positive about it. I'll stay in touch and let you know if there is any more relevant information.
UPDATE: They reaffirmed the account cancelation without any explanation.
UPDATE: They reaffirmed the account cancelation without any explanation.
segunda-feira, 11 de julho de 2011
Google+
Since we were already talking about social networks, I thought I could share that today I received an invite to join Google+. I've decided to take it for a spin, see what comes of it and share with you my thoughts. So far it looks to be quite clean and lightweight, very intuitive while also featuring some interesting eye-candy for them masses. Doesn't yet seem to be the typical social networking site clogged with features we'll never use or full of distracting elements. It appears to be something that goes straight to the subject and very focused on what it's designed to do. In the following days I'll report a bit more on this subject.
domingo, 29 de maio de 2011
New project: The Life Bracelet
As some of you already know, my brother Miguel passed away a few days ago, on 25th of May. He was only 25 years old and the details surrounding the accident are yet unknown to us. His lifeless body was found on a public pool which should have been under surveillance. For incomprehensible reasons, no one was watching the pool at the time.
Because of that incident, a new project was created and added to the list of public projects. "The Life Bracelet" is a project to develop and implement a bracelet to monitor life signs of people in sports facilities, amusement parks, nursing homes and hospitals. The bracelet would resemble a small watch and constantly monitor pulse and oxygen saturation, transmitting the data to a central server through specialized access points. Should any problem arise, emergency teams can be dispatched immediately to the site. This way it may be possible to save lives in similar situations and give patients of healthcare institutions much more liberty and independence.
terça-feira, 19 de abril de 2011
Book launch
My first book, "C++ Programming: Good Principles For Excellent Endings" has now been published.
For a long time I've been asked by numerous people I've worked with to write something like this. I've given some courses on programming best practices before. Eventually, I had the opportunity to do so and I was able to create a simple manual to help beginners getting started with some higher quality software development. This book is part of the internal documentation used at Onda Technology for training new team members. I released this partially reviewed version as an Edition Zero to gather some more input from anyone willing to contribute, so it could be improved for the final version of the first edition. I hope this not only helps a lot of people improve their skills, but also that it will help gather additional funding to support Onda Technology's research and development projects.
This book is about good practices for C++ based projects. The idea is to provide recruits and students, and even current professionals and leaders, with an appropriate manual to further enhance their C++ knowledge. This manual covers a wide range of subjects, not only from the technical point of view, but also topics about social aspects such as hiring, managing employees, working as a team and setting up an appropriate infrastructure. We encourage you to provide us with ideas of topics you would like to see covered in the book or that you believe the future generations of programmers need to be aware of. If you have any ideas, please contact us. This "Edition Zero" is a pre-release version of the final book. It most likely contains errors and requires corrections. With your help, the final result can turn out to be a great product and an indispensable tool for programmers everywhere. From those who buy the Edition Zero of the book and report valid correction suggestions, we will be choosing a few, randomly selected in lottery style, who will be offered the final version of the First Edition of the book. In order to be eligible to enter the contest and receive the gift First Edition, you'll have to provide us with a valid proof of purchase of the Edition Zero. You can acquire your copy here. We are always open to your input and we'll provide you with feedback.
The entire profits from selling this book will be used to fund the research projects being developed at Onda Technology.
You can get your copy here.
Update (06.07.2011):
The book is now available on Amazon both in paperback and Kindle edition.
For a long time I've been asked by numerous people I've worked with to write something like this. I've given some courses on programming best practices before. Eventually, I had the opportunity to do so and I was able to create a simple manual to help beginners getting started with some higher quality software development. This book is part of the internal documentation used at Onda Technology for training new team members. I released this partially reviewed version as an Edition Zero to gather some more input from anyone willing to contribute, so it could be improved for the final version of the first edition. I hope this not only helps a lot of people improve their skills, but also that it will help gather additional funding to support Onda Technology's research and development projects.
This book is about good practices for C++ based projects. The idea is to provide recruits and students, and even current professionals and leaders, with an appropriate manual to further enhance their C++ knowledge. This manual covers a wide range of subjects, not only from the technical point of view, but also topics about social aspects such as hiring, managing employees, working as a team and setting up an appropriate infrastructure. We encourage you to provide us with ideas of topics you would like to see covered in the book or that you believe the future generations of programmers need to be aware of. If you have any ideas, please contact us. This "Edition Zero" is a pre-release version of the final book. It most likely contains errors and requires corrections. With your help, the final result can turn out to be a great product and an indispensable tool for programmers everywhere. From those who buy the Edition Zero of the book and report valid correction suggestions, we will be choosing a few, randomly selected in lottery style, who will be offered the final version of the First Edition of the book. In order to be eligible to enter the contest and receive the gift First Edition, you'll have to provide us with a valid proof of purchase of the Edition Zero. You can acquire your copy here. We are always open to your input and we'll provide you with feedback.
The entire profits from selling this book will be used to fund the research projects being developed at Onda Technology.
You can get your copy here.
Update (06.07.2011):
The book is now available on Amazon both in paperback and Kindle edition.
It is happening
We went forward with it and, now, Onda Technology is a non-profit organization. Bureaucratic details are still being worked on and it seems to be a long process still to take a bit of time. Today we launched the new website, new contents and published preliminary information of the first projects to become public. Check our website for more details. Also, there are more surprises to come.
domingo, 2 de janeiro de 2011
Changes to come
Onda Technology used to be an embryo for a corporate environment, keeping secretive about its projects and dealing with customers. Being a corporate environment or a company, never served well the purposes for the creation of this institution. Onda Technology was supposed to be a home for research and development instead of blind profiting. Now that's about to change. That's why Onda Technology is now becoming a non-profit R&D institute. Some of our projects which have, so far, been strictly for internal use and developed behind closed doors, are about to be released publicly. This will be a lengthy process, as all of us have other jobs to attend and the preparation process itself is already tedious. We'll also have to take care of the licensing, which, for a lot of reasons, to be explained later, can't be any of the current "standard" licenses. We'll also be releasing documentation and our internal manuals. But the most troublesome part is still all the bureaucracy of officially creating the non-profit Onda Technology Institute.
Subscrever:
Mensagens (Atom)


