Dias de Inferno na Síria - por Klester Cavalcanti

Acabei de ler o relato de Klester Cavalcanti sobre sua experiência na Síria em maio de 2012. Jornalista recifense, ele viajou ao país em plena guerra civil para escrever sobre a situação de Homs, principal foco de resistência do Exército Livre da Síria.

Contexto da guerra

Em março de 2011, inspirados pela Primavera Árabe, o povo sírio se rebelou contra o governo de Bashar al-Assad, presidente da Síria desde 2000, sucessor do falecido pai Hafez al-Assad que governou a Síria desde 1971 quando assumiu o poder através de um golpe de Estado.

Hafez pertencia a um grupo étnico-religioso chamado Alauíta, minoria na Síria, e durante seu governo, favoreceu os cidadãos desta etnia. Os sunitas, a maioria do povo, descontentes com o governo de Hafez, já tentaram derrubá-lo no passado, culminando em um bombardeio das Forças Armadas da Síria sobre a cidade de Hama, matando 20 mil pessoas (grande maioria civis), passando a ser conhecido como o Massacre de Hama.

O descontentamento do povo sempre foi presente, mas quaisquer manifestações contra o governo al-Assad sempre foram duramente repreendidas através de força militar. No entanto, após a queda dos ditadores da Tunísia e Egito em 2011, os sírios decidiram ir às ruas com esperança de conseguirem o mesmo. Bashar repetiu as atitudes do seu falecido pai, e respondeu com mais mortes dos opositores. Órgãos como ONU e União Europeia rechaçaram as atitudes do ditador, mas a situação só fez piorar. No texto do livro, Klester explica o contexto da guerra e menciona que cerca de 3000 soldados desertaram do Exército Sírio e se juntaram aos civis, formando o Exército Livre da Síria, principal força opositora ao governo de Bashar.

Sofrimento de Klester

O livro passa com clareza a falta de escrúpulos do governo de Bashar al-Assad, desrespeitando qualquer protocolo diplomático e todo tipo de direito fundamental. O jornalista adentrou território sírio portando visto para trabalhar por 7 dias, concedido pelo Consulado Sírio em São Paulo, assim como um documento oficial descrevendo todos os equipamentos que estaria autorizado a portar como máquina fotográfica, filmadora, entre outros. Todo o cuidado de Klester para fazer seu trabalho legalmente não impediu o governo sírio de prendê-lo por 6 dias até seu visto vencer, sem nunca tê-lo explicado o motivo da prisão. Como se não bastasse, foi ameaçado de morte diversas vezes e torturado para assinar documentos em árabe, trazendo como souvenir da viagem uma queimadura de cigarro no rosto, aplicada por policial sírio.

Mesmo não tendo alcançado seu objetivo inicial, de acompanhar a rotina dos rebeldes do ELS (Exército Livre da Síria) em Homs, o livro consegue retratar a guerra muito bem, através das impressões de Klester na prisão em que ficou, assim como o que sofreu para entrar e sair dela.

End of a cycle and plans to the next

As I get closer to the end of my graduation in Computer Engineering, I ask myself how my future would be like.

Will I turn into an ordinary programmer, software engineer, or maybe occupy a management position and get far from coding? Will I apply for being a Masters Candidate, as some of my colleagues are doing?

My experience in college was not very comfortable. It started back in 2006 and should have ended in 2010, totalling 5 years, but here I am, in 2013, after almost dropping out several times, when I thought about moving to economics, psychology, advertising/marketing, and probably many more. A couple years ago, telling from my grades, I didn't feel I belonged to engineering nor computing and I've felt I would be useless to society, as I wasn't turning into a competent professional.

In 2009, I started being an undergraduate researcher, supervisioned by Prof. Paulo Maciel, and loved the experience. My motivation didn't come from the subject of the research (embedded systems performance analysis), but from the feeling of being useful to someone.  I was really thirsty for that feeling. At that time, I was still getting some bad grades, as I hated to study things just for a freaking exam, but was doing very well on my activities on the research. At a specific time, I had to quit the research, as I was getting threatened to be expelled from university, after several failures in different courses, so I really needed to get good grades. I even managed to get good grades, but the feeling of not belonging to computer engineering remained. Fortunately, things got better after I was accepted as an intern in a Research & Development laboratory, from a big company in Brazil (Itautec). A couple weeks ago, I completed one year there and I really feel competent in my job and that my contribution there is relevant, so I am finally happy with the choice I made almost ten years ago, when I was 17 and told myself I would be a Computer Engineer, without really realizing the meaning of this.

In CIn/UFPE, one of the last things you do when finishing your Computer Engineering graduation is chosing  a project to work on for a semester (you chose any subject you want), and then present the results to a teacher that will give you a grade for it.
I was thinking about that for a while, and some months ago I finally discovered the subject I want to work on. I've always been an enthusiast of computer security related stuff, and always wanted to work with something related to it. Without totally being aware of the relationship between these two, I  started researching about China's censorship in the Internet, just out of curiosity. I was kind of afraid of this government behavior getting spread to other countries, and wanted to be able to do something against it. So I discovered this project called Tor.
It's a technological solution (still a work in progress, but already useful to lots of people) against governments censorship and surveillance in the global network. And that's exactly what I plan to work on in the next semester: studying about governmental methods of censorship and surveillance, as well as ways to avoid them, and also contribute to the Tor project. I am already kind of involved with it, as I posted in another blog (in portuguese: Tor: Entendendo o projeto and Tor: Primeira contribuição).

So today, after reading the Introduction of Assange's book Cypherpunks, I realized I would like this  last semester to last more like 5 years or something, as I am so pleased to study about this subject. It was a very inspiring text, giving me a feeling close to the one a priest has when hearing his god's call, just before he choses to be a priest. I'm not religious, but I've felt I had to extend this semester work to be the subject of a research project in a future Masters course in Computer Science. Maybe I will change my mind, as I learned that it  happens very often with myself, but that's ok, I just would like to thank Julian Assange (and some other guys like the ones from Tor Project) for being so inspiring. Thank you!

O que é um framework de desenvolvimento web?

Durante este período (meu penúltimo) do curso de Engenharia da Computação, no Centro de Informática da UFPE, cursei três disciplinas que exigiam a utilização de um framework de desenvolvimento web. A intenção em nenhuma delas era ensinar algo sobre desenvolvimento web. Os frameworks foram utilizados apenas como meio de pôr em prática os conceitos aprendidos em sala, criando uma aplicação funcional, mas sem gastar tanto esforço em detalhes que já aprendemos em disciplinas anteriores.

As disciplinas foram:

Tópicos Avançados em Engenharia de Software (Prof. Paulo Borba)
Framework utilizado: Grails


Análise de Projetos e Sistemas (Prof. Augusto Sampaio)
Framework utilizado: Play


Engenharia de Software Educativo  *é preciso ter uma conta no Redu e permissão para acessar a página (Prof. Alex Sandro Gomes)
Framework utilizado: Ruby on Rails



Antes de cursar estas disciplinas, eu já havia mexido com o framework Django, então ao utilizar os outros três, não tive um choque tão grande quanto outros alunos sem esta experiência.



Eis então que, sem nunca ter sido um desenvolvedor web experiente, acabei tendo contato com quatro frameworks diferentes. Continuo me considerando amador nesta área, no entanto, ao menos consegui responder o que era um framework de desenvolvimento web, quando meus colegas de disciplina perguntavam.

Pequena história do desenvolvimento Web

Nos primórdios (anos 90) da popularização da WWW, a interação do usuário com as páginas era simplesmente baixar páginas estáticas, com links para outras páginas e em alguns momentos preencher algum formulário, ou fazer upload de um arquivo pela página.

Os servidores Web funcionavam praticamente como servidores de arquivos, servindo páginas através do protocolo HTTP, sem realizar muito processamento ou execução de programas por baixo dos panos.

Já nos anos 0x (~2004 em diante),  os servidores Web começaram a trabalhar mais. Os usuários passaram a ter cadastro nas páginas, e o conteúdo de cada uma delas dependia do usuário que estava logado. Nessa época o Orkut estava dando seus primeiros passos.

Os sites mais atuais deixaram de ser simplesmente um conjunto de páginas .html e passaram a ser Aplicações Web. Não eram mais arquivos de texto com hiperlinks, e sim um software rodando no servidor Web, que interagia com o usuário através do browser, via Internet.

Naturalmente, o desenvolvimento dessas páginas tornou-se muito mais complicado. Criar uma página .html estática dos anos 90 era tão fácil, que crianças de 11 anos curiosas tinham as suas. Bastava conhecer o Microsoft FrontPage (vinha junto com o pacote Office), se cadastrar num host grátis como Xoom, Geocities, HpG, iG e enviar seus arquivos para lá. Criar uma página era quase tão fácil quanto editar um documento do Word. Para ter uma ideia de como as páginas eram, viste este site. Nostálgico para alguns!

O desenvolvimento da Web 2.0 (como passaram a chamar), passou a exigir conhecimentos de programação, e não mais utilizar um FrontPage ou editar um HTML. Além disso, era muito provável que fosse necessário persistir os dados em algum banco. Ou seja, também era preciso conhecer algo de SQL e modelagem de bases de dados.

As trocas de arquivos entre o servidor Web e os usuários também mudou. Antes, o mesmo arquivo .html que o pirralho de 11 anos enviava para o servidor Web era aquele que seria "baixado" (visualizado) por todos os visitantes do seu site amador. Esta era a forma de o pirralho atualizar seu site.
Agora, o desenvolvedor (não mais um pirralho de 11 anos), passa a enviar programas ao servidor Web. E aí, quando os visitantes acessam um endereço, não é baixado o arquivo que o desenvolvedor enviou, e sim executado o programa. O que o visitante visualiza é exatamente o resultado da execução daquele programa. O código-fonte dos sites passou a ser "secreto".

A linguagem mais popular era a PHP. Através desta linguagem, você pode tratar as requisições do usuário, fazendo consultas no banco de dados se necessário, e exibindo os resultados através do velho HTML. Pro usuário, as páginas continuavam a mesma coisa, sendo exibidas pelo browser. A diferença era que o conteúdo era personalizado. Pro desenvolvedor, tudo mudou. HTML passou a ser um detalhe do desenvolvimento, fazendo parte do chamado Front-End. O restante do programa (não relacionado à visualização) que antes não existia, chamou-se Back-End. Hoje temos até programadores Web especializados em Front-End (mais próximos à area de Design), e outros especializados apenas em Back-End (mais próximos à area de computação)!

Com o tempo, percebeu-se que algumas partes do desenvolvimento Web eram extremamente repetitivas, como o armazenamento e consulta de dados no banco e interface entre código executável e exibição das páginas. Foi aí que algumas pessoas tiveram uma ideia de automatizar parte desse desenvolvimento, e criaram os Frameworks de Desenvolvimento Web.

O que esses frameworks fazem?


É possível programar aplicações web em praticamente qualquer linguagem de programação, como PHP, Python, Java, Perl e até C/C++. Basta que o servidor web seja capaz de fornecer as entradas do usuário (cliques ou dados de formulários) ao programa, executá-lo e exibir a saída (página resultante) de volta ao browser do usuário.


Para algumas dessas linguagens foram criadas ferramentas que auxiliam o desenvolvimento web de várias formas. Por exemplo, para a linguagem Python, criaram o Django. Com ele, utilizando apenas um comando, você pode criar todas as tabelas do banco de dados a partir do código das classes Python que você criou. O Django também traz pronto o código de comunicação HTTP para envio de páginas e recebimento de dados de formulários, código de comunicação com o banco de dados, e até o código que separa as regras de negócio/dados (conteúdo) da exibição (formatação).

O mesmo acontece com Ruby on Rails (criado para quem quer programar em Ruby), Play (para Java) e Grails (para Groovy), entre vários outros. Com o advento desses frameworks, desenvolvimento Web utilizando PHP puro ficou fora de moda e já é encarado como ultrapassado por muitos. É importante salientar que PHP continua sendo usado, inclusive pelo Facebook. A vantagem destes frameworks é agilidade de desenvolvimento e não necessariamente performance (ponto crítico para o Facebook e qualquer aplicação massiva como esta). Como a maioria das aplicações não possuem mais que algumas centenas de usuários simultâneos, utilizar estes frameworks é quase sempre uma excelente ideia.