O primeiro carro que chegou a Seattle em 1900 era elétrico

Em 23 de julho de 1900 um carro fez sua entrada em Seattle. Era o primeiro automóvel que fazia sua aparição na cidade e era… elétrico.

 

 

 

 

 

 

 

 

 

Agora que a pesquisa em carros elétricos está produzindo seus primeiros modelos comerciais coincidindo com o insuportável auge dos preços do petróleo e o aumento do efeito estufa produzido pelo uso massivo dos combustíveis fósseis, temos que lembrar que o carro elétrico foi o preferido no final do século XIX e princípios do XX.

Ralph S. Hopkins apareceu nas ruas de Seattle em seu novíssimo carro Woods Electric de 3 cavalos de vapor. Comprou o veículo em Chicago e conduziu até São Francisco. A aventura levou 5 meses. Em alguns dos trechos foi sobre um trem. Hopkins disse ter sido o primeiro homem em recorrer o continente em um carro à motor.

A Woods Motor Vehicle Company fabricou o carro em 1899 quando somente haviam 4.000 automóveis nos Estados Unidos e seguiu fabricando veículos elétricos até 1919.

 

 

 

 

 

 

Na verdade, o primeiro veículo elétrico data de 1838, uma locomotiva. Não foi até a aparição das baterias recarregáveis em 1880 quando começaram a ser produzidas em massa. Nos primeiros anos do século XX os carros elétricos eram maioria sobre os de vapor ou gasolina. Funcionavam razoavelmente bem, ainda que tivessem um problema: a autonomia. Não se podia conectar-se a cabos como os trólebus e não haviam estações de recarga. Em 1912 Henry Ford começou a fabricação em massa dos carros com gasolina e o uso do veículo elétrico decaiu.

Em 1899, um veículo de Camille Jenatzy realizou a proeza de bater a berreira dos 100 km/h, na verdade circulou a 105,88 km/h.

Logo veremos carros elétricos circularem de maneira regular por nossas estradas, carros cuja ideia inicial tem mais de cem anos.

Traduzido do site ALT1040.

Quarta agitada na Campus 2012

A semana já vai chegando em sua metade, mas parece que a energia da galera está longe de acabar. O dia mal começava e todos já estavam a mil, como se estivesse esvaziado as máquinas de energético da arena.

No começo da manhã decidi acompanhar a apresentação da microsoft do seu sistema Azure, projeto que consiste em um sistema operacional para gerenciar a nuvem, tecnologia que está na crista da onda. É definitivamente um produto extremamente importante, ainda mais se utilizado sob o uso da plataforma de desenvolvimento da microsoft. Porém um ponto que me chamou muito a atenção nesta apresentação foi quando mostraram a estrutura de datacenters da microsoft, que possui 3 grandes núcleos: América do Norte, Europa e Ásia. Apresentaram a estrutura utilizada pela empresa e mostraram fotos do que é chamado hoje de Computação por Container. Caso necessitem ampliar a capacidade dos seus datacenters, nada mais de ficar instalando fileiras e fileiras de servidores. Eles compram logo um container completo. Dentro destes containers estão todos os novos servidores e só precisam conectar 3 ítens ao container: energia, rede e água para resfriamento. Fantástico!

Em seguida foi a vez do painel sobre aplicativos para dispositivos móveis voltados aos cidadãos. Entre eles foi mostrado o Tarifa de Taxi para cálculo da tarifa em diversas cidades brasileiras, o app Paprika para realidade aumentada, My Fun City para engajamento social e por fim Rio App para promover a criação de aplicativos para ajudar as pessoas do Rio de janeiro utilizando bases de dados disponibilizados pelos orgãos públicos.

A palestra principal da tarde contou com a participação do vice presidente de negócios do SoundCloud, plataforma de rede social que permite o compartilhamento de áudio. Mostrou como o ser humano se relaciona com os diversos sons e como a combinação dos mesmos pode produzir diversos sentimentos que apenas imagens ou textos isolados não alcançariam.

Após a pausa para carregar as baterias acompanhei a palestra sobre metodologias de desenvolvimento ágil com foco no Team Foundation da microsoft. Foi conduzida por dois representantes da 2PC Brasil e mostrou uma incrível sincronia entre eles, apresentando os produtos, animando a platéias e demonstrando em tempo real. Ficou muito claro o poder de desenvolvimento quanto a produtividade dos pacotes da gigante dos sistemas operacionais.

Mais a tarde rolou uma palestra um pouco mais técnica, sobre a estrutura dos bancos de dados com foco no MySQL e como bancos relacionais e não relacionais armazenem e recuperam seus dados e como o programador deve olhar para isso no momento de desenvolver seus produtos.

 

Outra vez no palco agora com uma participação mais do que especial. Neil Harbisson foi considerado legalmente o primeiro Cyborg da humanidade, sendo considerada sua câmera para ver as cores como um membro do seu corpo. Neil nasceu com uma doença que o impede de ver as cores. Após muito desenvolvimento criaram um camera que converte as cores em freqüências audíveis que são transmitidas para seus ouvidos através dos ossos do seu crânio. Sua nomeação de cyborg lhe foi concedida quando concluíram que não se tratava apenas de um dispositivo mas sim uma extensão de seus membros uma vez que seu cérebro já interpretava as informações de som como parte de seus sentidos. Hoje ele coordena uma fundação que auxilia outras pessoas com necessidades semelhantes a melhorarem suas vidas.

A noite foi dedicada à criança do futuro: HTML5. Primeiramente um painel com os principais nomes no tema para um bate papo sobre o futuro da tecnologia web. A conversa entre outras pessoas contou com a participação de Chris Hofmann, um dos grandes colaboradores do já falecido Netscape e hoje do Mozilla Firefox. Na seqüência o mesmo realizou uma apresentação do HTML5 na prática, mostrando as principais funcionalidades desse que está se tornando um novo padrão para desenvolvimento. entre muitas perguntas que foram feitas se falou em num futuro não tão distante, o browser substituir o sistema operacional, principalmente nos dispositivos móveis. Entretanto para alcançar este nível ainda falta um longo caminho, que deve passar primeiramente na padronização das propriedades e comandos de todos os dispositivos existentes.

O que para uns parecia o final do dia, para outros significava apenas o começo da noite. Passava da meia noite e a agitação ainda era grande da arena. Dezenas de campuseiros vestidos de pijama faziam a festa. Criavam passeatas, carregavam cadeiras, tocavam cornetas. A festa era enorme. Jogos de tabuleiros davam lugar aos computadores e num dos palcos o animador da noite comandava uma homenagem ao grande cantor Wando, falecido nesta semana. E é assim que as coisas acontecem na Campus.

Aqui um pequeno vídeo da festa rolando solta na campus!

Foursquare agora avisará a suas mamães que chegaram sãos e salvos a seu destino

Traduzido do site FayerWayer

Foursquare avisará as mamãesO lema sem foi e será igual por toda a vida: as mamães sempre vão querer que seus filhos as avise quando cheguem ao seu destino, seja uma viajem longa ou uma volta até a esquina. E algumas vezes se esquecem de chamar ou avisar da voltinha pode ser até tedioso, por isso que em Foursquare apresentam uma simples mas útil ferramenta para que ninguém se esqueça de avisar nada.

Antes que tudo, é necessário entrar a hashtagmom.com e registrar-se no serviço. Logo, cada vez que se faça check-in em Foursquare se pode agregar a etiqueta #mom, além de uma pequena mensagem que por sua vez será transmitida às respectivas mamães via mensagem de texto ou chamada telefônica automática. Mais simples que isso não poderia ser.

Agora, como é necessário ingressar um número telefônico para que funcione, e pelas características de Foursquare, com certeza que inicialmente seu uso vai estar meio limitado a alguns países. Mas de qualquer forma é uma idéia interessante, e mais ainda quando seus criadores (e com certeza, quem se encarregou de também implementá-lo) não são mais do que dois programadores, Steve Pike e Jeff Wenstein.

Mamães felizes e tranquilas graças a Foursquare. A tecnologia e as redes sociais não deixam de surpreender o dia-a-dia de hoje.

Apple x Google: os números da rivalidade do ano na área de tecnologia

Extraído da Macworld

Para aqueles que acompanham e discutem sobre a rivalidade entre Apple e Google, seguem alguns dados muito interessantes sobre as empresas.

Solução vencedora do Wayra promete gerenciar filas de restaurante

Publicado na Intranet da Telefonica | Vivo

FilaExpress Gerenciador de Fila de Restaurantes

Existe algo mais desanimador do que você se preparar para um jantar com amigos, mas ao chegar ao restaurante se deparar com uma fila enorme? Pensando nisso, o publicitário paulistano Jan Christian e o matemático Rafael Lohn criaram o FilaExpress, projeto vencedor do Wayra Brasil que promete  gerenciar filas de restaurante.

Veja como funciona:

Ao chegar ao estabelecimento, o cliente informa ao recepcionista seu nome, telefone e número de acompanhantes. O cliente fica então livre para ir onde quiser. Quando a mesa estiver pronta, o recepcionista envia por meio do FilaExpress um alerta ao cliente informando a disponibilidade. O cliente então procura o recepcionista, que o conduz a sua mesa.

O sistema de gerenciamento de listas funciona conectado ao servidor. No caso de pane do aparelho utilizado pelo estabelecimento, basta acessar o site do FilaExpress de qualquer outra maquina, que o sistema funciona normalmente, com todos os dados anteriormente inseridos preservados.

O Vivoblog conversou com Jan Christian para conhecer mais sobre o FilaExpressa. Confira!

Visite também o site oficial do projeto!

Alerta PopUp deslizante em Adobe Flex

Para quem assim como eu se preocupa muito com a experiência do usuário no desenvolvimento de sistemas sabe como as janelas PopUp saltitantes que insistem em congelar a aplicação são desesperadoras. E se você tem essas mensagens programadas também para as falhas do sistema, tem que tratar muito bem as Exceptions para não encher a aplicação de mensagens do tipo modal e fazer o usuário ficar minutos e mais minutos clicando em ok.

Quando comecei a utilizar o twitter percebi algo diferente. As mensagens de confirmação de ações da área de configuração aparecem sempre no topo do browser, deslizando suavente da parte de cima e exibindo a mensagem, o que me pareceu muito interessante. Este tipo de mensagem não faz com que você tenha que clicar outra vez em um botão (normalmente OK), sendo que você já sabe que sua ação foi bem sucedida. Isso economiza tempo do usuário e causa um efeito mais clean e profissional no sistema.

A partir disso adotei essa técnica nos novos desenvolvimentos e vou compartilhar de forma geral como utilizo.

A mensagem é um componente baseado em um Canvas com uma imagem do lado esquerdo e um Label, onde será exibida a mensagem, sendo que o conteúdo será armazenado em uma variável de classe do tipo String.

<mx:Image id="imgAlert" source="imagens/ok.png" verticalCenter="0" left="10"/>
<mx:Label text="{mensagem}" left="98" verticalCenter="0" right="10" fontSize="16"/>

Também criei uma pasta com as imagens que utilizo para cada tipo de mensagem: Erro, Ajuda, Informativo, Ok, Alerta. De acordo com o tipo de mensagem será exibido a respectiva imagem.

No componente também foi criado um Timer, responsável por fazer com que a mensagem “feche”. Basicamente o efeito funciona da seguinte forma: O compomente inicialmente é criado com height igual a 0. Ao executar a mensagem, a altura do componente é setada por exemplo para 100 pixels e é iniciado o Timer. Ao final da contagem, novamente o tamanho do componente é setado para 0.

private var timer:Timer;

private function init():void
{
   this.height = 0;
   timer = new Timer(3000);
   timer.addEventListener(TimerEvent.TIMER, timerComplete);
}

private function timerComplete(event:TimerEvent):void
{
   this.height = 0;
   timer.stop();
}

Para executar o alerta criei o seguinte método:

private var HEIGHT:int = 100;

public function show(tipo:String, mensagem:String):void
{
   this.height = HEIGHT;
   timer.start();
   this.mensagem = mensagem;
   if (tipo==ERROR) {
      imgAlert.source = "imagens/error.png";
   } else if (tipo==HELP) {
      imgAlert.source = "imagens/help.png";
   } else if (tipo==INFO) {
      imgAlert.source = "imagens/info.png";
   } else if (tipo==OK) {
      imgAlert.source = "imagens/ok.png";
   } else if (tipo==WARNING) {
      imgAlert.source = "imagens/warning.png";
   }
}

Dessa forma ao executar o método show() o tamanho do componente será setado para 100 pixels, executando o efeito de transição de cima para baixo e será iniciado a contagem do timer e de acordo com o tipo de mensagem informado no parâmetro “tipo”, será exibido um ícone diferente.

Para não ter que escrever sempre a string do tipo de mensagem, criei variáveis de classe do tipo static.

public static const ERROR:String = "error";
public static const HELP:String = "help";
public static const INFO:String = "info";
public static const OK:String = "ok";
public static const WARNING:String = "warning";

Para completar o componente, o tipo de efeito foi definido nos parâmetros do Canvas. É utilizado um efeito simples do tipo Resize.

<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas
   xmlns:mx="http://www.adobe.com/2006/mxml"
   width="100%" height="{HEIGHT}"
   backgroundColor="#E0EBF1"
   initialize="init()"
   resizeEffect="Resize">

Para utilizar o componente, crio uma variável de classe no Application, que chamarei de toda parte do sistema e no init defino onde deverá ficar o componente de alerta, ancorado na parte superior e nas laterais do Application.

public static var alert:MeuAlerta;

private function init():void {
   alert = new MeuAlerta();
   alert.setStyle("top",0);
   alert.setStyle("left",0);
   alert.setStyle("rigth",0);
   addChild(alert);
}

Defini a variável do tipo static para não ter que sempre fazer referência ao Application.application, dessa forma pose-se executar realizando referência a classe principal (Application) que no meu projeto se chama AlertaDeslizante, e a variável alert.

AlertaDeslizante.alert.show(MeuAlerta.OK, "Texto da mensagem");

O primeiro parâmetro é o tipo de mensagem, passado através das variáveis estáticas do componente MeuAlerta, e o segundo parâmetro a string da mensagem. Dessa forma essa chamada pode ser executada de qualquer parte da aplicação.

Segue código completo do componente MeuAlerta:

<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas
xmlns:mx="http://www.adobe.com/2006/mxml"
width="100%" height="{HEIGHT}"
backgroundColor="#E0EBF1"
initialize="init()"
resizeEffect="Resize">

<mx:Script>
<![CDATA[

private var HEIGHT:int = 100;
[Bindable]
private var mensagem:String;

public static const ERROR:String = "error";
public static const HELP:String = "help";
public static const INFO:String = "info";
public static const OK:String = "ok";
public static const WARNING:String = "warning";

private var timer:Timer;

private function init():void
{
this.height = 0;
timer = new Timer(3000);
timer.addEventListener(TimerEvent.TIMER, timerComplete);
}

public function show(tipo:String, mensagem:String):void
{
this.height = HEIGHT;
timer.start();
this.mensagem = mensagem;
if (tipo==ERROR) {
imgAlert.source = "imagens/error.png";
} else if (tipo==HELP) {
imgAlert.source = "imagens/help.png";
} else if (tipo==INFO) {
imgAlert.source = "imagens/info.png";
} else if (tipo==OK) {
imgAlert.source = "imagens/ok.png";
} else if (tipo==WARNING) {
imgAlert.source = "imagens/warning.png";
}
}

private function timerComplete(event:TimerEvent):void
{
this.height = 0;
timer.stop();
}
]]>
</mx:Script>

<mx:Image id="imgAlert" source="imagens/ok.png" verticalCenter="0" left="10"/>
<mx:Label text="{mensagem}" left="98" verticalCenter="0" right="10" fontSize="16"/>

</mx:Canvas>

E aqui podem ver o resultado final:

Espero que esta dica seja útil e fiquem abertos a contribuir com melhorias!