WordPress plugin: Admin Anti-forget Alarm

I wrote a small WordPress plugin to prevent users from publishing a post without excerpt or thumbnail, or with a too big excerpt, or with a too small thumbnail, or with an uppercase-only title.

Screenshot do plugin

This screenshot is showing some of the messages the plugin displays in portuguese.

For some of my websites it’s important to require the editors to fix some stuff before publishing something, and it looks like this is a useful feature for other people as well. There is even a Require Thumbnail plugin in the WordPress Plugin Directory that seems to do one of the things I’ve just implemented.

The plugin works with two different types of requirements: ths first generates errors (i.e., you can’t publish if you don’t fix it) and the second generates warnings (i.e., you will receive a message but you can proceed to publish if you really want to do that).

I thought of not releasing the plugin (because it’s written in Portuguese and you don’t have a cool interface to decide what’s required yet), but in a fashion of overstated bazaar I decided to push the code anyway (without putting in the WordPress plugin directory, of course) so that other people can collaborate if they want to. Take a look :)

Github project home page: https://github.com/tmadeira/antiforget

Git repository to clone: https://github.com/tmadeira/antiforget.git

Code (PHP): https://github.com/tmadeira/antiforget/blob/master/antiforget.php

Download: antiforget.zip (this is pre-alpha: I provide no warranty!)

Retrospective: new plugin for WordPress

I’ve just wrote my first WordPress public plugin, that I’m licensing under GPL v3. This post is to make it public. I’m writing in English because the WordPress plugin directory asks me to provide a plugin page to host the files there and I’ll provide the URL of this post. Update: The plugin is now in the WordPress plugin directory: wordpress.org/extend/plugins/retrospective/


The website of the brazilian newspaper O Estado de São Paulo has a nice way to display news in a retrospective-style (check this screenshot or this link — Flash required).

Wouldn’t it be nice if we could display WordPress posts in our pages and categories in the same way just by using a shortcode? The possibilities are many. That’s why I wrote the Retrospective plugin for WordPress.

It has at least two advantages over the version you just saw:

  1. Does not require Flash (its implementation uses only CSS and JavaScript/jQuery)
  2. Has a option to respect the (time-)scale of the posts.

Its use is very simple. Wherever you add the shortcode [retrospective] the plugin will draw that cool retrospective. The shortcode supports several attributes:

  • count — limit the number of posts to be displayed (default = 10; use -1 to display all)
  • cat — display posts with category IDs comma-separated (default = display all posts)
  • width — the width of the timeline in pixels (default = 600)
  • delay — the time of the focus change animation in milisseconds (default = 1000)
  • scale — if set, respect the time scale in the distances between the points in the timeline (default = false)
  • image_width, image_height — the dimensions of the thumbnail images in pixels (default = 300×180)
  • image_border_size — the size of the image’s border in pixels (default = 7)
  • image_border_color — the color of the image’s border in hexa RGB (default = 000000)
  • image_margin — the space between the images (default = 5)
  • date_format — the date format in PHP format (default = d/m/Y)

Some screenshots

Here is a screenshot from juntos.org.br with scale=true (in the link you can see it working):

Screenshot (Retrospective plugin in juntos.org.br)

And here is a screenshot from a fresh WordPress install (TwentyEleven theme without modifications):

Screenshot (Retrospective plugin in TwentyEleven theme

Customizing

Post thumbnails

For better results, I suggest always adding post thumbnails to your posts and using registered image sizes in image_width and image_height attributes.

Styling retrospectives

The generated HTML is very easy to style (but just be careful with margins and paddings, they’re set with !important attribute — I did it to try not to break with any theme). Here is a sample:

<div id="retro-uniquehash" class="retrospective">
  <!-- TIMELINE -->
  <ul class="time">
    <li rel="0">
      <a href="permalink" style="left:0px;"><span>date</span></a>
    </li>
    <li rel="1">
      <a href="permalink" style="left:300px;"><span>date</span></a>
    </li>
    <li rel="2">
      <a href="permalink" style="left:600px;"><span>date</span></a>
    </li>
  </ul>

  <!-- PHOTOS -->
  <div class="photos">
    <ul>
      <li rel="0">
        <a href="permalink" title="title"
          ><img src="file" class="wp-post-image"
        /></a>
      </li>
      <li rel="1">
        <a href="permalink" title="title"
          ><img src="file" class="wp-post-image"
        /></a>
      </li>
      <li rel="2">
        <a href="permalink" title="title"
          ><img src="file" class="wp-post-image"
        /></a>
      </li>
    </ul>
  </div>

  <!-- POSTS -->
  <ul class="posts">
    <li rel="0">
      <a href="permalink" title="title">
        <h2>Title <span>(date)</span></h2>
        <p>Excerpt</p>
      </a>
    </li>
    <li rel="1">
      <a href="permalink" title="title">
        <h2>Title <span>(date)</span></h2>
        <p>Excerpt</p>
      </a>
    </li>
    <li rel="2">
      <a href="permalink" title="title">
        <h2>Title <span>(date)</span></h2>
        <p>Excerpt</p>
      </a>
    </li>
  </ul>
</div>

Styling a specific retrospective

The generated hash takes in consideration all the attributes sent to the shortcode and also how many retrospectives appeared before in the parsing of the actual page. I made it that way to allow users to set up two exactly equal retrospectives in the same page. Because of that, I don’t recommend setting styles for #retro-uniquehash. I think a reasonable solution for this issue is to make add an outer container.

Download

Here is the code for download: retrospective.zip

* Warning: Please consider I’m using a bazaar approach here. Be aware that the plugin probably has a lot of bugs (and please tell me if you catch any).

I hope you enjoy it. Have fun and please let me have your feedback! :)

Ataque, não: protesto!

por Richard Stallman (Free Software Foundation)

O Stallman escreveu algo parecido com o que eu estava há semanas sentindo necessidade de escrever. Explica por quê tirar sites do ar não requer inteligência, o que é DDoS e o que é botnet. Não chama os manifestantes de moleques como fazem alguns petistas aqui no Brasil e responsabiliza a vigilância, os interesses capitalistas e os governos pelos protestos. Texto muito interessante. Recomendo!

Os protestos online feitos pelo grupo Anonymous são equivalentes a uma manifestação na internet. É um erro classificá-los como atividade de grupos hackers (uso da astúcia brincalhona) ou de crackers (invasão de sistemas de segurança).

O programa que os manifestantes usam, chamado LOIC, já vem pré-configurado, de modo que nenhuma astúcia é necessária para rodá-lo, e ele não invade o sistema de segurança de nenhum computador.

Os manifestantes do Anonymous não tentaram assumir o controle do site da Amazon e nem roubar dados da MasterCard. Eles entram pela porta da frente de uma página, que simplesmente não é capaz de suportar tantos visitantes ao mesmo tempo.

Chamar os protestos organizados por eles de “ataques de negação de serviço” (DDoS) também está errado. Um ataque DDoS propriamente dito é feito por meio de milhares de computadores zumbis. Alguém invade o sistema de segurança destes computadores (com frequência recorrendo a um vírus) e assume remotamente o controle sobre eles, programando-os para formar uma botnet (rede de zumbis, que é um sistema em que computadores aliciados desempenham automaticamente a mesma função) que atende em uníssono às suas ordens (neste caso, a ordem é sobrecarregar um servidor). A diferença é que os manifestantes do Anonymous em geral fizeram eles mesmos que seus próprios computadores participassem do protesto.

A comparação mais adequada seria com as multidões que foram, em dezembro de 2010, protestar diantes das lojas da Topshop (cadeia de varejo de moda no Reino Unido). Aquelas pessoas não invadiram as lojas e nem subtraíram dali nenhuma mercadoria, mas certamente provocaram um grande inconveniente.

Eu não gostaria nem um pouco se minha loja (supondo que eu tivesse uma) fosse alvo de um protesto de grandes proporções. A Amazon e a MasterCard tiveram uma reação parecida, e seus clientes ficaram irritados. As pessoas que tinham a intenção de fazer uma compra na Topshop naquele dia também devem ter ficado incomodadas.

A internet não pode funcionar se os sites forem constantemente bloqueados por multidões, assim como uma cidade não funciona se suas ruas estiverem sempre tomadas por protestos. Mas, antes de declarar seu apoio à repressão dos protestos na internet, pense no motivo de tais protestos: na internet, os usuários não têm direitos.

Como ficou claramente demonstrado no caso do WikiLeaks, devemos suportar sozinhos as consequências daquilo que fazemos na rede.

No mundo físico, temos o direito de publicar e vender livros. Quem quiser impedir a publicação do livro tem de levar o caso a um tribunal. Para criar um site na rede, porém, precisamos da cooperação de uma empresa de concessão de domínios, de um provedor de acesso à internet (ISP) e, com frequência, de uma empresa de hospedagem, e cada um desses elos pode ser individualmente pressionado a cortar o nosso acesso.

Nos Estados Unidos, nenhuma lei exige explicitamente tal precariedade. Em vez disso, ela está encarnada nos contratos que essas empresas estabeleceram como normais, com o nosso consentimento. É como se todos nós morássemos em quartos alugados e os senhorios pudessem despejar qualquer um sem notificação prévia.

A leitura também é feita apesar das consequências. No mundo físico, podemos comprar um livro de maneira anônima, usando dinheiro. Uma vez que ele nos pertença, temos a liberdade de oferecê-lo como presente, emprestá-lo ou vendê-lo a outra pessoa. Temos também a liberdade de guardá-lo. Entretanto, no mundo virtual, os e-readers têm algemas travas digitais que impedem o usuário de oferecer como presente, emprestar ou vender um livro, além das licenças que proíbem tal prática. Em 2009, a Amazon usou as portas dos fundos de seu e-reader para apagar remotamente milhares de cópias de 1984, de George Orwell, de aparelhos Kindle. O Ministério da Verdade foi privatizado.

No mundo físico, temos o direito de pagar em dinheiro e receber em dinheiro — mesmo de modo anônimo. Na internet, só podemos receber dinheiro com a aprovação de organizações como PayPal e MasterCard, e o Estado de vigilância rastreia os pagamentos a todo instante. Leis como a Ata da Economia Digital, que castigam os acusados antes de serem confirmadas as suspeitas, estendem esse padrão de precariedade à conectividade com a internet.

Por meio dos softwares não-livres, aquilo que você faz em seu próprio computador também é controlado pelos outros.

Os sistemas da Microsoft e da Apple contam com algemas digitais — recursos projetados especificamente para restringir a liberdade de ação dos usuários. O uso contínuo de um programa ou recurso também é precário: a Apple manteve uma porta dos fundos no iPhone para poder apagar remotamente aplicativos instalados. Uma porta dos fundos observada no Windows permite que a Microsoft instale alterações no software sem pedir permissão.

Dei início ao movimento do software livre com o objetivo de substituir o software proprietário que controla o usuário por programas que respeitem a liberdade. Com o software livre, podemos ao menos controlar aquilo que os programas fazem em nossos próprios computadores. O programa LOIC, usado pelos manifestantes do Anonymous, é um software livre; em particular, os usuários podem ler seu código fonte e alterá-lo, impossibilitando assim que ele imponha recursos maliciosos como fazem Windows e MacOS.

O Estado americano atual é um nexo de poder para os interesses corporativos. Como ele precisa fingir que serve ao povo, este Estado teme que a verdade seja revelada. Daí decorrem suas campanhas paralelas contra o WikiLeaks: as tentativas de esmagá-lo por meio da precariedade da internet e limitar formalmente a liberdade da imprensa.

Desconectar o WikiLeaks equivale a sitiar manifestantes em uma praça. Ataques preventivos da polícia provocam uma reação; então eles usam os pequenos delitos das pessoas enfurecidas para afastar a atenção dos grandes delitos do Estado. Assim, a Grã-Bretanha deteve o manifestante que se pendurou de uma bandeira, mas não o homem (supostamente um policial) que rachou o crânio de um estudante. Da mesma maneira, os Estados tentam aprisionar os manifestantes do Anonymous, e não os torturadores e assassinos que trabalham para o poder.

No dia em que nossos governos processarem os criminosos de guerra e nos contarem a verdade, o controle das multidões na internet será o mais urgente dos problemas que nos restarão. Será um regozijo se eu testemunhar a chegada deste dia.

Tradução: Augusto Calil (um pouco modificada, porque acredito que o tradutor confundiu software livre com software gratuito em alguns pontos)

A palestra do Chris Hofmann (Mozilla) e outros destaques do 2º dia do 12º FISL

A palestra do Chris Hofmann, da Mozilla Foundation, superou minhas expectativas. Acho que não esperava muito por causa de traumas com gringos que vem falar em nome de programas grandes/populares e acabam decepcionando. Mas é claro que com a Mozilla tinha que ser diferente. Chris contou a história do Firefox justificando a necessidade de sua existência desde que foi criado (época em que o Internet Explorer representava mais de 95% dos navegadores e parecia impossível inovar a web) até hoje, quando as empresas (e os navegadores escritos por elas) cada vez mais ignoram a privacidade de seus usuários. Comprovou esse ponto com duas citações, uma do CEO do Google e outra do CEO do Facebook (Eric Schmidt e Mark Zuckerberg, respectivamente), que mostravam seu total desprezo pelos dados que compartilhamos nesses sites.

Prosseguindo nesse sentido, ele fez o paralelo entre uma proposta do congresso dos Estados Unidos em 2001 (que propunha que o governo controlasse e-mails, documentos, cartão de crédito e sites acessados pelos usuários) com o Google de hoje (Google Mail, Google Docs, Google Checkout, Google Analytics — respectivamente). A partir daí, falou do funcionamento do Firefox Sync, que, diferentemente do sincronizador do Chrome, criptografa as informações antes de mandar para o servidor (portanto, deixando a Mozilla sem acesso aos dados dos usuários) e também fez um apelo para que usemos a checkbox “I do not want my data to be tracked” dos novos Firefox para que ao menos mandemos uma mensagem para os sites dizendo que não estamos de acordo com a forma como elas estão nos vigiando nesses tempos. Sua fala foi um bom complemento ao que o Alexandre Oliva (da Free Software Foundation) colocou ontem, sobre a violação de privacidade que tem aumentado muito também nos sistemas operacionais de telefones celulares.

Chris concluiu agradecendo e incentivando os presentes a continuar espalhando o Firefox ajudando seus parentes e amigos a migrarem, usando versões beta, reportando bugs, ajudando com traduções e se envolvendo mais com a comunidade Mozilla.

Outros destaques, curiosidades e citações aleatórias

  1. O Irmão Pedro Ost definiu software livre de uma forma legal: “Em vez de eu me adaptar ao programa que vem, o programa tem que se adaptar à minha realidade.”
  2. Jacob Appelbaum falaria sobre o projeto Tor e sobre censura na internet. Provavelmente teria sido uma palestra interessantíssima — eu esperava que fosse uma das melhores deste FISL, ainda mais pelas coisas recentes que aconteceram no mundo –, mas infelizmente seu avião atrasou. Por conta disso, Jeremy Allison, do Samba e do Google, fez uma palestra sugerindo cloud computing para substituir sistemas de arquivos em rede (NFS, Samba). Eles seriam baseados em busca (no lugar de sistemas de arquivos baseados em árvores de diretórios). A ideia de basear sistemas de arquivos em buscas é divertida, mas a sugestão de manter seus dados longe é preocupante, ainda mais vinda de um funcionário do Google.
  3. Esperava muito mais da mesa sobre ética hacker com Sérgio Amadeu, Alexandre Oliva e Nelson Pretto. Pelos nomes e pelo tema, esperava que fosse um dos grandes eventos deste FISL, mas não foi nada demais. Uma fala curiosa do Sérgio: “O hacker é um individualista, mas não é o individualista que a cultura de massa criou. É um individualista colaborativo. Se realiza quando consegue enfrentar o desafio e compartilhar com os outros.”
  4. Foi bastante interessante a palestra do Deivi Lopes Kuhn sobre software livre no governo federal. Anotei algumas coisas e vou deixar pra sistematizar e publicar comentários em breve, num post a parte (devido à densidade do conteúdo).

Destaques do 1º dia do 12º Fórum Internacional do Software Livre

Seguem alguns registros aleatórios do que vi no primeiro dia (29/06) deste FISL em Porto Alegre.

Software livre

“Debater software livre não é discutir trocar Windows pra Linux. Isso é o de menos. Debater, e mais importante, militar pelo software livre, é criar redes para transformar o mundo.”

(Wilkens Lenon)

“A liberdade de software não é útil só pra quem escreve o programa, mas para todos, da mesma forma que a liberdade de imprensa não é útil só pra quem escreve, mas pra todos, porque você pode escolher o que escutar (ou o que usar).”

(Alexandre Oliva)

Cloud computing

“Onde há nuvem há tempestade. Computação em nuvem é pior do que computação privativa porque você não tem nenhuma das quatro liberdades. Mais que isso: além de não ter acesso ao programa, você não tem acesso aos seus dados.”

(Alexandre Oliva)

“Software livre rodando na nuvem é tão maléfico quanto software proprietário rodando na nuvem.”

(Rodrigo R. Silva)

Sobre Flash

“O Gnash é uma máquina virtual. O Gnash não é solução, nem que funcione. A solução é não precisar rodar uma aplicação alienígena no seu computador para assistir um vídeo.”

(Felipe Sanches)

Formatos fechados

“Delimitam, controlam, bloqueiam, aprisionam e criam dependência. Documentos não são como blocos de papel: daqui a 10 anos eu consigo ler o que está escrito num papel, mas dependo de uma empresa pra conseguir ler um formato fechado.”

(Sérgio Amadeu)

Além das citações

  1. Numa mesa sobre educação e inclusão digital, Sady Jacques mencionou que seria interessante ter fundamentos de ciência da computação nas escolas. É algo que eu acho muito importante e, entre o pessoal de OBI/Maratona, discutimos com frequência. Surgiu a ideia de lançar um abaixo-assinado.
  2. No Encontro de Hackers GNU+Linux-libre, foi discutida a importância de termos firmwares livres. Recomendou-se enviar e-mails para as empresas cobrando o código dos firmwares.
  3. Na audiência pública com Tarso Genro, Alexandre Oliva citou por minutos problemas que governos e pessoas tiveram confiando em software proprietário. São bons exemplos para habituais discussões. Não lembro de todos, mas aqui vão alguns: a guerra entre Argentina e Inglaterra em que os mísseis (comprados da França) não funcionavam contra navios ingleses; a Microsoft ter usado criptografia com apenas 40 bits nos computadores dos usuários durante anos, permitindo que o governo americano descriptografasse o que os usuários de Windows faziam; recentemente espionando conversas no Skype; o Gmail ter um backdoor para o governo dos EUA (que China usou para invadir recentemente); a Sony processando pessoas que descobriram como usar um computador para instalar o que quisessem nele (o Playstation 3); a Nintendo destruindo videogames a distância; a Amazon deletando e-books do Kindle a distância (ironicamente, o livro 1984); o iPhone e o Android anotando todos os lugares por onde o usuário passa junto com informações sobre redes sem fio e mandando para a Apple / o Google; o celular distribuído para crianças com câmera acionada pela sua escola.
  4. Na mesma audiência, Sérgio Amadeu falou da importância que tem os governos abrirem seus bancos de dados e todas as informações que têm em formato aberto e em redes P2P, sugerindo uma democracia radical em que todos os usuários da internet possam baixar rápido e processar as informações (data mining), de forma que grupos organizados (e desorganizados) possam controlar gastos e decisões públicas. Ideia interessante. Outras ideias interessantes da mesma fala, para pensar mais a respeito: analogia entre rede elétrica e a internet (alguém controla se você liga um liquidificador ou um chuveiro?); recursos educacionais abertos (professores remixam o material que usam); biotecnologia de garagem (nunca escrevi ou pesquisei muito sobre o tema, que é uma aplicação legal da cultura hacker fora do computador).
© 2005–2020 Tiago Madeira