terça-feira, 20 de agosto de 2013

Silly season: os atributos de um café Português

O café é uma ciência complexa. 

E não, isto não se trata de mais uma piada sobre Java. O café em Portugal é apreciado pela subtileza das suas configurações e pela pouca subtileza de alguns empregados de mesa. 

O café em Portugal é perfeitamente dominado por um serviço de mesa experiente mas potencialmente confuso para um programador desprovido de cafeína.

Aqui fica uma implementação rudimentar em Python.
 
#!/usr/bin/python
# coding=utf-8

class Length:
        short, normal, long = range (3)

class Sweetner:
        sugar, sweetner = range (2)

class Mixer:
        spoon, cinnamon_stick = range (2)

class Type:
        normal, decaf = range (2)

class Coffee:
        "representation of a portuguese coffee"

        # the members are "semi private" - not meant to be accessed directly    
        def __init__(self, ctype = Type.normal , length = Length.normal , milk_spot = False , cup_preheating = False , sweetening = Sweetner.sugar ,  mixer_type = Mixer.spoon ):
                self.__type = ctype
                self.__length = length
                self.__milk_spot = milk_spot
                self.__cup_preheating = cup_preheating
                self.__sweetening = sweetening
                self.__mixer_type = mixer_type
                # homework: validate input and raise ValueError if it's wrong :-)

        # this function translates the internal representation of Coffee atrributes into an order that can be sent to the waiter
        def __str__(self):
                result = "Um %s %s %s %s %s %s" % ( self.get_type_pt(), self.get_length_pt(), self.get_milk_spot_pt(), self.get_cup_preheating_pt(), self.get_sweetening_pt(), self.get_mixer_type() )
                # clear redundant whitespace on return
                return ' '.join(result.split())+'.'

        def get_type_pt(self):
                if self.__type == Type.normal:
                        return "café"
                return "descafeinado"

        def get_length_pt(self):
                if self.__length == Length.short:
                        return "curto"
                if self.__length == Length.normal:
                        return ""
                if self.__length == Length.long:
                        return "cheio"
                return "erro"

        def get_milk_spot_pt(self):
                if self.__milk_spot == True:
                        return "pingado"
                return ""

        def get_cup_preheating_pt(self):
                if self.__cup_preheating == True:
                        return "em chávena escaldada"
                return ""

        def get_sweetening_pt(self):
                if self.__sweetening == Sweetner.sweetner:
                        return "com adoçante"
                return ""

        def get_mixer_type(self):
                if self.__mixer_type == Mixer.cinnamon_stick:
                        return "e pauzinho de canela"
                return ""

Enough said. Posto isto, há que fazer os pedidos. Experimentem estes.




# café default - for machos
cafe = Coffee()
print cafe

# ultrademanding customer
cafe = Coffee(Type.normal, Length.long, True, True, Sweetner.sweetner, Mixer.cinnamon_stick)
print cafe

# no comments
cafe = Coffee(Type.decaf, Length.normal, False, False, Sweetner.sweetner, Mixer.spoon)
print cafe

 

quinta-feira, 18 de abril de 2013

Random youtube goodness

We just found out that it is possible to disable the greatest Youtube annoyance of all time: autoplay. Yes, like with many other browsing annoyances... there is a script for that.

YousableTube is a script for the Greasemonkey extension that can disable autoplay (while keeping autobuffering!), allow for easy downloading in several formats and much more. It's just a click away, after installing Greasemonkey. We tested it using the Youtube HTML5 mode and worked great.

And since this is not enough, seems that many people use Youtube to play music at parties. That must feel very clumsy :-) even now that we know how to disable the dreadful autoplay feature. But hey, there's a web app for that!

Turnetubelist is as crossfader application that can search on youtube and manage a pair of playlists. I wouldn't call this an DJ application :-) but it certainly can improve ad-hoc parties.




quarta-feira, 10 de abril de 2013

1º de Abril atrasado



Nem houve tempo para completar a análise do "mercado" nacional de conteúdos digitais, agora com ao inclusão do Video Clube Online Optimus Clix, porque a Zon já se antecipou com uma oferta fortemente inovadora e concorrencial. Em Portugal, a inovação acontece a uma velocidade estonteante, com as empresas de telecomunicações a liderarem o progresso.

Mas é que é mesmo verdade. Parece que a Zon montou um vídeo clube online, no Facebook (que moderno!) e o inaugurou com um catálogo de dois (2) filmes. Ou pelo menos é o que têm garantido diversos media.

Uma visita rápida à página do vídeo clube conduz-nos a uma abundância nunca vista de filmes disponíveis "no Videoclube da tua TV". 

"Ah...então não era para alugar na Internet, ó chefe?!"

Bom, isso é do mais simples. Basta vascular as dezenas de posts que lá estão até encontrar um dos dois (2) que supostamente se podem alugar.

E depois é só dar um clique num URL to tipo "bit.ly" - estando logged in na sua conta do Facebook, é claro - sem medo do que possa acontecer a seguir. Afinal de contas isto é de confiança... é um clube da Zon...

Mas será mesmo?

É que na realidade não se vê qualquer referência à Zon na referida página. E na descrição do perfil lê-se

O serviço de Videoclube da TV está disponível nos diversos operadores de TV- ZON, MEO, Cabovisão, Optimus e Vodafone [...] Para mais informação sobre os termos deste serviço e preços aplicáveis, contacta o teu Operador de TV.
Alguém poderá garantir quem faz a gestão deste serviço?

Mas a Zon tem com certeza qualquer coisa a ver com isto. Ou pelo menos virá a ter no futuro. Para confirmar isso basta ler o Press Release oficial que data de Abril de 2103.

Em resumo, para aceder a este serviço futurista de 2103, que lhe permite alugar dois (2) filmes na Internet, basta fazer login com a sua conta do Facebook (se não tiver é favor ter), percorrer sequencialmente dezenas de posts, escolher um dos dois filmes - ou então o outro, clicar num link "bit.ly", aceitar o acesso a uma aplicação do Facebook, rezar para que não haja intromissões na sua privacidade e, se tudo correr bem, pagar e ver um filme (ou então o outro).

A revolução está ON. E com serviços online deste calibre a pirataria em breve estará OFF :-)


domingo, 7 de abril de 2013

Xorg, vesa, modelines, intel and 915resolution

TLDR


This post is perhaps a bit too technical and probably too long, but it is important that certain things are google indexed, for the Linux community to work better. That has been helpful to us many times in the past, so we are glad to do our share.

The Intel Cedarview Xorg driver seems to be quite slow. It is outperformed by the Xorg Vesa driver, at least for basic operations. You can use any graphics mode (including wide modes such as 1920x1080) with the Vesa driver thanks to a small program called 915resolution. For multiple devices connected to different monitors you can use Vesa + 915resolution and control the display resolution using DHCP.

Intel's Cedarview mess


Seems that the Intel Cedarview chipset had a tough start on Linux devices. The stupidity of outsourcing the GPU to PowerVR, while not ensuring to have working drivers in time, caused many complaints (example) from users around the world. That meant lots of hardware working at the wrong resolution or with sub-optimal performance. And it happened even though the very same Intel employs a highly trained Linux driver team. That team, unfortunately, can't do anything for rebranded 3rd-party hardware, if no specifications are delivered.

At some point, Intel finally made official drivers available. The Xorg driver is called pvr and can be found here. But guess what the Release Notes say:

 * Poor 2D rendering performance through Xlib protocol. (#9 #125 #126)

Having tried the version that landed on Ubuntu 12.04 official repositories (apt-get install cedarview) I must say the Release Notes are right. The driver seems unusable, as dragging and maximizing windows is painfully slow. While this would embarassing enough for Intel, I must add something to the situation. Their driver is outperformed by the Vesa driver and, with an up to date kernel such as the default kernel from Ubuntu 12.04.2, the Modesetting driver. Yes, it's true. The late coming specific driver from Intel is beaten hands down by two generic Linux drivers, one of which is several years old.

I must say we haven't tried OpenGL, XV or VAAPI with Intel's pvr driver. Even if it worked and performed well, it would still be pointless since the user can't properly drag a window without waiting one second for each repaint.

So, as a company that's responsible for thousands of EUR of Intel related purchases every year, we would like to greet Intel with the famous words, Linus Torvalds has given NVIDIA, and kindly suggest that they use their own driver team to have proper drivers written in time.


The Vesa driver


The Vesa driver is a generic Xorg driver that uses one of the VESA graphics modes that are present in the graphics cards BIOS. This driver doesn't know how to program low level details of the card and doesn't accelerate any operations. However, given a powerful enough CPU the Vesa driver is more than acceptable for daily work.

But there is a problem: the official VESA modes are not suitable for current displays. None of the currently used wide modes is available in the cards BIOSes and the driver will ignore any modelines that are added to Xorg.conf.

To help with that, a utility called 915resolution that works with Intel's cards was created. An updated version that works with the Cedarview chipset can be found here.

To run any graphics mode using the Vesa driver, you just need to load it into the card BIOS before Xorg is started. Some examples:


[root@host ubuntupxe]#./915resolution -c Cedarview 3c 1920 1080 16 2576 1120

[root@host ubuntupxe]#./915resolution -c Cedarview  3c 1600 900 16 2112 934

[root@host ubuntupxe]#./915resolution -c Cedarview 3c 1600 900 16 1904 934

The first argument of 915resolution, 3c,  is the code of the standard mode that will be overwritten. You can see a list of modes using the -l flag.

The remaining arguments are X, Y, DEPTH, HTOTAL and VTOTAL. Even though HTOTAL and VTOTAL are said to be optional, they are in fact necessary for the picture to have the right size and placement on screen. You can find values for HTOTAL and VTOTAL generating a modeline with cvt, as in the following example

[root@host ubuntupxe]# cvt 1600 900 60

In this example, we requested a modeline for 1600x900 @ 60 Hz. The result is

# 1600x900 59.95 Hz (CVT 1.44M9) hsync: 55.99 kHz; pclk: 118.25 MHz
Modeline "1600x900_60.00"  118.25  1600 1696 1856 2112  900 903 908 934 -hsync +vsync

The values for HTOTAL and VTOTAL are always the 7th and 11th field (emphasis added above).

A generic xorg.conf for multiple devices


Once you ensure each of your devices has the best mode for its display made available using 915resolution, you only need a generic Xorg.conf. That file must contain  "vesa" as the graphics driver and a list of wide modes. In the example below, xorf.conf contains a set of wide modes all of which are ignored, except the one loaded into the card BIOS using 915resolution.

[...]
Section "Screen"
        Identifier "Screen0"
        Device     "Card0"
        Monitor    "Monitor0"
        DefaultDepth 24
        SubSection "Display"
                Modes      "1600x900" "1440x900" "1366x768" "1360x768"
                Viewport   0 0
                Depth     24
        EndSubSection
        EndSection
If you must support multiple identical Intel devices, connected to different monitors you can even send the resolution, colour depth, HOTAL and VTOTAL via a DHCP custom variable, to configure their resolutions centrally. Please note that although the mode that was written to the card BIOS is "selected" automatically (ie, the others are rejected) using the above xorg.conf example, not all combinations of colour depth and resolution are possible. It may happen that 1600x900@24 bpp is possible whereas the maximum bpp for 1920x1080 is 16.

Acknowlegdments

Having the Vesa driver working at any resolution is due to the work of Steve Tomljenovic, author of the original 915resolution, and user vtaylor who posted a modified version at slitaz.org.


quinta-feira, 21 de fevereiro de 2013

Matar o direito de autor

Estando outra vez na agenda a questão recorrente da taxação dos dispositivos de armazenamento (taxa Canavilhas, #pl118, etc) publica-se aqui uma receita infalível para acabar com o direito de autor de uma vez por todas.

Aparentemente, esta receita é a que está a ser seguida.


Ingredientes:

representantes da indústria em estado de negação, advogados negociadores de copyright em slow motion, cidadãos activistas, cidadãos indiferentes, deputados, comentadores, bloggers e empresas de telecomunicações.

Procedimento:

  1. Criar um mercado de telecomunicações em que o acesso em banda larga se generaliza, a preços relativamente competitivos
  2. Não disponibilizar neste mercado - onde tudo o resto funciona bem - uma oferta credível de acesso legal a conteúdos protegidos por direito de autor (ver este texto)
  3. Garantir que nos poucos serviços acessíveis os pagamentos não funcionam com métodos seguros (Multibanco, MBNET), resumindo-se a métodos inseguros (cartão de crédito de plástico) e que existem incompatibilidades QB entre sistemas operativos
  4. Lamentar recorrentemente as perdas "resultantes" da pirataria, sem no entanto investir na oferta legal, deixando que a pirataria comece a ser aceite em termos culturais
  5. Deixar passar vários anos nesta situação, até que a geração de piratas "filhos" se converta numa geração de piratas "pais", cidadãos adultos para quem piratear é perfeitamente normal
  6. Sobre o leite derramado reagir à bully com abusos aos direitos fundamentais dos consumidores (rootkit Sony, tratado ACTA, ...)
  7.  Tentar introduzir taxações indiscriminadas sobre dispositivos de armazenamento, taxas estas que, mesmo que não avancem, irão polarizar os cidadãos no sentido contrário e caso avancem irão convence-los de que os direitos de autor afinal são pagos a montante ( "agora sim, não há qualquer problema em piratear")
Está pronto e nem é preciso juntar mais água.

No fim, admirem-se quando os cidadãos revogarem, em termos práticos, o direito de autor e se indisponibilizarem de todo para pagar por conteúdos digitais.



domingo, 20 de janeiro de 2013

Essencial business applications for Android

There are so many applications for Android that it can be challenging to find the good ones out of the huge lot. Here is a short list for users that use Android devices mostly for work purposes:
  • LDAP Client - query an LDAP Address Book and add contacts to your Android Address Book
  • CardDav-Sync - synchronize your contacts with a CardDav compliant server (eg Zimbra); free and paid versions available.
  • AnDal Calendar Sync - synchronize you Calendar with a Caldav compliant server (eg Zimbra)
  • K-9 Mail - open source IMAP client that is better than the default email apps
  • OpenDocument Reader - it does what the name suggests
  • Opera Mobile - better than the default Android Browser
  • Connect Bot - local shell and ssh client
  • Nexus torch - simple flash light application that doesn't require permissions that make you wonder...

One handy service that I find not to be working right is delicious.com. After trying several applications none of those seemed to be working well and using the website directly is just not fast enough. Update: DeliciousDroid works great. Search Google Play for "deliciousdroid" (no spaces) or you won't find it!

If you are aware of other productivity-enhancing applications that don't require weird permissions please share in the comments section.

segunda-feira, 26 de novembro de 2012

Acapor, wareztuga e conteúdos digitais. A emissão segue dentro de momentos.



Este assunto é recorrente, mas passam-se os anos e as coisas tardam a mudar. Aqui fica uma nova reflexão sobre um problema que se recusa a morrer.

 Os clientes de conteúdos digitais

Designe-se por N a dimensão do universo de potenciais interessados em ver filmes, séries ou outros conteúdos via Internet.

Desses N consideremos a seguinte distribuição
  • X x N pessoas indisponíveis para pagar seja o que for
  • Y x N pessoas disponíveis para pagar valores que considerem razoáveis se o serviço corresponder às expectativas... ou a piratear, caso contrário
  • Z x N pessoas que pagarão o preço que for necessário por serem intransigentemente contra a pirataria ou tecnicamente incapazes de se esquivar de popups. 
  • W x N pessoas que ainda não decidiram em qual dos grupos acima se integram pois consomem conteúdos de outras formas (cinema, DVDs, VHS, etc)
X,Y ,Z e W são fracções do universo N, ou seja, X+Y+Z+W = 1.

 O peso de cada classe

O que podemos afirmar sobre cada uma das fracções?

O valor Z é practicamente nulo. Este facto pode verificar-se empiricamente pela destreza com que gente tecnicamente inapta consegue utilizar websites diversos para satisfazer a sua vontade de ver conteúdos online. Simultaneamente, pessoas insensíveis ao factor preço são muito difíceis de encontrar tanto pelo mindset que nos é próprio como pela conjuntura económica de que não sairemos em breve.

O valor X tem provavelmente um limite mínimo, abaixo do qual será impossível descer. Haverá sempre uma franja de sociedade constituída por gente espertalhona e com tempo livre que conseguirá encontrar forma de não pagar por determinados bens ou serviços. Isto, por muito que a forma de não pagar seja demorada e trabalhosa e mesmo que a sua situação financeira não justifique.

Sobram portanto dois grupos que designaremos pela letra que representa a sua dimensão, respectivamente Y e W. Quem quisesse fazer negócio com conteúdos digitais deveria aspirar a esvaziar W e encher Y o mais rapidamente possível, antes que X ganhasse massa crítica.

De facto, o que tem acontecido é que o grupo W vai tendendo para zero com o progresso da tecnologia, tendo esse processo começado com a vulgarização da Internet de banda larga. Quem sai desse grupo ingressa naturalmente no grupo Y, que é o grupo dos potenciais clientes de serviços com conteúdos legais.

 A situação que não melhora

Mas a inadequação da oferta existente reencaminha a quase totalidade dessas pessoas para o grupo X. Ou seja, a maioria dos potenciais clientes deixa rapidamente de o ser.

E o pior: a permanência no grupo X gera uma cultura que se vai consolidando ao longo dos anos.

O hábito de não pagar para aceder a determinados conteúdos resulta em que se veja o não pagamento como algo normal e que tal fique profundamente inscrito na forma de pensar dos indivíduos. De indivíduos honestos e pagadores de impostos, mas que acabam por não ver nisso grande mal. São os mesmos indivíduos que consolidam monopólios tecnológicos, porque a eles estão habituados.

Um comportamento recorrente é um hábito. Um hábito comum é um zeitgeist. Um zeitgeist é quase uma lei.

Ora, como se sabe a banda larga em Portugal começou a expandir-se rapidamente por volta do ano 2000. Sendo assim, já vamos com 12 anos de consolidação desta cultura. E actualmente já há quem ingresse directamente no grupo X sem sequer saber o que é o W, como é o caso dos cidadãos adolescentes que já se começam a esquecer do que é um DVD. E provavelmente mais do que o valor de X importa o dX / dt ....

O comando é meu

É verdade que nos últimos anos começaram a aparecer ofertas de serviços de video on demand agregados a ofertas de Internet. Mas, tanto quanto sabemos, todos esses serviços obrigam a um custo fixo mensal, fidelização e a uma box do fornecedor. Ou seja, não funcionam nos PCs que hoje em dia são utilizados para consumo de conteúdos e obrigam a um compromisso que não agrada a toda a gente. Nem mesmo com lavagens ao cérebro dadas pelos mais importantes ex-comediantes nacionais.

Também é verdade que tem havido iniciativas de neutralização dos sites que agregam conteúdos ilegais. Mas até agora os resultados são inconclusivos pois porque cada site que fecha há outro que abre e os conteúdos continuam disponíveis.

É caso para se dizer que nem o pau magoa nem a cenoura interessa... pelo menos a todos.


As conclusões 

A primeira conclusão é de ordem sociológica:

As mudanças culturais na direcção do maior conforto imediato  são espontâneas e muito rápidas, mas a sua reversão é sempre muito lenta e trabalhosa, senão impossível. E quanto mais tempo passar maior a dificuldade.

A conjectura acima enunciada aplica-se com grande generalidade. Desde o acesso a conteúdos digitais sem necessidade de pagamento, ao acesso a tecnologia sem necessidade de aprendizagem, ao acesso a bens sem necessidade de poupança, ... Se a adopção de comportamentos no sentido dos exemplos acima se faz com naturalidade uma vez disponíveis tais hipóteses, a respectiva reversão de comportamentos necessitaria de um mix muito forte de doutrinação, incentivo e tempo. A disciplina requer educação e a educação requer esforço do educador e do educando. É uma espécie Lei da Entropia social.

Para o caso particular a que este post se refere a reversão da actual tendência só seria possível se existissem serviços online simples, completos, compatíveis e a preços razoáveis. Será que existem? Alguma pesquisa já feita e os 50 000 likes no facebook do Wareztuga.tv levam-me a pensar que não.

A segunda conclusão é igualmente de ordem sociológica:

As inibições culturais dos fornecedores de serviços tradicionalmente dominantes prevalecem sobre a disponibilidade tecnológica potencialmente geradora de novos serviços.
Significa isto o seguinte: quando a banda larga se começou a generalizar a indústria não estava preparada para oferecer serviços de streaming como está hoje. E quanto a isto não podemos culpar ninguém. As revoluções tecnológicas são muitas vezes rápidas e não totalmente organizadas. Seria deselegante e injusto atirar culpas para os momentos imediatamente posteriores ao advento da banda larga.

Mas passados estes anos seria igualmente injusto aceitar desculpas ou moralismos com teias de aranha. A tecnologia existe e funciona. Tanto existe que é usada pelos serviços alegadamente não legais. O que não funciona é a burocracia das negociações de direitos de autor.

Só isto explica que serviços como o da Amazon ou mesmo o idiótico Netflix (que só funciona em Silverlight) não estejam disponíveis em Portugal. Ou que um serviço potencialmente fantástico como o MUBI tenha uma oferta mainstream tão escassa devido a problemas de negociação de copyright.

O papel das associações

O papel das associações deve ser examinado com algum cuidado. 

Falou-se acima da reacção das sociedades a situações de maior conforto imediato. Ora, o somatório dos confortos imediatos não conduz necessariamente a um maior conforto de longo prazo.

Se a produção de conteúdos culturais for posta em causa, a sociedade como um todo poderá ficar a perder. Se o dinheiro não gasto em cultura for canalizado para outros mercados o saldo económico pode não ser positivo. Não há dúvidas que o problema existe e que há empregos em jogo.

Mas a solução para este problema não é a criminalização de quem disponibilizou uma oferta que funciona. E também não é a taxação indiscriminada dos media de suporte físico.

A ACAPOR e/ou outras associações ligadas ao audiovisual poderiam focar energias na criação de uma plataforma de video on demand para toda a Europa negociando agressivamente os direitos de emissão. Seria uma forma de Portugal exportar mão de obra. O futuro não passa pela nostalgia dos videoclubes de bairro. Passa por uma oferta que agrade a quem ainda está disponível para gastar dinheiro em conteúdos.

Ironicamente, a tecnologia de tantos websites que funcionam alegadamente na ilegalidade poderia ser posta a servir o público em geral. Sem publicidade, sem popups e a preço justo.

E cada minuto perdido sem nada ser feito é um minuto em que, por falta de alternativa, a partilha de conteúdos protegidos por direito de autor se banaliza. E nestas circunstâncias, alguém pode criticar?