I like having ideas. Specially when I am a little unhappy on the daily job. I start dreaming how cool would be to have my own company (I will someday). And then I start thinking about what my company will do. Or what software it’ll make. Most of the time it is games, but recently I came up with this one.
Press Print Screen and the image is automatically uploaded to a web server. A tray notification message (a bubble) appears with two options: Copy the URL to the clipboard or edit the image. Editing the image would allow for really simple things to be added, like text, boxes and arrows.
Basically it’s a quick way to show someone what’s on your screen. While developing on the daily job sometimes I want: Show the user/costumer something and ask for feedback. Are the colors nice? The position of a piece of information? The size of the text?
Maybe even allow capture of movies (of my computer usage) and recording of audio (whatever I say on the mic).
Just that. One click sharing of what I am seeing.
The software could benefit from some more features, like user authentication so it’s possible to manage your uploaded screenshots, or to set up permissions. But the basic needs to be there: An URL for my screenshot, the quickest way possible. Eliminate the need to open an image editor, paste the image, save, go to a website, select the image, wait for upload.
Maybe whenever the image is displayed on the web server, show a couple ads…
Nosso país é uma merda tão grande que a felicidade do Ministro da Fazenda, dos analistas de mercado e manchete das páginas de economia é como o Brasil ainda continuirá alvo de investimentos depois da avalanche dos mercados ocorrida nessa semana.
Temos de ficar esperando dinheiro estrangeiro entrar para alguma ir pra frente. Porquê uma empresa da Espanha, um país menor e com menos pessoas, tem mais da metade do setor telefônico do Brasil? Porquê quase toda nossa indústria eletrônica usa tecnologia estrangeira?
Imagino algumas razões. Envolvem história, governos de filhas da puta, e o jeitinho que em tudo se dá. Mas principalmente na fibra da alma brasileira. Nossa cama moral e ética é fraca. O único herói nacional apenas é lembrado quando alguém pergunta qual a razão do feriado de 21 de Abril.
O encarregado de um dos setores mais importantes do governo (ao lado da pasta da Cultura) vêm a público para dizer:
Passada a turbulência, os capitais vão procurar fazer investimentos mais seguros nos países sólidos e certamente hoje o Brasil está entre eles.
Nossa esperança é essa. Que depois de escorrido dos principais mercados mundiais, o dinheiro que sobre respingue para o nosso colo ao invés de outros países. Estamos mortos de sede com a boca no fim da calha e ficaremos felizes se a tempestade virar garoa.
Medíocres.
Quem enviou ao TuTubo esse vídeo não permitiu embarcá-lo então vejam no próprio site: Um duelo de cavalheiros.
Hoje começarei uma série de artigos os quais espero terem vida curta. Chamam-se Aventuras do Meu Pai Aprendendo Informática. Meu pai não tem a mínima noção de como mexer no computador. Mas o trabalho exige, ele comprou um notebook (o Amazon PC AMZ A 101 V) e tenho dado aulas e ele.
O objetivo hoje, além de conferir os emails pessoal no BOL e na conta do trabalho pelo Outlook, os quais ensinei a ele semana passada, era comprar o novo livro de Khaled Hosseini. Ele não sabia o título, e apenas me disse que esse autor também escreveu O Caçador de Pipas. Ele achava que o livro foi publicado pela Editora Saraiva, então ao abrir o navegador ele digitou corretamente o endereço da empresa, mas no formulário de pesquisa (o qual não consigo fazer link pois os estúpidos comandantes do site da Editora usam frames) ele digitou “kaled hosseini” (sem a letra ‘h’, um erro normal).
Ele reclamou como a letra ficava pequena ao digitar. Poxa Saraiva, meu pai beira os 60 e usa óculos, ele não consegue ver direito. Cooperem.
Enfim, o site não retornou resultados, e nem sequer deveria, já que a Editora Saraiva não publica os livros desse autor. Disse ao meu pai:
- Se você quer pesquisar algo, use o Google.
Lá ele foi, e me perguntou:
Posso digitar “o último livro de Khaled Hosseini”?
Eu disse que sim, mas ele acabou digitando “o caçador de pipas.” No meio dos resultados, ele viu o como se escreve o nome corretamente. Aliás, aqui cabe um parentêses, meu pai não sabia que cada link retornado é uma página, eu ensine a ele isso na semana passada, e que o texto é apenas um trecho da página que o Google tem guardada.
Eu queria ensinar a ele como copiar o nome e colar na caixa de resultados, e perguntei se ele gostaria que eu ensinasse uma coisa nova a ele, mas ele disse que eram dez e meia da noite e estava com sono, não queria aprender. Então eu colei “Khaled Hosseini” na caixa e eu mesmo cliquei em pesquisar. Isso que ele viu (clique para ampliar a imagem):
Ele comentou:
- Aí, Saraiva.com.br. Mas não é o livro que eu quero.
Sabendo que o AdWords trabalha com palavras-chaves, e imaginando que a Saraiva deve ter feito uma página apenas para o termo com o nome do autor, resolvi dar uma mão e incentivei ele a clicar, dizendo, quem sabe não aparece o que você quer? Ele disse que não, pois viu logo abaixo o resultado da Americanas, que dizia: “A Cidade do Sol”. Ele lembrou então que esse era o nome do livro. Clicou no resultado, e ficou perdido. Não sabia mais o que fazer. Eu então cliquei no título do livro, o que trouxe essa página. Aqui, eu disse que ele poderia comprar o livro, bastava procurar como. Ele começou a ler a página desde o começo, falando em voz alta os nomes dos itens dos menus. CDs, DVDs, Livros… e me perguntou:
- Aonde que eu não acho?
Disse a ele:
- Mais embaixo.
Ele deu um Page-Down duas vezes e começou a ler o rodapé da página.
- Aonde que eu não acho?
Disse a ele:
- Mais pra cima.
Finalmente ele viu o botão de comprar. Clicou no botão, colocou o CEP, depois clicou em prosseguir. Aqui o site da Americanas mostrou duas caixas, uma para já clientes colocarem o email e senha e outra para não clientes colocarem o CEP. Ele ainda não era cliente, então colocou o CEP. No cadastro, como deveria digitar muito e já era tarde, eu assumi para completar a compra.
Deixa-me concluir essa saga. Uma das coisas mais faladas por Jacob Nielsen é o modelo mental construído pelos usuários. Hoje eu pude ver isso de forma clara, sem falar das burradas das pessoas que fazem o site. Só para recapitular:
E esse é o fim do primeiro AMPAI. Como vocês podem ver, meu pai é novato em informática. E observar ele mexendo no computador é fascinante, uma experiência altamente esclarecedora. Já entendi, em poucos dias, dezenas de problemas que usuários novatos têm com computadores. Alguns, admito, eu seria culpado por tabela nos meus próprios trabalhos. Mas espero superá-los!
Estou fazendo os desafios do Projeto Euler e nos dez primeiros já vi três com números primos. Meu primeiro algoritmo ingenuamente testava a primalidade de um número tentando dividí-lo por todos os números menores que ele.
Uma lista com 1.000 números primos dessa maneira gera em pouco menos de um segundo no meu computador. Já 2.000, mais de 9 segundos. E 10.001, como pedido por um dos desafios, eu nem tive paciência de esperar os cálculos acabarem. Minha primeira implementação foi a seguinte:
Pocurando por métodos mais velozes achei dois, o Crivo de Eratóstenes e o Crivo de Atkin. O primeiro é mais simples, então decidi implementá-lo. O Crivo de Eratóstones é definido assim:
A classe a seguir, escrita em Python, retorna uma lista com todos os números primos entre 2 e um número especificado (max_n).
Pesquisando sobre Eratóstenes na Internet, descobri que ele foi um animal. O grego viveu dois séculos antes de Cristo e conseguiu calcular com 16% de erro a circunferência da Terra. Leu nos papiros de Biblioteca de Alexandria (aonde foi Diretor) que o sol iluminava o fundo de um poço na cidade de Siena (hoje Assuã) ao meio dia do dia mais longo (o solstício) no verão daquele cidade, em 21 de Junho. Ou seja, a luz fazia um ângulo reto com a Terra.
Mas no dia 21 de Junho, quando era meio dia em Siena, o Sol projetava sombras em Alexandria. Eratóstenes conclui então que a Terra era redonda. O ângulo das sombras deu 7º12', quase 1/50 dos 360º de uma circunferência, então a distância entre Alexandria e Siena multiplicada por 50 seria a circunferência do planeta.
Mandou um pessoal percorrer essa distância e eles voltaram com 925km. E 50 vezes 925 é 46.250 km, enquanto a Terra tem 40.076 km.
Queria crescer de novo pra ser igual a ele ![]()
O assunto Criacionismo não tem a mesma dimensão política e social no Brasil como nos Estados Unidos, de onde essa imagem veio, mas ela é boa demais para não ser reproduzida a exaustão.

Acharam essas imagens holográficas no DVD do Windows Vista... três seres olhando com cara de nada. Não tenho a mínima idéia quem são!
via Kwisatz
One of my websites is experiencing phenomenal growth and after optimizing the database queries and using memcached, I decided it was time to use another webserver to serve static media. Here's how to do it.
I recommend that you take a look on a previous post that I wrote about how to configure a webserver to work with Django because I will be manipulating some files which I talked about there. If you're unsure about the correct paths necessary for your server, use the other post as a guide. I installed Lighttpd and configured Apache on my Slicehost VPS, which is a company that I highly recommend. If you decide to sign-up with them, it would be awesome if you use my email (inerte@gmail.com) as a referral, and/or use this link which takes care of setting me as your referral.
We're going to use Lighttpd on a different port than Apache to serve files from a specific directory based on the domain name, all transparent to the users browsing your website. No changes were made on my website code, server (Python) or client (HTML) side.
My server runs Ubuntu so I just ran the following command to install Lighttpd:
$ apt-get install lighttpd
Edit Lighttpd's configuration file:
$ vi /etc/lighttpd/lighttpd.conf
Uncomment the server.port line (mine was the 60th):
server.port = 81
Enable the mod_evhost module. This will help us use a different directory depending on the domain name. Just uncomment the 19th line (inside server.modules).
Add the following somewhere, which says requests from yourdomain.com should look for files on /var/www/yourdomain.com/web/. I did on the 118th line, after the evhost.path-pattern examples.
$HTTP["host"] =~ "yourdomain\\.com" {
evhost.path-pattern = "/var/www/yourdomain.com/web/"
}
Start Lighttpd:
$ /etc/init.d/lighttpd start
Point your browser to your server to see if Lighttpd is working:
http://your.ip.address:81/
You need to see something like this (click the image for a larger version):
If you have directories under /var/www/, append its names to the url to see if lighttpd is correctly serving them (it should):
http://your.ip.address:81/yourdomain.com
To transparently serve files using Lighttpd from Apache, you need to enable proxy on Apache:
$ ln -s /etc/apache2/mods-available/proxy.load /etc/apache2/mods-enabled/ $ ln -s /etc/apache2/mods-available/proxy.conf /etc/apache2/mods-enabled/ $ ln -s /etc/apache2/mods-available/proxy_connect.load /etc/apache2/mods-enabled/ $ ln -s /etc/apache2/mods-available/proxy_http.load /etc/apache2/mods-enabled/
Unsecured proxies are used by spammers so Apache comes guarded against bad configurations. You need to edit this file:
$ vi /etc/apache2/mods-available/proxy.conf
To say where the proxy will work and who has access to it. Replace the * with 127.0.0.1, and uncomment the Allow from line. Final result is this:
<Proxy 127.0.0.1>
AddDefaultCharset off
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Proxy>
$ vi /etc/apache2/sites-available/yourdomain.com
Add this somewhere inside <VirtualHost>:
ProxyRequests Off ProxyPreserveHost On ProxyPass /web http://127.0.0.1:81/ ProxyPassReverse / http://127.0.0.1:81/
You're done with all configurations. Now reload the Apache's modules and restart the server:
$ /etc/init.d/apache2 reload $ apache2ctl restart
Everything should be working. If you get an error, try to undo some steps and after each change, reload Apache and restart Apache and Lighttpd to see when it broke. If you browse to http://your.ip.address, you should see all your content from /web/ being loaded correctly. How do you tell it's being served by Lighttpd instead of Apache?
This should tell you Apache is serving the page:
curl -I http://your.ip.address/
While this should tell you Lighttpd is serving the file:
curl -I http://your.ip.address/web/some.file
If you have any doubts or have problems, please comment and I will try to help you.
Moleza. Basta chamar window.print(). Por exemplo, para mandar a página para impressão ao clicar em um botão bastaria: