Main

January 14, 2012

Digam-me

Caros Srs. Deputados, os meus melhores bons dias,

Para contexto do que vos quero perguntar, sugiro a leitura deste artigo: Matem o monstro.

São dois projectos de lei que andam na alma de todos os que dependem da tecnologia para viver cá em Portugal.

Se souberem de uma maneira eficaz pela qual eu possa lutar contra este absurdo, digam-me. Já estou com um desafio novo este ano, em que umas entidades públicas mudaram as regras de certificação à qual estou sujeito (para melhor acredito sinceramente, assim que os sistemas estiverem estáveis) mas a que já estamos obrigados sem que o regulamento oficial tenha sido distribuído publicamente. Dizem-nos no final do mês... Se tudo correr bem... Uma parte interessante desse regulamento novo (porque sim, o preçário já está on-line no site deles) é que podem fazer quantas fiscalizações quiserem por ano mas eu tenho de pagar algumas centenas de Euros por cada uma delas, independentemente de ser detectada qualquer infracção.

Eu queria focar-me nisso, afinal é o meu negócio, mas parece que tenho de perder tempo com esta pérola que é a PL118 (ainda não li o PL119 mas dizem-me que é do mesmo calibre), uma vez que discos é algo que preciso regularmente para manter o meu serviço no ar, serviço esse que usa apenas conteúdos produzidos pelos meus clientes, mas pronto, pagam todos o dizimo à santa SPA.

Sinceramente, digam-me o que fazer para lutar contra isto. Este ano parece que também podemos vir a ser responsáveis pela segurança social dos nossos colaboradores (são colaborações esporádicas, pontuais) se 80% do rendimento deles for feito via a minha empresa. Eu compreendo a necessidade de apanhar fugas a esses pagamentos, mas imaginem que uma das suas empresas se preocupa em obrigar todos os seus colaboradores e parceiros a passaram facturas e recibos, e se preocupa em declarar tudo o que ganha e paga. Entre essa empresa e outra que não o faz, quem é que vai apanhar com a factura da segurança social?

2012 vai ser um ano giro para nós, os nossos clientes vão ter ainda menos dinheiro para gastar, novos regulamentos oficiais mas não públicos aos quais temos de obedecer, a potencial continha da segurança social, e outros desafios que nós próprios nos atribuímos para crescer o nosso negócio. Sem dúvida muitos desafios. Mas acreditamos que ainda vai ser possível, e até temos um terceiro filho como prova de que acreditamos que pode melhorar.

O que eu não preciso é de uma lei, criada à medida da SPA, cujo modelo de negócio está a desaparecer porque as pessoas compreenderam finalmente que é idiota comprar pequenos discos brilhantes quando é mais prático obter legalmente as coisas on-line, e que decide que todos devem pagar a uma entidade privada só para o caso de alguns andarem a piratear conteúdos. Não preciso, nem tenho tempo ou dinheiro para o que querem implementar cá, mais um regime de IVA.

Por isso, digam-me: como é que se luta contra uma injustiça destas? Ou devo desistir já de investir em Portugal, e ir procurar trabalho lá fora, onde apesar de já ter 40 anos, consigo obter emprego com bom salário amanhã, com base no investimento que Portugal já fez em mim?

November 07, 2011

API design

Designing a good API is an art form, unfortunately. I've seen some efforts to graduate this process to science or engineering level, but nothing even close to accepted by a majority or programmers so far.

One particular problem I face from time to time is related to helpful APIs. Those tend to help the programmer complete its task by adding common fallback processing paths. It usually goes something like this: the API designer convinces himself that X this is the most common operation, so when user doesn't do it, we do it for them. The programmers have less to write because the API will do the right thing™.

My problem with those APIs is that they tend to fail silently. The program keeps on going, using the default processing path, and eventually the programmer lack of decision will bite him with an exception or a core dump (pick your poison).

I tend to prefer non-helpful APIs: if the programmer should make a decision, force him to do so and die as soon as possible if he doesn't, compile time if you have that concept and if you can make it happen then.

The decision the programmer needs to make could even be to do the default processing path, but he must make one.

It is a little bit more code to write, but it pays of enormously in long-term readability by eliminating the hidden default behavior. Every action is explicit, so a new programmer looking at the code (eg. you, the same one who wrote it the first time, only 6 months later) will need less background information to understand it.

So help you API users. Die often, die early, be explicit and stop helping lazy programmers.

October 24, 2011

They will never learn

Microsoft and Intel need to stop ruining good looking hardware...

Gorgeous

October 23, 2011

Google HTTPS Search

Recently Google announced they will redirect their logged in users to the HTTPS version of their search engine.

(skip the rambling, take me to the summary: tl;dr)

I think nobody can dispute that this is a good thing. HTTPS will provide an almost (if only Certification Authorities (CA) weren't so prone to hacks...) perfect assurance that you were indeed talking to the correct server. HTTPS with CAs is a solution to man-in-the-middle attacks.

We can only hope that this redirect will eventually become the default behavior, because regular and non-authenticated users will still be using the plain HTTP search, and need to specifically ask for the https://www.google.com/ secure site to be safer. But given Google's goal of securing personalized search results I think is acceptable to limit this to logged in users only for now, given that they are the ones with access to the personalized search results. Mind you that this might also be a way for Google to load test their HTTPS setup.

But starting on the third paragraph things take a turn into a new reality: Google will no longer provide the query information to the site you click on the organic search results page. There is no direct explanation on that article why they will start (or stop) doing this.

Before going on further, lets make one thing clear: there is no technical limitation that prevents Google to forward the individual query. In fact this is working right now. When you use the HTTPS version of Google Search, the URLs are rewritten in a way that they go through a Google jump, and from that they are redirected to the final page. But this Google jump page is hosted on a plain HTTP site so the final redirect to your page includes this as the Referrer, with the full query information. Google could just keep using this scheme to provide sites with the information they want.

What they do tell you is that if you click on a ad from the results page, the query information does get sent to the destination site.

This might seem as a double standard of behavior, but sites that appear on organic search results and sites that appear because they payed Google are clearly two different populations and so they can have different treatments from Google if Google chooses to do so. After all, when I pay to get my site on the search result page, I have a right to get all the information about why my ad was shown there. I payed for that right.

It seems we sometimes forget that Google is a company, and as all companies, the goal is to make a profit selling goods. The goods Google sells are your searches. The fact that Google has become so large and useful as to be considered indispensable, and that some small changes in its behavior can make or destroy entire business models, is something that we should be aware, and if possible try to fight against. Its never good to have so much power in the hands of a private company, be it Google, Apple, Microsoft or Facebook. If Microsoft was investigated in the 90's, I will not be surprised to see the same happen to Google in the next decade.

The point is: Google is deliberately choosing, as is their right to do so, to stop sending valuable information to outsiders for free. And I think this will move them closer to a investigation by some governments.


One of the business models that is threatened by this change is the land of search engine optimization. As we can expect, they are livid, and react accordingly. There is this particular article that caught my attention: Google Puts A Price On Privacy.

The premise of the article is that with this change, Google will only share is search data if you pay them.

Well, duh...

Google is a company, a for-profit company, of course it wants to get payed.

The second paragraph is even better:

Google’s a big company that goes after revenue in a variety of ways some critics feel put users second.

(emphasis mine). Now this is laughable. There are two different types of people that classify as users:

  • users of the search engine that use it to find stuff: we get a free (and great) service, and in exchange we get to see some ads - I think these are the real users of the service;
  • users of the ad system: they pay to show ads of their products on the search result pages - I call these customers of the service.

But no matter which group of users you pick, the change Google announced is good for them.

As users of the service, we get a little bit of extra privacy from third parties: strangers on WiFi networks, governments with intent to control their citizens civil rights, you name it, it gets better.

For customers of the service, they get more value from their payments because now they will have exclusive access to valuable information.

So who are those users who loose? I think they are two other groups, and only one of them really looses a lot. The first is all of us who have a site and were used to receive the search query information. Some of us used it for actual useful features on our site, others would only see them via the analytics system they were using. So we loose a little. We can still get to part of the analytics information via Google Webmaster Tool if we want for some reason optimize our search ranking, but not adjust in real-time to our users queries.

People who make money re-selling the search queries that leaked from Google Search are the really big losers, though. They would use the search queries to target ads on their own sites. And it was a good business.

And I believe the article was written by someone in the second group, or someone who writes for the second group.

The claims are all interesting:

  • "[Google is ] perfectly happy to sell out privacy": not news, the moment ads started showing up on Google Search results, we knew they were selling our privacy - we are the product. Besides, explain why someone who makes a living on the search keywords that leak via the referrer is not violating our privacy also?
  • "...blocking is a pesky side effect to a real privacy enhancement Google made": no, blocking is not a side effect. Today you can search on HTTPS Google search site and still get the information on your non-HTTPS site. Blocking is a deliberate decision by Google, don't blame technology about this one;
  • "Google could have pushed many sites across the web to become more secure themselves": this is based on the logic that if all sites were HTTPS then the referrer information would still flow to the sites. Google is actively trying to change people over to SSL-based communications, to the point that they designed a protocol that requires it (SPDY) and bundled that protocol into their own browser. I don't see how you can accuse Google of not doing plenty for the improvement of the security on the web. Even this change is a clear prod in that direction - as the author notes, if you want to keep receiving the data, switch to HTTPS;
  • "Google could have [...] its default search [redirected] to be secure. [...] using Google’s own figures, [logged in users filter will ] protect less than 10% of Google.com searchers": true, but I believe that this is an engineering decision - lets try with 10%, and if all goes well, switch everybody over.

I guess that if my business was based on referrer information I would be pissed today, and even I don't depend on them, I really do hope that Google keeps sending those lovely q's query parameters in the referrers.

But most of this article facts and complaints are at best self-serving, if not just plain wrong.


My biggest doubt is the SPDY angle. If you use a recent version of Chrome, your access to Google is done using SPDY, which includes TLS security by default. So even if you just type www.google.com you are using a secured version of the search engine, but still the following click will be plain old HTTP with the full referrer information. Will they change this too? What are the rules for a SPDY to HTTP transition? Should they be the same as a HTTPS to HTTP transition?

Bottom line: I appreciate the default redirect to HTTPS, and I agree that Google has a right to provide a better service to paying customers. But I don't believe they will be able to sustain this policy of not forwarding search keywords. Not only its petty, it might also trigger a government investigation on the subject, something that I think they would not want.

March 13, 2011

On Twitter, decentralization and cost of privacy

The message announcing the kibosh on all third-party collaboration with the Twitter platform triggered several bop-ed's. You can find a nice summary over at Michael Tsai's place.

Twitter will live on as a mainstream platform, used by countless millions of regular every-day non-technical users for which these new rules are meaningless. They will suffer and question why their previous favorite client no longer works, while downloaded the latest official Twitter abortion of an interface. They will complain about it (their $Deity given Internet right), but will move on, and keep on using it.

But those of us more technically-able will probably look for a new partner, while we lick the stab wounds inflicted but our former mistress.

As always, when something wrong happens to a centralized system, the geek-gene arouses and looks for the greener pastures of decentralization. "Would it be good to have a Twitter without the central service?"

Apart of the love/hate relationship with centralized systems, of which the current cloud-fad is one mighty engine, I have to say that the only word who comes to mind about all this is dejavú

Almost-optimal solutions for this problem exist for decades. The first one I remember is good old multicast. Assuming unlimited address space, assign each person his own multicast group and let the routers take care of it. Its unpractical of course, but the architecture of any solution that emerges will have a lot of common points with this old codger.

But more recently some systems tried to tackle the problem. My pet favorite, XMPP, is one of them. We have per-user publish/subscribe that can be used to implement such a system. And we have a large network of XMPP servers already.

But XMPP has two drawbacks. The first is that the explosion of a message to all his subscribers is done at the source server. This means that when the Bieber opens his mouth and bleats, his own server would have to send his pantomime individually to all members of his flock. So even if a thousand of them were on the Google Talk network, instead of a single message, the Google servers would receive a thousand messages. I would be remiss if I didn't mention that there is a deferred extension to tackle this problem, but few in the community showed interest on it.

The second drawback is more perception than technical: over the years I felt that people don't see XMPP as Webby enough. Its a strange, dark technology, that few understand, and the passion for it by those who do, makes those who don't stagger.

But the pretty solution of a multicast network to deliver information, even in the XMPP approximation of a network of centralized servers, where each one acts as a aggregator for a part of the community, providing distinct local services for local people, has one glaring drawback: there is no privacy.

If I delegate one instance of my message to a Google aggregator that serves their clients, I can only hope that they will do the right thing and deliver said message to the right people.

If this requirement is soft for public messages, it becomes very strong for protected streams. If you want some assurances that your protected tweets don't end up in the wrong place (and I set aside the discussion about what kind of guarantees we have about that from Twitter itself in its quest to monetize your content) then you can't use this remote-server-side explosion but have to go back to exploding your messages individually to each of your approved subscribers.

There is an extra cost on resources for this kind of privacy.

So if you want to try and tackle the distributed Twitter problem, please remember that it is one of the most discussed architectures in our Internet history. It has been done before (or at least tried) several times, some with success, others less so. It doesn't matter if the next real-time micro-blogging tool will be based on Usenet, SMTP, RSS, XMPP, or the latest fad-du-jour. The basic problems are the same ones our fore- fathers tried to solve with multi-cast.

As I said, dejavú.


post scriptum rant, or why I need to support <aside> on my CSS: But is a decentralized system with some central aggregation nodes based on trusts workable? History has something to reminds us again: the usenet was the elite messaging tool amongst geeks in the early 90's (oh how I miss thee, trn). Then the AOL horde invaded and it became mainstream. The geek clan left, and later the usenet collapsed with spam, and now is a strange BitTorrent look-a-like.

The clan moved over to blogs and RSS. And those too were colonized, although not as thoroughly because that RSS thing is still a bit on the complicated side.

So the social networks were born, to hide all those pesky RSS feeds, add a dash of real-time, and place a pretty face on top of all of it.

So: do all decentralized systems evolve into spammer havens or centralized silos by sheer force of capitalism? A topic for another day.

February 06, 2011

Fragmentation: the good, the bad, and the ugly

During the past year there was a discussion about the Android platform fragmentation. Before someone complains, I'll defined "Android fragmentation" as the problems developers have to deal with because of the multiple Android devices, when said devices have different capabilities, specially with regard to the display resolution.

On one side we had Google explaining that the word "fragmentation" is meaningless, and on the other we had some app developers (and some Apple fanboys, but I tend to ignore them) explaining what the problem is for them, specially developers porting apps from iOS.

The good

The fact that you have so much devices, with so much choice, is a very good thing for the end-user, because he can pick up the one with the best set of features to match his requirements. Also, choice and competition leads to better prices.

Compare that to the version 4 of the iPhone: you get four combinations between two sizes of internal memory, 16 and 32Gb, and two mobile technologies, GSM/UMTS and CDMA. Everything else is exactly the same. Even compared to previous versions of the iPhone, the screen keeps the same aspect ratio, with a very simple multiplier between resolutions, and new sensors.

I believe that this fragmentation is a good thing. It allows end-users to test and choose the best format, and eventually certain categories will naturally survive the selection process, and dominate all the others. It might take some time, but eventually it will happen.

The bad

The bad part of all this is that application developers have much more work developing in a fragmented environment. With time developers will get better at dealing with this, and better tools will be created to help them out.

Even in the latest Android 3.0, we can see an acknowledgement from Google about this situation, with the improvements to the APIs, and in particular with the new Fragments API.

But its not all doom and gloom. The experience Android developers will gain dealing with this, is something that iOS developers don't have, but might need eventually.

Its a very complex proposition to assume that the iOS-powered devices will keep evolving with easy changes to adapt to. If or when a new iPad resolution is released, will it really be twice the current 1024x768 resolution? It would be awesome for sure, but its a huge number of pixels to get right in the LCD production.

So its very likely to see the same screen resolution fragmentation that we now have on Android appear on future iOS devices.

The ugly

What I don't really understand is Google's attempts at denying the situation. I assume that they feel the mention of the "fragmentation" word is seen as something terrible and they must fight it any way they can.

But this places them in the untenable position of convincing us that there is no fragmentation, that black is white. Its a lost argument.

It would be much better to embrace it, and work really hard to make sure the persons who have to deal with them, the developers, have the best tools to do it. Maybe this is more APIs, or maybe just better testing resources, specially a hardware lab with lots of Android devices, and a new process to define test suites, sending them to the lab, and have your app tested on them.

Whatever it is, Google would be better off stopping denying the Android fragmentation, and openly embrace it as something good.

February 13, 2010

Buzz off

The lack of trust that Google as gained in the last year is impressive.

Gone are the days that you could actually believe the "Don't be evil" corporate motto. The reality came crushing down, and Buzz is only one of the last proofs that "Don't be evil" is much different proposition than "Do good".

I'm fortunate enough not to use a lot of Google services, but still the amount of information they have on me is scary. I knew some of it, and I was aware of the social graph efforts going on inside Google, in particular Brad Fitzpatrick work when he first joined The New Borg.

But the path they choose with Buzz, assuming that my address book or even my chat roster, has anything to do with my social network, is wrong on so many levels.

For the geeks at Google, it appears that one step in their quest to harness all of the human knowledge is to treat humans as a flat concept, without any levels in their social relations. I no longer have best friends, whom I trust almost everything about me but that rarely exchange electronic messages, but I keep in my address book, with some guy that asked me a couple of questions some months ago. All of them get put in the same basket. So the same level of trust and sharing privileges is attached to all of them by default.

What bothers me the most is that now, until I can find replacements for the services that I find useful at Google (address book and mail), I will have to create new empty random Google account, and use each one for parts of the data I have in there.

The Future

During my college days, I was specially interested on distributed systems. I intuitively believed that they were the only solution for resilient scalable network-oriented services. What I couldn't imagine was that just how much important they are for the little level of privacy that I expect from online services.

So one of my goals for 2010 is to split my online information across several online services. Also, study options to move them back to my control.

As for Google, I guess it is time to start working on active Google blocking tools. There is definitively a war coming.

January 31, 2010

Creativity, hackers, and other stuff

Below you'll find an article that I wrote to my local Mac users group. I haven't had the time to translate it into english, so unless you are willing to learn portuguese, you'll have to wait a bit.

But for those that share my mother tongue, here it is.


(para quem leu a versão na mailing-list, tem apenas pequenas alterações de estilo, e um "Resumindo:" lá pelo meio)

A discussão que está a acontecer sobre o iPad, o efeito do modelo fechado e controlado pela Apple, e o que ele trás à criatividade e ao espirito hacker (no sentido cosquinhas, curioso, e não no sentido cracker) está mesmo muito interessante.

Acho que a questão da criatividade, que pelo que percebi começa com o post do Tim Bray que termina com a frase "For creative people, this device is nothing" é uma falsa questão.

Sinceramente, o bias natural do Tim Bray para a plataforma Android baralhou-lhe as ideias temporariamente. Basta apontar o trabalho do nosso Jorge Colombo com as capas da New Yorker como contra exemplo do seu argumento.

Mas mesmo que ele estivesse a dizer criativo como programador/developer, seria falso. Ninguém programa para o Android no próprio device. Estes devices não são computadores que possam existir no vácuo, são apêndices aos computadores que vamos ter em casa, ou no emprego.

O único contexto em que se pode ver o iPhone/iPad como limitadores de criatividade é nas politicas de aprovação da AppStore. Tudo o resto está disponível.


A parte de discussão sobre hackers é muito mais perto do meu coração. Tanto quanto pude ver começa com esta frase do Alex Payne:

The thing that bothers me most about the iPad is this: if I had an iPad rather than a real computer as a kid, I’d never be a programmer today.

Apenas é possível concordar com isso se se pensar que o iPad será o nosso único computador, e claramente que não foi desenhado para isso. Mark Pilgrim parece concordar com esta visão negra do futuro dos hackers:

Once upon a time, Apple made the machines that made me who I am. I became who I am by tinkering. Now it seems they’re doing everything in their power to stop my kids from finding that sense of wonder. Apple has declared war on the tinkerers of the world.

O meu percurso (assim como de outros nesta lista, estou seguro) é semelhante ao do Mark: primeiro computador aos 11, começar a programar aos 12, 13 em BASIC e depois Assembler; começar a montar os seus próprios PCs; usar Pascal, C; usar minix, linux porque nos dava o controlo da nossa máquina; o querer saber como funciona, desmanchar, abrir, mudar. No meu caso sempre fugi um pouco da parte electrónica da coisa, não me dou com electrónica, e mais focado na parte de software low-level.

Mas respondendo à pergunta: será que o iPad vai limitar a próxima geração de hackers? Eu podia dizer que não e explicar as minhas razões, mas acho que a Gina Trapani tem uma resposta bem melhor que qq coisa que eu poderia escrever:

Because while we're all ranting about how closed the iPad will be, the jailbreak community is planning competitions to see who can crack it first. The sun isn't setting on tinkerers; their desire to crack things open intensifies when faced with something that's closed by design. The challenge is part of the appeal.

...

I'm of the mind that if someone wants to tinker, they will tinker, period. Because it's in their DNA, not because it's easy, and because by nature, tinkerers don't play by the rules.

A parte que eu posso acrescentar à discussão é esta: em 1991, na Universidade do Minho, a vasta maioria dos alunos não tinha acesso à internet. Não tinham mail, ainda não havia Web nem browsers, começava a aparecer usenet. Nesse tempo, quem andava pelos centros de informática, ou estava lá o menor tempo possível para fazer os seus trabalhos e ir embora, ou então pertencia ao grupo de pessoas que queria perceber tudo, como é que aquilo funcionava, como usar (e abusar) do sistema. Era uma "guerra" contra os administradores de sistema, porque era divertido. O que se fazia era programar, aprender e trocar conhecimento. Não havia outro sitio onde o fazer.

Durante os anos em que o acesso começou a aparecer, 92 e 93, apenas esse grupo lhe prestou atenção. Era uma fonte de conhecimento inesgotável e finalmente disponível. Despertava o nosso sentido de saber mais. Se tivesse de dar um nome a este período, seria a nossa explosão cambriana.

Esse aceso não nos transformou em colectores passivos de informação. Apenas nos deu mais energia para as próximas experiências.

Mas a partir de 94, altura em que os browsers Web começaram a ficar acessíveis às massas, começaram a aparecer uma nova tribo. Passavam horas e horas nos centro de informática a consumir informação, mas sem produzir informação. Lembro-me de discutir isto com a minha tribo e alguém (sinceramente não me lembro do nome dele) dizer "mas isto é o que se espera de pessoas normais". Sem dúvida que o nosso "hubris" tecnológico já estava presente e separava-nos das "pessoas normais" :).

Resumindo: não é possível julgar um device ou um comportamento que esse device facilita da mesma forma pela tribo dos hackers e pelo resto das pessoas normais.

A verdade é que para muitas pessoas, o que é importante não é se o sistema é aberto, às cores, hack-able, ou não. O que interessa é que com ele consigam fazer as tarefas simples do dia-a-dia sem as preocupações que apenas devem (ou deviam) existir na cabeça dos profissionais de IT.

Relembrando o artigo da Gina: ...someone wants to tinker, they will tinker, period. Because it's in their DNA, not because it's easy...

Penso em pessoas como a minha mãe, ou a minha tia, que por mais brilhantes e cultas que sejam (e claramente o são mais do que eu) não se sentem à vontade em usar um desktop clássico (Windows XP, Vista, 7, e Mac OS X) sem se baralharem.

Uma parte do artigo do Fraser Spiers:

Secretly, I suspect, we technologists quite liked the idea that Normals would be dependent on us for our technological shamanism. Those incantations that only we can perform to heal their computers, those oracular proclamations that we make over the future and the blessings we bestow on purchasing choices.

...

Those of us who patiently, day after day, explain to a child or colleague that the reason there's no Print item in the File menu is because, although the Pages document is filling the screen, Finder is actually the frontmost application and it doesn't have any windows open, understand what's happening here.

Ao olhar para os defeitos que a minha tribo atribui a esta nova plataforma, e seguindo um pouco a classificação dos mesmos que o artigo do Luke Wroblewski usa, podemos tentar vê-los do ponto de vista de uma "pessoa normal".

Quando se fala de multitasking, temos de clarificar exactamente o que queremos dizer com isso: correr várias aplicações ou partes delas ao mesmo tempo. De base, tanto o iPhone como o iPad, são um sistema multi-task, e apenas a limitação artificial da Apple em correr apenas uma aplicação ao mesmo tempo nos impede de o fazer.

Acho que é fácil de provar que a maioria das pessoas se baralha com multi-task. Basta pensar em todas as pessoas que já vimos a usar o Windows com todas as apps maximizadas, uma de cada vez. Ou de ver os problemas com o menu File > Print que o Fraser nos fala acima.

É claro que mudar rapidamente entre aplicações é importante, e essas mesmas pessoas o fazem, mas para tal não é necessário que a aplicação destino esteja a correr, desde que a ilusão criada pelo sistema operativo esteja bem feita.

Sem dúvida que várias features que a nossa tribo pensa em colocar nas suas aplicações passam por ter um processo em background a fazer qualquer coisa. Mas até as limitações actuais nas baterias estarem resolvidas, é possível argumentar que esses serviços devem ser feitos no nosso Mac/PC principal, e deixar a esse a tarefa de notificar o device que temos informação importante para ele, com a opção de enviar um link para a mesma informação que o device, transparentemente e sem a intervenção da app, obtem da rede para passar à app na próxima oportunidade.

Existem certas coisas que não são possíveis neste cenario, que normalmente envolvem informação que só o device pode ter (como o Bordalo nos diz, o Android dele adapta-se ao sitio onde está), mas até essas podem aparecer no futuro como um serviço do OS, disponível a todas as aplicações.

Quanto a não ter o plugin de Flash no Mobile Safari, já escrevi hoje sobre isso; resumindo a minha visão da coisa, era importante ter a opção de correr Flash no iPad, mas dispenso claramente de o ter dentro do browser, até porque as utilizações mais práticas que tenho para ele, estão (ou estarão) disponíveis via HTML5.

Todo o processo de aprovação da AppStore, e as barreiras à distribuição de aplicações são aspectos claramente negativos, apesar de dar origem a alguns episódios cómicos dignos de Kafka. Neste aspecto, acho que um compromisso pode surgir em que todas as apps tem de ser assinadas pela Apple (existem vantagens claras nisso), mas a distribuição pode ser via Web.

Uma coisa pouco discutida, é o facto de os i{Pad,Phone}'s não mostrarem o filesystem aos utilizadores. Segundo parece, no iPad, os ficheiros da aplicação ficam guardados numa pasta dentro da aplicação (que pode ser exportada para o Mac/PC via file sharing), de forma a que quando se remove uma App, tudo o que está associado a essa App desapareça (é giro cruzar esta funcionalidade com a alteração do Mac OS X relativamente a deixar cair o suporte a creator codes).

Cada app fica com a responsabilidade de mostrar os seus documentos, e se acham que isso é anormal, é porque não tem prestado atenção ao que o iTunes e iPhoto andam a fazer à anos: a esconder o file system com uma visão do mesmo ajustada à tarefa, ou tipo de documentos, que estão a ser manipulados.

Será que isso escala para muitos documentos? Olhando para o iTunes e iPhoto parece que sim, mas é possível argumentar que só funciona nesses casos porque apenas consumimos os documentos, não os alteramos profundamente, como numa aplicação do iWork.

É sem dúvida uma questão de volume de documentos, e faz mais uma vez lembrar que o iPad não pode ser um computador autónomo, sem o Mac/Pc para o acompanhar.

Mas olhando para as limitações como decisões conscientes de design, é importante ter uma coisa em conta: a nível de hardware, o iPad não nos limita em termos de user-inteface porque todo o seu UI é gerado por software (excepção única à ausência de camara que para mim é ainda hoje um grande mistério). Logo tudo o que nós hoje vemos como limitação, pode ser alterado, ou removido no futuro. Veja-se o que aconteceu com copy-paste nos iPhone's.


Como conclusão: para todos os efeitos, eu coloco-me claramente na tribo dos hackers. Ainda hoje continuo a abrir e fechar computadores como forma de hardware porn, principalmente máquinas antigas; ainda hoje continuo a continuar a ler e comprar livros para perceber como funcionam estes devices que nos intrigam; ainda hoje perco^Winvisto uma data de tempo todos os dias a estudar e a aprender com outros.

Por isso a minha posição sobre a politica da Apple não podia ser diferente daquela que a Gina Trapani tem:

First, know that I fundamentally agree with Alex and Mark: the closed nature of the iPad turns me off, and I wouldn't give one to my kid if I were encouraging her to learn about how computers work.

...

Even though I am critical of the iPad's closed nature and agree with Mark and Alex, I won't go as far as Alex did and say that it represents a dystopian future. I have more faith in our future tinkerers than that.

Mas a verdade é que eu não quero ser apenas hacker, e existem ocasiões em que é muito agradável desligar essa parte da minha vida para me concentrar no que está à minha volta, e nessas alturas, ter um device que me trate abaixo das minhas capacidades para o dominar, é uma trégua simpática.

Acho que a tribo está ao rubro porque este gadjet não é para eles, e isso é algo a que não estamos habituados.

September 12, 2009

Stupidity

Just finished watching the first, and only, season of Firefly).

I have only one question: who was the monster stupid that cancelled this show? What was he thinking?

June 18, 2009

Parrot

Excellent article about Parrot, by Allison Randal.

Parrot’s record for a language implementation was a conference session where the speaker implemented the basics of the LOLCODE language from scratch as a live demonstration. It was a 5-minute lighting talk.

I have to get the time to implement a DSL for something on top of Parrot, to see how it works. Right now I only compile Parrot to run Rakudo.

May 24, 2009

Nice

An article about immutable data structures (which is an excellent read in itself) has two interesting paragraphs about Git:

Casual observers initially criticised git for having a model so simple it was actually naive. It turns out they were confusing the model with its on disk representation. Git makes this distinction very well, and the result is that it implements powerful features (for instance idempotent patch application) which are apparently too complicated in other systems. Git itself isn't simple at all, the problem of version control is a complicated one so any system dealing with it is inherently complex. Git's advantage is that it's built on a very simple and future proof core, allowing the complex parts to evolve more easily.

A very nice way to put it, Yuval.

I've linked this excerpt differently. The linked Git documentation file is well worth a read, if you care about why git turned out as it did. Not that much interesting for day-to-day usage though.

May 23, 2009

You are a terrorist

Coming soon to a EU country near you...

Pig farming is... strange

I love TED presentations, and I was curious about one of the latest ones: 10 things you didn't know about orgasm by Mary Roach.

The presentation is very good, but starting around 10m25s there is a sequence about pig farming in the Netherlands that make me laugh out loud.

Weird stuff.

Update: well, chickens are even worse (PDF)...

May 20, 2009

Designing JavaScript applications with Interface Builder

Last year, I was amazed with the power of Cappuccino when they showed off a Keynote.app clone written entirely with JavaScript.

The 280 North gang released version 0.7 this week, and inside there is a new tool that made my jaw drop. The nib2cib tool allows you to design your application with the gorgeous Apple Interface Builder, and then translate the resulting nib/xib into a cib that your JavaScript app can use directly.

It even supports Target/Actions and Outlets...

I'm not a JavaScript applications developer, but I find this truly impressive.

May 07, 2009

Love/Hate and package managers

I have a long standing love/hate relationship with package managers.

On one side, you have access to most of the software out there already compiled (presumably by someone who knows and uses the software and therefore is able to choose the proper, most useful, configuration options) and with all the administrative bits (startup scripts, example configuration files) in the "right" place (usually dictated by some standard like the LSB).

On the other all the package managers that I know of (and this is really a cry for help, please tell me of exceptions to this rule) have a Highlander-fetish with regards with package versions: there can be only one.

At any point in time, you can have one and only one version of a package installed it seems. If I have two applications running on some server, and you tested one of them with version X of the package P, and the other with version Y, you cannot have both versions installed at the same time. You have to pick the latest one and hope that backwards compatibility was not lost.

Most people with setups larger than mine that I talk to about this just tell me that "oh, you should split your applications on different servers, easier to manage, profile and tune". That's true, but most small mom-and-pop business don't have or don't want to spend capital to work around limitations on package managers.

There is also a good argument to be made for security. Keeping old versions around and in use is a security risk if the newest version was released to fix a security problems. I acknowledge this whole heartedly, but still, sometimes you know that you are using and old buddy version, but you still need to keep it running for some time, either because you evaluated the security problems and they don't apply to your configuration or because you need more time to test with the new version. We should be aware of the dangers you put yourselves in when you ignore upgrades like that, but you shouldn't be ruled by fear also. Analyze, weight your options, decide. Be rational.

One clean solution is a containers package like OpenVZ or FreeBSD jails or Solaris Zones: one kernel per server, several virtual servers. I admit that I strongly prefer this type of container-based virtualization solutions to the big ones that require processor support for decent speed, like VMWare, Xen or Parallels. I have a strong distaste for waste, and having multiple kernels running on the same metal, although extremely useful in some scenarios, is very wasteful of resources in the general case.

So although I just got a server at the office to have a second round of OpenVZ tests (and I'll probably use it in production for all my servers if I'm happy with them), I still believe that all of this is a big blanket over bad package managers.

My ideal package manager would create a base directory somewhere, lets say /p, and would create a set of directories, taking in account architecture, package name, and package version. For example, you could have perl 5.8.9 and perl 5.10 like this:

  • /p/i386/perl/5.8.8/{bin,lib,...}
  • /p/i386/perl/5.10/{bin,lib,...}
  • /p/x86_64/perl/5.10/{bin,lib,...}

Also, you could keep the notion of latest using: /p/i386/perl/latest as a symbolic link to /p/i386/perl/5.10. This way other packages can require any version of perl or a specific version of perl.

The PATH environment would be tailored to the specific versions of each package you want. Just include the proper bin/ of the specific version you want. A global /p/${arch}/bin/ could be setup with symbolic links to the package/latest/bin/ files.

Clearly the solution of using OpenVZ is easier to manage today, no need to find or build a package manager like this, but still, I would really like to see it sometime.

April 21, 2009

Moving

The server where this site was hosted is dying a slow death.

I'm moving my personal stuff to a slice in the next few days, so expect some disturbance.

One of the road-blocks after email is DNS. My .com, .org and .net domains are hosted at Joker, and so far I'm happy with the service. But I also have other domains in the .pt, .im, .as, and .tv top level domains, and for those, Joker is not a solution.

I did a bit of shopping around and the prices are ridiculous. Most places ask for $20 per year to host a domain. I really don't like to do this myself, but with the number of domains that I host, and with those prices, its just cheaper to do it myself.

March 19, 2009

Forking is easy, but...

Some days ago, I forked qpsmtp repository on Github/ to fix a small RFC compliance bug. It was a simple fix, and Ask pulled it the next day.

I was left with my fork of qpsmtpd without any practical reason for it.

Github makes it easy to fork, but not that easy to know if I can remove my fork. It would be nice to have a way safely cleanup my forks.

It would also be great to list forks separate from my own projects in my public page.

I think its time for a couple of feature requests...

March 14, 2009

Feed aggregators

I'm a bit sick of hearing applications call themselves "feed aggregators" when they simple show me a chronological sequence of unrelated articles.

Sure, I guess that 4 or 5 years ago that was enough and worthy of the word, but in between I jumped from 20 or 30 to 354 feeds (I usually prune to 250 each 6 months).

I think its time to move up the goal post: you cannot call yourself a aggregator without actually doing it - finding relations between articles and presenting them in useful ways.

Let me give you some examples.

You follow feeds A, B and C. If article X from feed A is referenced by article Y in B and Z in C, at the very least I should have a "See also" section while seeing X on my feed reader. A link back inside the feed reader, from Y and Z back to X wouldn't also be out of the question.

And it makes sense to place Y and Z right next to X. I would first read X, and then the next one would be Y and Z in some order (a graph-theory-lover would expect that all articles in your feed reader should be read in a breadth-first order, actually.)

Also, feed reader companies seem interested on getting from you your activity stream. Such valued commodity is taken from you (with your consent in most cases) without giving nothing in return. They don't allow me to say "I like this article" so that I can influence a Baysean classification system. Sure, because I do expect the feed reader to suggest to me what are the articles I will like the most after some time.

This are just some ideas. I bet you'll be start to seeing them of them in the future, but with a magical new name. Marketing people like to create new names for features that should be part of the natural evolution of products.

In the meantime, if you have a feed reader that runs on Mac OS X, and that I can use on several Macs, please leave a comment.

March 12, 2009

The competition cargo-cult

Rui linked to an article about excessive EU regulation on roaming charges and its impact on competition.

Its a very interesting article, highly recommended, but the opposite side of this coin is not as clear cut as it seems.

Yes, excessive regulation does prevent competition, and can cause more harm than good.

But expecting that unregulated competition between providers will benefit customers in the long run is not right either.

Competition will benefit consumers in the short run, while telcos really work for market share. But as soon as dominance is achieved, corporate greed will always win. Its part human nature, part investor pressure.

So, the question is the level of regulation and not its presence or absence. I particularly feel that anti-cartel regulation is even more important than controlling the pricing.

Just my €0.01.

February 13, 2009

SQLite server

Based on the latest libdrizzle that I talked about yesterday, Eric Day created a server for SQLite databases with the same wire-protocol as MySQL.

Recently we have seen people re-using the memcached wire-protocol on other projects. This allows those new projects to come up with clients for most languages practically from the start.

I wonder if the same will happen with the MySQL wire-protocol, now that a lot of the work is done by libdrizzle...

February 11, 2009

Drizzle client and protocol library 0.1 released

The Drizzle project is very interesting to follow: a back-to-basics version of MySQL.

Yesterday they released a first version of their new client and protocol library. It's backward compatible with MySQL wire-protocol, so you it provides a easy upgrade path.

There are some interesting features in the new library. The one I find most interesting is the complete non-blocking I/O support. That is one that I definitively want to play with.

It should be a good fit for my AnyEvent-based XMPP components.

February 10, 2009

The big red blob

I bought Pulling String with Puppet right after it came out, as I graduated from CFEngine to Puppet.

Puppet keeps me sane, not having to worry with day-to-day managing of a couple of servers.

But the most strange part of the book is the cover: you get a small index, with chapter 7 starting on page 153, and a big red blog "192 pages", so you can only image that it is a big chapter.

But its not. The book has actually 169 pages.

I find it amusing that after all this time, they still haven't fixed the big red blob.

January 20, 2009

The end of the nightmare

Its now noon Eastern US, you can wake up, the nightmare is over

November 26, 2008

In sync

Since I upgraded from a single laptop to dynamic duo including a new desktop, the "how do I keep the two in sync" problem became a topic of some significance on my geek life.

There are several sets of information that I want to keep in sync, and for some of them I found solutions, and for others I'm still struggling.

The first and easiest to solve was my work/ directory. This directory has all my code, in subversion checkouts or git repositories. The solution was a single Unison profile that I manually have to run at the begging and end of the day. It's not an automatic process and it is not transparent, but sometimes, and in this case, I see that as a feature. I also include my dotfiles in this work directory, so all Macs share the same set of UNIX-style configuration files.

Then we have "other files". This is a category for random files, documents, PDF downloads of stuff to read, whatever. This is also perfectly solved by Dropbox. I could not in a million years write a better explanation why Dropbox is great than Michael Lopp's article Dumbing Down the Cloud, so read that and you'll understand why it is really really great. (Update: but make sure you understand some of the limitations with as pointed by Michael Tsai).

One important part of my day is my personal R&D time, about 1 hour per day where I read a lot. I find stuff to read using RSS feeds, about 350 right now, that are kept in sync using NetNewsWire and NewsGator service. It is not nowhere near perfect, the snippets system easily gets out-of-sync (16, 66, 12: that's the number of snippets I have on the web interface, desktop NNW and laptop NNW right now...), sometimes I get an old feed back from the dead, all marked as unread, and (most infuriating) the order of the groups is not synchronized between instances. But it "works" well enough. I'm considering the Google Reader as an alternative, but I admit that I would prefer to keep using a desktop application.

After these three, I still need to tackle my mail (and more important, my mail configurations), my address book, music, photos and applications.

The last three I just don't bother. Applications will be re-installed on each computer without any sort of sync between them. I just install them when I need them. Music and photos are not synced, at all. I could use the desktop as the master and just rsync them from time to time to the laptop, but it wasn't worth it yet. Eventually I'll get a new iPod (all my iPods are currently dead), and I'll use that when I'm away from the desktop.

But the other two are still unsolved. Although all my mail is stored on IMAP accounts, I have a large set of local rules that are not easy to synchronize. I know about MobileMe (not worth the cost, and the "went wrong" stories scare me a bit, even with decent backups) but I'm still looking for some other alternative.

One possible solution that I'm considering is a change in my workflow: make sure all my rules only apply to a "To Process" mailbox. When scanning through the inbox, I either reply/forward, delete, or move the that special folder. Then, on the desktop, I just run all the rules and the messages are archived properly. This would allow me to keep the rules in a single computer and still read mail on all of them.

The same for Address Book. Although only a single file needs to be kept in sync, and given that MobileMe is not an option for now, its still unsolved.

I bought the newest Take Control of Syncing Data in Leopard, in the hope that I can solve the last to items on my checklist. Time will tell, I guess.

November 20, 2008

Bluetooth between Macs

I paired two Macs via BlueTooth but the OBEX File Transfer service was not available. WTF?

Is this some limitation of my BT dongle (I can send and receive with a mobile phone...) or something idiotic on Apple part? Any ideas?

FriendFeed

I'm keeping track of all the stuff out there using FriendFeed. For now, it is the best service I found to do it.

I'm using a Fluid SSB with the "real-time" view, and I disabled all the XMPP updates. This way, I can glance to the SSB from time to time, without the interruption of real real-time notifications.

The only feature I miss, I would like to have an action "Mark as seen" at the top of the page tab (next to the "Pause updates"). This way I could glance at it, mark them as seen (this could make them grey-ish) and later it would be easy to pick up where I left it.

Now where is the feature request button for FriendFeed?

November 17, 2008

MacPorts

My love/hate relationship with systems like MacPorts and Fink requires an re-evaluation.

I used fink a lot in the 10.2 days, and I didn't like it that much, and given that my OSS software needs where either covered on 10.4 and 10.5 or a simple ./configure --prefix=my_local_app_dir && make && make install away, I was always able to stay away from them.

But the installation of CouchDB has a lot of dependencies, and there is no way that I'm going to try and install Erlang OTP and SpiderMonkey from source by hand.

So I downloaded the MacPorts installer and run it only to be greeted with a message like "The following install step failed: run postflight script for MacPorts-1.6.0".

Our friend Google tells me that this is was known problem with the 1.6.0 installer in January of this year, but the mentioned 1.6.1 installer is still not released.

So right now I'm trying to run the postflight script by hand. Lets see how that goes.

And by the way, for all of those that told me that "MacPorts is totally safe, it only install under /opt so a mere rm -rf will remove it from the system", I'll recommend you to lsbom the Archive.bom file inside the package, and stop saying that non-sense.

Update: cd /Volumes/MacPorts-1.6.0/MacPorts-1.6.0.pkg/Contents/Resources/English.lproj && sudo postflight seems to work.

November 12, 2008

GTalk Videochat

By now, you have probably read that GMail has added video-chat to its web interface.

The blog post mentions the usual suspects: XMPP for signaling, RTP for transport and a H264/SVC codec. The implementation uses a browser plugin. Time will tell if this plugin will be bundled with Chrome (most likely) or bundled with Gears (would make sense for Google).

The Mac installer includes a meta-package with two packages: Keystone.pkg and the GoogleVoiceandVideo.pkg.

The Keystone.pkg includes the GoogleSoftwareUpdate.bundle that is installed at /Library/Google. Inside it has a GoogleSoftwareUpdateDaemon but so far I don't have it running on my system.

The GoogleVoiceandVideo.pkg is the real deal. It installs several things:

  • two QuickTime components, Google Camera Adapter 0 and Google Camera Adapter 1;
  • an Internet plug-in, googletalkbrowserplugin.plugin;
  • an GoogleTalkPlugin.app support application.

After installation, it opened my GMail account and detected my iSight camera. I wasn't able to find someone to use it with so far, so I'll report back on the quality of the image. I expect a decent quality given the chosen codec.

I'm focusing on Codebits right now, so not much time to check out the XMPP part of this, but it seems to me that then reused the same signaling already used by the Google Talk client, nothing new there.

The big question for me is this: will other sites be able to use this plugin for their own video-chat features? I need to read the license more carefully.

As for Skype, it still has one advantage: I can use it without opening a browser on my Mac. But if I where them, I would start thinking about XMPP support and interoperability with Jingle, but thats just me.

Skype window of opportunity to be the leading XMPP client is shortening every day.

November 10, 2008

Codebits 2008 counting down

Codebits 2008 is this week, and although I have received a couple of ideas already for my presentation, I still need more.

So get of your collective chair-interface-parts and send your ideas.

Thanks!

November 07, 2008

That was quick...

Wow... Just 48 hours after winning... change.gov is up.

November 04, 2008

Who needs a pony when you have a fairy?

The Django people came up with a new logo for the project, a magical pony.

Its nice and all, but it doesn't beat the "Best logo of all times, in the Software category"-contest. That prize is still clearly in the hands of SQL::Translator.

Sorry guys, but bonus points for effort. The color of the first version was a step in the right direction.

November 03, 2008

What he said

Although I like GPLv2, since the first I read the GPLv3 I got a sense of dread. I couldn't put my finger on it.

Fortunately someone did, and I can just point to it and say "thats what I wanted to say".

Update: and by the way, if you want to see the entire Obama speach that he talks about:

  • Go to Obama faith issue section of his website;
  • click on the "Watch Videos";
  • scroll all the way down on the video selection box. Its the last one.

Direct link to Obama Call to Renewal speech.

October 31, 2008

FriendFeed

Some days ago I found out about the real-time FriendFeed API and yesterday I decided to try it.

I've setup all my feeds into my FriendFeed account and subscribed the usual suspects. Also, I used Fluid to create a SSB just for FriendFeed so it doesn't interfere with my main browser.

The rate of updates is still too large for my comfort zone, specially because of twitter updates. I need to look for a way to hide them for all my contacts. After that, it should be back under control.

My relation with the new social web is still undecided. There is a lot of very cool stuff out there, but mostly is a big black hole on my productivity, so I tend to be mostly offline.

Technically, it is an interesting topic. For example, the messaging core behind the the micro-blogging sites (at least the ones properly designed) is the kind of stuff that I really like to build.

Update: via comments, Marcos Marado saves the day. To hide Twitter updates, go to your FriendFeed homepage, hide one of your Twitter updates, and then a link "hide others like this" will show up and allow you to hide all Twitter updates. To show them again, scroll down to the end of the page, and a "Shown N hidden entries", and click "Un-hide".

October 29, 2008

You go boy!

By Christopher Hitchens

Those who despise science and learning are not anti-elitist. They are morally and intellectually slothful people who are secretly envious of the educated and the cultured

Nothing much to add, really. I don't get to vote on this one.

October 25, 2008

ADSL woes

Cool week around here. The final countdown for the opening of a new bridge made everybody work twice as fast, and twice as bad.

The fiber that connected the north side of Figueira da Foz to the south was cut by the construction team, and they had to lay a new one for some bizarre reason.

Result: 4 days with zero or unstable ADSL service. We used 3G connectivity but only on a single PC to do support.

Things are staring to settle but the quality of the new path our ADSL connection takes to the central office is a bit weak.

Something to bitch about next week I guess.

October 15, 2008

The new Corleone family

Remember the Godfather, when Michael goes to Las Vegas, meets with Moe Greene and offers to buy him out? He says no, and in the final moments of the movie, he ends up with a bullet in his head.

Well, the nine largest banks in America seem to have learned something from the movie, because in a recent meeting with Treasury Secretary Paulson, they get a single sheet of paper in front of them, giving the government permission to buy significant stakes in their companies. More: they where told that they have to sign it before they leave the room.

Which they did. Talk about "I'll make them an offer they can't refuse"-moment.

I guess they though that the Federal Government can find even more painful methods than death to use on them.

(via Peter).

Fruit news

The new laptops released yesterday made most of my unread news items this morning.

Overall, they look good, and if you have a fetish for industrial design, then you probably had a picture of Jonathan Ive in the shower today.

I admit that I'm curious to see one live, not that I'm shopping for a new laptop (my 17" should be good for another 2 to 3 years), but the full size glass screen and the new touchpad are intriguing.

The switch from the DVI output to a DisplayPort connector is a usual move for Apple: they want to move to a new display connection, so they look around and pick the one they think will be the future, not the current standard for others.

The lack of FireWire is unfortunate. All my external drives and DVD burners are firewire, which I find much more smooth than USB.

But out of all the news yesterday, my interested focused on two small details.

The first is the 24" LED Cinema Display. The quality is of course amazing, but that was expected of a LED display. The detail that really makes the difference for me is the cable that connects the display to the laptop.

It has three connectors: an obvious DisplayPort, a useful USB2 connector (to access the three port hub on the display itself), and a MagSafe connector.

So you get to your desk, connect the three plugs into your Macbook or Macbook Pro and you don't need extra cables. There, a reasonable docking station. And without a costly dedicated connector on the laptop.

The second detail I found interesting is the NVidia chipset. For me it's not about the games, but about the performance that this GPUs can provide: the GeForce 9400N that powers the entry level MacBooks provides you with 26 Gflops over 8 cores, and on the MacBookPro you get a 9600M GT that bumps that to 122 Gflops over 32 cores.

Some may think that these are just numbers, but lets put that in perspective: if we are to believe the listing of the Top500 Supercomputer sites in June 2005, the top slot was the BlueGene/L, a 64k core system with a peak rate of 183.50 Gflops.

So a $2000 laptop has 65% of the performance of a 2005 Top SuperComputer, in the graphics card alone. Add the Core 2 Duo processor for fun.

But still, the Gflops numbers are pretty meaningless for people who don't use the CPU a lot (like me). But for photo and video editing, there is a lot of potential in there, and for Apple, this raises the expectations bar on Snow Leopard.

The next-year OS is expected to unleash all of this Gflops to an unsuspecting world. I wonder what applications will we see if this power is really readily available.

October 03, 2008

SMTP is alive and kicking

The new RFCs for SMTP (RFC 5321) and Internet Message Format (RFC 5322) where released yesterday.

You can find a list of changes in the MailChannels blog.

The most user-visible change is that port 587 is finally recommended for end-users, reserving 25 for MTA-to-MTA traffic. Also, use of SMTP for end-user clients is discouraged, pointing them to the Message Submission for Mail (RFC 4409) protocol.

For server operators, a lot of blessings to current behaviors:

  • you can now legally reject an email after the DATA is complete: yes, most anti-virus/anti-spam appliances already did that, but it was not legal;
  • timeouts are legal too.

It seems a pretty decent upgrade.

September 30, 2008

The Complete incomplete boxed set

Amazon UK is selling a "Complete" boxed set of Battlestar Gallactica, seasons 1 through 4.

Given that the second part of the fourth season will only air next year, how come this isn't plainly false advertising?

Amazon should either correct the description or pull the article.

September 23, 2008

Cheap 1Gb MicroSD cards

Apparently soon you'll have a supply of cheap 1Gb MicroSD cards. You just need to format them.

Some people will never learn...

September 19, 2008

Perl and database access

The base of all database work with Perl is the DBI module. There is no possible argument about this.

If you need something more high-level, things get dicey.

For the last 2 years I've been using the most excellent DBIx::Class. From all the ORM's that I've used so far, it is the best one out there and I still recommend it if you want to get up and running fast (quick tip: start with DBIx::Class::Schema and the load_namespaces() API, do not use load_classes()).

DBIx::Class has some great features:

  • comprehensive test suite: self-explanatory;
  • extensible: you can add pretty complex things on top of DBIx::Class. You can override every method using the magical Class::C3 foundation;
  • manage schema versions: you can use your DBIx::Class::Schema to manage your SQL schema, including versioning and updates. Some manual tweaking is required, no out-of-the-box tool to do this for you, but that's expected anyway;
  • nested transactions: this is killer feature for me. I've worked on a system (IPGng::SQL for those who know what that is) in the past (2001/2003 timeframe) that has this also, and it makes your code much more robust and simple.

Not everything is a good fit for me, though. There are two main sticky points.

The first is the use of SQL::Abstract as the query representation language.

Learning a new language that I can only use in the context of Perl is a personal waste of time. I have been using SQL with Oracle, MySQL, Postgres and SQLite for quite some time, and I can pretty much do whatever I need with it. Even when I hit a wall, I have a couple of Celko books behind me that usually help me jump over them.

So for me, the SQL::Abstract advantages aren't actually.

The second sticky point is a mismatch between DBIx::Class and my needs in terms of Object-oriented modeling.

Usually I have one entity in my object model (say for example Members) that is mapped to multiple tables (personal data, login information).

With DBIx::Class, I have the business logic dispersed into Result and ResultSet classes, per table, not per entity. This sort of works, but I find it messy for more complex projects.

So for a new project that I'm starting, I'm not using DBIx::Class. I don't have a full replacement, just parts that I'm enjoying putting together.

The first two modules that will be part of the final solution are DBIx::Simple and SQL::Interp.

They provide the minimal set of tools that such lower layer over DBI should have.

Above that, I'm still working on it. So far I have a wish list:

  • transactions: nested transactions with commit/rollback hooks;
  • DSL for schema versions: must have data dictionary features.

The first part will probably be a small Transaction module. I'll most likely use code like the txn_do of DBIx::Class::Storage, I like the syntax very very much.

The commit/roolback hooks are required because I need a "almost" two-phase commit protocol.

Picture this: you have two systems, a transactional database and a non-transaction messaging/pubsub system. Inside a DB transaction, you publish some events. If those events reach subscribers before the DB transaction is committed, they will not find the DB up-to-date.

What I need is to delay the actually publishing of the events until the final commit of the DB.

The second wish is a DSL that I can use to generate the SQL, with tools to manage upgrades between versions. This will be a SQL::Translator-based project, with a Parser class for my DSL.

This allows me to use all the Producers that the SQL::Translator project already has, and also the tools to diff SQL schemas.

The data dictionary part is the important feature. I want to declare types, including Perl code to validate and format values, in a central place, and then use them in the schema.

This DSL must generate also some base set of classes that you can extend with custom behaviors. This also provides a introspection interface that can be used to generate HTML forms and validation profiles.

Its seems a lot of work, and it is. But its also an incremental process going back some years, and I don't mind the wait.

I see you, and raise an Extreme

It seems that the WebKit team just raised their bet in the JS Engine poker game.

Without comparing with other engines, which is a game in itself, the speed up from previous versions of Safari to the current Webkit is nothing short of amazing.

I was looking around for a Safari version 2.x to see how it compares, but I don't have one anymore. Still, a ten-fold increase between the 3.0 release and this one, impressive.

Update: By the way, I'm a Safari user, so comparing to other engines is not something that I really care, I'm much more interested on comparisons against previous Safari versions. Still, you can find another comparison between engines here.

Although other will be more qualified to answer this, I wonder how fair is comparing Squirrelfish Extreme with Google V8 on a Mac? The reason is this: I assume that the V8 running on Windows uses a lot of optimizations that might or might not be in the Mac version.

Ruby svn has some support for Unicode codepoints

A couple of years ago I looked at Ruby to see what the fuss was all about.

I found a clean language with a couple of features that I really liked (the blocks with yield stuff) but also two major annoyances:

  • their version of CPAN was very limited at the time in the areas that I required (namely asynchronous network programming and XMPP libs);
  • lousy support for Unicode handling.

The library has been growing, and although you can find good XMPP libraries now, I still didn't see anything like the AnyEvent Perl framework. I saw someone (forgot where) mentioning something called rev, but so far I could not find any solid references to it.

The Unicode was the most sticky point at the time, and the reason why I didn't keep learning Ruby. I though I'll wait for a ruby implementation with full Unicode support to look at it again.

Apparently, 1.9 might be said release. The latest SVN version has something called String#each_codepoint that seems a step in the right direction.

I'll wait for the final release to look at it again, but its nice to know that something is coming.

By the way, I'm not thinking about stopping using Perl, not in a million years. I just use a lot of Ruby-based projects and I want to add some features on some of them, that's all.

September 18, 2008

AWS newest offer: instant S3-based CDN

The process is simple: upload your stuff to a S3 bucket, call an API, receive a DNS name that you can use.

Done. The bucket is now CDN-ized.

I don't think you could do this any simpler. You can read more about it at the Amazon Web Services blog or at Amazon CTO Werner Vogels blog, where I found out about it.

I wonder how long it will take AWS to become the horse pulling the wagon at Amazon. What I mean is this: AWS was created to export Amazon cloud data-center to other users, but all the solutions that are made available until now are things that Amazon itself required. How long will it be until we start to see features that AWS customers request, and that eventually Amazon itself will use? I wonder if the elastic IP features where such an item.

September 17, 2008

DNS prefetching in Chrome

Interesting tidbit:

A major goal of Google Chrome was to improve user enjoyment and value in web surfing. Critical to that is increasing the responsiveness of the browser to user input, or reducing user perceived latency. Measurements in the browser have shown that a significant amount of time is traditionally spent waiting for DNS to resolve domain names. To speed up browsing, Google Chrome resolves domain names before the user navigates, typically while the user is viewing a web page. This is done using your computer's normal DNS resolution mechanism; no connection to Google is used. As a result, user navigation time in Google Chrome when first visiting a domain is on average about 250ms faster than traditional browsing, and the occasional but painful 1-second-plus delays are almost never experienced.

I don't expect this to add much load to the DNS infrastructure and it should be a visible performance improvement for end users.

September 04, 2008

Memory tricks

Interesting read to catch up on current PC architecture. Favorite quote:

One developer we consulted about the issue noted, "consumers are being scammed by [PC] OEMs on a large scale. OEMs will encourage customers to upgrade a 2GB machine to 4GB, even though the usable RAM might be limited to 2.3GB. This is especially a problem on high-end gaming machines that have huge graphics cards as well as lots of RAM."

"Microsoft even changed the way the OS reports the amount of RAM available; rumor is, due to pressure from OEMs," the developer told us. "In Vista and prior, it reported usable RAM, while in SP1 they changed it to report installed RAM ignoring the fact that much of the RAM was unusable due to overlap with video memory." And so many PC users are installing 4GB of RAM in their PCs and thinking that it is being used by the system, when in fact it is no more beneficial than if the RAM were simply poked halfway into the CD slot.

How long until some group of people sues their asses off?

September 02, 2008

Google and WebKit: a love story?

With a 38 page comic, you can get to know a bit about Google Chrome, the Google browser. Highlights:

  • uses WebKit as renderer;
  • it has his own JS engine, written by Team V8, and it includes a JIT;
  • each tab is a separate "process" running inside a jail or sandbox;
  • Gears is built-in;
  • allows to run Web-based app in a chrome-less window;
  • project completely open-source: I think they mean source available, but maybe I'm a pessimist regarding Google openness.

Questions for the next days:

  • When they talk about processes, is it really a new process in the UNIX sense? It seems so, and if yes, it is a good idea;
  • When they talk about process jail, are we talking in the BSD sense, or chroot sense, or something more soft?
  • The plug-ins are made to be (and probably with a grain of truth) the bad guys. Adobe and the Flash team must be ecstatic.

The big winner seems to be the WebKit project, this is the second time Google chooses WebKit over the competition.

More than a browser, Chrome seems tailor made to run WebApps, like the ones Google has been building in the last years, and therefore another step in their quest of operating system independence.

Update: a blog post about Chrome at the official Google Blog. First beta will be Windows-only unfortunately.

September 01, 2008

I don't write academic papers

Bittorrent RAID, cool.

He should write academic papers, though.

August 04, 2008

The DNS wars

The recent DNS bugs sent me reading the cr.yp.to site for old stories, long forgotten. djbdns is one of the DNS server softwares that was immune to this problem from the start.

Some pearls:

I still receive a diff of changes to the cr.yp.to site, almost 5 years running now, I wonder if anybody has an archive of them. It would be interesting to assemble all of those diffs into a repository to track back the changes.

July 21, 2008

$chromatic++

Nothing to add, really. Maybe another day.

QOD

In response to the FSF article on the iPhone, let me point you to the balanced view of Stu Charlton.

Quote of the day:

The OpenMoko counter-argument is "give it time, in the long run, it will win". And look, in a way, I hope so. Using the iPhone is a great case of following Keynes' adage, in the long run, we are all dead., where we optimize for short term gratification at the expense of our future.

July 18, 2008

Subversion 1.5.0

I missed the release of the new 1.5.0 version of Subversion. Its funny, actually. This was somewhere around June (the blog post lacks a proper date), and I didn't see it mentioned on any of the blogs I follow.

Anyway, its out and I was expecting it to see the new merge tracking stuff. One of my gripes with Subversion is that yes, branching is cheap, but the merge part is awful hard to do and puts much of the load into your lap.

From my superficial first look, all I can say is this: what a mess!

I need to read the documentation more thoroughly but it seems full of special cases and workarounds for common scenarios that should just work.

For example, the "Reflective/Cyclic merges" that are mentioned, are the most common ones for me when I'm using feature branches.

I think this phrase is telling:

The only way to truly solve this is to invent a new merge algorithm in Subversion that does not rely simply on revisions

Of course you can think that branches are not good for you, and that they slow you down. I think its a matter of personal organization. Multiple active branches fit my brain and my workflow just fine, and I love to organize stuff with them.

July 16, 2008

TechCrunchIT are a bunch of hypocrites

Really, its disgusting how low you can get.

Here we can see Nik Cubrilovic ranting about how close the iPhone is and all the DRM plague that it brings to our world.

Cool, thats nice, and certainly a valid point of view. It's certainly better written than the usual diatribe we get from the Portuguese open source evangelists.

But take a moment to search the TechCrunchIT site for openmoko. You can just click the last word. None. Not a single article. Now try for iPhone. Yep, 9 articles just this month.

search for openmoko - result page

Hypocrites. At least other trolls-for-ad-money don't try to wear the open-source t-shirt.

July 07, 2008

Middle-range Macs

I'm looking for a desktop Mac.

I'm pretty unhappy with the current Apple offering. We have the high-end Mac Pro, starting at 2.499€ (but you can configure a single CPU version for 2.049€, and at the low end, the Mac mini, starting at 499€. In the middle we have the iMac's but those have a built-in screen, and I already have dual 20" Wide displays that I would like to reuse.

I wonder if Apple will ever fill the void between the two head-less versions they have now. I want multiple internal disk-drives (or at least an eSATA connector) because for my main workstation I like to have RAID1, but the only way to get those is a Mac Pro, way to expensive.

There are alternatives, but I would like to avoid the hassle.

July 04, 2008

Free weather report

There is a storm coming in.

Its time you realize that the best way to keep your mail service operational is to outsource the SMTP part. I did it last year, kept the IMAP server, moved the SMTP server of to Postini (before the Google buyout) and I must say I'm very happy.

July 02, 2008

Disabled menu items

A bit because of my last post, I couldn't stop noticing a similar trend in software development.

There is a series of posts about disabled menu items. It all started with Joel Spolsky "Don't hide or disable menu items".

That had a strong reaction from Daniel Jaikut (my personal favorite take on this) and John Gruber, amongst others.

I'm not a GUI application developer, but I must say that it just sounds pretty wrong to go into pop-up-hell to solve the problem. Sure, we could use a in-application tool to explain why the menu is disabled, but that should be optional (like the search menu function in Leopard).

Joel assumption is that users are not very smart and need some explicit text dialog boxes to explain things to him. This is of course true for many many users, but software developers should also be concerned with raising the bar of the average user. Sure, its not popular and you might sell fewer copies, but users need to be probed, poked and pushed to be a little smarter.

Road blocks can be challenging and the felling you get when you figure it out why something is grayed out is worth a thousand dummy books. Not because these particular problem was solved, but because the user developed a mental framework on how to tackle the next difficulty.

If you clear the road of all the roadblocks, your users will only know how to drive straight and they will crash on the first curve. If they are used to reason things out, and understand why some menu items are grayed out, you'll end up with a user base capable of making better use of your software, and allows you to write more full-filling software applications.

Make it harder

Right now, in Portugal and in other places like the US, our schools are lowering the bar (making tests easier) to have a higher percentage of students with passing grades.

This is wrong because the only thing that its raising is the bar of mediocrity.

Tests should be hard not because we like failing grades and angry students but because hard tests force students to evolve their reasoning and deductive skills, memory, and a lot other brain activities.

The worst case scenario is not having a poor student fail a passing test, the worst case scenario is having the next generation of bright students not being pushed to their full potential because they slept through their early years, and ended up a lazy brain.

Forget breakthrough advancements in medical, science, math, chemistry, and other areas. It was so easy to fly through the early years, the above-average kids just fell asleep and their capabilities where not exercised when they most needed, in their youth.

You are worried with the growing segment of the population that is growing fat because of bad lifestyle decisions and even worse food choices? That will be nothing if the next generation of leaders is made of average minded people, with poor to zero knowledge of history and culture, not to mention science.

That's my worst fear.

And you know what? It's your fault, and mine. Its our fault because you and I need to get off our asses and do one of two things:

  • be more politically active, run for local office, talk about education where ever you go, make it your national number one priority;
  • or if you are not inclined to be a politician, make sure your own politicians talk about education. Ask them, prod them, organize groups for higher standards, make your voice heard.

And if a pro-education politician gets elected, support him, defend him, give him cloud cover. Education is not a sexy subject and harsh measures might be required. Having Be aware of what is being done to the future of your kids, help in what you can.

I don't know if I will live to my own expectation on this, I sure hope so. Because this is an example of the right meaning to the word important.

June 28, 2008

OAuth and Google

Excellent news!

Google now supports OAuth on all Goggle Data APIs.

June 27, 2008

A simple file upload?

Yesterday, I tried to upload my usual avatar to my Google Account. If looks like a simple file upload, right? Guess not:

Foto-Upload-Only-Ie-Ff

WTF? Couldn't they just fallback to a simple file upload? Is this rocket science?

June 25, 2008

The Pre-Air Season

Every year, around this time, we start seeing pre-air or pilot episodes of shows that might or might not be produced for next season.

This year is no exception and the first round of shows is out there. I've seen some of them and I organized them into categories.

First, I think these are sure winners:

This ones I liked a lot:

  • Leverage (TNT/Electric Entertainment): a 5-person Oceans Eleven. Its not a great show, but I had a lot of fun watching. If they manage to keep the pace, it could become great;
  • Fringe: excellent FBI-drama, reminds a bit of The X-Files.

Might be worth something category:

  • Raising the Bar: written by Steven Bochco. Its a laywers-show, so nothing new but I'm giving it the benefit of the doubt because of Bochco.

Not recommended at all:

  • Do Not Disturb (Fox): comedy, soap, in a hotel somewhere. Lots of girls floating around though;
  • The Middleman (ABC): I admit, I turned off the TV 4 minutes into it after a big cheesy monster appeared on the scene. It seems to bad to watch. Thread carefully, and if you do find the courage to see it to the end, let me know if its worth it;
  • Life on Mars (Fox): not my type, you might like it - american remake of an old BBC series, detective goes back in time after a car accident.

In parallel you also get some summer shows:

  • In Plain Sight: casual US Marshals story, about the witness protection program. Its fun, its summer, good value; with Mary McCormack;
  • Fear Itself: I'm not a fan of horror or suspense, but I would recommend you watch the first episode at least. Its very very well done, and you might like it.

Thats all for now, have a great Pre-air Season.

June 16, 2008

Progress bars

Yes, progress bars. Those little graphical strips of color or animated graphics that you get to look at while you wait for something to happen in a computer.

Apparently the subject is worth a four page paper by four authors.

Two sad facts:

  • I actually find the subject mildly interesting (maybe I should ask her on a date);
  • Expect implementations of the Fast Power version in a jQuery/Scriptaculous/insert-fav-JS-UI-lib plugin soon.

The stars huddled together...

... and decided to align just for me.

Last week I had a discussion with a friend. We have a small pet-project growing between us, and I suggested using free accounts at GitHub to collaborate. A couple of days, I got a call asking "But how can I hide the project?". It was mostly a WTF-moment for me. The concept of developing this in a closed environment wouldn't even register with my conscious thought. Eventually I talked about GitHub private repositories and the fact they are a paid-for-feature.

It was a wake up call, I guess. I've started mirroring my personal projects to GitHub some time ago, and I haven't completed any of them. I've recently upgraded my account at GitHub, not because I'll use the private repository feature, but because hosting my free stuff also costs them money (and I like the HTTPS protection everywhere).

At the same time, a online thread developed about programmer insecurity that fits like a glove to this situation. It started with Ben Collins-Sussman and a couple of replies I found interesting:

The personal experience above, reading through these articles and their comments, and my own "push everything" current frame of mind, all three are having a big discussion inside my head right now.

I don't believe hg is more prone to sharing than git as Ben suggests because its not the tool that makes it happen. Tools are not trend setters, they just make them easier to set. There where a lot of projects very successful and with a lot of developers and collaborators working only with CVS, so git and hg (to name just two) are not magic wands that make your project a success in that department. I believe they will make them easier to collaborate on but that's it.

I've also don't agree with Ben statement that DVCS make going dark easier. Again, its not the tool, its the mentality of the programmer. Sure, the argument that creating a branch and working alone in the dark with git/hg is much easier than Subversion, but this is the first time I see someone sell this as a positive thing. Putting artificial barriers to collaboration is just duct-tape over bad social skills.

But programmer insecurity is a fact, not fiction, and it must be dealt with properly, or we risk antagonizing a lot of them. Funny that Ben says that hg is more share-friendly be default. We could argue that git is more protective of each collaborator insecurity because they get to choose which branchs are sharable-quality, they don't automatically share every branch, and so, the programmer is free to fail in his topic branches and push only is trunk/master branch with the cleaned up work.

I've also read over those articles that the rebase feature of git is destructive and allows one to hide our bad code. Well, I want my code reviewers to have a good understanding of the feature I'm sending them, and sometimes, my reasoning is best explained by a sequence of three patches and not the nine it took me to get there. Having said that, I would like very much the ability to duplicate a branch and rebase in a single operation, to keep my personal path to the final set of patches intact, as a parallel branch. Knowing how you got to your three commits is very helpful sometimes.

And speaking of git missing features, I like to have lots of branches, and I would prefer not to delete them when I don't need them anymore. I would love to have a branch annotate feature, to write a small text associated with which branch: why it was created, what was it trying to achieve. I should be able to hide those branches, not delete them. This could be done at hosting sites like GitHub though, with a motto: GutHub, where your old branches go to sleep.

Bottom line is: tools don't make decisions for a programmer. They don't turn a project in a community success or failure. They only make the process harder or easier. Code sharing, open-source collaboration, it will always be a people-problem, requiring social skills.

Update: fixed links, thanks Nuno.

June 13, 2008

A docking station

When I get to the office every morning, I need to plug all my external cables stuff.

My laptop ends up looking like this:

Apple Docking Station

I wonder if Apple could make a Laptop with a connector for a docking station. I think their version of the concept is called "Second Mac at the Office".

June 01, 2008

Me

I must say, if Apple snatches the me.com domain for its new .Mac service, I would be impressed. Its a very cool domain name, simple, very Jobs'like.

May 31, 2008

Snapz Pro X a bit to eager?

Run this:

sudo fs_usage  -w -f filesys 'Snapz Pro X'

Does your copy checks the Preferences and License File every two seconds? Sheeeshh...

(tested on Tiger by the way, not sure if it work on Leopard)

May 30, 2008

git email workflow

I personally was never on the receiving end of a email-based git workflow so I don't know how hard it is to use git to track all the incoming patches and the status of each one.

I much prefer the workflow based around pull-requests, and the GitHub interface for them is extremely nice. Today, as I stood in the shower (it was a shower day, yes, and my best ideas usually hit me under running water) I started to think about a Web interface to manage email-based workflow's. This is a brain dump. I've tried to make it consistent, but I'm not sure I've succeeded.

I'll use GitHub as a target of this feature set, although I don't know how well it would integrate with their view of the world. The fact is that this system could be implemented with a local tool with a web interface and a POP3 client just for personal management of patch queues.

GitHub would provide one or mode email addresses associated with each project. These email addresses are basically treated as patch queues.

Collaborators would send patches by email (using the git-send-email command) to one of the queues. The system would track each patch individually having a state (new, under discussion, rejected, accepted, integrated, for example), and a discussion thread using the same comment system that commits have today. Each patch would be given a patch ID, basically the URL of the patch in this system.

Authenticated users could also add Signed-off-by: headers to each patch.

Patch authors could resend patch sets or individual patches. They could also include a Replace-Patch: header that would automatically link the two patches in the same discussion.

The queue administrator can also group patches into sets, both with the help of the patches Subject lines, or in a ad-hoc manner.

Each patch and each set has an HTTP URL that would return a mailbox formated to pipe directly into git-am. Only accepted patches should be included in the generated mailbox. Optionally, a Patch-Id: header could be added for future tracking.

Applying the a patch or patch set would be as simple as

wget URL-of-patch-or-patch-set -o temp.mailbox
git-am temp.mailbox

If this takes off, we could even patch git-am to accept URLs...

Alternatively, we could write a porcelain tool that would do:

  • record the HEAD ref;
  • fetch the mailbox URL;
  • call git-am with the mailbox file;
  • scan the log since the recorded ref. For all applied patches, signal GitHub that the patch was integrated.

The system could also use GPG to streamline some workflow's. For example, given a GPG white-list or a "trusted" signature (this one is more complicated because you would need to have the private key at GitHub), we could limit queues only to GPG-signed patches, or auto-accept them on the general submission queue.


Anyway, this is a brain dump. I don't use the mail workflow so I don't know how important this would be. I like this idea a lot.

May 27, 2008

Will 10.5.3 win me over?

For the first time since 10.1.x, I didn't upgrade to the latest Mac OS X with the .1 release. Usually I wait for a .1 and "nuke and pave" my Mac, but this time, after almost 8 months after the 10.5.0 release, I'm still running 10.4, and reasonably happy with it.

Sure, there is software out there that I would like to try but requires 10.5, only its nothing that I totally depend on, so 10.4 is still perfectly usable for me.

But 10.5.3 should be here soon, and with almost 220 fixes, it might be the stable release that the more conservative of us were waiting for.

As usual, I'll wait a week or two after 10.5.3 to make the jump, but I think I will finally unwrap the Leopard DVD sitting on my desk.

Still waiting...

git usage vs operating system

A small meaningless statistic (but interesting nonetheless) about the split of operating systems and git usage on github.

I admit that the second place was a surprise to me. In a good way.

April 17, 2008

I'm going to be sick...

I've been a bit under the weather this week. Something inside not quite right, nothing major.

But after seeing the stupid internal Microsoft Vista SP1 video, I feel the need to rush to the bathroom and throw up. I don't believe that anybody really expect this sort of "inspirational" video to pump up your sales team, do they? It's like the monkey dance all over again.

I'm a fan of Bruce Springsteen (I was a very impressionable teenager in the 80's, so sue me) and I fell that some sort of lawsuit is in order here.

April 16, 2008

iCal birthday calendar

iCal has an option to extract birthday dates from the Address Book and create a calendar.

Maybe I'm missing something but given that there seems to be no way to set a default alarm on those items (like 1 day before or on the day itself), isn't this a very stupid feature? I mean, I don't live inside my iCal, it might work for people who do, but I don't.

I guess I need to publish the calendar to some service that lets me add the alarms... Oh well...

April 12, 2008

Rethinking CPAN

Andy Lester wrote an article a couple of days back about rethinking the CPAN interface. The key part of the argument is:

We don't want to "make CPAN easier to search." What we're really trying to do is help with the selection process. We want to help the user find and select the best tool for the job

I though a bit about this and my own CPAN usage over the years. I've started with Perl around 91 or 92 so I've used it a bit.

I don't know the answer for this one, but I would start with the Perl module version of the iusethis site: each person could select the list of modules that they use.

This first approach would start shuffling modules to the top.

You could then ask each person to classify why are they using the module. This is the hard part because you would need to come up with a classification scheme, like the one we still have for CPAN module, actually. It will never be perfect but I prefer to have 10 or 20 common things like "Parsing XML", or "Sending MIME email" than nothing.

An optional improvement would be to have a 4 or 5 level rank, inside your own module list, to allow you to say that, DBI is much more important than CPAN::Mini.

Another layer would be some sort of social angle. This is not to make the site look hype and fresh, but to help find new modules. I could watch a couple of persons I trust and see what are the modules they are using and the most recently added. Instead of looking through 50+ modules updates per day, I just see a filtered list of potential targets.

A final twist - a aging digg-like system: I can "This saved my bacon today"-vote on any module, but my vote would only be counted for a month, giving rise the the Bacon Savers list.

But as always, you need a carrot to make all those perl programmers compile their module list. There are two immediate carrots that I can see:

  • selective CPAN announcements: if a module on your list gets an update, you would get a notification (daily email, weekly email, or personalized RSS feed);
  • a automatic Bundle module, or Task module to install all your modules: I would not upload all this modules to CPAN, but we could create a perl script that downloads my Bundle or Task and calls the classic cpan to do the heavy lifting.

Anyhow, this are my €.02 to the conversation.

April 11, 2008

chromatic vs GitHub

I usually like chromatic articles about language design and his work in Perl6. As an example, just yesterday he committed a 20% improvement on the Rakudo build time.

But last week, he wrote the following about GitHub:

A centralized repository for a distributed version control system! Why didn't I think of that?

I think that he is way off base on this one.

Distributed version control systems are not incompatible with a centralized repository. You can use them with a centralized repository and most projects will still keep a central point for coordination of releases. In the Linux kernel project, for example, that central point is Linus tree.

The difference between a centralized VCS like Subversion and a DVCS is that you are not forced to use a centralized repository, and if there is one, its just a social decision, not a technical one.

In Linus own words:

I certainly agree that almost any project will want a "central" repository in the sense that you want to have one canonical default source base that people think of as the "primary" source base.

But that should not be a technical distinction, it should be a social one, if you see what I mean. The reason? Quite often, certain groups would know that there is a primary archive, but for various reasons would want to ignore that knowledge: [cut]

But even for smaller projects, the usual and recommended setup is:

  1. you clone from the agreed upon central repository: if you are starting a new project, congratulations, you are it. Just git init a directory somewhere;
  2. you create branches to work on features;
  3. as they stabilize, you merge them into the master branch;
  4. you publish your repository somewhere for others to see your work;
  5. other fetch and merge from this public repository to their own repos;
  6. those others also keep a public repository somewhere.

Basically, you work on your own local repositories, you keep a public version of this repository somewhere online, and others pull from this one. Usually, unless you are on the same LAN you don't pull directly from each other private repos. You can do it sure, but its just not common, mostly because people usually work behind firewalls or NATs.

So GitHub (and Gitorius, and repo.or.cz) is a place to have the public versions of your repos.

And a very good one at that.

VDSL

Eh:

To get a sense of just how expensive even such a limited fiber rollout can be, consider than telecom provider KPN in the Netherlands will expand from 1,350 local exchanges to around 28,000 in order to launch VDSL service. That's a lot of trench digging and cable laying to bring the fiber further into the neighborhood, making this a nontrivial upgrade.

Thats what I call an upgrade... 26k new POPs. I still remember all the trouble it gave the ISP I worked at in 98' to upgrade from 10 to 50 POPs.

oh, the fun.

Freebase

Some friends complain that I talk a lot about Git, so to even out a bit, I'll talk about my current favorite Website.

Yes, amongst all the sites I know or visited, there is one that takes the title "Current favorite", in the singular form.

Its Freebase. Its a Wikipedia with a decent database schema. You can query it in much richer ways, like "Directors of $10M+ companies who have starred in movies" (the query for this can be seen on the left, as "Show this query in MQL"), or "Graduates of Stanford born since 1960 who are board members of companies".

Lately a couple of articles on their blog caught my eye (in reverse chronological order):

If you want a quick tour, checkout a recent Freebase screencast.

After that, check out the cool toys^H^Hols other people have written using Freebase.

Recommended.

Twittering

I admit: I still don't see what is all the fuss about Twitter.

Twitter is like a selective (your followers only) shout command of old Moo's, but it seems to me to be a drain on productivity. If you think IM can be bad, well, you haven't seen nothing yet.

But I'm still there trying to get it. I wonder if there is really something to get at all.

For now, I cut my following list to about 30 people who are either close friends, or with whom I work constantly. I've also included a couple of so-called-A-list-bloggers that I read. This and going to the settings page and disabling the @ messages cut down the twittering to an acceptable level.

Lets see how this works out for me.

March 29, 2008

In case you are wondering...

... why BitTorrent is so popular:

Safariscreencapture001-1

Starting Transmission now, should be here in 15 minutes, I guess.

March 20, 2008

$%&#$% Music labels

So, a couple of days ago Alicia Keys did a concert in Portugal, and Radio Comercial is always playing what I assume to be her major hit, No one. I got curious about the rest of her music so I decided to buy one album to see if I like it.

So I clicky-click to the iTunes store only to be greeted by this:

Itunesscreencapture001

Now, this is not some obscure artist. Radios are playing her songs constantly around here, and she just gave a big concert, and the music is not available for purchase? WTF?

So choices:

  • drag my ass to some music store and buy the CD and contribute to the growing pile of carbon-based things I have no use for after I rip the CD into iTunes;
  • download a eco-friendly MP3 from some site online.

The problem is that I won't to the first because I don't want a dead-weight CD, and I really don't like the second choice.

Stupid labels who still haven't a freacking clue about how to operate in a global economy. Just lost a good sale today.

March 19, 2008

Elections 2008

I've been following the Democrat primaries with a particular interest. The weight of super-delegates and the delegate count, and how low can the democratic party can go if their candidate in the end is the one with less delegates.

I'm not pro-Obama, nor pro-Clinton. My opinion doesn't count either.

But if it did, I think that the latest Obama speech in Pennsylvania would force me to choose. I haven't seen such a good speed in a long time (and I'm the strange kind of person that actually likes to listen to speeches, when properly delivered).

So, after listening to the 40 minute speech, here's me hoping to see a Obama Democratic candidate to the White House.

Israel response to the US

Great response of Israel to US about copyright laws. Choice quote:

Israel objects that it is under no obligation to implement such a system, and notes that it chose the current arrangement for a reason. "A 'takedown' system which operates on the basis of a mere allegation of infringement would be an invitation to censorship and abuse of process," it says in the filing. "It is not the role of the ISP or Host to become a policeman of content. Requiring such would effectively bring the Internet to a halt."

March 07, 2008

More limitations

The limitations slide that Jobs presented yesterday is of course incomplete. You would not expect it to have the full set of limitations.

In the next weeks, people will go over the documentation and find some more. I'll try and keep a list of the ones that are relevant to me, in order of importance:

  • third-party applications cannot run in the background (link via Gruber): this is most unfortunate to those of us who are thinking "XMPP client, XMPP client". I hope this is only a temporary restriction, or that a specific certification program is setup up to gain the right of running in the background;
  • a temporary limitation, but a big one. The last line of the iPhone SDK readme: "Interface Builder is not yet included in this beta of the iPhone SDK";
  • "Applications may only use Published APIs in the manner prescribed by Apple and must not use or call any unpublished or private APIs": not a restriction by itself, but is interesting to have this in the License Agreement. I think this will mostly be used as "If you mess up, know that we can go out and get you, legally" (article, via gruber).

iPhone SDK

I suppose that one of the words we can use to describe the iPhone SDK is sexy.

I played a bit with Cocoa a couple of years back so I haven't followed to improvements of XCode. I hear João Pavão complaining about all the bugs but thats about it.

So while watching yesterdays event stream, and while I was looking at the game that the Apple dude wrote in (cof, cof) "two weeks", and all the nice tools, my though was: do the other mobile environments have such a sexy SDK, with such good tools?

The SDK seems better than expected, even for developers who just want to give away your apps. The integration with maps, the photo and pictures, it all seems to fit well. And it all works with both the iPhone and the iPod Touch.

The games we saw yesterday, and the fact that you have all that accelerometer stuff built-in makes the iPhone a potential mobile Wii, and I think we will see amazing games for this. I think Nintendo is considering adding a accelerometer to the DS as soon as possible after seeing this. We know (looking at sales of the Wii) that the new controller is the best thing out there (I own a Wii, and my four-years old is starting to be able to control it with precision, scary), so games on the iPhone, its going to he huge.

All this seems like another leap forward for Apple. I mean, competitors like Microsoft, RIM, Nokia, really, do they have the entire package that Apple is offering for download today (err, strike that, maybe tomorrow, the developer site is slashdotted)? And something that you can run on your iPhone and iPod touch today with the beta release of the firmware? My magic ball says: definitively not.

As for the limitations, the two that caught my attention where porn and VoIP over EDGE. The last one was predictable, as a protection to their revenue stream from the carrier deals. But porn, I was surprised. Sure, they don't want to piss off prude consumers, but mobile porn? In a gorgeous screen like that? Dude, iPod XXX series for sure!

The deal to distribute apps ($99 setup, as a "don't waste our time"-fee, and 30% of the price we set for the app) is something I cannot judge. I've never developed for the mobile platform so I don't know how much it cost developers to distributed applications for say, RIM, or Nokia. But on the other hand, no other mobile device producer has the reach of iTunes and the new App Store. Sure, as Rui says often, Apple and the iPhone are a spec in the windshield of Nokia globally, but the ecosystem that Apple is creating is something out of level 18 of Spore.

And jailbreak? sure, the next version will allow you to install applications without the App Store. Thats the logical step for them, to build an alternative distribution channel (I was going to say competitor, but really, it doesn't stand a chance as competitor, but as an alternative, it could be very good). But even so, it will not be worth it for most users, I think.

And me, I have one application I want to write that affects my standard of living. It ties with a e-learning site I operate. The thing is, I'm still running 10.4 on my Macbook and I don't want to change right now, and the SDK is 10.5.2-only. So what is a person to do?

(those iMacs really look cool, and my birthday is coming... hmms... the lower end model is "just" $1100...)

iPhone enterprise features

Nothing more to add, just linking to Fake Steve. Sure, its the extreme position on the Apple fan boy club, but then, there is also a grain of truth in there.

Oh, and yes, it runs on the iPod Touch also. Everything presented yesterday also works with the iPod Touch except stuff that depends on the particular characteristics of the iPhone hardware, as any reasonable person would expect.

And yes, you have to pay for it again. Why? The official response as far as I can tell boils down to the Sarbanes-Oxley Act, but I would like to hear a definitive explanation about this. We all get updates to the iPod, the Apple TV, the Airport Extreme, and other devices by Apple for free, so why not for the iPod Touch?

On a roll

While searching the the link for the SDK post of Fake Steve, I read the previous posts just for kicks. The one about Sarah Lacy just got me laughing out loud. Choice quote:

See, there's just these two things you notice about Sarah right away when you meet her. They're right there in front of you, just staring at you, and you can't look away from them and you find yourself watching them roll from side to side and getting hypnotized by them and just agreeing with anything she says.

March 06, 2008

Doing Acid

A quick post to point you to some Acid3 test results. The thing that got my attention is that IE 5.5 has a better score than IE6 and IE7.

Strange.

Also, a piece be the Webkit team (currently leading the score with an impressive 90%) telling us how did they get there and why those numbers should be taken lightly. The sense I got from reading that article is that Webkit will reach 100% real soon.

IE8

IE8 Beta 1 hit the streets yesterday, and it is good. A much needed improvement over IE7.

My favorite feature: WebSlices.

Pity they are not hAtom-compliant though. One can only hope they improve on this in a future beta.

Open AIM

The Open AIM effort is a welcome step by AOL. But is it in the right direction?

If you are thinking about writing a XMPP Transport/Gateway using these specs, you should read carefully the Terms and Conditions page. There are two issues I can see:

  • most of the required "compensations" listed (Ads, Buddy Info, Expressions, AIM start page or AIM toolbar) are very difficult if not impossible to do in a server-side scenario;
  • the mandatory ad usage above 100.000 users could be a problem for some of you.

And if you though these could be worked around, then let me point you to the "Are there any restrictions on what I can build?" FAQ entry in the General section so that your hopes go bye-bye:

Although we have removed many restrictions on usage and development, we still do not permit developers to build Open AIM applications that are interoperable with other IM networks. (Multi-headed applications are now allowed). Please refer to the Developers License Agreement for additional details.

So no, you cannot write a AIM transport with this.

So yes, our best hope is still that the XMPP client-to-server gateway that AOL was playing with sees the light of day.

And yes, in an ideal world it would be a server-to-server gateway, but I think it takes a lot of little steps to get there.

This Open AIM is just not one of those steps.

March 05, 2008

Paranoia sets in

I did a quick read over the article from The Wall Street Journal about the Apple shareholder meeting. I was mostly interested in any iPhone SDK tidbits.

But the following paragraph about Flash support caught my attention:

As Jobs put it Tuesday during the company's annual shareholder meeting, Apple's iPhone, with all its cutting-edge mobile Internet trickery, needs something much better than the current Flash player that Adobe makes for cellphones. The Flash Player option that fits the bill is made for devices like laptops that are larger than the iPhone; as a consequence, it performs too slowly on the iPhone, he said.

Emphasis mine.

I don't know if those are Jobs exact words. If they are, there is a lot of meaning and future directions we can extract from the choice of words. Is Apple preparing a Silverlight-style maneuver, with a Flash-like language? Or are they writing their own Flash player?

In the end, I think its just a curious choice of words, without any second meanings. But the mind did wander a bit for a while.

March 04, 2008

Tim Bray on OOXML

Tim Bray has been writing about the entire OOXML standardization process recently. Tonight he posted a very nice summary of all the major issues he sees with the OOXML format and with the process itself.

Recommended reading.

Fez

Ok, I need to get my hands on this Fez game. Such a beautiful design and concept.

Really, take the 5 minutes it takes to watch the video. It starts normally, but less than a minute into the video, your jaw will drop.

update: the Fez author website.

Hiveminder IMAP access

Ok, this is very cool. Best Practical announced yesterday that they now support IMAP access to your task list in Hiveminder, including the most common operations.

They are so getting my money now.

February 27, 2008

IPv4

So IPv4 address space is running out.

Again.

There is a ARIN proposal to auction IPv4 space to the highest bidder. Although the proposal is not totally insane, I find it much more interesting to think about a future world, past the depletion of IPv4 address space.

fade in, a alley, with our character walking in the center, entering and exiting zones of light from old-style lamp posts.

suddenly a call from a darken door frame

(dealer) hey you, wanna buy a nice IPv4 address?
(hero) what?
(dealer) yeah, fresh stuff, right of the DHCP server. Long lease time, guarantee.
(hero) no thanks
(dealer) what's the matter, already had your fix today? Too much porntube already?
(hero) no, I just don't need it.
(dealer) oh, I see, rich mommy gave you a nice block of /48 IPv6 for christmas. You rich bastards are all the same.

My apologies to all of those who do screen play writing for a living.

Security report for RedHat 4

Excellent report about the Risk to users of the RedHat Enterprise Linux 4.

This is not an endorsement of RedHat by itself. I cannot do that due to the lousy commercial department. But I wish other vendors where so up-front with this information.

Oh, and in case you where wondering, I'm a happy CentOS user.

February 22, 2008

MS-OSS: yeah, sure

I've commented this in a couple of blogs, so I though I just write it here once.

The Microsoft announcement about opening up some of their stuff is an interesting read, but nothing else. The licensing terms are incompatible with the GPL (both version 2 and 3), so this is more a PR stunt than anything real.

Let's keep the eyes on the ball, and ignore the fat lady flashing body parts.

February 19, 2008

Snap

In the past I toyed with the idea of sending HTML pages, including forms, via email, as the basis of a workflow system.

I never did anything with it because the target people all use Outlook and HTML support was always spotty, and with the latest version seems to be even worse.

Today I found out about Snap.

Snap delivers HTML forms for workflow purposes, but using RSS feeds. Your news reader becomes your task inbox. There is a demo available to see this in action.

I must admit that my head is buzzing with places where I really can use this. I see no reason not to do it in lots of places, and if I can get a decent windows-based RSS reader with HTML support (maybe FeedDemon, I'll have to check it out), then this has a lot of potential.

Also I can see other tools adopting this really fast. A "actions" feed for Trac tickets? Or Bugzilla bugs? Your personal todo manager?

Possibilities...

February 17, 2008

iPod Touch and NewsGator Mobile

So the wife bought a iPod Touch a couple of days ago, and I helped her set it up and make it play nice with the Vista laptop she uses.

I tried the interface and it really is very cool.

But it wasn't until last night that it really hit me how good it is.

I was playing around with this and I remembered that NetNewsWire syncs with NewsGator and that they have a online mobile interface. So I though lets try this and see how it goes.

I was able to access http://m.newsgator.com/ without problems, and after checking my password, I was able to login just fine.

The first impression was not good. I got a blank page, without any information on what to do next.

It turns out that you have to enable the list of feeds you want to see on the mobile edition in the main site. I think this is great because I can tailor the feeds I want to read on the mobile site, but a single text message saying "You haven't selected any feeds for this device. Use the main web interface to select the feeds you want to read here" or something to that effect would be most welcome for first time users.

So after a quick trip to the web interface and setting all feeds to show on the mobile interface, I was back and with my unread items nice and tidy.

A second pet-peave: I keep my groups ordered manually on NetNewsWire, but the order of the groups is not synced to NewsGator.

I spend the most part of an hour going through my feeds, reading some entries, and switching between portrait and landscape modes, just enjoying the experience.

All I can say is this: its the best experience I have had with an online portable device.

I won't buy one. Its not the correct iPod for me. If I buy a new iPod it will be the Classic model for sure.

But I'll definitively buy the 3G iPhone when that shows up.

Even with Celso constantly teasing me, I shall resist the temptation, and wait for the 3G version.

February 16, 2008

Software patents

An interesting article about software patents by Philip Greenspun.

Two quotes stand out to me. The opening shot (which you get to read it yourself), and further down this one:

I was asked "Why didn't you patent this yourself, if you developed it first?" My reply was "It only took me an hour to build; if I went down to the patent office after every hour of programming, I wouldn't get very much done."

I can relate to this. At least once, I coded something at some job that 10 years later was covered by some stupid software patent.

February 15, 2008

Smoking

In Private equity firm pours $100 million into SCO money pit:

"We saw a tremendous investment opportunity in SCO and its vast range of products and services, including many new innovations ready or soon to be ready to be released into the marketplace," Norris said in a statement.

I want a big pile of the same stuff SNCP is smoking.

February 13, 2008

Live Yahoo!

Ok, Live Yahoo! is awesome.

It took me literally 3 clicks to have a multi-user video conference going.

Pretty please, with sugar on top?

I've been using ecto since I started writting this mis-mash of notes. It's good enough and doesn't get in the way. I know where everything is and I don't get lost.

With all the publicity about MarsEdit, I downloaded the latest version and tried it out.

Although its much more polished than Ecto2, I didn't find any compeling reasons to re-learn a new tool. I loved the Cmd-Shift-D to post (I use that with Mail.app) but that's about it.

The MarsEdit author has been writing about the upcoming WYSIWYG editor, but given that I write all my post in Markdown, I really don't care that much.

But there is a feature that would make me switch in a heartbeat.

After I write a article, I go through it and link certain phrases or words. But some words are usually linked to the same place. For example, Rui, Nuno and pfig, are always linked to http://the.taoofmac.com/, http://nunonunes.org/, and http://pfig.livejournal.com/, respectively. The same treatment would be used for phrases like for example Daring Fireball, or I'm felling lucky.

So if the application learned about this associations and presented me with the option to link, it would save me a lot of time. One thing I would need is an option to link just the first occurrence of a word, but apart from that policy-thingie, it would be lovely.

I wonder if the ecto 3 plugin system allows for this kind of thing...

WordPress, king of the community

I can only say that with all these security problems WordPress is having (releases 2.3.3, 2.3.2, and 2.3.1), it truly is the best choice to build a community site: everybody will be able to edit your pages.

Flash vs iPhone

This whole "Flash on the iPhone eminent"-rumors is weird.

Given that Flash now supports H.264 as a video codec, maybe iPhone supporting Flash is just that: Apple will support Flash video if the codec used is H.264.

If YouTube starts encoding the videos as H264 (maybe as an option at first given that Flash with H.264 support is probably still in the single digits market share), then this makes total sense for Apple to support. Even the original rumor article mentions that YouTube had to convert some of their catalog to H.264 to support Apple TV and the iPhone.

Anyway, back to work.

February 08, 2008

Stallman on copyright

Richard Stallman wrote an article entitled "Freedom - or Copyright". Its an interesting read.

Two paragraphs stand out to me:

When computer networks provide an easy anonymous method for sending someone a small amount of money, without a credit card, it will be easy to set up a much better system to support the arts. When you view a work, there will be a button you can press saying “Click here to send the artist one dollar”. Wouldn't you press it, at least once a week?

This is fine and logical but what should the arts do until the computer networks offer such methods? Asking the people who stand most to loose to trust the users to do the right thing? Do we really believe it will happen?

To make copyright fit the network age, we should legalize the noncommercial copying and sharing of all published works, and prohibit DRM. But until we win this battle, you must protect yourself: don't buy any products with DRM unless you personally have the means to break the DRM and make copies.

(emphasis mine)

So, for example, given that we can bypass Apple FairPlay, both in legal (burn and rip) and illegal ways, its ok to buy their stuff? I was surprised by the "unless" twist on the last phrase, really. I did not expect this from Stallman. I didn't expect to agree with him at all, but on this last phrase, we are soul mates.

The first fix is free

Google launched Google Apps Team Edition.

In a nutshell, users of an organization can setup a Team, with all the goodies of Google Apps for Domains, using only a valid email address. no need to bother the IT administrator...

Smart, very smart. Get the users addicted, and have them push for the stuff internally, a "upgrade" to the bussiness package (watch the video at the Google Talkabout blog, and pay close attention to the last 30", starting at 1:54").

My concern is the Google Talk integration. You can use the Google Talk server with those email addresses, but you'll loose XMPP federation, because the required SRV records will not point to the Google Talk servers.

Also, I wonder what happens if a @example.com user starts using this. Now that one user @example.com is using the GTalk network, will internal routing of the GTalk network assume that the entire domain is local or this per address? So if a user with an email address @simplicidade.org uses this, will it sink all connectivity between my domain and the Google Talk network?

This needs to be checked further...

(thanks to fabieuse for pointing this out in the comments, even if I didn't get all the implications at first)

February 07, 2008

Software Update is dumb

I'm updating two Macs via Software Update in the same network and they share four downloads between them.

Why do they need to download the new versions from Apple? I mean, they could just find each other and swap.

This isn't rocket science, at least not in a system that has Bonjour built in.

And its not as this would be terrible security-wyse: all the updates are signed by Apple and Software Update will refuse to install them if the signature doesn't check.

Oh well, maybe in the next cat.

February 04, 2008

Microsoft + Yahoo

A semi-random sample of anagrams of "Microsoft Yahoo":

  • Tory fiasco homo;
  • Mafioso Torch Yo;
  • Chaos Fit Room Yo;
  • Fiasco Hot Roomy;
  • Yahoo For Sitcom;
  • Fiasco Oh My Root;
  • Chaos Firm Too Yo.

February 03, 2008

Android

A nice article by Bill de hÓra about Android and other Telco/Webco musings. My favorite quote:

If you had to pick a company that "gets all this", it's Amazon - which is why Redmonk James is right - someone should buy them before they turn into the 21st Century's answer to General Electric.

I don't like to post links without my personal comment, but I'll make and exception for this one.

Y$

44.6B is a lot of cash, and they didn't even need to go to the bank. That's nice.

Google is the big winner here, me thinks. Yahoo proves that they could not solve their problems, and Microsoft admits that they cannot leverage the brains they have on the payroll (I believe Microsoft to be second best in terms of brain-per-sq-feet, only to be bested by IBM) to produce a viable product in the search wars.

The value proposed is too big not to provoke something to happen: the deal is most likely to go forward, and only a Yahoo + Google scenario (and we can imagine how happy that would make the Y! board) could save Yahoo from falling into Microsoft hands.

The next months are interesting because Microsoft will unveil his plans of assimilation to the horde of Yahoo workers, and if those plans include migrations to Microsoft technology (remember the HotMail purchase? We can only hope that Microsoft did learn a lesson there), then the natives will be restless. Probably a mass defection to Google, and other smaller companies, and a rush of new startups.

I personally don't have big concerns about this merger. There are a lot of tools that I use that belong to Yahoo (Flickr is probably the most important, other smaller software tools like Firebug, YSlow, the standard CSS layouts, also made the list), but I think they will survive just fine.

In terms of the Instant Messaging world, two giants that where already sleeping together are getting married. I do feel sorry for this, because although I don't expect to see an official XMPP gateway from MSN, I was expecting to see one from Yahoo in a year or so. I do think that AOL will probably align with the XMPP federation now. They really don't have nothing to loose now.

Next episode: the Yahoo board response.

Update: a lot of people are writing about this deal, as you could expect. My favorite article so far is from John Siracusa, at Ars.Technica.

Update 2: tied for first place, Fake Steve Jobs take on Microsoft/Yahoo deal.

January 05, 2008

Regarding reverse proxys

Right now I use both Perlbal and Lighttpd as reverse proxy.

Lighttpd does a lot more than reverse proxy, and I also use it as a web-server for static content and mod_secdownload for certain content. But the current stable 1.4.x version is not that good reverse proxy. For example, it does not keep persistent connections to back-end servers, and sometimes he thinks all my application servers are dead when they are in perfect health.

Perlbal is a much much better reverse proxy. It keeps persistent connections up to back-end servers, and before using them for client requests, it makes sure the server is really ready to answer requests. It also caches file uploads to disk before allocating a back-end server to process the request. All this features keep the back-ends pretty busy and without stalls. But as a web server for static content, its just not as good as Lighttpd.

I've been working with three upgrade paths.

The first is use Perlbal for reverse proxy for the application servers and remap all static content to a different site. This also makes sense because if you move your static content to a CDN, your site will load a lot faster.

The second is using Lighttpd 1.5.x. The last time I tested it, it was still a bit unstable with my setup, so its in the back-burner for now.

The third is to use Varnish. Its wicked fast, extremely configurable, and it does caching. But it takes a bit to get into, so its a bigger time investment than the other two.

Right now, I think that Varnish would be the best bet of them all, but I don't have the time right now to get up to speed with it. So I'm going to use the first option, using Lighttpd 1.4.x to power my CDN server, just because I need modsecdownload.

January 04, 2008

Browser-based living

So, without a Mac at home (I only have a borrowed Mac mini now, until I decide what to do with my broken Macbook Pro), I only have a Windows Laptop with a browser.

This means that all the tasks I took for granted, can only be performed now if I have a browser interface to them.

My mail does not, although I almost have Outlook configured to use my IMAP account. My RSS feeds are also out, never used the NetNewsWire synchronization to Newsgator, but I'm now back to writing a bit using Movable Type web interface.

Living in a browser really sucks, compared to all my desktop tools. Really. I don't understand how people prefer Web-based apps to real desktop ones. Granted, the synchronization problem is non-existing if you only use Web apps, but still, it feels a lousy trade-off.

Now back to bed and my next book.

December 20, 2007

Back to G4

While my Macbook is in the shop, I "borrowed" my sisters Mac Mini G4.

Oh, G4, how much I loathe you... Let me count the ways:

cd ~/src/some_software && time make

Update: for future reference - starting a Catalyst app I'm working on, it takes 17 seconds. Previous Macbook Pro: 2.

December 18, 2007

Fluid

With three quick releases, Fluid has been getting a lot of attention. Given that it is Leopard only, I haven't tried it yet, but looking at the feature list, it doesn't seem to offer much more than Prism, Mozilla Labs version of the same concept (on which Fluid was inspired).

The best update so far was 0.3 adding auto-updates via Sparkle.

My take on Prism and Fluid, is that they don't go far enough. This is just a clever way to run a browser with a customized homepage, in a different process space. Its nice, but not good enough.

To really be helpful, I would suggest a couple of features:

  • Webapps should be able to replace the Menubar with something specific to them, including keyboard shortcuts. Selections of menu items should be forward to the Webapp via Javascript events;
  • Include some sort of offline plugin by default. I would suggest Google Gears just because its the most complete right now;
  • New DOM objects to generate Growl notifications;
  • New DOM objects to access Address Book and Calendar APIs: when a application tries to access those APIs, access would have to be approved.

I also though of including a AppleScript bridge in that list, but I'm not a big user of AppleScript, so I'll leave it out for now.

December 10, 2007

Sheesh

Talk about targeted advertising...

Stoned-1

(via Worse than Failure)

Three letter salute

In RFC: Dropping namespaces:

I still have not heard any good reason why namespaces in the current implementation are actually useful - or what particular case they solve... so I am wondering, are they really useful? I come now to the conclusion that they are not, and for myself (and most likely my work projects) I would have to decide not to go with namespaces, but instead stick with the 3 letter prefixing. Something that I have totally no problem with, as it is nice and easy.

The design of PHP6 has very smart proposals...

(via chromatic)

December 09, 2007

I don't need no stinking branches

A friend of mine was teasing me last week about my recent posts about Git, and wondered why am I using distributed Source Code Management (SCM) system for all my projects, even those where I'm the sole developer. He is not the first and I tend to have the same conversation with all of the ones who ask me about it.

Usually I start by telling them about offline-mode and the fact that I spend a lot of time off-the-net, which ends up being the least important reason.

Then I usually talk about the fact that I get backups for free because I can just push my work to far away servers.

But one thing gets the discussion a couple of degrees hotter: branches.

What I notice in these encounters is that they just don't do use them at all. And the reason is simple. Most of them used CVS and moved on to Subversion. With CVS branches where possible, and with Subversion, branches became easy and cheap. What both of them failed spectacularly at was merging.

There are situations where you branch not to merge "ever" again, like the maintenance or stable or stabilization branch approach. Those who look through a Subversion timeline of a project that uses maintenance branches will get accustomed to see commits in trunk with the cute message "Back-ported rNUMBER to trunk". What that means is that some changes in the maintenance branch where applied (not merged) to the trunk.

So now you have two commits exactly the same, one in the maintenance branch and one in the trunk, when you should have just one.

With care, you can use branches for real work, and merge to the trunk at the end. But in Subversion for example, you have to tell them what revisions you want to merge. So the branch is not an entity that you can manipulate. It's not a container. You, the developer, have to be the one that figures out what revisions need to be merged. And if you code a little bit more and want to merge again, you have to tell him to merge only the new revisions. And one side-effect of this kind of merge is that your beautiful history of the branch, explaining why things where done the way they where, is lost because the merge ends up as single huge commit.

You can play games with tags to help you. You tag the root of the branch with branch-root. When you need to merge, you just merge the differences between branch-root and branch. And then you'll tag the branch again with branch-last-merge-DATE, so that the next time you want to merge, you'll use the most recent branch-last-merge tag to compare the branch with. This works, I was doing this with CVS 5 years ago, but its painful.

So, with this lousy system of merge tracking, its no wonder that explaining the use of a different branch for each feature you develop and merge them into a staging branch for testing and then if all goes well merge that into the mainline branch for deployment, you get these eyes that say "Are you crazy??".

I'm not crazy, I just moved on. I refuse to be abused by inferior systems like CVS and Subversion no matter the following and success they have. Life is just to short.

Systems like Git and other decent distributed SCMs allow me to treat branches as containers of change-sets, containers that I can manipulate as a single entity and tell git-merge branch master repeatedly and have him "do the right thing" every time. It allows me to experiment new features without fear of messing up my repository, and knowing that if all goes well, merging back the changes will be easy. And if not I can always drop the branch.

So, if you decide to try one of these systems, please don't use it as a better Subversion. Make sure to abuse the new power, of branching, of merging, and split your work with topic branches.

The pasture is really greener on the other side of the fence, so hop over and grab a nice chunk of grass.

December 03, 2007

Importing HTML table into numbers?

I'm researching video cameras to buy one for Christmas. One of the requirements is support for iLife, and in particular, iMovie.

So I googled to see if I could find a compatibility list, and sure enough, we have technical article 306171.

The next step was filtering the table for HDD-based cameras. I copied the HTML table, fire up Numbers, and pasted it, and... WTF?? A single column of data? I fired up Excel and sure enough, pasting a HTML table produces a decent Excel worksheet, one that I can then AutoFilter and work with.

So unless I'm missing something obvious (not unheard of), Numbers just ignores the largest source of tabular data available, the Web.

Really smart...

Anybody has a quick AppleScript to import HTML tables?

Update: well, not a AppleScript, but Firefox. If you copy the table in Firefox and paste inside Numbers it will just work! Many many thanks to Jon Prettyman (via comments).

December 02, 2007

Facebook beacon

This last week, as I read through several posts about the Facebook Beacon, the only one word crossed my mind: lemmings.

And I was thinking on the people who own the sites that use the Facebook beacon, because in the end, they are giving their userbase for free to Facebook.

I think I'll just sudo sh -c 'echo 127.0.0.1 facebook.com www.facebook.com >> /etc/hosts'.

Update: a post by the Facebook CEO.

November 20, 2007

Amazon Kindle

I find it amusing that a search for Kindle in Amazon UK doesn't return any relevant results. So much PR, so little return.

Anyway, I'm carbon-oriented when we are talking about books. I prefer the paper-kind, not the electronic version. I subscribed O'Reilly Safari bookshelf for a while, but I stopped using them because of that.

Granted, the experience with Kindle could be better than a browser and a computer screen, the display is much better than the usual 72dpi of a LCD.

But still, I think that, taken everything in account, a paper book is more fun, useful, long-lived and even, if the paper companies get their acts together, more eco-friendly than any electronic alternative. At least I only have to "charge" my book once in his entire lifetime, right?

The thing that I feel lacking from the book business is an indexing service. I own about 100 technical books, on several topics, and I have most of them in shelfs for quick access. I have the capacity of memorizing the book that contains what I'm looking for, its a curse. Sometimes is freakish because I remember the exact chapter number, and the page layout. My memory sort-of works that way.

But I would love to have access to the full text index of the books in digital format. I would buy my books in the usual way, and with it, I could receive some code to download a copy of an inverted tree that I could plug into some software running on my local machine.

This way I would have a personal index of all the books I own.

Maybe Safari bookshelf could sell this, as an added service: the possibility of keeping a list of books I own and allow me to search just those. Not great, but a good start.

Update: Kindle is based on Linux, so Amazon has the source code available for download. Commentary by Robert Love.

Update 2: Another Robert Love post about the Kindle features. The lack of PDF support is disturbing.

File uploads

I like the new web-based upload tool that Flickr is using. I like it so much that I no longer use the Flickr iPhoto plugin. Update: there is a open-source project that matches most if not all the features of the Flickr uploaded: SWFUpload 2007.

One thing I could never understand is why don't browsers have a upload list with a progress bar? I mean, they have all the information they need to do it. Why haven't we seen that? Is there some technical limitation that I'm just not seeing?

November 08, 2007

XMPP and AIM

After the Google/AOL agreement in late 2005, speculation regarding the interoperability between AIM network and GTalk network was rampant.

A screenshot of a new GMail client shows some AIM integration.

Unfortunately, the image shows "Sign out of AIM" which means that they seem to be doing a multi-platform client, and not XMPP federation. That is to say: you can login with your AIM credentials and talk with your AIM friends, inside the GMail interface, but you cannot use your GTalk account to talk to AIM buddies.

Of course, this is just a screenshot someone took somewhere. Their camera could be of the Photoshop brand. I do hope so.

If this is really what's going to happen, then the IM silos are still holding up.

SAPO Services and IM

pfig mentioned the public SAPO APIs and noticed the lack of instant messaging APIs.

I worked at SAPO in the IM department and we created some APIs for the service. In fact you can see them at work in the Webmail service (the presence status of your email recipient is shown, like the green indicator in the Mail.app message list) or even better, look at the SAPO homepage, login in the right-hand side column, and check the tab "Amigos".

The problem is that the vast majority of the information the instant messenger team has is not public, so we need to have that information protected. So some type of authentication is required. I'm hoping that SAPO chooses OAuth...

So yes, you don't have them right now. I expect them to show up in the future.

November 05, 2007

Android

You remember when Google started using the "beta" moniker with several of their sites? It started with the main search engine. And it started the Beta trend that still lives on today.

Today Google started a new trend but forgot to place the same style moniker in the logo: vapor.

You see, the promise of "write once, run anywhere" has been made several times, and it seems that it get shoot down due to politics. Its not that its impossible to do it, its just that it makes companies that are competing with each other commodities, and that makes it hard for them to innovate or standout.

I do wish success to the Open Handset Alliance, if not for anything else, because I think Apple needs competition to the iPhone, to make it even better.

We'll have to wait until the 12th to see the SDK, but the first thing I'll look for is a test suite that I can run on my "new" Android-compatible handset to see if he really is compatible. The way I look at it, if this standard environment doesn't have a full open and available test suite that the devices are required to pass before having permission to be called Android-compatible, then this is nothing more than a joke.

November 01, 2007

ODF

I wanted to write something about this but I didn't know what.

Rui did it for me.

Update: some counter arguments.

October 31, 2007

The question

One of the "news" items today is that some Java developers are switching away from Mac OS X because Mac OS X 10.5 didn't have the latest Java 1.6, either by default in the system or as a download.

The question I would like to ask those developers is: why didn't they switched when Mac OS X 10.4 came out? It also didn't have the latest (at the time) Java 1.5 available and it took some time to appear, and when it did, it was a port by Apple of the 1.5 update 2.

Historically, Java always lagged behind on the Mac platform because it was always ported by Apple. Engineering resources need to be placed where they will do the most good, and for Apple clearly Java was not as high priority as other things.

I think all people would love to see their favorite language supported right of the start. I for one would love to see the dynamic bridge between Cocoa and Perl supported by Apple in the same official way as Python and Ruby have, but Perl doesn't have a marketing message as strong as those two.

My advise would be to relax, take a breath, and wait.

I suppose you could always try and compile from the source, right?

October 27, 2007

Odd

Every time I see people mentioning cloning their Macs (the most recently post about it was by Gruber I find the hours they choose a bit odd.

Like Gruber, most of the people clone during the night. What I find odd about that is that during the night your Mac should be turned off.

I prefer to do my cloning during my lunch break. The laptop is usually in my place of work, where I keep my main clone disk (the second is at home), its usually turned on (I'm working right?) and the time it takes to smart update matches the time I take to have lunch and play a bit with the kids.

It feels natural to use that off-period during the day than the night, but maybe I'm just odd that way.

October 26, 2007

Now you know why I want multiple displays

It's to have a excuse to have multiple GPUs. And why would I want that?

Elcomsoft's new password cracker attacks the NTLM hashing that Windows uses with a brute force method. The company claims that its GPU-powered attack speeds up the time it takes to crack a Vista password from two months to a little over three days.

smiles.

Really, 15 years ago I was at university when they deployed a 16 PowerPC CPU transputer. Right now, my graphics card is more powerful than that. Crazy.

Leopard Fever

For those of you who have Leopard Fever and will install 10.5.0 in the Mac that you use for work (big pause here so that you can digest all the hidden tigers in this last sentence), be smart and at least use some protection.

Some links that might help:

  • jwz on backups: a basic dual clone setup, the same setup I use for disaster recovery;
  • SuperDuper!: I use this for my clones, not rsync;
  • Carbon Copy Cloner: I used this before SuperDuper!. Recently upgraded, worth a look. I prefer SuperDuper! because the UI is simpler.

The basic point is: do not upgrade to Tiger without a tested full bootable clone of your current hard-drive.

By the way, cloning is not backing up. Backing up means that I should be able to retrieve deleted and previous versions of any file. Cloning does not allows me to do that. Think of cloning as disaster recovery only. You'll quickly be up and running again, but it will not save you from accidently deleting some files you worked on yesterday.

For backups, right now, I can't really recommend anything. I don't like any of the solutions out there. At first I would recommend Retrospect but in recent times it has been lagging (there still is no Universal version for example). Also I don't trust Apple's Backup.app, not yet.

With Leopard, you'll get Time Machine which has some interesting features (mainly the frequency of backups it allows), but do not forget that this is the first release of Time Machine, and if you have one piece of software in your laptop that must always work, its your backup solution.

So take Time Machine with a grain of salt. Do not depend solely on it for your backups.

The best thing about Time Machine is that it forced Apple to create a infrastructure inside Mac OS X that will allow backup applications to do incremental backups with ease, speed and therefore with greater frequency.

I do hope to see some big names in the backup software field to use the same fs_events magic that Time Machine uses. EMC insignia is talking about a new version of Retrospect for '08, lets wait to see what will come of that.

If you really want to take your data seriously, I would recommend you spend $10 and buy this book: Take Control of Mac OS X Backups (updated September 27, to include Leopard stuff).

September 26, 2007

Amazon Music Store

Amazon unveiled a beta version of their new music store.

The specs look good:

  • no DRM;
  • decent bit-rate;
  • MP3 format;
  • simple Mac-based download app that places your songs into iTunes for automatic iPod synchronization.

So I'm happy. We finally have competition in the online music store market.

From Apple point-of-view, I don't think this will be a big loss: their profits come from the iPod, iTMS itself is not profitable enough to justify the cost of operations. And this new store works perfectly with the iPod. Besides, now they probably get a better deal with some of the record companies...

Yeah sure. :)

What I really think this is, is a nice finger from the record companies to Apple. I believe they are not very happy with Apple dominance of the online music market, and the best way to control it again, is to build up some competition. And given that they themselves don't have the brain to do it (all their previous attempts failed so far), this time they went all in, full guns blazing.

I mean, that is what monopolies do, right? They turn adversaries that need your products against one another. It worked for Microsoft in the past, why will it not work for record companies?

Another thing I'm curious about is which record companies are in there? Which majors? I mean, if there are some major record companies in the new Amazon store, then the question is: why has Apple got a worse deal with their music?

Two of the possible answers (the two I find most interesting) are:

  • Apple has the same deal as Amazon. Its Apple choice to inflate the prices to the values that we see today. Also its Apple choice to put DRM in the music files;
  • Apple does not have the same deal, and this is just some big power struggle.

There where some court documents that came out that showed Apple cost per song to be around $.70. Also, Apple has publicly said that they are against DRM, something that record companies never did say. So the first one is unlikely but not impossible.

The second one goes hand-in-hand with my "lets take back the control"-theory.

The last point I find interesting is that the store seems to be open to all countries. I mean I was able to buy one music from Portugal, and the only thing I needed was a valid pair state/zip code (use CA 95014, from Apple main campus address). And we all know the pains Apple went through to have a store in each country. Again: was that a fake problem or again record companies are making it easy for Amazon?

Update: Gruber got this part wrong. I was able to buy music from the Amazon store and my credit card has a portuguese address. Their check, based on state/zip code pair, is a joke.

Only time will tell.

September 17, 2007

Tips

Pedro took the time to write about latest Apple news. Worth a read.

I share most of his points of view:

  • ring tones: it's a big business based on idiotic consumers, move on. I personally hate ring tones;
  • iPod Touch activation: the iTMS account is required to purchase stuff, not to activate the iPod as far as I could read, but I'll wait until I see some Linux geek reporting his life with the iPod Touch.
  • lock down of iPod database: this is something that happens on a regular basis as far as I remember. Anyway, it's a non-issue, because the hash-based protection is very week and already broken. It is a pity that Apple is losing time writing this stuff though;
  • video-out cables: this sucks, of course. I was wondering why would Apple would do such a thing, and selling more cables doesn't sound right.

Regarding the last point, about locking AV cables: my bet is HDCP. Apple is getting ready to have HD content and one part of the equation to please greedy content owners is probably having HDCP support all the way.

So they need some sort of hardware lock to make sure only approved cables can carry the digital signal from your iPod to a HD TV set.

CSS Play

I follow the CSS Play site in a low-priority mode. I don't see all the articles but some get my attention.

One of the last ones is awesome: a cops and robbers game, entirely in CSS.

I admin that I don't understand the mind of a person that takes the time to build this :).

Hours of fun

I love getting this things on a Monday, just makes the whole day a lot easier.

September 05, 2007

In bed with birds

It seems that Oracle buying InnoDB left MySQL uncomfortable enough about their dependency on the only transactional engine they had.

The new MySQL6 alpha is pretty much a Falcon-lovers buffet.

There is a lot of stuff to read about the new engine, but I will wait for MySQL Performance take on this.

September 04, 2007

The E-word

Last week I had a discussion in the local perl mongers mailing list about threads in Ruby vs Perl, and parallelism in general.

My view is that it's the programmer responsibility to start using all those core coming our way, and that the Java/Ruby-style of threads, with a share-everything model, are the wrong way of doing it.

I a very big fan of shared-nothing by default when it comes to threads. From all the things that are wrong about Perl (and believe me there are many), that is the one they got right, and I can only hope that Perl6 takes the same approach.

The language that comes closer to what I think is the nirvana of the parallelism models is Erlang. With it you get three concepts:

  • shared nothing approach with lightweight threads (processes in Erlang lingo): your program is modeled as a set of cooperating processes, each one performing some specific task;
  • fast message passing interface: processes communicate by passing messages between them;
  • location independence: each process has a PID, and you can send messages to it. But you don't need to know where the process is, he can be in a server across the ocean.

This set of concepts allows you to build reliable applications, where memory corruption and simultaneous access to data is limited, therefore causing less bugs.

The problem is that programming in Erlang, for someone like me who has been programming in Basic, Assembler, Pascal, C, Perl, and others of the same type, for 25 years now, it requires a big change in mentality, it requires a different brain.

I'l be attending a Erlang course in the next couple of months, courtesy of SAPO, and I hope to change that.

In the meantime, check out Tim Bray post about multiple cores, concurrency and Erlang where I stole the title for this one.

Flickr web upload widget

The new Fickr web uploading form is very very nice.

The interesting part for me is the capability of selecting multiple files with a single "open file" dialog box. The rest is pretty standard, although the look and feel of Flickr is very nice.

Now to write something like that as a jQuery plugin...

August 31, 2007

Gentlemen, start your Bittorrent clients

Quote of the week:

Sometimes I think God put video content guys on the planet to make the music guys look progressive and visionary.

nuf said.

August 30, 2007

Maildir curiosity

/me chuckles

By some strange measure (basically looking at the table of supported mailbox formats across open source IMAP servers, mail clients, and local delivery agents available here), maildir is more popular than the legendary mbox.

But I went to that page to checkout the new dbox format. I'm intrigued.

August 23, 2007

KDE and Git

KDE is looking at Git, at least in a theoretical "how would we structure this large project in Git"-kind of way.

There was a lengthy response from Linus, with a couple of gems inside:

I certainly agree that almost any project will want a "central" repository in the sense that you want to have one canonical default source base that people think of as the "primary" source base.

But that should not be a technical distinction, it should be a social one, if you see what I mean. The reason? Quite often, certain groups would know that there is a primary archive, but for various reasons would want to ignore that knowledge.

Right on. Git can model SVN centralized model if that is what makes sense in your organization, and you can still have all the benefits of Git.

If you are thinking if Git (or Mercurial even) is for you, and you are a SVN user, check the Git for SVN users document.

August 20, 2007

XMPP plumbing

This has been on my mind for quite some time, but during an email reply to Adam Nemeth today, I found myself putting it into words I like.

Jabber will not succeed outside geekdom by selling the IM part of XMPP. That's my gloom point of view.

I think that XMPP can be pushed to the clients as an enabler, as infrastructure, on top of which you build several services, in particular notification, but in general a always-on-presence, that all the usual services (email, blogs, social networking sites) can leverage to make their own services better.

In short, XMPP is for me the pipe to the desktop that all the other services need to improve their services:

  • I send an email, important to me, and I add an header saying to my server that I want a immediate notification of a response. My email server uses that to trigger a XMPP pub/sub notification telling me that a reply is ready in my inbox;
  • Someone posts a comment on my blog, I'm notified;
  • Someone adds me as a buddy on some social site, I get a notification;
  • Someone invites me to a meeting, and the meeting request can travel through XMPP, check my own free time (using a negative presence agent that I have running connected to my calendars), and reply back;
  • Google indexes a page that mentions my blog, I get a notification.

After you have basic XMPP plumbing in your desktop, adding IM a simple add-on to increase the value of the plumbing.

So my view, is: sell XMPP as a service to other services, IM will flow naturally from that.

So far I had modest success selling this, so I'm not promising it will be easy.

August 18, 2007

What's wrong with current Wikis

Clarification: it seems, reading the comments, that people think that I'm talking about Wikipedia and their choices. I'm not. I'm using Wikipedia as an example as how this system could work and the benefits. Now back to our regular program....


I've always had a love/hate relationship with Wikis.

On one hand, I like the perceived easy updating with the direct access provided by those edit links on all the pages. But on the other hand, using a browser to drive the whole experience is a limiting factor.

My hate pushed me to think about writing Kiwi, something I talked about years ago. Kiwi is not a Wiki would be the defining phrase of the project.

The current web-based wikis fell very limited mostly due to the use of a browser as the main editing tool. There are other alternatives to keep a Wiki and collaborate with others.

One of them is distributed version control systems. Lets play a game, and design Wikipedia on top of one of the current crop of such systems. For purposes of demonstration, I'll use git, but you could also choose mercurial, darcs, monotone, even svk if you are masochist enough.

In a git-powered-Wikipedia-world, the main Wikipedia site would host a branch, that eventually is converted in the site wikipedia.org you all know and love. And you would still see those nice edit links all over. But when you click on them, and edit a page, you would be committing your changes to the repository. From the perspective of the user, nothing has changed.

But now, anybody can pull that repository, edit to their hearts content and then push the results back. Wikipedia foundation would probably prefer to pull from registered repositories (everybody could register a repository) and they would probably only accept the changes if they don't conflict, but that is just mechanics.

But now, all the Wikipedia is available on your local disk, and there is where the fun starts.

You no longer have to use a web-based editor, or some hack to edit text-areas in a remote editor. You can now see lots of Wiki editors appear. They will be able to give you (if that is what you want) WYSIWYG editing. They will give you a local index that you can search. Even offline, you can search, read, edit every page. And then push back your results.

Even if you do like to edit a wiki in a web-based editor, you could still have a local application/webserver that provides that edit environment. Imagine a Backpack-like interface (the new one, just released is much much better) to your own personal, local wiki. But now, you can share it easily with others.

You can also start using GPG or other public-key cryptography system to create a trust level of edits. Unsigned edits could still be accepted (although I have zero problems with mandatory GPG signing of wiki edits: privacy and anonymity are two different things, and while the first must be a right, the second one should not), but now you can look at a author and look at his web of trust. Wikipedia key signing parties would flourish.

If Wikipedia starts getting to big to download it all (probably already is), you would start to see subsets of Wikipedia, as intermediaries to the big one. Anybody could create their own subset, maybe focused on a topic, or area of knowledge, and you could just pull from that one. But all the changes you push to those middle-mans would flow back to the top. And given the nature of most distributes version control systems, your changes are in fact cryptographically signed, so they can't be changed by nobody without being noticed.

Another outcome of the switch to such a system is that you no longer have to push back all your changes. You could grow a departmental wiki side-by-side with Wikipedia. In fact, you could create a application that pulls from several wikis, including personal, work, project you follow, and see them integrated in a single application. In the same way you today subscribe a RSS feed, you could now subscribe to a wiki, and have all that shared knowledge available at your fingertips. If you know VoodooPad, imagine having your pads side-by-side with public wikis. (On a side-note, in my original design of Kiwi, each page is a Kiwi, each Wiki is a Kiwi tree, and the set of Wiki trees you subscribe to is called an Orchard. Page templates are called seeds. Talk about an analogy going off tracks...).

The mentality that is preventing us to move forward in a collaborative world, is that people are creating a very strong link between the concepts of collaboration and web-based system, like you can't have a collaborative system without the second one. That is wrong on so many levels. The web should be just one of the mechanism in which you share the knowledge, but starting the design of a wiki based on the assumption that the only interface will be a web browser severely limits his potential.

Its time to stop building version control systems on top of SQL databases, and move to the real thing. Its time to let the content of Wikis be free, easily available, to be used in ways not restricted by the web environment.

Angie

ejabberd is getting better and better every day. You can look over the developments in the last 6 months following the Process One blog:

The last one is the one. This will make it trivial (for those fortunate enough to be using a publish-subscribe-type system already as one of the tools in their business) to publish via XMPP business-side events, like blog posts, comments, uploaded photos, new classified ads in your area, job offers, and much much more.

With that out of the way, maybe we could try and put a XMPP client inside our browsers, switch to a real push-based network, and stop wasting our time with "AJAX-poll-like-crazy" or "Comet-half-baked-everything-is-http" solutions to asynchronous event notification in a large scale.

DBI and Async loops

Most of my time, I program inside async event loops like Danga::Socket or POE.

Accessing DBI inside those loops is not a straight forward thing. Most solutions involve forking worker threads and using pipes to communicate between my script and those workers. There are a couple of components for POE that do most of the work out of the box, like POE::Component::EasyDBI, but still, it feels a lot like an hack.

For Danga::Socket loops, I've been working with two "simple" solutions:

  • split the work between sync and async tasks, using disk-based storage to move work from one side to the other;
  • use HTTP-based REST web services.

There are two more solutions that might work now. The first is the amazing DBD::Gofer. I haven't played with it yet (look over the Tim Bunce presentation at CPAN to get an overview) but it simplifies the client side of things that it might just be possible to tweak it into a async DBD driver. The DBI API would have to be slashed a bit, I don't think it has a async version.

Gofer is nice, but will still require a HTTP server for the Gofer servers. And if I have a HTTP server, I might prefer to have a higher level API that can also group some queries in a single call, some of them could even involve a transaction that Gofer does not support.

The other solution is to use Gearman. Its fast, and seems to have all the niceties for scale (multiple workers, multiple managers). But it is not reliable, at least not until the client decides to make it so with code.

All in all, I think both solutions are good, and you can even use Gofer for some things, and Gearman for others. Heck, you can even use Gearman as back-end for Gofer.

For now, I think I'll try Gearman, it seems less work, and I'm extremely lazy. But I'll get back to Gofer soon. I would love to see a asyncronous DBI API, and DBD::Gofer might just be the door.

August 15, 2007

Simplification

Imagine this:

  1. you have a set of standards that have grown complex over time;
  2. people all around are using variations of the theme, simpler and effective;
  3. you decide that you should also simplify things on your side.
  4. what do you do?

Of course! You set up six committees to simplify your protocols. Because we all know that committees and simplification come hand-in-hand, right?

OMFG...

I'm sick, I could not stop giggling with this.

Fortunately I'm not alone.

August 09, 2007

iGTD stuff

I'm enjoying my iGTD experience. I think there is a lot of good stuff in there, and with some MailActOn stuff and some mail rules, I've been able to use very effectively as a Inbox for everything.

I still miss a easy way to track external tickets, but maybe we can work around that with the Pro version and some plugins.

Update: Ok, found it! Just select all the projects... Stupid me. Now on to step 3 of my list: I have this list of tasks for a set of projects, I want to filter per context.

One thing that I don't like at all is the query capabilities. I miss a view that combines Project and Contexts.

I would like to see something like this:

  1. select one or more projects to focus on (usually one);
  2. check some box to include sub-projects also;
  3. select one context;
  4. apply.

This would give me all the actionable tasks that I have in those projects in that context. So far, I haven't found a way to do it with iGTD.

See this screenshot: if I have 12 tasks in that project, including sub-projects, I would expect that, if I select that project, I would see the 12 tasks. But no, I only get to see the ones in that project exactly, not a single one from the kids. That is the correct behavior if I expand the project to show sub-projects (iGTD even updates the count to 2 in that situation, correctly). Only the task list does not adjust properly for collapsed projects.

Fortunately.... The data is inside a SQLite database... hmmms... :)

HTML5, Micro-formats, and the progress tag

Just now, in the uf mailing list, there was a message by Alexandre Van de Sande about a Developer Works article about HTML5.

It seems that HTML5 has a set of semantic tags with lot of potential, and some of them cross into (until now) micro-format territory.

I skimmed through the Developer Works article and one particular element caught my attention: <progress />.

From the article:

The progress element represents the state of an ongoing process, like the progress bar in a graphical user interface (GUI) application. For instance, it can show you what percentage of a file is downloaded or how far you are into a movie. This progress control says that a download is 33% complete:

 <p>Downloaded: 
    <progress value="1534602" max="4603807">33%</progress>
 </p>

The value attribute shows the current state of the operation. The max attribute shows the total amount toward which the progress is moving. Here the element indicates that 1,534,602 bytes out of a total 4,603,807 bytes have been downloaded.

You can display indefinite progress bars by omitting the max attribute.

You should use the JavaScript language to dynamically update the progress bar as the operation continues. Statically, this element isn't very interesting.

First, apart of styling-control, I don't see why dont browsers gives us a standard file upload dialog (probably modal for the tab), stating which file I'm currently uploading, the percentage, and the speed, all data that the browser has access to. Maybe there is a Firefox Plugin, maybe.

Second, this is a good tag, but the last part, about dynamically update the progress bar with Javascript, I wonder how exactly would it work: will it require the current system of server-side tracking of uploads and AJAX pooling, or will the browser itself generate Javascript events with the progress?

I've got to find time to read the about HTML5 and the WHATWG.

August 03, 2007

Let see this stick...

First of all, if you like the music you are listening to right now, that you downloaded from somewhere, and if you have no plans on paying for it, you should be ashamed.

I would like to see this stick though:

Tracking down suspected file-sharers may soon become more difficult throughout the EU. In an advisory opinion released shortly after the Offenburg decision, an advocate general for the European Court of Justice ruled that ISPs are not required to disclose subscriber information in civil infringement cases.

via Ars.Technica.

August 01, 2007

Love / Hate relationship with GTD

I've read the book, adjusted some of the things mentioned to fit me and my personal style, but I've always fallen short of nirvana.

My "inbox" is very distributed. I have to check several ticketing systems for several projects I participate, on top of all the things that arrive via email.

I'm also very command line oriented, and I still write a lot of code, sprinkled with TODOs and FIXMEs.

What I wanted is a tool that collects all that, with my help, and keeps me up-to-date. And a Pony, it seems.

So far all the this is not available. All the GTD helper applications (current favorite is iGTD) that I've tried are:

  • single user: no easy way to delegate a task in a structured way, and receive updates on it;
  • no semi-automatic external inputs: if we had some sort of plugin system, iGTD could be extended to watch specific tickets on specific ticketing systems, as my own tasks, and allow basic interaction (update, close);
  • task dependencies: iGTD sort-of has this, but doesn't track dependencies across multiple contexts.

The first one could be solved with a XML representation that is sent via email. A mail rule on the receiving side would integrate it in the other person GTD app, probably placed in the inbox for acceptance / rejection, with a checkbox "send updates to the sender".

If the email configured for a project is a mailing list, several people in the project could be in the loop.

The second one is very complex because there are several ticketing systems out there. In the same way that Blogging APIs are more or less converging to two or three standards, it would be great if a simple REST API could be developed that would allow integration with desktop apps.

In the meantime, GTD apps could allow external plugins to integrate with those systems.


Right now, I'm giving iGTD a try. Previously I was using todo.txt but it was not enough for some of my needs, like hierarchic projects and tasks dependencies.

I have to take tickets from external systems and place them in my personal iGTD, but that is only a F6 away, for now.

Lets see if I survive a week with this...

Refreshing views

I like this article. Competition rules.

Now start flaming away, I know YOU want it... Hmms... I need a badge, "Flames accepted" or something, there is a badge generator somewhere...

July 26, 2007

Chair dance

In a Ars.Technica article:

Portugal's meeting was even more interesting. In what can only be described as a comedic farce, representatives from Microsoft attempted to argue that Sun Microsystems, the creators and supporters of the competing ODF document standard, could not be given a seat at the conference table because there was a lack of chairs. In the debate, representatives brought up many of the standard criticisms of Office Open XML, such as the infamous "AutoSpaceLikeWord95" tags. Microsoft confirmed that such tags would never be included in a new document, and were only there for backwards compatibility with older applications, and had been added only at the request of organizations such as the US Library of Congress and the British Library. Microsoft was also asked why it couldn't simply extend ODF to include its backwards compatibility needs, and the company representative said that the OASIS group "rejected Microsoft's proposals and expelled/excluded the Microsoft representative because the proposed changes would add backward compatibility to legacy documents."

Emphasis mine. I'm speechless... I mean, I really think that Microsoft people would be smarter than this, right? Not enough chairs?

Update: IBM is offering to bring chairs! Thanks Bob!

July 25, 2007

Californication

There is a episode 1 of Californication floating around, I just finished watching it.

The first four minutes are the kind of thing you want to have lying around to show your best christian friends when you want them to leave. It should most definitively do the trick.

The rest is also very good. Lets see if they can keep it up (literally). David Duchovny really has to work hard in his bed this time.

The number of excellent series coming out of Showtime is impressive: Dexter, Meadowlands, Weeds, Brotherhood in the fall is also looking good. Nice set.

July 23, 2007

Priorities

Over at The Unofficial Apple Weblog:

So what does this mean? Well, once you've got ssh installed on your iPhone and active, you can access your iPhone from a shell on your Mac. You can send and retrieve files using scp or sftp. And you can use the compilation toolchain to build other Unix utils or even your own software. It's just a short matter of time until perl and other command-line utilities are iPhone-ready.

Emphasis mine. At least they got their priorities straight.

July 19, 2007

Man of the world, unite!

Some of my best girl friends are lesbians, but as I told one of them, it would be a terrible waste to let her move to the other side.

:)

In the meantime, lets add Bionic Women to the set of TV series to follow this season.

July 14, 2007

Love porcelain

I just love the porcelain around git, in particular cogito. They have great error messages:

cg-commit: unable to revert the original patch;
the original patch is available in /tmp/gitci.tWnPNq/patch.diff,
your edited patch is available in  /tmp/gitci.tWnPNq/patch2.diff,
your log message is in /tmp/gitci.tWnPNq/logmsg.diff,
your working copy is in undefined state now
and the world is about to end in ten minutes, have a nice day

Any software written by Douglas Adams fans is a good software.

July 04, 2007

TV

I bought my TV 1 or two months ago, but I've only been using it in the last 3 weeks or so. I was expecting to connect it to my standard definition TV but I made a big confusion between component video and video by components. Somehow I was expecting to plug the box into a standard s-video...

Anyway, now that I got it connected to an HDMI TV (a Samsung LE32R32B if you must know) and stuffed it with video content, I can tell you a bit about my experience.

I love it.

You can buy or build a much feature-complete PVR with MythTV and others and comparing with a TV, the latter lacks a lot of features. But I've seen my mother and my mother-in-law sitting in front of the TV with the remote in their hands navigating successfully over all my iPhoto albums searching and looking at photos of the kids. Without my help. That in itself is already a big win for me. I probably could have the same thing with MythTV, but not without more effort from me than what I had with this.

I haven't hacked the box yet, I waiting a little bit more to see if a legal patch stick appears so that I don't have to open it. I only want to put the Perian Quicktime components and some sort of plugin that allows me to use network disk drives for storage of video files (I'll probably find something in the plugin category of the AwkwardTV or in the plugins directory).

And that brings us to my only gripe with it: the disk inside is very small.

Usage of my TV

And that is with only the kids videos inside, no content from me and my wife...

So I need to expand the storage and there are two ways: swap the disk inside, or use a NAS.

I've decided to use the second one. And to that end, I also got a Airport Extreme Base Station. You can plug several USB devices into it (printers and USB drives supported) and share them over the network. I had a 500Gb Western Digital Book external drive, I plugged it in to the base station, and I can now see the drive from my Mac and from the wife PC laptop.

The second part is to get the TV to see that device and the video files inside. Let see how the patch stick goes. It if takes more than a couple of weeks, I'll open up the box, enable SSHd, and install some plugins.

Now seriously, iPhone SDK

I'm not a indie Mac developer but I buy a lot of their wares and it has been a major factor making my Mac experience more pleasant than any other previously had.

And as some of them, I was disappointed about them not getting the iPhone SDK they all wanted. It would spur a flurry of applications for sure.

But bottom line: the iPhone is a very restricted platform. Low memory, battery operated, and very different user interaction than your keyboard/mouse combo. Those set of restrictions raise the trust level we must put on applications and their developers before pushing some software out of Apple Downloads site into my phone, a device I like to have always available.

I think that the smart developer will rapidly work around the low memory and the new user interaction. But the battery usage problems are harder. Your applications must be written with low power consumption in mind, in a very big way. I would naively say that minimizing network traffic and CPU intensive work is just the beginning, the are bound to be subtle issues.

So expecting your smart but used to multi-megabte RAM devices, with big disks and lot of power to develop power-saving-oriented applications without help is a bit to much.

On the other hand, this is the place I can see Apple giving them something very cool in a future. I could tell you how good and fun XRay is, but then I would have to kill you. I will say that it is an amazing piece of GUI on top of DTrace stuff, much much better than I was expecting.

The tool I see that the iPhone SDK must have to be a real SDK is just that: a XRay for power consumption. Developers need, more than frameworks and guidelines about UI design, tools to check power consumption of their apps. And I would expect that sort of tool to take some time to develop.

Bottom line, I really would like to see a iPhone SDK, but I don't mind waiting a bit to make sure that it comes with the tools that help developers not break my phone.

June 15, 2007

Macbook prices vs PC prices

First, let me just say, in case you are new here, that my current main work computer is a Macbook Pro 17", 1st generation.

Today I came across a comparison between a MacBook Pro 17" and a Asus laptop, with a big title like "I'll prove to you that MacBook Pro cost $500 more than PC".

To be blunt: who the fuck cares? You should buy the best tool for the job you are planning on doing. An electrical saw from Black & Decker is probably a lot cooler to own than a classic carpenter saw, until you need it in a middle of a forrest, with (shame on nature) no electrical plugs.

The second thing that pisses me off, is that this comparisons will only focus on features and hardware. What about subjective features like operating system and derived productivity of the combo hardware-software? Oh, yes, of course, those are hard things to quantify, given that they are subjective, but you cannot make a intelligent decision without thinking about that.

Really, I wish there was some sort of kill-file for Web stuff...

June 01, 2007

Google Gear uses

As I said on my previous post, I'm looking over the documentation of the Google Gears (GG) stuff. I read it all yesterday at night, and though about it.

The things I like about GG are pretty simple.

The first one is that you can write your applications to take advantage of it if present, but work the same if not. Its not a all-or-nothing approach, its more of a progressive enhancement thing. It does require discipline, and I would imagine that projects like Jamal or TrimJunction (you can find more here) will soon start appearing everywhere.

The second is latency. If I can cache rarely changed stuff on the client, like list of friends in a social networking site, things that I use all the time in my UI, the latency of the interface is much lower, and therefore the experience much better.

The third is a very decent system for parallel programming on the web. The Erlang fans out there will like the design "share nothing, message passing" system behind the WorkerPool stuff in GG. I do plan to play with this a lot.

Finally, as a co-owner and developer of a e-commerce web site, any processing we can push to the client means less servers we need do deploy centrally and that means less capital investment. And that is definitively a good thing.

There are a couple of things I want to try out in the next few days.

The first one is to write a todo list manager. Its the most simple system you can build and it will allow me to use most of GG functions. the system will seamless synchronize todo items between a Catalyst-powered web app and the offline stuff in GG.

The second one is to try and run a JsJaC instance inside a WorkerPool. This would allow me to run a asynchronous XMPP client inside any web application with ease, making it possible to use the XMPP as push-style communication channel between back-end applications and front-end UI.

This last one is not a end in itself. JsJaC is using polling to connect to a XMPP server. But it allows me to think about a future XMPP DOM standard, available in XMPP clients where we could drop small applications, exchangeable between clients.

But that is last bit is for another brain dump in the near future. :)

Gear up

Yesterday, while looking over to the Google Gears (GG) stuff, I talked with Celso about this and that I was pretty excited with the possibilities it provides. He was not impressed and later he told us why.

I'm going to pick on his arguments for a while and then, in a followin post, tell you why I like Google Gears and where I think I can use it today. I don't think it is the 8th wonder of the world, but I think it is a very good step in a good direction. Also note that I'm a desktop app fan, and all this hippie-ajax-the-web-as-your-desktop-thing is not the way I see things evolving. I think I wrote something about this in the past but basically, a Web2.0 world feels like the glorious years of the mainframe and the time sharing days. But as always, the truth is probably in the middle ground between a Web2.0 app and a desktop app, so any move to push web apps more to the desktop is a good move.

Celso starts of with the fact that upcoming browsers like FF3 are already talking about offline storage and support for offline apps. I haven't looked at the specs to compare with GG, but even if they are as rich as GG is now (the SQL database and the worker pool stuff is really very useful), there is no reason not to use the GG API as a front-end to whatever the browser supports. This would mean that I can start now, with some hope of having even more support and features in the future. Having GG now also force browser vendors to have a goal: if FF3 appears without features as GG has, less richer, it might seem as a failure (this assumes of course that the GG feature set right now is a good one, still to be proven in the field).

Starting now is important. Sync between data-stores can become pretty hard pretty fast, so we need to experiment, and the sooner the better.

The Zimbra remark is also interesting. Zimbra showed of their Desktop client at eTech. Notice the name: Zimbra Dekstop. Why did they called that? Because you need to download and install a desktop client. It is in fact a small server running on your local PC that you browser will use while in offline mode. It is a perfectly acceptable solution, and extremely powerful, just not a direct comparison with GG. Or then again, it might be, if you think that GG just moved the Zimbra Desktop server into the browser.

The advantage in my mind of GG over what Zimbra has done, is that we now have a solution that everybody can use, and like Flash, it's easier to find it installed on users PCs than something that only one app will use, like the Zimbra server.

But this brings us the open questions Celso has.

The first one is pretty much answered above. When FF3 appears with offline storage, I suppose one of two things will happen. If the FF3 system is as powerful as GG, then the most likely is that GG will just defer to it, but keep the API compatible. If FF3 is not as powerful as GG, then I believe that it might not have as much success as they hope. Its very difficult to go back to a inferior product.

There are two things that make me guess that "it will work out fine". First Google works very closely with the FF team, so it might just be possible that the FF team just uses the GG stuff, dropping the google prefix. Or the FF3 distribution just includes the GG plugin. Both are perfectly possible. Only time will tell.

Right now, though, FF3 offline stuff (I could only find a wiki entry of the BarCamp in New Zeland, a FF3 Gecko Feature list, and a blog post by John Resig) looks pretty simple. I think you can compare it to the basic ResourceStore class. The stuff in GG, specially the Database API is much much more powerful. But both products are Alpha or Beta, so too soon to tell.

The second question is why will someone download and install this. I suppose the same could have been said about Flash some years back, and the answer could be similar: because hyped-up sites might start to use it and the cool kids will have it. Basic primitive human behaviour: "That looks cool, why don't I have that?". I do think Google has a big edge over Adobe and Flash in this case though, that might make the adoption of this pretty fast. There at least two things in Google favor.

First, Google as a lot of ways to push this onto users systems: you might just bundle it with any of Google software like the Google toolbar or any other of the software they distribute. Its easy for Google to just slip this into their new Google Updater as an option.

The other one is that Google Apps have a lot of visibility: if you add support for GMail, Maps, Documents, or Calendar in a way that you can have some of your data offline, users will want to install it to have that support, and once installed, everybody can use.

The third question its pretty much answered above, but the part about other browsers adopt the same API, well... I would love to have that, and it might just happen if the HTML5 proposal sees the light of day. At least they do have a sort of key/value offline storage system and a client-side database storage based on SQL (for kicks, I quickly skimmed over it, and a lot of the concepts are similar to GG and would map pretty well).

So overall, I think that GG is not something terrible new, of course, but it does a lot of things better than before, and it has a chance of being much more widely deployed (IMHO) than the previous alternatives. Also, upcoming support inside the browser for this kind of stuff will only help GG.

May 31, 2007

Google Gears

Google announced Google Gears, a browser extension that allows web applications to have a offline-mode available.

Right now, most recent browsers are supported with two omissions: Safari (on which the team is working on - my bet is expect this with Leopard and the new, more powerful, WebKit according to the developer (7:00), you can build a Safari plugin from the SVN code but another post mentions that it will only works with the nightly builds of WebKit), and Opera (which is not even mentioned).

The two cool features I like about this is that they provide you two standard APIs: a SQL-based storage layer, using SQLite (with the fts2 full-text search extension which is a nice touch); and a worker-thread pool for long running jobs.

The other interesting thing mentioned is a strong focus on synchronization, which is for me the most important aspect right now when building any kind of application. I do believe that if you are starting a new application (web-based or desktop-based) and you don't think about synchronization between data-stores, the lifetime of your app is small and quickly getting smaller.

Synchronization is one of those things that is easier to do if you plan your data-store from the start with sync in mind, it will be a lot easier.

Taking this idea forward, and gluing it with SamePlace, the next step for me is to think how can we put both of these APIs inside a XMPP client.

Think XMPP-powered Grid applications, with a web interface, capable of working offline. Think of personal-assistant bots that can negotiate meetings with other personal-assistant bots.

update: the code is open source, it "almost" compiles for Safari.

update 2: Safari is supported, you just don't get a binary for download, and you need to compile from source.

update 3: Safari appears to be supported only with nightly builds of webkit so it seems that my first idea that it would be a Leopard only thing might be right after all. They mention that, with Safari, the Google Gears is both a plugin and a Input Manager. I heard somewhere that Input managers would be gone in Leopard so something doesn't feel right.

May 24, 2007

About scalability and performance

Memorable quote:

There is a computer science mantra (one of many) stated by Donald Knuth as; "Premature optimization is the root of all evil." I've argued for a long time that defining "premature" for a particular situation is what separates a senior and a junior engineer.

Go read.

May 16, 2007

I love corporate meeting requests

My latest one:

  • 32 recipients;
  • marked as 'High Priority'.

I love people who mark all outgoing emails as high priority...

May 14, 2007

The empire strikes back

Microsoft is moving.

Whatever the outcome of this, the landscape of software development will never be the same.

May 07, 2007

It's Monday...

... so start with a laugh.

May 01, 2007

Sync power

There as been a lot of talk about offline modes for Web applications lately, and this path is getting closer to what I see as post-web-2.0 generation of applications.

Someone will eventually coin a term to describe these apps, but I think the following features will be part of them:

  • offline mode: there are those who believe that universal, always on, connectivity is just around the corner. I just might, but personally I think that they live in a nice dream and will eventually wake up. Even if you get there, there is no reason to always be online. Sometimes is good to unhook yourself;
  • sync services: this one is a direct result from the previous one. We are not talking about access to your data hosted on a web site somewhere with a REST/SOAP API, we are talking about full-blown sync, where you can add, edit, delete content offline that will sync to a group of interested parties when you happen to be online;
  • content push: right now, we are in the era of pull. The inefficiencies of using polling will eventually catch up with us, and we will see that in a notification-based world, push is the only way to go;
  • global pubsub semantics: subscribing RSS feeds is a great concept, you only get what you are interested in. Pubsub will only make it more sane on the bandwidth-side of things. We might all have FTTH soon, but that doesn't mean that is ok to waste it.

This might seem strange, but my biggest beef with the Web-2.0 generation is a totally irresponsible disregard for the environment. Here I am, sitting on a Intel Core Duo processor, burning watts, and I'm suppose to outsource my CPU to a distant server. Yeah, that makes perfect sense, right? Its a total waste, and it can't last.

Having a local application in sync with a remote server on the off chance you might be without your laptop/PDA/whatever is a much greener alternative, and makes use of all these local resources you have with you. Those 100Gb disk drives on your latptop can be put to a good use. Think them as the fastest storage component in a global hierarchical storage management system, where S3 and friends will probably be your long-term storage. Imagine having your operating system telling you that you have 100 terabytes available of storage, and letting him make the decision on which files to keep in you local cache.

The necessity of universal peer-to-peer sync services in the new generation of applications will see a flourish of activity in conflict resolution and merge algorithms. The good news is that the last 2 to 3 years, projects like darcs, Mercurial and Monotone, have been working on those issues, so if we leverage the work done by distributed SCM systems, we should have a good head start.

The dynamics of peer-to-peer networks has also a good set of solutions to stand on, thanks to all the peer-to-peer sharing networks, and more recently to Bittorrent. I don't expect to see a direct mapping onto those protocols, but surely the ideas that are behind them will be used in the universal sync network.

There is no reason to throw away current applications. In fact I believe that most NG applications will still be made in Python, Ruby and Perl. The advantages of scripting languages is immense in terms of fast prototyping. Also, given that we will run them locally, "fast" will take on another meaning. A web-app-local-environment, will give you a generic package format, which will allow you to drop the the local version of, for example, Basecamp. A common API will give you access to basic services like storage, databases and network. And each operating system will probably add there own APIs to access his features.

The is also no reason not to use the current HTML/JS/DOM model as the preferred "view". After all, it is probably the most universal and cross platform toolkit we have. Those standards are not standing still, and the richness of the controls available will only increase with time.

Finally there is the question of network protocol that will power all this. How will these applications talk to each other. How will my calendar accept and decline meeting invitations based on my free time. I'm a bit biased on this topic. I do believe that XMPP provides most of what we need. In a world of social relations, your buddy list already contains the trust network that you can leverage for authorization. End-to-End encryption will keep it all reasonably safe. And the current pub-sub specification, while not scalable enough right now, can be easily improved to become a global universal notification network.

The last paragraph might be wishful thinking, but it doesn't cease to amaze me the brain power that goes into things like Comet, to get that illusional always-on pipe to the application, to push real time content, when you could simple have a XMPP client inside the browser and expose the protocol via a small DOM.

In my next installment, I'll talk about Xiclets, a small proposal to do just that: build a common DOM for Javascript and HTML applications to use XMPP as a grid protocol.

April 27, 2007

Google power, duh!

This is cool and helpful: placing your pet transponder ID in a web page for Google to index it.

It is also somewhat obvious, so, duh...

Now we just need a micro-format and profit!

April 24, 2007

Raising your head, once a year

Once a year, I look around and re-evaluate my SCM decisions.

In the last year, I've been using darcs as my main SCM and I love it: simple and powerful. And given that I don't branch and merge a lot, I don't run into his issues.

Yet, for fairly big projects with lots of files, it starts getting a bit on the slow side. Also, I haven't find any graphical change-set browser yet. I can have one for SVN and git but not for darcs (not a web frontend, a graphical desktop application).

Also, the projects I work on are all using SVN, and I don't like to move from one to the other.

So my requirements now include the following:

  • offline operation;
  • real branching and merge (basically this requires change-set history);
  • darcs-style interactive commit;
  • supported on Mac OX X and Linux;
  • SVN gateway.

The last bullet point is new this year.

So I went looking for something that matches all of this and I found the set of git, cogito and git-svn. They seem to fit the bill perfectly.

Right now, I've compiled git from source. Its as simple as:

curl -O http://kernel.org/pub/software/scm/git/git-1.5.1.tar.gz
tar zxf git-1.5.1.tar.gz
cd git-1.5.1/
make configure && configure --prefix=/usr/local
make all
sudo make install

You should now have all the git goodness installed in /usr/local/bin. If you type git at a Terminal and you get an error like -bash: git: command not found, it's probably not in your path, so:

echo 'export PATH=$PATH:/usr/local/bin' >> ~/.bashrc

A freshly open Terminal should find it now.

After git, you should install cogito. The first is the core SCM, a meta-SCM, a set of tools to create a SCM. The second is a porcelain layer, a more user friendly user interface to git. You can download and install it with:

curl -O http://kernel.org/pub/software/scm/cogito/cogito-0.18.1.tar.gz
tar zxf cogito-0.18.1.tar.gz
cd cogito-0.18.1/
make
sudo make prefix=/usr/local install

That's it. The README of cogito is actually quite good to get you up to speed, and I would recommend reading it as the next step.

With this environment you already have everything you need to start working. To test it out, you can download the cogito git repository with:

cg-clone http://www.kernel.org/pub/scm/cogito/cogito.git ~/cogito

To see the history of change-sets graphically, you can:

cd ~/cogito
gitk --all

If the fonts and layout seems butt-ugly and unreadable, check out the alternative configuration file for gitk.

For now, I'm just testing this setup. I'm pretty happy with it. I will have to try git-svn and the cool-looking git-hunk-commit script (to have something like darcs interactive record) before I decide to switch, but it is looking very likely.

A good thing about modern SCM systems: you can switch from one to the other in a relatively simple way...

April 20, 2007

More on the subject of queueing systems

Yeah, Web 2.0 fan-boys will likely point out Amazon Simple Queue services, but I tell you, us UNIX old timers will stick with lpd, I tell ya.

It never ceases to amaze me the length people will go to abuse a UNIX system and get away with it...

March 28, 2007

BSG 3x20 fraking rocks

nuf said.

March 21, 2007

Googla Apps for Domains

Google Apps for Domains is looking very very good. Pedro switched today, and I would to, but right now I depend on IMAP (I use offline mode a lot), and there is no support for it, even on the Premier Edition (the one I would be using myself).

I've read some comments that IMAP would have less than ideal mapping to the current tag-based approach of GMail, but for me, thats a non issue:

  • tags are folders, folders are tags;
  • if I move a message to a folder in my IMAP client, I'm tagging the message;
  • a message can exist in several folders (multiple tags).

I don't see a problem with this approach. You could think that folders inside folders might be hard, but thats just a bit of meta-data associated with tags.

The same comment said "Server-side searches can potentially use lots of server resources".... I wonder if he noticed that he was talking about Google, search and heavy loads in the same phrase... The IMAP SEARCH command can just plug into the current search for GMail. Again, I fail to see a problem with this.

We shall wait and see...

March 16, 2007

Either you like it or STFU

Publico is one of the largest newspapers in Portugal and they also have an online version. I was reading a piece on solar energy and at the end I found this:

Safariscreencapture002

(for the portuguese impaired, the text before the checkbox asks "Did you find this article interesting?". The checkbox label is 'Yes'.)

Now, I can understand what the person that designed this was trying to do (at least I think I do), but how can I say "No, I did not like the article". It seems that either I like it and check it, or if I don't I should just shut up and leave. More: if you decide that you do indeed like the article and check it, you cannot change your mind.

It seems that the possibility that someone would not like the article is too frightening to contemplate. Either that, or their tests with Safari where minimal.

March 12, 2007

The problem with threads

A couple of years ago I came across an article on Dr Dobbs Journal about the future of programming in a world of multi-core machines.

It was a refreshing read, that took me back the early 90's at college and to some of the distributed operating system classes I took there. Back then we had a 80 CPU box to play around, the size of a 4U rack more or less (compare to this for fun), so conventional threaded programming was already looked at as "odd".

Recently I came across a paper by Prof. Edward A. Lee called "The Problem with Threads". I had it sitting on my "Things to read"-pile for quite some time until I saw it mentioned on O'Reilly Radar by Nat Torkington.

Its a beautiful read, I highly encourage it to you all. One quote in particular, about threaded programming and the impossibility of creating a correct threaded program make my laugh:

To offer another analogy, suppose that we were to ask a mechanical engineer to design an internal combustion engine by starting with a pot of iron, hydrocarbon, and oxygen molecules, moving randomly according to thermal forces. The engineer’s job is to constrain these motions until the result is an internal combustion engine. Thermodynamics and chemistry tells us that this is a theoretically valid way to think about the design problem. But is it practical?

This paper made me realize that I should probably take my resolution to learn Erlang more seriously.

I mean, I can write code in 6 or 7 imperative languages, but I always avoided functional programming. Yet, reading through the book Concurrent Programming in Erlang I had a lot of fun.

So now, I'm thinking more and more on some of my pet projects and which one I'll write in Erlang, just for kicks. I'm going to read it again to get the core concepts a bit more space inside my head.

Can't wait to see the carbon-version of the new Erlang book.

That, and Harry Potter and the Deathly Hallows, of course....

February 27, 2007

Please....

It can't be that easy...

I have to try this later in my wife laptoy.

February 23, 2007

Pixels! Pixels! Pixels!

For me, the thing that most improves my productivity is pixels available for work. I would love to be able to connect a second external monitor to my Macbook Pro.

For now, I've settled on using my old TiBook with a external monitor, and synergy, to expand my workspace to 4 screens.

I already searched for DVI or VGA ExpressCards, but so far found none. It's a recurring query I have on Google Alerts. The best and closest thing I saw was Belkin Notebook Expansion Dock, but alas, no Mac support yet. Also, reports on the Dell site (they sell this as an add-on) are not that good.

Yesterday, Rui pointed out a USB solution. Will see if that one gets Mac support. It would create the need to buy an external hub (all my ports are full right now), but that's ok.

BTW, if any of you comes across a ExpressCard/34 VGA or DVI card, please leave a comment. Thanks.

February 19, 2007

Unrelated fun

Two written pieces of pure fun:

February 12, 2007

Best $30 you'll ever spend :)

Gruber rocks:

My guess is that a very simple explanation suffices, which is that Thurrott is starting with a significant but utterly broken assumption: That Microsoft matters in this debate.

Excellent article, as always.

February 08, 2007

A pergunta

Usually you'll only find articles written in english here, but next weekend there will be a referendum about abortion here in Portugal, so this post will be in portuguese.

Por várias razões vou votar sim. Nunca pensei muito nisso, mas nenhum dos argumentos pelo não me parece ter peso suficiente para justificar a actual situação legal relativamente ao aborto.

Infelizmente não herdei da minha mãe o dom da palavra, pelo que em vez de fazer figura triste a tentar escrever algo decente, deixo-vos um pdf com o texto que ela escreveu para uma intervenção ontem. Para quem não sabe (e como sei que algumas das pessoas que vão ler isto tem a paranóia do ''full-disclosure'', a minha mãe ocupa um lugar no parlamento, como independente, eleita pelo Partido Socialista.

February 05, 2007

Defense of Marriage Initiative

If this gets approved, Washington state will be know as the Rabbit State, because all of them will try to stay married...

It's an absurd measure of course, and the proponents only want to promote discussing of same-sex marriage, but I find it disturbing nonetheless.

update: a bit of history behind all this. (via Pedro Timoteo), and I still find the idea disturbing. I don't know why really...

January 31, 2007

RedHat and the RHN Satellite Server

Just saw that RedHat will release RHN Satellite Server source code.

Well, too late.

I was a more or less happy customer of RHEL for 2 years, with 4 licenses of RHES3. The distribution was rock solid, but the RHN was a mess, rarely worked the way it was supposed to, updating only some of my servers, and the performance was painfully slow.

I dropped RHEL and moved over to CentOS, not because of price (I believe they should be payed by their services), but because the software update service was better, '''way''' better than RHN. I've dropped CentOS paypal account some cash, also. Good things should be encouraged.

January 24, 2007

Twitter

Twitter.com is becoming a world wide chat-room or IRC channel, where two or three people have a conversation twitting their messages.

Crazy. Get a room already!

January 10, 2007

Tip: MySQL is not that helpful sometimes

Stupid problem today.

In a listing I had, I had a percent column. The problem was that the database definition for that column was wrong, it used DECIMAL(2,4). Yes, 100% will not fit in there. Also: this syntax was valid in 3.x but with 5.x you need DECIMAL(6,4). I'm using now DECIMAL(7,4) to fit the edge case.

My peeve with MySQL is that if I give him 100 to put in that column he will not complain nor store NULL. He will help you and store 99.9999.

But the problem was the lack of a test for the edge case. Added, committed, happy happy joy joy.

January 06, 2007

Recipe for true geeks.

Grab one of these. Add several of these for flavor. Choose your toping from these choices (some can even be combined).

Stir (gently).

No need to add water. You are probably drooling just about now, thinking about this.

January 02, 2007

Land of the free...

Some states keep getting better and better.

I wonder if the USA is still a safe place to visit...

December 28, 2006

Not that I'm a user, but...

The Beta-days we live in are getting to a point that it starts being funny.

Check out the Google SOAP Search API page. It stills displays the Google-traditional Beta-stamp, but the API had a vasectomy, as of December 5, 2006.

Can you at least remove the damn Beta-stamp? Is not likely to change now, is it?

May 22, 2006

Buying season II

Yesterday, I was doing some shopping in a local mall and I happen to cruise by the monitor section and they had an Acer 20" with a 1680x1050 resolution on promotion. They had 6 monitors left with a very good price.

Today I stopped by and picked up the last one left.

I'm now writing this on a large widescreen display. It's pretty nice, and the pixel-maniac in me is pretty happy. I'm still tuning the contrast and to make it easier on the eyes, but the new real-estate is very useful.

Buying season I

In the following weeks me and my wife will be traveling a bit and mostly outside our usual places of work.

That means no net.

Or at least it usually did mean that. I bought her a Vodafone Mobile Connect Card, the 3G, not the 3.5G "broad band". I'm a TMN subscriber and she is a Optimus subscriber, but I went to Vodafone because they have better coverage.

The card was pretty much plug & pray in Windows, and we where online fetching mail in no time. Very nice.

They I turned to my Mac. The card brand is Option, and they have Mac OS X drivers, so I downloaded them, installed them and bingo, I was online also with my Mac.

I then tried to log-on to the VPN at work, but it seems to have vanished. I realized that the installation program for the card completely obliterates the VPN setup you had previously. Not good.

All in all, it was a good experience and we now have a way to fetch our mail in the next few weeks. Even with the VPN-fiasco, I would recommend this card to anyone in Portugal in search of a 3G connection. Personally I would prefer a phone-based approach but I didn't want to wast money on a 3G phone that I don't need.

The problem will arrive later, when the Macbook Pro arrives and the PCMCIA slot disappears...

Update: yuck, yuck, yuck... The Vodafone "Dashboard" erases my entire VPN setup every time I activate the card. And that is a required step in the process of connecting. Sucks big time, Vodafone.

May 20, 2006

Strawberries with Sugar virus strikes again!

I have no words...

May 04, 2006

Dos? What DoS?

Interesting way to deal with a DoS that you get from being a major asshole: just dump it on someone else.

Kudos to the SixApart network team.

Technorati Tags:

April 28, 2006

The future is distributed, but definitively not here

Predictions, the stuff fools are made of.

Recently a couple of events, web-based services, and old style thinking have come together in my mind in a way that makes me want to write about it and share. Being about the future of the internet and the applications we will see after this Web 2.0 craze subsides, well, it just makes it interesting.

The most important part of the Web 2.0 hype are the simple and universal APIs that most sites are deploying. The value in those APIs are the desktop applications that we can now build using them, and not the sites that we can mash-up together.

You see, I don't buy into two things:

  • you want your data on the network;
  • you want to use a browser as your primary interface.

I think what you really want is this:

  • you want your data with you, when you need it;
  • you want to have a integrated experience with your computer.

First, you want access to your data. The main pitch you see on Web apps now-a-days is access to your data everywhere. The point that they are trying to pass on to you is that if you put all your stuff online, you can jump online, and have it all. The key operating principle here is the "jump online". What if I cannot or I don't want to do that? Sure, you can get online on most of the world right now, but you might now want to do it, due to cost, security considerations, or other reasons.

I don't think that putting your data online is the total answer. My feeling is that the master repository of your stuff is your laptop. Maybe a future laptop without keyboard, or screen. Just storage and processing power, that you can hook up to public "screens and keyboards" everywhere. And in that situation what you really want is synchronization APIs. You want to synchronize your data with remote online services, because you want to share it with a closed group of people like your family, or publish it to the world at large.

So you would have it all with you. Maybe not all, given that each person data is growing to the multi-gigabyte size (my digital life fits in under 100 Gb right now, but that is excluding DVDs) but the working set that you need on any given point in time. And it would all sync with your preferred services online.

Second, you data is fragmented on the web. You have multiple "address-book-with-social-networking" services, but can you pull the network from LinkedIn and use it as a access control filter on Flickr? Heck, I can't even get a iCalendar file from Orkut with my friends birthdays, the last time I looked for it. The information is online, out there, but you cannot cross it in meaningful ways.

At least on my laptop, my address book is used by the email application, the instant messaging application and others. My calendar application can receive and aggregate events sent to me by mail or IM, and I can publish that information selectively. I can publish my photos to my family with something like photocast (excellent idea, botched up job on the implementation and lack of respect shown to the community) or Film Loops (another excellent idea that I still think lacks some touches, like accepting directly RSS feeds with enclosures).

That leads to my other point: browser based interfaces. The last year or so, we where blown away by the rich experiences provided by the latest in Web technologies. The three major webmail, our local Sapo Webmail, the 37Signals applications (no, I was not hired by them, it was a freaking joke, people!), or one of my latest favorites, Dabble (check the video). They are truly amazing and I bow to them, because I cannot imagine the amount of work behind each one, and dealing with the browser mess.

And it's only getting better. The WHAT-NG promises another leap in usability and richness of controls to our usual web browser.

Yet, I don't see any of those being better than a decent desktop with these features:

  • a good quality graphical desktop, like Mac OS X, and the latest GNOME and KDE;
  • a good productive application framework, like Cocoa. For example, for all of those RoR/Catalyst fans (like me) out there, see this demo of the CoreData framework;
  • integration with my data: there is no single web application right now that can pull data from my local storage. For example, if I'm inside an web application and I need some contact information, there is no way to pull that from my address book, right now.

There are the some of the downsides of webapps, and I'm sure some of them will evolve and improve. But at the same time, so will the desktop.

In conclusion, it is my belief that the next jump will be made when the current APIs grow up, and start giving us support for synchronization and not storage/retrieval. The web-based services of the future will provide sharing points and views of our data, in some cases even up-datable.

That's the next step, the web 3.0 or whatever name it will be called. A sync heaven for desktop applications.

Technorati Tags: ,

April 27, 2006

Foolishness

When a person has a child and holds it in its hands, there is a kind of foolishness that takes over your entire self, it's like getting the answer to all the questions about life, the universe and everything in a instance, and finding out that Douglas Adams was wrong. You truly see that its much more than a number.

Predicting the future is also foolish, and not even remotely as fun, unless you are the one who will, when time brings us to it, laugh at this small notes I took upon myself to write.

Predicting the future, that's my plan in the next weeks.

Technorati Tags:

Sadness

I do hope Rui has made a mistake with his pills and is seeing things in a parallel universe (got to love the pun).

Are they idiots?

Technorati Tags: ,

April 21, 2006

Google Maps wishlist

Dear Google Maps,

sometimes I see those nice and shiny URL's in other people blogs, you know, like this one: http://local.live.com/default.aspx?v=2&cp=47.663427%7E-122.142801&style=o&lvl=2&scene=3688581.

It seems a nice and power-full URL, full of joy. Yet, when I click on it, my Safari browser is not able to load the page. I'm sure that the fault lies on those fun-loving-mac-geeks at Apple that don't know how to code.

So in the meantime, can you accept local.live.com URLs as a valid query on your site and show me the place I was asked to see?

Thanks,

Technorati Tags: ,

To all my friends stuck in jobs they don't like

From the Steve Jobs’s Commencement address at Stanford:

Your work is going to fill a large part of your life, and the only way to be truly satisfied is to do what you believe is great work, and the only way to do great work is to love what you do. If you haven’t found it yet, keep looking, and don’t settle. As with all matters of the heart, you’ll know when you find it, and like any great relationship it just gets better and better as the years roll on. So keep looking. Don’t settle.

Really a great quote. Via the now professional Daring Fireball.

March 18, 2006

SCM systems again

I've been using darcs with some success on my personal projects for more than a year now.

The good thing about darcs is that it's very easy to start using, and some features, like the interactive record (commits for those using other SCMs), are extremely powerful.

I also had some problems with it, specially with large repos. It's getting a lot better but still, sometimes, with specific patches, it takes as long time to merge changes between repos.

In the last year, I've also started using Trac a lot, even with darcs, as I mentioned before. This is probably the best system I ever used to keep the code, wiki, bug tracking and project management all integrated, and I like so much that in the last months I've been pushing his use at work also. We now use it to manage two big projects with a Subversion repository, and it's been great. Several other projects there are also moving to Trac.

This push at work to use Trac + Subversion, and the problems with darcs that I have with two of my bigger repositories made me look around again, re-evaluating my choices.

I would love to keep the interactive record capabilities of darcs, but I also don't like using too many systems at once. Also Trac is starting to support other SCMs (Mercurial is in the trunk, a plugin for Trac to support darcs is also in the works in a separate repository, also written by Lele Gaifax), so I should be able to switch to another (well, at least Subversion or Mercurial) SCM without too much problems.

Mercurial is nice, but that would be yet another one to master, so I looked at Subversion as my SCM of choice for my projects. Unfortunately, it's a centralized design, and I want a distributed SCM for my pet projects because I do a lot of work offline and like to commit in small change-sets, and because having several remote mirror repositories is an excellent backup tool.

Enter svk.

svk its a decentralized version control system that uses the Subversion filesystem as its base, but then adds loads of other features that darcs already has. Also it allows you do mirror remote Subversion repositories (like the ones I have at Sapo), and work offline on them.

To start with svk, read the svk workflow explanation by Bieber Labs, It's probably the best one I've seen until now, and it will help you understand the rest. Then install svk, and read the output of svk help intro. The organization describes is much better than the ones you'll find in the wiki.

Then read through the wiki, the faq and other documentation (you still feel lost). There is also an excellent svk visual guide by Russell Brown.

After the intro, and a bit of browsing, I was able to mirror all the Subversion repositories I use on daily basis with no work at all.

There is also a nice tutorial on how to import darcs repos into svk, in case I need that.

The only think I'm missing is the incremental record feature of darcs, really. But good news: its on the roadmap for version 2.0.

As a bonus, for those old, very old repos still in CVS, apparently svk can also mirror them, although that feature seems broken for now. If I can make that work, even old CVS repos will be united under the same tool.

So I'm switching to svk for now. It might allow me to cut back on the number of systems I have to work on a daily basis to just one, if all goes well, but just using the same tool at work and on my projects will be a great time saver.

I'll keep you all posted on how this goes.

Technorati Tags: , , , , , ,

March 13, 2006

Starting a new day with a smile

Rui hates mondays. I know what he means, but given that monday is one of my days off, I don't hate them myself. I'm more a Tuesday-hater myself.

So, to make him and all those monday-o-fobics out there smile at least once today, listen to the blind man.

Programming in Python will make your girlfriend happy

The subject says it all, really.

I think Pedro is on to something here.

Technorati Tags:

March 11, 2006

Sexy hardware

Is it just me or did anybody else smiled slightly at the cover of April 2006 issue of Linux Journal?

I do agree with the picture though, a PowerBook 12" is a sexy piece of hardware, even running Linux.

Technorati Tags: ,

February 16, 2006

Campfire is now live

I was expecting this service to open soon, and my wish was granted.

I was able to grab the address http://geeks.campfirenow.com/ and I'll test it with a couple of friends.

As usual you can expect the clean look and interface that 37Signals have accustom us to. Only the minimum features are there, but for now, it seems very responsive.

Given the recent example of Zooomr regarding authentication (only the good parts, of course), I would like to see 37Signals start some kind of distributed authentication system, even its only on their sites. Right now, I have an paid Backpack account, a free Basecamp account and now a Campfire account. Time to unify all of them?

Anyway, the service looks good, but I'll reserve final judgement for tomorrow morning when a bunch of us discuss where to have lunch in a room in campfire.

One final question: why call something campfire and then use a lobby and rooms as your language? "there I was in a room at campfire" or "everybody around the campfire inside a room" does not sound good. I guess OfficeBuildingNow.com is not as sexy, but CubeFarmNow.com would be nice :).

Update: David Hansson commented on the single login across all 37Signals apps. His suggestion is that you look closely at the screen-cast posted in a previous Campfire article. The video crashed on my powerbook after a couple of seconds, I'll try to see it on another Mac, might be a problem on my side.

Technorati Tags: ,

February 13, 2006

Authenticate anyware

There is new Flickr-type site making the beta rounds, called Zooomr. I found it via Dystopics review.

I normally could care less about a new photo-site, but there is one feature that I'm just crazy about: distributed authentication.

See the screenshot from their login page (taken from the above review):

You can use Level9, OpenID, LiveJournal, Google and Meetro. OpenID is the cool one, for me, because it also enables you to use your Typekey identity for logging in.

I think this is the second service I see the allows this kind of distributed authentication, the first being LiveJournal and their comment system. But Zooomr takes it to the new level, by using distributed authentication instead of providing a registration step.

You see a lot of people, specially the 37Signals guys, talking about the importance of doing simple registration procedures. This is the next step: no registration at all to start using the service.

Technorati Tags: , , , , , , ,